diff --git a/Makefile b/Makefile
index 3862fec..3342f8a 100644
--- a/Makefile
+++ b/Makefile
@@ -115,7 +115,7 @@
 verify_command="source ~/.bashrc && cd ${TARGET_PATH}/verilog/dv/$* && export SIM=${SIM} && make"
 dv_base_dependencies=simenv
 docker_run_verify=\
-	docker run -v ${TARGET_PATH}:${TARGET_PATH} -v ${PDK_ROOT}:${PDK_ROOT} \
+	docker run --memory="16g" --memory-swap="64g" -v ${TARGET_PATH}:${TARGET_PATH} -v ${PDK_ROOT}:${PDK_ROOT} \
 		-v ${CARAVEL_ROOT}:${CARAVEL_ROOT} \
 		-e TARGET_PATH=${TARGET_PATH} -e PDK_ROOT=${PDK_ROOT} \
 		-e CARAVEL_ROOT=${CARAVEL_ROOT} \
@@ -287,7 +287,7 @@
 .PHONY: create-spef-mapping
 create-spef-mapping: ./verilog/gl/user_project_wrapper.v
 	docker run \
-		--rm \
+		--rm --memory="16g" --memory-swap="64g" \
 		-u $$(id -u $$USER):$$(id -g $$USER) \
 		-v $(PDK_ROOT):$(PDK_ROOT) \
 		-v $(CUP_ROOT):$(CUP_ROOT) \
@@ -306,7 +306,7 @@
 .PHONY: extract-parasitics
 extract-parasitics: ./verilog/gl/user_project_wrapper.v
 	docker run \
-		--rm \
+		--rm --memory="16g" --memory-swap="64g" \
 		-u $$(id -u $$USER):$$(id -g $$USER) \
 		-v $(PDK_ROOT):$(PDK_ROOT) \
 		-v $(CUP_ROOT):$(CUP_ROOT) \
diff --git a/openlane/Makefile b/openlane/Makefile
index df3ea04..6cfc22f 100644
--- a/openlane/Makefile
+++ b/openlane/Makefile
@@ -51,7 +51,7 @@
 
 docker_startup_mode = $(shell test -t 0 && echo "-it" || echo "--rm" )
 docker_run = \
-	docker run $(docker_startup_mode) \
+	docker run --memory="16g" --memory-swap="64g" $(docker_startup_mode) \
 	$(docker_mounts) \
 	$(docker_env) \
 	-u $(shell id -u $(USER)):$(shell id -g $(USER))
@@ -61,7 +61,8 @@
 
 .PHONY: $(designs)
 $(designs) : export current_design=$@
-$(designs) : % : ./%/config.json
+$(designs) : % : ./%/config.tcl
+#$(designs) : % : ./%/config.json
 ifneq (,$(wildcard ./$(current_design)/interactive.tcl))
 	$(docker_run) \
 		$(OPENLANE_IMAGE_NAME) sh -c $(openlane_cmd_interactive)
diff --git a/openlane/user_proj_example/config.json b/openlane/ref/user_proj_example/config.json
similarity index 100%
rename from openlane/user_proj_example/config.json
rename to openlane/ref/user_proj_example/config.json
diff --git a/openlane/user_proj_example/pin_order.cfg b/openlane/ref/user_proj_example/pin_order.cfg
similarity index 100%
rename from openlane/user_proj_example/pin_order.cfg
rename to openlane/ref/user_proj_example/pin_order.cfg
diff --git a/openlane/ref/user_project_wrapper/config.json b/openlane/ref/user_project_wrapper/config.json
new file mode 100644
index 0000000..22a00ee
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/config.json
@@ -0,0 +1,85 @@
+{
+    "DESIGN_NAME": "user_project_wrapper",
+    "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_project_wrapper.v"],
+    "CLOCK_PERIOD": 10,
+    "CLOCK_PORT": "user_clock2",
+    "CLOCK_NET": "mprj.clk",
+    "FP_PDN_MACRO_HOOKS": "mprj vccd1 vssd1 vccd1 vssd1",
+    "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
+    "VERILOG_FILES_BLACKBOX": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
+    "EXTRA_LEFS": "dir::../../lef/user_proj_example.lef",
+    "EXTRA_GDS_FILES": "dir::../../gds/user_proj_example.gds",
+    "FP_PDN_CHECK_NODES": 0,
+    "SYNTH_ELABORATE_ONLY": 1,
+    "PL_RANDOM_GLB_PLACEMENT": 1,
+    "PL_RESIZER_DESIGN_OPTIMIZATIONS": 0,
+    "PL_RESIZER_TIMING_OPTIMIZATIONS": 0,
+    "PL_RESIZER_BUFFER_INPUT_PORTS": 0,
+    "FP_PDN_ENABLE_RAILS": 0,
+    "DIODE_INSERTION_STRATEGY": 0,
+    "RUN_FILL_INSERTION": 0,
+    "RUN_TAP_DECAP_INSERTION": 0,
+    "FP_PDN_VPITCH": 180,
+    "FP_PDN_HPITCH": 180,
+    "CLOCK_TREE_SYNTH": 0,
+    "FP_PDN_VOFFSET": 5,
+    "FP_PDN_HOFFSET": 5,
+    "MAGIC_ZEROIZE_ORIGIN": 0,
+    "FP_SIZING": "absolute",
+    "RUN_CVC": 0,
+    "UNIT": "2.4",
+    "FP_IO_VEXTEND": "expr::2 * $UNIT",
+    "FP_IO_HEXTEND": "expr::2 * $UNIT",
+    "FP_IO_VLENGTH": "ref::$UNIT",
+    "FP_IO_HLENGTH": "ref::$UNIT",
+    "FP_IO_VTHICKNESS_MULT": 4,
+    "FP_IO_HTHICKNESS_MULT": 4,
+    "FP_PDN_CORE_RING": 1,
+    "FP_PDN_CORE_RING_VWIDTH": 3.1,
+    "FP_PDN_CORE_RING_HWIDTH": 3.1,
+    "FP_PDN_CORE_RING_VOFFSET": 12.45,
+    "FP_PDN_CORE_RING_HOFFSET": 12.45,
+    "FP_PDN_CORE_RING_VSPACING": 1.7,
+    "FP_PDN_CORE_RING_HSPACING": 1.7,
+    "FP_PDN_VWIDTH": 3.1,
+    "FP_PDN_HWIDTH": 3.1,
+    "FP_PDN_VSPACING": "expr::(5 * $FP_PDN_CORE_RING_VWIDTH)",
+    "FP_PDN_HSPACING": "expr::(5 * $FP_PDN_CORE_RING_HWIDTH)",
+    "VDD_NETS": ["vccd1", "vccd2","vdda1","vdda2"],
+    "GND_NETS": ["vssd1", "vssd2","vssa1","vssa2"],
+    "SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
+    "pdk::sky130*": {
+        "RT_MAX_LAYER": "met4",
+        "DIE_AREA": "0 0 2920 3520",
+        "FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
+        "scl::sky130_fd_sc_hd": {
+            "CLOCK_PERIOD": 10
+        },
+        "scl::sky130_fd_sc_hdll": {
+            "CLOCK_PERIOD": 10
+        },
+        "scl::sky130_fd_sc_hs": {
+            "CLOCK_PERIOD": 8
+        },
+        "scl::sky130_fd_sc_ls": {
+            "CLOCK_PERIOD": 10,
+            "SYNTH_MAX_FANOUT": 5
+        },
+        "scl::sky130_fd_sc_ms": {
+            "CLOCK_PERIOD": 10
+        }
+     },
+    "pdk::gf180mcuC": {
+        "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
+        "FP_PDN_CHECK_NODES": 0,
+        "FP_PDN_ENABLE_RAILS": 0,
+        "RT_MAX_LAYER": "Metal4",
+        "DIE_AREA": "0 0 3000 3000",
+        "FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper_gf180mcu.def",
+        "PL_OPENPHYSYN_OPTIMIZATIONS": 0,
+        "DIODE_INSERTION_STRATEGY": 0,
+        "FP_PDN_CHECK_NODES": 0,
+        "MAGIC_WRITE_FULL_LEF": 0,
+        "FP_PDN_ENABLE_RAILS": 0
+   }
+}
diff --git a/openlane/ref/user_project_wrapper/fixed_dont_change/default_wrapper_cfgs.tcl b/openlane/ref/user_project_wrapper/fixed_dont_change/default_wrapper_cfgs.tcl
new file mode 100644
index 0000000..4a4f8a2
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/fixed_dont_change/default_wrapper_cfgs.tcl
@@ -0,0 +1,24 @@
+# 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
+
+# THE FOLLOWING SECTIONS CAN BE CHANGED IF NEEDED
+
+# PDN Pitch
+set ::env(FP_PDN_VPITCH) 180
+set ::env(FP_PDN_HPITCH) $::env(FP_PDN_VPITCH)
+
+# PDN Offset 
+set ::env(FP_PDN_VOFFSET) 5
+set ::env(FP_PDN_HOFFSET) $::env(FP_PDN_VOFFSET)
\ No newline at end of file
diff --git a/openlane/ref/user_project_wrapper/fixed_dont_change/fixed_wrapper_cfgs.tcl b/openlane/ref/user_project_wrapper/fixed_dont_change/fixed_wrapper_cfgs.tcl
new file mode 100644
index 0000000..e602da7
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/fixed_dont_change/fixed_wrapper_cfgs.tcl
@@ -0,0 +1,57 @@
+# 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
+
+# DON'T TOUCH THE FOLLOWING SECTIONS
+set script_dir [file dirname [file normalize [info script]]]
+
+# This makes sure that the core rings are outside the boundaries
+# of your block.
+set ::env(MAGIC_ZEROIZE_ORIGIN) 0
+
+# Area Configurations. DON'T TOUCH.
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 2920 3520"
+
+set ::env(RUN_CVC) 0
+
+set ::unit 2.4
+set ::env(FP_IO_VEXTEND) [expr 2*$::unit]
+set ::env(FP_IO_HEXTEND) [expr 2*$::unit]
+set ::env(FP_IO_VLENGTH) $::unit
+set ::env(FP_IO_HLENGTH) $::unit
+
+set ::env(FP_IO_VTHICKNESS_MULT) 4
+set ::env(FP_IO_HTHICKNESS_MULT) 4
+
+# Power & Pin Configurations. DON'T TOUCH.
+set ::env(FP_PDN_CORE_RING) 1
+set ::env(FP_PDN_CORE_RING_VWIDTH) 3.1
+set ::env(FP_PDN_CORE_RING_HWIDTH) 3.1
+set ::env(FP_PDN_CORE_RING_VOFFSET) 12.45
+set ::env(FP_PDN_CORE_RING_HOFFSET) $::env(FP_PDN_CORE_RING_VOFFSET)
+set ::env(FP_PDN_CORE_RING_VSPACING) 1.7
+set ::env(FP_PDN_CORE_RING_HSPACING) $::env(FP_PDN_CORE_RING_VSPACING)
+
+set ::env(FP_PDN_VWIDTH) 3.1
+set ::env(FP_PDN_HWIDTH) 3.1
+set ::env(FP_PDN_VSPACING) [expr 5*$::env(FP_PDN_CORE_RING_VWIDTH)]
+set ::env(FP_PDN_HSPACING) [expr 5*$::env(FP_PDN_CORE_RING_HWIDTH)]
+
+set ::env(VDD_NETS) [list {vccd1} {vccd2} {vdda1} {vdda2}]
+set ::env(GND_NETS) [list {vssd1} {vssd2} {vssa1} {vssa2}]
+set ::env(SYNTH_USE_PG_PINS_DEFINES) "USE_POWER_PINS"
+
+# Pin placement template
+set ::env(FP_DEF_TEMPLATE) $::env(DESIGN_DIR)/fixed_dont_change/user_project_wrapper.def
diff --git a/openlane/ref/user_project_wrapper/fixed_dont_change/user_project_wrapper.def b/openlane/ref/user_project_wrapper/fixed_dont_change/user_project_wrapper.def
new file mode 100644
index 0000000..0647d54
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/fixed_dont_change/user_project_wrapper.def
@@ -0,0 +1,7656 @@
+VERSION 5.8 ;
+DIVIDERCHAR "/" ;
+BUSBITCHARS "[]" ;
+DESIGN user_project_wrapper ;
+UNITS DISTANCE MICRONS 1000 ;
+DIEAREA ( 0 0 ) ( 2920000 3520000 ) ;
+ROW ROW_0 unithd 5520 10880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1 unithd 5520 13600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_2 unithd 5520 16320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_3 unithd 5520 19040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_4 unithd 5520 21760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_5 unithd 5520 24480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_6 unithd 5520 27200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_7 unithd 5520 29920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_8 unithd 5520 32640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_9 unithd 5520 35360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_10 unithd 5520 38080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_11 unithd 5520 40800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_12 unithd 5520 43520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_13 unithd 5520 46240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_14 unithd 5520 48960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_15 unithd 5520 51680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_16 unithd 5520 54400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_17 unithd 5520 57120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_18 unithd 5520 59840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_19 unithd 5520 62560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_20 unithd 5520 65280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_21 unithd 5520 68000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_22 unithd 5520 70720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_23 unithd 5520 73440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_24 unithd 5520 76160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_25 unithd 5520 78880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_26 unithd 5520 81600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_27 unithd 5520 84320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_28 unithd 5520 87040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_29 unithd 5520 89760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_30 unithd 5520 92480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_31 unithd 5520 95200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_32 unithd 5520 97920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_33 unithd 5520 100640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_34 unithd 5520 103360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_35 unithd 5520 106080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_36 unithd 5520 108800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_37 unithd 5520 111520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_38 unithd 5520 114240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_39 unithd 5520 116960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_40 unithd 5520 119680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_41 unithd 5520 122400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_42 unithd 5520 125120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_43 unithd 5520 127840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_44 unithd 5520 130560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_45 unithd 5520 133280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_46 unithd 5520 136000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_47 unithd 5520 138720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_48 unithd 5520 141440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_49 unithd 5520 144160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_50 unithd 5520 146880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_51 unithd 5520 149600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_52 unithd 5520 152320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_53 unithd 5520 155040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_54 unithd 5520 157760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_55 unithd 5520 160480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_56 unithd 5520 163200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_57 unithd 5520 165920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_58 unithd 5520 168640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_59 unithd 5520 171360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_60 unithd 5520 174080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_61 unithd 5520 176800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_62 unithd 5520 179520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_63 unithd 5520 182240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_64 unithd 5520 184960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_65 unithd 5520 187680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_66 unithd 5520 190400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_67 unithd 5520 193120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_68 unithd 5520 195840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_69 unithd 5520 198560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_70 unithd 5520 201280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_71 unithd 5520 204000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_72 unithd 5520 206720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_73 unithd 5520 209440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_74 unithd 5520 212160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_75 unithd 5520 214880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_76 unithd 5520 217600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_77 unithd 5520 220320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_78 unithd 5520 223040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_79 unithd 5520 225760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_80 unithd 5520 228480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_81 unithd 5520 231200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_82 unithd 5520 233920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_83 unithd 5520 236640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_84 unithd 5520 239360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_85 unithd 5520 242080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_86 unithd 5520 244800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_87 unithd 5520 247520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_88 unithd 5520 250240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_89 unithd 5520 252960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_90 unithd 5520 255680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_91 unithd 5520 258400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_92 unithd 5520 261120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_93 unithd 5520 263840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_94 unithd 5520 266560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_95 unithd 5520 269280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_96 unithd 5520 272000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_97 unithd 5520 274720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_98 unithd 5520 277440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_99 unithd 5520 280160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_100 unithd 5520 282880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_101 unithd 5520 285600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_102 unithd 5520 288320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_103 unithd 5520 291040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_104 unithd 5520 293760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_105 unithd 5520 296480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_106 unithd 5520 299200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_107 unithd 5520 301920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_108 unithd 5520 304640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_109 unithd 5520 307360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_110 unithd 5520 310080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_111 unithd 5520 312800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_112 unithd 5520 315520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_113 unithd 5520 318240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_114 unithd 5520 320960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_115 unithd 5520 323680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_116 unithd 5520 326400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_117 unithd 5520 329120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_118 unithd 5520 331840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_119 unithd 5520 334560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_120 unithd 5520 337280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_121 unithd 5520 340000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_122 unithd 5520 342720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_123 unithd 5520 345440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_124 unithd 5520 348160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_125 unithd 5520 350880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_126 unithd 5520 353600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_127 unithd 5520 356320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_128 unithd 5520 359040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_129 unithd 5520 361760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_130 unithd 5520 364480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_131 unithd 5520 367200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_132 unithd 5520 369920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_133 unithd 5520 372640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_134 unithd 5520 375360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_135 unithd 5520 378080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_136 unithd 5520 380800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_137 unithd 5520 383520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_138 unithd 5520 386240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_139 unithd 5520 388960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_140 unithd 5520 391680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_141 unithd 5520 394400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_142 unithd 5520 397120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_143 unithd 5520 399840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_144 unithd 5520 402560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_145 unithd 5520 405280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_146 unithd 5520 408000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_147 unithd 5520 410720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_148 unithd 5520 413440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_149 unithd 5520 416160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_150 unithd 5520 418880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_151 unithd 5520 421600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_152 unithd 5520 424320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_153 unithd 5520 427040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_154 unithd 5520 429760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_155 unithd 5520 432480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_156 unithd 5520 435200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_157 unithd 5520 437920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_158 unithd 5520 440640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_159 unithd 5520 443360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_160 unithd 5520 446080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_161 unithd 5520 448800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_162 unithd 5520 451520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_163 unithd 5520 454240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_164 unithd 5520 456960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_165 unithd 5520 459680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_166 unithd 5520 462400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_167 unithd 5520 465120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_168 unithd 5520 467840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_169 unithd 5520 470560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_170 unithd 5520 473280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_171 unithd 5520 476000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_172 unithd 5520 478720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_173 unithd 5520 481440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_174 unithd 5520 484160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_175 unithd 5520 486880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_176 unithd 5520 489600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_177 unithd 5520 492320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_178 unithd 5520 495040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_179 unithd 5520 497760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_180 unithd 5520 500480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_181 unithd 5520 503200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_182 unithd 5520 505920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_183 unithd 5520 508640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_184 unithd 5520 511360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_185 unithd 5520 514080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_186 unithd 5520 516800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_187 unithd 5520 519520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_188 unithd 5520 522240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_189 unithd 5520 524960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_190 unithd 5520 527680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_191 unithd 5520 530400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_192 unithd 5520 533120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_193 unithd 5520 535840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_194 unithd 5520 538560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_195 unithd 5520 541280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_196 unithd 5520 544000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_197 unithd 5520 546720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_198 unithd 5520 549440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_199 unithd 5520 552160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_200 unithd 5520 554880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_201 unithd 5520 557600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_202 unithd 5520 560320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_203 unithd 5520 563040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_204 unithd 5520 565760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_205 unithd 5520 568480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_206 unithd 5520 571200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_207 unithd 5520 573920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_208 unithd 5520 576640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_209 unithd 5520 579360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_210 unithd 5520 582080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_211 unithd 5520 584800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_212 unithd 5520 587520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_213 unithd 5520 590240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_214 unithd 5520 592960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_215 unithd 5520 595680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_216 unithd 5520 598400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_217 unithd 5520 601120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_218 unithd 5520 603840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_219 unithd 5520 606560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_220 unithd 5520 609280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_221 unithd 5520 612000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_222 unithd 5520 614720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_223 unithd 5520 617440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_224 unithd 5520 620160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_225 unithd 5520 622880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_226 unithd 5520 625600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_227 unithd 5520 628320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_228 unithd 5520 631040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_229 unithd 5520 633760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_230 unithd 5520 636480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_231 unithd 5520 639200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_232 unithd 5520 641920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_233 unithd 5520 644640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_234 unithd 5520 647360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_235 unithd 5520 650080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_236 unithd 5520 652800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_237 unithd 5520 655520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_238 unithd 5520 658240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_239 unithd 5520 660960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_240 unithd 5520 663680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_241 unithd 5520 666400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_242 unithd 5520 669120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_243 unithd 5520 671840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_244 unithd 5520 674560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_245 unithd 5520 677280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_246 unithd 5520 680000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_247 unithd 5520 682720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_248 unithd 5520 685440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_249 unithd 5520 688160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_250 unithd 5520 690880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_251 unithd 5520 693600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_252 unithd 5520 696320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_253 unithd 5520 699040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_254 unithd 5520 701760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_255 unithd 5520 704480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_256 unithd 5520 707200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_257 unithd 5520 709920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_258 unithd 5520 712640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_259 unithd 5520 715360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_260 unithd 5520 718080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_261 unithd 5520 720800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_262 unithd 5520 723520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_263 unithd 5520 726240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_264 unithd 5520 728960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_265 unithd 5520 731680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_266 unithd 5520 734400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_267 unithd 5520 737120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_268 unithd 5520 739840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_269 unithd 5520 742560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_270 unithd 5520 745280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_271 unithd 5520 748000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_272 unithd 5520 750720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_273 unithd 5520 753440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_274 unithd 5520 756160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_275 unithd 5520 758880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_276 unithd 5520 761600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_277 unithd 5520 764320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_278 unithd 5520 767040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_279 unithd 5520 769760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_280 unithd 5520 772480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_281 unithd 5520 775200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_282 unithd 5520 777920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_283 unithd 5520 780640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_284 unithd 5520 783360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_285 unithd 5520 786080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_286 unithd 5520 788800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_287 unithd 5520 791520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_288 unithd 5520 794240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_289 unithd 5520 796960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_290 unithd 5520 799680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_291 unithd 5520 802400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_292 unithd 5520 805120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_293 unithd 5520 807840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_294 unithd 5520 810560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_295 unithd 5520 813280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_296 unithd 5520 816000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_297 unithd 5520 818720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_298 unithd 5520 821440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_299 unithd 5520 824160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_300 unithd 5520 826880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_301 unithd 5520 829600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_302 unithd 5520 832320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_303 unithd 5520 835040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_304 unithd 5520 837760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_305 unithd 5520 840480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_306 unithd 5520 843200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_307 unithd 5520 845920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_308 unithd 5520 848640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_309 unithd 5520 851360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_310 unithd 5520 854080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_311 unithd 5520 856800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_312 unithd 5520 859520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_313 unithd 5520 862240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_314 unithd 5520 864960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_315 unithd 5520 867680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_316 unithd 5520 870400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_317 unithd 5520 873120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_318 unithd 5520 875840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_319 unithd 5520 878560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_320 unithd 5520 881280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_321 unithd 5520 884000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_322 unithd 5520 886720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_323 unithd 5520 889440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_324 unithd 5520 892160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_325 unithd 5520 894880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_326 unithd 5520 897600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_327 unithd 5520 900320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_328 unithd 5520 903040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_329 unithd 5520 905760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_330 unithd 5520 908480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_331 unithd 5520 911200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_332 unithd 5520 913920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_333 unithd 5520 916640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_334 unithd 5520 919360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_335 unithd 5520 922080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_336 unithd 5520 924800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_337 unithd 5520 927520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_338 unithd 5520 930240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_339 unithd 5520 932960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_340 unithd 5520 935680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_341 unithd 5520 938400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_342 unithd 5520 941120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_343 unithd 5520 943840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_344 unithd 5520 946560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_345 unithd 5520 949280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_346 unithd 5520 952000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_347 unithd 5520 954720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_348 unithd 5520 957440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_349 unithd 5520 960160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_350 unithd 5520 962880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_351 unithd 5520 965600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_352 unithd 5520 968320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_353 unithd 5520 971040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_354 unithd 5520 973760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_355 unithd 5520 976480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_356 unithd 5520 979200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_357 unithd 5520 981920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_358 unithd 5520 984640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_359 unithd 5520 987360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_360 unithd 5520 990080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_361 unithd 5520 992800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_362 unithd 5520 995520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_363 unithd 5520 998240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_364 unithd 5520 1000960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_365 unithd 5520 1003680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_366 unithd 5520 1006400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_367 unithd 5520 1009120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_368 unithd 5520 1011840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_369 unithd 5520 1014560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_370 unithd 5520 1017280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_371 unithd 5520 1020000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_372 unithd 5520 1022720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_373 unithd 5520 1025440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_374 unithd 5520 1028160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_375 unithd 5520 1030880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_376 unithd 5520 1033600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_377 unithd 5520 1036320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_378 unithd 5520 1039040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_379 unithd 5520 1041760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_380 unithd 5520 1044480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_381 unithd 5520 1047200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_382 unithd 5520 1049920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_383 unithd 5520 1052640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_384 unithd 5520 1055360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_385 unithd 5520 1058080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_386 unithd 5520 1060800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_387 unithd 5520 1063520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_388 unithd 5520 1066240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_389 unithd 5520 1068960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_390 unithd 5520 1071680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_391 unithd 5520 1074400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_392 unithd 5520 1077120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_393 unithd 5520 1079840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_394 unithd 5520 1082560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_395 unithd 5520 1085280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_396 unithd 5520 1088000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_397 unithd 5520 1090720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_398 unithd 5520 1093440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_399 unithd 5520 1096160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_400 unithd 5520 1098880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_401 unithd 5520 1101600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_402 unithd 5520 1104320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_403 unithd 5520 1107040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_404 unithd 5520 1109760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_405 unithd 5520 1112480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_406 unithd 5520 1115200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_407 unithd 5520 1117920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_408 unithd 5520 1120640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_409 unithd 5520 1123360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_410 unithd 5520 1126080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_411 unithd 5520 1128800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_412 unithd 5520 1131520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_413 unithd 5520 1134240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_414 unithd 5520 1136960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_415 unithd 5520 1139680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_416 unithd 5520 1142400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_417 unithd 5520 1145120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_418 unithd 5520 1147840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_419 unithd 5520 1150560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_420 unithd 5520 1153280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_421 unithd 5520 1156000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_422 unithd 5520 1158720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_423 unithd 5520 1161440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_424 unithd 5520 1164160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_425 unithd 5520 1166880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_426 unithd 5520 1169600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_427 unithd 5520 1172320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_428 unithd 5520 1175040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_429 unithd 5520 1177760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_430 unithd 5520 1180480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_431 unithd 5520 1183200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_432 unithd 5520 1185920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_433 unithd 5520 1188640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_434 unithd 5520 1191360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_435 unithd 5520 1194080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_436 unithd 5520 1196800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_437 unithd 5520 1199520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_438 unithd 5520 1202240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_439 unithd 5520 1204960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_440 unithd 5520 1207680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_441 unithd 5520 1210400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_442 unithd 5520 1213120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_443 unithd 5520 1215840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_444 unithd 5520 1218560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_445 unithd 5520 1221280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_446 unithd 5520 1224000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_447 unithd 5520 1226720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_448 unithd 5520 1229440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_449 unithd 5520 1232160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_450 unithd 5520 1234880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_451 unithd 5520 1237600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_452 unithd 5520 1240320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_453 unithd 5520 1243040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_454 unithd 5520 1245760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_455 unithd 5520 1248480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_456 unithd 5520 1251200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_457 unithd 5520 1253920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_458 unithd 5520 1256640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_459 unithd 5520 1259360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_460 unithd 5520 1262080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_461 unithd 5520 1264800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_462 unithd 5520 1267520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_463 unithd 5520 1270240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_464 unithd 5520 1272960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_465 unithd 5520 1275680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_466 unithd 5520 1278400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_467 unithd 5520 1281120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_468 unithd 5520 1283840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_469 unithd 5520 1286560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_470 unithd 5520 1289280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_471 unithd 5520 1292000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_472 unithd 5520 1294720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_473 unithd 5520 1297440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_474 unithd 5520 1300160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_475 unithd 5520 1302880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_476 unithd 5520 1305600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_477 unithd 5520 1308320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_478 unithd 5520 1311040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_479 unithd 5520 1313760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_480 unithd 5520 1316480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_481 unithd 5520 1319200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_482 unithd 5520 1321920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_483 unithd 5520 1324640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_484 unithd 5520 1327360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_485 unithd 5520 1330080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_486 unithd 5520 1332800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_487 unithd 5520 1335520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_488 unithd 5520 1338240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_489 unithd 5520 1340960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_490 unithd 5520 1343680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_491 unithd 5520 1346400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_492 unithd 5520 1349120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_493 unithd 5520 1351840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_494 unithd 5520 1354560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_495 unithd 5520 1357280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_496 unithd 5520 1360000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_497 unithd 5520 1362720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_498 unithd 5520 1365440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_499 unithd 5520 1368160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_500 unithd 5520 1370880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_501 unithd 5520 1373600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_502 unithd 5520 1376320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_503 unithd 5520 1379040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_504 unithd 5520 1381760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_505 unithd 5520 1384480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_506 unithd 5520 1387200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_507 unithd 5520 1389920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_508 unithd 5520 1392640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_509 unithd 5520 1395360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_510 unithd 5520 1398080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_511 unithd 5520 1400800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_512 unithd 5520 1403520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_513 unithd 5520 1406240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_514 unithd 5520 1408960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_515 unithd 5520 1411680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_516 unithd 5520 1414400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_517 unithd 5520 1417120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_518 unithd 5520 1419840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_519 unithd 5520 1422560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_520 unithd 5520 1425280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_521 unithd 5520 1428000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_522 unithd 5520 1430720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_523 unithd 5520 1433440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_524 unithd 5520 1436160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_525 unithd 5520 1438880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_526 unithd 5520 1441600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_527 unithd 5520 1444320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_528 unithd 5520 1447040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_529 unithd 5520 1449760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_530 unithd 5520 1452480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_531 unithd 5520 1455200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_532 unithd 5520 1457920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_533 unithd 5520 1460640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_534 unithd 5520 1463360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_535 unithd 5520 1466080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_536 unithd 5520 1468800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_537 unithd 5520 1471520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_538 unithd 5520 1474240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_539 unithd 5520 1476960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_540 unithd 5520 1479680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_541 unithd 5520 1482400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_542 unithd 5520 1485120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_543 unithd 5520 1487840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_544 unithd 5520 1490560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_545 unithd 5520 1493280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_546 unithd 5520 1496000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_547 unithd 5520 1498720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_548 unithd 5520 1501440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_549 unithd 5520 1504160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_550 unithd 5520 1506880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_551 unithd 5520 1509600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_552 unithd 5520 1512320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_553 unithd 5520 1515040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_554 unithd 5520 1517760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_555 unithd 5520 1520480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_556 unithd 5520 1523200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_557 unithd 5520 1525920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_558 unithd 5520 1528640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_559 unithd 5520 1531360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_560 unithd 5520 1534080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_561 unithd 5520 1536800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_562 unithd 5520 1539520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_563 unithd 5520 1542240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_564 unithd 5520 1544960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_565 unithd 5520 1547680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_566 unithd 5520 1550400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_567 unithd 5520 1553120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_568 unithd 5520 1555840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_569 unithd 5520 1558560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_570 unithd 5520 1561280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_571 unithd 5520 1564000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_572 unithd 5520 1566720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_573 unithd 5520 1569440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_574 unithd 5520 1572160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_575 unithd 5520 1574880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_576 unithd 5520 1577600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_577 unithd 5520 1580320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_578 unithd 5520 1583040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_579 unithd 5520 1585760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_580 unithd 5520 1588480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_581 unithd 5520 1591200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_582 unithd 5520 1593920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_583 unithd 5520 1596640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_584 unithd 5520 1599360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_585 unithd 5520 1602080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_586 unithd 5520 1604800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_587 unithd 5520 1607520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_588 unithd 5520 1610240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_589 unithd 5520 1612960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_590 unithd 5520 1615680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_591 unithd 5520 1618400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_592 unithd 5520 1621120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_593 unithd 5520 1623840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_594 unithd 5520 1626560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_595 unithd 5520 1629280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_596 unithd 5520 1632000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_597 unithd 5520 1634720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_598 unithd 5520 1637440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_599 unithd 5520 1640160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_600 unithd 5520 1642880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_601 unithd 5520 1645600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_602 unithd 5520 1648320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_603 unithd 5520 1651040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_604 unithd 5520 1653760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_605 unithd 5520 1656480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_606 unithd 5520 1659200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_607 unithd 5520 1661920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_608 unithd 5520 1664640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_609 unithd 5520 1667360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_610 unithd 5520 1670080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_611 unithd 5520 1672800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_612 unithd 5520 1675520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_613 unithd 5520 1678240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_614 unithd 5520 1680960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_615 unithd 5520 1683680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_616 unithd 5520 1686400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_617 unithd 5520 1689120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_618 unithd 5520 1691840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_619 unithd 5520 1694560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_620 unithd 5520 1697280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_621 unithd 5520 1700000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_622 unithd 5520 1702720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_623 unithd 5520 1705440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_624 unithd 5520 1708160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_625 unithd 5520 1710880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_626 unithd 5520 1713600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_627 unithd 5520 1716320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_628 unithd 5520 1719040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_629 unithd 5520 1721760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_630 unithd 5520 1724480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_631 unithd 5520 1727200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_632 unithd 5520 1729920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_633 unithd 5520 1732640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_634 unithd 5520 1735360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_635 unithd 5520 1738080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_636 unithd 5520 1740800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_637 unithd 5520 1743520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_638 unithd 5520 1746240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_639 unithd 5520 1748960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_640 unithd 5520 1751680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_641 unithd 5520 1754400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_642 unithd 5520 1757120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_643 unithd 5520 1759840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_644 unithd 5520 1762560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_645 unithd 5520 1765280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_646 unithd 5520 1768000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_647 unithd 5520 1770720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_648 unithd 5520 1773440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_649 unithd 5520 1776160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_650 unithd 5520 1778880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_651 unithd 5520 1781600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_652 unithd 5520 1784320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_653 unithd 5520 1787040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_654 unithd 5520 1789760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_655 unithd 5520 1792480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_656 unithd 5520 1795200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_657 unithd 5520 1797920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_658 unithd 5520 1800640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_659 unithd 5520 1803360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_660 unithd 5520 1806080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_661 unithd 5520 1808800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_662 unithd 5520 1811520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_663 unithd 5520 1814240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_664 unithd 5520 1816960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_665 unithd 5520 1819680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_666 unithd 5520 1822400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_667 unithd 5520 1825120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_668 unithd 5520 1827840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_669 unithd 5520 1830560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_670 unithd 5520 1833280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_671 unithd 5520 1836000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_672 unithd 5520 1838720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_673 unithd 5520 1841440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_674 unithd 5520 1844160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_675 unithd 5520 1846880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_676 unithd 5520 1849600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_677 unithd 5520 1852320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_678 unithd 5520 1855040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_679 unithd 5520 1857760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_680 unithd 5520 1860480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_681 unithd 5520 1863200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_682 unithd 5520 1865920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_683 unithd 5520 1868640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_684 unithd 5520 1871360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_685 unithd 5520 1874080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_686 unithd 5520 1876800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_687 unithd 5520 1879520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_688 unithd 5520 1882240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_689 unithd 5520 1884960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_690 unithd 5520 1887680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_691 unithd 5520 1890400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_692 unithd 5520 1893120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_693 unithd 5520 1895840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_694 unithd 5520 1898560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_695 unithd 5520 1901280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_696 unithd 5520 1904000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_697 unithd 5520 1906720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_698 unithd 5520 1909440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_699 unithd 5520 1912160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_700 unithd 5520 1914880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_701 unithd 5520 1917600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_702 unithd 5520 1920320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_703 unithd 5520 1923040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_704 unithd 5520 1925760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_705 unithd 5520 1928480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_706 unithd 5520 1931200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_707 unithd 5520 1933920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_708 unithd 5520 1936640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_709 unithd 5520 1939360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_710 unithd 5520 1942080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_711 unithd 5520 1944800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_712 unithd 5520 1947520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_713 unithd 5520 1950240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_714 unithd 5520 1952960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_715 unithd 5520 1955680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_716 unithd 5520 1958400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_717 unithd 5520 1961120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_718 unithd 5520 1963840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_719 unithd 5520 1966560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_720 unithd 5520 1969280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_721 unithd 5520 1972000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_722 unithd 5520 1974720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_723 unithd 5520 1977440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_724 unithd 5520 1980160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_725 unithd 5520 1982880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_726 unithd 5520 1985600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_727 unithd 5520 1988320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_728 unithd 5520 1991040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_729 unithd 5520 1993760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_730 unithd 5520 1996480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_731 unithd 5520 1999200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_732 unithd 5520 2001920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_733 unithd 5520 2004640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_734 unithd 5520 2007360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_735 unithd 5520 2010080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_736 unithd 5520 2012800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_737 unithd 5520 2015520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_738 unithd 5520 2018240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_739 unithd 5520 2020960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_740 unithd 5520 2023680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_741 unithd 5520 2026400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_742 unithd 5520 2029120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_743 unithd 5520 2031840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_744 unithd 5520 2034560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_745 unithd 5520 2037280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_746 unithd 5520 2040000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_747 unithd 5520 2042720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_748 unithd 5520 2045440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_749 unithd 5520 2048160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_750 unithd 5520 2050880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_751 unithd 5520 2053600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_752 unithd 5520 2056320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_753 unithd 5520 2059040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_754 unithd 5520 2061760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_755 unithd 5520 2064480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_756 unithd 5520 2067200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_757 unithd 5520 2069920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_758 unithd 5520 2072640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_759 unithd 5520 2075360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_760 unithd 5520 2078080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_761 unithd 5520 2080800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_762 unithd 5520 2083520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_763 unithd 5520 2086240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_764 unithd 5520 2088960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_765 unithd 5520 2091680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_766 unithd 5520 2094400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_767 unithd 5520 2097120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_768 unithd 5520 2099840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_769 unithd 5520 2102560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_770 unithd 5520 2105280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_771 unithd 5520 2108000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_772 unithd 5520 2110720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_773 unithd 5520 2113440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_774 unithd 5520 2116160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_775 unithd 5520 2118880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_776 unithd 5520 2121600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_777 unithd 5520 2124320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_778 unithd 5520 2127040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_779 unithd 5520 2129760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_780 unithd 5520 2132480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_781 unithd 5520 2135200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_782 unithd 5520 2137920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_783 unithd 5520 2140640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_784 unithd 5520 2143360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_785 unithd 5520 2146080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_786 unithd 5520 2148800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_787 unithd 5520 2151520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_788 unithd 5520 2154240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_789 unithd 5520 2156960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_790 unithd 5520 2159680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_791 unithd 5520 2162400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_792 unithd 5520 2165120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_793 unithd 5520 2167840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_794 unithd 5520 2170560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_795 unithd 5520 2173280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_796 unithd 5520 2176000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_797 unithd 5520 2178720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_798 unithd 5520 2181440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_799 unithd 5520 2184160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_800 unithd 5520 2186880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_801 unithd 5520 2189600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_802 unithd 5520 2192320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_803 unithd 5520 2195040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_804 unithd 5520 2197760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_805 unithd 5520 2200480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_806 unithd 5520 2203200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_807 unithd 5520 2205920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_808 unithd 5520 2208640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_809 unithd 5520 2211360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_810 unithd 5520 2214080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_811 unithd 5520 2216800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_812 unithd 5520 2219520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_813 unithd 5520 2222240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_814 unithd 5520 2224960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_815 unithd 5520 2227680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_816 unithd 5520 2230400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_817 unithd 5520 2233120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_818 unithd 5520 2235840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_819 unithd 5520 2238560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_820 unithd 5520 2241280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_821 unithd 5520 2244000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_822 unithd 5520 2246720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_823 unithd 5520 2249440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_824 unithd 5520 2252160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_825 unithd 5520 2254880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_826 unithd 5520 2257600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_827 unithd 5520 2260320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_828 unithd 5520 2263040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_829 unithd 5520 2265760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_830 unithd 5520 2268480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_831 unithd 5520 2271200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_832 unithd 5520 2273920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_833 unithd 5520 2276640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_834 unithd 5520 2279360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_835 unithd 5520 2282080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_836 unithd 5520 2284800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_837 unithd 5520 2287520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_838 unithd 5520 2290240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_839 unithd 5520 2292960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_840 unithd 5520 2295680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_841 unithd 5520 2298400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_842 unithd 5520 2301120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_843 unithd 5520 2303840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_844 unithd 5520 2306560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_845 unithd 5520 2309280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_846 unithd 5520 2312000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_847 unithd 5520 2314720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_848 unithd 5520 2317440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_849 unithd 5520 2320160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_850 unithd 5520 2322880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_851 unithd 5520 2325600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_852 unithd 5520 2328320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_853 unithd 5520 2331040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_854 unithd 5520 2333760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_855 unithd 5520 2336480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_856 unithd 5520 2339200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_857 unithd 5520 2341920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_858 unithd 5520 2344640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_859 unithd 5520 2347360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_860 unithd 5520 2350080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_861 unithd 5520 2352800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_862 unithd 5520 2355520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_863 unithd 5520 2358240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_864 unithd 5520 2360960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_865 unithd 5520 2363680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_866 unithd 5520 2366400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_867 unithd 5520 2369120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_868 unithd 5520 2371840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_869 unithd 5520 2374560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_870 unithd 5520 2377280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_871 unithd 5520 2380000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_872 unithd 5520 2382720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_873 unithd 5520 2385440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_874 unithd 5520 2388160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_875 unithd 5520 2390880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_876 unithd 5520 2393600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_877 unithd 5520 2396320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_878 unithd 5520 2399040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_879 unithd 5520 2401760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_880 unithd 5520 2404480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_881 unithd 5520 2407200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_882 unithd 5520 2409920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_883 unithd 5520 2412640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_884 unithd 5520 2415360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_885 unithd 5520 2418080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_886 unithd 5520 2420800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_887 unithd 5520 2423520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_888 unithd 5520 2426240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_889 unithd 5520 2428960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_890 unithd 5520 2431680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_891 unithd 5520 2434400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_892 unithd 5520 2437120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_893 unithd 5520 2439840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_894 unithd 5520 2442560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_895 unithd 5520 2445280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_896 unithd 5520 2448000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_897 unithd 5520 2450720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_898 unithd 5520 2453440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_899 unithd 5520 2456160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_900 unithd 5520 2458880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_901 unithd 5520 2461600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_902 unithd 5520 2464320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_903 unithd 5520 2467040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_904 unithd 5520 2469760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_905 unithd 5520 2472480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_906 unithd 5520 2475200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_907 unithd 5520 2477920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_908 unithd 5520 2480640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_909 unithd 5520 2483360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_910 unithd 5520 2486080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_911 unithd 5520 2488800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_912 unithd 5520 2491520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_913 unithd 5520 2494240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_914 unithd 5520 2496960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_915 unithd 5520 2499680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_916 unithd 5520 2502400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_917 unithd 5520 2505120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_918 unithd 5520 2507840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_919 unithd 5520 2510560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_920 unithd 5520 2513280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_921 unithd 5520 2516000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_922 unithd 5520 2518720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_923 unithd 5520 2521440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_924 unithd 5520 2524160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_925 unithd 5520 2526880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_926 unithd 5520 2529600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_927 unithd 5520 2532320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_928 unithd 5520 2535040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_929 unithd 5520 2537760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_930 unithd 5520 2540480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_931 unithd 5520 2543200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_932 unithd 5520 2545920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_933 unithd 5520 2548640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_934 unithd 5520 2551360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_935 unithd 5520 2554080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_936 unithd 5520 2556800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_937 unithd 5520 2559520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_938 unithd 5520 2562240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_939 unithd 5520 2564960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_940 unithd 5520 2567680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_941 unithd 5520 2570400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_942 unithd 5520 2573120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_943 unithd 5520 2575840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_944 unithd 5520 2578560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_945 unithd 5520 2581280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_946 unithd 5520 2584000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_947 unithd 5520 2586720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_948 unithd 5520 2589440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_949 unithd 5520 2592160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_950 unithd 5520 2594880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_951 unithd 5520 2597600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_952 unithd 5520 2600320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_953 unithd 5520 2603040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_954 unithd 5520 2605760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_955 unithd 5520 2608480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_956 unithd 5520 2611200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_957 unithd 5520 2613920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_958 unithd 5520 2616640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_959 unithd 5520 2619360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_960 unithd 5520 2622080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_961 unithd 5520 2624800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_962 unithd 5520 2627520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_963 unithd 5520 2630240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_964 unithd 5520 2632960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_965 unithd 5520 2635680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_966 unithd 5520 2638400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_967 unithd 5520 2641120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_968 unithd 5520 2643840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_969 unithd 5520 2646560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_970 unithd 5520 2649280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_971 unithd 5520 2652000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_972 unithd 5520 2654720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_973 unithd 5520 2657440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_974 unithd 5520 2660160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_975 unithd 5520 2662880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_976 unithd 5520 2665600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_977 unithd 5520 2668320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_978 unithd 5520 2671040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_979 unithd 5520 2673760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_980 unithd 5520 2676480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_981 unithd 5520 2679200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_982 unithd 5520 2681920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_983 unithd 5520 2684640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_984 unithd 5520 2687360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_985 unithd 5520 2690080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_986 unithd 5520 2692800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_987 unithd 5520 2695520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_988 unithd 5520 2698240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_989 unithd 5520 2700960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_990 unithd 5520 2703680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_991 unithd 5520 2706400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_992 unithd 5520 2709120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_993 unithd 5520 2711840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_994 unithd 5520 2714560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_995 unithd 5520 2717280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_996 unithd 5520 2720000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_997 unithd 5520 2722720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_998 unithd 5520 2725440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_999 unithd 5520 2728160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1000 unithd 5520 2730880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1001 unithd 5520 2733600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1002 unithd 5520 2736320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1003 unithd 5520 2739040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1004 unithd 5520 2741760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1005 unithd 5520 2744480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1006 unithd 5520 2747200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1007 unithd 5520 2749920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1008 unithd 5520 2752640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1009 unithd 5520 2755360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1010 unithd 5520 2758080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1011 unithd 5520 2760800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1012 unithd 5520 2763520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1013 unithd 5520 2766240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1014 unithd 5520 2768960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1015 unithd 5520 2771680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1016 unithd 5520 2774400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1017 unithd 5520 2777120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1018 unithd 5520 2779840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1019 unithd 5520 2782560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1020 unithd 5520 2785280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1021 unithd 5520 2788000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1022 unithd 5520 2790720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1023 unithd 5520 2793440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1024 unithd 5520 2796160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1025 unithd 5520 2798880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1026 unithd 5520 2801600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1027 unithd 5520 2804320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1028 unithd 5520 2807040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1029 unithd 5520 2809760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1030 unithd 5520 2812480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1031 unithd 5520 2815200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1032 unithd 5520 2817920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1033 unithd 5520 2820640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1034 unithd 5520 2823360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1035 unithd 5520 2826080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1036 unithd 5520 2828800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1037 unithd 5520 2831520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1038 unithd 5520 2834240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1039 unithd 5520 2836960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1040 unithd 5520 2839680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1041 unithd 5520 2842400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1042 unithd 5520 2845120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1043 unithd 5520 2847840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1044 unithd 5520 2850560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1045 unithd 5520 2853280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1046 unithd 5520 2856000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1047 unithd 5520 2858720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1048 unithd 5520 2861440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1049 unithd 5520 2864160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1050 unithd 5520 2866880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1051 unithd 5520 2869600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1052 unithd 5520 2872320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1053 unithd 5520 2875040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1054 unithd 5520 2877760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1055 unithd 5520 2880480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1056 unithd 5520 2883200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1057 unithd 5520 2885920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1058 unithd 5520 2888640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1059 unithd 5520 2891360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1060 unithd 5520 2894080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1061 unithd 5520 2896800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1062 unithd 5520 2899520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1063 unithd 5520 2902240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1064 unithd 5520 2904960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1065 unithd 5520 2907680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1066 unithd 5520 2910400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1067 unithd 5520 2913120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1068 unithd 5520 2915840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1069 unithd 5520 2918560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1070 unithd 5520 2921280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1071 unithd 5520 2924000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1072 unithd 5520 2926720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1073 unithd 5520 2929440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1074 unithd 5520 2932160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1075 unithd 5520 2934880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1076 unithd 5520 2937600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1077 unithd 5520 2940320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1078 unithd 5520 2943040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1079 unithd 5520 2945760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1080 unithd 5520 2948480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1081 unithd 5520 2951200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1082 unithd 5520 2953920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1083 unithd 5520 2956640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1084 unithd 5520 2959360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1085 unithd 5520 2962080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1086 unithd 5520 2964800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1087 unithd 5520 2967520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1088 unithd 5520 2970240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1089 unithd 5520 2972960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1090 unithd 5520 2975680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1091 unithd 5520 2978400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1092 unithd 5520 2981120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1093 unithd 5520 2983840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1094 unithd 5520 2986560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1095 unithd 5520 2989280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1096 unithd 5520 2992000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1097 unithd 5520 2994720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1098 unithd 5520 2997440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1099 unithd 5520 3000160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1100 unithd 5520 3002880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1101 unithd 5520 3005600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1102 unithd 5520 3008320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1103 unithd 5520 3011040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1104 unithd 5520 3013760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1105 unithd 5520 3016480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1106 unithd 5520 3019200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1107 unithd 5520 3021920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1108 unithd 5520 3024640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1109 unithd 5520 3027360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1110 unithd 5520 3030080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1111 unithd 5520 3032800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1112 unithd 5520 3035520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1113 unithd 5520 3038240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1114 unithd 5520 3040960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1115 unithd 5520 3043680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1116 unithd 5520 3046400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1117 unithd 5520 3049120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1118 unithd 5520 3051840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1119 unithd 5520 3054560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1120 unithd 5520 3057280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1121 unithd 5520 3060000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1122 unithd 5520 3062720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1123 unithd 5520 3065440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1124 unithd 5520 3068160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1125 unithd 5520 3070880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1126 unithd 5520 3073600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1127 unithd 5520 3076320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1128 unithd 5520 3079040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1129 unithd 5520 3081760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1130 unithd 5520 3084480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1131 unithd 5520 3087200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1132 unithd 5520 3089920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1133 unithd 5520 3092640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1134 unithd 5520 3095360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1135 unithd 5520 3098080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1136 unithd 5520 3100800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1137 unithd 5520 3103520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1138 unithd 5520 3106240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1139 unithd 5520 3108960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1140 unithd 5520 3111680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1141 unithd 5520 3114400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1142 unithd 5520 3117120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1143 unithd 5520 3119840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1144 unithd 5520 3122560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1145 unithd 5520 3125280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1146 unithd 5520 3128000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1147 unithd 5520 3130720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1148 unithd 5520 3133440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1149 unithd 5520 3136160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1150 unithd 5520 3138880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1151 unithd 5520 3141600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1152 unithd 5520 3144320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1153 unithd 5520 3147040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1154 unithd 5520 3149760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1155 unithd 5520 3152480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1156 unithd 5520 3155200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1157 unithd 5520 3157920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1158 unithd 5520 3160640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1159 unithd 5520 3163360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1160 unithd 5520 3166080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1161 unithd 5520 3168800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1162 unithd 5520 3171520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1163 unithd 5520 3174240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1164 unithd 5520 3176960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1165 unithd 5520 3179680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1166 unithd 5520 3182400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1167 unithd 5520 3185120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1168 unithd 5520 3187840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1169 unithd 5520 3190560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1170 unithd 5520 3193280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1171 unithd 5520 3196000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1172 unithd 5520 3198720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1173 unithd 5520 3201440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1174 unithd 5520 3204160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1175 unithd 5520 3206880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1176 unithd 5520 3209600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1177 unithd 5520 3212320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1178 unithd 5520 3215040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1179 unithd 5520 3217760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1180 unithd 5520 3220480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1181 unithd 5520 3223200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1182 unithd 5520 3225920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1183 unithd 5520 3228640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1184 unithd 5520 3231360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1185 unithd 5520 3234080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1186 unithd 5520 3236800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1187 unithd 5520 3239520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1188 unithd 5520 3242240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1189 unithd 5520 3244960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1190 unithd 5520 3247680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1191 unithd 5520 3250400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1192 unithd 5520 3253120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1193 unithd 5520 3255840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1194 unithd 5520 3258560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1195 unithd 5520 3261280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1196 unithd 5520 3264000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1197 unithd 5520 3266720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1198 unithd 5520 3269440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1199 unithd 5520 3272160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1200 unithd 5520 3274880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1201 unithd 5520 3277600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1202 unithd 5520 3280320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1203 unithd 5520 3283040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1204 unithd 5520 3285760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1205 unithd 5520 3288480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1206 unithd 5520 3291200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1207 unithd 5520 3293920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1208 unithd 5520 3296640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1209 unithd 5520 3299360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1210 unithd 5520 3302080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1211 unithd 5520 3304800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1212 unithd 5520 3307520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1213 unithd 5520 3310240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1214 unithd 5520 3312960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1215 unithd 5520 3315680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1216 unithd 5520 3318400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1217 unithd 5520 3321120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1218 unithd 5520 3323840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1219 unithd 5520 3326560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1220 unithd 5520 3329280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1221 unithd 5520 3332000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1222 unithd 5520 3334720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1223 unithd 5520 3337440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1224 unithd 5520 3340160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1225 unithd 5520 3342880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1226 unithd 5520 3345600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1227 unithd 5520 3348320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1228 unithd 5520 3351040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1229 unithd 5520 3353760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1230 unithd 5520 3356480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1231 unithd 5520 3359200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1232 unithd 5520 3361920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1233 unithd 5520 3364640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1234 unithd 5520 3367360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1235 unithd 5520 3370080 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1236 unithd 5520 3372800 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1237 unithd 5520 3375520 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1238 unithd 5520 3378240 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1239 unithd 5520 3380960 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1240 unithd 5520 3383680 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1241 unithd 5520 3386400 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1242 unithd 5520 3389120 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1243 unithd 5520 3391840 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1244 unithd 5520 3394560 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1245 unithd 5520 3397280 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1246 unithd 5520 3400000 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1247 unithd 5520 3402720 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1248 unithd 5520 3405440 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1249 unithd 5520 3408160 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1250 unithd 5520 3410880 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1251 unithd 5520 3413600 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1252 unithd 5520 3416320 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1253 unithd 5520 3419040 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1254 unithd 5520 3421760 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1255 unithd 5520 3424480 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1256 unithd 5520 3427200 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1257 unithd 5520 3429920 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1258 unithd 5520 3432640 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1259 unithd 5520 3435360 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1260 unithd 5520 3438080 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1261 unithd 5520 3440800 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1262 unithd 5520 3443520 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1263 unithd 5520 3446240 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1264 unithd 5520 3448960 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1265 unithd 5520 3451680 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1266 unithd 5520 3454400 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1267 unithd 5520 3457120 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1268 unithd 5520 3459840 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1269 unithd 5520 3462560 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1270 unithd 5520 3465280 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1271 unithd 5520 3468000 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1272 unithd 5520 3470720 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1273 unithd 5520 3473440 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1274 unithd 5520 3476160 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1275 unithd 5520 3478880 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1276 unithd 5520 3481600 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1277 unithd 5520 3484320 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1278 unithd 5520 3487040 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1279 unithd 5520 3489760 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1280 unithd 5520 3492480 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1281 unithd 5520 3495200 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1282 unithd 5520 3497920 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1283 unithd 5520 3500640 FS DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1284 unithd 5520 3503360 N DO 6323 BY 1 STEP 460 0 ;
+ROW ROW_1285 unithd 5520 3506080 FS DO 6323 BY 1 STEP 460 0 ;
+TRACKS X 230 DO 6348 STEP 460 LAYER li1 ;
+TRACKS Y 170 DO 10353 STEP 340 LAYER li1 ;
+TRACKS X 170 DO 8588 STEP 340 LAYER met1 ;
+TRACKS Y 170 DO 10353 STEP 340 LAYER met1 ;
+TRACKS X 230 DO 6348 STEP 460 LAYER met2 ;
+TRACKS Y 230 DO 7652 STEP 460 LAYER met2 ;
+TRACKS X 340 DO 4294 STEP 680 LAYER met3 ;
+TRACKS Y 340 DO 5176 STEP 680 LAYER met3 ;
+TRACKS X 460 DO 3174 STEP 920 LAYER met4 ;
+TRACKS Y 460 DO 3826 STEP 920 LAYER met4 ;
+TRACKS X 1700 DO 859 STEP 3400 LAYER met5 ;
+TRACKS Y 1700 DO 1035 STEP 3400 LAYER met5 ;
+GCELLGRID X 0 DO 423 STEP 6900 ;
+GCELLGRID Y 0 DO 510 STEP 6900 ;
+VIAS 2 ;
+    - via4_3100x3100 + VIARULE M4M5_PR + CUTSIZE 800 800  + LAYERS met4 via4 met5  + CUTSPACING 800 800  + ENCLOSURE 350 350 350 350  + ROWCOL 2 2  ;
+    - via4_1600x3100 + VIARULE M4M5_PR + CUTSIZE 800 800  + LAYERS met4 via4 met5  + CUTSPACING 800 800  + ENCLOSURE 400 350 400 350  + ROWCOL 2 1  ;
+END VIAS
+PINS 645 ;
+    - analog_io[0] + NET analog_io[0] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1426980 ) N ;
+    - analog_io[10] + NET analog_io[10] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2230770 3521200 ) N ;
+    - analog_io[11] + NET analog_io[11] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1906010 3521200 ) N ;
+    - analog_io[12] + NET analog_io[12] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1581710 3521200 ) N ;
+    - analog_io[13] + NET analog_io[13] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1257410 3521200 ) N ;
+    - analog_io[14] + NET analog_io[14] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 932650 3521200 ) N ;
+    - analog_io[15] + NET analog_io[15] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 608350 3521200 ) N ;
+    - analog_io[16] + NET analog_io[16] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 284050 3521200 ) N ;
+    - analog_io[17] + NET analog_io[17] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3486700 ) N ;
+    - analog_io[18] + NET analog_io[18] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3225580 ) N ;
+    - analog_io[19] + NET analog_io[19] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2965140 ) N ;
+    - analog_io[1] + NET analog_io[1] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1692860 ) N ;
+    - analog_io[20] + NET analog_io[20] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2704020 ) N ;
+    - analog_io[21] + NET analog_io[21] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2443580 ) N ;
+    - analog_io[22] + NET analog_io[22] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2183140 ) N ;
+    - analog_io[23] + NET analog_io[23] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1922020 ) N ;
+    - analog_io[24] + NET analog_io[24] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1661580 ) N ;
+    - analog_io[25] + NET analog_io[25] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1400460 ) N ;
+    - analog_io[26] + NET analog_io[26] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1140020 ) N ;
+    - analog_io[27] + NET analog_io[27] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 879580 ) N ;
+    - analog_io[28] + NET analog_io[28] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 618460 ) N ;
+    - analog_io[2] + NET analog_io[2] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1958740 ) N ;
+    - analog_io[3] + NET analog_io[3] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2223940 ) N ;
+    - analog_io[4] + NET analog_io[4] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2489820 ) N ;
+    - analog_io[5] + NET analog_io[5] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2755700 ) N ;
+    - analog_io[6] + NET analog_io[6] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3020900 ) N ;
+    - analog_io[7] + NET analog_io[7] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3286780 ) N ;
+    - analog_io[8] + NET analog_io[8] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2879370 3521200 ) N ;
+    - analog_io[9] + NET analog_io[9] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2555070 3521200 ) N ;
+    - io_in[0] + NET io_in[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 32980 ) N ;
+    - io_in[10] + NET io_in[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2290580 ) N ;
+    - io_in[11] + NET io_in[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2556460 ) N ;
+    - io_in[12] + NET io_in[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2821660 ) N ;
+    - io_in[13] + NET io_in[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3087540 ) N ;
+    - io_in[14] + NET io_in[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3353420 ) N ;
+    - io_in[15] + NET io_in[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2798410 3521200 ) N ;
+    - io_in[16] + NET io_in[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2474110 3521200 ) N ;
+    - io_in[17] + NET io_in[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2149350 3521200 ) N ;
+    - io_in[18] + NET io_in[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1825050 3521200 ) N ;
+    - io_in[19] + NET io_in[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1500750 3521200 ) N ;
+    - io_in[1] + NET io_in[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 231540 ) N ;
+    - io_in[20] + NET io_in[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1175990 3521200 ) N ;
+    - io_in[21] + NET io_in[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 851690 3521200 ) N ;
+    - io_in[22] + NET io_in[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 527390 3521200 ) N ;
+    - io_in[23] + NET io_in[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 202630 3521200 ) N ;
+    - io_in[24] + NET io_in[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3421420 ) N ;
+    - io_in[25] + NET io_in[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3160300 ) N ;
+    - io_in[26] + NET io_in[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2899860 ) N ;
+    - io_in[27] + NET io_in[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2639420 ) N ;
+    - io_in[28] + NET io_in[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2378300 ) N ;
+    - io_in[29] + NET io_in[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2117860 ) N ;
+    - io_in[2] + NET io_in[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 430780 ) N ;
+    - io_in[30] + NET io_in[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1856740 ) N ;
+    - io_in[31] + NET io_in[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1596300 ) N ;
+    - io_in[32] + NET io_in[32] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1335860 ) N ;
+    - io_in[33] + NET io_in[33] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1074740 ) N ;
+    - io_in[34] + NET io_in[34] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 814300 ) N ;
+    - io_in[35] + NET io_in[35] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 553180 ) N ;
+    - io_in[36] + NET io_in[36] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 358020 ) N ;
+    - io_in[37] + NET io_in[37] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 162180 ) N ;
+    - io_in[3] + NET io_in[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 630020 ) N ;
+    - io_in[4] + NET io_in[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 829260 ) N ;
+    - io_in[5] + NET io_in[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1028500 ) N ;
+    - io_in[6] + NET io_in[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1227740 ) N ;
+    - io_in[7] + NET io_in[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1493620 ) N ;
+    - io_in[8] + NET io_in[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1759500 ) N ;
+    - io_in[9] + NET io_in[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2024700 ) N ;
+    - io_oeb[0] + NET io_oeb[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 165580 ) N ;
+    - io_oeb[10] + NET io_oeb[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2423180 ) N ;
+    - io_oeb[11] + NET io_oeb[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2689060 ) N ;
+    - io_oeb[12] + NET io_oeb[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2954940 ) N ;
+    - io_oeb[13] + NET io_oeb[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3220140 ) N ;
+    - io_oeb[14] + NET io_oeb[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3486020 ) N ;
+    - io_oeb[15] + NET io_oeb[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2636030 3521200 ) N ;
+    - io_oeb[16] + NET io_oeb[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2311730 3521200 ) N ;
+    - io_oeb[17] + NET io_oeb[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1987430 3521200 ) N ;
+    - io_oeb[18] + NET io_oeb[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1662670 3521200 ) N ;
+    - io_oeb[19] + NET io_oeb[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1338370 3521200 ) N ;
+    - io_oeb[1] + NET io_oeb[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 364820 ) N ;
+    - io_oeb[20] + NET io_oeb[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1014070 3521200 ) N ;
+    - io_oeb[21] + NET io_oeb[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 689310 3521200 ) N ;
+    - io_oeb[22] + NET io_oeb[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 365010 3521200 ) N ;
+    - io_oeb[23] + NET io_oeb[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 40710 3521200 ) N ;
+    - io_oeb[24] + NET io_oeb[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3290860 ) N ;
+    - io_oeb[25] + NET io_oeb[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3030420 ) N ;
+    - io_oeb[26] + NET io_oeb[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2769300 ) N ;
+    - io_oeb[27] + NET io_oeb[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2508860 ) N ;
+    - io_oeb[28] + NET io_oeb[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2247740 ) N ;
+    - io_oeb[29] + NET io_oeb[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1987300 ) N ;
+    - io_oeb[2] + NET io_oeb[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 564060 ) N ;
+    - io_oeb[30] + NET io_oeb[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1726860 ) N ;
+    - io_oeb[31] + NET io_oeb[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1465740 ) N ;
+    - io_oeb[32] + NET io_oeb[32] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1205300 ) N ;
+    - io_oeb[33] + NET io_oeb[33] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 944180 ) N ;
+    - io_oeb[34] + NET io_oeb[34] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 683740 ) N ;
+    - io_oeb[35] + NET io_oeb[35] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 423300 ) N ;
+    - io_oeb[36] + NET io_oeb[36] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 227460 ) N ;
+    - io_oeb[37] + NET io_oeb[37] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 32300 ) N ;
+    - io_oeb[3] + NET io_oeb[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 763300 ) N ;
+    - io_oeb[4] + NET io_oeb[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 962540 ) N ;
+    - io_oeb[5] + NET io_oeb[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1161780 ) N ;
+    - io_oeb[6] + NET io_oeb[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1361020 ) N ;
+    - io_oeb[7] + NET io_oeb[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1626220 ) N ;
+    - io_oeb[8] + NET io_oeb[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1892100 ) N ;
+    - io_oeb[9] + NET io_oeb[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2157980 ) N ;
+    - io_out[0] + NET io_out[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 98940 ) N ;
+    - io_out[10] + NET io_out[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2357220 ) N ;
+    - io_out[11] + NET io_out[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2622420 ) N ;
+    - io_out[12] + NET io_out[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2888300 ) N ;
+    - io_out[13] + NET io_out[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3154180 ) N ;
+    - io_out[14] + NET io_out[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 3419380 ) N ;
+    - io_out[15] + NET io_out[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2717450 3521200 ) N ;
+    - io_out[16] + NET io_out[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2392690 3521200 ) N ;
+    - io_out[17] + NET io_out[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2068390 3521200 ) N ;
+    - io_out[18] + NET io_out[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1744090 3521200 ) N ;
+    - io_out[19] + NET io_out[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1419330 3521200 ) N ;
+    - io_out[1] + NET io_out[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 298180 ) N ;
+    - io_out[20] + NET io_out[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1095030 3521200 ) N ;
+    - io_out[21] + NET io_out[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 770730 3521200 ) N ;
+    - io_out[22] + NET io_out[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 445970 3521200 ) N ;
+    - io_out[23] + NET io_out[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 121670 3521200 ) N ;
+    - io_out[24] + NET io_out[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3356140 ) N ;
+    - io_out[25] + NET io_out[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 3095700 ) N ;
+    - io_out[26] + NET io_out[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2834580 ) N ;
+    - io_out[27] + NET io_out[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2574140 ) N ;
+    - io_out[28] + NET io_out[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2313020 ) N ;
+    - io_out[29] + NET io_out[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 2052580 ) N ;
+    - io_out[2] + NET io_out[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 497420 ) N ;
+    - io_out[30] + NET io_out[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1792140 ) N ;
+    - io_out[31] + NET io_out[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1531020 ) N ;
+    - io_out[32] + NET io_out[32] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1270580 ) N ;
+    - io_out[33] + NET io_out[33] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 1009460 ) N ;
+    - io_out[34] + NET io_out[34] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 749020 ) N ;
+    - io_out[35] + NET io_out[35] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 487900 ) N ;
+    - io_out[36] + NET io_out[36] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 292740 ) N ;
+    - io_out[37] + NET io_out[37] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( -1200 96900 ) N ;
+    - io_out[3] + NET io_out[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 696660 ) N ;
+    - io_out[4] + NET io_out[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 895900 ) N ;
+    - io_out[5] + NET io_out[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1095140 ) N ;
+    - io_out[6] + NET io_out[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1294380 ) N ;
+    - io_out[7] + NET io_out[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1560260 ) N ;
+    - io_out[8] + NET io_out[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 1825460 ) N ;
+    - io_out[9] + NET io_out[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met3 ( -3600 -600 ) ( 3600 600 )
+        + PLACED ( 2921200 2091340 ) N ;
+    - la_data_in[0] + NET la_data_in[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 629510 -1200 ) N ;
+    - la_data_in[100] + NET la_data_in[100] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2402810 -1200 ) N ;
+    - la_data_in[101] + NET la_data_in[101] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2420290 -1200 ) N ;
+    - la_data_in[102] + NET la_data_in[102] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2438230 -1200 ) N ;
+    - la_data_in[103] + NET la_data_in[103] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2455710 -1200 ) N ;
+    - la_data_in[104] + NET la_data_in[104] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2473650 -1200 ) N ;
+    - la_data_in[105] + NET la_data_in[105] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2491130 -1200 ) N ;
+    - la_data_in[106] + NET la_data_in[106] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2509070 -1200 ) N ;
+    - la_data_in[107] + NET la_data_in[107] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2527010 -1200 ) N ;
+    - la_data_in[108] + NET la_data_in[108] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2544490 -1200 ) N ;
+    - la_data_in[109] + NET la_data_in[109] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2562430 -1200 ) N ;
+    - la_data_in[10] + NET la_data_in[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 806610 -1200 ) N ;
+    - la_data_in[110] + NET la_data_in[110] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2579910 -1200 ) N ;
+    - la_data_in[111] + NET la_data_in[111] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2597850 -1200 ) N ;
+    - la_data_in[112] + NET la_data_in[112] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2615330 -1200 ) N ;
+    - la_data_in[113] + NET la_data_in[113] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2633270 -1200 ) N ;
+    - la_data_in[114] + NET la_data_in[114] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2650750 -1200 ) N ;
+    - la_data_in[115] + NET la_data_in[115] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2668690 -1200 ) N ;
+    - la_data_in[116] + NET la_data_in[116] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2686170 -1200 ) N ;
+    - la_data_in[117] + NET la_data_in[117] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2704110 -1200 ) N ;
+    - la_data_in[118] + NET la_data_in[118] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2722050 -1200 ) N ;
+    - la_data_in[119] + NET la_data_in[119] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2739530 -1200 ) N ;
+    - la_data_in[11] + NET la_data_in[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 824550 -1200 ) N ;
+    - la_data_in[120] + NET la_data_in[120] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2757470 -1200 ) N ;
+    - la_data_in[121] + NET la_data_in[121] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2774950 -1200 ) N ;
+    - la_data_in[122] + NET la_data_in[122] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2792890 -1200 ) N ;
+    - la_data_in[123] + NET la_data_in[123] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2810370 -1200 ) N ;
+    - la_data_in[124] + NET la_data_in[124] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2828310 -1200 ) N ;
+    - la_data_in[125] + NET la_data_in[125] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2845790 -1200 ) N ;
+    - la_data_in[126] + NET la_data_in[126] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2863730 -1200 ) N ;
+    - la_data_in[127] + NET la_data_in[127] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2881670 -1200 ) N ;
+    - la_data_in[12] + NET la_data_in[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 842030 -1200 ) N ;
+    - la_data_in[13] + NET la_data_in[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 859970 -1200 ) N ;
+    - la_data_in[14] + NET la_data_in[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 877450 -1200 ) N ;
+    - la_data_in[15] + NET la_data_in[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 895390 -1200 ) N ;
+    - la_data_in[16] + NET la_data_in[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 912870 -1200 ) N ;
+    - la_data_in[17] + NET la_data_in[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 930810 -1200 ) N ;
+    - la_data_in[18] + NET la_data_in[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 948750 -1200 ) N ;
+    - la_data_in[19] + NET la_data_in[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 966230 -1200 ) N ;
+    - la_data_in[1] + NET la_data_in[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 646990 -1200 ) N ;
+    - la_data_in[20] + NET la_data_in[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 984170 -1200 ) N ;
+    - la_data_in[21] + NET la_data_in[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1001650 -1200 ) N ;
+    - la_data_in[22] + NET la_data_in[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1019590 -1200 ) N ;
+    - la_data_in[23] + NET la_data_in[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1037070 -1200 ) N ;
+    - la_data_in[24] + NET la_data_in[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1055010 -1200 ) N ;
+    - la_data_in[25] + NET la_data_in[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1072490 -1200 ) N ;
+    - la_data_in[26] + NET la_data_in[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1090430 -1200 ) N ;
+    - la_data_in[27] + NET la_data_in[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1107910 -1200 ) N ;
+    - la_data_in[28] + NET la_data_in[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1125850 -1200 ) N ;
+    - la_data_in[29] + NET la_data_in[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1143790 -1200 ) N ;
+    - la_data_in[2] + NET la_data_in[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 664930 -1200 ) N ;
+    - la_data_in[30] + NET la_data_in[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1161270 -1200 ) N ;
+    - la_data_in[31] + NET la_data_in[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1179210 -1200 ) N ;
+    - la_data_in[32] + NET la_data_in[32] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1196690 -1200 ) N ;
+    - la_data_in[33] + NET la_data_in[33] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1214630 -1200 ) N ;
+    - la_data_in[34] + NET la_data_in[34] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1232110 -1200 ) N ;
+    - la_data_in[35] + NET la_data_in[35] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1250050 -1200 ) N ;
+    - la_data_in[36] + NET la_data_in[36] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1267530 -1200 ) N ;
+    - la_data_in[37] + NET la_data_in[37] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1285470 -1200 ) N ;
+    - la_data_in[38] + NET la_data_in[38] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1303410 -1200 ) N ;
+    - la_data_in[39] + NET la_data_in[39] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1320890 -1200 ) N ;
+    - la_data_in[3] + NET la_data_in[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 682410 -1200 ) N ;
+    - la_data_in[40] + NET la_data_in[40] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1338830 -1200 ) N ;
+    - la_data_in[41] + NET la_data_in[41] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1356310 -1200 ) N ;
+    - la_data_in[42] + NET la_data_in[42] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1374250 -1200 ) N ;
+    - la_data_in[43] + NET la_data_in[43] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1391730 -1200 ) N ;
+    - la_data_in[44] + NET la_data_in[44] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1409670 -1200 ) N ;
+    - la_data_in[45] + NET la_data_in[45] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1427150 -1200 ) N ;
+    - la_data_in[46] + NET la_data_in[46] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1445090 -1200 ) N ;
+    - la_data_in[47] + NET la_data_in[47] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1463030 -1200 ) N ;
+    - la_data_in[48] + NET la_data_in[48] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1480510 -1200 ) N ;
+    - la_data_in[49] + NET la_data_in[49] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1498450 -1200 ) N ;
+    - la_data_in[4] + NET la_data_in[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 700350 -1200 ) N ;
+    - la_data_in[50] + NET la_data_in[50] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1515930 -1200 ) N ;
+    - la_data_in[51] + NET la_data_in[51] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1533870 -1200 ) N ;
+    - la_data_in[52] + NET la_data_in[52] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1551350 -1200 ) N ;
+    - la_data_in[53] + NET la_data_in[53] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1569290 -1200 ) N ;
+    - la_data_in[54] + NET la_data_in[54] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1586770 -1200 ) N ;
+    - la_data_in[55] + NET la_data_in[55] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1604710 -1200 ) N ;
+    - la_data_in[56] + NET la_data_in[56] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1622190 -1200 ) N ;
+    - la_data_in[57] + NET la_data_in[57] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1640130 -1200 ) N ;
+    - la_data_in[58] + NET la_data_in[58] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1658070 -1200 ) N ;
+    - la_data_in[59] + NET la_data_in[59] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1675550 -1200 ) N ;
+    - la_data_in[5] + NET la_data_in[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 717830 -1200 ) N ;
+    - la_data_in[60] + NET la_data_in[60] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1693490 -1200 ) N ;
+    - la_data_in[61] + NET la_data_in[61] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1710970 -1200 ) N ;
+    - la_data_in[62] + NET la_data_in[62] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1728910 -1200 ) N ;
+    - la_data_in[63] + NET la_data_in[63] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1746390 -1200 ) N ;
+    - la_data_in[64] + NET la_data_in[64] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1764330 -1200 ) N ;
+    - la_data_in[65] + NET la_data_in[65] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1781810 -1200 ) N ;
+    - la_data_in[66] + NET la_data_in[66] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1799750 -1200 ) N ;
+    - la_data_in[67] + NET la_data_in[67] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1817690 -1200 ) N ;
+    - la_data_in[68] + NET la_data_in[68] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1835170 -1200 ) N ;
+    - la_data_in[69] + NET la_data_in[69] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1853110 -1200 ) N ;
+    - la_data_in[6] + NET la_data_in[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 735770 -1200 ) N ;
+    - la_data_in[70] + NET la_data_in[70] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1870590 -1200 ) N ;
+    - la_data_in[71] + NET la_data_in[71] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1888530 -1200 ) N ;
+    - la_data_in[72] + NET la_data_in[72] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1906010 -1200 ) N ;
+    - la_data_in[73] + NET la_data_in[73] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1923950 -1200 ) N ;
+    - la_data_in[74] + NET la_data_in[74] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1941430 -1200 ) N ;
+    - la_data_in[75] + NET la_data_in[75] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1959370 -1200 ) N ;
+    - la_data_in[76] + NET la_data_in[76] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1976850 -1200 ) N ;
+    - la_data_in[77] + NET la_data_in[77] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1994790 -1200 ) N ;
+    - la_data_in[78] + NET la_data_in[78] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2012730 -1200 ) N ;
+    - la_data_in[79] + NET la_data_in[79] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2030210 -1200 ) N ;
+    - la_data_in[7] + NET la_data_in[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 753250 -1200 ) N ;
+    - la_data_in[80] + NET la_data_in[80] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2048150 -1200 ) N ;
+    - la_data_in[81] + NET la_data_in[81] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2065630 -1200 ) N ;
+    - la_data_in[82] + NET la_data_in[82] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2083570 -1200 ) N ;
+    - la_data_in[83] + NET la_data_in[83] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2101050 -1200 ) N ;
+    - la_data_in[84] + NET la_data_in[84] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2118990 -1200 ) N ;
+    - la_data_in[85] + NET la_data_in[85] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2136470 -1200 ) N ;
+    - la_data_in[86] + NET la_data_in[86] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2154410 -1200 ) N ;
+    - la_data_in[87] + NET la_data_in[87] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2172350 -1200 ) N ;
+    - la_data_in[88] + NET la_data_in[88] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2189830 -1200 ) N ;
+    - la_data_in[89] + NET la_data_in[89] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2207770 -1200 ) N ;
+    - la_data_in[8] + NET la_data_in[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 771190 -1200 ) N ;
+    - la_data_in[90] + NET la_data_in[90] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2225250 -1200 ) N ;
+    - la_data_in[91] + NET la_data_in[91] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2243190 -1200 ) N ;
+    - la_data_in[92] + NET la_data_in[92] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2260670 -1200 ) N ;
+    - la_data_in[93] + NET la_data_in[93] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2278610 -1200 ) N ;
+    - la_data_in[94] + NET la_data_in[94] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2296090 -1200 ) N ;
+    - la_data_in[95] + NET la_data_in[95] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2314030 -1200 ) N ;
+    - la_data_in[96] + NET la_data_in[96] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2331510 -1200 ) N ;
+    - la_data_in[97] + NET la_data_in[97] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2349450 -1200 ) N ;
+    - la_data_in[98] + NET la_data_in[98] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2367390 -1200 ) N ;
+    - la_data_in[99] + NET la_data_in[99] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2384870 -1200 ) N ;
+    - la_data_in[9] + NET la_data_in[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 789130 -1200 ) N ;
+    - la_data_out[0] + NET la_data_out[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 635030 -1200 ) N ;
+    - la_data_out[100] + NET la_data_out[100] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2408790 -1200 ) N ;
+    - la_data_out[101] + NET la_data_out[101] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2426270 -1200 ) N ;
+    - la_data_out[102] + NET la_data_out[102] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2444210 -1200 ) N ;
+    - la_data_out[103] + NET la_data_out[103] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2461690 -1200 ) N ;
+    - la_data_out[104] + NET la_data_out[104] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2479630 -1200 ) N ;
+    - la_data_out[105] + NET la_data_out[105] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2497110 -1200 ) N ;
+    - la_data_out[106] + NET la_data_out[106] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2515050 -1200 ) N ;
+    - la_data_out[107] + NET la_data_out[107] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2532530 -1200 ) N ;
+    - la_data_out[108] + NET la_data_out[108] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2550470 -1200 ) N ;
+    - la_data_out[109] + NET la_data_out[109] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2567950 -1200 ) N ;
+    - la_data_out[10] + NET la_data_out[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 812590 -1200 ) N ;
+    - la_data_out[110] + NET la_data_out[110] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2585890 -1200 ) N ;
+    - la_data_out[111] + NET la_data_out[111] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2603830 -1200 ) N ;
+    - la_data_out[112] + NET la_data_out[112] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2621310 -1200 ) N ;
+    - la_data_out[113] + NET la_data_out[113] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2639250 -1200 ) N ;
+    - la_data_out[114] + NET la_data_out[114] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2656730 -1200 ) N ;
+    - la_data_out[115] + NET la_data_out[115] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2674670 -1200 ) N ;
+    - la_data_out[116] + NET la_data_out[116] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2692150 -1200 ) N ;
+    - la_data_out[117] + NET la_data_out[117] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2710090 -1200 ) N ;
+    - la_data_out[118] + NET la_data_out[118] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2727570 -1200 ) N ;
+    - la_data_out[119] + NET la_data_out[119] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2745510 -1200 ) N ;
+    - la_data_out[11] + NET la_data_out[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 830530 -1200 ) N ;
+    - la_data_out[120] + NET la_data_out[120] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2763450 -1200 ) N ;
+    - la_data_out[121] + NET la_data_out[121] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2780930 -1200 ) N ;
+    - la_data_out[122] + NET la_data_out[122] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2798870 -1200 ) N ;
+    - la_data_out[123] + NET la_data_out[123] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2816350 -1200 ) N ;
+    - la_data_out[124] + NET la_data_out[124] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2834290 -1200 ) N ;
+    - la_data_out[125] + NET la_data_out[125] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2851770 -1200 ) N ;
+    - la_data_out[126] + NET la_data_out[126] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2869710 -1200 ) N ;
+    - la_data_out[127] + NET la_data_out[127] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2887190 -1200 ) N ;
+    - la_data_out[12] + NET la_data_out[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 848010 -1200 ) N ;
+    - la_data_out[13] + NET la_data_out[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 865950 -1200 ) N ;
+    - la_data_out[14] + NET la_data_out[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 883430 -1200 ) N ;
+    - la_data_out[15] + NET la_data_out[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 901370 -1200 ) N ;
+    - la_data_out[16] + NET la_data_out[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 918850 -1200 ) N ;
+    - la_data_out[17] + NET la_data_out[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 936790 -1200 ) N ;
+    - la_data_out[18] + NET la_data_out[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 954270 -1200 ) N ;
+    - la_data_out[19] + NET la_data_out[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 972210 -1200 ) N ;
+    - la_data_out[1] + NET la_data_out[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 652970 -1200 ) N ;
+    - la_data_out[20] + NET la_data_out[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 989690 -1200 ) N ;
+    - la_data_out[21] + NET la_data_out[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1007630 -1200 ) N ;
+    - la_data_out[22] + NET la_data_out[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1025570 -1200 ) N ;
+    - la_data_out[23] + NET la_data_out[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1043050 -1200 ) N ;
+    - la_data_out[24] + NET la_data_out[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1060990 -1200 ) N ;
+    - la_data_out[25] + NET la_data_out[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1078470 -1200 ) N ;
+    - la_data_out[26] + NET la_data_out[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1096410 -1200 ) N ;
+    - la_data_out[27] + NET la_data_out[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1113890 -1200 ) N ;
+    - la_data_out[28] + NET la_data_out[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1131830 -1200 ) N ;
+    - la_data_out[29] + NET la_data_out[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1149310 -1200 ) N ;
+    - la_data_out[2] + NET la_data_out[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 670910 -1200 ) N ;
+    - la_data_out[30] + NET la_data_out[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1167250 -1200 ) N ;
+    - la_data_out[31] + NET la_data_out[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1185190 -1200 ) N ;
+    - la_data_out[32] + NET la_data_out[32] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1202670 -1200 ) N ;
+    - la_data_out[33] + NET la_data_out[33] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1220610 -1200 ) N ;
+    - la_data_out[34] + NET la_data_out[34] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1238090 -1200 ) N ;
+    - la_data_out[35] + NET la_data_out[35] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1256030 -1200 ) N ;
+    - la_data_out[36] + NET la_data_out[36] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1273510 -1200 ) N ;
+    - la_data_out[37] + NET la_data_out[37] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1291450 -1200 ) N ;
+    - la_data_out[38] + NET la_data_out[38] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1308930 -1200 ) N ;
+    - la_data_out[39] + NET la_data_out[39] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1326870 -1200 ) N ;
+    - la_data_out[3] + NET la_data_out[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 688390 -1200 ) N ;
+    - la_data_out[40] + NET la_data_out[40] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1344350 -1200 ) N ;
+    - la_data_out[41] + NET la_data_out[41] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1362290 -1200 ) N ;
+    - la_data_out[42] + NET la_data_out[42] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1380230 -1200 ) N ;
+    - la_data_out[43] + NET la_data_out[43] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1397710 -1200 ) N ;
+    - la_data_out[44] + NET la_data_out[44] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1415650 -1200 ) N ;
+    - la_data_out[45] + NET la_data_out[45] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1433130 -1200 ) N ;
+    - la_data_out[46] + NET la_data_out[46] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1451070 -1200 ) N ;
+    - la_data_out[47] + NET la_data_out[47] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1468550 -1200 ) N ;
+    - la_data_out[48] + NET la_data_out[48] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1486490 -1200 ) N ;
+    - la_data_out[49] + NET la_data_out[49] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1503970 -1200 ) N ;
+    - la_data_out[4] + NET la_data_out[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 706330 -1200 ) N ;
+    - la_data_out[50] + NET la_data_out[50] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1521910 -1200 ) N ;
+    - la_data_out[51] + NET la_data_out[51] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1539850 -1200 ) N ;
+    - la_data_out[52] + NET la_data_out[52] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1557330 -1200 ) N ;
+    - la_data_out[53] + NET la_data_out[53] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1575270 -1200 ) N ;
+    - la_data_out[54] + NET la_data_out[54] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1592750 -1200 ) N ;
+    - la_data_out[55] + NET la_data_out[55] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1610690 -1200 ) N ;
+    - la_data_out[56] + NET la_data_out[56] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1628170 -1200 ) N ;
+    - la_data_out[57] + NET la_data_out[57] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1646110 -1200 ) N ;
+    - la_data_out[58] + NET la_data_out[58] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1663590 -1200 ) N ;
+    - la_data_out[59] + NET la_data_out[59] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1681530 -1200 ) N ;
+    - la_data_out[5] + NET la_data_out[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 723810 -1200 ) N ;
+    - la_data_out[60] + NET la_data_out[60] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1699470 -1200 ) N ;
+    - la_data_out[61] + NET la_data_out[61] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1716950 -1200 ) N ;
+    - la_data_out[62] + NET la_data_out[62] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1734890 -1200 ) N ;
+    - la_data_out[63] + NET la_data_out[63] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1752370 -1200 ) N ;
+    - la_data_out[64] + NET la_data_out[64] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1770310 -1200 ) N ;
+    - la_data_out[65] + NET la_data_out[65] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1787790 -1200 ) N ;
+    - la_data_out[66] + NET la_data_out[66] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1805730 -1200 ) N ;
+    - la_data_out[67] + NET la_data_out[67] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1823210 -1200 ) N ;
+    - la_data_out[68] + NET la_data_out[68] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1841150 -1200 ) N ;
+    - la_data_out[69] + NET la_data_out[69] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1858630 -1200 ) N ;
+    - la_data_out[6] + NET la_data_out[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 741750 -1200 ) N ;
+    - la_data_out[70] + NET la_data_out[70] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1876570 -1200 ) N ;
+    - la_data_out[71] + NET la_data_out[71] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1894510 -1200 ) N ;
+    - la_data_out[72] + NET la_data_out[72] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1911990 -1200 ) N ;
+    - la_data_out[73] + NET la_data_out[73] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1929930 -1200 ) N ;
+    - la_data_out[74] + NET la_data_out[74] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1947410 -1200 ) N ;
+    - la_data_out[75] + NET la_data_out[75] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1965350 -1200 ) N ;
+    - la_data_out[76] + NET la_data_out[76] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1982830 -1200 ) N ;
+    - la_data_out[77] + NET la_data_out[77] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2000770 -1200 ) N ;
+    - la_data_out[78] + NET la_data_out[78] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2018250 -1200 ) N ;
+    - la_data_out[79] + NET la_data_out[79] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2036190 -1200 ) N ;
+    - la_data_out[7] + NET la_data_out[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 759230 -1200 ) N ;
+    - la_data_out[80] + NET la_data_out[80] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2054130 -1200 ) N ;
+    - la_data_out[81] + NET la_data_out[81] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2071610 -1200 ) N ;
+    - la_data_out[82] + NET la_data_out[82] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2089550 -1200 ) N ;
+    - la_data_out[83] + NET la_data_out[83] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2107030 -1200 ) N ;
+    - la_data_out[84] + NET la_data_out[84] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2124970 -1200 ) N ;
+    - la_data_out[85] + NET la_data_out[85] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2142450 -1200 ) N ;
+    - la_data_out[86] + NET la_data_out[86] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2160390 -1200 ) N ;
+    - la_data_out[87] + NET la_data_out[87] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2177870 -1200 ) N ;
+    - la_data_out[88] + NET la_data_out[88] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2195810 -1200 ) N ;
+    - la_data_out[89] + NET la_data_out[89] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2213290 -1200 ) N ;
+    - la_data_out[8] + NET la_data_out[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 777170 -1200 ) N ;
+    - la_data_out[90] + NET la_data_out[90] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2231230 -1200 ) N ;
+    - la_data_out[91] + NET la_data_out[91] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2249170 -1200 ) N ;
+    - la_data_out[92] + NET la_data_out[92] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2266650 -1200 ) N ;
+    - la_data_out[93] + NET la_data_out[93] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2284590 -1200 ) N ;
+    - la_data_out[94] + NET la_data_out[94] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2302070 -1200 ) N ;
+    - la_data_out[95] + NET la_data_out[95] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2320010 -1200 ) N ;
+    - la_data_out[96] + NET la_data_out[96] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2337490 -1200 ) N ;
+    - la_data_out[97] + NET la_data_out[97] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2355430 -1200 ) N ;
+    - la_data_out[98] + NET la_data_out[98] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2372910 -1200 ) N ;
+    - la_data_out[99] + NET la_data_out[99] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2390850 -1200 ) N ;
+    - la_data_out[9] + NET la_data_out[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 794650 -1200 ) N ;
+    - la_oenb[0] + NET la_oenb[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 641010 -1200 ) N ;
+    - la_oenb[100] + NET la_oenb[100] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2414310 -1200 ) N ;
+    - la_oenb[101] + NET la_oenb[101] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2432250 -1200 ) N ;
+    - la_oenb[102] + NET la_oenb[102] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2449730 -1200 ) N ;
+    - la_oenb[103] + NET la_oenb[103] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2467670 -1200 ) N ;
+    - la_oenb[104] + NET la_oenb[104] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2485610 -1200 ) N ;
+    - la_oenb[105] + NET la_oenb[105] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2503090 -1200 ) N ;
+    - la_oenb[106] + NET la_oenb[106] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2521030 -1200 ) N ;
+    - la_oenb[107] + NET la_oenb[107] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2538510 -1200 ) N ;
+    - la_oenb[108] + NET la_oenb[108] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2556450 -1200 ) N ;
+    - la_oenb[109] + NET la_oenb[109] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2573930 -1200 ) N ;
+    - la_oenb[10] + NET la_oenb[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 818570 -1200 ) N ;
+    - la_oenb[110] + NET la_oenb[110] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2591870 -1200 ) N ;
+    - la_oenb[111] + NET la_oenb[111] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2609350 -1200 ) N ;
+    - la_oenb[112] + NET la_oenb[112] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2627290 -1200 ) N ;
+    - la_oenb[113] + NET la_oenb[113] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2645230 -1200 ) N ;
+    - la_oenb[114] + NET la_oenb[114] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2662710 -1200 ) N ;
+    - la_oenb[115] + NET la_oenb[115] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2680650 -1200 ) N ;
+    - la_oenb[116] + NET la_oenb[116] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2698130 -1200 ) N ;
+    - la_oenb[117] + NET la_oenb[117] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2716070 -1200 ) N ;
+    - la_oenb[118] + NET la_oenb[118] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2733550 -1200 ) N ;
+    - la_oenb[119] + NET la_oenb[119] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2751490 -1200 ) N ;
+    - la_oenb[11] + NET la_oenb[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 836050 -1200 ) N ;
+    - la_oenb[120] + NET la_oenb[120] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2768970 -1200 ) N ;
+    - la_oenb[121] + NET la_oenb[121] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2786910 -1200 ) N ;
+    - la_oenb[122] + NET la_oenb[122] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2804390 -1200 ) N ;
+    - la_oenb[123] + NET la_oenb[123] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2822330 -1200 ) N ;
+    - la_oenb[124] + NET la_oenb[124] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2840270 -1200 ) N ;
+    - la_oenb[125] + NET la_oenb[125] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2857750 -1200 ) N ;
+    - la_oenb[126] + NET la_oenb[126] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2875690 -1200 ) N ;
+    - la_oenb[127] + NET la_oenb[127] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2893170 -1200 ) N ;
+    - la_oenb[12] + NET la_oenb[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 853990 -1200 ) N ;
+    - la_oenb[13] + NET la_oenb[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 871470 -1200 ) N ;
+    - la_oenb[14] + NET la_oenb[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 889410 -1200 ) N ;
+    - la_oenb[15] + NET la_oenb[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 907350 -1200 ) N ;
+    - la_oenb[16] + NET la_oenb[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 924830 -1200 ) N ;
+    - la_oenb[17] + NET la_oenb[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 942770 -1200 ) N ;
+    - la_oenb[18] + NET la_oenb[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 960250 -1200 ) N ;
+    - la_oenb[19] + NET la_oenb[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 978190 -1200 ) N ;
+    - la_oenb[1] + NET la_oenb[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 658950 -1200 ) N ;
+    - la_oenb[20] + NET la_oenb[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 995670 -1200 ) N ;
+    - la_oenb[21] + NET la_oenb[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1013610 -1200 ) N ;
+    - la_oenb[22] + NET la_oenb[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1031090 -1200 ) N ;
+    - la_oenb[23] + NET la_oenb[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1049030 -1200 ) N ;
+    - la_oenb[24] + NET la_oenb[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1066970 -1200 ) N ;
+    - la_oenb[25] + NET la_oenb[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1084450 -1200 ) N ;
+    - la_oenb[26] + NET la_oenb[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1102390 -1200 ) N ;
+    - la_oenb[27] + NET la_oenb[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1119870 -1200 ) N ;
+    - la_oenb[28] + NET la_oenb[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1137810 -1200 ) N ;
+    - la_oenb[29] + NET la_oenb[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1155290 -1200 ) N ;
+    - la_oenb[2] + NET la_oenb[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 676430 -1200 ) N ;
+    - la_oenb[30] + NET la_oenb[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1173230 -1200 ) N ;
+    - la_oenb[31] + NET la_oenb[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1190710 -1200 ) N ;
+    - la_oenb[32] + NET la_oenb[32] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1208650 -1200 ) N ;
+    - la_oenb[33] + NET la_oenb[33] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1226130 -1200 ) N ;
+    - la_oenb[34] + NET la_oenb[34] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1244070 -1200 ) N ;
+    - la_oenb[35] + NET la_oenb[35] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1262010 -1200 ) N ;
+    - la_oenb[36] + NET la_oenb[36] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1279490 -1200 ) N ;
+    - la_oenb[37] + NET la_oenb[37] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1297430 -1200 ) N ;
+    - la_oenb[38] + NET la_oenb[38] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1314910 -1200 ) N ;
+    - la_oenb[39] + NET la_oenb[39] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1332850 -1200 ) N ;
+    - la_oenb[3] + NET la_oenb[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 694370 -1200 ) N ;
+    - la_oenb[40] + NET la_oenb[40] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1350330 -1200 ) N ;
+    - la_oenb[41] + NET la_oenb[41] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1368270 -1200 ) N ;
+    - la_oenb[42] + NET la_oenb[42] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1385750 -1200 ) N ;
+    - la_oenb[43] + NET la_oenb[43] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1403690 -1200 ) N ;
+    - la_oenb[44] + NET la_oenb[44] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1421630 -1200 ) N ;
+    - la_oenb[45] + NET la_oenb[45] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1439110 -1200 ) N ;
+    - la_oenb[46] + NET la_oenb[46] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1457050 -1200 ) N ;
+    - la_oenb[47] + NET la_oenb[47] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1474530 -1200 ) N ;
+    - la_oenb[48] + NET la_oenb[48] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1492470 -1200 ) N ;
+    - la_oenb[49] + NET la_oenb[49] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1509950 -1200 ) N ;
+    - la_oenb[4] + NET la_oenb[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 712310 -1200 ) N ;
+    - la_oenb[50] + NET la_oenb[50] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1527890 -1200 ) N ;
+    - la_oenb[51] + NET la_oenb[51] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1545370 -1200 ) N ;
+    - la_oenb[52] + NET la_oenb[52] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1563310 -1200 ) N ;
+    - la_oenb[53] + NET la_oenb[53] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1581250 -1200 ) N ;
+    - la_oenb[54] + NET la_oenb[54] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1598730 -1200 ) N ;
+    - la_oenb[55] + NET la_oenb[55] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1616670 -1200 ) N ;
+    - la_oenb[56] + NET la_oenb[56] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1634150 -1200 ) N ;
+    - la_oenb[57] + NET la_oenb[57] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1652090 -1200 ) N ;
+    - la_oenb[58] + NET la_oenb[58] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1669570 -1200 ) N ;
+    - la_oenb[59] + NET la_oenb[59] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1687510 -1200 ) N ;
+    - la_oenb[5] + NET la_oenb[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 729790 -1200 ) N ;
+    - la_oenb[60] + NET la_oenb[60] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1704990 -1200 ) N ;
+    - la_oenb[61] + NET la_oenb[61] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1722930 -1200 ) N ;
+    - la_oenb[62] + NET la_oenb[62] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1740410 -1200 ) N ;
+    - la_oenb[63] + NET la_oenb[63] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1758350 -1200 ) N ;
+    - la_oenb[64] + NET la_oenb[64] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1776290 -1200 ) N ;
+    - la_oenb[65] + NET la_oenb[65] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1793770 -1200 ) N ;
+    - la_oenb[66] + NET la_oenb[66] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1811710 -1200 ) N ;
+    - la_oenb[67] + NET la_oenb[67] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1829190 -1200 ) N ;
+    - la_oenb[68] + NET la_oenb[68] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1847130 -1200 ) N ;
+    - la_oenb[69] + NET la_oenb[69] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1864610 -1200 ) N ;
+    - la_oenb[6] + NET la_oenb[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 747730 -1200 ) N ;
+    - la_oenb[70] + NET la_oenb[70] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1882550 -1200 ) N ;
+    - la_oenb[71] + NET la_oenb[71] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1900030 -1200 ) N ;
+    - la_oenb[72] + NET la_oenb[72] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1917970 -1200 ) N ;
+    - la_oenb[73] + NET la_oenb[73] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1935910 -1200 ) N ;
+    - la_oenb[74] + NET la_oenb[74] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1953390 -1200 ) N ;
+    - la_oenb[75] + NET la_oenb[75] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1971330 -1200 ) N ;
+    - la_oenb[76] + NET la_oenb[76] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 1988810 -1200 ) N ;
+    - la_oenb[77] + NET la_oenb[77] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2006750 -1200 ) N ;
+    - la_oenb[78] + NET la_oenb[78] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2024230 -1200 ) N ;
+    - la_oenb[79] + NET la_oenb[79] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2042170 -1200 ) N ;
+    - la_oenb[7] + NET la_oenb[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 765210 -1200 ) N ;
+    - la_oenb[80] + NET la_oenb[80] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2059650 -1200 ) N ;
+    - la_oenb[81] + NET la_oenb[81] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2077590 -1200 ) N ;
+    - la_oenb[82] + NET la_oenb[82] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2095070 -1200 ) N ;
+    - la_oenb[83] + NET la_oenb[83] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2113010 -1200 ) N ;
+    - la_oenb[84] + NET la_oenb[84] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2130950 -1200 ) N ;
+    - la_oenb[85] + NET la_oenb[85] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2148430 -1200 ) N ;
+    - la_oenb[86] + NET la_oenb[86] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2166370 -1200 ) N ;
+    - la_oenb[87] + NET la_oenb[87] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2183850 -1200 ) N ;
+    - la_oenb[88] + NET la_oenb[88] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2201790 -1200 ) N ;
+    - la_oenb[89] + NET la_oenb[89] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2219270 -1200 ) N ;
+    - la_oenb[8] + NET la_oenb[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 783150 -1200 ) N ;
+    - la_oenb[90] + NET la_oenb[90] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2237210 -1200 ) N ;
+    - la_oenb[91] + NET la_oenb[91] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2254690 -1200 ) N ;
+    - la_oenb[92] + NET la_oenb[92] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2272630 -1200 ) N ;
+    - la_oenb[93] + NET la_oenb[93] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2290570 -1200 ) N ;
+    - la_oenb[94] + NET la_oenb[94] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2308050 -1200 ) N ;
+    - la_oenb[95] + NET la_oenb[95] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2325990 -1200 ) N ;
+    - la_oenb[96] + NET la_oenb[96] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2343470 -1200 ) N ;
+    - la_oenb[97] + NET la_oenb[97] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2361410 -1200 ) N ;
+    - la_oenb[98] + NET la_oenb[98] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2378890 -1200 ) N ;
+    - la_oenb[99] + NET la_oenb[99] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2396830 -1200 ) N ;
+    - la_oenb[9] + NET la_oenb[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 800630 -1200 ) N ;
+    - user_clock2 + NET user_clock2 + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2899150 -1200 ) N ;
+    - user_irq[0] + NET user_irq[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2905130 -1200 ) N ;
+    - user_irq[1] + NET user_irq[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2911110 -1200 ) N ;
+    - user_irq[2] + NET user_irq[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2917090 -1200 ) N ;
+    - vccd1 + NET vccd1 + SPECIAL + DIRECTION INPUT + USE POWER
+      + PORT
+        + LAYER met4 ( -1550 -1769310 ) ( 1550 1769310 )
+        + LAYER met4 ( -181550 -1769310 ) ( -178450 1769310 )
+        + LAYER met4 ( -361550 -1769310 ) ( -358450 1769310 )
+        + LAYER met4 ( -541550 -1769310 ) ( -538450 1769310 )
+        + LAYER met4 ( -721550 -1769310 ) ( -718450 1769310 )
+        + LAYER met4 ( -901550 540160 ) ( -898450 1769310 )
+        + LAYER met4 ( -1081550 540160 ) ( -1078450 1769310 )
+        + LAYER met4 ( -1261550 540160 ) ( -1258450 1769310 )
+        + LAYER met4 ( -1441550 540160 ) ( -1438450 1769310 )
+        + LAYER met4 ( -1621550 540160 ) ( -1618450 1769310 )
+        + LAYER met4 ( -1801550 -1769310 ) ( -1798450 1769310 )
+        + LAYER met4 ( -1981550 -1769310 ) ( -1978450 1769310 )
+        + LAYER met4 ( -2161550 -1769310 ) ( -2158450 1769310 )
+        + LAYER met4 ( -2341550 -1769310 ) ( -2338450 1769310 )
+        + LAYER met4 ( -2521550 -1769310 ) ( -2518450 1769310 )
+        + LAYER met4 ( -2701550 -1769310 ) ( -2698450 1769310 )
+        + LAYER met4 ( -2881550 -1769310 ) ( -2878450 1769310 )
+        + LAYER met4 ( 36030 -1764510 ) ( 39130 1764510 )
+        + LAYER met4 ( -2900550 -1764510 ) ( -2897450 1764510 )
+        + LAYER met4 ( -901550 -1769310 ) ( -898450 -79840 )
+        + LAYER met4 ( -1081550 -1769310 ) ( -1078450 -79840 )
+        + LAYER met4 ( -1261550 -1769310 ) ( -1258450 -79840 )
+        + LAYER met4 ( -1441550 -1769310 ) ( -1438450 -79840 )
+        + LAYER met4 ( -1621550 -1769310 ) ( -1618450 -79840 )
+        + LAYER met5 ( -2900550 1761410 ) ( 39130 1764510 )
+        + LAYER met5 ( -2905350 1674490 ) ( 43930 1677590 )
+        + LAYER met5 ( -2905350 1494490 ) ( 43930 1497590 )
+        + LAYER met5 ( -2905350 1314490 ) ( 43930 1317590 )
+        + LAYER met5 ( -2905350 1134490 ) ( 43930 1137590 )
+        + LAYER met5 ( -2905350 954490 ) ( 43930 957590 )
+        + LAYER met5 ( -2905350 774490 ) ( 43930 777590 )
+        + LAYER met5 ( -2905350 594490 ) ( 43930 597590 )
+        + LAYER met5 ( -2905350 414490 ) ( 43930 417590 )
+        + LAYER met5 ( -2905350 234490 ) ( 43930 237590 )
+        + LAYER met5 ( -2905350 54490 ) ( 43930 57590 )
+        + LAYER met5 ( -2905350 -125510 ) ( 43930 -122410 )
+        + LAYER met5 ( -2905350 -305510 ) ( 43930 -302410 )
+        + LAYER met5 ( -2905350 -485510 ) ( 43930 -482410 )
+        + LAYER met5 ( -2905350 -665510 ) ( 43930 -662410 )
+        + LAYER met5 ( -2905350 -845510 ) ( 43930 -842410 )
+        + LAYER met5 ( -2905350 -1025510 ) ( 43930 -1022410 )
+        + LAYER met5 ( -2905350 -1205510 ) ( 43930 -1202410 )
+        + LAYER met5 ( -2905350 -1385510 ) ( 43930 -1382410 )
+        + LAYER met5 ( -2905350 -1565510 ) ( 43930 -1562410 )
+        + LAYER met5 ( -2905350 -1745510 ) ( 43930 -1742410 )
+        + LAYER met5 ( -2900550 -1764510 ) ( 39130 -1761410 )
+        + FIXED ( 2890520 1759840 ) N ;
+    - vccd2 + NET vccd2 + SPECIAL + DIRECTION INPUT + USE POWER
+      + PORT
+        + LAYER met4 ( -1550 -1778910 ) ( 1550 1778910 )
+        + LAYER met4 ( -181550 -1778910 ) ( -178450 1778910 )
+        + LAYER met4 ( -361550 -1778910 ) ( -358450 1778910 )
+        + LAYER met4 ( -541550 -1778910 ) ( -538450 1778910 )
+        + LAYER met4 ( -721550 -1778910 ) ( -718450 1778910 )
+        + LAYER met4 ( -901550 540160 ) ( -898450 1778910 )
+        + LAYER met4 ( -1081550 540160 ) ( -1078450 1778910 )
+        + LAYER met4 ( -1261550 540160 ) ( -1258450 1778910 )
+        + LAYER met4 ( -1441550 540160 ) ( -1438450 1778910 )
+        + LAYER met4 ( -1621550 540160 ) ( -1618450 1778910 )
+        + LAYER met4 ( -1801550 -1778910 ) ( -1798450 1778910 )
+        + LAYER met4 ( -1981550 -1778910 ) ( -1978450 1778910 )
+        + LAYER met4 ( -2161550 -1778910 ) ( -2158450 1778910 )
+        + LAYER met4 ( -2341550 -1778910 ) ( -2338450 1778910 )
+        + LAYER met4 ( -2521550 -1778910 ) ( -2518450 1778910 )
+        + LAYER met4 ( -2701550 -1778910 ) ( -2698450 1778910 )
+        + LAYER met4 ( -2881550 -1778910 ) ( -2878450 1778910 )
+        + LAYER met4 ( 27030 -1774110 ) ( 30130 1774110 )
+        + LAYER met4 ( -2928750 -1774110 ) ( -2925650 1774110 )
+        + LAYER met4 ( -901550 -1778910 ) ( -898450 -79840 )
+        + LAYER met4 ( -1081550 -1778910 ) ( -1078450 -79840 )
+        + LAYER met4 ( -1261550 -1778910 ) ( -1258450 -79840 )
+        + LAYER met4 ( -1441550 -1778910 ) ( -1438450 -79840 )
+        + LAYER met4 ( -1621550 -1778910 ) ( -1618450 -79840 )
+        + LAYER met5 ( -2928750 1771010 ) ( 30130 1774110 )
+        + LAYER met5 ( -2933550 1693090 ) ( 34930 1696190 )
+        + LAYER met5 ( -2933550 1513090 ) ( 34930 1516190 )
+        + LAYER met5 ( -2933550 1333090 ) ( 34930 1336190 )
+        + LAYER met5 ( -2933550 1153090 ) ( 34930 1156190 )
+        + LAYER met5 ( -2933550 973090 ) ( 34930 976190 )
+        + LAYER met5 ( -2933550 793090 ) ( 34930 796190 )
+        + LAYER met5 ( -2933550 613090 ) ( 34930 616190 )
+        + LAYER met5 ( -2933550 433090 ) ( 34930 436190 )
+        + LAYER met5 ( -2933550 253090 ) ( 34930 256190 )
+        + LAYER met5 ( -2933550 73090 ) ( 34930 76190 )
+        + LAYER met5 ( -2933550 -106910 ) ( 34930 -103810 )
+        + LAYER met5 ( -2933550 -286910 ) ( 34930 -283810 )
+        + LAYER met5 ( -2933550 -466910 ) ( 34930 -463810 )
+        + LAYER met5 ( -2933550 -646910 ) ( 34930 -643810 )
+        + LAYER met5 ( -2933550 -826910 ) ( 34930 -823810 )
+        + LAYER met5 ( -2933550 -1006910 ) ( 34930 -1003810 )
+        + LAYER met5 ( -2933550 -1186910 ) ( 34930 -1183810 )
+        + LAYER met5 ( -2933550 -1366910 ) ( 34930 -1363810 )
+        + LAYER met5 ( -2933550 -1546910 ) ( 34930 -1543810 )
+        + LAYER met5 ( -2933550 -1726910 ) ( 34930 -1723810 )
+        + LAYER met5 ( -2928750 -1774110 ) ( 30130 -1771010 )
+        + FIXED ( 2909120 1759840 ) N ;
+    - vdda1 + NET vdda1 + SPECIAL + DIRECTION INPUT + USE POWER
+      + PORT
+        + LAYER met4 ( -1550 -1788510 ) ( 1550 1788510 )
+        + LAYER met4 ( -181550 -1788510 ) ( -178450 1788510 )
+        + LAYER met4 ( -361550 -1788510 ) ( -358450 1788510 )
+        + LAYER met4 ( -541550 -1788510 ) ( -538450 1788510 )
+        + LAYER met4 ( -721550 540160 ) ( -718450 1788510 )
+        + LAYER met4 ( -901550 540160 ) ( -898450 1788510 )
+        + LAYER met4 ( -1081550 540160 ) ( -1078450 1788510 )
+        + LAYER met4 ( -1261550 540160 ) ( -1258450 1788510 )
+        + LAYER met4 ( -1441550 540160 ) ( -1438450 1788510 )
+        + LAYER met4 ( -1621550 -1788510 ) ( -1618450 1788510 )
+        + LAYER met4 ( -1801550 -1788510 ) ( -1798450 1788510 )
+        + LAYER met4 ( -1981550 -1788510 ) ( -1978450 1788510 )
+        + LAYER met4 ( -2161550 -1788510 ) ( -2158450 1788510 )
+        + LAYER met4 ( -2341550 -1788510 ) ( -2338450 1788510 )
+        + LAYER met4 ( -2521550 -1788510 ) ( -2518450 1788510 )
+        + LAYER met4 ( -2701550 -1788510 ) ( -2698450 1788510 )
+        + LAYER met4 ( 198030 -1783710 ) ( 201130 1783710 )
+        + LAYER met4 ( -2776950 -1783710 ) ( -2773850 1783710 )
+        + LAYER met4 ( -721550 -1788510 ) ( -718450 -79840 )
+        + LAYER met4 ( -901550 -1788510 ) ( -898450 -79840 )
+        + LAYER met4 ( -1081550 -1788510 ) ( -1078450 -79840 )
+        + LAYER met4 ( -1261550 -1788510 ) ( -1258450 -79840 )
+        + LAYER met4 ( -1441550 -1788510 ) ( -1438450 -79840 )
+        + LAYER met5 ( -2776950 1780610 ) ( 201130 1783710 )
+        + LAYER met5 ( -2781750 1711690 ) ( 205930 1714790 )
+        + LAYER met5 ( -2781750 1531690 ) ( 205930 1534790 )
+        + LAYER met5 ( -2781750 1351690 ) ( 205930 1354790 )
+        + LAYER met5 ( -2781750 1171690 ) ( 205930 1174790 )
+        + LAYER met5 ( -2781750 991690 ) ( 205930 994790 )
+        + LAYER met5 ( -2781750 811690 ) ( 205930 814790 )
+        + LAYER met5 ( -2781750 631690 ) ( 205930 634790 )
+        + LAYER met5 ( -2781750 451690 ) ( 205930 454790 )
+        + LAYER met5 ( -2781750 271690 ) ( 205930 274790 )
+        + LAYER met5 ( -2781750 91690 ) ( 205930 94790 )
+        + LAYER met5 ( -2781750 -88310 ) ( 205930 -85210 )
+        + LAYER met5 ( -2781750 -268310 ) ( 205930 -265210 )
+        + LAYER met5 ( -2781750 -448310 ) ( 205930 -445210 )
+        + LAYER met5 ( -2781750 -628310 ) ( 205930 -625210 )
+        + LAYER met5 ( -2781750 -808310 ) ( 205930 -805210 )
+        + LAYER met5 ( -2781750 -988310 ) ( 205930 -985210 )
+        + LAYER met5 ( -2781750 -1168310 ) ( 205930 -1165210 )
+        + LAYER met5 ( -2781750 -1348310 ) ( 205930 -1345210 )
+        + LAYER met5 ( -2781750 -1528310 ) ( 205930 -1525210 )
+        + LAYER met5 ( -2781750 -1708310 ) ( 205930 -1705210 )
+        + LAYER met5 ( -2776950 -1783710 ) ( 201130 -1780610 )
+        + FIXED ( 2747720 1759840 ) N ;
+    - vdda2 + NET vdda2 + SPECIAL + DIRECTION INPUT + USE POWER
+      + PORT
+        + LAYER met4 ( -1550 -1798110 ) ( 1550 1798110 )
+        + LAYER met4 ( -181550 -1798110 ) ( -178450 1798110 )
+        + LAYER met4 ( -361550 -1798110 ) ( -358450 1798110 )
+        + LAYER met4 ( -541550 -1798110 ) ( -538450 1798110 )
+        + LAYER met4 ( -721550 540160 ) ( -718450 1798110 )
+        + LAYER met4 ( -901550 540160 ) ( -898450 1798110 )
+        + LAYER met4 ( -1081550 540160 ) ( -1078450 1798110 )
+        + LAYER met4 ( -1261550 540160 ) ( -1258450 1798110 )
+        + LAYER met4 ( -1441550 540160 ) ( -1438450 1798110 )
+        + LAYER met4 ( -1621550 -1798110 ) ( -1618450 1798110 )
+        + LAYER met4 ( -1801550 -1798110 ) ( -1798450 1798110 )
+        + LAYER met4 ( -1981550 -1798110 ) ( -1978450 1798110 )
+        + LAYER met4 ( -2161550 -1798110 ) ( -2158450 1798110 )
+        + LAYER met4 ( -2341550 -1798110 ) ( -2338450 1798110 )
+        + LAYER met4 ( -2521550 -1798110 ) ( -2518450 1798110 )
+        + LAYER met4 ( -2701550 -1798110 ) ( -2698450 1798110 )
+        + LAYER met4 ( 189030 -1793310 ) ( 192130 1793310 )
+        + LAYER met4 ( -2805150 -1793310 ) ( -2802050 1793310 )
+        + LAYER met4 ( -721550 -1798110 ) ( -718450 -79840 )
+        + LAYER met4 ( -901550 -1798110 ) ( -898450 -79840 )
+        + LAYER met4 ( -1081550 -1798110 ) ( -1078450 -79840 )
+        + LAYER met4 ( -1261550 -1798110 ) ( -1258450 -79840 )
+        + LAYER met4 ( -1441550 -1798110 ) ( -1438450 -79840 )
+        + LAYER met5 ( -2805150 1790210 ) ( 192130 1793310 )
+        + LAYER met5 ( -2809950 1730290 ) ( 196930 1733390 )
+        + LAYER met5 ( -2809950 1550290 ) ( 196930 1553390 )
+        + LAYER met5 ( -2809950 1370290 ) ( 196930 1373390 )
+        + LAYER met5 ( -2809950 1190290 ) ( 196930 1193390 )
+        + LAYER met5 ( -2809950 1010290 ) ( 196930 1013390 )
+        + LAYER met5 ( -2809950 830290 ) ( 196930 833390 )
+        + LAYER met5 ( -2809950 650290 ) ( 196930 653390 )
+        + LAYER met5 ( -2809950 470290 ) ( 196930 473390 )
+        + LAYER met5 ( -2809950 290290 ) ( 196930 293390 )
+        + LAYER met5 ( -2809950 110290 ) ( 196930 113390 )
+        + LAYER met5 ( -2809950 -69710 ) ( 196930 -66610 )
+        + LAYER met5 ( -2809950 -249710 ) ( 196930 -246610 )
+        + LAYER met5 ( -2809950 -429710 ) ( 196930 -426610 )
+        + LAYER met5 ( -2809950 -609710 ) ( 196930 -606610 )
+        + LAYER met5 ( -2809950 -789710 ) ( 196930 -786610 )
+        + LAYER met5 ( -2809950 -969710 ) ( 196930 -966610 )
+        + LAYER met5 ( -2809950 -1149710 ) ( 196930 -1146610 )
+        + LAYER met5 ( -2809950 -1329710 ) ( 196930 -1326610 )
+        + LAYER met5 ( -2809950 -1509710 ) ( 196930 -1506610 )
+        + LAYER met5 ( -2809950 -1689710 ) ( 196930 -1686610 )
+        + LAYER met5 ( -2805150 -1793310 ) ( 192130 -1790210 )
+        + FIXED ( 2766320 1759840 ) N ;
+    - vssa1 + NET vssa1 + SPECIAL + DIRECTION INPUT + USE GROUND
+      + PORT
+        + LAYER met4 ( -1550 -1788510 ) ( 1550 1788510 )
+        + LAYER met4 ( -115930 -1788510 ) ( -112830 1788510 )
+        + LAYER met4 ( -295930 -1788510 ) ( -292830 1788510 )
+        + LAYER met4 ( -475930 -1788510 ) ( -472830 1788510 )
+        + LAYER met4 ( -655930 -1788510 ) ( -652830 1788510 )
+        + LAYER met4 ( -835930 -1788510 ) ( -832830 1788510 )
+        + LAYER met4 ( -1015930 540160 ) ( -1012830 1788510 )
+        + LAYER met4 ( -1195930 540160 ) ( -1192830 1788510 )
+        + LAYER met4 ( -1375930 540160 ) ( -1372830 1788510 )
+        + LAYER met4 ( -1555930 540160 ) ( -1552830 1788510 )
+        + LAYER met4 ( -1735930 540160 ) ( -1732830 1788510 )
+        + LAYER met4 ( -1915930 -1788510 ) ( -1912830 1788510 )
+        + LAYER met4 ( -2095930 -1788510 ) ( -2092830 1788510 )
+        + LAYER met4 ( -2275930 -1788510 ) ( -2272830 1788510 )
+        + LAYER met4 ( -2455930 -1788510 ) ( -2452830 1788510 )
+        + LAYER met4 ( -2635930 -1788510 ) ( -2632830 1788510 )
+        + LAYER met4 ( -2815930 -1788510 ) ( -2812830 1788510 )
+        + LAYER met4 ( -2986130 -1788510 ) ( -2983030 1788510 )
+        + LAYER met4 ( -1015930 -1788510 ) ( -1012830 -79840 )
+        + LAYER met4 ( -1195930 -1788510 ) ( -1192830 -79840 )
+        + LAYER met4 ( -1375930 -1788510 ) ( -1372830 -79840 )
+        + LAYER met4 ( -1555930 -1788510 ) ( -1552830 -79840 )
+        + LAYER met4 ( -1735930 -1788510 ) ( -1732830 -79840 )
+        + LAYER met5 ( -2986130 1785410 ) ( 1550 1788510 )
+        + LAYER met5 ( -2986130 1621690 ) ( 1550 1624790 )
+        + LAYER met5 ( -2986130 1441690 ) ( 1550 1444790 )
+        + LAYER met5 ( -2986130 1261690 ) ( 1550 1264790 )
+        + LAYER met5 ( -2986130 1081690 ) ( 1550 1084790 )
+        + LAYER met5 ( -2986130 901690 ) ( 1550 904790 )
+        + LAYER met5 ( -2986130 721690 ) ( 1550 724790 )
+        + LAYER met5 ( -2986130 541690 ) ( 1550 544790 )
+        + LAYER met5 ( -2986130 361690 ) ( 1550 364790 )
+        + LAYER met5 ( -2986130 181690 ) ( 1550 184790 )
+        + LAYER met5 ( -2986130 1690 ) ( 1550 4790 )
+        + LAYER met5 ( -2986130 -178310 ) ( 1550 -175210 )
+        + LAYER met5 ( -2986130 -358310 ) ( 1550 -355210 )
+        + LAYER met5 ( -2986130 -538310 ) ( 1550 -535210 )
+        + LAYER met5 ( -2986130 -718310 ) ( 1550 -715210 )
+        + LAYER met5 ( -2986130 -898310 ) ( 1550 -895210 )
+        + LAYER met5 ( -2986130 -1078310 ) ( 1550 -1075210 )
+        + LAYER met5 ( -2986130 -1258310 ) ( 1550 -1255210 )
+        + LAYER met5 ( -2986130 -1438310 ) ( 1550 -1435210 )
+        + LAYER met5 ( -2986130 -1618310 ) ( 1550 -1615210 )
+        + LAYER met5 ( -2986130 -1788510 ) ( 1550 -1785410 )
+        + FIXED ( 2952100 1759840 ) N ;
+    - vssa2 + NET vssa2 + SPECIAL + DIRECTION INPUT + USE GROUND
+      + PORT
+        + LAYER met4 ( -1550 -1798110 ) ( 1550 1798110 )
+        + LAYER met4 ( -106930 -1798110 ) ( -103830 1798110 )
+        + LAYER met4 ( -286930 -1798110 ) ( -283830 1798110 )
+        + LAYER met4 ( -466930 -1798110 ) ( -463830 1798110 )
+        + LAYER met4 ( -646930 -1798110 ) ( -643830 1798110 )
+        + LAYER met4 ( -826930 -1798110 ) ( -823830 1798110 )
+        + LAYER met4 ( -1006930 540160 ) ( -1003830 1798110 )
+        + LAYER met4 ( -1186930 540160 ) ( -1183830 1798110 )
+        + LAYER met4 ( -1366930 540160 ) ( -1363830 1798110 )
+        + LAYER met4 ( -1546930 540160 ) ( -1543830 1798110 )
+        + LAYER met4 ( -1726930 540160 ) ( -1723830 1798110 )
+        + LAYER met4 ( -1906930 -1798110 ) ( -1903830 1798110 )
+        + LAYER met4 ( -2086930 -1798110 ) ( -2083830 1798110 )
+        + LAYER met4 ( -2266930 -1798110 ) ( -2263830 1798110 )
+        + LAYER met4 ( -2446930 -1798110 ) ( -2443830 1798110 )
+        + LAYER met4 ( -2626930 -1798110 ) ( -2623830 1798110 )
+        + LAYER met4 ( -2806930 -1798110 ) ( -2803830 1798110 )
+        + LAYER met4 ( -3005330 -1798110 ) ( -3002230 1798110 )
+        + LAYER met4 ( -1006930 -1798110 ) ( -1003830 -79840 )
+        + LAYER met4 ( -1186930 -1798110 ) ( -1183830 -79840 )
+        + LAYER met4 ( -1366930 -1798110 ) ( -1363830 -79840 )
+        + LAYER met4 ( -1546930 -1798110 ) ( -1543830 -79840 )
+        + LAYER met4 ( -1726930 -1798110 ) ( -1723830 -79840 )
+        + LAYER met5 ( -3005330 1795010 ) ( 1550 1798110 )
+        + LAYER met5 ( -3005330 1640290 ) ( 1550 1643390 )
+        + LAYER met5 ( -3005330 1460290 ) ( 1550 1463390 )
+        + LAYER met5 ( -3005330 1280290 ) ( 1550 1283390 )
+        + LAYER met5 ( -3005330 1100290 ) ( 1550 1103390 )
+        + LAYER met5 ( -3005330 920290 ) ( 1550 923390 )
+        + LAYER met5 ( -3005330 740290 ) ( 1550 743390 )
+        + LAYER met5 ( -3005330 560290 ) ( 1550 563390 )
+        + LAYER met5 ( -3005330 380290 ) ( 1550 383390 )
+        + LAYER met5 ( -3005330 200290 ) ( 1550 203390 )
+        + LAYER met5 ( -3005330 20290 ) ( 1550 23390 )
+        + LAYER met5 ( -3005330 -159710 ) ( 1550 -156610 )
+        + LAYER met5 ( -3005330 -339710 ) ( 1550 -336610 )
+        + LAYER met5 ( -3005330 -519710 ) ( 1550 -516610 )
+        + LAYER met5 ( -3005330 -699710 ) ( 1550 -696610 )
+        + LAYER met5 ( -3005330 -879710 ) ( 1550 -876610 )
+        + LAYER met5 ( -3005330 -1059710 ) ( 1550 -1056610 )
+        + LAYER met5 ( -3005330 -1239710 ) ( 1550 -1236610 )
+        + LAYER met5 ( -3005330 -1419710 ) ( 1550 -1416610 )
+        + LAYER met5 ( -3005330 -1599710 ) ( 1550 -1596610 )
+        + LAYER met5 ( -3005330 -1798110 ) ( 1550 -1795010 )
+        + FIXED ( 2961700 1759840 ) N ;
+    - vssd1 + NET vssd1 + SPECIAL + DIRECTION INPUT + USE GROUND
+      + PORT
+        + LAYER met4 ( -1550 -1769310 ) ( 1550 1769310 )
+        + LAYER met4 ( -133930 -1769310 ) ( -130830 1769310 )
+        + LAYER met4 ( -313930 -1769310 ) ( -310830 1769310 )
+        + LAYER met4 ( -493930 -1769310 ) ( -490830 1769310 )
+        + LAYER met4 ( -673930 -1769310 ) ( -670830 1769310 )
+        + LAYER met4 ( -853930 540160 ) ( -850830 1769310 )
+        + LAYER met4 ( -1033930 540160 ) ( -1030830 1769310 )
+        + LAYER met4 ( -1213930 540160 ) ( -1210830 1769310 )
+        + LAYER met4 ( -1393930 540160 ) ( -1390830 1769310 )
+        + LAYER met4 ( -1573930 540160 ) ( -1570830 1769310 )
+        + LAYER met4 ( -1753930 540160 ) ( -1750830 1769310 )
+        + LAYER met4 ( -1933930 -1769310 ) ( -1930830 1769310 )
+        + LAYER met4 ( -2113930 -1769310 ) ( -2110830 1769310 )
+        + LAYER met4 ( -2293930 -1769310 ) ( -2290830 1769310 )
+        + LAYER met4 ( -2473930 -1769310 ) ( -2470830 1769310 )
+        + LAYER met4 ( -2653930 -1769310 ) ( -2650830 1769310 )
+        + LAYER met4 ( -2833930 -1769310 ) ( -2830830 1769310 )
+        + LAYER met4 ( -2947730 -1769310 ) ( -2944630 1769310 )
+        + LAYER met4 ( -853930 -1769310 ) ( -850830 -79840 )
+        + LAYER met4 ( -1033930 -1769310 ) ( -1030830 -79840 )
+        + LAYER met4 ( -1213930 -1769310 ) ( -1210830 -79840 )
+        + LAYER met4 ( -1393930 -1769310 ) ( -1390830 -79840 )
+        + LAYER met4 ( -1573930 -1769310 ) ( -1570830 -79840 )
+        + LAYER met4 ( -1753930 -1769310 ) ( -1750830 -79840 )
+        + LAYER met5 ( -2947730 1766210 ) ( 1550 1769310 )
+        + LAYER met5 ( -2947730 1584490 ) ( 1550 1587590 )
+        + LAYER met5 ( -2947730 1404490 ) ( 1550 1407590 )
+        + LAYER met5 ( -2947730 1224490 ) ( 1550 1227590 )
+        + LAYER met5 ( -2947730 1044490 ) ( 1550 1047590 )
+        + LAYER met5 ( -2947730 864490 ) ( 1550 867590 )
+        + LAYER met5 ( -2947730 684490 ) ( 1550 687590 )
+        + LAYER met5 ( -2947730 504490 ) ( 1550 507590 )
+        + LAYER met5 ( -2947730 324490 ) ( 1550 327590 )
+        + LAYER met5 ( -2947730 144490 ) ( 1550 147590 )
+        + LAYER met5 ( -2947730 -35510 ) ( 1550 -32410 )
+        + LAYER met5 ( -2947730 -215510 ) ( 1550 -212410 )
+        + LAYER met5 ( -2947730 -395510 ) ( 1550 -392410 )
+        + LAYER met5 ( -2947730 -575510 ) ( 1550 -572410 )
+        + LAYER met5 ( -2947730 -755510 ) ( 1550 -752410 )
+        + LAYER met5 ( -2947730 -935510 ) ( 1550 -932410 )
+        + LAYER met5 ( -2947730 -1115510 ) ( 1550 -1112410 )
+        + LAYER met5 ( -2947730 -1295510 ) ( 1550 -1292410 )
+        + LAYER met5 ( -2947730 -1475510 ) ( 1550 -1472410 )
+        + LAYER met5 ( -2947730 -1655510 ) ( 1550 -1652410 )
+        + LAYER met5 ( -2947730 -1769310 ) ( 1550 -1766210 )
+        + FIXED ( 2932900 1759840 ) N ;
+    - vssd2 + NET vssd2 + SPECIAL + DIRECTION INPUT + USE GROUND
+      + PORT
+        + LAYER met4 ( -1550 -1778910 ) ( 1550 1778910 )
+        + LAYER met4 ( -124930 -1778910 ) ( -121830 1778910 )
+        + LAYER met4 ( -304930 -1778910 ) ( -301830 1778910 )
+        + LAYER met4 ( -484930 -1778910 ) ( -481830 1778910 )
+        + LAYER met4 ( -664930 -1778910 ) ( -661830 1778910 )
+        + LAYER met4 ( -844930 -1778910 ) ( -841830 1778910 )
+        + LAYER met4 ( -1024930 540160 ) ( -1021830 1778910 )
+        + LAYER met4 ( -1204930 540160 ) ( -1201830 1778910 )
+        + LAYER met4 ( -1384930 540160 ) ( -1381830 1778910 )
+        + LAYER met4 ( -1564930 540160 ) ( -1561830 1778910 )
+        + LAYER met4 ( -1744930 540160 ) ( -1741830 1778910 )
+        + LAYER met4 ( -1924930 -1778910 ) ( -1921830 1778910 )
+        + LAYER met4 ( -2104930 -1778910 ) ( -2101830 1778910 )
+        + LAYER met4 ( -2284930 -1778910 ) ( -2281830 1778910 )
+        + LAYER met4 ( -2464930 -1778910 ) ( -2461830 1778910 )
+        + LAYER met4 ( -2644930 -1778910 ) ( -2641830 1778910 )
+        + LAYER met4 ( -2824930 -1778910 ) ( -2821830 1778910 )
+        + LAYER met4 ( -2966930 -1778910 ) ( -2963830 1778910 )
+        + LAYER met4 ( -1024930 -1778910 ) ( -1021830 -79840 )
+        + LAYER met4 ( -1204930 -1778910 ) ( -1201830 -79840 )
+        + LAYER met4 ( -1384930 -1778910 ) ( -1381830 -79840 )
+        + LAYER met4 ( -1564930 -1778910 ) ( -1561830 -79840 )
+        + LAYER met4 ( -1744930 -1778910 ) ( -1741830 -79840 )
+        + LAYER met5 ( -2966930 1775810 ) ( 1550 1778910 )
+        + LAYER met5 ( -2966930 1603090 ) ( 1550 1606190 )
+        + LAYER met5 ( -2966930 1423090 ) ( 1550 1426190 )
+        + LAYER met5 ( -2966930 1243090 ) ( 1550 1246190 )
+        + LAYER met5 ( -2966930 1063090 ) ( 1550 1066190 )
+        + LAYER met5 ( -2966930 883090 ) ( 1550 886190 )
+        + LAYER met5 ( -2966930 703090 ) ( 1550 706190 )
+        + LAYER met5 ( -2966930 523090 ) ( 1550 526190 )
+        + LAYER met5 ( -2966930 343090 ) ( 1550 346190 )
+        + LAYER met5 ( -2966930 163090 ) ( 1550 166190 )
+        + LAYER met5 ( -2966930 -16910 ) ( 1550 -13810 )
+        + LAYER met5 ( -2966930 -196910 ) ( 1550 -193810 )
+        + LAYER met5 ( -2966930 -376910 ) ( 1550 -373810 )
+        + LAYER met5 ( -2966930 -556910 ) ( 1550 -553810 )
+        + LAYER met5 ( -2966930 -736910 ) ( 1550 -733810 )
+        + LAYER met5 ( -2966930 -916910 ) ( 1550 -913810 )
+        + LAYER met5 ( -2966930 -1096910 ) ( 1550 -1093810 )
+        + LAYER met5 ( -2966930 -1276910 ) ( 1550 -1273810 )
+        + LAYER met5 ( -2966930 -1456910 ) ( 1550 -1453810 )
+        + LAYER met5 ( -2966930 -1636910 ) ( 1550 -1633810 )
+        + LAYER met5 ( -2966930 -1778910 ) ( 1550 -1775810 )
+        + FIXED ( 2942500 1759840 ) N ;
+    - wb_clk_i + NET wb_clk_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 2990 -1200 ) N ;
+    - wb_rst_i + NET wb_rst_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 8510 -1200 ) N ;
+    - wbs_ack_o + NET wbs_ack_o + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 14490 -1200 ) N ;
+    - wbs_adr_i[0] + NET wbs_adr_i[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 38410 -1200 ) N ;
+    - wbs_adr_i[10] + NET wbs_adr_i[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 239430 -1200 ) N ;
+    - wbs_adr_i[11] + NET wbs_adr_i[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 256910 -1200 ) N ;
+    - wbs_adr_i[12] + NET wbs_adr_i[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 274850 -1200 ) N ;
+    - wbs_adr_i[13] + NET wbs_adr_i[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 292330 -1200 ) N ;
+    - wbs_adr_i[14] + NET wbs_adr_i[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 310270 -1200 ) N ;
+    - wbs_adr_i[15] + NET wbs_adr_i[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 327750 -1200 ) N ;
+    - wbs_adr_i[16] + NET wbs_adr_i[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 345690 -1200 ) N ;
+    - wbs_adr_i[17] + NET wbs_adr_i[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 363170 -1200 ) N ;
+    - wbs_adr_i[18] + NET wbs_adr_i[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 381110 -1200 ) N ;
+    - wbs_adr_i[19] + NET wbs_adr_i[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 398590 -1200 ) N ;
+    - wbs_adr_i[1] + NET wbs_adr_i[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 61870 -1200 ) N ;
+    - wbs_adr_i[20] + NET wbs_adr_i[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 416530 -1200 ) N ;
+    - wbs_adr_i[21] + NET wbs_adr_i[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 434470 -1200 ) N ;
+    - wbs_adr_i[22] + NET wbs_adr_i[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 451950 -1200 ) N ;
+    - wbs_adr_i[23] + NET wbs_adr_i[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 469890 -1200 ) N ;
+    - wbs_adr_i[24] + NET wbs_adr_i[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 487370 -1200 ) N ;
+    - wbs_adr_i[25] + NET wbs_adr_i[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 505310 -1200 ) N ;
+    - wbs_adr_i[26] + NET wbs_adr_i[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 522790 -1200 ) N ;
+    - wbs_adr_i[27] + NET wbs_adr_i[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 540730 -1200 ) N ;
+    - wbs_adr_i[28] + NET wbs_adr_i[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 558210 -1200 ) N ;
+    - wbs_adr_i[29] + NET wbs_adr_i[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 576150 -1200 ) N ;
+    - wbs_adr_i[2] + NET wbs_adr_i[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 85330 -1200 ) N ;
+    - wbs_adr_i[30] + NET wbs_adr_i[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 594090 -1200 ) N ;
+    - wbs_adr_i[31] + NET wbs_adr_i[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 611570 -1200 ) N ;
+    - wbs_adr_i[3] + NET wbs_adr_i[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 109250 -1200 ) N ;
+    - wbs_adr_i[4] + NET wbs_adr_i[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 132710 -1200 ) N ;
+    - wbs_adr_i[5] + NET wbs_adr_i[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 150650 -1200 ) N ;
+    - wbs_adr_i[6] + NET wbs_adr_i[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 168130 -1200 ) N ;
+    - wbs_adr_i[7] + NET wbs_adr_i[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 186070 -1200 ) N ;
+    - wbs_adr_i[8] + NET wbs_adr_i[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 203550 -1200 ) N ;
+    - wbs_adr_i[9] + NET wbs_adr_i[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 221490 -1200 ) N ;
+    - wbs_cyc_i + NET wbs_cyc_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 20470 -1200 ) N ;
+    - wbs_dat_i[0] + NET wbs_dat_i[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 43930 -1200 ) N ;
+    - wbs_dat_i[10] + NET wbs_dat_i[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 244950 -1200 ) N ;
+    - wbs_dat_i[11] + NET wbs_dat_i[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 262890 -1200 ) N ;
+    - wbs_dat_i[12] + NET wbs_dat_i[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 280370 -1200 ) N ;
+    - wbs_dat_i[13] + NET wbs_dat_i[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 298310 -1200 ) N ;
+    - wbs_dat_i[14] + NET wbs_dat_i[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 316250 -1200 ) N ;
+    - wbs_dat_i[15] + NET wbs_dat_i[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 333730 -1200 ) N ;
+    - wbs_dat_i[16] + NET wbs_dat_i[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 351670 -1200 ) N ;
+    - wbs_dat_i[17] + NET wbs_dat_i[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 369150 -1200 ) N ;
+    - wbs_dat_i[18] + NET wbs_dat_i[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 387090 -1200 ) N ;
+    - wbs_dat_i[19] + NET wbs_dat_i[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 404570 -1200 ) N ;
+    - wbs_dat_i[1] + NET wbs_dat_i[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 67850 -1200 ) N ;
+    - wbs_dat_i[20] + NET wbs_dat_i[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 422510 -1200 ) N ;
+    - wbs_dat_i[21] + NET wbs_dat_i[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 439990 -1200 ) N ;
+    - wbs_dat_i[22] + NET wbs_dat_i[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 457930 -1200 ) N ;
+    - wbs_dat_i[23] + NET wbs_dat_i[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 475870 -1200 ) N ;
+    - wbs_dat_i[24] + NET wbs_dat_i[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 493350 -1200 ) N ;
+    - wbs_dat_i[25] + NET wbs_dat_i[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 511290 -1200 ) N ;
+    - wbs_dat_i[26] + NET wbs_dat_i[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 528770 -1200 ) N ;
+    - wbs_dat_i[27] + NET wbs_dat_i[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 546710 -1200 ) N ;
+    - wbs_dat_i[28] + NET wbs_dat_i[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 564190 -1200 ) N ;
+    - wbs_dat_i[29] + NET wbs_dat_i[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 582130 -1200 ) N ;
+    - wbs_dat_i[2] + NET wbs_dat_i[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 91310 -1200 ) N ;
+    - wbs_dat_i[30] + NET wbs_dat_i[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 599610 -1200 ) N ;
+    - wbs_dat_i[31] + NET wbs_dat_i[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 617550 -1200 ) N ;
+    - wbs_dat_i[3] + NET wbs_dat_i[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 115230 -1200 ) N ;
+    - wbs_dat_i[4] + NET wbs_dat_i[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 138690 -1200 ) N ;
+    - wbs_dat_i[5] + NET wbs_dat_i[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 156630 -1200 ) N ;
+    - wbs_dat_i[6] + NET wbs_dat_i[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 174110 -1200 ) N ;
+    - wbs_dat_i[7] + NET wbs_dat_i[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 192050 -1200 ) N ;
+    - wbs_dat_i[8] + NET wbs_dat_i[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 209530 -1200 ) N ;
+    - wbs_dat_i[9] + NET wbs_dat_i[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 227470 -1200 ) N ;
+    - wbs_dat_o[0] + NET wbs_dat_o[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 49910 -1200 ) N ;
+    - wbs_dat_o[10] + NET wbs_dat_o[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 250930 -1200 ) N ;
+    - wbs_dat_o[11] + NET wbs_dat_o[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 268870 -1200 ) N ;
+    - wbs_dat_o[12] + NET wbs_dat_o[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 286350 -1200 ) N ;
+    - wbs_dat_o[13] + NET wbs_dat_o[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 304290 -1200 ) N ;
+    - wbs_dat_o[14] + NET wbs_dat_o[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 321770 -1200 ) N ;
+    - wbs_dat_o[15] + NET wbs_dat_o[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 339710 -1200 ) N ;
+    - wbs_dat_o[16] + NET wbs_dat_o[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 357650 -1200 ) N ;
+    - wbs_dat_o[17] + NET wbs_dat_o[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 375130 -1200 ) N ;
+    - wbs_dat_o[18] + NET wbs_dat_o[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 393070 -1200 ) N ;
+    - wbs_dat_o[19] + NET wbs_dat_o[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 410550 -1200 ) N ;
+    - wbs_dat_o[1] + NET wbs_dat_o[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 73830 -1200 ) N ;
+    - wbs_dat_o[20] + NET wbs_dat_o[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 428490 -1200 ) N ;
+    - wbs_dat_o[21] + NET wbs_dat_o[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 445970 -1200 ) N ;
+    - wbs_dat_o[22] + NET wbs_dat_o[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 463910 -1200 ) N ;
+    - wbs_dat_o[23] + NET wbs_dat_o[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 481390 -1200 ) N ;
+    - wbs_dat_o[24] + NET wbs_dat_o[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 499330 -1200 ) N ;
+    - wbs_dat_o[25] + NET wbs_dat_o[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 516810 -1200 ) N ;
+    - wbs_dat_o[26] + NET wbs_dat_o[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 534750 -1200 ) N ;
+    - wbs_dat_o[27] + NET wbs_dat_o[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 552690 -1200 ) N ;
+    - wbs_dat_o[28] + NET wbs_dat_o[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 570170 -1200 ) N ;
+    - wbs_dat_o[29] + NET wbs_dat_o[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 588110 -1200 ) N ;
+    - wbs_dat_o[2] + NET wbs_dat_o[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 97290 -1200 ) N ;
+    - wbs_dat_o[30] + NET wbs_dat_o[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 605590 -1200 ) N ;
+    - wbs_dat_o[31] + NET wbs_dat_o[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 623530 -1200 ) N ;
+    - wbs_dat_o[3] + NET wbs_dat_o[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 121210 -1200 ) N ;
+    - wbs_dat_o[4] + NET wbs_dat_o[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 144670 -1200 ) N ;
+    - wbs_dat_o[5] + NET wbs_dat_o[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 162150 -1200 ) N ;
+    - wbs_dat_o[6] + NET wbs_dat_o[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 180090 -1200 ) N ;
+    - wbs_dat_o[7] + NET wbs_dat_o[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 198030 -1200 ) N ;
+    - wbs_dat_o[8] + NET wbs_dat_o[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 215510 -1200 ) N ;
+    - wbs_dat_o[9] + NET wbs_dat_o[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 233450 -1200 ) N ;
+    - wbs_sel_i[0] + NET wbs_sel_i[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 55890 -1200 ) N ;
+    - wbs_sel_i[1] + NET wbs_sel_i[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 79810 -1200 ) N ;
+    - wbs_sel_i[2] + NET wbs_sel_i[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 103270 -1200 ) N ;
+    - wbs_sel_i[3] + NET wbs_sel_i[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 126730 -1200 ) N ;
+    - wbs_stb_i + NET wbs_stb_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 26450 -1200 ) N ;
+    - wbs_we_i + NET wbs_we_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER met2 ( -280 -3600 ) ( 280 3600 )
+        + PLACED ( 32430 -1200 ) N ;
+END PINS
+SPECIALNETS 8 ;
+    - vccd1 ( PIN vccd1 ) + USE POWER
+      + ROUTED met4 0 + SHAPE STRIPE ( 1964840 2175880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1811240 2175880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1657640 2175880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1504040 2175880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1350440 2175880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1196840 2175880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1964840 1995880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1811240 1995880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1657640 1995880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1504040 1995880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1350440 1995880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1196840 1995880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1964840 1815880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1811240 1815880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1657640 1815880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1504040 1815880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1350440 1815880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1196840 1815880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 3522800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 3435880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 3255880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 3075880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 2895880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 2715880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 2535880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 2355880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 2175880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 1995880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 1815880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 1635880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 1455880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 1275880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 1095880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 915880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 735880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 555880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 375880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 195880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 15880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2928100 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2890520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2710520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2530520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2350520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2170520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1990520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1810520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1630520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1450520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1270520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1090520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 910520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 730520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 550520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 370520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 190520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 10520 -3120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -8480 -3120 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -10030 3522800 ) ( 2929650 3522800 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 3435880 ) ( 2934450 3435880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 3255880 ) ( 2934450 3255880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 3075880 ) ( 2934450 3075880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2895880 ) ( 2934450 2895880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2715880 ) ( 2934450 2715880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2535880 ) ( 2934450 2535880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2355880 ) ( 2934450 2355880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2175880 ) ( 2934450 2175880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1995880 ) ( 2934450 1995880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1815880 ) ( 2934450 1815880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1635880 ) ( 2934450 1635880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1455880 ) ( 2934450 1455880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1275880 ) ( 2934450 1275880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1095880 ) ( 2934450 1095880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 915880 ) ( 2934450 915880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 735880 ) ( 2934450 735880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 555880 ) ( 2934450 555880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 375880 ) ( 2934450 375880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 195880 ) ( 2934450 195880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 15880 ) ( 2934450 15880 )
+      NEW met5 3100 + SHAPE STRIPE ( -10030 -3120 ) ( 2929650 -3120 )
+      NEW met4 3100 + SHAPE STRIPE ( 2890520 -9470 ) ( 2890520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2710520 -9470 ) ( 2710520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2530520 -9470 ) ( 2530520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2350520 -9470 ) ( 2350520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2170520 -9470 ) ( 2170520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1990520 2300000 ) ( 1990520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1810520 2300000 ) ( 1810520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1630520 2300000 ) ( 1630520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1450520 2300000 ) ( 1450520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1270520 2300000 ) ( 1270520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1090520 -9470 ) ( 1090520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 910520 -9470 ) ( 910520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 730520 -9470 ) ( 730520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 550520 -9470 ) ( 550520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 370520 -9470 ) ( 370520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 190520 -9470 ) ( 190520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 10520 -9470 ) ( 10520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2928100 -4670 ) ( 2928100 3524350 )
+      NEW met4 3100 + SHAPE STRIPE ( -8480 -4670 ) ( -8480 3524350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1990520 -9470 ) ( 1990520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1810520 -9470 ) ( 1810520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1630520 -9470 ) ( 1630520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1450520 -9470 ) ( 1450520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1270520 -9470 ) ( 1270520 1680000 ) ;
+    - vccd2 ( PIN vccd2 ) + USE POWER
+      + ROUTED met4 0 + SHAPE STRIPE ( 2937700 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 3532400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 3454480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 3274480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 3094480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 2914480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 2734480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 2554480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 2374480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 2194480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 2014480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 1834480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 1654480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 1474480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 1294480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 1114480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 934480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 754480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 574480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 394480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 214480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 34480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2937700 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2909120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2729120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2549120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2369120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2189120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2009120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1829120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1649120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1469120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1289120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1109120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 929120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 749120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 569120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 389120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 209120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 29120 -12720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -18080 -12720 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -19630 3532400 ) ( 2939250 3532400 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3454480 ) ( 2944050 3454480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3274480 ) ( 2944050 3274480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3094480 ) ( 2944050 3094480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2914480 ) ( 2944050 2914480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2734480 ) ( 2944050 2734480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2554480 ) ( 2944050 2554480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2374480 ) ( 2944050 2374480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2194480 ) ( 2944050 2194480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2014480 ) ( 2944050 2014480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1834480 ) ( 2944050 1834480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1654480 ) ( 2944050 1654480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1474480 ) ( 2944050 1474480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1294480 ) ( 2944050 1294480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1114480 ) ( 2944050 1114480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 934480 ) ( 2944050 934480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 754480 ) ( 2944050 754480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 574480 ) ( 2944050 574480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 394480 ) ( 2944050 394480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 214480 ) ( 2944050 214480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 34480 ) ( 2944050 34480 )
+      NEW met5 3100 + SHAPE STRIPE ( -19630 -12720 ) ( 2939250 -12720 )
+      NEW met4 3100 + SHAPE STRIPE ( 2909120 -19070 ) ( 2909120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2729120 -19070 ) ( 2729120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2549120 -19070 ) ( 2549120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2369120 -19070 ) ( 2369120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2189120 -19070 ) ( 2189120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2009120 2300000 ) ( 2009120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1829120 2300000 ) ( 1829120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1649120 2300000 ) ( 1649120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1469120 2300000 ) ( 1469120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1289120 2300000 ) ( 1289120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1109120 -19070 ) ( 1109120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 929120 -19070 ) ( 929120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 749120 -19070 ) ( 749120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 569120 -19070 ) ( 569120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 389120 -19070 ) ( 389120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 209120 -19070 ) ( 209120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 29120 -19070 ) ( 29120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2937700 -14270 ) ( 2937700 3533950 )
+      NEW met4 3100 + SHAPE STRIPE ( -18080 -14270 ) ( -18080 3533950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2009120 -19070 ) ( 2009120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1829120 -19070 ) ( 1829120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1649120 -19070 ) ( 1649120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1469120 -19070 ) ( 1469120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1289120 -19070 ) ( 1289120 1680000 ) ;
+    - vdda1 ( PIN vdda1 ) + USE POWER
+      + ROUTED met4 0 + SHAPE STRIPE ( 2947300 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 3542000 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 3473080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 3293080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 3113080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 2933080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 2753080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 2573080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 2393080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 2213080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 2033080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 1853080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 1673080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 1493080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 1313080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 1133080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 953080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 773080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 593080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 413080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 233080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 53080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2947300 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2747720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2567720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2387720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2207720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2027720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1847720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1667720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1487720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1307720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1127720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 947720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 767720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 587720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 407720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 227720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 47720 -22320 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -27680 -22320 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -29230 3542000 ) ( 2948850 3542000 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3473080 ) ( 2953650 3473080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3293080 ) ( 2953650 3293080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3113080 ) ( 2953650 3113080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2933080 ) ( 2953650 2933080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2753080 ) ( 2953650 2753080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2573080 ) ( 2953650 2573080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2393080 ) ( 2953650 2393080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2213080 ) ( 2953650 2213080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2033080 ) ( 2953650 2033080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1853080 ) ( 2953650 1853080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1673080 ) ( 2953650 1673080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1493080 ) ( 2953650 1493080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1313080 ) ( 2953650 1313080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1133080 ) ( 2953650 1133080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 953080 ) ( 2953650 953080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 773080 ) ( 2953650 773080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 593080 ) ( 2953650 593080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 413080 ) ( 2953650 413080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 233080 ) ( 2953650 233080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 53080 ) ( 2953650 53080 )
+      NEW met5 3100 + SHAPE STRIPE ( -29230 -22320 ) ( 2948850 -22320 )
+      NEW met4 3100 + SHAPE STRIPE ( 2747720 -28670 ) ( 2747720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2567720 -28670 ) ( 2567720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2387720 -28670 ) ( 2387720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2207720 -28670 ) ( 2207720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2027720 2300000 ) ( 2027720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1847720 2300000 ) ( 1847720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1667720 2300000 ) ( 1667720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1487720 2300000 ) ( 1487720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1307720 2300000 ) ( 1307720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1127720 -28670 ) ( 1127720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 947720 -28670 ) ( 947720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 767720 -28670 ) ( 767720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 587720 -28670 ) ( 587720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 407720 -28670 ) ( 407720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 227720 -28670 ) ( 227720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 47720 -28670 ) ( 47720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2947300 -23870 ) ( 2947300 3543550 )
+      NEW met4 3100 + SHAPE STRIPE ( -27680 -23870 ) ( -27680 3543550 )
+      NEW met4 3100 + SHAPE STRIPE ( 2027720 -28670 ) ( 2027720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1847720 -28670 ) ( 1847720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1667720 -28670 ) ( 1667720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1487720 -28670 ) ( 1487720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1307720 -28670 ) ( 1307720 1680000 ) ;
+    - vdda2 ( PIN vdda2 ) + USE POWER
+      + ROUTED met4 0 + SHAPE STRIPE ( 2956900 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 3551600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 3491680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 3311680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 3131680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 2951680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 2771680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 2591680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 2411680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 2231680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 2051680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 1871680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 1691680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 1511680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 1331680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 1151680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 971680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 791680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 611680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 431680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 251680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 71680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2956900 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2766320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2586320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2406320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2226320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2046320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1866320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1686320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1506320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1326320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1146320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 966320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 786320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 606320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 426320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 246320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 66320 -31920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -37280 -31920 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -38830 3551600 ) ( 2958450 3551600 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3491680 ) ( 2963250 3491680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3311680 ) ( 2963250 3311680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3131680 ) ( 2963250 3131680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2951680 ) ( 2963250 2951680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2771680 ) ( 2963250 2771680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2591680 ) ( 2963250 2591680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2411680 ) ( 2963250 2411680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2231680 ) ( 2963250 2231680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2051680 ) ( 2963250 2051680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1871680 ) ( 2963250 1871680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1691680 ) ( 2963250 1691680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1511680 ) ( 2963250 1511680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1331680 ) ( 2963250 1331680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1151680 ) ( 2963250 1151680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 971680 ) ( 2963250 971680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 791680 ) ( 2963250 791680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 611680 ) ( 2963250 611680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 431680 ) ( 2963250 431680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 251680 ) ( 2963250 251680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 71680 ) ( 2963250 71680 )
+      NEW met5 3100 + SHAPE STRIPE ( -38830 -31920 ) ( 2958450 -31920 )
+      NEW met4 3100 + SHAPE STRIPE ( 2766320 -38270 ) ( 2766320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2586320 -38270 ) ( 2586320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2406320 -38270 ) ( 2406320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2226320 -38270 ) ( 2226320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2046320 2300000 ) ( 2046320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1866320 2300000 ) ( 1866320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1686320 2300000 ) ( 1686320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1506320 2300000 ) ( 1506320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1326320 2300000 ) ( 1326320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1146320 -38270 ) ( 1146320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 966320 -38270 ) ( 966320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 786320 -38270 ) ( 786320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 606320 -38270 ) ( 606320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 426320 -38270 ) ( 426320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 246320 -38270 ) ( 246320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 66320 -38270 ) ( 66320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2956900 -33470 ) ( 2956900 3553150 )
+      NEW met4 3100 + SHAPE STRIPE ( -37280 -33470 ) ( -37280 3553150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2046320 -38270 ) ( 2046320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1866320 -38270 ) ( 1866320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1686320 -38270 ) ( 1686320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1506320 -38270 ) ( 1506320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1326320 -38270 ) ( 1326320 1680000 ) ;
+    - vssa1 ( PIN vssa1 ) + USE GROUND
+      + ROUTED met4 0 + SHAPE STRIPE ( 2952100 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 3546800 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 3383080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 3203080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 3023080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 2843080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 2663080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 2483080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 2303080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 2123080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 1943080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 1763080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 1583080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 1403080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 1223080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 1043080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 863080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 683080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 503080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 323080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 143080 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2952100 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2837720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2657720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2477720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2297720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2117720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1937720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1757720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1577720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1397720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1217720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1037720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 857720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 677720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 497720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 317720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 137720 -27120 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -32480 -27120 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3546800 ) ( 2953650 3546800 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3383080 ) ( 2953650 3383080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3203080 ) ( 2953650 3203080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 3023080 ) ( 2953650 3023080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2843080 ) ( 2953650 2843080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2663080 ) ( 2953650 2663080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2483080 ) ( 2953650 2483080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2303080 ) ( 2953650 2303080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 2123080 ) ( 2953650 2123080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1943080 ) ( 2953650 1943080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1763080 ) ( 2953650 1763080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1583080 ) ( 2953650 1583080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1403080 ) ( 2953650 1403080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1223080 ) ( 2953650 1223080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 1043080 ) ( 2953650 1043080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 863080 ) ( 2953650 863080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 683080 ) ( 2953650 683080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 503080 ) ( 2953650 503080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 323080 ) ( 2953650 323080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 143080 ) ( 2953650 143080 )
+      NEW met5 3100 + SHAPE STRIPE ( -34030 -27120 ) ( 2953650 -27120 )
+      NEW met4 3100 + SHAPE STRIPE ( 2952100 -28670 ) ( 2952100 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2837720 -28670 ) ( 2837720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2657720 -28670 ) ( 2657720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2477720 -28670 ) ( 2477720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2297720 -28670 ) ( 2297720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 2117720 -28670 ) ( 2117720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1937720 2300000 ) ( 1937720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1757720 2300000 ) ( 1757720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1577720 2300000 ) ( 1577720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1397720 2300000 ) ( 1397720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1217720 2300000 ) ( 1217720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1037720 -28670 ) ( 1037720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 857720 -28670 ) ( 857720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 677720 -28670 ) ( 677720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 497720 -28670 ) ( 497720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 317720 -28670 ) ( 317720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 137720 -28670 ) ( 137720 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( -32480 -28670 ) ( -32480 3548350 )
+      NEW met4 3100 + SHAPE STRIPE ( 1937720 -28670 ) ( 1937720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1757720 -28670 ) ( 1757720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1577720 -28670 ) ( 1577720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1397720 -28670 ) ( 1397720 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1217720 -28670 ) ( 1217720 1680000 ) ;
+    - vssa2 ( PIN vssa2 ) + USE GROUND
+      + ROUTED met4 0 + SHAPE STRIPE ( 2961700 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 3556400 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 3401680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 3221680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 3041680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 2861680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 2681680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 2501680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 2321680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 2141680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 1961680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 1781680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 1601680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 1421680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 1241680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 1061680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 881680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 701680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 521680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 341680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 161680 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2961700 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2856320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2676320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2496320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2316320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2136320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1956320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1776320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1596320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1416320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1236320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1056320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 876320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 696320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 516320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 336320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 156320 -36720 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -42080 -36720 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3556400 ) ( 2963250 3556400 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3401680 ) ( 2963250 3401680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3221680 ) ( 2963250 3221680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 3041680 ) ( 2963250 3041680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2861680 ) ( 2963250 2861680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2681680 ) ( 2963250 2681680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2501680 ) ( 2963250 2501680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2321680 ) ( 2963250 2321680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 2141680 ) ( 2963250 2141680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1961680 ) ( 2963250 1961680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1781680 ) ( 2963250 1781680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1601680 ) ( 2963250 1601680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1421680 ) ( 2963250 1421680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1241680 ) ( 2963250 1241680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 1061680 ) ( 2963250 1061680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 881680 ) ( 2963250 881680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 701680 ) ( 2963250 701680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 521680 ) ( 2963250 521680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 341680 ) ( 2963250 341680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 161680 ) ( 2963250 161680 )
+      NEW met5 3100 + SHAPE STRIPE ( -43630 -36720 ) ( 2963250 -36720 )
+      NEW met4 3100 + SHAPE STRIPE ( 2961700 -38270 ) ( 2961700 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2856320 -38270 ) ( 2856320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2676320 -38270 ) ( 2676320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2496320 -38270 ) ( 2496320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2316320 -38270 ) ( 2316320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 2136320 -38270 ) ( 2136320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1956320 2300000 ) ( 1956320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1776320 2300000 ) ( 1776320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1596320 2300000 ) ( 1596320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1416320 2300000 ) ( 1416320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1236320 2300000 ) ( 1236320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1056320 -38270 ) ( 1056320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 876320 -38270 ) ( 876320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 696320 -38270 ) ( 696320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 516320 -38270 ) ( 516320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 336320 -38270 ) ( 336320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 156320 -38270 ) ( 156320 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( -42080 -38270 ) ( -42080 3557950 )
+      NEW met4 3100 + SHAPE STRIPE ( 1956320 -38270 ) ( 1956320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1776320 -38270 ) ( 1776320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1596320 -38270 ) ( 1596320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1416320 -38270 ) ( 1416320 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1236320 -38270 ) ( 1236320 1680000 ) ;
+    - vssd1 ( PIN vssd1 ) + USE GROUND
+      + ROUTED met4 0 + SHAPE STRIPE ( 2041640 2265880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1888040 2265880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1734440 2265880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1580840 2265880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1427240 2265880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1273640 2265880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 2041640 2085880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1888040 2085880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1734440 2085880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1580840 2085880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1427240 2085880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1273640 2085880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 2041640 1905880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1888040 1905880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1734440 1905880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1580840 1905880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1427240 1905880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1273640 1905880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 2041640 1725880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1888040 1725880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1734440 1725880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1580840 1725880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1427240 1725880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 1273640 1725880 ) via4_1600x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 3527600 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 3345880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 3165880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 2985880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 2805880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 2625880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 2445880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 2265880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 2085880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 1905880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 1725880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 1545880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 1365880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 1185880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 1005880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 825880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 645880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 465880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 285880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 105880 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2932900 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2800520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2620520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2440520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2260520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2080520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1900520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1720520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1540520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1360520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1180520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1000520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 820520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 640520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 460520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 280520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 100520 -7920 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -13280 -7920 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -14830 3527600 ) ( 2934450 3527600 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 3345880 ) ( 2934450 3345880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 3165880 ) ( 2934450 3165880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2985880 ) ( 2934450 2985880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2805880 ) ( 2934450 2805880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2625880 ) ( 2934450 2625880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2445880 ) ( 2934450 2445880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2265880 ) ( 2934450 2265880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 2085880 ) ( 2934450 2085880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1905880 ) ( 2934450 1905880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1725880 ) ( 2934450 1725880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1545880 ) ( 2934450 1545880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1365880 ) ( 2934450 1365880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1185880 ) ( 2934450 1185880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 1005880 ) ( 2934450 1005880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 825880 ) ( 2934450 825880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 645880 ) ( 2934450 645880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 465880 ) ( 2934450 465880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 285880 ) ( 2934450 285880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 105880 ) ( 2934450 105880 )
+      NEW met5 3100 + SHAPE STRIPE ( -14830 -7920 ) ( 2934450 -7920 )
+      NEW met4 3100 + SHAPE STRIPE ( 2932900 -9470 ) ( 2932900 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2800520 -9470 ) ( 2800520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2620520 -9470 ) ( 2620520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2440520 -9470 ) ( 2440520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2260520 -9470 ) ( 2260520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2080520 2300000 ) ( 2080520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1900520 2300000 ) ( 1900520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1720520 2300000 ) ( 1720520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1540520 2300000 ) ( 1540520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1360520 2300000 ) ( 1360520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1180520 2300000 ) ( 1180520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 1000520 -9470 ) ( 1000520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 820520 -9470 ) ( 820520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 640520 -9470 ) ( 640520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 460520 -9470 ) ( 460520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 280520 -9470 ) ( 280520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 100520 -9470 ) ( 100520 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( -13280 -9470 ) ( -13280 3529150 )
+      NEW met4 3100 + SHAPE STRIPE ( 2080520 -9470 ) ( 2080520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1900520 -9470 ) ( 1900520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1720520 -9470 ) ( 1720520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1540520 -9470 ) ( 1540520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1360520 -9470 ) ( 1360520 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1180520 -9470 ) ( 1180520 1680000 ) ;
+    - vssd2 ( PIN vssd2 ) + USE GROUND
+      + ROUTED met4 0 + SHAPE STRIPE ( 2942500 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 3537200 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 3364480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 3184480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 3004480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 2824480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 2644480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 2464480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 2284480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 2104480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 1924480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 1744480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 1564480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 1384480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 1204480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 1024480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 844480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 664480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 484480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 304480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 124480 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2942500 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2819120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2639120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2459120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2279120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 2099120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1919120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1739120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1559120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1379120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1199120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 1019120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 839120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 659120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 479120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 299120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( 119120 -17520 ) via4_3100x3100
+      NEW met4 0 + SHAPE STRIPE ( -22880 -17520 ) via4_3100x3100
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3537200 ) ( 2944050 3537200 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3364480 ) ( 2944050 3364480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3184480 ) ( 2944050 3184480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 3004480 ) ( 2944050 3004480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2824480 ) ( 2944050 2824480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2644480 ) ( 2944050 2644480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2464480 ) ( 2944050 2464480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2284480 ) ( 2944050 2284480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 2104480 ) ( 2944050 2104480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1924480 ) ( 2944050 1924480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1744480 ) ( 2944050 1744480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1564480 ) ( 2944050 1564480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1384480 ) ( 2944050 1384480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1204480 ) ( 2944050 1204480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 1024480 ) ( 2944050 1024480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 844480 ) ( 2944050 844480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 664480 ) ( 2944050 664480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 484480 ) ( 2944050 484480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 304480 ) ( 2944050 304480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 124480 ) ( 2944050 124480 )
+      NEW met5 3100 + SHAPE STRIPE ( -24430 -17520 ) ( 2944050 -17520 )
+      NEW met4 3100 + SHAPE STRIPE ( 2942500 -19070 ) ( 2942500 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2819120 -19070 ) ( 2819120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2639120 -19070 ) ( 2639120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2459120 -19070 ) ( 2459120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2279120 -19070 ) ( 2279120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 2099120 -19070 ) ( 2099120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1919120 2300000 ) ( 1919120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1739120 2300000 ) ( 1739120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1559120 2300000 ) ( 1559120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1379120 2300000 ) ( 1379120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1199120 2300000 ) ( 1199120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1019120 -19070 ) ( 1019120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 839120 -19070 ) ( 839120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 659120 -19070 ) ( 659120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 479120 -19070 ) ( 479120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 299120 -19070 ) ( 299120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 119120 -19070 ) ( 119120 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( -22880 -19070 ) ( -22880 3538750 )
+      NEW met4 3100 + SHAPE STRIPE ( 1919120 -19070 ) ( 1919120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1739120 -19070 ) ( 1739120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1559120 -19070 ) ( 1559120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1379120 -19070 ) ( 1379120 1680000 )
+      NEW met4 3100 + SHAPE STRIPE ( 1199120 -19070 ) ( 1199120 1680000 ) ;
+END SPECIALNETS
+END DESIGN
diff --git a/openlane/ref/user_project_wrapper/fixed_dont_change/user_project_wrapper_gf180mcu.def b/openlane/ref/user_project_wrapper/fixed_dont_change/user_project_wrapper_gf180mcu.def
new file mode 100644
index 0000000..0120e95
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/fixed_dont_change/user_project_wrapper_gf180mcu.def
@@ -0,0 +1,6837 @@
+VERSION 5.8 ;
+DIVIDERCHAR "/" ;
+BUSBITCHARS "[]" ;
+DESIGN user_project_wrapper ;
+UNITS DISTANCE MICRONS 2000 ;
+DIEAREA ( 0 0 ) ( 6000000 6000000 ) ;
+ROW ROW_0 GF018hv5v_mcu_sc7 13440 31360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_1 GF018hv5v_mcu_sc7 13440 39200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_2 GF018hv5v_mcu_sc7 13440 47040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_3 GF018hv5v_mcu_sc7 13440 54880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_4 GF018hv5v_mcu_sc7 13440 62720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_5 GF018hv5v_mcu_sc7 13440 70560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_6 GF018hv5v_mcu_sc7 13440 78400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_7 GF018hv5v_mcu_sc7 13440 86240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_8 GF018hv5v_mcu_sc7 13440 94080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_9 GF018hv5v_mcu_sc7 13440 101920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_10 GF018hv5v_mcu_sc7 13440 109760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_11 GF018hv5v_mcu_sc7 13440 117600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_12 GF018hv5v_mcu_sc7 13440 125440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_13 GF018hv5v_mcu_sc7 13440 133280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_14 GF018hv5v_mcu_sc7 13440 141120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_15 GF018hv5v_mcu_sc7 13440 148960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_16 GF018hv5v_mcu_sc7 13440 156800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_17 GF018hv5v_mcu_sc7 13440 164640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_18 GF018hv5v_mcu_sc7 13440 172480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_19 GF018hv5v_mcu_sc7 13440 180320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_20 GF018hv5v_mcu_sc7 13440 188160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_21 GF018hv5v_mcu_sc7 13440 196000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_22 GF018hv5v_mcu_sc7 13440 203840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_23 GF018hv5v_mcu_sc7 13440 211680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_24 GF018hv5v_mcu_sc7 13440 219520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_25 GF018hv5v_mcu_sc7 13440 227360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_26 GF018hv5v_mcu_sc7 13440 235200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_27 GF018hv5v_mcu_sc7 13440 243040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_28 GF018hv5v_mcu_sc7 13440 250880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_29 GF018hv5v_mcu_sc7 13440 258720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_30 GF018hv5v_mcu_sc7 13440 266560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_31 GF018hv5v_mcu_sc7 13440 274400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_32 GF018hv5v_mcu_sc7 13440 282240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_33 GF018hv5v_mcu_sc7 13440 290080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_34 GF018hv5v_mcu_sc7 13440 297920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_35 GF018hv5v_mcu_sc7 13440 305760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_36 GF018hv5v_mcu_sc7 13440 313600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_37 GF018hv5v_mcu_sc7 13440 321440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_38 GF018hv5v_mcu_sc7 13440 329280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_39 GF018hv5v_mcu_sc7 13440 337120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_40 GF018hv5v_mcu_sc7 13440 344960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_41 GF018hv5v_mcu_sc7 13440 352800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_42 GF018hv5v_mcu_sc7 13440 360640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_43 GF018hv5v_mcu_sc7 13440 368480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_44 GF018hv5v_mcu_sc7 13440 376320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_45 GF018hv5v_mcu_sc7 13440 384160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_46 GF018hv5v_mcu_sc7 13440 392000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_47 GF018hv5v_mcu_sc7 13440 399840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_48 GF018hv5v_mcu_sc7 13440 407680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_49 GF018hv5v_mcu_sc7 13440 415520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_50 GF018hv5v_mcu_sc7 13440 423360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_51 GF018hv5v_mcu_sc7 13440 431200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_52 GF018hv5v_mcu_sc7 13440 439040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_53 GF018hv5v_mcu_sc7 13440 446880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_54 GF018hv5v_mcu_sc7 13440 454720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_55 GF018hv5v_mcu_sc7 13440 462560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_56 GF018hv5v_mcu_sc7 13440 470400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_57 GF018hv5v_mcu_sc7 13440 478240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_58 GF018hv5v_mcu_sc7 13440 486080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_59 GF018hv5v_mcu_sc7 13440 493920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_60 GF018hv5v_mcu_sc7 13440 501760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_61 GF018hv5v_mcu_sc7 13440 509600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_62 GF018hv5v_mcu_sc7 13440 517440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_63 GF018hv5v_mcu_sc7 13440 525280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_64 GF018hv5v_mcu_sc7 13440 533120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_65 GF018hv5v_mcu_sc7 13440 540960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_66 GF018hv5v_mcu_sc7 13440 548800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_67 GF018hv5v_mcu_sc7 13440 556640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_68 GF018hv5v_mcu_sc7 13440 564480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_69 GF018hv5v_mcu_sc7 13440 572320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_70 GF018hv5v_mcu_sc7 13440 580160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_71 GF018hv5v_mcu_sc7 13440 588000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_72 GF018hv5v_mcu_sc7 13440 595840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_73 GF018hv5v_mcu_sc7 13440 603680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_74 GF018hv5v_mcu_sc7 13440 611520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_75 GF018hv5v_mcu_sc7 13440 619360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_76 GF018hv5v_mcu_sc7 13440 627200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_77 GF018hv5v_mcu_sc7 13440 635040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_78 GF018hv5v_mcu_sc7 13440 642880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_79 GF018hv5v_mcu_sc7 13440 650720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_80 GF018hv5v_mcu_sc7 13440 658560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_81 GF018hv5v_mcu_sc7 13440 666400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_82 GF018hv5v_mcu_sc7 13440 674240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_83 GF018hv5v_mcu_sc7 13440 682080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_84 GF018hv5v_mcu_sc7 13440 689920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_85 GF018hv5v_mcu_sc7 13440 697760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_86 GF018hv5v_mcu_sc7 13440 705600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_87 GF018hv5v_mcu_sc7 13440 713440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_88 GF018hv5v_mcu_sc7 13440 721280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_89 GF018hv5v_mcu_sc7 13440 729120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_90 GF018hv5v_mcu_sc7 13440 736960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_91 GF018hv5v_mcu_sc7 13440 744800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_92 GF018hv5v_mcu_sc7 13440 752640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_93 GF018hv5v_mcu_sc7 13440 760480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_94 GF018hv5v_mcu_sc7 13440 768320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_95 GF018hv5v_mcu_sc7 13440 776160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_96 GF018hv5v_mcu_sc7 13440 784000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_97 GF018hv5v_mcu_sc7 13440 791840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_98 GF018hv5v_mcu_sc7 13440 799680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_99 GF018hv5v_mcu_sc7 13440 807520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_100 GF018hv5v_mcu_sc7 13440 815360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_101 GF018hv5v_mcu_sc7 13440 823200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_102 GF018hv5v_mcu_sc7 13440 831040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_103 GF018hv5v_mcu_sc7 13440 838880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_104 GF018hv5v_mcu_sc7 13440 846720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_105 GF018hv5v_mcu_sc7 13440 854560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_106 GF018hv5v_mcu_sc7 13440 862400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_107 GF018hv5v_mcu_sc7 13440 870240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_108 GF018hv5v_mcu_sc7 13440 878080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_109 GF018hv5v_mcu_sc7 13440 885920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_110 GF018hv5v_mcu_sc7 13440 893760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_111 GF018hv5v_mcu_sc7 13440 901600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_112 GF018hv5v_mcu_sc7 13440 909440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_113 GF018hv5v_mcu_sc7 13440 917280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_114 GF018hv5v_mcu_sc7 13440 925120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_115 GF018hv5v_mcu_sc7 13440 932960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_116 GF018hv5v_mcu_sc7 13440 940800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_117 GF018hv5v_mcu_sc7 13440 948640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_118 GF018hv5v_mcu_sc7 13440 956480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_119 GF018hv5v_mcu_sc7 13440 964320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_120 GF018hv5v_mcu_sc7 13440 972160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_121 GF018hv5v_mcu_sc7 13440 980000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_122 GF018hv5v_mcu_sc7 13440 987840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_123 GF018hv5v_mcu_sc7 13440 995680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_124 GF018hv5v_mcu_sc7 13440 1003520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_125 GF018hv5v_mcu_sc7 13440 1011360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_126 GF018hv5v_mcu_sc7 13440 1019200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_127 GF018hv5v_mcu_sc7 13440 1027040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_128 GF018hv5v_mcu_sc7 13440 1034880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_129 GF018hv5v_mcu_sc7 13440 1042720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_130 GF018hv5v_mcu_sc7 13440 1050560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_131 GF018hv5v_mcu_sc7 13440 1058400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_132 GF018hv5v_mcu_sc7 13440 1066240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_133 GF018hv5v_mcu_sc7 13440 1074080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_134 GF018hv5v_mcu_sc7 13440 1081920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_135 GF018hv5v_mcu_sc7 13440 1089760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_136 GF018hv5v_mcu_sc7 13440 1097600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_137 GF018hv5v_mcu_sc7 13440 1105440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_138 GF018hv5v_mcu_sc7 13440 1113280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_139 GF018hv5v_mcu_sc7 13440 1121120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_140 GF018hv5v_mcu_sc7 13440 1128960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_141 GF018hv5v_mcu_sc7 13440 1136800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_142 GF018hv5v_mcu_sc7 13440 1144640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_143 GF018hv5v_mcu_sc7 13440 1152480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_144 GF018hv5v_mcu_sc7 13440 1160320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_145 GF018hv5v_mcu_sc7 13440 1168160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_146 GF018hv5v_mcu_sc7 13440 1176000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_147 GF018hv5v_mcu_sc7 13440 1183840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_148 GF018hv5v_mcu_sc7 13440 1191680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_149 GF018hv5v_mcu_sc7 13440 1199520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_150 GF018hv5v_mcu_sc7 13440 1207360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_151 GF018hv5v_mcu_sc7 13440 1215200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_152 GF018hv5v_mcu_sc7 13440 1223040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_153 GF018hv5v_mcu_sc7 13440 1230880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_154 GF018hv5v_mcu_sc7 13440 1238720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_155 GF018hv5v_mcu_sc7 13440 1246560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_156 GF018hv5v_mcu_sc7 13440 1254400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_157 GF018hv5v_mcu_sc7 13440 1262240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_158 GF018hv5v_mcu_sc7 13440 1270080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_159 GF018hv5v_mcu_sc7 13440 1277920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_160 GF018hv5v_mcu_sc7 13440 1285760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_161 GF018hv5v_mcu_sc7 13440 1293600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_162 GF018hv5v_mcu_sc7 13440 1301440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_163 GF018hv5v_mcu_sc7 13440 1309280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_164 GF018hv5v_mcu_sc7 13440 1317120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_165 GF018hv5v_mcu_sc7 13440 1324960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_166 GF018hv5v_mcu_sc7 13440 1332800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_167 GF018hv5v_mcu_sc7 13440 1340640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_168 GF018hv5v_mcu_sc7 13440 1348480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_169 GF018hv5v_mcu_sc7 13440 1356320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_170 GF018hv5v_mcu_sc7 13440 1364160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_171 GF018hv5v_mcu_sc7 13440 1372000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_172 GF018hv5v_mcu_sc7 13440 1379840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_173 GF018hv5v_mcu_sc7 13440 1387680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_174 GF018hv5v_mcu_sc7 13440 1395520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_175 GF018hv5v_mcu_sc7 13440 1403360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_176 GF018hv5v_mcu_sc7 13440 1411200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_177 GF018hv5v_mcu_sc7 13440 1419040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_178 GF018hv5v_mcu_sc7 13440 1426880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_179 GF018hv5v_mcu_sc7 13440 1434720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_180 GF018hv5v_mcu_sc7 13440 1442560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_181 GF018hv5v_mcu_sc7 13440 1450400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_182 GF018hv5v_mcu_sc7 13440 1458240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_183 GF018hv5v_mcu_sc7 13440 1466080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_184 GF018hv5v_mcu_sc7 13440 1473920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_185 GF018hv5v_mcu_sc7 13440 1481760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_186 GF018hv5v_mcu_sc7 13440 1489600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_187 GF018hv5v_mcu_sc7 13440 1497440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_188 GF018hv5v_mcu_sc7 13440 1505280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_189 GF018hv5v_mcu_sc7 13440 1513120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_190 GF018hv5v_mcu_sc7 13440 1520960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_191 GF018hv5v_mcu_sc7 13440 1528800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_192 GF018hv5v_mcu_sc7 13440 1536640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_193 GF018hv5v_mcu_sc7 13440 1544480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_194 GF018hv5v_mcu_sc7 13440 1552320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_195 GF018hv5v_mcu_sc7 13440 1560160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_196 GF018hv5v_mcu_sc7 13440 1568000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_197 GF018hv5v_mcu_sc7 13440 1575840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_198 GF018hv5v_mcu_sc7 13440 1583680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_199 GF018hv5v_mcu_sc7 13440 1591520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_200 GF018hv5v_mcu_sc7 13440 1599360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_201 GF018hv5v_mcu_sc7 13440 1607200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_202 GF018hv5v_mcu_sc7 13440 1615040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_203 GF018hv5v_mcu_sc7 13440 1622880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_204 GF018hv5v_mcu_sc7 13440 1630720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_205 GF018hv5v_mcu_sc7 13440 1638560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_206 GF018hv5v_mcu_sc7 13440 1646400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_207 GF018hv5v_mcu_sc7 13440 1654240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_208 GF018hv5v_mcu_sc7 13440 1662080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_209 GF018hv5v_mcu_sc7 13440 1669920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_210 GF018hv5v_mcu_sc7 13440 1677760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_211 GF018hv5v_mcu_sc7 13440 1685600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_212 GF018hv5v_mcu_sc7 13440 1693440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_213 GF018hv5v_mcu_sc7 13440 1701280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_214 GF018hv5v_mcu_sc7 13440 1709120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_215 GF018hv5v_mcu_sc7 13440 1716960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_216 GF018hv5v_mcu_sc7 13440 1724800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_217 GF018hv5v_mcu_sc7 13440 1732640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_218 GF018hv5v_mcu_sc7 13440 1740480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_219 GF018hv5v_mcu_sc7 13440 1748320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_220 GF018hv5v_mcu_sc7 13440 1756160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_221 GF018hv5v_mcu_sc7 13440 1764000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_222 GF018hv5v_mcu_sc7 13440 1771840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_223 GF018hv5v_mcu_sc7 13440 1779680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_224 GF018hv5v_mcu_sc7 13440 1787520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_225 GF018hv5v_mcu_sc7 13440 1795360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_226 GF018hv5v_mcu_sc7 13440 1803200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_227 GF018hv5v_mcu_sc7 13440 1811040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_228 GF018hv5v_mcu_sc7 13440 1818880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_229 GF018hv5v_mcu_sc7 13440 1826720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_230 GF018hv5v_mcu_sc7 13440 1834560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_231 GF018hv5v_mcu_sc7 13440 1842400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_232 GF018hv5v_mcu_sc7 13440 1850240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_233 GF018hv5v_mcu_sc7 13440 1858080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_234 GF018hv5v_mcu_sc7 13440 1865920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_235 GF018hv5v_mcu_sc7 13440 1873760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_236 GF018hv5v_mcu_sc7 13440 1881600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_237 GF018hv5v_mcu_sc7 13440 1889440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_238 GF018hv5v_mcu_sc7 13440 1897280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_239 GF018hv5v_mcu_sc7 13440 1905120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_240 GF018hv5v_mcu_sc7 13440 1912960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_241 GF018hv5v_mcu_sc7 13440 1920800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_242 GF018hv5v_mcu_sc7 13440 1928640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_243 GF018hv5v_mcu_sc7 13440 1936480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_244 GF018hv5v_mcu_sc7 13440 1944320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_245 GF018hv5v_mcu_sc7 13440 1952160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_246 GF018hv5v_mcu_sc7 13440 1960000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_247 GF018hv5v_mcu_sc7 13440 1967840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_248 GF018hv5v_mcu_sc7 13440 1975680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_249 GF018hv5v_mcu_sc7 13440 1983520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_250 GF018hv5v_mcu_sc7 13440 1991360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_251 GF018hv5v_mcu_sc7 13440 1999200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_252 GF018hv5v_mcu_sc7 13440 2007040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_253 GF018hv5v_mcu_sc7 13440 2014880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_254 GF018hv5v_mcu_sc7 13440 2022720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_255 GF018hv5v_mcu_sc7 13440 2030560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_256 GF018hv5v_mcu_sc7 13440 2038400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_257 GF018hv5v_mcu_sc7 13440 2046240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_258 GF018hv5v_mcu_sc7 13440 2054080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_259 GF018hv5v_mcu_sc7 13440 2061920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_260 GF018hv5v_mcu_sc7 13440 2069760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_261 GF018hv5v_mcu_sc7 13440 2077600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_262 GF018hv5v_mcu_sc7 13440 2085440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_263 GF018hv5v_mcu_sc7 13440 2093280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_264 GF018hv5v_mcu_sc7 13440 2101120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_265 GF018hv5v_mcu_sc7 13440 2108960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_266 GF018hv5v_mcu_sc7 13440 2116800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_267 GF018hv5v_mcu_sc7 13440 2124640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_268 GF018hv5v_mcu_sc7 13440 2132480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_269 GF018hv5v_mcu_sc7 13440 2140320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_270 GF018hv5v_mcu_sc7 13440 2148160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_271 GF018hv5v_mcu_sc7 13440 2156000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_272 GF018hv5v_mcu_sc7 13440 2163840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_273 GF018hv5v_mcu_sc7 13440 2171680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_274 GF018hv5v_mcu_sc7 13440 2179520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_275 GF018hv5v_mcu_sc7 13440 2187360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_276 GF018hv5v_mcu_sc7 13440 2195200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_277 GF018hv5v_mcu_sc7 13440 2203040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_278 GF018hv5v_mcu_sc7 13440 2210880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_279 GF018hv5v_mcu_sc7 13440 2218720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_280 GF018hv5v_mcu_sc7 13440 2226560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_281 GF018hv5v_mcu_sc7 13440 2234400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_282 GF018hv5v_mcu_sc7 13440 2242240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_283 GF018hv5v_mcu_sc7 13440 2250080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_284 GF018hv5v_mcu_sc7 13440 2257920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_285 GF018hv5v_mcu_sc7 13440 2265760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_286 GF018hv5v_mcu_sc7 13440 2273600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_287 GF018hv5v_mcu_sc7 13440 2281440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_288 GF018hv5v_mcu_sc7 13440 2289280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_289 GF018hv5v_mcu_sc7 13440 2297120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_290 GF018hv5v_mcu_sc7 13440 2304960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_291 GF018hv5v_mcu_sc7 13440 2312800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_292 GF018hv5v_mcu_sc7 13440 2320640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_293 GF018hv5v_mcu_sc7 13440 2328480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_294 GF018hv5v_mcu_sc7 13440 2336320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_295 GF018hv5v_mcu_sc7 13440 2344160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_296 GF018hv5v_mcu_sc7 13440 2352000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_297 GF018hv5v_mcu_sc7 13440 2359840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_298 GF018hv5v_mcu_sc7 13440 2367680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_299 GF018hv5v_mcu_sc7 13440 2375520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_300 GF018hv5v_mcu_sc7 13440 2383360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_301 GF018hv5v_mcu_sc7 13440 2391200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_302 GF018hv5v_mcu_sc7 13440 2399040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_303 GF018hv5v_mcu_sc7 13440 2406880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_304 GF018hv5v_mcu_sc7 13440 2414720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_305 GF018hv5v_mcu_sc7 13440 2422560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_306 GF018hv5v_mcu_sc7 13440 2430400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_307 GF018hv5v_mcu_sc7 13440 2438240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_308 GF018hv5v_mcu_sc7 13440 2446080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_309 GF018hv5v_mcu_sc7 13440 2453920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_310 GF018hv5v_mcu_sc7 13440 2461760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_311 GF018hv5v_mcu_sc7 13440 2469600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_312 GF018hv5v_mcu_sc7 13440 2477440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_313 GF018hv5v_mcu_sc7 13440 2485280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_314 GF018hv5v_mcu_sc7 13440 2493120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_315 GF018hv5v_mcu_sc7 13440 2500960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_316 GF018hv5v_mcu_sc7 13440 2508800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_317 GF018hv5v_mcu_sc7 13440 2516640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_318 GF018hv5v_mcu_sc7 13440 2524480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_319 GF018hv5v_mcu_sc7 13440 2532320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_320 GF018hv5v_mcu_sc7 13440 2540160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_321 GF018hv5v_mcu_sc7 13440 2548000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_322 GF018hv5v_mcu_sc7 13440 2555840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_323 GF018hv5v_mcu_sc7 13440 2563680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_324 GF018hv5v_mcu_sc7 13440 2571520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_325 GF018hv5v_mcu_sc7 13440 2579360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_326 GF018hv5v_mcu_sc7 13440 2587200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_327 GF018hv5v_mcu_sc7 13440 2595040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_328 GF018hv5v_mcu_sc7 13440 2602880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_329 GF018hv5v_mcu_sc7 13440 2610720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_330 GF018hv5v_mcu_sc7 13440 2618560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_331 GF018hv5v_mcu_sc7 13440 2626400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_332 GF018hv5v_mcu_sc7 13440 2634240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_333 GF018hv5v_mcu_sc7 13440 2642080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_334 GF018hv5v_mcu_sc7 13440 2649920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_335 GF018hv5v_mcu_sc7 13440 2657760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_336 GF018hv5v_mcu_sc7 13440 2665600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_337 GF018hv5v_mcu_sc7 13440 2673440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_338 GF018hv5v_mcu_sc7 13440 2681280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_339 GF018hv5v_mcu_sc7 13440 2689120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_340 GF018hv5v_mcu_sc7 13440 2696960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_341 GF018hv5v_mcu_sc7 13440 2704800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_342 GF018hv5v_mcu_sc7 13440 2712640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_343 GF018hv5v_mcu_sc7 13440 2720480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_344 GF018hv5v_mcu_sc7 13440 2728320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_345 GF018hv5v_mcu_sc7 13440 2736160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_346 GF018hv5v_mcu_sc7 13440 2744000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_347 GF018hv5v_mcu_sc7 13440 2751840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_348 GF018hv5v_mcu_sc7 13440 2759680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_349 GF018hv5v_mcu_sc7 13440 2767520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_350 GF018hv5v_mcu_sc7 13440 2775360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_351 GF018hv5v_mcu_sc7 13440 2783200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_352 GF018hv5v_mcu_sc7 13440 2791040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_353 GF018hv5v_mcu_sc7 13440 2798880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_354 GF018hv5v_mcu_sc7 13440 2806720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_355 GF018hv5v_mcu_sc7 13440 2814560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_356 GF018hv5v_mcu_sc7 13440 2822400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_357 GF018hv5v_mcu_sc7 13440 2830240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_358 GF018hv5v_mcu_sc7 13440 2838080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_359 GF018hv5v_mcu_sc7 13440 2845920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_360 GF018hv5v_mcu_sc7 13440 2853760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_361 GF018hv5v_mcu_sc7 13440 2861600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_362 GF018hv5v_mcu_sc7 13440 2869440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_363 GF018hv5v_mcu_sc7 13440 2877280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_364 GF018hv5v_mcu_sc7 13440 2885120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_365 GF018hv5v_mcu_sc7 13440 2892960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_366 GF018hv5v_mcu_sc7 13440 2900800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_367 GF018hv5v_mcu_sc7 13440 2908640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_368 GF018hv5v_mcu_sc7 13440 2916480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_369 GF018hv5v_mcu_sc7 13440 2924320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_370 GF018hv5v_mcu_sc7 13440 2932160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_371 GF018hv5v_mcu_sc7 13440 2940000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_372 GF018hv5v_mcu_sc7 13440 2947840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_373 GF018hv5v_mcu_sc7 13440 2955680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_374 GF018hv5v_mcu_sc7 13440 2963520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_375 GF018hv5v_mcu_sc7 13440 2971360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_376 GF018hv5v_mcu_sc7 13440 2979200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_377 GF018hv5v_mcu_sc7 13440 2987040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_378 GF018hv5v_mcu_sc7 13440 2994880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_379 GF018hv5v_mcu_sc7 13440 3002720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_380 GF018hv5v_mcu_sc7 13440 3010560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_381 GF018hv5v_mcu_sc7 13440 3018400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_382 GF018hv5v_mcu_sc7 13440 3026240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_383 GF018hv5v_mcu_sc7 13440 3034080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_384 GF018hv5v_mcu_sc7 13440 3041920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_385 GF018hv5v_mcu_sc7 13440 3049760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_386 GF018hv5v_mcu_sc7 13440 3057600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_387 GF018hv5v_mcu_sc7 13440 3065440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_388 GF018hv5v_mcu_sc7 13440 3073280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_389 GF018hv5v_mcu_sc7 13440 3081120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_390 GF018hv5v_mcu_sc7 13440 3088960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_391 GF018hv5v_mcu_sc7 13440 3096800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_392 GF018hv5v_mcu_sc7 13440 3104640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_393 GF018hv5v_mcu_sc7 13440 3112480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_394 GF018hv5v_mcu_sc7 13440 3120320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_395 GF018hv5v_mcu_sc7 13440 3128160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_396 GF018hv5v_mcu_sc7 13440 3136000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_397 GF018hv5v_mcu_sc7 13440 3143840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_398 GF018hv5v_mcu_sc7 13440 3151680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_399 GF018hv5v_mcu_sc7 13440 3159520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_400 GF018hv5v_mcu_sc7 13440 3167360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_401 GF018hv5v_mcu_sc7 13440 3175200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_402 GF018hv5v_mcu_sc7 13440 3183040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_403 GF018hv5v_mcu_sc7 13440 3190880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_404 GF018hv5v_mcu_sc7 13440 3198720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_405 GF018hv5v_mcu_sc7 13440 3206560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_406 GF018hv5v_mcu_sc7 13440 3214400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_407 GF018hv5v_mcu_sc7 13440 3222240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_408 GF018hv5v_mcu_sc7 13440 3230080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_409 GF018hv5v_mcu_sc7 13440 3237920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_410 GF018hv5v_mcu_sc7 13440 3245760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_411 GF018hv5v_mcu_sc7 13440 3253600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_412 GF018hv5v_mcu_sc7 13440 3261440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_413 GF018hv5v_mcu_sc7 13440 3269280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_414 GF018hv5v_mcu_sc7 13440 3277120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_415 GF018hv5v_mcu_sc7 13440 3284960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_416 GF018hv5v_mcu_sc7 13440 3292800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_417 GF018hv5v_mcu_sc7 13440 3300640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_418 GF018hv5v_mcu_sc7 13440 3308480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_419 GF018hv5v_mcu_sc7 13440 3316320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_420 GF018hv5v_mcu_sc7 13440 3324160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_421 GF018hv5v_mcu_sc7 13440 3332000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_422 GF018hv5v_mcu_sc7 13440 3339840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_423 GF018hv5v_mcu_sc7 13440 3347680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_424 GF018hv5v_mcu_sc7 13440 3355520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_425 GF018hv5v_mcu_sc7 13440 3363360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_426 GF018hv5v_mcu_sc7 13440 3371200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_427 GF018hv5v_mcu_sc7 13440 3379040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_428 GF018hv5v_mcu_sc7 13440 3386880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_429 GF018hv5v_mcu_sc7 13440 3394720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_430 GF018hv5v_mcu_sc7 13440 3402560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_431 GF018hv5v_mcu_sc7 13440 3410400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_432 GF018hv5v_mcu_sc7 13440 3418240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_433 GF018hv5v_mcu_sc7 13440 3426080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_434 GF018hv5v_mcu_sc7 13440 3433920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_435 GF018hv5v_mcu_sc7 13440 3441760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_436 GF018hv5v_mcu_sc7 13440 3449600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_437 GF018hv5v_mcu_sc7 13440 3457440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_438 GF018hv5v_mcu_sc7 13440 3465280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_439 GF018hv5v_mcu_sc7 13440 3473120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_440 GF018hv5v_mcu_sc7 13440 3480960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_441 GF018hv5v_mcu_sc7 13440 3488800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_442 GF018hv5v_mcu_sc7 13440 3496640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_443 GF018hv5v_mcu_sc7 13440 3504480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_444 GF018hv5v_mcu_sc7 13440 3512320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_445 GF018hv5v_mcu_sc7 13440 3520160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_446 GF018hv5v_mcu_sc7 13440 3528000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_447 GF018hv5v_mcu_sc7 13440 3535840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_448 GF018hv5v_mcu_sc7 13440 3543680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_449 GF018hv5v_mcu_sc7 13440 3551520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_450 GF018hv5v_mcu_sc7 13440 3559360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_451 GF018hv5v_mcu_sc7 13440 3567200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_452 GF018hv5v_mcu_sc7 13440 3575040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_453 GF018hv5v_mcu_sc7 13440 3582880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_454 GF018hv5v_mcu_sc7 13440 3590720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_455 GF018hv5v_mcu_sc7 13440 3598560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_456 GF018hv5v_mcu_sc7 13440 3606400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_457 GF018hv5v_mcu_sc7 13440 3614240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_458 GF018hv5v_mcu_sc7 13440 3622080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_459 GF018hv5v_mcu_sc7 13440 3629920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_460 GF018hv5v_mcu_sc7 13440 3637760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_461 GF018hv5v_mcu_sc7 13440 3645600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_462 GF018hv5v_mcu_sc7 13440 3653440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_463 GF018hv5v_mcu_sc7 13440 3661280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_464 GF018hv5v_mcu_sc7 13440 3669120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_465 GF018hv5v_mcu_sc7 13440 3676960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_466 GF018hv5v_mcu_sc7 13440 3684800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_467 GF018hv5v_mcu_sc7 13440 3692640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_468 GF018hv5v_mcu_sc7 13440 3700480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_469 GF018hv5v_mcu_sc7 13440 3708320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_470 GF018hv5v_mcu_sc7 13440 3716160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_471 GF018hv5v_mcu_sc7 13440 3724000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_472 GF018hv5v_mcu_sc7 13440 3731840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_473 GF018hv5v_mcu_sc7 13440 3739680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_474 GF018hv5v_mcu_sc7 13440 3747520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_475 GF018hv5v_mcu_sc7 13440 3755360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_476 GF018hv5v_mcu_sc7 13440 3763200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_477 GF018hv5v_mcu_sc7 13440 3771040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_478 GF018hv5v_mcu_sc7 13440 3778880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_479 GF018hv5v_mcu_sc7 13440 3786720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_480 GF018hv5v_mcu_sc7 13440 3794560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_481 GF018hv5v_mcu_sc7 13440 3802400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_482 GF018hv5v_mcu_sc7 13440 3810240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_483 GF018hv5v_mcu_sc7 13440 3818080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_484 GF018hv5v_mcu_sc7 13440 3825920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_485 GF018hv5v_mcu_sc7 13440 3833760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_486 GF018hv5v_mcu_sc7 13440 3841600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_487 GF018hv5v_mcu_sc7 13440 3849440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_488 GF018hv5v_mcu_sc7 13440 3857280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_489 GF018hv5v_mcu_sc7 13440 3865120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_490 GF018hv5v_mcu_sc7 13440 3872960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_491 GF018hv5v_mcu_sc7 13440 3880800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_492 GF018hv5v_mcu_sc7 13440 3888640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_493 GF018hv5v_mcu_sc7 13440 3896480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_494 GF018hv5v_mcu_sc7 13440 3904320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_495 GF018hv5v_mcu_sc7 13440 3912160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_496 GF018hv5v_mcu_sc7 13440 3920000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_497 GF018hv5v_mcu_sc7 13440 3927840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_498 GF018hv5v_mcu_sc7 13440 3935680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_499 GF018hv5v_mcu_sc7 13440 3943520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_500 GF018hv5v_mcu_sc7 13440 3951360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_501 GF018hv5v_mcu_sc7 13440 3959200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_502 GF018hv5v_mcu_sc7 13440 3967040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_503 GF018hv5v_mcu_sc7 13440 3974880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_504 GF018hv5v_mcu_sc7 13440 3982720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_505 GF018hv5v_mcu_sc7 13440 3990560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_506 GF018hv5v_mcu_sc7 13440 3998400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_507 GF018hv5v_mcu_sc7 13440 4006240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_508 GF018hv5v_mcu_sc7 13440 4014080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_509 GF018hv5v_mcu_sc7 13440 4021920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_510 GF018hv5v_mcu_sc7 13440 4029760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_511 GF018hv5v_mcu_sc7 13440 4037600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_512 GF018hv5v_mcu_sc7 13440 4045440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_513 GF018hv5v_mcu_sc7 13440 4053280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_514 GF018hv5v_mcu_sc7 13440 4061120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_515 GF018hv5v_mcu_sc7 13440 4068960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_516 GF018hv5v_mcu_sc7 13440 4076800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_517 GF018hv5v_mcu_sc7 13440 4084640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_518 GF018hv5v_mcu_sc7 13440 4092480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_519 GF018hv5v_mcu_sc7 13440 4100320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_520 GF018hv5v_mcu_sc7 13440 4108160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_521 GF018hv5v_mcu_sc7 13440 4116000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_522 GF018hv5v_mcu_sc7 13440 4123840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_523 GF018hv5v_mcu_sc7 13440 4131680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_524 GF018hv5v_mcu_sc7 13440 4139520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_525 GF018hv5v_mcu_sc7 13440 4147360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_526 GF018hv5v_mcu_sc7 13440 4155200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_527 GF018hv5v_mcu_sc7 13440 4163040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_528 GF018hv5v_mcu_sc7 13440 4170880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_529 GF018hv5v_mcu_sc7 13440 4178720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_530 GF018hv5v_mcu_sc7 13440 4186560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_531 GF018hv5v_mcu_sc7 13440 4194400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_532 GF018hv5v_mcu_sc7 13440 4202240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_533 GF018hv5v_mcu_sc7 13440 4210080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_534 GF018hv5v_mcu_sc7 13440 4217920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_535 GF018hv5v_mcu_sc7 13440 4225760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_536 GF018hv5v_mcu_sc7 13440 4233600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_537 GF018hv5v_mcu_sc7 13440 4241440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_538 GF018hv5v_mcu_sc7 13440 4249280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_539 GF018hv5v_mcu_sc7 13440 4257120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_540 GF018hv5v_mcu_sc7 13440 4264960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_541 GF018hv5v_mcu_sc7 13440 4272800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_542 GF018hv5v_mcu_sc7 13440 4280640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_543 GF018hv5v_mcu_sc7 13440 4288480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_544 GF018hv5v_mcu_sc7 13440 4296320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_545 GF018hv5v_mcu_sc7 13440 4304160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_546 GF018hv5v_mcu_sc7 13440 4312000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_547 GF018hv5v_mcu_sc7 13440 4319840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_548 GF018hv5v_mcu_sc7 13440 4327680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_549 GF018hv5v_mcu_sc7 13440 4335520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_550 GF018hv5v_mcu_sc7 13440 4343360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_551 GF018hv5v_mcu_sc7 13440 4351200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_552 GF018hv5v_mcu_sc7 13440 4359040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_553 GF018hv5v_mcu_sc7 13440 4366880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_554 GF018hv5v_mcu_sc7 13440 4374720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_555 GF018hv5v_mcu_sc7 13440 4382560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_556 GF018hv5v_mcu_sc7 13440 4390400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_557 GF018hv5v_mcu_sc7 13440 4398240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_558 GF018hv5v_mcu_sc7 13440 4406080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_559 GF018hv5v_mcu_sc7 13440 4413920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_560 GF018hv5v_mcu_sc7 13440 4421760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_561 GF018hv5v_mcu_sc7 13440 4429600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_562 GF018hv5v_mcu_sc7 13440 4437440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_563 GF018hv5v_mcu_sc7 13440 4445280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_564 GF018hv5v_mcu_sc7 13440 4453120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_565 GF018hv5v_mcu_sc7 13440 4460960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_566 GF018hv5v_mcu_sc7 13440 4468800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_567 GF018hv5v_mcu_sc7 13440 4476640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_568 GF018hv5v_mcu_sc7 13440 4484480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_569 GF018hv5v_mcu_sc7 13440 4492320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_570 GF018hv5v_mcu_sc7 13440 4500160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_571 GF018hv5v_mcu_sc7 13440 4508000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_572 GF018hv5v_mcu_sc7 13440 4515840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_573 GF018hv5v_mcu_sc7 13440 4523680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_574 GF018hv5v_mcu_sc7 13440 4531520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_575 GF018hv5v_mcu_sc7 13440 4539360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_576 GF018hv5v_mcu_sc7 13440 4547200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_577 GF018hv5v_mcu_sc7 13440 4555040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_578 GF018hv5v_mcu_sc7 13440 4562880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_579 GF018hv5v_mcu_sc7 13440 4570720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_580 GF018hv5v_mcu_sc7 13440 4578560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_581 GF018hv5v_mcu_sc7 13440 4586400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_582 GF018hv5v_mcu_sc7 13440 4594240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_583 GF018hv5v_mcu_sc7 13440 4602080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_584 GF018hv5v_mcu_sc7 13440 4609920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_585 GF018hv5v_mcu_sc7 13440 4617760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_586 GF018hv5v_mcu_sc7 13440 4625600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_587 GF018hv5v_mcu_sc7 13440 4633440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_588 GF018hv5v_mcu_sc7 13440 4641280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_589 GF018hv5v_mcu_sc7 13440 4649120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_590 GF018hv5v_mcu_sc7 13440 4656960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_591 GF018hv5v_mcu_sc7 13440 4664800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_592 GF018hv5v_mcu_sc7 13440 4672640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_593 GF018hv5v_mcu_sc7 13440 4680480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_594 GF018hv5v_mcu_sc7 13440 4688320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_595 GF018hv5v_mcu_sc7 13440 4696160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_596 GF018hv5v_mcu_sc7 13440 4704000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_597 GF018hv5v_mcu_sc7 13440 4711840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_598 GF018hv5v_mcu_sc7 13440 4719680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_599 GF018hv5v_mcu_sc7 13440 4727520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_600 GF018hv5v_mcu_sc7 13440 4735360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_601 GF018hv5v_mcu_sc7 13440 4743200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_602 GF018hv5v_mcu_sc7 13440 4751040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_603 GF018hv5v_mcu_sc7 13440 4758880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_604 GF018hv5v_mcu_sc7 13440 4766720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_605 GF018hv5v_mcu_sc7 13440 4774560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_606 GF018hv5v_mcu_sc7 13440 4782400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_607 GF018hv5v_mcu_sc7 13440 4790240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_608 GF018hv5v_mcu_sc7 13440 4798080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_609 GF018hv5v_mcu_sc7 13440 4805920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_610 GF018hv5v_mcu_sc7 13440 4813760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_611 GF018hv5v_mcu_sc7 13440 4821600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_612 GF018hv5v_mcu_sc7 13440 4829440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_613 GF018hv5v_mcu_sc7 13440 4837280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_614 GF018hv5v_mcu_sc7 13440 4845120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_615 GF018hv5v_mcu_sc7 13440 4852960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_616 GF018hv5v_mcu_sc7 13440 4860800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_617 GF018hv5v_mcu_sc7 13440 4868640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_618 GF018hv5v_mcu_sc7 13440 4876480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_619 GF018hv5v_mcu_sc7 13440 4884320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_620 GF018hv5v_mcu_sc7 13440 4892160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_621 GF018hv5v_mcu_sc7 13440 4900000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_622 GF018hv5v_mcu_sc7 13440 4907840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_623 GF018hv5v_mcu_sc7 13440 4915680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_624 GF018hv5v_mcu_sc7 13440 4923520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_625 GF018hv5v_mcu_sc7 13440 4931360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_626 GF018hv5v_mcu_sc7 13440 4939200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_627 GF018hv5v_mcu_sc7 13440 4947040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_628 GF018hv5v_mcu_sc7 13440 4954880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_629 GF018hv5v_mcu_sc7 13440 4962720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_630 GF018hv5v_mcu_sc7 13440 4970560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_631 GF018hv5v_mcu_sc7 13440 4978400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_632 GF018hv5v_mcu_sc7 13440 4986240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_633 GF018hv5v_mcu_sc7 13440 4994080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_634 GF018hv5v_mcu_sc7 13440 5001920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_635 GF018hv5v_mcu_sc7 13440 5009760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_636 GF018hv5v_mcu_sc7 13440 5017600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_637 GF018hv5v_mcu_sc7 13440 5025440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_638 GF018hv5v_mcu_sc7 13440 5033280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_639 GF018hv5v_mcu_sc7 13440 5041120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_640 GF018hv5v_mcu_sc7 13440 5048960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_641 GF018hv5v_mcu_sc7 13440 5056800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_642 GF018hv5v_mcu_sc7 13440 5064640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_643 GF018hv5v_mcu_sc7 13440 5072480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_644 GF018hv5v_mcu_sc7 13440 5080320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_645 GF018hv5v_mcu_sc7 13440 5088160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_646 GF018hv5v_mcu_sc7 13440 5096000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_647 GF018hv5v_mcu_sc7 13440 5103840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_648 GF018hv5v_mcu_sc7 13440 5111680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_649 GF018hv5v_mcu_sc7 13440 5119520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_650 GF018hv5v_mcu_sc7 13440 5127360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_651 GF018hv5v_mcu_sc7 13440 5135200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_652 GF018hv5v_mcu_sc7 13440 5143040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_653 GF018hv5v_mcu_sc7 13440 5150880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_654 GF018hv5v_mcu_sc7 13440 5158720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_655 GF018hv5v_mcu_sc7 13440 5166560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_656 GF018hv5v_mcu_sc7 13440 5174400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_657 GF018hv5v_mcu_sc7 13440 5182240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_658 GF018hv5v_mcu_sc7 13440 5190080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_659 GF018hv5v_mcu_sc7 13440 5197920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_660 GF018hv5v_mcu_sc7 13440 5205760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_661 GF018hv5v_mcu_sc7 13440 5213600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_662 GF018hv5v_mcu_sc7 13440 5221440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_663 GF018hv5v_mcu_sc7 13440 5229280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_664 GF018hv5v_mcu_sc7 13440 5237120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_665 GF018hv5v_mcu_sc7 13440 5244960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_666 GF018hv5v_mcu_sc7 13440 5252800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_667 GF018hv5v_mcu_sc7 13440 5260640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_668 GF018hv5v_mcu_sc7 13440 5268480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_669 GF018hv5v_mcu_sc7 13440 5276320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_670 GF018hv5v_mcu_sc7 13440 5284160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_671 GF018hv5v_mcu_sc7 13440 5292000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_672 GF018hv5v_mcu_sc7 13440 5299840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_673 GF018hv5v_mcu_sc7 13440 5307680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_674 GF018hv5v_mcu_sc7 13440 5315520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_675 GF018hv5v_mcu_sc7 13440 5323360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_676 GF018hv5v_mcu_sc7 13440 5331200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_677 GF018hv5v_mcu_sc7 13440 5339040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_678 GF018hv5v_mcu_sc7 13440 5346880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_679 GF018hv5v_mcu_sc7 13440 5354720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_680 GF018hv5v_mcu_sc7 13440 5362560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_681 GF018hv5v_mcu_sc7 13440 5370400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_682 GF018hv5v_mcu_sc7 13440 5378240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_683 GF018hv5v_mcu_sc7 13440 5386080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_684 GF018hv5v_mcu_sc7 13440 5393920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_685 GF018hv5v_mcu_sc7 13440 5401760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_686 GF018hv5v_mcu_sc7 13440 5409600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_687 GF018hv5v_mcu_sc7 13440 5417440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_688 GF018hv5v_mcu_sc7 13440 5425280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_689 GF018hv5v_mcu_sc7 13440 5433120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_690 GF018hv5v_mcu_sc7 13440 5440960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_691 GF018hv5v_mcu_sc7 13440 5448800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_692 GF018hv5v_mcu_sc7 13440 5456640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_693 GF018hv5v_mcu_sc7 13440 5464480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_694 GF018hv5v_mcu_sc7 13440 5472320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_695 GF018hv5v_mcu_sc7 13440 5480160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_696 GF018hv5v_mcu_sc7 13440 5488000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_697 GF018hv5v_mcu_sc7 13440 5495840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_698 GF018hv5v_mcu_sc7 13440 5503680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_699 GF018hv5v_mcu_sc7 13440 5511520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_700 GF018hv5v_mcu_sc7 13440 5519360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_701 GF018hv5v_mcu_sc7 13440 5527200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_702 GF018hv5v_mcu_sc7 13440 5535040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_703 GF018hv5v_mcu_sc7 13440 5542880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_704 GF018hv5v_mcu_sc7 13440 5550720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_705 GF018hv5v_mcu_sc7 13440 5558560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_706 GF018hv5v_mcu_sc7 13440 5566400 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_707 GF018hv5v_mcu_sc7 13440 5574240 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_708 GF018hv5v_mcu_sc7 13440 5582080 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_709 GF018hv5v_mcu_sc7 13440 5589920 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_710 GF018hv5v_mcu_sc7 13440 5597760 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_711 GF018hv5v_mcu_sc7 13440 5605600 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_712 GF018hv5v_mcu_sc7 13440 5613440 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_713 GF018hv5v_mcu_sc7 13440 5621280 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_714 GF018hv5v_mcu_sc7 13440 5629120 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_715 GF018hv5v_mcu_sc7 13440 5636960 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_716 GF018hv5v_mcu_sc7 13440 5644800 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_717 GF018hv5v_mcu_sc7 13440 5652640 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_718 GF018hv5v_mcu_sc7 13440 5660480 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_719 GF018hv5v_mcu_sc7 13440 5668320 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_720 GF018hv5v_mcu_sc7 13440 5676160 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_721 GF018hv5v_mcu_sc7 13440 5684000 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_722 GF018hv5v_mcu_sc7 13440 5691840 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_723 GF018hv5v_mcu_sc7 13440 5699680 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_724 GF018hv5v_mcu_sc7 13440 5707520 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_725 GF018hv5v_mcu_sc7 13440 5715360 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_726 GF018hv5v_mcu_sc7 13440 5723200 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_727 GF018hv5v_mcu_sc7 13440 5731040 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_728 GF018hv5v_mcu_sc7 13440 5738880 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_729 GF018hv5v_mcu_sc7 13440 5746720 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_730 GF018hv5v_mcu_sc7 13440 5754560 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_731 GF018hv5v_mcu_sc7 13440 5762400 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_732 GF018hv5v_mcu_sc7 13440 5770240 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_733 GF018hv5v_mcu_sc7 13440 5778080 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_734 GF018hv5v_mcu_sc7 13440 5785920 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_735 GF018hv5v_mcu_sc7 13440 5793760 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_736 GF018hv5v_mcu_sc7 13440 5801600 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_737 GF018hv5v_mcu_sc7 13440 5809440 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_738 GF018hv5v_mcu_sc7 13440 5817280 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_739 GF018hv5v_mcu_sc7 13440 5825120 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_740 GF018hv5v_mcu_sc7 13440 5832960 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_741 GF018hv5v_mcu_sc7 13440 5840800 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_742 GF018hv5v_mcu_sc7 13440 5848640 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_743 GF018hv5v_mcu_sc7 13440 5856480 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_744 GF018hv5v_mcu_sc7 13440 5864320 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_745 GF018hv5v_mcu_sc7 13440 5872160 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_746 GF018hv5v_mcu_sc7 13440 5880000 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_747 GF018hv5v_mcu_sc7 13440 5887840 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_748 GF018hv5v_mcu_sc7 13440 5895680 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_749 GF018hv5v_mcu_sc7 13440 5903520 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_750 GF018hv5v_mcu_sc7 13440 5911360 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_751 GF018hv5v_mcu_sc7 13440 5919200 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_752 GF018hv5v_mcu_sc7 13440 5927040 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_753 GF018hv5v_mcu_sc7 13440 5934880 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_754 GF018hv5v_mcu_sc7 13440 5942720 N DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_755 GF018hv5v_mcu_sc7 13440 5950560 FS DO 5333 BY 1 STEP 1120 0 ;
+ROW ROW_756 GF018hv5v_mcu_sc7 13440 5958400 N DO 5333 BY 1 STEP 1120 0 ;
+TRACKS X 560 DO 5357 STEP 1120 LAYER Metal1 ;
+TRACKS Y 560 DO 5357 STEP 1120 LAYER Metal1 ;
+TRACKS X 560 DO 5357 STEP 1120 LAYER Metal2 ;
+TRACKS Y 560 DO 5357 STEP 1120 LAYER Metal2 ;
+TRACKS X 560 DO 5357 STEP 1120 LAYER Metal3 ;
+TRACKS Y 560 DO 5357 STEP 1120 LAYER Metal3 ;
+TRACKS X 560 DO 5357 STEP 1120 LAYER Metal4 ;
+TRACKS Y 560 DO 5357 STEP 1120 LAYER Metal4 ;
+TRACKS X 560 DO 5357 STEP 1120 LAYER Metal5 ;
+TRACKS Y 560 DO 5357 STEP 1120 LAYER Metal5 ;
+GCELLGRID X 0 DO 357 STEP 16800 ;
+GCELLGRID Y 0 DO 357 STEP 16800 ;
+VIAS 2 ;
+    - via4_5_6200_6200_6_6_1040_1040 + VIARULE Via4_GEN_HH + CUTSIZE 520 520  + LAYERS Metal4 Via4 Metal5  + CUTSPACING 520 520  + ENCLOSURE 240 120 120 240  + ROWCOL 6 6  ;
+    - via4_5_3200_6200_6_3_1040_1040 + VIARULE Via4_GEN_HH + CUTSIZE 520 520  + LAYERS Metal4 Via4 Metal5  + CUTSPACING 520 520  + ENCLOSURE 300 240 120 240  + ROWCOL 6 3  ;
+END VIAS
+COMPONENTS 1 ;
+    - mprj user_proj_example + FIXED ( 1175000 1690000 ) N ;
+END COMPONENTS
+PINS 645 ;
+    - analog_io[0] + NET analog_io[0] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2434320 ) N ;
+    - analog_io[10] + NET analog_io[10] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4574640 6002400 ) N ;
+    - analog_io[11] + NET analog_io[11] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3911600 6002400 ) N ;
+    - analog_io[12] + NET analog_io[12] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3248560 6002400 ) N ;
+    - analog_io[13] + NET analog_io[13] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2585520 6002400 ) N ;
+    - analog_io[14] + NET analog_io[14] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1922480 6002400 ) N ;
+    - analog_io[15] + NET analog_io[15] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1259440 6002400 ) N ;
+    - analog_io[16] + NET analog_io[16] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 596400 6002400 ) N ;
+    - analog_io[17] + NET analog_io[17] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5937680 ) N ;
+    - analog_io[18] + NET analog_io[18] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5494160 ) N ;
+    - analog_io[19] + NET analog_io[19] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5050640 ) N ;
+    - analog_io[1] + NET analog_io[1] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2886800 ) N ;
+    - analog_io[20] + NET analog_io[20] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4607120 ) N ;
+    - analog_io[21] + NET analog_io[21] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4163600 ) N ;
+    - analog_io[22] + NET analog_io[22] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3720080 ) N ;
+    - analog_io[23] + NET analog_io[23] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3276560 ) N ;
+    - analog_io[24] + NET analog_io[24] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2833040 ) N ;
+    - analog_io[25] + NET analog_io[25] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2389520 ) N ;
+    - analog_io[26] + NET analog_io[26] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1946000 ) N ;
+    - analog_io[27] + NET analog_io[27] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1502480 ) N ;
+    - analog_io[28] + NET analog_io[28] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1058960 ) N ;
+    - analog_io[2] + NET analog_io[2] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3339280 ) N ;
+    - analog_io[3] + NET analog_io[3] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3791760 ) N ;
+    - analog_io[4] + NET analog_io[4] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4244240 ) N ;
+    - analog_io[5] + NET analog_io[5] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4696720 ) N ;
+    - analog_io[6] + NET analog_io[6] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5149200 ) N ;
+    - analog_io[7] + NET analog_io[7] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5601680 ) N ;
+    - analog_io[8] + NET analog_io[8] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5900720 6002400 ) N ;
+    - analog_io[9] + NET analog_io[9] + DIRECTION INOUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5237680 6002400 ) N ;
+    - io_in[0] + NET io_in[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 58800 ) N ;
+    - io_in[10] + NET io_in[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3904880 ) N ;
+    - io_in[11] + NET io_in[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4357360 ) N ;
+    - io_in[12] + NET io_in[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4809840 ) N ;
+    - io_in[13] + NET io_in[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5262320 ) N ;
+    - io_in[14] + NET io_in[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5714800 ) N ;
+    - io_in[15] + NET io_in[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5734960 6002400 ) N ;
+    - io_in[16] + NET io_in[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5071920 6002400 ) N ;
+    - io_in[17] + NET io_in[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4408880 6002400 ) N ;
+    - io_in[18] + NET io_in[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3745840 6002400 ) N ;
+    - io_in[19] + NET io_in[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3082800 6002400 ) N ;
+    - io_in[1] + NET io_in[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 398160 ) N ;
+    - io_in[20] + NET io_in[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2419760 6002400 ) N ;
+    - io_in[21] + NET io_in[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1756720 6002400 ) N ;
+    - io_in[22] + NET io_in[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1093680 6002400 ) N ;
+    - io_in[23] + NET io_in[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 430640 6002400 ) N ;
+    - io_in[24] + NET io_in[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5826800 ) N ;
+    - io_in[25] + NET io_in[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5383280 ) N ;
+    - io_in[26] + NET io_in[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4939760 ) N ;
+    - io_in[27] + NET io_in[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4496240 ) N ;
+    - io_in[28] + NET io_in[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4052720 ) N ;
+    - io_in[29] + NET io_in[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3609200 ) N ;
+    - io_in[2] + NET io_in[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 737520 ) N ;
+    - io_in[30] + NET io_in[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3165680 ) N ;
+    - io_in[31] + NET io_in[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2722160 ) N ;
+    - io_in[32] + NET io_in[32] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2278640 ) N ;
+    - io_in[33] + NET io_in[33] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1835120 ) N ;
+    - io_in[34] + NET io_in[34] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1391600 ) N ;
+    - io_in[35] + NET io_in[35] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 948080 ) N ;
+    - io_in[36] + NET io_in[36] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 615440 ) N ;
+    - io_in[37] + NET io_in[37] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 282800 ) N ;
+    - io_in[3] + NET io_in[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1076880 ) N ;
+    - io_in[4] + NET io_in[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1416240 ) N ;
+    - io_in[5] + NET io_in[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1755600 ) N ;
+    - io_in[6] + NET io_in[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2094960 ) N ;
+    - io_in[7] + NET io_in[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2547440 ) N ;
+    - io_in[8] + NET io_in[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2999920 ) N ;
+    - io_in[9] + NET io_in[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3452400 ) N ;
+    - io_oeb[0] + NET io_oeb[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 285040 ) N ;
+    - io_oeb[10] + NET io_oeb[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4131120 ) N ;
+    - io_oeb[11] + NET io_oeb[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4583600 ) N ;
+    - io_oeb[12] + NET io_oeb[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5036080 ) N ;
+    - io_oeb[13] + NET io_oeb[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5488560 ) N ;
+    - io_oeb[14] + NET io_oeb[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5941040 ) N ;
+    - io_oeb[15] + NET io_oeb[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5403440 6002400 ) N ;
+    - io_oeb[16] + NET io_oeb[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4740400 6002400 ) N ;
+    - io_oeb[17] + NET io_oeb[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4077360 6002400 ) N ;
+    - io_oeb[18] + NET io_oeb[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3414320 6002400 ) N ;
+    - io_oeb[19] + NET io_oeb[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2751280 6002400 ) N ;
+    - io_oeb[1] + NET io_oeb[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 624400 ) N ;
+    - io_oeb[20] + NET io_oeb[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2088240 6002400 ) N ;
+    - io_oeb[21] + NET io_oeb[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1425200 6002400 ) N ;
+    - io_oeb[22] + NET io_oeb[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 762160 6002400 ) N ;
+    - io_oeb[23] + NET io_oeb[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 99120 6002400 ) N ;
+    - io_oeb[24] + NET io_oeb[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5605040 ) N ;
+    - io_oeb[25] + NET io_oeb[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5161520 ) N ;
+    - io_oeb[26] + NET io_oeb[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4718000 ) N ;
+    - io_oeb[27] + NET io_oeb[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4274480 ) N ;
+    - io_oeb[28] + NET io_oeb[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3830960 ) N ;
+    - io_oeb[29] + NET io_oeb[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3387440 ) N ;
+    - io_oeb[2] + NET io_oeb[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 963760 ) N ;
+    - io_oeb[30] + NET io_oeb[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2943920 ) N ;
+    - io_oeb[31] + NET io_oeb[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2500400 ) N ;
+    - io_oeb[32] + NET io_oeb[32] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2056880 ) N ;
+    - io_oeb[33] + NET io_oeb[33] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1613360 ) N ;
+    - io_oeb[34] + NET io_oeb[34] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1169840 ) N ;
+    - io_oeb[35] + NET io_oeb[35] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 726320 ) N ;
+    - io_oeb[36] + NET io_oeb[36] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 393680 ) N ;
+    - io_oeb[37] + NET io_oeb[37] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 61040 ) N ;
+    - io_oeb[3] + NET io_oeb[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1303120 ) N ;
+    - io_oeb[4] + NET io_oeb[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1642480 ) N ;
+    - io_oeb[5] + NET io_oeb[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1981840 ) N ;
+    - io_oeb[6] + NET io_oeb[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2321200 ) N ;
+    - io_oeb[7] + NET io_oeb[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2773680 ) N ;
+    - io_oeb[8] + NET io_oeb[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3226160 ) N ;
+    - io_oeb[9] + NET io_oeb[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3678640 ) N ;
+    - io_out[0] + NET io_out[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 171920 ) N ;
+    - io_out[10] + NET io_out[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4018000 ) N ;
+    - io_out[11] + NET io_out[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4470480 ) N ;
+    - io_out[12] + NET io_out[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 4922960 ) N ;
+    - io_out[13] + NET io_out[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5375440 ) N ;
+    - io_out[14] + NET io_out[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 5827920 ) N ;
+    - io_out[15] + NET io_out[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5569200 6002400 ) N ;
+    - io_out[16] + NET io_out[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4906160 6002400 ) N ;
+    - io_out[17] + NET io_out[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4243120 6002400 ) N ;
+    - io_out[18] + NET io_out[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3580080 6002400 ) N ;
+    - io_out[19] + NET io_out[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2917040 6002400 ) N ;
+    - io_out[1] + NET io_out[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 511280 ) N ;
+    - io_out[20] + NET io_out[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2254000 6002400 ) N ;
+    - io_out[21] + NET io_out[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1590960 6002400 ) N ;
+    - io_out[22] + NET io_out[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 927920 6002400 ) N ;
+    - io_out[23] + NET io_out[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 264880 6002400 ) N ;
+    - io_out[24] + NET io_out[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5715920 ) N ;
+    - io_out[25] + NET io_out[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 5272400 ) N ;
+    - io_out[26] + NET io_out[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4828880 ) N ;
+    - io_out[27] + NET io_out[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 4385360 ) N ;
+    - io_out[28] + NET io_out[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3941840 ) N ;
+    - io_out[29] + NET io_out[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3498320 ) N ;
+    - io_out[2] + NET io_out[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 850640 ) N ;
+    - io_out[30] + NET io_out[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 3054800 ) N ;
+    - io_out[31] + NET io_out[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2611280 ) N ;
+    - io_out[32] + NET io_out[32] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 2167760 ) N ;
+    - io_out[33] + NET io_out[33] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1724240 ) N ;
+    - io_out[34] + NET io_out[34] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 1280720 ) N ;
+    - io_out[35] + NET io_out[35] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 837200 ) N ;
+    - io_out[36] + NET io_out[36] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 504560 ) N ;
+    - io_out[37] + NET io_out[37] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( -2400 171920 ) N ;
+    - io_out[3] + NET io_out[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1190000 ) N ;
+    - io_out[4] + NET io_out[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1529360 ) N ;
+    - io_out[5] + NET io_out[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 1868720 ) N ;
+    - io_out[6] + NET io_out[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2208080 ) N ;
+    - io_out[7] + NET io_out[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 2660560 ) N ;
+    - io_out[8] + NET io_out[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3113040 ) N ;
+    - io_out[9] + NET io_out[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal3 ( -7200 -1120 ) ( 7200 1120 )
+        + PLACED ( 6002400 3565520 ) N ;
+    - la_data_in[0] + NET la_data_in[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1426320 -2400 ) N ;
+    - la_data_in[100] + NET la_data_in[100] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4786320 -2400 ) N ;
+    - la_data_in[101] + NET la_data_in[101] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4819920 -2400 ) N ;
+    - la_data_in[102] + NET la_data_in[102] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4853520 -2400 ) N ;
+    - la_data_in[103] + NET la_data_in[103] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4887120 -2400 ) N ;
+    - la_data_in[104] + NET la_data_in[104] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4920720 -2400 ) N ;
+    - la_data_in[105] + NET la_data_in[105] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4954320 -2400 ) N ;
+    - la_data_in[106] + NET la_data_in[106] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4987920 -2400 ) N ;
+    - la_data_in[107] + NET la_data_in[107] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5021520 -2400 ) N ;
+    - la_data_in[108] + NET la_data_in[108] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5055120 -2400 ) N ;
+    - la_data_in[109] + NET la_data_in[109] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5088720 -2400 ) N ;
+    - la_data_in[10] + NET la_data_in[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1762320 -2400 ) N ;
+    - la_data_in[110] + NET la_data_in[110] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5122320 -2400 ) N ;
+    - la_data_in[111] + NET la_data_in[111] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5155920 -2400 ) N ;
+    - la_data_in[112] + NET la_data_in[112] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5189520 -2400 ) N ;
+    - la_data_in[113] + NET la_data_in[113] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5223120 -2400 ) N ;
+    - la_data_in[114] + NET la_data_in[114] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5256720 -2400 ) N ;
+    - la_data_in[115] + NET la_data_in[115] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5290320 -2400 ) N ;
+    - la_data_in[116] + NET la_data_in[116] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5323920 -2400 ) N ;
+    - la_data_in[117] + NET la_data_in[117] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5357520 -2400 ) N ;
+    - la_data_in[118] + NET la_data_in[118] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5391120 -2400 ) N ;
+    - la_data_in[119] + NET la_data_in[119] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5424720 -2400 ) N ;
+    - la_data_in[11] + NET la_data_in[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1795920 -2400 ) N ;
+    - la_data_in[120] + NET la_data_in[120] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5458320 -2400 ) N ;
+    - la_data_in[121] + NET la_data_in[121] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5491920 -2400 ) N ;
+    - la_data_in[122] + NET la_data_in[122] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5525520 -2400 ) N ;
+    - la_data_in[123] + NET la_data_in[123] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5559120 -2400 ) N ;
+    - la_data_in[124] + NET la_data_in[124] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5592720 -2400 ) N ;
+    - la_data_in[125] + NET la_data_in[125] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5626320 -2400 ) N ;
+    - la_data_in[126] + NET la_data_in[126] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5659920 -2400 ) N ;
+    - la_data_in[127] + NET la_data_in[127] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5693520 -2400 ) N ;
+    - la_data_in[12] + NET la_data_in[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1829520 -2400 ) N ;
+    - la_data_in[13] + NET la_data_in[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1863120 -2400 ) N ;
+    - la_data_in[14] + NET la_data_in[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1896720 -2400 ) N ;
+    - la_data_in[15] + NET la_data_in[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1930320 -2400 ) N ;
+    - la_data_in[16] + NET la_data_in[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1963920 -2400 ) N ;
+    - la_data_in[17] + NET la_data_in[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1997520 -2400 ) N ;
+    - la_data_in[18] + NET la_data_in[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2031120 -2400 ) N ;
+    - la_data_in[19] + NET la_data_in[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2064720 -2400 ) N ;
+    - la_data_in[1] + NET la_data_in[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1459920 -2400 ) N ;
+    - la_data_in[20] + NET la_data_in[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2098320 -2400 ) N ;
+    - la_data_in[21] + NET la_data_in[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2131920 -2400 ) N ;
+    - la_data_in[22] + NET la_data_in[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2165520 -2400 ) N ;
+    - la_data_in[23] + NET la_data_in[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2199120 -2400 ) N ;
+    - la_data_in[24] + NET la_data_in[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2232720 -2400 ) N ;
+    - la_data_in[25] + NET la_data_in[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2266320 -2400 ) N ;
+    - la_data_in[26] + NET la_data_in[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2299920 -2400 ) N ;
+    - la_data_in[27] + NET la_data_in[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2333520 -2400 ) N ;
+    - la_data_in[28] + NET la_data_in[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2367120 -2400 ) N ;
+    - la_data_in[29] + NET la_data_in[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2400720 -2400 ) N ;
+    - la_data_in[2] + NET la_data_in[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1493520 -2400 ) N ;
+    - la_data_in[30] + NET la_data_in[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2434320 -2400 ) N ;
+    - la_data_in[31] + NET la_data_in[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2467920 -2400 ) N ;
+    - la_data_in[32] + NET la_data_in[32] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2501520 -2400 ) N ;
+    - la_data_in[33] + NET la_data_in[33] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2535120 -2400 ) N ;
+    - la_data_in[34] + NET la_data_in[34] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2568720 -2400 ) N ;
+    - la_data_in[35] + NET la_data_in[35] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2602320 -2400 ) N ;
+    - la_data_in[36] + NET la_data_in[36] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2635920 -2400 ) N ;
+    - la_data_in[37] + NET la_data_in[37] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2669520 -2400 ) N ;
+    - la_data_in[38] + NET la_data_in[38] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2703120 -2400 ) N ;
+    - la_data_in[39] + NET la_data_in[39] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2736720 -2400 ) N ;
+    - la_data_in[3] + NET la_data_in[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1527120 -2400 ) N ;
+    - la_data_in[40] + NET la_data_in[40] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2770320 -2400 ) N ;
+    - la_data_in[41] + NET la_data_in[41] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2803920 -2400 ) N ;
+    - la_data_in[42] + NET la_data_in[42] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2837520 -2400 ) N ;
+    - la_data_in[43] + NET la_data_in[43] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2871120 -2400 ) N ;
+    - la_data_in[44] + NET la_data_in[44] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2904720 -2400 ) N ;
+    - la_data_in[45] + NET la_data_in[45] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2938320 -2400 ) N ;
+    - la_data_in[46] + NET la_data_in[46] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2971920 -2400 ) N ;
+    - la_data_in[47] + NET la_data_in[47] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3005520 -2400 ) N ;
+    - la_data_in[48] + NET la_data_in[48] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3039120 -2400 ) N ;
+    - la_data_in[49] + NET la_data_in[49] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3072720 -2400 ) N ;
+    - la_data_in[4] + NET la_data_in[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1560720 -2400 ) N ;
+    - la_data_in[50] + NET la_data_in[50] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3106320 -2400 ) N ;
+    - la_data_in[51] + NET la_data_in[51] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3139920 -2400 ) N ;
+    - la_data_in[52] + NET la_data_in[52] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3173520 -2400 ) N ;
+    - la_data_in[53] + NET la_data_in[53] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3207120 -2400 ) N ;
+    - la_data_in[54] + NET la_data_in[54] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3240720 -2400 ) N ;
+    - la_data_in[55] + NET la_data_in[55] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3274320 -2400 ) N ;
+    - la_data_in[56] + NET la_data_in[56] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3307920 -2400 ) N ;
+    - la_data_in[57] + NET la_data_in[57] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3341520 -2400 ) N ;
+    - la_data_in[58] + NET la_data_in[58] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3375120 -2400 ) N ;
+    - la_data_in[59] + NET la_data_in[59] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3408720 -2400 ) N ;
+    - la_data_in[5] + NET la_data_in[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1594320 -2400 ) N ;
+    - la_data_in[60] + NET la_data_in[60] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3442320 -2400 ) N ;
+    - la_data_in[61] + NET la_data_in[61] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3475920 -2400 ) N ;
+    - la_data_in[62] + NET la_data_in[62] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3509520 -2400 ) N ;
+    - la_data_in[63] + NET la_data_in[63] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3543120 -2400 ) N ;
+    - la_data_in[64] + NET la_data_in[64] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3576720 -2400 ) N ;
+    - la_data_in[65] + NET la_data_in[65] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3610320 -2400 ) N ;
+    - la_data_in[66] + NET la_data_in[66] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3643920 -2400 ) N ;
+    - la_data_in[67] + NET la_data_in[67] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3677520 -2400 ) N ;
+    - la_data_in[68] + NET la_data_in[68] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3711120 -2400 ) N ;
+    - la_data_in[69] + NET la_data_in[69] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3744720 -2400 ) N ;
+    - la_data_in[6] + NET la_data_in[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1627920 -2400 ) N ;
+    - la_data_in[70] + NET la_data_in[70] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3778320 -2400 ) N ;
+    - la_data_in[71] + NET la_data_in[71] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3811920 -2400 ) N ;
+    - la_data_in[72] + NET la_data_in[72] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3845520 -2400 ) N ;
+    - la_data_in[73] + NET la_data_in[73] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3879120 -2400 ) N ;
+    - la_data_in[74] + NET la_data_in[74] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3912720 -2400 ) N ;
+    - la_data_in[75] + NET la_data_in[75] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3946320 -2400 ) N ;
+    - la_data_in[76] + NET la_data_in[76] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3979920 -2400 ) N ;
+    - la_data_in[77] + NET la_data_in[77] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4013520 -2400 ) N ;
+    - la_data_in[78] + NET la_data_in[78] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4047120 -2400 ) N ;
+    - la_data_in[79] + NET la_data_in[79] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4080720 -2400 ) N ;
+    - la_data_in[7] + NET la_data_in[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1661520 -2400 ) N ;
+    - la_data_in[80] + NET la_data_in[80] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4114320 -2400 ) N ;
+    - la_data_in[81] + NET la_data_in[81] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4147920 -2400 ) N ;
+    - la_data_in[82] + NET la_data_in[82] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4181520 -2400 ) N ;
+    - la_data_in[83] + NET la_data_in[83] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4215120 -2400 ) N ;
+    - la_data_in[84] + NET la_data_in[84] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4248720 -2400 ) N ;
+    - la_data_in[85] + NET la_data_in[85] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4282320 -2400 ) N ;
+    - la_data_in[86] + NET la_data_in[86] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4315920 -2400 ) N ;
+    - la_data_in[87] + NET la_data_in[87] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4349520 -2400 ) N ;
+    - la_data_in[88] + NET la_data_in[88] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4383120 -2400 ) N ;
+    - la_data_in[89] + NET la_data_in[89] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4416720 -2400 ) N ;
+    - la_data_in[8] + NET la_data_in[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1695120 -2400 ) N ;
+    - la_data_in[90] + NET la_data_in[90] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4450320 -2400 ) N ;
+    - la_data_in[91] + NET la_data_in[91] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4483920 -2400 ) N ;
+    - la_data_in[92] + NET la_data_in[92] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4517520 -2400 ) N ;
+    - la_data_in[93] + NET la_data_in[93] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4551120 -2400 ) N ;
+    - la_data_in[94] + NET la_data_in[94] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4584720 -2400 ) N ;
+    - la_data_in[95] + NET la_data_in[95] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4618320 -2400 ) N ;
+    - la_data_in[96] + NET la_data_in[96] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4651920 -2400 ) N ;
+    - la_data_in[97] + NET la_data_in[97] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4685520 -2400 ) N ;
+    - la_data_in[98] + NET la_data_in[98] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4719120 -2400 ) N ;
+    - la_data_in[99] + NET la_data_in[99] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4752720 -2400 ) N ;
+    - la_data_in[9] + NET la_data_in[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1728720 -2400 ) N ;
+    - la_data_out[0] + NET la_data_out[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1437520 -2400 ) N ;
+    - la_data_out[100] + NET la_data_out[100] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4797520 -2400 ) N ;
+    - la_data_out[101] + NET la_data_out[101] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4831120 -2400 ) N ;
+    - la_data_out[102] + NET la_data_out[102] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4864720 -2400 ) N ;
+    - la_data_out[103] + NET la_data_out[103] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4898320 -2400 ) N ;
+    - la_data_out[104] + NET la_data_out[104] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4931920 -2400 ) N ;
+    - la_data_out[105] + NET la_data_out[105] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4965520 -2400 ) N ;
+    - la_data_out[106] + NET la_data_out[106] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4999120 -2400 ) N ;
+    - la_data_out[107] + NET la_data_out[107] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5032720 -2400 ) N ;
+    - la_data_out[108] + NET la_data_out[108] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5066320 -2400 ) N ;
+    - la_data_out[109] + NET la_data_out[109] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5099920 -2400 ) N ;
+    - la_data_out[10] + NET la_data_out[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1773520 -2400 ) N ;
+    - la_data_out[110] + NET la_data_out[110] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5133520 -2400 ) N ;
+    - la_data_out[111] + NET la_data_out[111] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5167120 -2400 ) N ;
+    - la_data_out[112] + NET la_data_out[112] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5200720 -2400 ) N ;
+    - la_data_out[113] + NET la_data_out[113] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5234320 -2400 ) N ;
+    - la_data_out[114] + NET la_data_out[114] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5267920 -2400 ) N ;
+    - la_data_out[115] + NET la_data_out[115] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5301520 -2400 ) N ;
+    - la_data_out[116] + NET la_data_out[116] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5335120 -2400 ) N ;
+    - la_data_out[117] + NET la_data_out[117] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5368720 -2400 ) N ;
+    - la_data_out[118] + NET la_data_out[118] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5402320 -2400 ) N ;
+    - la_data_out[119] + NET la_data_out[119] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5435920 -2400 ) N ;
+    - la_data_out[11] + NET la_data_out[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1807120 -2400 ) N ;
+    - la_data_out[120] + NET la_data_out[120] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5469520 -2400 ) N ;
+    - la_data_out[121] + NET la_data_out[121] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5503120 -2400 ) N ;
+    - la_data_out[122] + NET la_data_out[122] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5536720 -2400 ) N ;
+    - la_data_out[123] + NET la_data_out[123] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5570320 -2400 ) N ;
+    - la_data_out[124] + NET la_data_out[124] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5603920 -2400 ) N ;
+    - la_data_out[125] + NET la_data_out[125] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5637520 -2400 ) N ;
+    - la_data_out[126] + NET la_data_out[126] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5671120 -2400 ) N ;
+    - la_data_out[127] + NET la_data_out[127] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5704720 -2400 ) N ;
+    - la_data_out[12] + NET la_data_out[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1840720 -2400 ) N ;
+    - la_data_out[13] + NET la_data_out[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1874320 -2400 ) N ;
+    - la_data_out[14] + NET la_data_out[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1907920 -2400 ) N ;
+    - la_data_out[15] + NET la_data_out[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1941520 -2400 ) N ;
+    - la_data_out[16] + NET la_data_out[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1975120 -2400 ) N ;
+    - la_data_out[17] + NET la_data_out[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2008720 -2400 ) N ;
+    - la_data_out[18] + NET la_data_out[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2042320 -2400 ) N ;
+    - la_data_out[19] + NET la_data_out[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2075920 -2400 ) N ;
+    - la_data_out[1] + NET la_data_out[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1471120 -2400 ) N ;
+    - la_data_out[20] + NET la_data_out[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2109520 -2400 ) N ;
+    - la_data_out[21] + NET la_data_out[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2143120 -2400 ) N ;
+    - la_data_out[22] + NET la_data_out[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2176720 -2400 ) N ;
+    - la_data_out[23] + NET la_data_out[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2210320 -2400 ) N ;
+    - la_data_out[24] + NET la_data_out[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2243920 -2400 ) N ;
+    - la_data_out[25] + NET la_data_out[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2277520 -2400 ) N ;
+    - la_data_out[26] + NET la_data_out[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2311120 -2400 ) N ;
+    - la_data_out[27] + NET la_data_out[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2344720 -2400 ) N ;
+    - la_data_out[28] + NET la_data_out[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2378320 -2400 ) N ;
+    - la_data_out[29] + NET la_data_out[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2411920 -2400 ) N ;
+    - la_data_out[2] + NET la_data_out[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1504720 -2400 ) N ;
+    - la_data_out[30] + NET la_data_out[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2445520 -2400 ) N ;
+    - la_data_out[31] + NET la_data_out[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2479120 -2400 ) N ;
+    - la_data_out[32] + NET la_data_out[32] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2512720 -2400 ) N ;
+    - la_data_out[33] + NET la_data_out[33] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2546320 -2400 ) N ;
+    - la_data_out[34] + NET la_data_out[34] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2579920 -2400 ) N ;
+    - la_data_out[35] + NET la_data_out[35] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2613520 -2400 ) N ;
+    - la_data_out[36] + NET la_data_out[36] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2647120 -2400 ) N ;
+    - la_data_out[37] + NET la_data_out[37] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2680720 -2400 ) N ;
+    - la_data_out[38] + NET la_data_out[38] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2714320 -2400 ) N ;
+    - la_data_out[39] + NET la_data_out[39] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2747920 -2400 ) N ;
+    - la_data_out[3] + NET la_data_out[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1538320 -2400 ) N ;
+    - la_data_out[40] + NET la_data_out[40] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2781520 -2400 ) N ;
+    - la_data_out[41] + NET la_data_out[41] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2815120 -2400 ) N ;
+    - la_data_out[42] + NET la_data_out[42] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2848720 -2400 ) N ;
+    - la_data_out[43] + NET la_data_out[43] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2882320 -2400 ) N ;
+    - la_data_out[44] + NET la_data_out[44] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2915920 -2400 ) N ;
+    - la_data_out[45] + NET la_data_out[45] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2949520 -2400 ) N ;
+    - la_data_out[46] + NET la_data_out[46] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2983120 -2400 ) N ;
+    - la_data_out[47] + NET la_data_out[47] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3016720 -2400 ) N ;
+    - la_data_out[48] + NET la_data_out[48] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3050320 -2400 ) N ;
+    - la_data_out[49] + NET la_data_out[49] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3083920 -2400 ) N ;
+    - la_data_out[4] + NET la_data_out[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1571920 -2400 ) N ;
+    - la_data_out[50] + NET la_data_out[50] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3117520 -2400 ) N ;
+    - la_data_out[51] + NET la_data_out[51] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3151120 -2400 ) N ;
+    - la_data_out[52] + NET la_data_out[52] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3184720 -2400 ) N ;
+    - la_data_out[53] + NET la_data_out[53] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3218320 -2400 ) N ;
+    - la_data_out[54] + NET la_data_out[54] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3251920 -2400 ) N ;
+    - la_data_out[55] + NET la_data_out[55] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3285520 -2400 ) N ;
+    - la_data_out[56] + NET la_data_out[56] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3319120 -2400 ) N ;
+    - la_data_out[57] + NET la_data_out[57] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3352720 -2400 ) N ;
+    - la_data_out[58] + NET la_data_out[58] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3386320 -2400 ) N ;
+    - la_data_out[59] + NET la_data_out[59] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3419920 -2400 ) N ;
+    - la_data_out[5] + NET la_data_out[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1605520 -2400 ) N ;
+    - la_data_out[60] + NET la_data_out[60] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3453520 -2400 ) N ;
+    - la_data_out[61] + NET la_data_out[61] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3487120 -2400 ) N ;
+    - la_data_out[62] + NET la_data_out[62] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3520720 -2400 ) N ;
+    - la_data_out[63] + NET la_data_out[63] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3554320 -2400 ) N ;
+    - la_data_out[64] + NET la_data_out[64] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3587920 -2400 ) N ;
+    - la_data_out[65] + NET la_data_out[65] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3621520 -2400 ) N ;
+    - la_data_out[66] + NET la_data_out[66] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3655120 -2400 ) N ;
+    - la_data_out[67] + NET la_data_out[67] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3688720 -2400 ) N ;
+    - la_data_out[68] + NET la_data_out[68] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3722320 -2400 ) N ;
+    - la_data_out[69] + NET la_data_out[69] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3755920 -2400 ) N ;
+    - la_data_out[6] + NET la_data_out[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1639120 -2400 ) N ;
+    - la_data_out[70] + NET la_data_out[70] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3789520 -2400 ) N ;
+    - la_data_out[71] + NET la_data_out[71] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3823120 -2400 ) N ;
+    - la_data_out[72] + NET la_data_out[72] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3856720 -2400 ) N ;
+    - la_data_out[73] + NET la_data_out[73] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3890320 -2400 ) N ;
+    - la_data_out[74] + NET la_data_out[74] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3923920 -2400 ) N ;
+    - la_data_out[75] + NET la_data_out[75] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3957520 -2400 ) N ;
+    - la_data_out[76] + NET la_data_out[76] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3991120 -2400 ) N ;
+    - la_data_out[77] + NET la_data_out[77] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4024720 -2400 ) N ;
+    - la_data_out[78] + NET la_data_out[78] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4058320 -2400 ) N ;
+    - la_data_out[79] + NET la_data_out[79] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4091920 -2400 ) N ;
+    - la_data_out[7] + NET la_data_out[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1672720 -2400 ) N ;
+    - la_data_out[80] + NET la_data_out[80] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4125520 -2400 ) N ;
+    - la_data_out[81] + NET la_data_out[81] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4159120 -2400 ) N ;
+    - la_data_out[82] + NET la_data_out[82] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4192720 -2400 ) N ;
+    - la_data_out[83] + NET la_data_out[83] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4226320 -2400 ) N ;
+    - la_data_out[84] + NET la_data_out[84] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4259920 -2400 ) N ;
+    - la_data_out[85] + NET la_data_out[85] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4293520 -2400 ) N ;
+    - la_data_out[86] + NET la_data_out[86] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4327120 -2400 ) N ;
+    - la_data_out[87] + NET la_data_out[87] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4360720 -2400 ) N ;
+    - la_data_out[88] + NET la_data_out[88] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4394320 -2400 ) N ;
+    - la_data_out[89] + NET la_data_out[89] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4427920 -2400 ) N ;
+    - la_data_out[8] + NET la_data_out[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1706320 -2400 ) N ;
+    - la_data_out[90] + NET la_data_out[90] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4461520 -2400 ) N ;
+    - la_data_out[91] + NET la_data_out[91] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4495120 -2400 ) N ;
+    - la_data_out[92] + NET la_data_out[92] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4528720 -2400 ) N ;
+    - la_data_out[93] + NET la_data_out[93] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4562320 -2400 ) N ;
+    - la_data_out[94] + NET la_data_out[94] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4595920 -2400 ) N ;
+    - la_data_out[95] + NET la_data_out[95] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4629520 -2400 ) N ;
+    - la_data_out[96] + NET la_data_out[96] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4663120 -2400 ) N ;
+    - la_data_out[97] + NET la_data_out[97] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4696720 -2400 ) N ;
+    - la_data_out[98] + NET la_data_out[98] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4730320 -2400 ) N ;
+    - la_data_out[99] + NET la_data_out[99] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4763920 -2400 ) N ;
+    - la_data_out[9] + NET la_data_out[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1739920 -2400 ) N ;
+    - la_oenb[0] + NET la_oenb[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1448720 -2400 ) N ;
+    - la_oenb[100] + NET la_oenb[100] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4808720 -2400 ) N ;
+    - la_oenb[101] + NET la_oenb[101] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4842320 -2400 ) N ;
+    - la_oenb[102] + NET la_oenb[102] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4875920 -2400 ) N ;
+    - la_oenb[103] + NET la_oenb[103] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4909520 -2400 ) N ;
+    - la_oenb[104] + NET la_oenb[104] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4943120 -2400 ) N ;
+    - la_oenb[105] + NET la_oenb[105] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4976720 -2400 ) N ;
+    - la_oenb[106] + NET la_oenb[106] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5010320 -2400 ) N ;
+    - la_oenb[107] + NET la_oenb[107] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5043920 -2400 ) N ;
+    - la_oenb[108] + NET la_oenb[108] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5077520 -2400 ) N ;
+    - la_oenb[109] + NET la_oenb[109] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5111120 -2400 ) N ;
+    - la_oenb[10] + NET la_oenb[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1784720 -2400 ) N ;
+    - la_oenb[110] + NET la_oenb[110] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5144720 -2400 ) N ;
+    - la_oenb[111] + NET la_oenb[111] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5178320 -2400 ) N ;
+    - la_oenb[112] + NET la_oenb[112] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5211920 -2400 ) N ;
+    - la_oenb[113] + NET la_oenb[113] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5245520 -2400 ) N ;
+    - la_oenb[114] + NET la_oenb[114] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5279120 -2400 ) N ;
+    - la_oenb[115] + NET la_oenb[115] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5312720 -2400 ) N ;
+    - la_oenb[116] + NET la_oenb[116] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5346320 -2400 ) N ;
+    - la_oenb[117] + NET la_oenb[117] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5379920 -2400 ) N ;
+    - la_oenb[118] + NET la_oenb[118] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5413520 -2400 ) N ;
+    - la_oenb[119] + NET la_oenb[119] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5447120 -2400 ) N ;
+    - la_oenb[11] + NET la_oenb[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1818320 -2400 ) N ;
+    - la_oenb[120] + NET la_oenb[120] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5480720 -2400 ) N ;
+    - la_oenb[121] + NET la_oenb[121] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5514320 -2400 ) N ;
+    - la_oenb[122] + NET la_oenb[122] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5547920 -2400 ) N ;
+    - la_oenb[123] + NET la_oenb[123] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5581520 -2400 ) N ;
+    - la_oenb[124] + NET la_oenb[124] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5615120 -2400 ) N ;
+    - la_oenb[125] + NET la_oenb[125] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5648720 -2400 ) N ;
+    - la_oenb[126] + NET la_oenb[126] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5682320 -2400 ) N ;
+    - la_oenb[127] + NET la_oenb[127] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5715920 -2400 ) N ;
+    - la_oenb[12] + NET la_oenb[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1851920 -2400 ) N ;
+    - la_oenb[13] + NET la_oenb[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1885520 -2400 ) N ;
+    - la_oenb[14] + NET la_oenb[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1919120 -2400 ) N ;
+    - la_oenb[15] + NET la_oenb[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1952720 -2400 ) N ;
+    - la_oenb[16] + NET la_oenb[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1986320 -2400 ) N ;
+    - la_oenb[17] + NET la_oenb[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2019920 -2400 ) N ;
+    - la_oenb[18] + NET la_oenb[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2053520 -2400 ) N ;
+    - la_oenb[19] + NET la_oenb[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2087120 -2400 ) N ;
+    - la_oenb[1] + NET la_oenb[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1482320 -2400 ) N ;
+    - la_oenb[20] + NET la_oenb[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2120720 -2400 ) N ;
+    - la_oenb[21] + NET la_oenb[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2154320 -2400 ) N ;
+    - la_oenb[22] + NET la_oenb[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2187920 -2400 ) N ;
+    - la_oenb[23] + NET la_oenb[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2221520 -2400 ) N ;
+    - la_oenb[24] + NET la_oenb[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2255120 -2400 ) N ;
+    - la_oenb[25] + NET la_oenb[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2288720 -2400 ) N ;
+    - la_oenb[26] + NET la_oenb[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2322320 -2400 ) N ;
+    - la_oenb[27] + NET la_oenb[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2355920 -2400 ) N ;
+    - la_oenb[28] + NET la_oenb[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2389520 -2400 ) N ;
+    - la_oenb[29] + NET la_oenb[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2423120 -2400 ) N ;
+    - la_oenb[2] + NET la_oenb[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1515920 -2400 ) N ;
+    - la_oenb[30] + NET la_oenb[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2456720 -2400 ) N ;
+    - la_oenb[31] + NET la_oenb[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2490320 -2400 ) N ;
+    - la_oenb[32] + NET la_oenb[32] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2523920 -2400 ) N ;
+    - la_oenb[33] + NET la_oenb[33] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2557520 -2400 ) N ;
+    - la_oenb[34] + NET la_oenb[34] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2591120 -2400 ) N ;
+    - la_oenb[35] + NET la_oenb[35] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2624720 -2400 ) N ;
+    - la_oenb[36] + NET la_oenb[36] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2658320 -2400 ) N ;
+    - la_oenb[37] + NET la_oenb[37] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2691920 -2400 ) N ;
+    - la_oenb[38] + NET la_oenb[38] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2725520 -2400 ) N ;
+    - la_oenb[39] + NET la_oenb[39] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2759120 -2400 ) N ;
+    - la_oenb[3] + NET la_oenb[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1549520 -2400 ) N ;
+    - la_oenb[40] + NET la_oenb[40] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2792720 -2400 ) N ;
+    - la_oenb[41] + NET la_oenb[41] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2826320 -2400 ) N ;
+    - la_oenb[42] + NET la_oenb[42] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2859920 -2400 ) N ;
+    - la_oenb[43] + NET la_oenb[43] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2893520 -2400 ) N ;
+    - la_oenb[44] + NET la_oenb[44] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2927120 -2400 ) N ;
+    - la_oenb[45] + NET la_oenb[45] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2960720 -2400 ) N ;
+    - la_oenb[46] + NET la_oenb[46] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 2994320 -2400 ) N ;
+    - la_oenb[47] + NET la_oenb[47] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3027920 -2400 ) N ;
+    - la_oenb[48] + NET la_oenb[48] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3061520 -2400 ) N ;
+    - la_oenb[49] + NET la_oenb[49] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3095120 -2400 ) N ;
+    - la_oenb[4] + NET la_oenb[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1583120 -2400 ) N ;
+    - la_oenb[50] + NET la_oenb[50] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3128720 -2400 ) N ;
+    - la_oenb[51] + NET la_oenb[51] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3162320 -2400 ) N ;
+    - la_oenb[52] + NET la_oenb[52] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3195920 -2400 ) N ;
+    - la_oenb[53] + NET la_oenb[53] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3229520 -2400 ) N ;
+    - la_oenb[54] + NET la_oenb[54] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3263120 -2400 ) N ;
+    - la_oenb[55] + NET la_oenb[55] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3296720 -2400 ) N ;
+    - la_oenb[56] + NET la_oenb[56] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3330320 -2400 ) N ;
+    - la_oenb[57] + NET la_oenb[57] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3363920 -2400 ) N ;
+    - la_oenb[58] + NET la_oenb[58] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3397520 -2400 ) N ;
+    - la_oenb[59] + NET la_oenb[59] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3431120 -2400 ) N ;
+    - la_oenb[5] + NET la_oenb[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1616720 -2400 ) N ;
+    - la_oenb[60] + NET la_oenb[60] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3464720 -2400 ) N ;
+    - la_oenb[61] + NET la_oenb[61] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3498320 -2400 ) N ;
+    - la_oenb[62] + NET la_oenb[62] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3531920 -2400 ) N ;
+    - la_oenb[63] + NET la_oenb[63] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3565520 -2400 ) N ;
+    - la_oenb[64] + NET la_oenb[64] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3599120 -2400 ) N ;
+    - la_oenb[65] + NET la_oenb[65] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3632720 -2400 ) N ;
+    - la_oenb[66] + NET la_oenb[66] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3666320 -2400 ) N ;
+    - la_oenb[67] + NET la_oenb[67] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3699920 -2400 ) N ;
+    - la_oenb[68] + NET la_oenb[68] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3733520 -2400 ) N ;
+    - la_oenb[69] + NET la_oenb[69] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3767120 -2400 ) N ;
+    - la_oenb[6] + NET la_oenb[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1650320 -2400 ) N ;
+    - la_oenb[70] + NET la_oenb[70] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3800720 -2400 ) N ;
+    - la_oenb[71] + NET la_oenb[71] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3834320 -2400 ) N ;
+    - la_oenb[72] + NET la_oenb[72] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3867920 -2400 ) N ;
+    - la_oenb[73] + NET la_oenb[73] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3901520 -2400 ) N ;
+    - la_oenb[74] + NET la_oenb[74] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3935120 -2400 ) N ;
+    - la_oenb[75] + NET la_oenb[75] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 3968720 -2400 ) N ;
+    - la_oenb[76] + NET la_oenb[76] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4002320 -2400 ) N ;
+    - la_oenb[77] + NET la_oenb[77] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4035920 -2400 ) N ;
+    - la_oenb[78] + NET la_oenb[78] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4069520 -2400 ) N ;
+    - la_oenb[79] + NET la_oenb[79] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4103120 -2400 ) N ;
+    - la_oenb[7] + NET la_oenb[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1683920 -2400 ) N ;
+    - la_oenb[80] + NET la_oenb[80] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4136720 -2400 ) N ;
+    - la_oenb[81] + NET la_oenb[81] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4170320 -2400 ) N ;
+    - la_oenb[82] + NET la_oenb[82] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4203920 -2400 ) N ;
+    - la_oenb[83] + NET la_oenb[83] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4237520 -2400 ) N ;
+    - la_oenb[84] + NET la_oenb[84] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4271120 -2400 ) N ;
+    - la_oenb[85] + NET la_oenb[85] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4304720 -2400 ) N ;
+    - la_oenb[86] + NET la_oenb[86] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4338320 -2400 ) N ;
+    - la_oenb[87] + NET la_oenb[87] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4371920 -2400 ) N ;
+    - la_oenb[88] + NET la_oenb[88] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4405520 -2400 ) N ;
+    - la_oenb[89] + NET la_oenb[89] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4439120 -2400 ) N ;
+    - la_oenb[8] + NET la_oenb[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1717520 -2400 ) N ;
+    - la_oenb[90] + NET la_oenb[90] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4472720 -2400 ) N ;
+    - la_oenb[91] + NET la_oenb[91] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4506320 -2400 ) N ;
+    - la_oenb[92] + NET la_oenb[92] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4539920 -2400 ) N ;
+    - la_oenb[93] + NET la_oenb[93] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4573520 -2400 ) N ;
+    - la_oenb[94] + NET la_oenb[94] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4607120 -2400 ) N ;
+    - la_oenb[95] + NET la_oenb[95] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4640720 -2400 ) N ;
+    - la_oenb[96] + NET la_oenb[96] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4674320 -2400 ) N ;
+    - la_oenb[97] + NET la_oenb[97] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4707920 -2400 ) N ;
+    - la_oenb[98] + NET la_oenb[98] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4741520 -2400 ) N ;
+    - la_oenb[99] + NET la_oenb[99] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 4775120 -2400 ) N ;
+    - la_oenb[9] + NET la_oenb[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1751120 -2400 ) N ;
+    - user_clock2 + NET user_clock2 + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5727120 -2400 ) N ;
+    - user_irq[0] + NET user_irq[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5738320 -2400 ) N ;
+    - user_irq[1] + NET user_irq[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5749520 -2400 ) N ;
+    - user_irq[2] + NET user_irq[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 5760720 -2400 ) N ;
+    - vccd1 + NET vccd1 + SPECIAL + DIRECTION INOUT + USE POWER
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal5 ( -3235280 -5763100 ) ( 3235280 -5756900 )
+        + LAYER Metal4 ( 2780420 -6018800 ) ( 2786620 413680 )
+        + LAYER Metal4 ( 2420420 -6018800 ) ( 2426620 413680 )
+        + LAYER Metal4 ( 2060420 -6018800 ) ( 2066620 413680 )
+        + LAYER Metal4 ( 1700420 -6018800 ) ( 1706620 413680 )
+        + LAYER Metal4 ( 1340420 -6018800 ) ( 1346620 413680 )
+        + LAYER Metal4 ( 980420 -6018800 ) ( 986620 413680 )
+        + LAYER Metal4 ( 620420 -6018800 ) ( 626620 413680 )
+        + LAYER Metal4 ( 260420 -6018800 ) ( 266620 413680 )
+        + LAYER Metal4 ( -99580 -6018800 ) ( -93380 413680 )
+        + LAYER Metal4 ( -459580 -6018800 ) ( -453380 413680 )
+        + LAYER Metal4 ( -819580 -2928420 ) ( -813380 413680 )
+        + LAYER Metal4 ( -819580 -6018800 ) ( -813380 -4119420 )
+        + LAYER Metal4 ( -1179580 -2928420 ) ( -1173380 413680 )
+        + LAYER Metal4 ( -1179580 -6018800 ) ( -1173380 -4119420 )
+        + LAYER Metal4 ( -1539580 -2928420 ) ( -1533380 413680 )
+        + LAYER Metal4 ( -1539580 -6018800 ) ( -1533380 -4119420 )
+        + LAYER Metal4 ( -1899580 -6018800 ) ( -1893380 413680 )
+        + LAYER Metal4 ( -2259580 -6018800 ) ( -2253380 413680 )
+        + LAYER Metal4 ( -2619580 -6018800 ) ( -2613380 413680 )
+        + LAYER Metal4 ( -2979580 -6018800 ) ( -2973380 413680 )
+        + LAYER Metal4 ( 3011380 -5801100 ) ( 3017580 195980 )
+        + LAYER Metal5 ( -3017580 189780 ) ( 3017580 195980 )
+        + LAYER Metal5 ( -3017580 -5801100 ) ( 3017580 -5794900 )
+        + LAYER Metal4 ( -3017580 -5801100 ) ( -3011380 195980 )
+        + FIXED ( 2999920 5801360 ) N ;
+    - vccd2 + NET vccd2 + SPECIAL + DIRECTION INOUT + USE POWER
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal5 ( -3235280 -5763100 ) ( 3235280 -5756900 )
+        + LAYER Metal4 ( 2854820 -6093200 ) ( 2861020 339280 )
+        + LAYER Metal4 ( 2494820 -6093200 ) ( 2501020 339280 )
+        + LAYER Metal4 ( 2134820 -6093200 ) ( 2141020 339280 )
+        + LAYER Metal4 ( 1774820 -6093200 ) ( 1781020 339280 )
+        + LAYER Metal4 ( 1414820 -6093200 ) ( 1421020 339280 )
+        + LAYER Metal4 ( 1054820 -6093200 ) ( 1061020 339280 )
+        + LAYER Metal4 ( 694820 -6093200 ) ( 701020 339280 )
+        + LAYER Metal4 ( 334820 -6093200 ) ( 341020 339280 )
+        + LAYER Metal4 ( -25180 -6093200 ) ( -18980 339280 )
+        + LAYER Metal4 ( -385180 -6093200 ) ( -378980 339280 )
+        + LAYER Metal4 ( -745180 -6093200 ) ( -738980 339280 )
+        + LAYER Metal4 ( -1105180 -3002820 ) ( -1098980 339280 )
+        + LAYER Metal4 ( -1105180 -6093200 ) ( -1098980 -4193820 )
+        + LAYER Metal4 ( -1465180 -3002820 ) ( -1458980 339280 )
+        + LAYER Metal4 ( -1465180 -6093200 ) ( -1458980 -4193820 )
+        + LAYER Metal4 ( -1825180 -6093200 ) ( -1818980 339280 )
+        + LAYER Metal4 ( -2185180 -6093200 ) ( -2178980 339280 )
+        + LAYER Metal4 ( -2545180 -6093200 ) ( -2538980 339280 )
+        + LAYER Metal4 ( -2905180 -6093200 ) ( -2898980 339280 )
+        + LAYER Metal4 ( 3073580 -5937700 ) ( 3079780 183780 )
+        + LAYER Metal5 ( -3079780 177580 ) ( 3079780 183780 )
+        + LAYER Metal5 ( -3079780 -5937700 ) ( 3079780 -5931500 )
+        + LAYER Metal4 ( -3079780 -5937700 ) ( -3073580 183780 )
+        + FIXED ( 2999920 5875760 ) N ;
+    - vdda1 + NET vdda1 + SPECIAL + DIRECTION INOUT + USE POWER
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal5 ( -3235280 -5763100 ) ( 3235280 -5756900 )
+        + LAYER Metal4 ( 2929220 -6167600 ) ( 2935420 264880 )
+        + LAYER Metal4 ( 2569220 -6167600 ) ( 2575420 264880 )
+        + LAYER Metal4 ( 2209220 -6167600 ) ( 2215420 264880 )
+        + LAYER Metal4 ( 1849220 -6167600 ) ( 1855420 264880 )
+        + LAYER Metal4 ( 1489220 -6167600 ) ( 1495420 264880 )
+        + LAYER Metal4 ( 1129220 -6167600 ) ( 1135420 264880 )
+        + LAYER Metal4 ( 769220 -6167600 ) ( 775420 264880 )
+        + LAYER Metal4 ( 409220 -6167600 ) ( 415420 264880 )
+        + LAYER Metal4 ( 49220 -6167600 ) ( 55420 264880 )
+        + LAYER Metal4 ( -310780 -6167600 ) ( -304580 264880 )
+        + LAYER Metal4 ( -670780 -6167600 ) ( -664580 264880 )
+        + LAYER Metal4 ( -1030780 -3077220 ) ( -1024580 264880 )
+        + LAYER Metal4 ( -1030780 -6167600 ) ( -1024580 -4268220 )
+        + LAYER Metal4 ( -1390780 -3077220 ) ( -1384580 264880 )
+        + LAYER Metal4 ( -1390780 -6167600 ) ( -1384580 -4268220 )
+        + LAYER Metal4 ( -1750780 -6167600 ) ( -1744580 264880 )
+        + LAYER Metal4 ( -2110780 -6167600 ) ( -2104580 264880 )
+        + LAYER Metal4 ( -2470780 -6167600 ) ( -2464580 264880 )
+        + LAYER Metal4 ( -2830780 -6167600 ) ( -2824580 264880 )
+        + LAYER Metal4 ( 3135780 -6074300 ) ( 3141980 171580 )
+        + LAYER Metal5 ( -3141980 165380 ) ( 3141980 171580 )
+        + LAYER Metal5 ( -3141980 -6074300 ) ( 3141980 -6068100 )
+        + LAYER Metal4 ( -3141980 -6074300 ) ( -3135780 171580 )
+        + FIXED ( 2999920 5950160 ) N ;
+    - vdda2 + NET vdda2 + SPECIAL + DIRECTION INOUT + USE POWER
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal4 ( 2643620 -5882000 ) ( 2649820 550480 )
+        + LAYER Metal4 ( 2283620 -5882000 ) ( 2289820 550480 )
+        + LAYER Metal4 ( 1923620 -5882000 ) ( 1929820 550480 )
+        + LAYER Metal4 ( 1563620 -5882000 ) ( 1569820 550480 )
+        + LAYER Metal4 ( 1203620 -5882000 ) ( 1209820 550480 )
+        + LAYER Metal4 ( 843620 -5882000 ) ( 849820 550480 )
+        + LAYER Metal4 ( 483620 -5882000 ) ( 489820 550480 )
+        + LAYER Metal4 ( 123620 -5882000 ) ( 129820 550480 )
+        + LAYER Metal4 ( -236380 -5882000 ) ( -230180 550480 )
+        + LAYER Metal4 ( -596380 -5882000 ) ( -590180 550480 )
+        + LAYER Metal4 ( -956380 -2791620 ) ( -950180 550480 )
+        + LAYER Metal4 ( -956380 -5882000 ) ( -950180 -3982620 )
+        + LAYER Metal4 ( -1316380 -2785240 ) ( -1310180 550480 )
+        + LAYER Metal4 ( -1316380 -5882000 ) ( -1310180 -3982620 )
+        + LAYER Metal4 ( -1676380 -2791620 ) ( -1670180 550480 )
+        + LAYER Metal4 ( -1676380 -5882000 ) ( -1670180 -3982620 )
+        + LAYER Metal4 ( -2036380 -5882000 ) ( -2030180 550480 )
+        + LAYER Metal4 ( -2396380 -5882000 ) ( -2390180 550480 )
+        + LAYER Metal4 ( -2756380 -5882000 ) ( -2750180 550480 )
+        + LAYER Metal4 ( 3197980 -5850900 ) ( 3204180 519380 )
+        + LAYER Metal5 ( -3204180 513180 ) ( 3204180 519380 )
+        + LAYER Metal5 ( -3204180 -5850900 ) ( 3204180 -5844700 )
+        + LAYER Metal4 ( -3204180 -5850900 ) ( -3197980 519380 )
+        + FIXED ( 2999920 5664560 ) N ;
+    - vssa1 + NET vssa1 + SPECIAL + DIRECTION INOUT + USE GROUND
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal4 ( 2966420 -5844800 ) ( 2972620 587680 )
+        + LAYER Metal4 ( 2606420 -5844800 ) ( 2612620 587680 )
+        + LAYER Metal4 ( 2246420 -5844800 ) ( 2252620 587680 )
+        + LAYER Metal4 ( 1886420 -5844800 ) ( 1892620 587680 )
+        + LAYER Metal4 ( 1526420 -5844800 ) ( 1532620 587680 )
+        + LAYER Metal4 ( 1166420 -5844800 ) ( 1172620 587680 )
+        + LAYER Metal4 ( 806420 -5844800 ) ( 812620 587680 )
+        + LAYER Metal4 ( 446420 -5844800 ) ( 452620 587680 )
+        + LAYER Metal4 ( 86420 -5844800 ) ( 92620 587680 )
+        + LAYER Metal4 ( -273580 -5844800 ) ( -267380 587680 )
+        + LAYER Metal4 ( -633580 -5844800 ) ( -627380 587680 )
+        + LAYER Metal4 ( -993580 -2754420 ) ( -987380 587680 )
+        + LAYER Metal4 ( -993580 -5844800 ) ( -987380 -3945420 )
+        + LAYER Metal4 ( -1353580 -2754420 ) ( -1347380 587680 )
+        + LAYER Metal4 ( -1353580 -5844800 ) ( -1347380 -3945420 )
+        + LAYER Metal4 ( -1713580 -5844800 ) ( -1707380 587680 )
+        + LAYER Metal4 ( -2073580 -5844800 ) ( -2067380 587680 )
+        + LAYER Metal4 ( -2433580 -5844800 ) ( -2427380 587680 )
+        + LAYER Metal4 ( -2793580 -5844800 ) ( -2787380 587680 )
+        + LAYER Metal4 ( 3166880 -5782600 ) ( 3173080 525480 )
+        + LAYER Metal5 ( -3173080 519280 ) ( 3173080 525480 )
+        + LAYER Metal5 ( -3173080 -5782600 ) ( 3173080 -5776400 )
+        + LAYER Metal4 ( -3173080 -5782600 ) ( -3166880 525480 )
+        + FIXED ( 2999920 5627360 ) N ;
+    - vssa2 + NET vssa2 + SPECIAL + DIRECTION INOUT + USE GROUND
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal4 ( 2680820 -5919200 ) ( 2687020 513280 )
+        + LAYER Metal4 ( 2320820 -5919200 ) ( 2327020 513280 )
+        + LAYER Metal4 ( 1960820 -5919200 ) ( 1967020 513280 )
+        + LAYER Metal4 ( 1600820 -5919200 ) ( 1607020 513280 )
+        + LAYER Metal4 ( 1240820 -5919200 ) ( 1247020 513280 )
+        + LAYER Metal4 ( 880820 -5919200 ) ( 887020 513280 )
+        + LAYER Metal4 ( 520820 -5919200 ) ( 527020 513280 )
+        + LAYER Metal4 ( 160820 -5919200 ) ( 167020 513280 )
+        + LAYER Metal4 ( -199180 -5919200 ) ( -192980 513280 )
+        + LAYER Metal4 ( -559180 -5919200 ) ( -552980 513280 )
+        + LAYER Metal4 ( -919180 -2828820 ) ( -912980 513280 )
+        + LAYER Metal4 ( -919180 -5919200 ) ( -912980 -4019820 )
+        + LAYER Metal4 ( -1279180 -2828820 ) ( -1272980 513280 )
+        + LAYER Metal4 ( -1279180 -5919200 ) ( -1272980 -4019820 )
+        + LAYER Metal4 ( -1639180 -2828820 ) ( -1632980 513280 )
+        + LAYER Metal4 ( -1639180 -5919200 ) ( -1632980 -4019820 )
+        + LAYER Metal4 ( -1999180 -5919200 ) ( -1992980 513280 )
+        + LAYER Metal4 ( -2359180 -5919200 ) ( -2352980 513280 )
+        + LAYER Metal4 ( -2719180 -5919200 ) ( -2712980 513280 )
+        + LAYER Metal4 ( 3229080 -5919200 ) ( 3235280 513280 )
+        + LAYER Metal5 ( -3235280 507080 ) ( 3235280 513280 )
+        + LAYER Metal5 ( -3235280 -5919200 ) ( 3235280 -5913000 )
+        + LAYER Metal4 ( -3235280 -5919200 ) ( -3229080 513280 )
+        + FIXED ( 2999920 5701760 ) N ;
+    - vssd1 + NET vssd1 + SPECIAL + DIRECTION INOUT + USE GROUND
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal5 ( -3235280 -5763100 ) ( 3235280 -5756900 )
+        + LAYER Metal4 ( 2817620 -6056000 ) ( 2823820 376480 )
+        + LAYER Metal4 ( 2457620 -6056000 ) ( 2463820 376480 )
+        + LAYER Metal4 ( 2097620 -6056000 ) ( 2103820 376480 )
+        + LAYER Metal4 ( 1737620 -6056000 ) ( 1743820 376480 )
+        + LAYER Metal4 ( 1377620 -6056000 ) ( 1383820 376480 )
+        + LAYER Metal4 ( 1017620 -6056000 ) ( 1023820 376480 )
+        + LAYER Metal4 ( 657620 -6056000 ) ( 663820 376480 )
+        + LAYER Metal4 ( 297620 -6056000 ) ( 303820 376480 )
+        + LAYER Metal4 ( -62380 -6056000 ) ( -56180 376480 )
+        + LAYER Metal4 ( -422380 -6056000 ) ( -416180 376480 )
+        + LAYER Metal4 ( -782380 -6056000 ) ( -776180 376480 )
+        + LAYER Metal4 ( -1142380 -2965620 ) ( -1136180 376480 )
+        + LAYER Metal4 ( -1142380 -6056000 ) ( -1136180 -4156620 )
+        + LAYER Metal4 ( -1502380 -2965620 ) ( -1496180 376480 )
+        + LAYER Metal4 ( -1502380 -6056000 ) ( -1496180 -4156620 )
+        + LAYER Metal4 ( -1862380 -6056000 ) ( -1856180 376480 )
+        + LAYER Metal4 ( -2222380 -6056000 ) ( -2216180 376480 )
+        + LAYER Metal4 ( -2582380 -6056000 ) ( -2576180 376480 )
+        + LAYER Metal4 ( -2942380 -6056000 ) ( -2936180 376480 )
+        + LAYER Metal4 ( 3042480 -5869400 ) ( 3048680 189880 )
+        + LAYER Metal5 ( -3048680 183680 ) ( 3048680 189880 )
+        + LAYER Metal5 ( -3048680 -5869400 ) ( 3048680 -5863200 )
+        + LAYER Metal4 ( -3048680 -5869400 ) ( -3042480 189880 )
+        + FIXED ( 2999920 5838560 ) N ;
+    - vssd2 + NET vssd2 + SPECIAL + DIRECTION INOUT + USE GROUND
+      + PORT
+        + LAYER Metal5 ( -3235280 -3100 ) ( 3235280 3100 )
+        + LAYER Metal5 ( -3235280 -363100 ) ( 3235280 -356900 )
+        + LAYER Metal5 ( -3235280 -723100 ) ( 3235280 -716900 )
+        + LAYER Metal5 ( -3235280 -1083100 ) ( 3235280 -1076900 )
+        + LAYER Metal5 ( -3235280 -1443100 ) ( 3235280 -1436900 )
+        + LAYER Metal5 ( -3235280 -1803100 ) ( 3235280 -1796900 )
+        + LAYER Metal5 ( -3235280 -2163100 ) ( 3235280 -2156900 )
+        + LAYER Metal5 ( -3235280 -2523100 ) ( 3235280 -2516900 )
+        + LAYER Metal5 ( -3235280 -2883100 ) ( 3235280 -2876900 )
+        + LAYER Metal5 ( -3235280 -3243100 ) ( 3235280 -3236900 )
+        + LAYER Metal5 ( -3235280 -3603100 ) ( 3235280 -3596900 )
+        + LAYER Metal5 ( -3235280 -3963100 ) ( 3235280 -3956900 )
+        + LAYER Metal5 ( -3235280 -4323100 ) ( 3235280 -4316900 )
+        + LAYER Metal5 ( -3235280 -4683100 ) ( 3235280 -4676900 )
+        + LAYER Metal5 ( -3235280 -5043100 ) ( 3235280 -5036900 )
+        + LAYER Metal5 ( -3235280 -5403100 ) ( 3235280 -5396900 )
+        + LAYER Metal5 ( -3235280 -5763100 ) ( 3235280 -5756900 )
+        + LAYER Metal4 ( 2892020 -6130400 ) ( 2898220 302080 )
+        + LAYER Metal4 ( 2532020 -6130400 ) ( 2538220 302080 )
+        + LAYER Metal4 ( 2172020 -6130400 ) ( 2178220 302080 )
+        + LAYER Metal4 ( 1812020 -6130400 ) ( 1818220 302080 )
+        + LAYER Metal4 ( 1452020 -6130400 ) ( 1458220 302080 )
+        + LAYER Metal4 ( 1092020 -6130400 ) ( 1098220 302080 )
+        + LAYER Metal4 ( 732020 -6130400 ) ( 738220 302080 )
+        + LAYER Metal4 ( 372020 -6130400 ) ( 378220 302080 )
+        + LAYER Metal4 ( 12020 -6130400 ) ( 18220 302080 )
+        + LAYER Metal4 ( -347980 -6130400 ) ( -341780 302080 )
+        + LAYER Metal4 ( -707980 -3033640 ) ( -701780 302080 )
+        + LAYER Metal4 ( -707980 -6130400 ) ( -701780 -4212760 )
+        + LAYER Metal4 ( -1067980 -3040020 ) ( -1061780 302080 )
+        + LAYER Metal4 ( -1067980 -6130400 ) ( -1061780 -4231020 )
+        + LAYER Metal4 ( -1427980 -3040020 ) ( -1421780 302080 )
+        + LAYER Metal4 ( -1427980 -6130400 ) ( -1421780 -4231020 )
+        + LAYER Metal4 ( -1787980 -6130400 ) ( -1781780 302080 )
+        + LAYER Metal4 ( -2147980 -6130400 ) ( -2141780 302080 )
+        + LAYER Metal4 ( -2507980 -6130400 ) ( -2501780 302080 )
+        + LAYER Metal4 ( -2867980 -6130400 ) ( -2861780 302080 )
+        + LAYER Metal4 ( 3104680 -6006000 ) ( 3110880 177680 )
+        + LAYER Metal5 ( -3110880 171480 ) ( 3110880 177680 )
+        + LAYER Metal5 ( -3110880 -6006000 ) ( 3110880 -5999800 )
+        + LAYER Metal4 ( -3110880 -6006000 ) ( -3104680 177680 )
+        + FIXED ( 2999920 5912960 ) N ;
+    - wb_clk_i + NET wb_clk_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 239120 -2400 ) N ;
+    - wb_rst_i + NET wb_rst_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 250320 -2400 ) N ;
+    - wbs_ack_o + NET wbs_ack_o + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 261520 -2400 ) N ;
+    - wbs_adr_i[0] + NET wbs_adr_i[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 306320 -2400 ) N ;
+    - wbs_adr_i[10] + NET wbs_adr_i[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 687120 -2400 ) N ;
+    - wbs_adr_i[11] + NET wbs_adr_i[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 720720 -2400 ) N ;
+    - wbs_adr_i[12] + NET wbs_adr_i[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 754320 -2400 ) N ;
+    - wbs_adr_i[13] + NET wbs_adr_i[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 787920 -2400 ) N ;
+    - wbs_adr_i[14] + NET wbs_adr_i[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 821520 -2400 ) N ;
+    - wbs_adr_i[15] + NET wbs_adr_i[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 855120 -2400 ) N ;
+    - wbs_adr_i[16] + NET wbs_adr_i[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 888720 -2400 ) N ;
+    - wbs_adr_i[17] + NET wbs_adr_i[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 922320 -2400 ) N ;
+    - wbs_adr_i[18] + NET wbs_adr_i[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 955920 -2400 ) N ;
+    - wbs_adr_i[19] + NET wbs_adr_i[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 989520 -2400 ) N ;
+    - wbs_adr_i[1] + NET wbs_adr_i[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 351120 -2400 ) N ;
+    - wbs_adr_i[20] + NET wbs_adr_i[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1023120 -2400 ) N ;
+    - wbs_adr_i[21] + NET wbs_adr_i[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1056720 -2400 ) N ;
+    - wbs_adr_i[22] + NET wbs_adr_i[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1090320 -2400 ) N ;
+    - wbs_adr_i[23] + NET wbs_adr_i[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1123920 -2400 ) N ;
+    - wbs_adr_i[24] + NET wbs_adr_i[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1157520 -2400 ) N ;
+    - wbs_adr_i[25] + NET wbs_adr_i[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1191120 -2400 ) N ;
+    - wbs_adr_i[26] + NET wbs_adr_i[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1224720 -2400 ) N ;
+    - wbs_adr_i[27] + NET wbs_adr_i[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1258320 -2400 ) N ;
+    - wbs_adr_i[28] + NET wbs_adr_i[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1291920 -2400 ) N ;
+    - wbs_adr_i[29] + NET wbs_adr_i[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1325520 -2400 ) N ;
+    - wbs_adr_i[2] + NET wbs_adr_i[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 395920 -2400 ) N ;
+    - wbs_adr_i[30] + NET wbs_adr_i[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1359120 -2400 ) N ;
+    - wbs_adr_i[31] + NET wbs_adr_i[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1392720 -2400 ) N ;
+    - wbs_adr_i[3] + NET wbs_adr_i[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 440720 -2400 ) N ;
+    - wbs_adr_i[4] + NET wbs_adr_i[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 485520 -2400 ) N ;
+    - wbs_adr_i[5] + NET wbs_adr_i[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 519120 -2400 ) N ;
+    - wbs_adr_i[6] + NET wbs_adr_i[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 552720 -2400 ) N ;
+    - wbs_adr_i[7] + NET wbs_adr_i[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 586320 -2400 ) N ;
+    - wbs_adr_i[8] + NET wbs_adr_i[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 619920 -2400 ) N ;
+    - wbs_adr_i[9] + NET wbs_adr_i[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 653520 -2400 ) N ;
+    - wbs_cyc_i + NET wbs_cyc_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 272720 -2400 ) N ;
+    - wbs_dat_i[0] + NET wbs_dat_i[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 317520 -2400 ) N ;
+    - wbs_dat_i[10] + NET wbs_dat_i[10] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 698320 -2400 ) N ;
+    - wbs_dat_i[11] + NET wbs_dat_i[11] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 731920 -2400 ) N ;
+    - wbs_dat_i[12] + NET wbs_dat_i[12] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 765520 -2400 ) N ;
+    - wbs_dat_i[13] + NET wbs_dat_i[13] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 799120 -2400 ) N ;
+    - wbs_dat_i[14] + NET wbs_dat_i[14] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 832720 -2400 ) N ;
+    - wbs_dat_i[15] + NET wbs_dat_i[15] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 866320 -2400 ) N ;
+    - wbs_dat_i[16] + NET wbs_dat_i[16] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 899920 -2400 ) N ;
+    - wbs_dat_i[17] + NET wbs_dat_i[17] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 933520 -2400 ) N ;
+    - wbs_dat_i[18] + NET wbs_dat_i[18] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 967120 -2400 ) N ;
+    - wbs_dat_i[19] + NET wbs_dat_i[19] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1000720 -2400 ) N ;
+    - wbs_dat_i[1] + NET wbs_dat_i[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 362320 -2400 ) N ;
+    - wbs_dat_i[20] + NET wbs_dat_i[20] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1034320 -2400 ) N ;
+    - wbs_dat_i[21] + NET wbs_dat_i[21] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1067920 -2400 ) N ;
+    - wbs_dat_i[22] + NET wbs_dat_i[22] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1101520 -2400 ) N ;
+    - wbs_dat_i[23] + NET wbs_dat_i[23] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1135120 -2400 ) N ;
+    - wbs_dat_i[24] + NET wbs_dat_i[24] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1168720 -2400 ) N ;
+    - wbs_dat_i[25] + NET wbs_dat_i[25] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1202320 -2400 ) N ;
+    - wbs_dat_i[26] + NET wbs_dat_i[26] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1235920 -2400 ) N ;
+    - wbs_dat_i[27] + NET wbs_dat_i[27] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1269520 -2400 ) N ;
+    - wbs_dat_i[28] + NET wbs_dat_i[28] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1303120 -2400 ) N ;
+    - wbs_dat_i[29] + NET wbs_dat_i[29] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1336720 -2400 ) N ;
+    - wbs_dat_i[2] + NET wbs_dat_i[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 407120 -2400 ) N ;
+    - wbs_dat_i[30] + NET wbs_dat_i[30] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1370320 -2400 ) N ;
+    - wbs_dat_i[31] + NET wbs_dat_i[31] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1403920 -2400 ) N ;
+    - wbs_dat_i[3] + NET wbs_dat_i[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 451920 -2400 ) N ;
+    - wbs_dat_i[4] + NET wbs_dat_i[4] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 496720 -2400 ) N ;
+    - wbs_dat_i[5] + NET wbs_dat_i[5] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 530320 -2400 ) N ;
+    - wbs_dat_i[6] + NET wbs_dat_i[6] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 563920 -2400 ) N ;
+    - wbs_dat_i[7] + NET wbs_dat_i[7] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 597520 -2400 ) N ;
+    - wbs_dat_i[8] + NET wbs_dat_i[8] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 631120 -2400 ) N ;
+    - wbs_dat_i[9] + NET wbs_dat_i[9] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 664720 -2400 ) N ;
+    - wbs_dat_o[0] + NET wbs_dat_o[0] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 328720 -2400 ) N ;
+    - wbs_dat_o[10] + NET wbs_dat_o[10] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 709520 -2400 ) N ;
+    - wbs_dat_o[11] + NET wbs_dat_o[11] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 743120 -2400 ) N ;
+    - wbs_dat_o[12] + NET wbs_dat_o[12] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 776720 -2400 ) N ;
+    - wbs_dat_o[13] + NET wbs_dat_o[13] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 810320 -2400 ) N ;
+    - wbs_dat_o[14] + NET wbs_dat_o[14] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 843920 -2400 ) N ;
+    - wbs_dat_o[15] + NET wbs_dat_o[15] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 877520 -2400 ) N ;
+    - wbs_dat_o[16] + NET wbs_dat_o[16] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 911120 -2400 ) N ;
+    - wbs_dat_o[17] + NET wbs_dat_o[17] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 944720 -2400 ) N ;
+    - wbs_dat_o[18] + NET wbs_dat_o[18] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 978320 -2400 ) N ;
+    - wbs_dat_o[19] + NET wbs_dat_o[19] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1011920 -2400 ) N ;
+    - wbs_dat_o[1] + NET wbs_dat_o[1] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 373520 -2400 ) N ;
+    - wbs_dat_o[20] + NET wbs_dat_o[20] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1045520 -2400 ) N ;
+    - wbs_dat_o[21] + NET wbs_dat_o[21] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1079120 -2400 ) N ;
+    - wbs_dat_o[22] + NET wbs_dat_o[22] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1112720 -2400 ) N ;
+    - wbs_dat_o[23] + NET wbs_dat_o[23] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1146320 -2400 ) N ;
+    - wbs_dat_o[24] + NET wbs_dat_o[24] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1179920 -2400 ) N ;
+    - wbs_dat_o[25] + NET wbs_dat_o[25] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1213520 -2400 ) N ;
+    - wbs_dat_o[26] + NET wbs_dat_o[26] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1247120 -2400 ) N ;
+    - wbs_dat_o[27] + NET wbs_dat_o[27] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1280720 -2400 ) N ;
+    - wbs_dat_o[28] + NET wbs_dat_o[28] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1314320 -2400 ) N ;
+    - wbs_dat_o[29] + NET wbs_dat_o[29] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1347920 -2400 ) N ;
+    - wbs_dat_o[2] + NET wbs_dat_o[2] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 418320 -2400 ) N ;
+    - wbs_dat_o[30] + NET wbs_dat_o[30] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1381520 -2400 ) N ;
+    - wbs_dat_o[31] + NET wbs_dat_o[31] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 1415120 -2400 ) N ;
+    - wbs_dat_o[3] + NET wbs_dat_o[3] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 463120 -2400 ) N ;
+    - wbs_dat_o[4] + NET wbs_dat_o[4] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 507920 -2400 ) N ;
+    - wbs_dat_o[5] + NET wbs_dat_o[5] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 541520 -2400 ) N ;
+    - wbs_dat_o[6] + NET wbs_dat_o[6] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 575120 -2400 ) N ;
+    - wbs_dat_o[7] + NET wbs_dat_o[7] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 608720 -2400 ) N ;
+    - wbs_dat_o[8] + NET wbs_dat_o[8] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 642320 -2400 ) N ;
+    - wbs_dat_o[9] + NET wbs_dat_o[9] + DIRECTION OUTPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 675920 -2400 ) N ;
+    - wbs_sel_i[0] + NET wbs_sel_i[0] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 339920 -2400 ) N ;
+    - wbs_sel_i[1] + NET wbs_sel_i[1] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 384720 -2400 ) N ;
+    - wbs_sel_i[2] + NET wbs_sel_i[2] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 429520 -2400 ) N ;
+    - wbs_sel_i[3] + NET wbs_sel_i[3] + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 474320 -2400 ) N ;
+    - wbs_stb_i + NET wbs_stb_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 283920 -2400 ) N ;
+    - wbs_we_i + NET wbs_we_i + DIRECTION INPUT + USE SIGNAL
+      + PORT
+        + LAYER Metal2 ( -1120 -7200 ) ( 1120 7200 )
+        + PLACED ( 295120 -2400 ) N ;
+END PINS
+SPECIALNETS 8 ;
+    - vccd1 ( PIN vccd1 ) ( * vccd1 ) + USE POWER
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2903440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2757080 2561360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2757080 2201360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2757080 1841360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2449880 2561360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2449880 2201360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2449880 1841360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2142680 2561360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2142680 2201360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2142680 1841360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1835480 2561360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1835480 2201360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1835480 1841360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1528280 2561360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1528280 2201360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1528280 1841360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1221080 2561360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1221080 2201360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1221080 1841360 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5801360 ) ( 6235200 5801360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5441360 ) ( 6235200 5441360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5081360 ) ( 6235200 5081360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4721360 ) ( 6235200 4721360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4361360 ) ( 6235200 4361360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4001360 ) ( 6235200 4001360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3641360 ) ( 6235200 3641360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3281360 ) ( 6235200 3281360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2921360 ) ( 6235200 2921360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2561360 ) ( 6235200 2561360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2201360 ) ( 6235200 2201360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1841360 ) ( 6235200 1841360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1481360 ) ( 6235200 1481360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1121360 ) ( 6235200 1121360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 761360 ) ( 6235200 761360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 401360 ) ( 6235200 401360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 41360 ) ( 6235200 41360 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5783440 -217440 ) ( 5783440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5423440 -217440 ) ( 5423440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5063440 -217440 ) ( 5063440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4703440 -217440 ) ( 4703440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4343440 -217440 ) ( 4343440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3983440 -217440 ) ( 3983440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3623440 -217440 ) ( 3623440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3263440 -217440 ) ( 3263440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2903440 -217440 ) ( 2903440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2543440 -217440 ) ( 2543440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2183440 2872940 ) ( 2183440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2183440 -217440 ) ( 2183440 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1823440 2872940 ) ( 1823440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1823440 -217440 ) ( 1823440 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1463440 2872940 ) ( 1463440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1463440 -217440 ) ( 1463440 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1103440 -217440 ) ( 1103440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 743440 -217440 ) ( 743440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 383440 -217440 ) ( 383440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 23440 -217440 ) ( 23440 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6014400 260 ) ( 6014400 5997340 )
+      NEW Metal5 6200 + SHAPE RING ( -17660 5994240 ) ( 6017500 5994240 )
+      NEW Metal5 6200 + SHAPE RING ( -17660 3360 ) ( 6017500 3360 )
+      NEW Metal4 6200 + SHAPE RING ( -14560 260 ) ( -14560 5997340 )
+      NEW Metal4 0 + SHAPE RING ( 6014400 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6014400 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6014400 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5783440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5423440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5063440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4703440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4343440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3983440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3623440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3263440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2903440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2543440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2183440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1823440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1463440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1103440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 743440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 383440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 23440 3360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -14560 5994240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 5801360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 5441360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 5081360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 4721360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 4361360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 4001360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 3641360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 3281360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 2921360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 2561360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 2201360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 1841360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 1481360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 1121360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 761360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 401360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -14560 41360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -14560 3360 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vccd2 ( PIN vccd2 ) + USE POWER
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2977840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5875760 ) ( 6235200 5875760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5515760 ) ( 6235200 5515760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5155760 ) ( 6235200 5155760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4795760 ) ( 6235200 4795760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4435760 ) ( 6235200 4435760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4075760 ) ( 6235200 4075760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3715760 ) ( 6235200 3715760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3355760 ) ( 6235200 3355760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2995760 ) ( 6235200 2995760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2635760 ) ( 6235200 2635760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2275760 ) ( 6235200 2275760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1915760 ) ( 6235200 1915760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1555760 ) ( 6235200 1555760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1195760 ) ( 6235200 1195760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 835760 ) ( 6235200 835760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 475760 ) ( 6235200 475760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 115760 ) ( 6235200 115760 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5857840 -217440 ) ( 5857840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5497840 -217440 ) ( 5497840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5137840 -217440 ) ( 5137840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4777840 -217440 ) ( 4777840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4417840 -217440 ) ( 4417840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4057840 -217440 ) ( 4057840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3697840 -217440 ) ( 3697840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3337840 -217440 ) ( 3337840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2977840 -217440 ) ( 2977840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2617840 -217440 ) ( 2617840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2257840 -217440 ) ( 2257840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1897840 2872940 ) ( 1897840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1897840 -217440 ) ( 1897840 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1537840 2872940 ) ( 1537840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1537840 -217440 ) ( 1537840 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1177840 -217440 ) ( 1177840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 817840 -217440 ) ( 817840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 457840 -217440 ) ( 457840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 97840 -217440 ) ( 97840 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6076600 -61940 ) ( 6076600 6059540 )
+      NEW Metal5 6200 + SHAPE RING ( -79860 6056440 ) ( 6079700 6056440 )
+      NEW Metal5 6200 + SHAPE RING ( -79860 -58840 ) ( 6079700 -58840 )
+      NEW Metal4 6200 + SHAPE RING ( -76760 -61940 ) ( -76760 6059540 )
+      NEW Metal4 0 + SHAPE RING ( 6076600 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6076600 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6076600 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5857840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5497840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5137840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4777840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4417840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4057840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3697840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3337840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2977840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2617840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2257840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1897840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1537840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1177840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 817840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 457840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 97840 -58840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -76760 6056440 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 5875760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 5515760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 5155760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 4795760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 4435760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 4075760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 3715760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 3355760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 2995760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 2635760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 2275760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 1915760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 1555760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 1195760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 835760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 475760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -76760 115760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -76760 -58840 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vdda1 ( PIN vdda1 ) + USE POWER
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2692240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5950160 ) ( 6235200 5950160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5590160 ) ( 6235200 5590160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5230160 ) ( 6235200 5230160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4870160 ) ( 6235200 4870160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4510160 ) ( 6235200 4510160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4150160 ) ( 6235200 4150160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3790160 ) ( 6235200 3790160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3430160 ) ( 6235200 3430160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3070160 ) ( 6235200 3070160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2710160 ) ( 6235200 2710160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2350160 ) ( 6235200 2350160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1990160 ) ( 6235200 1990160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1630160 ) ( 6235200 1630160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1270160 ) ( 6235200 1270160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 910160 ) ( 6235200 910160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 550160 ) ( 6235200 550160 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 190160 ) ( 6235200 190160 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5932240 -217440 ) ( 5932240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5572240 -217440 ) ( 5572240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5212240 -217440 ) ( 5212240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4852240 -217440 ) ( 4852240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4492240 -217440 ) ( 4492240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4132240 -217440 ) ( 4132240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3772240 -217440 ) ( 3772240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3412240 -217440 ) ( 3412240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3052240 -217440 ) ( 3052240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2692240 -217440 ) ( 2692240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2332240 -217440 ) ( 2332240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1972240 2872940 ) ( 1972240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1972240 -217440 ) ( 1972240 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1612240 2872940 ) ( 1612240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1612240 -217440 ) ( 1612240 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1252240 -217440 ) ( 1252240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 892240 -217440 ) ( 892240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 532240 -217440 ) ( 532240 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 172240 -217440 ) ( 172240 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6138800 -124140 ) ( 6138800 6121740 )
+      NEW Metal5 6200 + SHAPE RING ( -142060 6118640 ) ( 6141900 6118640 )
+      NEW Metal5 6200 + SHAPE RING ( -142060 -121040 ) ( 6141900 -121040 )
+      NEW Metal4 6200 + SHAPE RING ( -138960 -124140 ) ( -138960 6121740 )
+      NEW Metal4 0 + SHAPE RING ( 6138800 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6138800 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6138800 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5932240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5572240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5212240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4852240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4492240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4132240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3772240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3412240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3052240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2692240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2332240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1972240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1612240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1252240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 892240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 532240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 172240 -121040 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -138960 6118640 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 5950160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 5590160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 5230160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 4870160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 4510160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 4150160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 3790160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 3430160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 3070160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 2710160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 2350160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 1990160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 1630160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 1270160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 910160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 550160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -138960 190160 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -138960 -121040 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vdda2 ( PIN vdda2 ) + USE POWER
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2766640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5664560 ) ( 6235200 5664560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5304560 ) ( 6235200 5304560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4944560 ) ( 6235200 4944560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4584560 ) ( 6235200 4584560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4224560 ) ( 6235200 4224560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3864560 ) ( 6235200 3864560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3504560 ) ( 6235200 3504560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3144560 ) ( 6235200 3144560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2784560 ) ( 6235200 2784560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2424560 ) ( 6235200 2424560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2064560 ) ( 6235200 2064560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1704560 ) ( 6235200 1704560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1344560 ) ( 6235200 1344560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 984560 ) ( 6235200 984560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 624560 ) ( 6235200 624560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 264560 ) ( 6235200 264560 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5646640 -217440 ) ( 5646640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5286640 -217440 ) ( 5286640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4926640 -217440 ) ( 4926640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4566640 -217440 ) ( 4566640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4206640 -217440 ) ( 4206640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3846640 -217440 ) ( 3846640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3486640 -217440 ) ( 3486640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3126640 -217440 ) ( 3126640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2766640 -217440 ) ( 2766640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2406640 -217440 ) ( 2406640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2046640 2872940 ) ( 2046640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2046640 -217440 ) ( 2046640 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1686640 2879320 ) ( 1686640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1686640 -217440 ) ( 1686640 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1326640 2872940 ) ( 1326640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1326640 -217440 ) ( 1326640 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 966640 -217440 ) ( 966640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 606640 -217440 ) ( 606640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 246640 -217440 ) ( 246640 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6201000 -186340 ) ( 6201000 6183940 )
+      NEW Metal5 6200 + SHAPE RING ( -204260 6180840 ) ( 6204100 6180840 )
+      NEW Metal5 6200 + SHAPE RING ( -204260 -183240 ) ( 6204100 -183240 )
+      NEW Metal4 6200 + SHAPE RING ( -201160 -186340 ) ( -201160 6183940 )
+      NEW Metal4 0 + SHAPE RING ( 6201000 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6201000 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6201000 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5646640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5286640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4926640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4566640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4206640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3846640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3486640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3126640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2766640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2406640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2046640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1686640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1326640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 966640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 606640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 246640 -183240 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -201160 6180840 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 5664560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 5304560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 4944560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 4584560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 4224560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 3864560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 3504560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 3144560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 2784560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 2424560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 2064560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 1704560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 1344560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 984560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 624560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -201160 264560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -201160 -183240 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vssa1 ( PIN vssa1 ) + USE GROUND
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2729440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5627360 ) ( 6235200 5627360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5267360 ) ( 6235200 5267360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4907360 ) ( 6235200 4907360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4547360 ) ( 6235200 4547360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4187360 ) ( 6235200 4187360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3827360 ) ( 6235200 3827360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3467360 ) ( 6235200 3467360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3107360 ) ( 6235200 3107360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2747360 ) ( 6235200 2747360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2387360 ) ( 6235200 2387360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2027360 ) ( 6235200 2027360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1667360 ) ( 6235200 1667360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1307360 ) ( 6235200 1307360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 947360 ) ( 6235200 947360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 587360 ) ( 6235200 587360 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 227360 ) ( 6235200 227360 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5969440 -217440 ) ( 5969440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5609440 -217440 ) ( 5609440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5249440 -217440 ) ( 5249440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4889440 -217440 ) ( 4889440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4529440 -217440 ) ( 4529440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4169440 -217440 ) ( 4169440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3809440 -217440 ) ( 3809440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3449440 -217440 ) ( 3449440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3089440 -217440 ) ( 3089440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2729440 -217440 ) ( 2729440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2369440 -217440 ) ( 2369440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2009440 2872940 ) ( 2009440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2009440 -217440 ) ( 2009440 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1649440 2872940 ) ( 1649440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1649440 -217440 ) ( 1649440 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1289440 -217440 ) ( 1289440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 929440 -217440 ) ( 929440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 569440 -217440 ) ( 569440 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 209440 -217440 ) ( 209440 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6169900 -155240 ) ( 6169900 6152840 )
+      NEW Metal5 6200 + SHAPE RING ( -173160 6149740 ) ( 6173000 6149740 )
+      NEW Metal5 6200 + SHAPE RING ( -173160 -152140 ) ( 6173000 -152140 )
+      NEW Metal4 6200 + SHAPE RING ( -170060 -155240 ) ( -170060 6152840 )
+      NEW Metal4 0 + SHAPE RING ( 6169900 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6169900 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6169900 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5969440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5609440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5249440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4889440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4529440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4169440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3809440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3449440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3089440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2729440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2369440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2009440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1649440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1289440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 929440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 569440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 209440 -152140 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -170060 6149740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 5627360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 5267360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 4907360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 4547360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 4187360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 3827360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 3467360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 3107360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 2747360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 2387360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 2027360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 1667360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 1307360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 947360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 587360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -170060 227360 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -170060 -152140 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vssa2 ( PIN vssa2 ) + USE GROUND
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2803840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5701760 ) ( 6235200 5701760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5341760 ) ( 6235200 5341760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4981760 ) ( 6235200 4981760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4621760 ) ( 6235200 4621760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4261760 ) ( 6235200 4261760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3901760 ) ( 6235200 3901760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3541760 ) ( 6235200 3541760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3181760 ) ( 6235200 3181760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2821760 ) ( 6235200 2821760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2461760 ) ( 6235200 2461760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2101760 ) ( 6235200 2101760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1741760 ) ( 6235200 1741760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1381760 ) ( 6235200 1381760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1021760 ) ( 6235200 1021760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 661760 ) ( 6235200 661760 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 301760 ) ( 6235200 301760 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5683840 -217440 ) ( 5683840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5323840 -217440 ) ( 5323840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4963840 -217440 ) ( 4963840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4603840 -217440 ) ( 4603840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4243840 -217440 ) ( 4243840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3883840 -217440 ) ( 3883840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3523840 -217440 ) ( 3523840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3163840 -217440 ) ( 3163840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2803840 -217440 ) ( 2803840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2443840 -217440 ) ( 2443840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2083840 2872940 ) ( 2083840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2083840 -217440 ) ( 2083840 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1723840 2872940 ) ( 1723840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1723840 -217440 ) ( 1723840 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1363840 2872940 ) ( 1363840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1363840 -217440 ) ( 1363840 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1003840 -217440 ) ( 1003840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 643840 -217440 ) ( 643840 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 283840 -217440 ) ( 283840 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6232100 -217440 ) ( 6232100 6215040 )
+      NEW Metal5 6200 + SHAPE RING ( -235360 6211940 ) ( 6235200 6211940 )
+      NEW Metal5 6200 + SHAPE RING ( -235360 -214340 ) ( 6235200 -214340 )
+      NEW Metal4 6200 + SHAPE RING ( -232260 -217440 ) ( -232260 6215040 )
+      NEW Metal4 0 + SHAPE RING ( 6232100 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6232100 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6232100 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5683840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5323840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4963840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4603840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4243840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3883840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3523840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3163840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2803840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2443840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2083840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1723840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1363840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1003840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 643840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 283840 -214340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -232260 6211940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 5701760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 5341760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 4981760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 4621760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 4261760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 3901760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 3541760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 3181760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 2821760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 2461760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 2101760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 1741760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 1381760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 1021760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 661760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -232260 301760 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -232260 -214340 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vssd1 ( PIN vssd1 ) ( * vssd1 ) + USE GROUND
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2940640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2910680 2598560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2910680 2238560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2910680 1878560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2603480 2598560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2603480 2238560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2603480 1878560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2296280 2598560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2296280 2238560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2296280 1878560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1989080 2598560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1989080 2238560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1989080 1878560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1681880 2598560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1681880 2238560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1681880 1878560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1374680 2598560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1374680 2238560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1374680 1878560 ) via4_5_3200_6200_6_3_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5838560 ) ( 6235200 5838560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5478560 ) ( 6235200 5478560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5118560 ) ( 6235200 5118560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4758560 ) ( 6235200 4758560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4398560 ) ( 6235200 4398560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4038560 ) ( 6235200 4038560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3678560 ) ( 6235200 3678560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3318560 ) ( 6235200 3318560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2958560 ) ( 6235200 2958560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2598560 ) ( 6235200 2598560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2238560 ) ( 6235200 2238560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1878560 ) ( 6235200 1878560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1518560 ) ( 6235200 1518560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1158560 ) ( 6235200 1158560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 798560 ) ( 6235200 798560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 438560 ) ( 6235200 438560 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 78560 ) ( 6235200 78560 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5820640 -217440 ) ( 5820640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5460640 -217440 ) ( 5460640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5100640 -217440 ) ( 5100640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4740640 -217440 ) ( 4740640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4380640 -217440 ) ( 4380640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4020640 -217440 ) ( 4020640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3660640 -217440 ) ( 3660640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3300640 -217440 ) ( 3300640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2940640 -217440 ) ( 2940640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2580640 -217440 ) ( 2580640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2220640 -217440 ) ( 2220640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1860640 2872940 ) ( 1860640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1860640 -217440 ) ( 1860640 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1500640 2872940 ) ( 1500640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1500640 -217440 ) ( 1500640 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1140640 -217440 ) ( 1140640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 780640 -217440 ) ( 780640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 420640 -217440 ) ( 420640 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 60640 -217440 ) ( 60640 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6045500 -30840 ) ( 6045500 6028440 )
+      NEW Metal5 6200 + SHAPE RING ( -48760 6025340 ) ( 6048600 6025340 )
+      NEW Metal5 6200 + SHAPE RING ( -48760 -27740 ) ( 6048600 -27740 )
+      NEW Metal4 6200 + SHAPE RING ( -45660 -30840 ) ( -45660 6028440 )
+      NEW Metal4 0 + SHAPE RING ( 6045500 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6045500 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6045500 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5820640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5460640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5100640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4740640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4380640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4020640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3660640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3300640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2940640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2580640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2220640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1860640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1500640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1140640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 780640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 420640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 60640 -27740 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -45660 6025340 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 5838560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 5478560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 5118560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 4758560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 4398560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 4038560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 3678560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 3318560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 2958560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 2598560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 2238560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 1878560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 1518560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 1158560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 798560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 438560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -45660 78560 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -45660 -27740 ) via4_5_6200_6200_6_6_1040_1040 ;
+    - vssd2 ( PIN vssd2 ) + USE GROUND
+      + ROUTED Metal4 0 + SHAPE STRIPE ( 2655040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5912960 ) ( 6235200 5912960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5552960 ) ( 6235200 5552960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 5192960 ) ( 6235200 5192960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4832960 ) ( 6235200 4832960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4472960 ) ( 6235200 4472960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 4112960 ) ( 6235200 4112960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3752960 ) ( 6235200 3752960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3392960 ) ( 6235200 3392960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 3032960 ) ( 6235200 3032960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2672960 ) ( 6235200 2672960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 2312960 ) ( 6235200 2312960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1952960 ) ( 6235200 1952960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1592960 ) ( 6235200 1592960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 1232960 ) ( 6235200 1232960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 872960 ) ( 6235200 872960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 512960 ) ( 6235200 512960 )
+      NEW Metal5 6200 + SHAPE STRIPE ( -235360 152960 ) ( 6235200 152960 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5895040 -217440 ) ( 5895040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5535040 -217440 ) ( 5535040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 5175040 -217440 ) ( 5175040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4815040 -217440 ) ( 4815040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4455040 -217440 ) ( 4455040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 4095040 -217440 ) ( 4095040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3735040 -217440 ) ( 3735040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3375040 -217440 ) ( 3375040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 3015040 -217440 ) ( 3015040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2655040 -217440 ) ( 2655040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2295040 2879320 ) ( 2295040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 2295040 -217440 ) ( 2295040 1700200 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1935040 2872940 ) ( 1935040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1935040 -217440 ) ( 1935040 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1575040 2872940 ) ( 1575040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1575040 -217440 ) ( 1575040 1681940 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 1215040 -217440 ) ( 1215040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 855040 -217440 ) ( 855040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 495040 -217440 ) ( 495040 6215040 )
+      NEW Metal4 6200 + SHAPE STRIPE ( 135040 -217440 ) ( 135040 6215040 )
+      NEW Metal4 6200 + SHAPE RING ( 6107700 -93040 ) ( 6107700 6090640 )
+      NEW Metal5 6200 + SHAPE RING ( -110960 6087540 ) ( 6110800 6087540 )
+      NEW Metal5 6200 + SHAPE RING ( -110960 -89940 ) ( 6110800 -89940 )
+      NEW Metal4 6200 + SHAPE RING ( -107860 -93040 ) ( -107860 6090640 )
+      NEW Metal4 0 + SHAPE RING ( 6107700 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 6107700 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( 6107700 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5895040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5535040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 5175040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4815040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4455040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 4095040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3735040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3375040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 3015040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2655040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 2295040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1935040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1575040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 1215040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 855040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 495040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( 135040 -89940 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -107860 6087540 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 5912960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 5552960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 5192960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 4832960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 4472960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 4112960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 3752960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 3392960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 3032960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 2672960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 2312960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 1952960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 1592960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 1232960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 872960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 512960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE STRIPE ( -107860 152960 ) via4_5_6200_6200_6_6_1040_1040
+      NEW Metal4 0 + SHAPE RING ( -107860 -89940 ) via4_5_6200_6200_6_6_1040_1040 ;
+END SPECIALNETS
+END DESIGN
diff --git a/openlane/ref/user_project_wrapper/macro.cfg b/openlane/ref/user_project_wrapper/macro.cfg
new file mode 100644
index 0000000..a7365ab
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/macro.cfg
@@ -0,0 +1 @@
+mprj 1175 1690 N
diff --git a/openlane/ref/user_project_wrapper/pin_order.cfg b/openlane/ref/user_project_wrapper/pin_order.cfg
new file mode 100644
index 0000000..c9632da
--- /dev/null
+++ b/openlane/ref/user_project_wrapper/pin_order.cfg
@@ -0,0 +1,156 @@
+#BUS_SORT
+#NR
+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\]
+
+#S
+wb_.*
+wbs_.*
+la_.*
+user_clock2
+user_irq.*
+
+#E
+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\]
+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\]
+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
+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\]
+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\]
\ No newline at end of file
diff --git a/openlane/user_project_wrapper/config.json b/openlane/user_project_wrapper/config.json
index 22a00ee..d83d5bb 100644
--- a/openlane/user_project_wrapper/config.json
+++ b/openlane/user_project_wrapper/config.json
@@ -1,85 +1,58 @@
 {
-    "DESIGN_NAME": "user_project_wrapper",
-    "VERILOG_FILES": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_project_wrapper.v"],
-    "CLOCK_PERIOD": 10,
-    "CLOCK_PORT": "user_clock2",
-    "CLOCK_NET": "mprj.clk",
-    "FP_PDN_MACRO_HOOKS": "mprj vccd1 vssd1 vccd1 vssd1",
-    "MACRO_PLACEMENT_CFG": "dir::macro.cfg",
-    "VERILOG_FILES_BLACKBOX": ["dir::../../verilog/rtl/defines.v", "dir::../../verilog/rtl/user_proj_example.v"],
-    "EXTRA_LEFS": "dir::../../lef/user_proj_example.lef",
-    "EXTRA_GDS_FILES": "dir::../../gds/user_proj_example.gds",
-    "FP_PDN_CHECK_NODES": 0,
-    "SYNTH_ELABORATE_ONLY": 1,
-    "PL_RANDOM_GLB_PLACEMENT": 1,
-    "PL_RESIZER_DESIGN_OPTIMIZATIONS": 0,
-    "PL_RESIZER_TIMING_OPTIMIZATIONS": 0,
-    "PL_RESIZER_BUFFER_INPUT_PORTS": 0,
-    "FP_PDN_ENABLE_RAILS": 0,
-    "DIODE_INSERTION_STRATEGY": 0,
-    "RUN_FILL_INSERTION": 0,
-    "RUN_TAP_DECAP_INSERTION": 0,
-    "FP_PDN_VPITCH": 180,
-    "FP_PDN_HPITCH": 180,
-    "CLOCK_TREE_SYNTH": 0,
-    "FP_PDN_VOFFSET": 5,
-    "FP_PDN_HOFFSET": 5,
-    "MAGIC_ZEROIZE_ORIGIN": 0,
-    "FP_SIZING": "absolute",
-    "RUN_CVC": 0,
-    "UNIT": "2.4",
-    "FP_IO_VEXTEND": "expr::2 * $UNIT",
-    "FP_IO_HEXTEND": "expr::2 * $UNIT",
-    "FP_IO_VLENGTH": "ref::$UNIT",
-    "FP_IO_HLENGTH": "ref::$UNIT",
-    "FP_IO_VTHICKNESS_MULT": 4,
-    "FP_IO_HTHICKNESS_MULT": 4,
-    "FP_PDN_CORE_RING": 1,
-    "FP_PDN_CORE_RING_VWIDTH": 3.1,
-    "FP_PDN_CORE_RING_HWIDTH": 3.1,
-    "FP_PDN_CORE_RING_VOFFSET": 12.45,
-    "FP_PDN_CORE_RING_HOFFSET": 12.45,
-    "FP_PDN_CORE_RING_VSPACING": 1.7,
-    "FP_PDN_CORE_RING_HSPACING": 1.7,
-    "FP_PDN_VWIDTH": 3.1,
-    "FP_PDN_HWIDTH": 3.1,
-    "FP_PDN_VSPACING": "expr::(5 * $FP_PDN_CORE_RING_VWIDTH)",
-    "FP_PDN_HSPACING": "expr::(5 * $FP_PDN_CORE_RING_HWIDTH)",
-    "VDD_NETS": ["vccd1", "vccd2","vdda1","vdda2"],
-    "GND_NETS": ["vssd1", "vssd2","vssa1","vssa2"],
-    "SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
-    "pdk::sky130*": {
-        "RT_MAX_LAYER": "met4",
-        "DIE_AREA": "0 0 2920 3520",
-        "FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
-        "scl::sky130_fd_sc_hd": {
-            "CLOCK_PERIOD": 10
-        },
-        "scl::sky130_fd_sc_hdll": {
-            "CLOCK_PERIOD": 10
-        },
-        "scl::sky130_fd_sc_hs": {
-            "CLOCK_PERIOD": 8
-        },
-        "scl::sky130_fd_sc_ls": {
-            "CLOCK_PERIOD": 10,
-            "SYNTH_MAX_FANOUT": 5
-        },
-        "scl::sky130_fd_sc_ms": {
-            "CLOCK_PERIOD": 10
-        }
-     },
-    "pdk::gf180mcuC": {
-        "STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
-        "FP_PDN_CHECK_NODES": 0,
-        "FP_PDN_ENABLE_RAILS": 0,
-        "RT_MAX_LAYER": "Metal4",
-        "DIE_AREA": "0 0 3000 3000",
-        "FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper_gf180mcu.def",
-        "PL_OPENPHYSYN_OPTIMIZATIONS": 0,
-        "DIODE_INSERTION_STRATEGY": 0,
-        "FP_PDN_CHECK_NODES": 0,
-        "MAGIC_WRITE_FULL_LEF": 0,
-        "FP_PDN_ENABLE_RAILS": 0
-   }
+    "PDK"                             : "sky130A",
+    "STD_CELL_LIBRARY"                : "sky130_fd_sc_hd",
+    "CARAVEL_ROOT"                    : "../../caravel",
+    "CLOCK_NET"                       : "mprj.clk",
+    "CLOCK_PERIOD"                    : "10",
+    "CLOCK_PORT"                      : "user_clock2",
+    "CLOCK_TREE_SYNTH"                : "0",
+    "DESIGN_NAME"                     : "user_project_wrapper",
+    "DIE_AREA"                        : "0 0 2920 3520",
+    "DIODE_INSERTION_STRATEGY"        : "0",
+    "EXTRA_GDS_FILES"                 : "../../gds/user_proj_example.gds",
+    "EXTRA_LEFS"                      : "../../lef/user_proj_example.lef",
+    "FILL_INSERTION"                  : "0",
+    "FP_IO_HEXTEND"                   : "4.8",
+    "FP_IO_HLENGTH"                   : "2.4",
+    "FP_IO_HTHICKNESS_MULT"           : "4",
+    "FP_IO_VEXTEND"                   : "4.8",
+    "FP_IO_VLENGTH"                   : "2.4",
+    "FP_IO_VTHICKNESS_MULT"           : "4",
+    "FP_PDN_CHECK_NODES"              : "0",
+    "FP_PDN_CORE_RING"                : "1",
+    "FP_PDN_CORE_RING_HOFFSET"        : "14",
+    "FP_PDN_CORE_RING_HSPACING"       : "1.7",
+    "FP_PDN_CORE_RING_HWIDTH"         : "3.1",
+    "FP_PDN_CORE_RING_VOFFSET"        : "14",
+    "FP_PDN_CORE_RING_VSPACING"       : "1.7",
+    "FP_PDN_CORE_RING_VWIDTH"         : "3.1",
+    "FP_PDN_ENABLE_RAILS"             : "0",
+    "FP_PDN_HOFFSET"                  : "5",
+    "FP_PDN_HPITCH"                   : "180",
+    "FP_PDN_HSPACING"                 : "15.5",
+    "FP_PDN_HWIDTH"                   : "3.1",
+    "FP_PDN_MACRO_HOOKS"              : "mprj vccd1 vssd1",
+    "FP_PDN_VOFFSET"                  : "5",
+    "FP_PDN_VPITCH"                   : "180",
+    "FP_PDN_VSPACING"                 : "15.5",
+    "FP_PDN_VWIDTH"                   : "3.1",
+    "FP_PIN_ORDER_CFG"                : "../../caravel/openlane/user_project_wrapper_empty/pin_order.cfg",
+    "FP_SIZING"                       : "absolute",
+    "GLB_RT_MAXLAYER"                 : "5",
+    "GND_NETS"                        : "vssd1 vssd2 vssa1 vssa2",
+    "MACRO_PLACEMENT_CFG"             : "macro.cfg",
+    "MAGIC_ZEROIZE_ORIGIN"            : "0",
+    "PL_RANDOM_GLB_PLACEMENT"         : "1",
+    "PL_RESIZER_BUFFER_INPUT_PORTS"   : "0",
+    "PL_RESIZER_BUFFER_OUTPUT_PORTS"  : "0",
+    "PL_RESIZER_DESIGN_OPTIMIZATIONS" : "0",
+    "PL_RESIZER_TIMING_OPTIMIZATIONS" : "0",
+    "RUN_CVC"                         : "0",
+    "SYNTH_TOP_LEVEL"                 : "1",
+    "SYNTH_USE_PG_PINS_DEFINES"       : "USE_POWER_PINS",
+    "TAP_DECAP_INSERTION"             : "0",
+    "VDD_NETS"                        : "vccd1 vccd2 vdda1 vdda2",
+    "VERILOG_FILES"                   : ["../../caravel/verilog/rtl/defines.v","../../verilog/rtl/user_project_wrapper.v"],  
+    "VERILOG_FILES_BLACKBOX"          : ["../../caravel/verilog/rtl/defines.v","../../verilog/rtl/user_proj_example.v"]  
 }
+
diff --git a/openlane/user_project_wrapper/config.tcl b/openlane/user_project_wrapper/config.tcl
new file mode 100644
index 0000000..45c3772
--- /dev/null
+++ b/openlane/user_project_wrapper/config.tcl
@@ -0,0 +1,89 @@
+# 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
+
+# Base Configurations. Don't Touch
+# section begin
+
+set ::env(PDK) "sky130A"
+set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
+
+# YOU ARE NOT ALLOWED TO CHANGE ANY VARIABLES DEFINED IN THE FIXED WRAPPER CFGS 
+source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper/fixed_wrapper_cfgs.tcl
+
+# YOU CAN CHANGE ANY VARIABLES DEFINED IN THE DEFAULT WRAPPER CFGS BY OVERRIDING THEM IN THIS CONFIG.TCL
+source $::env(CARAVEL_ROOT)/openlane/user_project_wrapper/default_wrapper_cfgs.tcl
+
+set script_dir [file dirname [file normalize [info script]]]
+
+set ::env(DESIGN_NAME) user_project_wrapper
+#section end
+
+# User Configurations
+
+## Source Verilog Files
+set ::env(VERILOG_FILES) "\
+	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+	$script_dir/../../verilog/rtl/user_project_wrapper.v"
+
+## Clock configurations
+set ::env(CLOCK_PORT) "wb_clk_i"
+set ::env(CLOCK_NET) "Inst_user_project_wrapper1.wb_clk_i"
+
+set ::env(CLOCK_PERIOD) "10"
+
+## Internal Macros
+### Macro PDN Connections
+set ::env(FP_PDN_MACRO_HOOKS) "\
+	Inst_user_project_wrapper1 vccd1 vssd1"
+
+### Macro Placement
+set ::env(MACRO_PLACEMENT_CFG) $script_dir/macro.cfg
+
+### Black-box verilog and views
+set ::env(VERILOG_FILES_BLACKBOX) "\
+	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+	$script_dir/../../verilog/rtl/user_project_wrapper1.v"
+
+set ::env(EXTRA_LEFS) "\
+	$script_dir/../../lef/user_project_wrapper1.lef"
+
+set ::env(EXTRA_GDS_FILES) "\
+	$script_dir/../../gds/user_project_wrapper1.gds"
+
+# set ::env(GLB_RT_MAXLAYER) 5
+set ::env(RT_MAX_LAYER) {met4}
+
+# disable pdn check nodes becuase it hangs with multiple power domains.
+# any issue with pdn connections will be flagged with LVS so it is not a critical check.
+set ::env(FP_PDN_CHECK_NODES) 0
+
+# The following is because there are no std cells in the example wrapper project.
+set ::env(SYNTH_TOP_LEVEL) 1
+set ::env(PL_RANDOM_GLB_PLACEMENT) 0
+set ::env(PL_BASIC_PLACEMENT) 0
+set ::env(PL_SKIP_INITIAL_PLACEMENT) 1
+set ::env(PL_MACRO_HALO) {20 20}
+
+set ::env(PL_RESIZER_DESIGN_OPTIMIZATIONS) 0
+set ::env(PL_RESIZER_TIMING_OPTIMIZATIONS) 0
+set ::env(PL_RESIZER_BUFFER_INPUT_PORTS) 0
+set ::env(PL_RESIZER_BUFFER_OUTPUT_PORTS) 0
+
+set ::env(FP_PDN_ENABLE_RAILS) 0
+
+set ::env(DIODE_INSERTION_STRATEGY) 0
+set ::env(FILL_INSERTION) 0
+set ::env(TAP_DECAP_INSERTION) 0
+set ::env(CLOCK_TREE_SYNTH) 0
diff --git a/openlane/user_project_wrapper/macro.cfg b/openlane/user_project_wrapper/macro.cfg
index a7365ab..7199272 100644
--- a/openlane/user_project_wrapper/macro.cfg
+++ b/openlane/user_project_wrapper/macro.cfg
@@ -1 +1 @@
-mprj 1175 1690 N
+Inst_user_project_wrapper1 20 20 N
diff --git a/openlane/user_project_wrapper1/config.tcl b/openlane/user_project_wrapper1/config.tcl
new file mode 100644
index 0000000..391e137
--- /dev/null
+++ b/openlane/user_project_wrapper1/config.tcl
@@ -0,0 +1,145 @@
+# 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) "sky130A"
+set ::env(STD_CELL_LIBRARY) "sky130_fd_sc_hd"
+
+
+set ::env(DESIGN_NAME) user_project_wrapper1
+
+set ::env(FP_PDN_CHECK_NODES) 0
+set ::env(FP_PDN_ENABLE_RAILS) 1 
+
+set ::env(CLOCK_PORT) "wb_clk_i"
+set ::env(CLOCK_NET) "Inst_ChipTop.clock_clock"
+
+set ::env(CLOCK_PERIOD) "40"
+
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 2880 3480"
+
+#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.25
+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) 16
+set ::env(GRT_ALLOW_CONGESTION) 1
+#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
+
+#set ::env(PL_MAX_DISPLACEMENT_X) 800
+#set ::env(PL_MAX_DISPLACEMENT_Y) 600
+#set ::env(FP_TAP_HORIZONTAL_HALO) 20
+#set ::env(FP_TAP_VERTICAL_HALO) 20
+#set ::env(FP_PDN_HORIZONTAL_HALO) 30
+#set ::env(FP_PDN_VERTICAL_HALO) 30
+#set ::env(FP_PDN_VOFFSET) 5
+#set ::env(FP_PDN_HOFFSET) 235
+#set ::env(FP_PDN_VWIDTH) 1.6
+#set ::env(FP_PDN_HSPACING) 15.5
+#set ::env(FP_PDN_HSPACING) 3
+#set ::env(FP_PDN_VPITCH) 2800
+#set ::env(FP_PDN_HPITCH) {2800}
+#set ::env(PL_MACRO_CHANNEL) {5 30}
+#set ::env(PL_MACRO_HALO) {5 30}
+#set ::env(FP_PDN_HPITCH) {180}
+#set ::env(FP_PDN_VPITCH) {2800}
+
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+## Source Verilog Files
+#set ::env(VERILOG_FILES) [glob $script_dir/../../verilog/rtl/defines.v $script_dir/../../../verilog/rtl/*.v ]
+set ::env(VERILOG_FILES) "\
+	$::env(CARAVEL_ROOT)/verilog/rtl/defines.v \
+	$script_dir/../../../verilog/rtl/user_project_wrapper1.v \
+	$script_dir/../../../verilog/rtl/rocketAlpha/*v "
+
+
+## Internal Macros
+### Macro Placement
+set ::env(MACRO_PLACEMENT_CFG) "$script_dir/../../../openlane/user_project_wrapper1/macro.cfg"
+
+### Black-box verilog and views
+set ::env(VERILOG_FILES_BLACKBOX) "\
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_2kbyte_1rw1r_32x512_8.v \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_1kbyte_1rw1r_8x1024_8.v \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/verilog/sky130_sram_1kbyte_1rw1r_32x256_8.v"
+
+set ::env(EXTRA_LEFS) "\
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_2kbyte_1rw1r_32x512_8.lef \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_1kbyte_1rw1r_8x1024_8.lef \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lef/sky130_sram_1kbyte_1rw1r_32x256_8.lef"
+
+set ::env(EXTRA_GDS_FILES) "\
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_2kbyte_1rw1r_32x512_8.gds \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_1kbyte_1rw1r_8x1024_8.gds \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/gds/sky130_sram_1kbyte_1rw1r_32x256_8.gds"
+
+set ::env(EXTRA_LIBS) "\
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_1kbyte_1rw1r_8x1024_8_TT_1p8V_25C.lib \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_1kbyte_1rw1r_32x256_8_TT_1p8V_25C.lib \
+        $::env(PDK_ROOT)/sky130A/libs.ref/sky130_sram_macros/lib/sky130_sram_2kbyte_1rw1r_32x512_8_TT_1p8V_25C.lib"
+
+### Macro PDN Connections
+set ::env(FP_PDN_MACRO_HOOKS) "\
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.tag_array.tag_array_ext.mem_0_0 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_0.data_arrays_0_0_ext.mem_0_0 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_0 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_1 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_0 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_1 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_0 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_1 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_0 vccd1 vssd1 \
+        Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_1 vccd1 vssd1 "
+
+#set ::env(GLB_RT_OBS) "met1 0 0 $::env(DIE_AREA),\
+#				   met2 0 0 $::env(DIE_AREA),\
+#				   met3 0 0 $::env(DIE_AREA),\
+#				   met4 0 0 $::env(DIE_AREA),\
+#				   met5 0 0 $::env(DIE_AREA)"
+
diff --git a/openlane/user_project_wrapper1/macro.cfg b/openlane/user_project_wrapper1/macro.cfg
new file mode 100644
index 0000000..f74fb8c
--- /dev/null
+++ b/openlane/user_project_wrapper1/macro.cfg
@@ -0,0 +1,25 @@
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.ptw.l2_tlb_ram.l2_tlb_ram_ext.mem_0_0 100 100 N
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.tag_array.tag_array_ext.mem_0_0 2100 3000 N
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_0.data_arrays_0_0_ext.mem_0_0 150 3000 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_1.data_arrays_0_0_ext.mem_0_0 1100 3000 N
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_0 150 200 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_1 150 850 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_0 150 1500 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_1 150 2150 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_0 2050 200 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_1 2050 850 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_0 2050 1500 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_1 2050 2150 N 
+
+##Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.ptw.l2_tlb_ram.l2_tlb_ram_ext.mem_0_0 100 100 N
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.tag_array.tag_array_ext.mem_0_0 2000 3000 N
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_0.data_arrays_0_0_ext.mem_0_0 150 3000 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_1.data_arrays_0_0_ext.mem_0_0 1100 3000 N
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_0 150 150 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_1 150 700 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_0 150 1250 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_1 150 1800 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_0 2030 150 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_1 2030 700 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_0 2030 1250 N 
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_1 2030 1800 N 
diff --git a/openlane/user_project_wrapper1/macro.cfg.old b/openlane/user_project_wrapper1/macro.cfg.old
new file mode 100644
index 0000000..a5ed4da
--- /dev/null
+++ b/openlane/user_project_wrapper1/macro.cfg.old
@@ -0,0 +1,12 @@
+#Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.ptw.l2_tlb_ram.l2_tlb_ram_ext.mem_0_0 100 100 N
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.tag_array.tag_array_ext.mem_0_0 1700 2950 N
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_0.data_arrays_0_0_ext.mem_0_0 100 2950 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.frontend.icache.data_arrays_1.data_arrays_0_0_ext.mem_0_0 900 2950 N
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_0 100 250 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_0_1 100 800 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_0 100 1350 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_1_1 100 1900 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_0 2080 250 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_2_1 2080 800 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_0 2080 1350 N 
+Inst_ChipTop.system.tile_prci_domain.tile_reset_domain.tile.dcache.data.data_arrays_0.data_arrays_0_ext.mem_3_1 2080 1900 N 
diff --git a/openlane/user_project_wrapper1/pin_order.cfg b/openlane/user_project_wrapper1/pin_order.cfg
new file mode 100644
index 0000000..90cde69
--- /dev/null
+++ b/openlane/user_project_wrapper1/pin_order.cfg
@@ -0,0 +1,156 @@
+#BUS_SORT
+#NR
+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\]
+
+#S
+wb_.*
+wbs_.*
+la_.*
+user_clock2
+user_irq.*
+
+#E
+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\]
+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\]
+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
+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\]
+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/rocketAlpha/ClockDividerN.sv b/verilog/rtl/rocketAlpha/ClockDividerN.sv
new file mode 100644
index 0000000..1e09a07
--- /dev/null
+++ b/verilog/rtl/rocketAlpha/ClockDividerN.sv
@@ -0,0 +1,42 @@
+// See LICENSE for license details.
+
+/**
+  * An unsynthesizable divide-by-N clock divider.
+  * Duty cycle is 100 * (ceil(DIV / 2)) / DIV.
+  */
+
+module ClockDividerN #(parameter DIV = 1)(output logic clk_out = 1'b0, input clk_in);
+
+    localparam CWIDTH = $clog2(DIV);
+    localparam LOW_CYCLES = DIV / 2;
+    localparam HIGH_TRANSITION = LOW_CYCLES - 1;
+    localparam LOW_TRANSITION = DIV - 1;
+
+    generate
+        if (DIV == 1) begin
+            // This needs to be procedural because of the assignment on declaration
+            always @(clk_in) begin
+                clk_out = clk_in;
+            end
+        end else begin
+            reg [CWIDTH - 1: 0] count = HIGH_TRANSITION[CWIDTH-1:0];
+            // The blocking assignment to clock out is used to conform what was done
+            // in RC's clock dividers.
+            // It should have the effect of preventing registers in the divided clock
+            // domain latching register updates launched by the fast clock-domain edge
+            // that occurs at the same simulated time (as the divided clock edge).
+            always @(posedge clk_in) begin
+                if (count == LOW_TRANSITION[CWIDTH-1:0]) begin
+                    clk_out = 1'b0;
+                    count <= '0;
+                end
+                else begin
+                    if (count == HIGH_TRANSITION[CWIDTH-1:0]) begin
+                        clk_out = 1'b1;
+                    end
+                    count <= count + 1'b1;
+                end
+            end
+        end
+    endgenerate
+endmodule // ClockDividerN
diff --git a/verilog/rtl/rocketAlpha/EICG_wrapper.v b/verilog/rtl/rocketAlpha/EICG_wrapper.v
new file mode 100644
index 0000000..76ee093
--- /dev/null
+++ b/verilog/rtl/rocketAlpha/EICG_wrapper.v
@@ -0,0 +1,20 @@
+/* verilator lint_off UNOPTFLAT */
+
+module EICG_wrapper(
+  output out,
+  input en,
+  input test_en,
+  input in
+);
+
+  reg en_latched /*verilator clock_enable*/;
+
+  always @(*) begin
+     if (!in) begin
+        en_latched = en || test_en;
+     end
+  end
+
+  assign out = en_latched && in;
+
+endmodule
diff --git a/verilog/rtl/rocketAlpha/IOCell.v b/verilog/rtl/rocketAlpha/IOCell.v
new file mode 100644
index 0000000..a266cec
--- /dev/null
+++ b/verilog/rtl/rocketAlpha/IOCell.v
@@ -0,0 +1,62 @@
+// See LICENSE for license details
+
+`timescale 1ns/1ps
+
+module GenericAnalogIOCell(
+    inout pad,
+    inout core
+);
+
+    assign core = 1'bz;
+    assign pad = core;
+
+endmodule
+
+module GenericDigitalGPIOCell_1(
+    inout pad,
+    output i,
+    input ie,
+    input o,
+    input oe,
+    output io_oeb // caravel GPIO enable (enable output @ active LOW)
+);
+
+    assign pad = oe ? o : 1'bz;
+    assign i = ie ? pad : 1'b0;
+    assign io_oeb = !oe;
+    //assign io_oeb = oe ? 1'b0 : ie ? 1'b1 : 1'bz;
+
+endmodule
+
+module GenericDigitalGPIOCell(
+    inout pad,
+    output i,
+    input ie,
+    input o,
+    input oe
+);
+
+    assign pad = oe ? o : 1'bz;
+    assign i = ie ? pad : 1'b0;
+
+endmodule
+
+module GenericDigitalInIOCell(
+    input pad,
+    output i,
+    input ie
+);
+
+    assign i = ie ? pad : 1'b0;
+
+endmodule
+
+module GenericDigitalOutIOCell(
+    output pad,
+    input o,
+    input oe
+);
+
+    assign pad = oe ? o : 1'bz;
+
+endmodule
diff --git a/verilog/rtl/rocketAlpha/chipyard.TestHarness.RocketAlphaConfig.top.mems.v b/verilog/rtl/rocketAlpha/chipyard.TestHarness.RocketAlphaConfig.top.mems.v
new file mode 100644
index 0000000..568af54
--- /dev/null
+++ b/verilog/rtl/rocketAlpha/chipyard.TestHarness.RocketAlphaConfig.top.mems.v
@@ -0,0 +1,571 @@
+module data_arrays_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  [7:0]  RW0_wmask
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  wire [8:0] mem_0_0_addr0;
+  wire  mem_0_0_clk0;
+  wire [31:0] mem_0_0_din0;
+  wire [31:0] mem_0_0_dout0;
+  wire  mem_0_0_csb0;
+  wire  mem_0_0_web0;
+  wire [7:0] mem_0_0_wmask0;
+  wire  mem_0_0_clk1;
+  wire  mem_0_0_csb1;
+  wire [8:0] mem_0_0_addr1;
+  wire [8:0] mem_0_1_addr0;
+  wire  mem_0_1_clk0;
+  wire [31:0] mem_0_1_din0;
+  wire [31:0] mem_0_1_dout0;
+  wire  mem_0_1_csb0;
+  wire  mem_0_1_web0;
+  wire [7:0] mem_0_1_wmask0;
+  wire  mem_0_1_clk1;
+  wire  mem_0_1_csb1;
+  wire [8:0] mem_0_1_addr1;
+  wire [8:0] mem_1_0_addr0;
+  wire  mem_1_0_clk0;
+  wire [31:0] mem_1_0_din0;
+  wire [31:0] mem_1_0_dout0;
+  wire  mem_1_0_csb0;
+  wire  mem_1_0_web0;
+  wire [7:0] mem_1_0_wmask0;
+  wire  mem_1_0_clk1;
+  wire  mem_1_0_csb1;
+  wire [8:0] mem_1_0_addr1;
+  wire [8:0] mem_1_1_addr0;
+  wire  mem_1_1_clk0;
+  wire [31:0] mem_1_1_din0;
+  wire [31:0] mem_1_1_dout0;
+  wire  mem_1_1_csb0;
+  wire  mem_1_1_web0;
+  wire [7:0] mem_1_1_wmask0;
+  wire  mem_1_1_clk1;
+  wire  mem_1_1_csb1;
+  wire [8:0] mem_1_1_addr1;
+  wire [8:0] mem_2_0_addr0;
+  wire  mem_2_0_clk0;
+  wire [31:0] mem_2_0_din0;
+  wire [31:0] mem_2_0_dout0;
+  wire  mem_2_0_csb0;
+  wire  mem_2_0_web0;
+  wire [7:0] mem_2_0_wmask0;
+  wire  mem_2_0_clk1;
+  wire  mem_2_0_csb1;
+  wire [8:0] mem_2_0_addr1;
+  wire [8:0] mem_2_1_addr0;
+  wire  mem_2_1_clk0;
+  wire [31:0] mem_2_1_din0;
+  wire [31:0] mem_2_1_dout0;
+  wire  mem_2_1_csb0;
+  wire  mem_2_1_web0;
+  wire [7:0] mem_2_1_wmask0;
+  wire  mem_2_1_clk1;
+  wire  mem_2_1_csb1;
+  wire [8:0] mem_2_1_addr1;
+  wire [8:0] mem_3_0_addr0;
+  wire  mem_3_0_clk0;
+  wire [31:0] mem_3_0_din0;
+  wire [31:0] mem_3_0_dout0;
+  wire  mem_3_0_csb0;
+  wire  mem_3_0_web0;
+  wire [7:0] mem_3_0_wmask0;
+  wire  mem_3_0_clk1;
+  wire  mem_3_0_csb1;
+  wire [8:0] mem_3_0_addr1;
+  wire [8:0] mem_3_1_addr0;
+  wire  mem_3_1_clk0;
+  wire [31:0] mem_3_1_din0;
+  wire [31:0] mem_3_1_dout0;
+  wire  mem_3_1_csb0;
+  wire  mem_3_1_web0;
+  wire [7:0] mem_3_1_wmask0;
+  wire  mem_3_1_clk1;
+  wire  mem_3_1_csb1;
+  wire [8:0] mem_3_1_addr1;
+  wire [1:0] RW0_addr_sel = RW0_addr[10:9];
+  reg [1:0] RW0_addr_sel_reg;
+  wire [31:0] RW0_rdata_0_0 = mem_0_0_dout0;
+  wire [31:0] RW0_rdata_0_1 = mem_0_1_dout0;
+  wire [63:0] RW0_rdata_0 = {RW0_rdata_0_1,RW0_rdata_0_0};
+  wire [31:0] RW0_rdata_1_0 = mem_1_0_dout0;
+  wire [31:0] RW0_rdata_1_1 = mem_1_1_dout0;
+  wire [63:0] RW0_rdata_1 = {RW0_rdata_1_1,RW0_rdata_1_0};
+  wire [31:0] RW0_rdata_2_0 = mem_2_0_dout0;
+  wire [31:0] RW0_rdata_2_1 = mem_2_1_dout0;
+  wire [63:0] RW0_rdata_2 = {RW0_rdata_2_1,RW0_rdata_2_0};
+  wire [31:0] RW0_rdata_3_0 = mem_3_0_dout0;
+  wire [31:0] RW0_rdata_3_1 = mem_3_1_dout0;
+  wire [63:0] RW0_rdata_3 = {RW0_rdata_3_1,RW0_rdata_3_0};
+  wire  _GEN_0 = RW0_addr_sel == 2'h0;
+  wire  _GEN_1 = RW0_en & RW0_addr_sel == 2'h0;
+  wire  _GEN_2 = RW0_addr_sel == 2'h0;
+  wire  _GEN_3 = RW0_wmode & RW0_addr_sel == 2'h0;
+  wire  _GEN_4 = RW0_wmask[0];
+  wire  _GEN_5 = RW0_wmask[0];
+  wire  _GEN_6 = RW0_wmask[1];
+  wire [1:0] _GEN_7 = {RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_8 = RW0_wmask[1];
+  wire [2:0] _GEN_9 = {RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_10 = RW0_wmask[2];
+  wire [3:0] _GEN_11 = {RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_12 = RW0_wmask[2];
+  wire [4:0] _GEN_13 = {RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_14 = RW0_wmask[3];
+  wire [5:0] _GEN_15 = {RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_16 = RW0_wmask[3];
+  wire [6:0] _GEN_17 = {RW0_wmask[3],RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_18 = RW0_addr_sel == 2'h0;
+  wire  _GEN_19 = RW0_en & RW0_addr_sel == 2'h0;
+  wire  _GEN_20 = RW0_addr_sel == 2'h0;
+  wire  _GEN_21 = RW0_wmode & RW0_addr_sel == 2'h0;
+  wire  _GEN_22 = RW0_wmask[4];
+  wire  _GEN_23 = RW0_wmask[4];
+  wire  _GEN_24 = RW0_wmask[5];
+  wire [1:0] _GEN_25 = {RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_26 = RW0_wmask[5];
+  wire [2:0] _GEN_27 = {RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_28 = RW0_wmask[6];
+  wire [3:0] _GEN_29 = {RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_30 = RW0_wmask[6];
+  wire [4:0] _GEN_31 = {RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_32 = RW0_wmask[7];
+  wire [5:0] _GEN_33 = {RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_34 = RW0_wmask[7];
+  wire [6:0] _GEN_35 = {RW0_wmask[7],RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_36 = RW0_addr_sel == 2'h1;
+  wire  _GEN_37 = RW0_en & RW0_addr_sel == 2'h1;
+  wire  _GEN_38 = RW0_addr_sel == 2'h1;
+  wire  _GEN_39 = RW0_wmode & RW0_addr_sel == 2'h1;
+  wire  _GEN_40 = RW0_wmask[0];
+  wire  _GEN_41 = RW0_wmask[0];
+  wire  _GEN_42 = RW0_wmask[1];
+  wire [1:0] _GEN_43 = {RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_44 = RW0_wmask[1];
+  wire [2:0] _GEN_45 = {RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_46 = RW0_wmask[2];
+  wire [3:0] _GEN_47 = {RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_48 = RW0_wmask[2];
+  wire [4:0] _GEN_49 = {RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_50 = RW0_wmask[3];
+  wire [5:0] _GEN_51 = {RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_52 = RW0_wmask[3];
+  wire [6:0] _GEN_53 = {RW0_wmask[3],RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_54 = RW0_addr_sel == 2'h1;
+  wire  _GEN_55 = RW0_en & RW0_addr_sel == 2'h1;
+  wire  _GEN_56 = RW0_addr_sel == 2'h1;
+  wire  _GEN_57 = RW0_wmode & RW0_addr_sel == 2'h1;
+  wire  _GEN_58 = RW0_wmask[4];
+  wire  _GEN_59 = RW0_wmask[4];
+  wire  _GEN_60 = RW0_wmask[5];
+  wire [1:0] _GEN_61 = {RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_62 = RW0_wmask[5];
+  wire [2:0] _GEN_63 = {RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_64 = RW0_wmask[6];
+  wire [3:0] _GEN_65 = {RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_66 = RW0_wmask[6];
+  wire [4:0] _GEN_67 = {RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_68 = RW0_wmask[7];
+  wire [5:0] _GEN_69 = {RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_70 = RW0_wmask[7];
+  wire [6:0] _GEN_71 = {RW0_wmask[7],RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_72 = RW0_addr_sel == 2'h2;
+  wire  _GEN_73 = RW0_en & RW0_addr_sel == 2'h2;
+  wire  _GEN_74 = RW0_addr_sel == 2'h2;
+  wire  _GEN_75 = RW0_wmode & RW0_addr_sel == 2'h2;
+  wire  _GEN_76 = RW0_wmask[0];
+  wire  _GEN_77 = RW0_wmask[0];
+  wire  _GEN_78 = RW0_wmask[1];
+  wire [1:0] _GEN_79 = {RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_80 = RW0_wmask[1];
+  wire [2:0] _GEN_81 = {RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_82 = RW0_wmask[2];
+  wire [3:0] _GEN_83 = {RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_84 = RW0_wmask[2];
+  wire [4:0] _GEN_85 = {RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_86 = RW0_wmask[3];
+  wire [5:0] _GEN_87 = {RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_88 = RW0_wmask[3];
+  wire [6:0] _GEN_89 = {RW0_wmask[3],RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_90 = RW0_addr_sel == 2'h2;
+  wire  _GEN_91 = RW0_en & RW0_addr_sel == 2'h2;
+  wire  _GEN_92 = RW0_addr_sel == 2'h2;
+  wire  _GEN_93 = RW0_wmode & RW0_addr_sel == 2'h2;
+  wire  _GEN_94 = RW0_wmask[4];
+  wire  _GEN_95 = RW0_wmask[4];
+  wire  _GEN_96 = RW0_wmask[5];
+  wire [1:0] _GEN_97 = {RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_98 = RW0_wmask[5];
+  wire [2:0] _GEN_99 = {RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_100 = RW0_wmask[6];
+  wire [3:0] _GEN_101 = {RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_102 = RW0_wmask[6];
+  wire [4:0] _GEN_103 = {RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_104 = RW0_wmask[7];
+  wire [5:0] _GEN_105 = {RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_106 = RW0_wmask[7];
+  wire [6:0] _GEN_107 = {RW0_wmask[7],RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_108 = RW0_addr_sel == 2'h3;
+  wire  _GEN_109 = RW0_en & RW0_addr_sel == 2'h3;
+  wire  _GEN_110 = RW0_addr_sel == 2'h3;
+  wire  _GEN_111 = RW0_wmode & RW0_addr_sel == 2'h3;
+  wire  _GEN_112 = RW0_wmask[0];
+  wire  _GEN_113 = RW0_wmask[0];
+  wire  _GEN_114 = RW0_wmask[1];
+  wire [1:0] _GEN_115 = {RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_116 = RW0_wmask[1];
+  wire [2:0] _GEN_117 = {RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_118 = RW0_wmask[2];
+  wire [3:0] _GEN_119 = {RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_120 = RW0_wmask[2];
+  wire [4:0] _GEN_121 = {RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_122 = RW0_wmask[3];
+  wire [5:0] _GEN_123 = {RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_124 = RW0_wmask[3];
+  wire [6:0] _GEN_125 = {RW0_wmask[3],RW0_wmask[2],RW0_wmask[2],RW0_wmask[1],RW0_wmask[1],RW0_wmask[0],RW0_wmask[0]};
+  wire  _GEN_126 = RW0_addr_sel == 2'h3;
+  wire  _GEN_127 = RW0_en & RW0_addr_sel == 2'h3;
+  wire  _GEN_128 = RW0_addr_sel == 2'h3;
+  wire  _GEN_129 = RW0_wmode & RW0_addr_sel == 2'h3;
+  wire  _GEN_130 = RW0_wmask[4];
+  wire  _GEN_131 = RW0_wmask[4];
+  wire  _GEN_132 = RW0_wmask[5];
+  wire [1:0] _GEN_133 = {RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_134 = RW0_wmask[5];
+  wire [2:0] _GEN_135 = {RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_136 = RW0_wmask[6];
+  wire [3:0] _GEN_137 = {RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_138 = RW0_wmask[6];
+  wire [4:0] _GEN_139 = {RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_140 = RW0_wmask[7];
+  wire [5:0] _GEN_141 = {RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  wire  _GEN_142 = RW0_wmask[7];
+  wire [6:0] _GEN_143 = {RW0_wmask[7],RW0_wmask[6],RW0_wmask[6],RW0_wmask[5],RW0_wmask[5],RW0_wmask[4],RW0_wmask[4]};
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_0_0 (
+    .addr0(mem_0_0_addr0),
+    .clk0(mem_0_0_clk0),
+    .din0(mem_0_0_din0),
+    .dout0(mem_0_0_dout0),
+    .csb0(mem_0_0_csb0),
+    .web0(mem_0_0_web0),
+    .wmask0(mem_0_0_wmask0),
+    .clk1(mem_0_0_clk1),
+    .csb1(mem_0_0_csb1),
+    .addr1(mem_0_0_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_0_1 (
+    .addr0(mem_0_1_addr0),
+    .clk0(mem_0_1_clk0),
+    .din0(mem_0_1_din0),
+    .dout0(mem_0_1_dout0),
+    .csb0(mem_0_1_csb0),
+    .web0(mem_0_1_web0),
+    .wmask0(mem_0_1_wmask0),
+    .clk1(mem_0_1_clk1),
+    .csb1(mem_0_1_csb1),
+    .addr1(mem_0_1_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_1_0 (
+    .addr0(mem_1_0_addr0),
+    .clk0(mem_1_0_clk0),
+    .din0(mem_1_0_din0),
+    .dout0(mem_1_0_dout0),
+    .csb0(mem_1_0_csb0),
+    .web0(mem_1_0_web0),
+    .wmask0(mem_1_0_wmask0),
+    .clk1(mem_1_0_clk1),
+    .csb1(mem_1_0_csb1),
+    .addr1(mem_1_0_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_1_1 (
+    .addr0(mem_1_1_addr0),
+    .clk0(mem_1_1_clk0),
+    .din0(mem_1_1_din0),
+    .dout0(mem_1_1_dout0),
+    .csb0(mem_1_1_csb0),
+    .web0(mem_1_1_web0),
+    .wmask0(mem_1_1_wmask0),
+    .clk1(mem_1_1_clk1),
+    .csb1(mem_1_1_csb1),
+    .addr1(mem_1_1_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_2_0 (
+    .addr0(mem_2_0_addr0),
+    .clk0(mem_2_0_clk0),
+    .din0(mem_2_0_din0),
+    .dout0(mem_2_0_dout0),
+    .csb0(mem_2_0_csb0),
+    .web0(mem_2_0_web0),
+    .wmask0(mem_2_0_wmask0),
+    .clk1(mem_2_0_clk1),
+    .csb1(mem_2_0_csb1),
+    .addr1(mem_2_0_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_2_1 (
+    .addr0(mem_2_1_addr0),
+    .clk0(mem_2_1_clk0),
+    .din0(mem_2_1_din0),
+    .dout0(mem_2_1_dout0),
+    .csb0(mem_2_1_csb0),
+    .web0(mem_2_1_web0),
+    .wmask0(mem_2_1_wmask0),
+    .clk1(mem_2_1_clk1),
+    .csb1(mem_2_1_csb1),
+    .addr1(mem_2_1_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_3_0 (
+    .addr0(mem_3_0_addr0),
+    .clk0(mem_3_0_clk0),
+    .din0(mem_3_0_din0),
+    .dout0(mem_3_0_dout0),
+    .csb0(mem_3_0_csb0),
+    .web0(mem_3_0_web0),
+    .wmask0(mem_3_0_wmask0),
+    .clk1(mem_3_0_clk1),
+    .csb1(mem_3_0_csb1),
+    .addr1(mem_3_0_addr1)
+  );
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_3_1 (
+    .addr0(mem_3_1_addr0),
+    .clk0(mem_3_1_clk0),
+    .din0(mem_3_1_din0),
+    .dout0(mem_3_1_dout0),
+    .csb0(mem_3_1_csb0),
+    .web0(mem_3_1_web0),
+    .wmask0(mem_3_1_wmask0),
+    .clk1(mem_3_1_clk1),
+    .csb1(mem_3_1_csb1),
+    .addr1(mem_3_1_addr1)
+  );
+  assign RW0_rdata = RW0_addr_sel_reg == 2'h0 ? RW0_rdata_0 : RW0_addr_sel_reg == 2'h1 ? RW0_rdata_1 : RW0_addr_sel_reg
+     == 2'h2 ? RW0_rdata_2 : RW0_addr_sel_reg == 2'h3 ? RW0_rdata_3 : 64'h0;
+  assign mem_0_0_addr0 = RW0_addr[8:0];
+  assign mem_0_0_clk0 = RW0_clk;
+  assign mem_0_0_din0 = RW0_wdata[31:0];
+  assign mem_0_0_csb0 = ~(RW0_en & RW0_addr_sel == 2'h0);
+  assign mem_0_0_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h0);
+  assign mem_0_0_wmask0 = {RW0_wmask[3],_GEN_17};
+  assign mem_0_0_clk1 = 1'h0;
+  assign mem_0_0_csb1 = 1'h0;
+  assign mem_0_0_addr1 = 9'h0;
+  assign mem_0_1_addr0 = RW0_addr[8:0];
+  assign mem_0_1_clk0 = RW0_clk;
+  assign mem_0_1_din0 = RW0_wdata[63:32];
+  assign mem_0_1_csb0 = ~(RW0_en & RW0_addr_sel == 2'h0);
+  assign mem_0_1_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h0);
+  assign mem_0_1_wmask0 = {RW0_wmask[7],_GEN_35};
+  assign mem_0_1_clk1 = 1'h0;
+  assign mem_0_1_csb1 = 1'h0;
+  assign mem_0_1_addr1 = 9'h0;
+  assign mem_1_0_addr0 = RW0_addr[8:0];
+  assign mem_1_0_clk0 = RW0_clk;
+  assign mem_1_0_din0 = RW0_wdata[31:0];
+  assign mem_1_0_csb0 = ~(RW0_en & RW0_addr_sel == 2'h1);
+  assign mem_1_0_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h1);
+  assign mem_1_0_wmask0 = {RW0_wmask[3],_GEN_17};
+  assign mem_1_0_clk1 = 1'h0;
+  assign mem_1_0_csb1 = 1'h0;
+  assign mem_1_0_addr1 = 9'h0;
+  assign mem_1_1_addr0 = RW0_addr[8:0];
+  assign mem_1_1_clk0 = RW0_clk;
+  assign mem_1_1_din0 = RW0_wdata[63:32];
+  assign mem_1_1_csb0 = ~(RW0_en & RW0_addr_sel == 2'h1);
+  assign mem_1_1_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h1);
+  assign mem_1_1_wmask0 = {RW0_wmask[7],_GEN_35};
+  assign mem_1_1_clk1 = 1'h0;
+  assign mem_1_1_csb1 = 1'h0;
+  assign mem_1_1_addr1 = 9'h0;
+  assign mem_2_0_addr0 = RW0_addr[8:0];
+  assign mem_2_0_clk0 = RW0_clk;
+  assign mem_2_0_din0 = RW0_wdata[31:0];
+  assign mem_2_0_csb0 = ~(RW0_en & RW0_addr_sel == 2'h2);
+  assign mem_2_0_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h2);
+  assign mem_2_0_wmask0 = {RW0_wmask[3],_GEN_17};
+  assign mem_2_0_clk1 = 1'h0;
+  assign mem_2_0_csb1 = 1'h0;
+  assign mem_2_0_addr1 = 9'h0;
+  assign mem_2_1_addr0 = RW0_addr[8:0];
+  assign mem_2_1_clk0 = RW0_clk;
+  assign mem_2_1_din0 = RW0_wdata[63:32];
+  assign mem_2_1_csb0 = ~(RW0_en & RW0_addr_sel == 2'h2);
+  assign mem_2_1_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h2);
+  assign mem_2_1_wmask0 = {RW0_wmask[7],_GEN_35};
+  assign mem_2_1_clk1 = 1'h0;
+  assign mem_2_1_csb1 = 1'h0;
+  assign mem_2_1_addr1 = 9'h0;
+  assign mem_3_0_addr0 = RW0_addr[8:0];
+  assign mem_3_0_clk0 = RW0_clk;
+  assign mem_3_0_din0 = RW0_wdata[31:0];
+  assign mem_3_0_csb0 = ~(RW0_en & RW0_addr_sel == 2'h3);
+  assign mem_3_0_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h3);
+  assign mem_3_0_wmask0 = {RW0_wmask[3],_GEN_17};
+  assign mem_3_0_clk1 = 1'h0;
+  assign mem_3_0_csb1 = 1'h0;
+  assign mem_3_0_addr1 = 9'h0;
+  assign mem_3_1_addr0 = RW0_addr[8:0];
+  assign mem_3_1_clk0 = RW0_clk;
+  assign mem_3_1_din0 = RW0_wdata[63:32];
+  assign mem_3_1_csb0 = ~(RW0_en & RW0_addr_sel == 2'h3);
+  assign mem_3_1_web0 = ~(RW0_wmode & RW0_addr_sel == 2'h3);
+  assign mem_3_1_wmask0 = {RW0_wmask[7],_GEN_35};
+  assign mem_3_1_clk1 = 1'h0;
+  assign mem_3_1_csb1 = 1'h0;
+  assign mem_3_1_addr1 = 9'h0;
+  always @(posedge RW0_clk) begin
+    if (RW0_en) begin
+      RW0_addr_sel_reg <= RW0_addr_sel;
+    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}};
+  RW0_addr_sel_reg = _RAND_0[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+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,
+  input         RW0_wmask
+);
+  wire [7:0] mem_0_0_addr0;
+  wire  mem_0_0_clk0;
+  wire [31:0] mem_0_0_din0;
+  wire [31:0] mem_0_0_dout0;
+  wire  mem_0_0_csb0;
+  wire  mem_0_0_web0;
+  wire [7:0] mem_0_0_wmask0;
+  wire  mem_0_0_clk1;
+  wire  mem_0_0_csb1;
+  wire [7:0] mem_0_0_addr1;
+  wire [20:0] RW0_rdata_0_0 = mem_0_0_dout0[20:0];
+  wire [20:0] RW0_rdata_0 = RW0_rdata_0_0;
+  wire [1:0] _GEN_0 = {RW0_wmask,RW0_wmask};
+  wire [2:0] _GEN_1 = {RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [3:0] _GEN_2 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [4:0] _GEN_3 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [5:0] _GEN_4 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [6:0] _GEN_5 = {1'h0,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  sky130_sram_1kbyte_1rw1r_32x256_8 mem_0_0 (
+    .addr0(mem_0_0_addr0),
+    .clk0(mem_0_0_clk0),
+    .din0(mem_0_0_din0),
+    .dout0(mem_0_0_dout0),
+    .csb0(mem_0_0_csb0),
+    .web0(mem_0_0_web0),
+    .wmask0(mem_0_0_wmask0),
+    .clk1(mem_0_0_clk1),
+    .csb1(mem_0_0_csb1),
+    .addr1(mem_0_0_addr1)
+  );
+  assign RW0_rdata = mem_0_0_dout0[20:0];
+  assign mem_0_0_addr0 = {{2'd0}, RW0_addr};
+  assign mem_0_0_clk0 = RW0_clk;
+  assign mem_0_0_din0 = {{11'd0}, RW0_wdata};
+  assign mem_0_0_csb0 = ~RW0_en;
+  assign mem_0_0_web0 = ~RW0_wmode;
+  assign mem_0_0_wmask0 = {1'h0,_GEN_5};
+  assign mem_0_0_clk1 = 1'h0;
+  assign mem_0_0_csb1 = 1'h0;
+  assign mem_0_0_addr1 = 8'h0;
+endmodule
+module data_arrays_0_0_ext(
+  input  [8:0]  RW0_addr,
+  input         RW0_clk,
+  input  [31:0] RW0_wdata,
+  output [31:0] RW0_rdata,
+  input         RW0_en,
+  input         RW0_wmode,
+  input         RW0_wmask
+);
+  wire [8:0] mem_0_0_addr0;
+  wire  mem_0_0_clk0;
+  wire [31:0] mem_0_0_din0;
+  wire [31:0] mem_0_0_dout0;
+  wire  mem_0_0_csb0;
+  wire  mem_0_0_web0;
+  wire [7:0] mem_0_0_wmask0;
+  wire  mem_0_0_clk1;
+  wire  mem_0_0_csb1;
+  wire [8:0] mem_0_0_addr1;
+  wire [31:0] RW0_rdata_0_0 = mem_0_0_dout0;
+  wire [31:0] RW0_rdata_0 = RW0_rdata_0_0;
+  wire [1:0] _GEN_0 = {RW0_wmask,RW0_wmask};
+  wire [2:0] _GEN_1 = {RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [3:0] _GEN_2 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [4:0] _GEN_3 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [5:0] _GEN_4 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  wire [6:0] _GEN_5 = {RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask,RW0_wmask};
+  sky130_sram_2kbyte_1rw1r_32x512_8 mem_0_0 (
+    .addr0(mem_0_0_addr0),
+    .clk0(mem_0_0_clk0),
+    .din0(mem_0_0_din0),
+    .dout0(mem_0_0_dout0),
+    .csb0(mem_0_0_csb0),
+    .web0(mem_0_0_web0),
+    .wmask0(mem_0_0_wmask0),
+    .clk1(mem_0_0_clk1),
+    .csb1(mem_0_0_csb1),
+    .addr1(mem_0_0_addr1)
+  );
+  assign RW0_rdata = mem_0_0_dout0;
+  assign mem_0_0_addr0 = RW0_addr;
+  assign mem_0_0_clk0 = RW0_clk;
+  assign mem_0_0_din0 = RW0_wdata;
+  assign mem_0_0_csb0 = ~RW0_en;
+  assign mem_0_0_web0 = ~RW0_wmode;
+  assign mem_0_0_wmask0 = {RW0_wmask,_GEN_5};
+  assign mem_0_0_clk1 = 1'h0;
+  assign mem_0_0_csb1 = 1'h0;
+  assign mem_0_0_addr1 = 9'h0;
+endmodule
diff --git a/verilog/rtl/rocketAlpha/chipyard.TestHarness.RocketAlphaConfig.top.v b/verilog/rtl/rocketAlpha/chipyard.TestHarness.RocketAlphaConfig.top.v
new file mode 100644
index 0000000..b4e0864
--- /dev/null
+++ b/verilog/rtl/rocketAlpha/chipyard.TestHarness.RocketAlphaConfig.top.v
@@ -0,0 +1,226163 @@
+module IntXbar(
+  input   auto_int_in_4_0,
+  input   auto_int_in_3_0,
+  input   auto_int_in_2_0,
+  input   auto_int_in_2_1,
+  input   auto_int_in_2_2,
+  input   auto_int_in_2_3,
+  input   auto_int_in_1_0,
+  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,
+  output  auto_int_out_5,
+  output  auto_int_out_6,
+  output  auto_int_out_7
+);
+  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_2_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_3 = auto_int_in_2_1; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_4 = auto_int_in_2_2; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_5 = auto_int_in_2_3; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_6 = auto_int_in_3_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_int_out_7 = auto_int_in_4_0; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module InterruptBusWrapper(
+  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_2_1,
+  input   auto_int_bus_int_in_2_2,
+  input   auto_int_bus_int_in_2_3,
+  input   auto_int_bus_int_in_1_0,
+  input   auto_int_bus_int_in_0_0,
+  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
+);
+  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_2_1; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_2_2; // @[InterruptBus.scala 14:27]
+  wire  int_bus_auto_int_in_2_3; // @[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_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]
+  IntXbar int_bus ( // @[InterruptBus.scala 14:27]
+    .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_2_1(int_bus_auto_int_in_2_1),
+    .auto_int_in_2_2(int_bus_auto_int_in_2_2),
+    .auto_int_in_2_3(int_bus_auto_int_in_2_3),
+    .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_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)
+  );
+  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 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_2_1 = auto_int_bus_int_in_2_1; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_2_2 = auto_int_bus_int_in_2_2; // @[LazyModule.scala 309:16]
+  assign int_bus_auto_int_in_2_3 = auto_int_bus_int_in_2_3; // @[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]
+endmodule
+module ClockGroupAggregator(
+  input   auto_in_member_subsystem_sbus_0_clock,
+  input   auto_in_member_subsystem_sbus_0_reset,
+  output  auto_out_member_subsystem_sbus_0_clock,
+  output  auto_out_member_subsystem_sbus_0_reset
+);
+  assign auto_out_member_subsystem_sbus_0_clock = auto_in_member_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_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         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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         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;
+`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 [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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_5 = ~_source_ok_T; // @[Monitor.scala 63:7]
+  wire [32: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  _T_17 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_20 = _T_17 & _source_ok_T; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_33 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_36 = $signed(_T_34) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_38 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_41 = $signed(_T_39) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_73 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_76 = $signed(_T_74) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_191 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_195 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_196 = _T_195 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_200 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_204 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_384 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_416 = _T_17 & _T_32; // @[Parameters.scala 670:56]
+  wire  _T_418 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_485 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_486 = _T_418 & _T_485; // @[Parameters.scala 670:56]
+  wire  _T_488 = _T_416 | _T_486; // @[Parameters.scala 672:30]
+  wire  _T_498 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_502 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_510 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_577 = _T_27 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_578 = _T_418 & _T_577; // @[Parameters.scala 670:56]
+  wire  _T_599 = _T_416 | _T_578; // @[Parameters.scala 672:30]
+  wire  _T_601 = _T_20 & _T_599; // @[Monitor.scala 115:71]
+  wire  _T_619 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_724 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_725 = io_in_a_bits_mask & _T_724; // @[Monitor.scala 127:31]
+  wire  _T_726 = _T_725 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_730 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_738 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_793 = _T_27 | _T_32 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_794 = _T_738 & _T_793; // @[Parameters.scala 670:56]
+  wire  _T_816 = _T_20 & _T_794; // @[Monitor.scala 131:74]
+  wire  _T_826 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_834 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_930 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_938 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1024 = _T_20 & _T_416; // @[Monitor.scala 147:68]
+  wire  _T_1034 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1046 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1193 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1197 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1201 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1205 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1209 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'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_72 = {{12'd0}, inflight_opcodes}; // @[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 [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_74 = {{8'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_74 & _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_1243 = 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] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1246 = _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_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[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  _T_1250 = ~(inflight >> io_in_a_bits_source); // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[Monitor.scala 671:71]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1050 ? 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_1256 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1256 ? _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_1256 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  same_cycle_resp = _T_1243 & _source_ok_T; // @[Monitor.scala 681:88]
+  wire  _T_1269 = inflight | 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_1274 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1275 = io_in_d_bits_opcode == _GEN_32 | _T_1274; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_77 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1291 = _GEN_77 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _source_ok_T & _T_1256; // @[Monitor.scala 694:116]
+  wire  _T_1303 = ~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_1310 = 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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_80 = {{8'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_80 & _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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1050 ? _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_1363 = _GEN_77 == 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 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 <= 9'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 <= 9'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 (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 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 (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 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_5 & (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 & _T_5) 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_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 & ~_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_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 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_191 & (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 & ~_T_191) 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_196 & (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 & ~_T_196) 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_200 & (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 & ~_T_200) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (_T_5 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & _T_5) 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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_191 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_191) 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_384 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_384) 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_196 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_196) 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_200 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_200) 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_20 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_20) 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_488 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_488) 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 (_T_5 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & _T_5) 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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_498 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_502) 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_200 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_200) 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_601 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_601) 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 (_T_5 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & _T_5) 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_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~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_498 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_502) 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_601 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_601) 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 (_T_5 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & _T_5) 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_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~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_498 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_498) 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_726 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_726) 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_816 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_816) 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 (_T_5 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & _T_5) 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_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~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_826 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_826) 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_502 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_502) 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_816 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_816) 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 (_T_5 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & _T_5) 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_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~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_930 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_930) 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_502 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_502) 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_1024 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1024) 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 (_T_5 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & _T_5) 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_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~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_1034 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1034) 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_502 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_502) 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_200 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_200) 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_1046 & (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_1046) 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 (~_T_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) 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_1058 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) 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_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) 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 (io_in_d_valid & _T_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) 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_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) 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 (io_in_d_valid & _T_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) 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_1118 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) 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 (~_T_1058 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) 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 (~_T_1058 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) 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_1118 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) 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 (~_T_1058 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) 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_1193 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1193) 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_1197 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1197) 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_1201 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1201) 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_1205 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1205) 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_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) 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_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) 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_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) 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_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) 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_1233 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) 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_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) 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_1250 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) 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_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) 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_1275 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1275) 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_1279 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1279) 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_1287 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1287) 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_1291 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1291) 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_1303 & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~_T_1303) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (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_1319 & ~reset) begin
+          $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_1319) 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_1345 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2) 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_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) 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
+  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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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}};
+  sink = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  denied = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_sizes = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_15[8:0];
+  _RAND_16 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  watchdog = _RAND_17[31:0];
+  _RAND_18 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_18[7:0];
+  _RAND_19 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_19[8: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         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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         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_1 = ~io_in_a_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok = io_in_a_bits_source | _source_ok_T_1; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32: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 [32:0] _T_37 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_38 = $signed(_T_37) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_39 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_40 = {1'b0,$signed(_T_39)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_42 = $signed(_T_40) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_43 = $signed(_T_42) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_44 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_45 = {1'b0,$signed(_T_44)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_47 = $signed(_T_45) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_48 = $signed(_T_47) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_49 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_50 = {1'b0,$signed(_T_49)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_52 = $signed(_T_50) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_53 = $signed(_T_52) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_54 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_55 = {1'b0,$signed(_T_54)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_57 = $signed(_T_55) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_58 = $signed(_T_57) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_59 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_60 = {1'b0,$signed(_T_59)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_62 = $signed(_T_60) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_63 = $signed(_T_62) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_64 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_65 = {1'b0,$signed(_T_64)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_67 = $signed(_T_65) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_68 = $signed(_T_67) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_69 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_70 = {1'b0,$signed(_T_69)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_72 = $signed(_T_70) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_73 = $signed(_T_72) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_74 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_75 = {1'b0,$signed(_T_74)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_77 = $signed(_T_75) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_78 = $signed(_T_77) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_79 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_80 = {1'b0,$signed(_T_79)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_82 = $signed(_T_80) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_83 = $signed(_T_82) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_84 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_85 = {1'b0,$signed(_T_84)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_87 = $signed(_T_85) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_88 = $signed(_T_87) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_89 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_90 = {1'b0,$signed(_T_89)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_92 = $signed(_T_90) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_93 = $signed(_T_92) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_202 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_206 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_207 = _T_206 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_211 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_215 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_397 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_410 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_431 = _T_26 & _T_43; // @[Parameters.scala 670:56]
+  wire  _T_433 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_500 = _T_38 | _T_48 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_501 = _T_433 & _T_500; // @[Parameters.scala 670:56]
+  wire  _T_503 = _T_431 | _T_501; // @[Parameters.scala 672:30]
+  wire  _T_513 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_517 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_525 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_594 = _T_38 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_595 = _T_433 & _T_594; // @[Parameters.scala 670:56]
+  wire  _T_616 = _T_431 | _T_595; // @[Parameters.scala 672:30]
+  wire  _T_618 = _T_31 & _T_616; // @[Monitor.scala 115:71]
+  wire  _T_636 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_743 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_744 = io_in_a_bits_mask & _T_743; // @[Monitor.scala 127:31]
+  wire  _T_745 = _T_744 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_749 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_759 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_814 = _T_38 | _T_43 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_815 = _T_759 & _T_814; // @[Parameters.scala 670:56]
+  wire  _T_837 = _T_31 & _T_815; // @[Monitor.scala 131:74]
+  wire  _T_847 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_855 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_953 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_961 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1049 = _T_31 & _T_431; // @[Monitor.scala 147:68]
+  wire  _T_1059 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1071 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_3 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = io_in_d_bits_source | _source_ok_T_3; // @[Parameters.scala 1125:46]
+  wire  _T_1075 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1079 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1083 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1087 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1091 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1095 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1106 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1110 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1123 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1143 = _T_1091 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1152 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1169 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1187 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1217 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1218 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1222 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1226 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1230 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1234 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1241 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1242 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1246 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1250 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1254 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1258 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1262 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[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 [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_73 = {{8'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 = {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_1268 = 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_1271 = _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_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[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_1273 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1275 = ~_T_1273[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_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1279 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1281 = ~_T_1075; // @[Monitor.scala 671:74]
+  wire  _T_1282 = io_in_d_valid & d_first_1 & ~_T_1075; // @[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_1075 ? _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_1281 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1281 ? _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_1281 ? _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_1268 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [1:0] _T_1292 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1294 = _T_1292[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_1299 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1300 = io_in_d_bits_opcode == _GEN_32 | _T_1299; // @[Monitor.scala 685:77]
+  wire  _T_1304 = 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_1311 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1312 = io_in_d_bits_opcode == _GEN_48 | _T_1311; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_78 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1316 = _GEN_78 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1326 = _T_1279 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1281; // @[Monitor.scala 694:116]
+  wire  _T_1328 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_1335 = 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_19[7:0];
+  wire [7:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [7:0] d_opcodes_clr = _GEN_23[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_20[15:0];
+  wire [15:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [15:0] d_sizes_clr = _GEN_24[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_1344 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'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_1370 = io_in_d_valid & d_first_2 & _T_1075; // @[Monitor.scala 779:71]
+  wire [1:0] d_clr_1 = _d_first_T & d_first_2 & _T_1075 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 783:90 784:21]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1075 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire [1:0] _T_1378 = 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_1388 = _GEN_78 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [1:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [1:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [15:0] d_sizes_clr_1 = _GEN_69[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_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1413 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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]
+      d_first_counter_2 <= 9'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 <= 9'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_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) 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 (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) 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_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 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_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 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_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 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_202 & (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_202) 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_207 & (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_207) 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_211 & (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_211) 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 (io_in_a_valid & _T_215 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset) 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 (io_in_a_valid & _T_215 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset) 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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_202 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_202) 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_397 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_397) 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_207 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_207) 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_211 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_211) 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_31 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_31) 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_503 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_503) 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_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~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_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~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_513 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_513) 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_517 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_517) 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_211 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_211) 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_618 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_618) 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_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~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_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~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_513 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_513) 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_517 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_517) 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_618 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_618) 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_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~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_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~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_513 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_513) 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_745 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_745) 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_837 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_837) 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_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~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_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~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_847 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_847) 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_517 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_517) 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_837 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_837) 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_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~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_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~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_953 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_953) 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_517 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_517) 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_1049 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_1049) 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_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~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_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~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_1059 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_1059) 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_517 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_517) 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_211 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_211) 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_1071 & (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_1071) 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_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _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_1079 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1079) 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_1083 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1087) 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_1091 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1091) 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_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _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 (io_in_d_valid & _T_1095 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1079 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1079) 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_1106 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1106) 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_1110 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1110) 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_1087 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1087) 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_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _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 (io_in_d_valid & _T_1123 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1079 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1079) 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_1106 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1106) 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_1110 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1110) 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_1143 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1143) 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_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _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_1083 & (io_in_d_valid & _T_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _T_2 & ~_T_1087) 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_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _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_1083 & (io_in_d_valid & _T_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _T_2 & ~_T_1083) 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_1143 & (io_in_d_valid & _T_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _T_2 & ~_T_1143) 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_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _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_1083 & (io_in_d_valid & _T_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _T_2 & ~_T_1087) 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_1218 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1218) 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_1222 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1222) 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_1226 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1226) 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_1230 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1230) 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_1234 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1234) 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_1242 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1242) 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_1246 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1246) 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_1250 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1250) 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_1254 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1254) 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_1258 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1258) 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_1262 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1262) 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_1275 & (_T_1271 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1271 & ~reset & ~_T_1275) 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_1294 & (_T_1282 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & _T_2 & ~_T_1294) 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_1300 & (_T_1282 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & same_cycle_resp & _T_2 & ~_T_1300) 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_1304 & (_T_1282 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & same_cycle_resp & _T_2 & ~_T_1304) 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_1312 & (_T_1282 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & ~same_cycle_resp & _T_2 & ~_T_1312) 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_1316 & (_T_1282 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & ~same_cycle_resp & _T_2 & ~_T_1316) 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_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_1335 & _T_2) begin
+          $fatal; // @[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_1335) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (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_1344 & ~reset) begin
+          $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_1344) 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_1378[0] & (_T_1370 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1370 & _T_2 & ~_T_1378[0]) 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_1388 & (_T_1370 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1370 & _T_2 & ~_T_1388) 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_1413 & ~reset) begin
+          $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_1413) 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
+  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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[15:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[1:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[15:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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(
+  input         clock,
+  input         reset,
+  output        auto_in_1_a_ready,
+  input         auto_in_1_a_valid,
+  input  [2:0]  auto_in_1_a_bits_opcode,
+  input  [2:0]  auto_in_1_a_bits_param,
+  input  [3:0]  auto_in_1_a_bits_size,
+  input         auto_in_1_a_bits_source,
+  input  [31:0] auto_in_1_a_bits_address,
+  input  [7:0]  auto_in_1_a_bits_mask,
+  input  [63:0] auto_in_1_a_bits_data,
+  input         auto_in_1_a_bits_corrupt,
+  input         auto_in_1_d_ready,
+  output        auto_in_1_d_valid,
+  output [2:0]  auto_in_1_d_bits_opcode,
+  output [1:0]  auto_in_1_d_bits_param,
+  output [3:0]  auto_in_1_d_bits_size,
+  output        auto_in_1_d_bits_source,
+  output        auto_in_1_d_bits_sink,
+  output        auto_in_1_d_bits_denied,
+  output [63: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  [31:0] auto_in_0_a_bits_address,
+  input  [7:0]  auto_in_0_a_bits_mask,
+  input  [63:0] auto_in_0_a_bits_data,
+  input         auto_in_0_a_bits_corrupt,
+  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_sink,
+  output        auto_in_0_d_bits_denied,
+  output [63:0] auto_in_0_d_bits_data,
+  output        auto_in_0_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 [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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;
+`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 [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  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_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 [3:0] monitor_1_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_1_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  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 [1:0] _GEN_1 = {{1'd0}, auto_in_0_a_bits_source}; // @[Xbar.scala 237:55]
+  wire [1:0] in_0_a_bits_source = _GEN_1 | 2'h2; // @[Xbar.scala 237:55]
+  wire  requestDOI_0_0 = auto_out_d_bits_source == 2'h2; // @[Parameters.scala 46:9]
+  wire  requestDOI_0_1 = ~auto_out_d_bits_source[1]; // @[Parameters.scala 54:32]
+  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 [8:0] beatsAI_decode = _beatsAI_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  beatsAI_opdata = ~auto_in_0_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [8:0] beatsAI_0 = beatsAI_opdata ? beatsAI_decode : 9'h0; // @[Edges.scala 220:14]
+  wire [26:0] _beatsAI_decode_T_5 = 27'hfff << auto_in_1_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] _beatsAI_decode_T_7 = ~_beatsAI_decode_T_5[11:0]; // @[package.scala 234:46]
+  wire [8:0] beatsAI_decode_1 = _beatsAI_decode_T_7[11:3]; // @[Edges.scala 219:59]
+  wire  beatsAI_opdata_1 = ~auto_in_1_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [8:0] beatsAI_1 = beatsAI_opdata_1 ? beatsAI_decode_1 : 9'h0; // @[Edges.scala 220:14]
+  reg [8:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 9'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_2 = {{1'd0}, readys_filter[3:1]}; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_1 = readys_filter | _GEN_2; // @[package.scala 253:43]
+  wire [3:0] _readys_unready_T_4 = {readys_mask, 2'h0}; // @[Arbiter.scala 25:66]
+  wire [3:0] _GEN_3 = {{1'd0}, _readys_unready_T_1[3:1]}; // @[Arbiter.scala 25:58]
+  wire [3:0] readys_unready = _GEN_3 | _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_10 = auto_in_0_a_valid | auto_in_1_a_valid; // @[Arbiter.scala 107:36]
+  wire  _T_11 = ~(auto_in_0_a_valid | auto_in_1_a_valid); // @[Arbiter.scala 107:15]
+  wire [8:0] maskedBeats_0 = earlyWinner_0 ? beatsAI_0 : 9'h0; // @[Arbiter.scala 111:73]
+  wire [8:0] maskedBeats_1 = earlyWinner_1 ? beatsAI_1 : 9'h0; // @[Arbiter.scala 111:73]
+  wire [8:0] initBeats = maskedBeats_0 | maskedBeats_1; // @[Arbiter.scala 112:44]
+  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_10 : _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 [8:0] _GEN_4 = {{8'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [8: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 [63:0] _T_27 = muxStateEarly_0 ? auto_in_0_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_28 = muxStateEarly_1 ? auto_in_1_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_30 = muxStateEarly_0 ? auto_in_0_a_bits_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_31 = muxStateEarly_1 ? auto_in_1_a_bits_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_33 = muxStateEarly_0 ? auto_in_0_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_34 = muxStateEarly_1 ? auto_in_1_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_36 = muxStateEarly_0 ? in_0_a_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] in_1_a_bits_source = {{1'd0}, auto_in_1_a_bits_source}; // @[Xbar.scala 231:18 237:29]
+  wire [1:0] _T_37 = muxStateEarly_1 ? in_1_a_bits_source : 2'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_39 = muxStateEarly_0 ? auto_in_0_a_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_40 = muxStateEarly_1 ? auto_in_1_a_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_42 = muxStateEarly_0 ? auto_in_0_a_bits_param : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_43 = muxStateEarly_1 ? auto_in_1_a_bits_param : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_45 = muxStateEarly_0 ? auto_in_0_a_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_46 = muxStateEarly_1 ? auto_in_1_a_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_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)
+  );
+  TLMonitor_1 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_param(monitor_1_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_1_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_1_io_in_d_bits_source),
+    .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_param = auto_out_d_bits_param; // @[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_source = auto_out_d_bits_source[0]; // @[Xbar.scala 228:69]
+  assign auto_in_1_d_bits_sink = auto_out_d_bits_sink; // @[Xbar.scala 323:53]
+  assign auto_in_1_d_bits_denied = auto_out_d_bits_denied; // @[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_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_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_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = idle ? _T_10 : _out_0_a_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = _T_45 | _T_46; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_param = _T_42 | _T_43; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_size = _T_39 | _T_40; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = _T_36 | _T_37; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_address = _T_33 | _T_34; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_30 | _T_31; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = _T_27 | _T_28; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_corrupt = muxStateEarly_0 & auto_in_0_a_bits_corrupt | muxStateEarly_1 &
+    auto_in_1_a_bits_corrupt; // @[Mux.scala 27:73]
+  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 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_a_bits_corrupt = auto_in_0_a_bits_corrupt; // @[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_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_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_opcode = auto_in_1_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_param = auto_in_1_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_size = auto_in_1_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_source = auto_in_1_a_bits_source; // @[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_a_bits_mask = auto_in_1_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_corrupt = auto_in_1_a_bits_corrupt; // @[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_source = auto_out_d_bits_source[0]; // @[Xbar.scala 228:69]
+  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 <= 9'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_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_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[8: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_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  [3:0]  io_in_a_bits_size,
+  input         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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         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;
+`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 [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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_5 = ~_source_ok_T; // @[Monitor.scala 63:7]
+  wire [32: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  _T_17 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_20 = _T_17 & _source_ok_T; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_33 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_36 = $signed(_T_34) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_38 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_41 = $signed(_T_39) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_73 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_76 = $signed(_T_74) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_191 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_195 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_196 = _T_195 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_200 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_204 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_384 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_416 = _T_17 & _T_32; // @[Parameters.scala 670:56]
+  wire  _T_418 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_485 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_486 = _T_418 & _T_485; // @[Parameters.scala 670:56]
+  wire  _T_488 = _T_416 | _T_486; // @[Parameters.scala 672:30]
+  wire  _T_498 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_502 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_510 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_577 = _T_27 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_578 = _T_418 & _T_577; // @[Parameters.scala 670:56]
+  wire  _T_599 = _T_416 | _T_578; // @[Parameters.scala 672:30]
+  wire  _T_601 = _T_20 & _T_599; // @[Monitor.scala 115:71]
+  wire  _T_619 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_724 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_725 = io_in_a_bits_mask & _T_724; // @[Monitor.scala 127:31]
+  wire  _T_726 = _T_725 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_730 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_738 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_793 = _T_27 | _T_32 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_794 = _T_738 & _T_793; // @[Parameters.scala 670:56]
+  wire  _T_816 = _T_20 & _T_794; // @[Monitor.scala 131:74]
+  wire  _T_826 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_834 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_930 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_938 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1024 = _T_20 & _T_416; // @[Monitor.scala 147:68]
+  wire  _T_1034 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1046 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1193 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1197 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1201 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1205 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1209 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'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_72 = {{12'd0}, inflight_opcodes}; // @[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 [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_74 = {{8'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_74 & _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_1243 = 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] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1246 = _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_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[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  _T_1250 = ~(inflight >> io_in_a_bits_source); // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[Monitor.scala 671:71]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1050 ? 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_1256 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1256 ? _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_1256 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  same_cycle_resp = _T_1243 & _source_ok_T; // @[Monitor.scala 681:88]
+  wire  _T_1269 = inflight | 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_1274 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1275 = io_in_d_bits_opcode == _GEN_32 | _T_1274; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_77 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1291 = _GEN_77 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _source_ok_T & _T_1256; // @[Monitor.scala 694:116]
+  wire  _T_1303 = ~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_1310 = 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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_80 = {{8'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_80 & _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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1050 ? _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_1363 = _GEN_77 == 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 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 <= 9'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 <= 9'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 (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 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 (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 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_5 & (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 & _T_5) 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_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 & ~_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_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 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_191 & (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 & ~_T_191) 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_196 & (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 & ~_T_196) 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_200 & (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 & ~_T_200) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (_T_5 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & _T_5) 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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_191 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_191) 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_384 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_384) 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_196 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_196) 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_200 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_200) 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_20 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_20) 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_488 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_488) 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 (_T_5 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & _T_5) 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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_498 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_502) 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_200 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_200) 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_601 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_601) 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 (_T_5 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & _T_5) 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_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~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_498 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_502) 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_601 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_601) 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 (_T_5 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & _T_5) 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_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~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_498 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_498) 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_726 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_726) 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_816 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_816) 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 (_T_5 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & _T_5) 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_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~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_826 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_826) 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_502 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_502) 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_816 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_816) 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 (_T_5 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & _T_5) 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_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~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_930 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_930) 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_502 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_502) 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_1024 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1024) 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 (_T_5 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & _T_5) 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_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~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_1034 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1034) 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_502 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_502) 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_200 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_200) 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_1046 & (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_1046) 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 (~_T_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) 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_1058 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) 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_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) 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 (io_in_d_valid & _T_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) 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_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) 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 (io_in_d_valid & _T_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) 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_1118 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) 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 (~_T_1058 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) 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 (~_T_1058 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) 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_1118 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) 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 (~_T_1058 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) 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_1193 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1193) 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_1197 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1197) 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_1201 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1201) 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_1205 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1205) 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_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) 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_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) 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_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) 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_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) 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_1233 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) 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_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) 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_1250 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) 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_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) 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_1275 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1275) 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_1279 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1279) 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_1287 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1287) 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_1291 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1291) 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_1303 & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~_T_1303) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (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_1319 & ~reset) begin
+          $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_1319) 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_1345 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2) 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_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) 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
+  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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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}};
+  sink = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  denied = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_13[3:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_sizes = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_15[8:0];
+  _RAND_16 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  watchdog = _RAND_17[31:0];
+  _RAND_18 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_18[7:0];
+  _RAND_19 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_19[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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  [3:0]  io_in_a_bits_size,
+  input         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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         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_1 = ~io_in_a_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok = io_in_a_bits_source | _source_ok_T_1; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32: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 [32:0] _T_37 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_38 = $signed(_T_37) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_39 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_40 = {1'b0,$signed(_T_39)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_42 = $signed(_T_40) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_43 = $signed(_T_42) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_44 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_45 = {1'b0,$signed(_T_44)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_47 = $signed(_T_45) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_48 = $signed(_T_47) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_49 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_50 = {1'b0,$signed(_T_49)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_52 = $signed(_T_50) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_53 = $signed(_T_52) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_54 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_55 = {1'b0,$signed(_T_54)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_57 = $signed(_T_55) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_58 = $signed(_T_57) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_59 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_60 = {1'b0,$signed(_T_59)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_62 = $signed(_T_60) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_63 = $signed(_T_62) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_64 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_65 = {1'b0,$signed(_T_64)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_67 = $signed(_T_65) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_68 = $signed(_T_67) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_69 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_70 = {1'b0,$signed(_T_69)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_72 = $signed(_T_70) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_73 = $signed(_T_72) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_74 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_75 = {1'b0,$signed(_T_74)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_77 = $signed(_T_75) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_78 = $signed(_T_77) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_79 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_80 = {1'b0,$signed(_T_79)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_82 = $signed(_T_80) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_83 = $signed(_T_82) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_84 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_85 = {1'b0,$signed(_T_84)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_87 = $signed(_T_85) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_88 = $signed(_T_87) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_89 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_90 = {1'b0,$signed(_T_89)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_92 = $signed(_T_90) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_93 = $signed(_T_92) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_202 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_206 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_207 = _T_206 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_211 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_215 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_397 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_410 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_431 = _T_26 & _T_43; // @[Parameters.scala 670:56]
+  wire  _T_433 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_500 = _T_38 | _T_48 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_501 = _T_433 & _T_500; // @[Parameters.scala 670:56]
+  wire  _T_503 = _T_431 | _T_501; // @[Parameters.scala 672:30]
+  wire  _T_513 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_517 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_525 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_594 = _T_38 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_595 = _T_433 & _T_594; // @[Parameters.scala 670:56]
+  wire  _T_616 = _T_431 | _T_595; // @[Parameters.scala 672:30]
+  wire  _T_618 = _T_31 & _T_616; // @[Monitor.scala 115:71]
+  wire  _T_636 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_743 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_744 = io_in_a_bits_mask & _T_743; // @[Monitor.scala 127:31]
+  wire  _T_745 = _T_744 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_749 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_759 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_814 = _T_38 | _T_43 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_815 = _T_759 & _T_814; // @[Parameters.scala 670:56]
+  wire  _T_837 = _T_31 & _T_815; // @[Monitor.scala 131:74]
+  wire  _T_847 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_855 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_953 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_961 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1049 = _T_31 & _T_431; // @[Monitor.scala 147:68]
+  wire  _T_1059 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1071 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_3 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = io_in_d_bits_source | _source_ok_T_3; // @[Parameters.scala 1125:46]
+  wire  _T_1075 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1079 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1083 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1087 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1091 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1095 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1106 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1110 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1123 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1143 = _T_1091 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1152 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1169 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1187 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1217 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1218 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1222 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1226 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1230 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1234 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1241 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1242 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1246 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1250 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1254 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1258 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1262 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[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 [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_73 = {{8'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 = {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_1268 = 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_1271 = _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_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[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_1273 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1275 = ~_T_1273[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_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1279 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1281 = ~_T_1075; // @[Monitor.scala 671:74]
+  wire  _T_1282 = io_in_d_valid & d_first_1 & ~_T_1075; // @[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_1075 ? _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_1281 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1281 ? _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_1281 ? _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_1268 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [1:0] _T_1292 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1294 = _T_1292[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_1299 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1300 = io_in_d_bits_opcode == _GEN_32 | _T_1299; // @[Monitor.scala 685:77]
+  wire  _T_1304 = 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_1311 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1312 = io_in_d_bits_opcode == _GEN_48 | _T_1311; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_78 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1316 = _GEN_78 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1326 = _T_1279 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1281; // @[Monitor.scala 694:116]
+  wire  _T_1328 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_1335 = 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_19[7:0];
+  wire [7:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [7:0] d_opcodes_clr = _GEN_23[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_20[15:0];
+  wire [15:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [15:0] d_sizes_clr = _GEN_24[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_1344 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'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_1370 = io_in_d_valid & d_first_2 & _T_1075; // @[Monitor.scala 779:71]
+  wire [1:0] d_clr_1 = _d_first_T & d_first_2 & _T_1075 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 783:90 784:21]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1075 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire [1:0] _T_1378 = 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_1388 = _GEN_78 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [1:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [1:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [15:0] d_sizes_clr_1 = _GEN_69[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_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1413 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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]
+      d_first_counter_2 <= 9'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 <= 9'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_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) 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 (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) 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_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 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_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 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_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 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_202 & (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_202) 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_207 & (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_207) 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_211 & (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_211) 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 (io_in_a_valid & _T_215 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset) 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 (io_in_a_valid & _T_215 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset) 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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_202 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_202) 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_397 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_397) 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_207 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_207) 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_211 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_211) 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_31 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_31) 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_503 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_503) 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_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~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_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~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_513 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_513) 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_517 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_517) 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_211 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_211) 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_618 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_618) 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_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~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_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~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_513 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_513) 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_517 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_517) 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_618 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_618) 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_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~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_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~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_513 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_513) 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_745 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_745) 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_837 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_837) 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_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~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_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~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_847 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_847) 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_517 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_517) 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_837 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_837) 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_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~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_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~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_953 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_953) 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_517 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_517) 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_1049 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_1049) 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_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~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_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~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_1059 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_1059) 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_517 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_517) 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_211 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_211) 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_1071 & (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_1071) 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_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _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_1079 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1079) 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_1083 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1087) 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_1091 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1091) 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_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _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 (io_in_d_valid & _T_1095 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1079 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1079) 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_1106 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1106) 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_1110 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1110) 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_1087 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1087) 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_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _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 (io_in_d_valid & _T_1123 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1079 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1079) 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_1106 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1106) 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_1110 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1110) 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_1143 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1143) 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_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _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_1083 & (io_in_d_valid & _T_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _T_2 & ~_T_1087) 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_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _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_1083 & (io_in_d_valid & _T_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _T_2 & ~_T_1083) 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_1143 & (io_in_d_valid & _T_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _T_2 & ~_T_1143) 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_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _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_1083 & (io_in_d_valid & _T_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _T_2 & ~_T_1087) 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_1218 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1218) 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_1222 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1222) 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_1226 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1226) 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_1230 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1230) 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_1234 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1234) 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_1242 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1242) 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_1246 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1246) 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_1250 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1250) 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_1254 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1254) 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_1258 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1258) 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_1262 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1262) 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_1275 & (_T_1271 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1271 & ~reset & ~_T_1275) 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_1294 & (_T_1282 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & _T_2 & ~_T_1294) 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_1300 & (_T_1282 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & same_cycle_resp & _T_2 & ~_T_1300) 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_1304 & (_T_1282 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & same_cycle_resp & _T_2 & ~_T_1304) 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_1312 & (_T_1282 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & ~same_cycle_resp & _T_2 & ~_T_1312) 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_1316 & (_T_1282 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & ~same_cycle_resp & _T_2 & ~_T_1316) 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_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_1335 & _T_2) begin
+          $fatal; // @[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_1335) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (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_1344 & ~reset) begin
+          $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_1344) 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_1378[0] & (_T_1370 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1370 & _T_2 & ~_T_1378[0]) 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_1388 & (_T_1370 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1370 & _T_2 & ~_T_1388) 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_1413 & ~reset) begin
+          $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_1413) 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
+  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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[15:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[1:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[15:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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(
+  input         clock,
+  input         reset,
+  output        auto_in_1_a_ready,
+  input         auto_in_1_a_valid,
+  input  [2:0]  auto_in_1_a_bits_opcode,
+  input  [2:0]  auto_in_1_a_bits_param,
+  input  [3:0]  auto_in_1_a_bits_size,
+  input         auto_in_1_a_bits_source,
+  input  [31:0] auto_in_1_a_bits_address,
+  input  [7:0]  auto_in_1_a_bits_mask,
+  input  [63:0] auto_in_1_a_bits_data,
+  input         auto_in_1_a_bits_corrupt,
+  input         auto_in_1_d_ready,
+  output        auto_in_1_d_valid,
+  output [2:0]  auto_in_1_d_bits_opcode,
+  output [1:0]  auto_in_1_d_bits_param,
+  output [3:0]  auto_in_1_d_bits_size,
+  output        auto_in_1_d_bits_source,
+  output        auto_in_1_d_bits_sink,
+  output        auto_in_1_d_bits_denied,
+  output [63: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  [31:0] auto_in_0_a_bits_address,
+  input  [7:0]  auto_in_0_a_bits_mask,
+  input  [63:0] auto_in_0_a_bits_data,
+  input         auto_in_0_a_bits_corrupt,
+  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_sink,
+  output        auto_in_0_d_bits_denied,
+  output [63:0] auto_in_0_d_bits_data,
+  output        auto_in_0_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 [2:0]  auto_out_1_a_bits_param,
+  output [3:0]  auto_out_1_a_bits_size,
+  output        auto_out_1_a_bits_source,
+  output [31:0] auto_out_1_a_bits_address,
+  output [7:0]  auto_out_1_a_bits_mask,
+  output [63: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  [3: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  [63: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        auto_out_0_a_bits_source,
+  output [31:0] auto_out_0_a_bits_address,
+  output [7:0]  auto_out_0_a_bits_mask,
+  output [63: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         auto_out_0_d_bits_sink,
+  input         auto_out_0_d_bits_denied,
+  input  [63:0] auto_out_0_d_bits_data,
+  input         auto_out_0_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  monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  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_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 [3:0] monitor_1_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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_param; // @[Nodes.scala 24:25]
+  wire [3:0] monitor_1_io_in_d_bits_size; // @[Nodes.scala 24:25]
+  wire  monitor_1_io_in_d_bits_source; // @[Nodes.scala 24:25]
+  wire  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]
+  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_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)
+  );
+  TLMonitor_3 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_param(monitor_1_io_in_d_bits_param),
+    .io_in_d_bits_size(monitor_1_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_1_io_in_d_bits_source),
+    .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_1_a_ready; // @[FIFOFixer.scala 88:33]
+  assign auto_in_1_d_valid = auto_out_1_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_opcode = auto_out_1_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_param = auto_out_1_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_size = auto_out_1_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_source = auto_out_1_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_sink = auto_out_1_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_denied = auto_out_1_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_data = auto_out_1_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_1_d_bits_corrupt = auto_out_1_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_a_ready = auto_out_0_a_ready; // @[FIFOFixer.scala 88:33]
+  assign auto_in_0_d_valid = auto_out_0_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_opcode = auto_out_0_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_param = auto_out_0_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_size = auto_out_0_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_sink = auto_out_0_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_denied = auto_out_0_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_data = auto_out_0_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_in_0_d_bits_corrupt = auto_out_0_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_1_a_valid = auto_in_1_a_valid; // @[FIFOFixer.scala 87:33]
+  assign auto_out_1_a_bits_opcode = auto_in_1_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_param = auto_in_1_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_size = auto_in_1_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_source = auto_in_1_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_address = auto_in_1_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_mask = auto_in_1_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_data = auto_in_1_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_a_bits_corrupt = auto_in_1_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_d_ready = auto_in_1_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_valid = auto_in_0_a_valid; // @[FIFOFixer.scala 87:33]
+  assign auto_out_0_a_bits_opcode = auto_in_0_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_param = auto_in_0_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_size = auto_in_0_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_source = auto_in_0_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_address = auto_in_0_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_mask = auto_in_0_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_data = auto_in_0_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_a_bits_corrupt = auto_in_0_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_d_ready = auto_in_0_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_0_a_ready; // @[FIFOFixer.scala 88:33]
+  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_a_bits_corrupt = auto_in_0_a_bits_corrupt; // @[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_0_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_opcode = auto_out_0_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_param = auto_out_0_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_size = auto_out_0_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_sink = auto_out_0_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_denied = auto_out_0_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_io_in_d_bits_corrupt = auto_out_0_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_clock = clock;
+  assign monitor_1_reset = reset;
+  assign monitor_1_io_in_a_ready = auto_out_1_a_ready; // @[FIFOFixer.scala 88:33]
+  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_opcode = auto_in_1_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_param = auto_in_1_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_size = auto_in_1_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_source = auto_in_1_a_bits_source; // @[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_a_bits_mask = auto_in_1_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_1_io_in_a_bits_corrupt = auto_in_1_a_bits_corrupt; // @[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_1_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_opcode = auto_out_1_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_param = auto_out_1_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_size = auto_out_1_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_source = auto_out_1_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_sink = auto_out_1_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_denied = auto_out_1_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign monitor_1_io_in_d_bits_corrupt = auto_out_1_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+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  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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 [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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  [31:0] auto_widget_in_a_bits_address,
+  input  [7:0]  auto_widget_in_a_bits_mask,
+  input  [63: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 [63: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 [31:0] auto_bus_xing_out_a_bits_address,
+  output [7:0]  auto_bus_xing_out_a_bits_mask,
+  output [63: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  [63: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 [31:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [63: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 [31:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [63: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_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  [3:0]  auto_in_a_bits_size,
+  input         auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_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_1(
+  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 [3:0]  auto_widget_out_a_bits_size,
+  output        auto_widget_out_a_bits_source,
+  output [31:0] auto_widget_out_a_bits_address,
+  output [7:0]  auto_widget_out_a_bits_mask,
+  output [63:0] auto_widget_out_a_bits_data,
+  output        auto_widget_out_a_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  [3:0]  auto_widget_out_d_bits_size,
+  input         auto_widget_out_d_bits_sink,
+  input         auto_widget_out_d_bits_denied,
+  input  [63:0] auto_widget_out_d_bits_data,
+  input         auto_widget_out_d_bits_corrupt,
+  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         auto_bus_xing_in_a_bits_source,
+  input  [31:0] auto_bus_xing_in_a_bits_address,
+  input  [7:0]  auto_bus_xing_in_a_bits_mask,
+  input  [63: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        auto_bus_xing_in_d_bits_sink,
+  output        auto_bus_xing_in_d_bits_denied,
+  output [63:0] auto_bus_xing_in_d_bits_data,
+  output        auto_bus_xing_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 [3:0] widget_auto_in_a_bits_size; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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  widget_auto_in_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_in_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [63: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  widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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  widget_auto_out_d_bits_sink; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_denied; // @[WidthWidget.scala 219:28]
+  wire [63:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  TLWidthWidget_1 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_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_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_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_d_ready = widget_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_bus_xing_in_a_ready = widget_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_valid = widget_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_opcode = widget_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_param = widget_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_size = widget_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_sink = widget_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_denied = widget_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_in_d_bits_data = widget_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_bus_xing_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_bus_xing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_opcode = auto_bus_xing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_param = auto_bus_xing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_size = auto_bus_xing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_source = auto_bus_xing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_address = auto_bus_xing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_mask = auto_bus_xing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_data = auto_bus_xing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_a_bits_corrupt = auto_bus_xing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_in_d_ready = auto_bus_xing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign widget_auto_out_a_ready = auto_widget_out_a_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_sink = auto_widget_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_denied = auto_widget_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_data = auto_widget_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign widget_auto_out_d_bits_corrupt = auto_widget_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+endmodule
+module TLInterconnectCoupler_2(
+  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         auto_tl_master_clock_xing_in_a_bits_source,
+  input  [31:0] auto_tl_master_clock_xing_in_a_bits_address,
+  input  [7:0]  auto_tl_master_clock_xing_in_a_bits_mask,
+  input  [63: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_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        auto_tl_master_clock_xing_in_d_bits_source,
+  output        auto_tl_master_clock_xing_in_d_bits_sink,
+  output        auto_tl_master_clock_xing_in_d_bits_denied,
+  output [63:0] auto_tl_master_clock_xing_in_d_bits_data,
+  output        auto_tl_master_clock_xing_in_d_bits_corrupt,
+  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        auto_tl_out_a_bits_source,
+  output [31:0] auto_tl_out_a_bits_address,
+  output [7:0]  auto_tl_out_a_bits_mask,
+  output [63:0] auto_tl_out_a_bits_data,
+  output        auto_tl_out_a_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         auto_tl_out_d_bits_source,
+  input         auto_tl_out_d_bits_sink,
+  input         auto_tl_out_d_bits_denied,
+  input  [63:0] auto_tl_out_d_bits_data,
+  input         auto_tl_out_d_bits_corrupt
+);
+  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_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_d_ready = auto_tl_master_clock_xing_in_d_ready; // @[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         auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source,
+  input  [31:0] auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address,
+  input  [7:0]  auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask,
+  input  [63: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_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        auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source,
+  output        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 [63: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,
+  output        auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_ready,
+  input         auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_valid,
+  input  [2:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_opcode,
+  input  [2:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_param,
+  input  [3:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_size,
+  input         auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_source,
+  input  [31:0] auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_address,
+  input  [7:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_mask,
+  input  [63:0] auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_data,
+  input         auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_corrupt,
+  input         auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_ready,
+  output        auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_valid,
+  output [2:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_opcode,
+  output [1:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_param,
+  output [3:0]  auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_size,
+  output        auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_sink,
+  output        auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_denied,
+  output [63:0] auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_data,
+  output        auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_corrupt,
+  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 [31:0] auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address,
+  output [7:0]  auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask,
+  output [63: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  [63: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_0_clock,
+  input         auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset
+);
+  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_member_subsystem_sbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_sbus_clock_groups_auto_out_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_1_a_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_a_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_1_a_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_1_a_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_1_a_bits_size; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_a_bits_source; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_in_1_a_bits_address; // @[SystemBus.scala 40:43]
+  wire [7:0] system_bus_xbar_auto_in_1_a_bits_mask; // @[SystemBus.scala 40:43]
+  wire [63:0] system_bus_xbar_auto_in_1_a_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_a_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_d_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_d_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_1_d_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_1_d_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_1_d_bits_size; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_d_bits_source; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_d_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_d_bits_denied; // @[SystemBus.scala 40:43]
+  wire [63:0] system_bus_xbar_auto_in_1_d_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_1_d_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_a_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_a_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_0_a_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_0_a_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_0_a_bits_size; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_a_bits_source; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_in_0_a_bits_address; // @[SystemBus.scala 40:43]
+  wire [7:0] system_bus_xbar_auto_in_0_a_bits_mask; // @[SystemBus.scala 40:43]
+  wire [63:0] system_bus_xbar_auto_in_0_a_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_a_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_d_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_d_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_in_0_d_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_in_0_d_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_in_0_d_bits_size; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_d_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_d_bits_denied; // @[SystemBus.scala 40:43]
+  wire [63:0] system_bus_xbar_auto_in_0_d_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_in_0_d_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_a_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_a_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_a_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_a_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_out_a_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_a_bits_source; // @[SystemBus.scala 40:43]
+  wire [31:0] system_bus_xbar_auto_out_a_bits_address; // @[SystemBus.scala 40:43]
+  wire [7:0] system_bus_xbar_auto_out_a_bits_mask; // @[SystemBus.scala 40:43]
+  wire [63:0] system_bus_xbar_auto_out_a_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_a_bits_corrupt; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_d_ready; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_d_valid; // @[SystemBus.scala 40:43]
+  wire [2:0] system_bus_xbar_auto_out_d_bits_opcode; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_d_bits_param; // @[SystemBus.scala 40:43]
+  wire [3:0] system_bus_xbar_auto_out_d_bits_size; // @[SystemBus.scala 40:43]
+  wire [1:0] system_bus_xbar_auto_out_d_bits_source; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_d_bits_sink; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_d_bits_denied; // @[SystemBus.scala 40:43]
+  wire [63:0] system_bus_xbar_auto_out_d_bits_data; // @[SystemBus.scala 40:43]
+  wire  system_bus_xbar_auto_out_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_1_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_1_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_1_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_1_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_1_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [7:0] fixer_auto_in_1_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_in_1_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_a_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_1_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_1_d_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_1_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_d_bits_source; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_d_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_d_bits_denied; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_in_1_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_1_d_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_0_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_0_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_0_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_in_0_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [7:0] fixer_auto_in_0_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_in_0_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_a_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_in_0_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_in_0_d_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_in_0_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_d_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_d_bits_denied; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_in_0_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_in_0_d_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_1_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_1_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_1_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_1_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [7:0] fixer_auto_out_1_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_out_1_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_a_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_1_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_1_d_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_1_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_d_bits_source; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_d_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_d_bits_denied; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_out_1_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_1_d_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_a_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_a_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_0_a_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_0_a_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_0_a_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_a_bits_source; // @[FIFOFixer.scala 144:27]
+  wire [31:0] fixer_auto_out_0_a_bits_address; // @[FIFOFixer.scala 144:27]
+  wire [7:0] fixer_auto_out_0_a_bits_mask; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_out_0_a_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_a_bits_corrupt; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_d_ready; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_d_valid; // @[FIFOFixer.scala 144:27]
+  wire [2:0] fixer_auto_out_0_d_bits_opcode; // @[FIFOFixer.scala 144:27]
+  wire [1:0] fixer_auto_out_0_d_bits_param; // @[FIFOFixer.scala 144:27]
+  wire [3:0] fixer_auto_out_0_d_bits_size; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_d_bits_sink; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_d_bits_denied; // @[FIFOFixer.scala 144:27]
+  wire [63:0] fixer_auto_out_0_d_bits_data; // @[FIFOFixer.scala 144:27]
+  wire  fixer_auto_out_0_d_bits_corrupt; // @[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 [31:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [31:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_bus_named_subsystem_cbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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_from_bus_named_subsystem_fbus_auto_widget_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_corrupt; // @[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  coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_from_tile_auto_tl_master_clock_xing_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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_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  coupler_from_tile_auto_tl_master_clock_xing_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  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 [63: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_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  coupler_from_tile_auto_tl_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_tile_auto_tl_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_from_tile_auto_tl_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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_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  coupler_from_tile_auto_tl_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  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 [63: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]
+  ClockGroupAggregator subsystem_sbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .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_member_subsystem_sbus_0_clock(subsystem_sbus_clock_groups_auto_out_member_subsystem_sbus_0_clock),
+    .auto_out_member_subsystem_sbus_0_reset(subsystem_sbus_clock_groups_auto_out_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_1_a_ready(system_bus_xbar_auto_in_1_a_ready),
+    .auto_in_1_a_valid(system_bus_xbar_auto_in_1_a_valid),
+    .auto_in_1_a_bits_opcode(system_bus_xbar_auto_in_1_a_bits_opcode),
+    .auto_in_1_a_bits_param(system_bus_xbar_auto_in_1_a_bits_param),
+    .auto_in_1_a_bits_size(system_bus_xbar_auto_in_1_a_bits_size),
+    .auto_in_1_a_bits_source(system_bus_xbar_auto_in_1_a_bits_source),
+    .auto_in_1_a_bits_address(system_bus_xbar_auto_in_1_a_bits_address),
+    .auto_in_1_a_bits_mask(system_bus_xbar_auto_in_1_a_bits_mask),
+    .auto_in_1_a_bits_data(system_bus_xbar_auto_in_1_a_bits_data),
+    .auto_in_1_a_bits_corrupt(system_bus_xbar_auto_in_1_a_bits_corrupt),
+    .auto_in_1_d_ready(system_bus_xbar_auto_in_1_d_ready),
+    .auto_in_1_d_valid(system_bus_xbar_auto_in_1_d_valid),
+    .auto_in_1_d_bits_opcode(system_bus_xbar_auto_in_1_d_bits_opcode),
+    .auto_in_1_d_bits_param(system_bus_xbar_auto_in_1_d_bits_param),
+    .auto_in_1_d_bits_size(system_bus_xbar_auto_in_1_d_bits_size),
+    .auto_in_1_d_bits_source(system_bus_xbar_auto_in_1_d_bits_source),
+    .auto_in_1_d_bits_sink(system_bus_xbar_auto_in_1_d_bits_sink),
+    .auto_in_1_d_bits_denied(system_bus_xbar_auto_in_1_d_bits_denied),
+    .auto_in_1_d_bits_data(system_bus_xbar_auto_in_1_d_bits_data),
+    .auto_in_1_d_bits_corrupt(system_bus_xbar_auto_in_1_d_bits_corrupt),
+    .auto_in_0_a_ready(system_bus_xbar_auto_in_0_a_ready),
+    .auto_in_0_a_valid(system_bus_xbar_auto_in_0_a_valid),
+    .auto_in_0_a_bits_opcode(system_bus_xbar_auto_in_0_a_bits_opcode),
+    .auto_in_0_a_bits_param(system_bus_xbar_auto_in_0_a_bits_param),
+    .auto_in_0_a_bits_size(system_bus_xbar_auto_in_0_a_bits_size),
+    .auto_in_0_a_bits_source(system_bus_xbar_auto_in_0_a_bits_source),
+    .auto_in_0_a_bits_address(system_bus_xbar_auto_in_0_a_bits_address),
+    .auto_in_0_a_bits_mask(system_bus_xbar_auto_in_0_a_bits_mask),
+    .auto_in_0_a_bits_data(system_bus_xbar_auto_in_0_a_bits_data),
+    .auto_in_0_a_bits_corrupt(system_bus_xbar_auto_in_0_a_bits_corrupt),
+    .auto_in_0_d_ready(system_bus_xbar_auto_in_0_d_ready),
+    .auto_in_0_d_valid(system_bus_xbar_auto_in_0_d_valid),
+    .auto_in_0_d_bits_opcode(system_bus_xbar_auto_in_0_d_bits_opcode),
+    .auto_in_0_d_bits_param(system_bus_xbar_auto_in_0_d_bits_param),
+    .auto_in_0_d_bits_size(system_bus_xbar_auto_in_0_d_bits_size),
+    .auto_in_0_d_bits_sink(system_bus_xbar_auto_in_0_d_bits_sink),
+    .auto_in_0_d_bits_denied(system_bus_xbar_auto_in_0_d_bits_denied),
+    .auto_in_0_d_bits_data(system_bus_xbar_auto_in_0_d_bits_data),
+    .auto_in_0_d_bits_corrupt(system_bus_xbar_auto_in_0_d_bits_corrupt),
+    .auto_out_a_ready(system_bus_xbar_auto_out_a_ready),
+    .auto_out_a_valid(system_bus_xbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(system_bus_xbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(system_bus_xbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(system_bus_xbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(system_bus_xbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(system_bus_xbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(system_bus_xbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(system_bus_xbar_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(system_bus_xbar_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(system_bus_xbar_auto_out_d_ready),
+    .auto_out_d_valid(system_bus_xbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(system_bus_xbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(system_bus_xbar_auto_out_d_bits_param),
+    .auto_out_d_bits_size(system_bus_xbar_auto_out_d_bits_size),
+    .auto_out_d_bits_source(system_bus_xbar_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(system_bus_xbar_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(system_bus_xbar_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(system_bus_xbar_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(system_bus_xbar_auto_out_d_bits_corrupt)
+  );
+  TLFIFOFixer fixer ( // @[FIFOFixer.scala 144:27]
+    .clock(fixer_clock),
+    .reset(fixer_reset),
+    .auto_in_1_a_ready(fixer_auto_in_1_a_ready),
+    .auto_in_1_a_valid(fixer_auto_in_1_a_valid),
+    .auto_in_1_a_bits_opcode(fixer_auto_in_1_a_bits_opcode),
+    .auto_in_1_a_bits_param(fixer_auto_in_1_a_bits_param),
+    .auto_in_1_a_bits_size(fixer_auto_in_1_a_bits_size),
+    .auto_in_1_a_bits_source(fixer_auto_in_1_a_bits_source),
+    .auto_in_1_a_bits_address(fixer_auto_in_1_a_bits_address),
+    .auto_in_1_a_bits_mask(fixer_auto_in_1_a_bits_mask),
+    .auto_in_1_a_bits_data(fixer_auto_in_1_a_bits_data),
+    .auto_in_1_a_bits_corrupt(fixer_auto_in_1_a_bits_corrupt),
+    .auto_in_1_d_ready(fixer_auto_in_1_d_ready),
+    .auto_in_1_d_valid(fixer_auto_in_1_d_valid),
+    .auto_in_1_d_bits_opcode(fixer_auto_in_1_d_bits_opcode),
+    .auto_in_1_d_bits_param(fixer_auto_in_1_d_bits_param),
+    .auto_in_1_d_bits_size(fixer_auto_in_1_d_bits_size),
+    .auto_in_1_d_bits_source(fixer_auto_in_1_d_bits_source),
+    .auto_in_1_d_bits_sink(fixer_auto_in_1_d_bits_sink),
+    .auto_in_1_d_bits_denied(fixer_auto_in_1_d_bits_denied),
+    .auto_in_1_d_bits_data(fixer_auto_in_1_d_bits_data),
+    .auto_in_1_d_bits_corrupt(fixer_auto_in_1_d_bits_corrupt),
+    .auto_in_0_a_ready(fixer_auto_in_0_a_ready),
+    .auto_in_0_a_valid(fixer_auto_in_0_a_valid),
+    .auto_in_0_a_bits_opcode(fixer_auto_in_0_a_bits_opcode),
+    .auto_in_0_a_bits_param(fixer_auto_in_0_a_bits_param),
+    .auto_in_0_a_bits_size(fixer_auto_in_0_a_bits_size),
+    .auto_in_0_a_bits_source(fixer_auto_in_0_a_bits_source),
+    .auto_in_0_a_bits_address(fixer_auto_in_0_a_bits_address),
+    .auto_in_0_a_bits_mask(fixer_auto_in_0_a_bits_mask),
+    .auto_in_0_a_bits_data(fixer_auto_in_0_a_bits_data),
+    .auto_in_0_a_bits_corrupt(fixer_auto_in_0_a_bits_corrupt),
+    .auto_in_0_d_ready(fixer_auto_in_0_d_ready),
+    .auto_in_0_d_valid(fixer_auto_in_0_d_valid),
+    .auto_in_0_d_bits_opcode(fixer_auto_in_0_d_bits_opcode),
+    .auto_in_0_d_bits_param(fixer_auto_in_0_d_bits_param),
+    .auto_in_0_d_bits_size(fixer_auto_in_0_d_bits_size),
+    .auto_in_0_d_bits_sink(fixer_auto_in_0_d_bits_sink),
+    .auto_in_0_d_bits_denied(fixer_auto_in_0_d_bits_denied),
+    .auto_in_0_d_bits_data(fixer_auto_in_0_d_bits_data),
+    .auto_in_0_d_bits_corrupt(fixer_auto_in_0_d_bits_corrupt),
+    .auto_out_1_a_ready(fixer_auto_out_1_a_ready),
+    .auto_out_1_a_valid(fixer_auto_out_1_a_valid),
+    .auto_out_1_a_bits_opcode(fixer_auto_out_1_a_bits_opcode),
+    .auto_out_1_a_bits_param(fixer_auto_out_1_a_bits_param),
+    .auto_out_1_a_bits_size(fixer_auto_out_1_a_bits_size),
+    .auto_out_1_a_bits_source(fixer_auto_out_1_a_bits_source),
+    .auto_out_1_a_bits_address(fixer_auto_out_1_a_bits_address),
+    .auto_out_1_a_bits_mask(fixer_auto_out_1_a_bits_mask),
+    .auto_out_1_a_bits_data(fixer_auto_out_1_a_bits_data),
+    .auto_out_1_a_bits_corrupt(fixer_auto_out_1_a_bits_corrupt),
+    .auto_out_1_d_ready(fixer_auto_out_1_d_ready),
+    .auto_out_1_d_valid(fixer_auto_out_1_d_valid),
+    .auto_out_1_d_bits_opcode(fixer_auto_out_1_d_bits_opcode),
+    .auto_out_1_d_bits_param(fixer_auto_out_1_d_bits_param),
+    .auto_out_1_d_bits_size(fixer_auto_out_1_d_bits_size),
+    .auto_out_1_d_bits_source(fixer_auto_out_1_d_bits_source),
+    .auto_out_1_d_bits_sink(fixer_auto_out_1_d_bits_sink),
+    .auto_out_1_d_bits_denied(fixer_auto_out_1_d_bits_denied),
+    .auto_out_1_d_bits_data(fixer_auto_out_1_d_bits_data),
+    .auto_out_1_d_bits_corrupt(fixer_auto_out_1_d_bits_corrupt),
+    .auto_out_0_a_ready(fixer_auto_out_0_a_ready),
+    .auto_out_0_a_valid(fixer_auto_out_0_a_valid),
+    .auto_out_0_a_bits_opcode(fixer_auto_out_0_a_bits_opcode),
+    .auto_out_0_a_bits_param(fixer_auto_out_0_a_bits_param),
+    .auto_out_0_a_bits_size(fixer_auto_out_0_a_bits_size),
+    .auto_out_0_a_bits_source(fixer_auto_out_0_a_bits_source),
+    .auto_out_0_a_bits_address(fixer_auto_out_0_a_bits_address),
+    .auto_out_0_a_bits_mask(fixer_auto_out_0_a_bits_mask),
+    .auto_out_0_a_bits_data(fixer_auto_out_0_a_bits_data),
+    .auto_out_0_a_bits_corrupt(fixer_auto_out_0_a_bits_corrupt),
+    .auto_out_0_d_ready(fixer_auto_out_0_d_ready),
+    .auto_out_0_d_valid(fixer_auto_out_0_d_valid),
+    .auto_out_0_d_bits_opcode(fixer_auto_out_0_d_bits_opcode),
+    .auto_out_0_d_bits_param(fixer_auto_out_0_d_bits_param),
+    .auto_out_0_d_bits_size(fixer_auto_out_0_d_bits_size),
+    .auto_out_0_d_bits_sink(fixer_auto_out_0_d_bits_sink),
+    .auto_out_0_d_bits_denied(fixer_auto_out_0_d_bits_denied),
+    .auto_out_0_d_bits_data(fixer_auto_out_0_d_bits_data),
+    .auto_out_0_d_bits_corrupt(fixer_auto_out_0_d_bits_corrupt)
+  );
+  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_1 coupler_from_bus_named_subsystem_fbus ( // @[LazyModule.scala 432:27]
+    .auto_widget_out_a_ready(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_ready),
+    .auto_widget_out_a_valid(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_valid),
+    .auto_widget_out_a_bits_opcode(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_opcode),
+    .auto_widget_out_a_bits_param(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_param),
+    .auto_widget_out_a_bits_size(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_size),
+    .auto_widget_out_a_bits_source(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_source),
+    .auto_widget_out_a_bits_address(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_address),
+    .auto_widget_out_a_bits_mask(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_mask),
+    .auto_widget_out_a_bits_data(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_data),
+    .auto_widget_out_a_bits_corrupt(coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_corrupt),
+    .auto_widget_out_d_ready(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_ready),
+    .auto_widget_out_d_valid(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_valid),
+    .auto_widget_out_d_bits_opcode(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_opcode),
+    .auto_widget_out_d_bits_param(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_param),
+    .auto_widget_out_d_bits_size(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_size),
+    .auto_widget_out_d_bits_sink(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_sink),
+    .auto_widget_out_d_bits_denied(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_denied),
+    .auto_widget_out_d_bits_data(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_data),
+    .auto_widget_out_d_bits_corrupt(coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_corrupt),
+    .auto_bus_xing_in_a_ready(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_ready),
+    .auto_bus_xing_in_a_valid(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_valid),
+    .auto_bus_xing_in_a_bits_opcode(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_opcode),
+    .auto_bus_xing_in_a_bits_param(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_param),
+    .auto_bus_xing_in_a_bits_size(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_size),
+    .auto_bus_xing_in_a_bits_source(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_source),
+    .auto_bus_xing_in_a_bits_address(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_address),
+    .auto_bus_xing_in_a_bits_mask(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_mask),
+    .auto_bus_xing_in_a_bits_data(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_data),
+    .auto_bus_xing_in_a_bits_corrupt(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_corrupt),
+    .auto_bus_xing_in_d_ready(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_ready),
+    .auto_bus_xing_in_d_valid(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_valid),
+    .auto_bus_xing_in_d_bits_opcode(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_opcode),
+    .auto_bus_xing_in_d_bits_param(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_param),
+    .auto_bus_xing_in_d_bits_size(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_size),
+    .auto_bus_xing_in_d_bits_sink(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_sink),
+    .auto_bus_xing_in_d_bits_denied(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_denied),
+    .auto_bus_xing_in_d_bits_data(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_data),
+    .auto_bus_xing_in_d_bits_corrupt(coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_2 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_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_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_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)
+  );
+  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_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_from_bus_named_subsystem_fbus_bus_xing_in_a_ready =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_valid =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_opcode =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_param =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_size =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_sink =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_denied =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_data =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_corrupt =
+    coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  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 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_member_subsystem_sbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_sbus_0_reset =
+    subsystem_sbus_clock_groups_auto_out_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_1_a_valid = fixer_auto_out_1_a_valid; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_opcode = fixer_auto_out_1_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_param = fixer_auto_out_1_a_bits_param; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_size = fixer_auto_out_1_a_bits_size; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_source = fixer_auto_out_1_a_bits_source; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_address = fixer_auto_out_1_a_bits_address; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_mask = fixer_auto_out_1_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_data = fixer_auto_out_1_a_bits_data; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_a_bits_corrupt = fixer_auto_out_1_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_1_d_ready = fixer_auto_out_1_d_ready; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_valid = fixer_auto_out_0_a_valid; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_opcode = fixer_auto_out_0_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_param = fixer_auto_out_0_a_bits_param; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_size = fixer_auto_out_0_a_bits_size; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_source = fixer_auto_out_0_a_bits_source; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_address = fixer_auto_out_0_a_bits_address; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_mask = fixer_auto_out_0_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_data = fixer_auto_out_0_a_bits_data; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_a_bits_corrupt = fixer_auto_out_0_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_in_0_d_ready = fixer_auto_out_0_d_ready; // @[LazyModule.scala 296:16]
+  assign system_bus_xbar_auto_out_a_ready = coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_ready; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_d_valid = coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_valid; // @[LazyModule.scala 298:16]
+  assign system_bus_xbar_auto_out_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_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_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_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_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_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_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_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_1_a_valid = coupler_from_tile_auto_tl_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_opcode = coupler_from_tile_auto_tl_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_param = coupler_from_tile_auto_tl_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_size = coupler_from_tile_auto_tl_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_source = coupler_from_tile_auto_tl_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_address = coupler_from_tile_auto_tl_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_mask = coupler_from_tile_auto_tl_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_data = coupler_from_tile_auto_tl_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_a_bits_corrupt = coupler_from_tile_auto_tl_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_1_d_ready = coupler_from_tile_auto_tl_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_valid = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_opcode = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_param = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_size = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_source = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_address = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_mask = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_data = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_a_bits_corrupt = coupler_from_bus_named_subsystem_fbus_auto_widget_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_in_0_d_ready = coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_a_ready = system_bus_xbar_auto_in_1_a_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_valid = system_bus_xbar_auto_in_1_d_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_opcode = system_bus_xbar_auto_in_1_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_param = system_bus_xbar_auto_in_1_d_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_size = system_bus_xbar_auto_in_1_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_source = system_bus_xbar_auto_in_1_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_sink = system_bus_xbar_auto_in_1_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_denied = system_bus_xbar_auto_in_1_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_data = system_bus_xbar_auto_in_1_d_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_1_d_bits_corrupt = system_bus_xbar_auto_in_1_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_a_ready = system_bus_xbar_auto_in_0_a_ready; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_valid = system_bus_xbar_auto_in_0_d_valid; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_opcode = system_bus_xbar_auto_in_0_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_param = system_bus_xbar_auto_in_0_d_bits_param; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_size = system_bus_xbar_auto_in_0_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_sink = system_bus_xbar_auto_in_0_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_denied = system_bus_xbar_auto_in_0_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_data = system_bus_xbar_auto_in_0_d_bits_data; // @[LazyModule.scala 296:16]
+  assign fixer_auto_out_0_d_bits_corrupt = system_bus_xbar_auto_in_0_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_valid = system_bus_xbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_a_bits_opcode = system_bus_xbar_auto_out_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_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_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_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_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_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_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_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bus_named_subsystem_cbus_auto_widget_in_d_ready = system_bus_xbar_auto_out_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_from_bus_named_subsystem_fbus_auto_widget_out_a_ready = fixer_auto_in_0_a_ready; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_valid = fixer_auto_in_0_d_valid; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_opcode = fixer_auto_in_0_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_param = fixer_auto_in_0_d_bits_param; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_size = fixer_auto_in_0_d_bits_size; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_sink = fixer_auto_in_0_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_denied = fixer_auto_in_0_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_data = fixer_auto_in_0_d_bits_data; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_widget_out_d_bits_corrupt = fixer_auto_in_0_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_valid =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_opcode =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_param =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_size =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_source =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_address =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_mask =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_data =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_a_bits_corrupt =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign coupler_from_bus_named_subsystem_fbus_auto_bus_xing_in_d_ready =
+    auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  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_d_ready = auto_coupler_from_tile_tl_master_clock_xing_in_d_ready
+    ; // @[LazyModule.scala 309:16]
+  assign coupler_from_tile_auto_tl_out_a_ready = fixer_auto_in_1_a_ready; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_valid = fixer_auto_in_1_d_valid; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_opcode = fixer_auto_in_1_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_param = fixer_auto_in_1_d_bits_param; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_size = fixer_auto_in_1_d_bits_size; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_source = fixer_auto_in_1_d_bits_source; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_sink = fixer_auto_in_1_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_denied = fixer_auto_in_1_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_data = fixer_auto_in_1_d_bits_data; // @[LazyModule.scala 296:16]
+  assign coupler_from_tile_auto_tl_out_d_bits_corrupt = fixer_auto_in_1_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_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_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_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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h4000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_61 = io_in_a_bits_address ^ 30'h20000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_64 = $signed(_T_62) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_66 = io_in_a_bits_address ^ 30'h10000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_69 = $signed(_T_67) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_71 = io_in_a_bits_address ^ 30'h10010000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_74 = $signed(_T_72) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_76 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_79 = $signed(_T_77) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_81 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_84 = $signed(_T_82) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_60 | _T_65 | _T_70 | _T_75 | _T_80 | _T_85; // @[Parameters.scala 671:42]
+  wire  _T_152 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_156 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_157 = _T_156 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_161 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_165 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_279 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_292 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_309 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_347 = _T_309 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_358 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_362 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_370 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_409 = _T_60 | _T_70 | _T_75 | _T_80; // @[Parameters.scala 671:42]
+  wire  _T_410 = _T_309 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_426 = source_ok & _T_410; // @[Monitor.scala 115:71]
+  wire  _T_444 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_514 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_515 = io_in_a_bits_mask & _T_514; // @[Monitor.scala 127:31]
+  wire  _T_516 = _T_515 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_520 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_581 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_589 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_650 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_658 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_719 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_731 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_735 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_739 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_743 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_747 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_751 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_755 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_766 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_770 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_783 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_803 = _T_751 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_812 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_829 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_847 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_877 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_878 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_882 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_886 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_890 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_894 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_901 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_902 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_906 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_910 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_914 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_918 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_922 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_928 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_931 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_933 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_935 = ~_T_933[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_939 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_941 = ~_T_735; // @[Monitor.scala 671:74]
+  wire  _T_942 = io_in_d_valid & d_first_1 & ~_T_735; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_941 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_941 ? _d_opcodes_clr_T_5 : 79'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_928 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_952 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_954 = _T_952[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_959 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_960 = io_in_d_bits_opcode == _GEN_32 | _T_959; // @[Monitor.scala 685:77]
+  wire  _T_964 = 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_971 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_972 = io_in_d_bits_opcode == _GEN_48 | _T_971; // @[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_976 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_986 = _T_939 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_941; // @[Monitor.scala 694:116]
+  wire  _T_988 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_997 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1023 = io_in_d_valid & d_first_2 & _T_735; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_735 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_735 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_1031 = 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_1041 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_1061 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_152 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_152) 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_157 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_161) 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_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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 (io_in_a_valid & _T_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset) 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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_152 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_152) 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_279 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_279) 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_157 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_161) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_347 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_347) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_358 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_161) 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_426 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_426) 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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_358 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_362) 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_426 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_426) 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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_358 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_358) 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_516 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_516) 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_520 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_581 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_581) 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_362 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_362) 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_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 (io_in_a_valid & _T_589 & ~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_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 (io_in_a_valid & _T_589 & ~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_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 (io_in_a_valid & _T_589 & ~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_650 & (io_in_a_valid & _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 (io_in_a_valid & _T_589 & ~reset & ~_T_650) 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_362 & (io_in_a_valid & _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 (io_in_a_valid & _T_589 & ~reset & ~_T_362) 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_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) 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_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 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_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 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_719 & (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_719) 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_362 & (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_362) 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_161 & (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_161) 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_731 & (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_731) 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_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _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_739 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_739) 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_743 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_751) 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_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _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_755 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _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_739 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_739) 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_766 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_766) 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_770 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_770) 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_747 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_747) 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 (~_T_751 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant 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_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _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_783 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _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_739 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_739) 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_766 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_766) 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_770 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_770) 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_803 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_803) 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 (~_T_751 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData 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_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _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_743 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_747) 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 (~_T_751 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck 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_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _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_743 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_743) 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_803 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_803) 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 (~_T_751 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData 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_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _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_743 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck 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 (~_T_878 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_878) 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_882 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_882) 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_886 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_886) 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_890 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_890) 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_894 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_894) 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_902 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_902) 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_906 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_906) 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_910 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_910) 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_914 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_914) 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_918 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_918) 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_922 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_922) 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_935 & (_T_931 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_931 & ~reset & ~_T_935) 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_954 & (_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 (_T_942 & _T_2 & ~_T_954) 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_960 & (_T_942 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & same_cycle_resp & _T_2 & ~_T_960) 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_964 & (_T_942 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & same_cycle_resp & _T_2 & ~_T_964) 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_972 & (_T_942 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & ~same_cycle_resp & _T_2 & ~_T_972) 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_976 & (_T_942 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & ~same_cycle_resp & _T_2 & ~_T_976) 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_988 & (_T_986 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_986 & _T_2 & ~_T_988) 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_997 & ~reset) begin
+          $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_997) 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_1031[0] & (_T_1023 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1023 & _T_2 & ~_T_1031[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_1041 & (_T_1023 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1023 & _T_2 & ~_T_1041) 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_1061 & ~reset) begin
+          $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_1061) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [2: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 [7: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 [2: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_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)
+  );
+  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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h4000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_61 = io_in_a_bits_address ^ 30'h20000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_64 = $signed(_T_62) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_66 = io_in_a_bits_address ^ 30'h10000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_69 = $signed(_T_67) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_71 = io_in_a_bits_address ^ 30'h10010000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_74 = $signed(_T_72) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_76 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_79 = $signed(_T_77) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_81 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_84 = $signed(_T_82) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_60 | _T_65 | _T_70 | _T_75 | _T_80 | _T_85; // @[Parameters.scala 671:42]
+  wire  _T_152 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_156 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_157 = _T_156 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_161 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_165 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_279 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_292 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_309 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_347 = _T_309 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_358 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_362 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_370 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_409 = _T_60 | _T_70 | _T_75 | _T_80; // @[Parameters.scala 671:42]
+  wire  _T_410 = _T_309 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_426 = source_ok & _T_410; // @[Monitor.scala 115:71]
+  wire  _T_444 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_514 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_515 = io_in_a_bits_mask & _T_514; // @[Monitor.scala 127:31]
+  wire  _T_516 = _T_515 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_520 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_581 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_589 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_650 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_658 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_719 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_731 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_735 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_739 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_743 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_747 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_751 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_755 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_766 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_770 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_783 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_803 = _T_751 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_812 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_829 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_847 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_877 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_878 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_882 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_886 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_890 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_894 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_901 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_902 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_906 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_910 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_914 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_918 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_922 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_928 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_931 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_933 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_935 = ~_T_933[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_939 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_941 = ~_T_735; // @[Monitor.scala 671:74]
+  wire  _T_942 = io_in_d_valid & d_first_1 & ~_T_735; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_941 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_941 ? _d_opcodes_clr_T_5 : 79'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_928 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_952 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_954 = _T_952[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_959 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_960 = io_in_d_bits_opcode == _GEN_32 | _T_959; // @[Monitor.scala 685:77]
+  wire  _T_964 = 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_971 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_972 = io_in_d_bits_opcode == _GEN_48 | _T_971; // @[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_976 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_986 = _T_939 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_941; // @[Monitor.scala 694:116]
+  wire  _T_988 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_997 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1023 = io_in_d_valid & d_first_2 & _T_735; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_735 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_735 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_1031 = 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_1041 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_1061 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_152 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_152) 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_157 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_161) 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_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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 (io_in_a_valid & _T_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset) 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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_152 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_152) 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_279 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_279) 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_157 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_161) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_347 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_347) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_358 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_161) 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_426 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_426) 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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_358 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_362) 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_426 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_426) 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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_358 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_358) 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_516 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_516) 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_520 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_581 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_581) 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_362 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_362) 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_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 (io_in_a_valid & _T_589 & ~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_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 (io_in_a_valid & _T_589 & ~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_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 (io_in_a_valid & _T_589 & ~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_650 & (io_in_a_valid & _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 (io_in_a_valid & _T_589 & ~reset & ~_T_650) 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_362 & (io_in_a_valid & _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 (io_in_a_valid & _T_589 & ~reset & ~_T_362) 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_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) 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_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 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_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 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_719 & (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_719) 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_362 & (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_362) 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_161 & (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_161) 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_731 & (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_731) 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_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _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_739 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_739) 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_743 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_751) 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_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _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_755 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _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_739 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_739) 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_766 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_766) 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_770 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_770) 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_747 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_747) 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 (~_T_751 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant 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_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _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_783 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _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_739 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_739) 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_766 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_766) 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_770 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_770) 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_803 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_803) 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 (~_T_751 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData 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_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _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_743 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_747) 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 (~_T_751 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck 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_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _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_743 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_743) 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_803 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_803) 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 (~_T_751 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData 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_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _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_743 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_751) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck 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 (~_T_878 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_878) 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_882 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_882) 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_886 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_886) 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_890 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_890) 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_894 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_894) 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_902 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_902) 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_906 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_906) 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_910 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_910) 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_914 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_914) 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_918 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_918) 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_922 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_922) 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_935 & (_T_931 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_931 & ~reset & ~_T_935) 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_954 & (_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 (_T_942 & _T_2 & ~_T_954) 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_960 & (_T_942 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & same_cycle_resp & _T_2 & ~_T_960) 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_964 & (_T_942 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & same_cycle_resp & _T_2 & ~_T_964) 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_972 & (_T_942 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & ~same_cycle_resp & _T_2 & ~_T_972) 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_976 & (_T_942 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & ~same_cycle_resp & _T_2 & ~_T_976) 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_988 & (_T_986 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_986 & _T_2 & ~_T_988) 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_997 & ~reset) begin
+          $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_997) 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_1031[0] & (_T_1023 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1023 & _T_2 & ~_T_1031[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_1041 & (_T_1023 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1023 & _T_2 & ~_T_1041) 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_1061 & ~reset) begin
+          $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_1061) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  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 [2:0]  auto_out_8_a_bits_source,
+  output [29:0] auto_out_8_a_bits_address,
+  output [7:0]  auto_out_8_a_bits_mask,
+  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_size,
+  input  [2:0]  auto_out_8_d_bits_source,
+  input  [63: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 [2:0]  auto_out_7_a_bits_source,
+  output [28:0] auto_out_7_a_bits_address,
+  output [7:0]  auto_out_7_a_bits_mask,
+  output [63: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  [2:0]  auto_out_7_d_bits_source,
+  input  [63: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 [2:0]  auto_out_6_a_bits_source,
+  output [29:0] auto_out_6_a_bits_address,
+  output [7: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  [2:0]  auto_out_6_d_bits_source,
+  input  [63: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 [2:0]  auto_out_5_a_bits_source,
+  output [28:0] auto_out_5_a_bits_address,
+  output [7:0]  auto_out_5_a_bits_mask,
+  output [63: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  [2:0]  auto_out_5_d_bits_source,
+  input  [63: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 [2:0]  auto_out_4_a_bits_source,
+  output [28:0] auto_out_4_a_bits_address,
+  output [7:0]  auto_out_4_a_bits_mask,
+  output [63: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  [2:0]  auto_out_4_d_bits_source,
+  input  [63: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 [2:0]  auto_out_3_a_bits_source,
+  output [28:0] auto_out_3_a_bits_address,
+  output [7:0]  auto_out_3_a_bits_mask,
+  output [63: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  [2:0]  auto_out_3_d_bits_source,
+  input  [63: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 [2:0]  auto_out_2_a_bits_source,
+  output [28:0] auto_out_2_a_bits_address,
+  output [7:0]  auto_out_2_a_bits_mask,
+  output [63: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  [2:0]  auto_out_2_d_bits_source,
+  input  [63: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 [2:0]  auto_out_1_a_bits_source,
+  output [28:0] auto_out_1_a_bits_address,
+  output [7:0]  auto_out_1_a_bits_mask,
+  output [63: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  [2:0]  auto_out_1_d_bits_source,
+  input         auto_out_1_d_bits_sink,
+  input         auto_out_1_d_bits_denied,
+  input  [63: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 [2:0]  auto_out_0_a_bits_size,
+  output [2:0]  auto_out_0_a_bits_source,
+  output [14:0] auto_out_0_a_bits_address,
+  output [7:0]  auto_out_0_a_bits_mask,
+  output [63: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  [2:0]  auto_out_0_d_bits_source,
+  input  [63: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;
+`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 [2: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 [7: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 [2: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 [2:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 3'h0; // @[Arbiter.scala 88:28]
+  wire [8:0] readys_valid = {auto_out_8_d_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 [8:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [8:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [8:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [17:0] readys_filter = {_readys_filter_T_1,auto_out_8_d_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]
+  wire [17:0] _GEN_1 = {{1'd0}, readys_filter[17:1]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [17:0] _GEN_2 = {{2'd0}, _readys_unready_T_1[17:2]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_3 = _readys_unready_T_1 | _GEN_2; // @[package.scala 253:43]
+  wire [17:0] _GEN_3 = {{4'd0}, _readys_unready_T_3[17:4]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_5 = _readys_unready_T_3 | _GEN_3; // @[package.scala 253:43]
+  wire [17:0] _GEN_4 = {{8'd0}, _readys_unready_T_5[17:8]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_7 = _readys_unready_T_5 | _GEN_4; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_10 = {readys_mask, 9'h0}; // @[Arbiter.scala 25:66]
+  wire [17:0] _GEN_5 = {{1'd0}, _readys_unready_T_7[17:1]}; // @[Arbiter.scala 25:58]
+  wire [17:0] readys_unready = _GEN_5 | _readys_unready_T_10; // @[Arbiter.scala 25:58]
+  wire [8:0] _readys_readys_T_2 = readys_unready[17:9] & readys_unready[8:0]; // @[Arbiter.scala 26:39]
+  wire [8: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 [2:0] _T_148 = muxStateEarly_0 ? auto_out_0_d_bits_source : 3'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 [2:0] _T_149 = muxStateEarly_1 ? auto_out_1_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_157 = _T_148 | _T_149; // @[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 [2:0] _T_150 = muxStateEarly_2 ? auto_out_2_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_158 = _T_157 | _T_150; // @[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 [2:0] _T_151 = muxStateEarly_3 ? auto_out_3_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_159 = _T_158 | _T_151; // @[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 [2:0] _T_152 = muxStateEarly_4 ? auto_out_4_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_160 = _T_159 | _T_152; // @[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 [2:0] _T_153 = muxStateEarly_5 ? auto_out_5_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_161 = _T_160 | _T_153; // @[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 [2:0] _T_154 = muxStateEarly_6 ? auto_out_6_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_162 = _T_161 | _T_154; // @[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 [2:0] _T_155 = muxStateEarly_7 ? auto_out_7_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_163 = _T_162 | _T_155; // @[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 [2:0] _T_156 = muxStateEarly_8 ? auto_out_8_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [29:0] _requestAIO_T = auto_in_a_bits_address ^ 30'h4000; // @[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'sh30037000; // @[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'h20000; // @[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'sh30030000; // @[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'h10000000; // @[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'sh30037000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_14 = $signed(_requestAIO_T_13) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  requestAIO_0_1 = _requestAIO_T_9 | _requestAIO_T_14; // @[Xbar.scala 363:92]
+  wire [29:0] _requestAIO_T_16 = auto_in_a_bits_address ^ 30'h10010000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_17 = {1'b0,$signed(_requestAIO_T_16)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_19 = $signed(_requestAIO_T_17) & 31'sh30037000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_2 = $signed(_requestAIO_T_19) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_21 = auto_in_a_bits_address ^ 30'h10011000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_22 = {1'b0,$signed(_requestAIO_T_21)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_24 = $signed(_requestAIO_T_22) & 31'sh30037000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_3 = $signed(_requestAIO_T_24) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_26 = auto_in_a_bits_address ^ 30'h10012000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_27 = {1'b0,$signed(_requestAIO_T_26)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_29 = $signed(_requestAIO_T_27) & 31'sh30037000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_4 = $signed(_requestAIO_T_29) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_31 = auto_in_a_bits_address ^ 30'h10013000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_32 = {1'b0,$signed(_requestAIO_T_31)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_34 = $signed(_requestAIO_T_32) & 31'sh30037000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_5 = $signed(_requestAIO_T_34) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_36 = auto_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_37 = {1'b0,$signed(_requestAIO_T_36)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_39 = $signed(_requestAIO_T_37) & 31'sh30000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_6 = $signed(_requestAIO_T_39) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_41 = auto_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_42 = {1'b0,$signed(_requestAIO_T_41)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_44 = $signed(_requestAIO_T_42) & 31'sh30037000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_7 = $signed(_requestAIO_T_44) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _requestAIO_T_46 = auto_in_a_bits_address ^ 30'h30000000; // @[Parameters.scala 137:31]
+  wire [30:0] _requestAIO_T_47 = {1'b0,$signed(_requestAIO_T_46)}; // @[Parameters.scala 137:49]
+  wire [30:0] _requestAIO_T_49 = $signed(_requestAIO_T_47) & 31'sh30000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_8 = $signed(_requestAIO_T_49) == 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 [2:0] beatsDO_decode = _beatsDO_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata = auto_out_0_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_0 = beatsDO_opdata ? beatsDO_decode : 3'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 [2:0] beatsDO_decode_1 = _beatsDO_decode_T_7[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_1 = auto_out_1_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_1 = beatsDO_opdata_1 ? beatsDO_decode_1 : 3'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 [2:0] beatsDO_decode_2 = _beatsDO_decode_T_11[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_2 = auto_out_2_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_2 = beatsDO_opdata_2 ? beatsDO_decode_2 : 3'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 [2:0] beatsDO_decode_3 = _beatsDO_decode_T_15[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_3 = auto_out_3_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_3 = beatsDO_opdata_3 ? beatsDO_decode_3 : 3'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 [2:0] beatsDO_decode_4 = _beatsDO_decode_T_19[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_4 = auto_out_4_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_4 = beatsDO_opdata_4 ? beatsDO_decode_4 : 3'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 [2:0] beatsDO_decode_5 = _beatsDO_decode_T_23[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_5 = auto_out_5_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_5 = beatsDO_opdata_5 ? beatsDO_decode_5 : 3'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 [2:0] beatsDO_decode_6 = _beatsDO_decode_T_27[5:3]; // @[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 [2:0] beatsDO_decode_7 = _beatsDO_decode_T_31[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_7 = auto_out_7_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_7 = beatsDO_opdata_7 ? beatsDO_decode_7 : 3'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 [2:0] beatsDO_decode_8 = _beatsDO_decode_T_35[5:3]; // @[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 [8:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [9:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[8:0]; // @[package.scala 244:43]
+  wire [10:0] _readys_mask_T_4 = {_readys_mask_T_3, 2'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_6 = _readys_mask_T_3 | _readys_mask_T_4[8:0]; // @[package.scala 244:43]
+  wire [12:0] _readys_mask_T_7 = {_readys_mask_T_6, 4'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_9 = _readys_mask_T_6 | _readys_mask_T_7[8:0]; // @[package.scala 244:43]
+  wire [16:0] _readys_mask_T_10 = {_readys_mask_T_9, 8'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_12 = _readys_mask_T_9 | _readys_mask_T_10[8: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_T = prefixOR_8 | earlyWinner_8; // @[Arbiter.scala 104:53]
+  wire  _T_26 = ~prefixOR_8 | ~earlyWinner_8; // @[Arbiter.scala 105:64]
+  wire  _T_45 = 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; // @[Arbiter.scala 107:36]
+  wire  _T_46 = ~(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); // @[Arbiter.scala 107:15]
+  wire [2:0] maskedBeats_0 = earlyWinner_0 ? beatsDO_0 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_1 = earlyWinner_1 ? beatsDO_1 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_2 = earlyWinner_2 ? beatsDO_2 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_3 = earlyWinner_3 ? beatsDO_3 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_4 = earlyWinner_4 ? beatsDO_4 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_5 = earlyWinner_5 ? beatsDO_5 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_6 = earlyWinner_6 ? beatsDO_decode_6 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_7 = earlyWinner_7 ? beatsDO_7 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_8 = earlyWinner_8 ? beatsDO_decode_8 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] _initBeats_T = maskedBeats_0 | maskedBeats_1; // @[Arbiter.scala 112:44]
+  wire [2:0] _initBeats_T_1 = _initBeats_T | maskedBeats_2; // @[Arbiter.scala 112:44]
+  wire [2:0] _initBeats_T_2 = _initBeats_T_1 | maskedBeats_3; // @[Arbiter.scala 112:44]
+  wire [2:0] _initBeats_T_3 = _initBeats_T_2 | maskedBeats_4; // @[Arbiter.scala 112:44]
+  wire [2:0] _initBeats_T_4 = _initBeats_T_3 | maskedBeats_5; // @[Arbiter.scala 112:44]
+  wire [2:0] _initBeats_T_5 = _initBeats_T_4 | maskedBeats_6; // @[Arbiter.scala 112:44]
+  wire [2:0] _initBeats_T_6 = _initBeats_T_5 | maskedBeats_7; // @[Arbiter.scala 112:44]
+  wire [2:0] initBeats = _initBeats_T_6 | maskedBeats_8; // @[Arbiter.scala 112:44]
+  wire  _sink_ACancel_earlyValid_T_24 = 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; // @[Mux.scala 27:73]
+  wire  sink_ACancel_19_earlyValid = idle ? _T_45 : _sink_ACancel_earlyValid_T_24; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_19_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [2:0] _GEN_6 = {{2'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [2: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 [63:0] _T_97 = muxStateEarly_0 ? auto_out_0_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_98 = muxStateEarly_1 ? auto_out_1_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_99 = muxStateEarly_2 ? auto_out_2_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_100 = muxStateEarly_3 ? auto_out_3_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_101 = muxStateEarly_4 ? auto_out_4_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_102 = muxStateEarly_5 ? auto_out_5_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_103 = muxStateEarly_6 ? auto_out_6_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_104 = muxStateEarly_7 ? auto_out_7_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_105 = muxStateEarly_8 ? auto_out_8_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_106 = _T_97 | _T_98; // @[Mux.scala 27:73]
+  wire [63:0] _T_107 = _T_106 | _T_99; // @[Mux.scala 27:73]
+  wire [63:0] _T_108 = _T_107 | _T_100; // @[Mux.scala 27:73]
+  wire [63:0] _T_109 = _T_108 | _T_101; // @[Mux.scala 27:73]
+  wire [63:0] _T_110 = _T_109 | _T_102; // @[Mux.scala 27:73]
+  wire [63:0] _T_111 = _T_110 | _T_103; // @[Mux.scala 27:73]
+  wire [63:0] _T_112 = _T_111 | _T_104; // @[Mux.scala 27:73]
+  wire [2:0] _T_165 = muxStateEarly_0 ? auto_out_0_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_166 = muxStateEarly_1 ? auto_out_1_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_167 = muxStateEarly_2 ? auto_out_2_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_168 = muxStateEarly_3 ? auto_out_3_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_169 = muxStateEarly_4 ? auto_out_4_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_170 = muxStateEarly_5 ? auto_out_5_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_171 = muxStateEarly_6 ? auto_out_6_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_172 = muxStateEarly_7 ? auto_out_7_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_173 = muxStateEarly_8 ? auto_out_8_d_bits_size : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_174 = _T_165 | _T_166; // @[Mux.scala 27:73]
+  wire [2:0] _T_175 = _T_174 | _T_167; // @[Mux.scala 27:73]
+  wire [2:0] _T_176 = _T_175 | _T_168; // @[Mux.scala 27:73]
+  wire [2:0] _T_177 = _T_176 | _T_169; // @[Mux.scala 27:73]
+  wire [2:0] _T_178 = _T_177 | _T_170; // @[Mux.scala 27:73]
+  wire [2:0] _T_179 = _T_178 | _T_171; // @[Mux.scala 27:73]
+  wire [2:0] _T_180 = _T_179 | _T_172; // @[Mux.scala 27:73]
+  wire [2:0] _T_199 = muxStateEarly_0 ? auto_out_0_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_200 = muxStateEarly_1 ? auto_out_1_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_201 = muxStateEarly_2 ? auto_out_2_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_202 = muxStateEarly_3 ? auto_out_3_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_203 = muxStateEarly_4 ? auto_out_4_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_204 = muxStateEarly_5 ? auto_out_5_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_205 = muxStateEarly_6 ? 3'h1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_206 = muxStateEarly_7 ? auto_out_7_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_207 = muxStateEarly_8 ? 3'h1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_208 = _T_199 | _T_200; // @[Mux.scala 27:73]
+  wire [2:0] _T_209 = _T_208 | _T_201; // @[Mux.scala 27:73]
+  wire [2:0] _T_210 = _T_209 | _T_202; // @[Mux.scala 27:73]
+  wire [2:0] _T_211 = _T_210 | _T_203; // @[Mux.scala 27:73]
+  wire [2:0] _T_212 = _T_211 | _T_204; // @[Mux.scala 27:73]
+  wire [2:0] _T_213 = _T_212 | _T_205; // @[Mux.scala 27:73]
+  wire [2:0] _T_214 = _T_213 | _T_206; // @[Mux.scala 27:73]
+  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 = 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; // @[Mux.scala 27:73]
+  assign auto_in_d_valid = idle ? _T_45 : _sink_ACancel_earlyValid_T_24; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = _T_214 | _T_207; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_param = muxStateEarly_1 ? auto_out_1_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = _T_180 | _T_173; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_source = _T_163 | _T_156; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_sink = muxStateEarly_1 & auto_out_1_d_bits_sink; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_denied = muxStateEarly_1 & auto_out_1_d_bits_denied; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = _T_112 | _T_105; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_corrupt = muxStateEarly_1 & auto_out_1_d_bits_corrupt; // @[Mux.scala 27:73]
+  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; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  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_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[14: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; // @[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_45 : _sink_ACancel_earlyValid_T_24; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_214 | _T_207; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_param = muxStateEarly_1 ? auto_out_1_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_180 | _T_173; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_source = _T_163 | _T_156; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_sink = muxStateEarly_1 & auto_out_1_d_bits_sink; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_denied = muxStateEarly_1 & auto_out_1_d_bits_denied; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_corrupt = muxStateEarly_1 & auto_out_1_d_bits_corrupt; // @[Mux.scala 27:73]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 3'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 <= 9'h1ff; // @[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
+    `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) & _T_26) & _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) & _T_26)) 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) | _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) |
+          _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_46 | _T_45) & _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_46 | _T_45)) 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[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[8: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];
+`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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h4000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_61 = io_in_a_bits_address ^ 30'h20000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_64 = $signed(_T_62) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_66 = io_in_a_bits_address ^ 30'h10000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_69 = $signed(_T_67) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_71 = io_in_a_bits_address ^ 30'h10010000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_74 = $signed(_T_72) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_76 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_79 = $signed(_T_77) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_81 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_84 = $signed(_T_82) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_60 | _T_65 | _T_70 | _T_75 | _T_80 | _T_85; // @[Parameters.scala 671:42]
+  wire  _T_152 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_156 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_157 = _T_156 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_161 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_165 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_279 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_292 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_309 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_347 = _T_309 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_358 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_362 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_370 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_409 = _T_60 | _T_70 | _T_75 | _T_80; // @[Parameters.scala 671:42]
+  wire  _T_410 = _T_309 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_426 = source_ok & _T_410; // @[Monitor.scala 115:71]
+  wire  _T_444 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_514 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_515 = io_in_a_bits_mask & _T_514; // @[Monitor.scala 127:31]
+  wire  _T_516 = _T_515 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_520 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_581 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_589 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_650 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_658 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_719 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_731 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_735 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_739 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_743 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_747 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_751 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_755 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_766 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_770 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_783 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_803 = _T_751 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_812 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_829 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_847 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_877 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_878 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_882 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_886 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_890 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_894 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_901 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_902 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_906 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_910 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_914 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_918 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_922 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_928 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_931 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_933 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_935 = ~_T_933[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_939 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_941 = ~_T_735; // @[Monitor.scala 671:74]
+  wire  _T_942 = io_in_d_valid & d_first_1 & ~_T_735; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_735 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_941 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_941 ? _d_opcodes_clr_T_5 : 79'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_928 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_952 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_954 = _T_952[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_959 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_960 = io_in_d_bits_opcode == _GEN_32 | _T_959; // @[Monitor.scala 685:77]
+  wire  _T_964 = 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_971 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_972 = io_in_d_bits_opcode == _GEN_48 | _T_971; // @[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_976 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_986 = _T_939 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_941; // @[Monitor.scala 694:116]
+  wire  _T_988 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_995 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_1004 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1030 = io_in_d_valid & d_first_2 & _T_735; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_735 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_735 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_1038 = 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_1048 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_1073 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_152 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_152) 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_157 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_161) 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_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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 (io_in_a_valid & _T_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset) 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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_152 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_152) 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_279 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_279) 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_157 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_161) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_347 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_347) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_358 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_161) 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_426 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_426) 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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_358 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_362) 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_426 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_426) 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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_358 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_358) 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_516 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_516) 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_520 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_581 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_581) 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_362 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_362) 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_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 (io_in_a_valid & _T_589 & ~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_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 (io_in_a_valid & _T_589 & ~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_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 (io_in_a_valid & _T_589 & ~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_650 & (io_in_a_valid & _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 (io_in_a_valid & _T_589 & ~reset & ~_T_650) 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_362 & (io_in_a_valid & _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 (io_in_a_valid & _T_589 & ~reset & ~_T_362) 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_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) 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_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 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_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 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_719 & (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_719) 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_362 & (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_362) 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_161 & (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_161) 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_731 & (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_731) 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_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _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_739 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_739) 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_743 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_735 & _T_2 & ~_T_751) 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_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _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_755 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _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_739 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_739) 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_766 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_766) 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_770 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_770) 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_747 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_755 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_755 & _T_2 & ~_T_751) 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_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _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_783 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _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_739 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_739) 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_766 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_766) 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_770 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_770) 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_803 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_803) 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_751 & (io_in_d_valid & _T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_783 & _T_2 & ~_T_751) 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_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _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_743 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_812 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_812 & _T_2 & ~_T_751) 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_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _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_743 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_743) 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_803 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_803) 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_751 & (io_in_d_valid & _T_829 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_829 & _T_2 & ~_T_751) 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_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _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_743 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_743) 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_747 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_747) 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_751 & (io_in_d_valid & _T_847 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_847 & _T_2 & ~_T_751) 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_878 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_878) 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_882 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_882) 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_886 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_886) 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_890 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_890) 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_894 & (_T_877 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_877 & ~reset & ~_T_894) 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_902 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_902) 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_906 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_906) 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_910 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_910) 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_914 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_914) 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_918 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_918) 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_922 & (_T_901 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_901 & _T_2 & ~_T_922) 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_935 & (_T_931 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_931 & ~reset & ~_T_935) 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_954 & (_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 (_T_942 & _T_2 & ~_T_954) 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_960 & (_T_942 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & same_cycle_resp & _T_2 & ~_T_960) 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_964 & (_T_942 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & same_cycle_resp & _T_2 & ~_T_964) 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_972 & (_T_942 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & ~same_cycle_resp & _T_2 & ~_T_972) 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_976 & (_T_942 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_942 & ~same_cycle_resp & _T_2 & ~_T_976) 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_988 & (_T_986 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_986 & _T_2 & ~_T_988) 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_995 & _T_2) begin
+          $fatal; // @[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_995) 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_1004 & ~reset) begin
+          $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_1004) 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_1038[0] & (_T_1030 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1030 & _T_2 & ~_T_1038[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_1048 & (_T_1030 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1030 & _T_2 & ~_T_1048) 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_1073 & ~reset) begin
+          $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_1073) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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  [2:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  input  [63: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 [2:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_mask,
+  output [63: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 [63: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[2: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[7:0];
+  _RAND_6 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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  [2:0]  io_enq_bits_source,
+  input         io_enq_bits_sink,
+  input         io_enq_bits_denied,
+  input  [63: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 [2:0]  io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [63: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 [63: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[2: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 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [2: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 [7: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 [2: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 [2: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 [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2: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 [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2: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 [63: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 [2: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 [63: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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h4000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_61 = io_in_a_bits_address ^ 30'h20000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_64 = $signed(_T_62) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_66 = io_in_a_bits_address ^ 30'h10000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_69 = $signed(_T_67) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_71 = io_in_a_bits_address ^ 30'h10010000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_74 = $signed(_T_72) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_76 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_79 = $signed(_T_77) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_81 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_84 = $signed(_T_82) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_60 | _T_65 | _T_70 | _T_75 | _T_80 | _T_85; // @[Parameters.scala 671:42]
+  wire  _T_152 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_156 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_157 = _T_156 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_161 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_165 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_279 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_292 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_309 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_347 = _T_309 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_358 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_362 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_370 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_409 = _T_60 | _T_70 | _T_75 | _T_80; // @[Parameters.scala 671:42]
+  wire  _T_410 = _T_309 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_426 = source_ok & _T_410; // @[Monitor.scala 115:71]
+  wire  _T_444 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_514 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_515 = io_in_a_bits_mask & _T_514; // @[Monitor.scala 127:31]
+  wire  _T_516 = _T_515 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_520 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_534 = io_in_a_bits_size <= 3'h3; // @[Parameters.scala 92:42]
+  wire  _T_560 = _T_534 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_576 = source_ok & _T_560; // @[Monitor.scala 131:74]
+  wire  _T_586 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_594 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_660 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_668 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_729 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_741 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_745 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_749 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_753 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_757 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_761 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_765 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_776 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_780 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_793 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_813 = _T_761 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_822 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_839 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_857 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_887 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_888 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_892 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_896 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_900 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_904 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_911 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_912 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_916 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_920 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_924 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_928 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_932 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_938 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_941 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_943 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_945 = ~_T_943[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_949 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_951 = ~_T_745; // @[Monitor.scala 671:74]
+  wire  _T_952 = io_in_d_valid & d_first_1 & ~_T_745; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_745 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_951 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_951 ? _d_opcodes_clr_T_5 : 79'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_938 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_962 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_964 = _T_962[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_969 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_970 = io_in_d_bits_opcode == _GEN_32 | _T_969; // @[Monitor.scala 685:77]
+  wire  _T_974 = 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_981 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_982 = io_in_d_bits_opcode == _GEN_48 | _T_981; // @[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_986 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_996 = _T_949 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_951; // @[Monitor.scala 694:116]
+  wire  _T_998 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_1005 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_1014 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1040 = io_in_d_valid & d_first_2 & _T_745; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_745 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_745 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_1048 = 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_1058 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_1083 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_152 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_152) 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_157 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_161) 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_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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 (io_in_a_valid & _T_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset) 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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_152 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_152) 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_279 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_279) 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_157 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_161) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_347 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_347) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_358 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_161) 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_426 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_426) 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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_358 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_362) 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_426 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_426) 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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_358 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_358) 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_516 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_516) 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_576 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_576) 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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_586 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_586) 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_362 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_362) 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_576 & (io_in_a_valid & _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 (io_in_a_valid & _T_594 & ~reset & ~_T_576) 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_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 (io_in_a_valid & _T_594 & ~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_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 (io_in_a_valid & _T_594 & ~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_660 & (io_in_a_valid & _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 (io_in_a_valid & _T_594 & ~reset & ~_T_660) 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_362 & (io_in_a_valid & _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 (io_in_a_valid & _T_594 & ~reset & ~_T_362) 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_668 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~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_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~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_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~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_729 & (io_in_a_valid & _T_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~reset & ~_T_729) 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_362 & (io_in_a_valid & _T_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~reset & ~_T_161) 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_741 & (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_741) 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_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _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_749 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_749) 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_753 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_753) 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_757 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_761) 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_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _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_765 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _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_749 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_749) 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_776 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_776) 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_780 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_780) 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_757 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_761) 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_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _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_793 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _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_749 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_749) 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_776 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_776) 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_780 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_780) 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_813 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_813) 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_761 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_761) 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_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _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_753 & (io_in_d_valid & _T_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _T_2 & ~_T_753) 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_757 & (io_in_d_valid & _T_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _T_2 & ~_T_761) 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_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _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_753 & (io_in_d_valid & _T_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _T_2 & ~_T_753) 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_813 & (io_in_d_valid & _T_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _T_2 & ~_T_813) 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_761 & (io_in_d_valid & _T_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _T_2 & ~_T_761) 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_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _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_753 & (io_in_d_valid & _T_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _T_2 & ~_T_753) 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_757 & (io_in_d_valid & _T_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _T_2 & ~_T_761) 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_888 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_888) 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_892 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_892) 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_896 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_896) 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_900 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_900) 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_904 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_904) 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_912 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_912) 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_916 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_916) 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_920 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_920) 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_924 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_924) 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_928 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_928) 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_932 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_932) 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_945 & (_T_941 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_941 & ~reset & ~_T_945) 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_964 & (_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 (_T_952 & _T_2 & ~_T_964) 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_970 & (_T_952 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & same_cycle_resp & _T_2 & ~_T_970) 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_974 & (_T_952 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & same_cycle_resp & _T_2 & ~_T_974) 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_982 & (_T_952 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & ~same_cycle_resp & _T_2 & ~_T_982) 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_986 & (_T_952 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & ~same_cycle_resp & _T_2 & ~_T_986) 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_998 & (_T_996 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_996 & _T_2 & ~_T_998) 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_1005 & _T_2) begin
+          $fatal; // @[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_1005) 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_1014 & ~reset) begin
+          $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_1014) 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_1048[0] & (_T_1040 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1040 & _T_2 & ~_T_1048[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_1058 & (_T_1040 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1040 & _T_2 & ~_T_1058) 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_1083 & ~reset) begin
+          $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_1083) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [63:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [63: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 [2: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 [7: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 [2: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 [2:0] cam_a_0_bits_source; // @[AtomicAutomata.scala 77:24]
+  reg [29:0] cam_a_0_bits_address; // @[AtomicAutomata.scala 77:24]
+  reg [7:0] cam_a_0_bits_mask; // @[AtomicAutomata.scala 77:24]
+  reg [63: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 [63: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 [1:0] indexes_32 = {cam_a_0_bits_data[32],cam_d_0_data[32]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_33 = {cam_a_0_bits_data[33],cam_d_0_data[33]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_34 = {cam_a_0_bits_data[34],cam_d_0_data[34]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_35 = {cam_a_0_bits_data[35],cam_d_0_data[35]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_36 = {cam_a_0_bits_data[36],cam_d_0_data[36]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_37 = {cam_a_0_bits_data[37],cam_d_0_data[37]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_38 = {cam_a_0_bits_data[38],cam_d_0_data[38]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_39 = {cam_a_0_bits_data[39],cam_d_0_data[39]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_40 = {cam_a_0_bits_data[40],cam_d_0_data[40]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_41 = {cam_a_0_bits_data[41],cam_d_0_data[41]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_42 = {cam_a_0_bits_data[42],cam_d_0_data[42]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_43 = {cam_a_0_bits_data[43],cam_d_0_data[43]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_44 = {cam_a_0_bits_data[44],cam_d_0_data[44]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_45 = {cam_a_0_bits_data[45],cam_d_0_data[45]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_46 = {cam_a_0_bits_data[46],cam_d_0_data[46]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_47 = {cam_a_0_bits_data[47],cam_d_0_data[47]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_48 = {cam_a_0_bits_data[48],cam_d_0_data[48]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_49 = {cam_a_0_bits_data[49],cam_d_0_data[49]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_50 = {cam_a_0_bits_data[50],cam_d_0_data[50]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_51 = {cam_a_0_bits_data[51],cam_d_0_data[51]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_52 = {cam_a_0_bits_data[52],cam_d_0_data[52]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_53 = {cam_a_0_bits_data[53],cam_d_0_data[53]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_54 = {cam_a_0_bits_data[54],cam_d_0_data[54]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_55 = {cam_a_0_bits_data[55],cam_d_0_data[55]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_56 = {cam_a_0_bits_data[56],cam_d_0_data[56]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_57 = {cam_a_0_bits_data[57],cam_d_0_data[57]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_58 = {cam_a_0_bits_data[58],cam_d_0_data[58]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_59 = {cam_a_0_bits_data[59],cam_d_0_data[59]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_60 = {cam_a_0_bits_data[60],cam_d_0_data[60]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_61 = {cam_a_0_bits_data[61],cam_d_0_data[61]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_62 = {cam_a_0_bits_data[62],cam_d_0_data[62]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_63 = {cam_a_0_bits_data[63],cam_d_0_data[63]}; // @[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 [3:0] _logic_out_T_64 = cam_a_0_lut >> indexes_32; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_66 = cam_a_0_lut >> indexes_33; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_68 = cam_a_0_lut >> indexes_34; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_70 = cam_a_0_lut >> indexes_35; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_72 = cam_a_0_lut >> indexes_36; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_74 = cam_a_0_lut >> indexes_37; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_76 = cam_a_0_lut >> indexes_38; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_78 = cam_a_0_lut >> indexes_39; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_80 = cam_a_0_lut >> indexes_40; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_82 = cam_a_0_lut >> indexes_41; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_84 = cam_a_0_lut >> indexes_42; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_86 = cam_a_0_lut >> indexes_43; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_88 = cam_a_0_lut >> indexes_44; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_90 = cam_a_0_lut >> indexes_45; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_92 = cam_a_0_lut >> indexes_46; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_94 = cam_a_0_lut >> indexes_47; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_96 = cam_a_0_lut >> indexes_48; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_98 = cam_a_0_lut >> indexes_49; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_100 = cam_a_0_lut >> indexes_50; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_102 = cam_a_0_lut >> indexes_51; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_104 = cam_a_0_lut >> indexes_52; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_106 = cam_a_0_lut >> indexes_53; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_108 = cam_a_0_lut >> indexes_54; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_110 = cam_a_0_lut >> indexes_55; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_112 = cam_a_0_lut >> indexes_56; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_114 = cam_a_0_lut >> indexes_57; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_116 = cam_a_0_lut >> indexes_58; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_118 = cam_a_0_lut >> indexes_59; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_120 = cam_a_0_lut >> indexes_60; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_122 = cam_a_0_lut >> indexes_61; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_124 = cam_a_0_lut >> indexes_62; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_126 = cam_a_0_lut >> indexes_63; // @[AtomicAutomata.scala 114:57]
+  wire [7:0] logic_out_lo_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_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_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_lo_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_lo = {_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_lo_hi_lo,logic_out_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_hi_lo_lo = {_logic_out_T_78[0],_logic_out_T_76[0],_logic_out_T_74[0],_logic_out_T_72[0],
+    _logic_out_T_70[0],_logic_out_T_68[0],_logic_out_T_66[0],_logic_out_T_64[0]}; // @[Cat.scala 31:58]
+  wire [15:0] logic_out_hi_lo = {_logic_out_T_94[0],_logic_out_T_92[0],_logic_out_T_90[0],_logic_out_T_88[0],
+    _logic_out_T_86[0],_logic_out_T_84[0],_logic_out_T_82[0],_logic_out_T_80[0],logic_out_hi_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_hi_hi_lo = {_logic_out_T_110[0],_logic_out_T_108[0],_logic_out_T_106[0],_logic_out_T_104[0],
+    _logic_out_T_102[0],_logic_out_T_100[0],_logic_out_T_98[0],_logic_out_T_96[0]}; // @[Cat.scala 31:58]
+  wire [31:0] logic_out_hi = {_logic_out_T_126[0],_logic_out_T_124[0],_logic_out_T_122[0],_logic_out_T_120[0],
+    _logic_out_T_118[0],_logic_out_T_116[0],_logic_out_T_114[0],_logic_out_T_112[0],logic_out_hi_hi_lo,logic_out_hi_lo}; // @[Cat.scala 31:58]
+  wire [63:0] logic_out = {logic_out_hi,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 [7:0] _signSel_T = ~cam_a_0_bits_mask; // @[AtomicAutomata.scala 121:25]
+  wire [7:0] _GEN_39 = {{1'd0}, cam_a_0_bits_mask[7:1]}; // @[AtomicAutomata.scala 121:31]
+  wire [7:0] _signSel_T_2 = _signSel_T | _GEN_39; // @[AtomicAutomata.scala 121:31]
+  wire [7:0] signSel = ~_signSel_T_2; // @[AtomicAutomata.scala 121:23]
+  wire [7:0] signbits_a = {cam_a_0_bits_data[63],cam_a_0_bits_data[55],cam_a_0_bits_data[47],cam_a_0_bits_data[39],
+    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 [7:0] signbits_d = {cam_d_0_data[63],cam_d_0_data[55],cam_d_0_data[47],cam_d_0_data[39],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 [7:0] _signbit_a_T = signbits_a & signSel; // @[AtomicAutomata.scala 125:38]
+  wire [8:0] _signbit_a_T_1 = {_signbit_a_T, 1'h0}; // @[AtomicAutomata.scala 125:49]
+  wire [7:0] signbit_a = _signbit_a_T_1[7:0]; // @[AtomicAutomata.scala 125:54]
+  wire [7:0] _signbit_d_T = signbits_d & signSel; // @[AtomicAutomata.scala 126:38]
+  wire [8:0] _signbit_d_T_1 = {_signbit_d_T, 1'h0}; // @[AtomicAutomata.scala 126:49]
+  wire [7:0] signbit_d = _signbit_d_T_1[7:0]; // @[AtomicAutomata.scala 126:54]
+  wire [8:0] _signext_a_T = {signbit_a, 1'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_a_T_2 = signbit_a | _signext_a_T[7:0]; // @[package.scala 244:43]
+  wire [9:0] _signext_a_T_3 = {_signext_a_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_a_T_5 = _signext_a_T_2 | _signext_a_T_3[7:0]; // @[package.scala 244:43]
+  wire [11:0] _signext_a_T_6 = {_signext_a_T_5, 4'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_a_T_8 = _signext_a_T_5 | _signext_a_T_6[7:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_a_T_19 = _signext_a_T_8[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_21 = _signext_a_T_8[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_23 = _signext_a_T_8[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_25 = _signext_a_T_8[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_27 = _signext_a_T_8[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_29 = _signext_a_T_8[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_31 = _signext_a_T_8[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_33 = _signext_a_T_8[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] signext_a = {_signext_a_T_33,_signext_a_T_31,_signext_a_T_29,_signext_a_T_27,_signext_a_T_25,
+    _signext_a_T_23,_signext_a_T_21,_signext_a_T_19}; // @[Cat.scala 31:58]
+  wire [8:0] _signext_d_T = {signbit_d, 1'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_d_T_2 = signbit_d | _signext_d_T[7:0]; // @[package.scala 244:43]
+  wire [9:0] _signext_d_T_3 = {_signext_d_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_d_T_5 = _signext_d_T_2 | _signext_d_T_3[7:0]; // @[package.scala 244:43]
+  wire [11:0] _signext_d_T_6 = {_signext_d_T_5, 4'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_d_T_8 = _signext_d_T_5 | _signext_d_T_6[7:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_d_T_19 = _signext_d_T_8[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_21 = _signext_d_T_8[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_23 = _signext_d_T_8[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_25 = _signext_d_T_8[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_27 = _signext_d_T_8[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_29 = _signext_d_T_8[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_31 = _signext_d_T_8[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_33 = _signext_d_T_8[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] signext_d = {_signext_d_T_33,_signext_d_T_31,_signext_d_T_29,_signext_d_T_27,_signext_d_T_25,
+    _signext_d_T_23,_signext_d_T_21,_signext_d_T_19}; // @[Cat.scala 31:58]
+  wire [7:0] _wide_mask_T_9 = cam_a_0_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_11 = cam_a_0_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_13 = cam_a_0_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_15 = cam_a_0_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_17 = cam_a_0_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_19 = cam_a_0_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_21 = cam_a_0_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_23 = cam_a_0_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] wide_mask = {_wide_mask_T_23,_wide_mask_T_21,_wide_mask_T_19,_wide_mask_T_17,_wide_mask_T_15,
+    _wide_mask_T_13,_wide_mask_T_11,_wide_mask_T_9}; // @[Cat.scala 31:58]
+  wire [63:0] _a_a_ext_T = cam_a_0_bits_data & wide_mask; // @[AtomicAutomata.scala 131:28]
+  wire [63:0] a_a_ext = _a_a_ext_T | signext_a; // @[AtomicAutomata.scala 131:41]
+  wire [63:0] _a_d_ext_T = cam_d_0_data & wide_mask; // @[AtomicAutomata.scala 132:28]
+  wire [63:0] a_d_ext = _a_d_ext_T | signext_d; // @[AtomicAutomata.scala 132:41]
+  wire [63:0] _a_d_inv_T = ~a_d_ext; // @[AtomicAutomata.scala 133:43]
+  wire [63:0] a_d_inv = adder ? a_d_ext : _a_d_inv_T; // @[AtomicAutomata.scala 133:26]
+  wire [63:0] adder_out = a_a_ext + a_d_inv; // @[AtomicAutomata.scala 134:33]
+  wire  a_bigger_uneq = unsigned_ == a_a_ext[63]; // @[AtomicAutomata.scala 136:38]
+  wire  a_bigger = a_a_ext[63] == a_d_ext[63] ? ~adder_out[63] : a_bigger_uneq; // @[AtomicAutomata.scala 137:27]
+  wire  pick_a = take_max == a_bigger; // @[AtomicAutomata.scala 138:31]
+  wire [63:0] _arith_out_T = pick_a ? cam_a_0_bits_data : cam_d_0_data; // @[AtomicAutomata.scala 139:50]
+  wire [63:0] arith_out = adder ? adder_out : _arith_out_T; // @[AtomicAutomata.scala 139:28]
+  wire [63: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 [2:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 3'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 [1:0] source_c_bits_a_mask_sizeOH_shiftAmount = cam_a_0_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _source_c_bits_a_mask_sizeOH_T_1 = 4'h1 << source_c_bits_a_mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] source_c_bits_a_mask_sizeOH = _source_c_bits_a_mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _source_c_bits_a_mask_T = cam_a_0_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  source_c_bits_a_mask_size = source_c_bits_a_mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit = cam_a_0_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit_1 = cam_a_0_bits_address[1]; // @[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  source_c_bits_a_mask_size_2 = source_c_bits_a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit_2 = cam_a_0_bits_address[0]; // @[Misc.scala 209:26]
+  wire  source_c_bits_a_mask_nbit_2 = ~source_c_bits_a_mask_bit_2; // @[Misc.scala 210:20]
+  wire  source_c_bits_a_mask_eq_6 = source_c_bits_a_mask_eq_2 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_6 = source_c_bits_a_mask_acc_2 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_6; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_7 = source_c_bits_a_mask_eq_2 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_7 = source_c_bits_a_mask_acc_2 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_7; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_8 = source_c_bits_a_mask_eq_3 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_8 = source_c_bits_a_mask_acc_3 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_8; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_9 = source_c_bits_a_mask_eq_3 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_9 = source_c_bits_a_mask_acc_3 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_9; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_10 = source_c_bits_a_mask_eq_4 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_10 = source_c_bits_a_mask_acc_4 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_10; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_11 = source_c_bits_a_mask_eq_4 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_11 = source_c_bits_a_mask_acc_4 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_11; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_12 = source_c_bits_a_mask_eq_5 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_12 = source_c_bits_a_mask_acc_5 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_12; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_13 = source_c_bits_a_mask_eq_5 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_13 = source_c_bits_a_mask_acc_5 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] source_c_bits_a_mask = {source_c_bits_a_mask_acc_13,source_c_bits_a_mask_acc_12,source_c_bits_a_mask_acc_11
+    ,source_c_bits_a_mask_acc_10,source_c_bits_a_mask_acc_9,source_c_bits_a_mask_acc_8,source_c_bits_a_mask_acc_7,
+    source_c_bits_a_mask_acc_6}; // @[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 [2:0] decode = _decode_T_3[5:3]; // @[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 [2:0] _GEN_40 = {{2'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [2: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 [63:0] _T_29 = muxStateEarly_0 ? amo_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_30 = muxStateEarly_1 ? auto_in_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_32 = muxStateEarly_0 ? source_c_bits_a_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_33 = muxStateEarly_1 ? auto_in_a_bits_mask : 8'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 [2:0] _T_38 = muxStateEarly_0 ? cam_a_0_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_39 = muxStateEarly_1 ? auto_in_a_bits_source : 3'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 [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first = d_first_counter == 3'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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'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_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_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 <= 3'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 <= 3'h0;
+        end
+      end else begin
+        beatsLeft <= 3'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 <= 3'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 <= 3'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[2: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[7:0];
+  _RAND_7 = {2{`RANDOM}};
+  cam_a_0_bits_data = _RAND_7[63: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 = {2{`RANDOM}};
+  cam_d_0_data = _RAND_10[63: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[2: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[2:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h4000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_61 = io_in_a_bits_address ^ 30'h20000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_64 = $signed(_T_62) & -31'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_66 = io_in_a_bits_address ^ 30'h10000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_69 = $signed(_T_67) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_71 = io_in_a_bits_address ^ 30'h10010000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_74 = $signed(_T_72) & -31'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_76 = io_in_a_bits_address ^ 30'h10014000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_79 = $signed(_T_77) & -31'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 31'sh0; // @[Parameters.scala 137:67]
+  wire [29:0] _T_81 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_84 = $signed(_T_82) & -31'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_90 = _T_60 | _T_65 | _T_70 | _T_75 | _T_80 | _T_85; // @[Parameters.scala 671:42]
+  wire  _T_152 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_156 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_157 = _T_156 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_161 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_165 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_279 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_292 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_309 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_347 = _T_309 & _T_90; // @[Parameters.scala 670:56]
+  wire  _T_358 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_362 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_370 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_409 = _T_60 | _T_70 | _T_75 | _T_80; // @[Parameters.scala 671:42]
+  wire  _T_410 = _T_309 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_426 = source_ok & _T_410; // @[Monitor.scala 115:71]
+  wire  _T_444 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_514 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_515 = io_in_a_bits_mask & _T_514; // @[Monitor.scala 127:31]
+  wire  _T_516 = _T_515 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_520 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_534 = io_in_a_bits_size <= 3'h3; // @[Parameters.scala 92:42]
+  wire  _T_560 = _T_534 & _T_409; // @[Parameters.scala 670:56]
+  wire  _T_576 = source_ok & _T_560; // @[Monitor.scala 131:74]
+  wire  _T_586 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_594 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_660 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_668 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_729 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_741 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_745 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_749 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_753 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_757 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_761 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_765 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_776 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_780 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_793 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_813 = _T_761 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_822 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_839 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_857 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_887 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_888 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_892 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_896 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_900 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_904 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_911 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_912 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_916 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_920 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_924 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_928 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_932 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_938 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_941 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_943 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_945 = ~_T_943[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_949 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_951 = ~_T_745; // @[Monitor.scala 671:74]
+  wire  _T_952 = io_in_d_valid & d_first_1 & ~_T_745; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_745 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_951 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_951 ? _d_opcodes_clr_T_5 : 79'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_938 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_962 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_964 = _T_962[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_969 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_970 = io_in_d_bits_opcode == _GEN_32 | _T_969; // @[Monitor.scala 685:77]
+  wire  _T_974 = 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_981 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_982 = io_in_d_bits_opcode == _GEN_48 | _T_981; // @[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_986 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_996 = _T_949 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_951; // @[Monitor.scala 694:116]
+  wire  _T_998 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_1005 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_1014 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1040 = io_in_d_valid & d_first_2 & _T_745; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_745 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_745 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_1048 = 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_1058 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_1083 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_152 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_152) 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_157 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_161) 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_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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 (io_in_a_valid & _T_165 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset) 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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~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_152 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_152) 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_279 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_279) 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_157 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_157) 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_161 & (io_in_a_valid & _T_165 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_165 & ~reset & ~_T_161) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_347 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_347) 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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~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_358 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_292 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_292 & ~reset & ~_T_161) 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_426 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_426) 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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~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_358 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_358) 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_362 & (io_in_a_valid & _T_370 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_370 & ~reset & ~_T_362) 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_426 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_426) 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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~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_358 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_358) 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_516 & (io_in_a_valid & _T_444 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_444 & ~reset & ~_T_516) 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_576 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_576) 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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~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_586 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_586) 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_362 & (io_in_a_valid & _T_520 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_520 & ~reset & ~_T_362) 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_576 & (io_in_a_valid & _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 (io_in_a_valid & _T_594 & ~reset & ~_T_576) 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_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 (io_in_a_valid & _T_594 & ~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_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 (io_in_a_valid & _T_594 & ~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_660 & (io_in_a_valid & _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 (io_in_a_valid & _T_594 & ~reset & ~_T_660) 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_362 & (io_in_a_valid & _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 (io_in_a_valid & _T_594 & ~reset & ~_T_362) 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_668 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~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_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~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_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~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_729 & (io_in_a_valid & _T_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~reset & ~_T_729) 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_362 & (io_in_a_valid & _T_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~reset & ~_T_362) 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_161 & (io_in_a_valid & _T_668 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_668 & ~reset & ~_T_161) 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_741 & (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_741) 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_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _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_749 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_749) 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_753 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_753) 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_757 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_745 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_745 & _T_2 & ~_T_761) 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_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _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_765 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _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_749 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_749) 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_776 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_776) 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_780 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_780) 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_757 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_765 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_765 & _T_2 & ~_T_761) 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_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _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_793 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _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_749 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_749) 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_776 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_776) 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_780 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_780) 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_813 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_813) 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_761 & (io_in_d_valid & _T_793 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_793 & _T_2 & ~_T_761) 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_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _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_753 & (io_in_d_valid & _T_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _T_2 & ~_T_753) 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_757 & (io_in_d_valid & _T_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_822 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_822 & _T_2 & ~_T_761) 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_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _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_753 & (io_in_d_valid & _T_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _T_2 & ~_T_753) 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_813 & (io_in_d_valid & _T_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _T_2 & ~_T_813) 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_761 & (io_in_d_valid & _T_839 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_839 & _T_2 & ~_T_761) 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_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _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_753 & (io_in_d_valid & _T_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _T_2 & ~_T_753) 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_757 & (io_in_d_valid & _T_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _T_2 & ~_T_757) 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_761 & (io_in_d_valid & _T_857 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_857 & _T_2 & ~_T_761) 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_888 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_888) 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_892 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_892) 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_896 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_896) 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_900 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_900) 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_904 & (_T_887 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_887 & ~reset & ~_T_904) 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_912 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_912) 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_916 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_916) 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_920 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_920) 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_924 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_924) 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_928 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_928) 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_932 & (_T_911 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_911 & _T_2 & ~_T_932) 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_945 & (_T_941 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_941 & ~reset & ~_T_945) 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_964 & (_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 (_T_952 & _T_2 & ~_T_964) 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_970 & (_T_952 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & same_cycle_resp & _T_2 & ~_T_970) 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_974 & (_T_952 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & same_cycle_resp & _T_2 & ~_T_974) 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_982 & (_T_952 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & ~same_cycle_resp & _T_2 & ~_T_982) 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_986 & (_T_952 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_952 & ~same_cycle_resp & _T_2 & ~_T_986) 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_998 & (_T_996 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_996 & _T_2 & ~_T_998) 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_1005 & _T_2) begin
+          $fatal; // @[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_1005) 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_1014 & ~reset) begin
+          $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_1014) 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_1048[0] & (_T_1040 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1040 & _T_2 & ~_T_1048[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_1058 & (_T_1040 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1040 & _T_2 & ~_T_1058) 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_1083 & ~reset) begin
+          $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_1083) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [2: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 [7: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 [2: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 [2: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 [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2: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 [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2: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 [63: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 [2: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 [63: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_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_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_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  [2:0]  io_in_a_bits_source,
+  input  [14:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [14:0] _GEN_71 = {{9'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [14:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 15'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [14:0] _T_56 = io_in_a_bits_address ^ 15'h4000; // @[Parameters.scala 137:31]
+  wire [15:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [15:0] _T_59 = $signed(_T_57) & -16'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 16'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [14:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_244 & (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_244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 PutPartial carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 PutPartial address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (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_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_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_302) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_376 & (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_376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (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_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_427 & (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_427) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_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_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (_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_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (_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_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_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_684) 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 & ~reset) begin
+          $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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_757 & ~reset) begin
+          $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_757) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusWrapper.scala:264:51)\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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[14:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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  [2:0]  io_enq_bits_source,
+  input  [14:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [14:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [14:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[14:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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  [2:0]  auto_in_a_bits_source,
+  input  [14:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [14:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [14:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [14:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [14:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [14:0] _GEN_11 = {{9'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [3: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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 TLBuffer_3(
+  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  [2:0]  auto_in_a_bits_source,
+  input  [14:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [14:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input  [63: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 TLInterconnectCoupler_5(
+  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  [2:0]  auto_buffer_in_a_bits_size,
+  input  [2:0]  auto_buffer_in_a_bits_source,
+  input  [14:0] auto_buffer_in_a_bits_address,
+  input  [7:0]  auto_buffer_in_a_bits_mask,
+  input  [63:0] auto_buffer_in_a_bits_data,
+  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 [2:0]  auto_buffer_in_d_bits_size,
+  output [2:0]  auto_buffer_in_d_bits_source,
+  output [63:0] auto_buffer_in_d_bits_data,
+  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 [14:0] auto_fragmenter_out_a_bits_address,
+  output [7:0]  auto_fragmenter_out_a_bits_mask,
+  output [63: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  [63:0] auto_fragmenter_out_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 [2:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [14:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [14:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  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 [2:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [14:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_auto_in_d_bits_size; // @[Buffer.scala 68:28]
+  wire [2:0] buffer_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [14:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  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)
+  );
+  TLBuffer_3 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)
+  );
+  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_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_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  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 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_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]
+  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_data = auto_buffer_in_a_bits_data; // @[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 = 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]
+endmodule
+module TLSourceShrinker_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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_6(
+  input         auto_tlserial_manager_crossing_out_a_ready,
+  output        auto_tlserial_manager_crossing_out_a_valid,
+  output [2:0]  auto_tlserial_manager_crossing_out_a_bits_opcode,
+  output [2:0]  auto_tlserial_manager_crossing_out_a_bits_param,
+  output [2:0]  auto_tlserial_manager_crossing_out_a_bits_size,
+  output [2:0]  auto_tlserial_manager_crossing_out_a_bits_source,
+  output [28:0] auto_tlserial_manager_crossing_out_a_bits_address,
+  output [7:0]  auto_tlserial_manager_crossing_out_a_bits_mask,
+  output [63:0] auto_tlserial_manager_crossing_out_a_bits_data,
+  output        auto_tlserial_manager_crossing_out_a_bits_corrupt,
+  output        auto_tlserial_manager_crossing_out_d_ready,
+  input         auto_tlserial_manager_crossing_out_d_valid,
+  input  [2:0]  auto_tlserial_manager_crossing_out_d_bits_opcode,
+  input  [1:0]  auto_tlserial_manager_crossing_out_d_bits_param,
+  input  [2:0]  auto_tlserial_manager_crossing_out_d_bits_size,
+  input  [2:0]  auto_tlserial_manager_crossing_out_d_bits_source,
+  input         auto_tlserial_manager_crossing_out_d_bits_sink,
+  input         auto_tlserial_manager_crossing_out_d_bits_denied,
+  input  [63:0] auto_tlserial_manager_crossing_out_d_bits_data,
+  input         auto_tlserial_manager_crossing_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  [2:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output        auto_tl_in_d_bits_sink,
+  output        auto_tl_in_d_bits_denied,
+  output [63:0] auto_tl_in_d_bits_data,
+  output        auto_tl_in_d_bits_corrupt
+);
+  wire  shrinker_auto_in_a_ready; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_a_valid; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_a_bits_opcode; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_a_bits_param; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_a_bits_size; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_a_bits_source; // @[SourceShrinker.scala 88:30]
+  wire [28:0] shrinker_auto_in_a_bits_address; // @[SourceShrinker.scala 88:30]
+  wire [7:0] shrinker_auto_in_a_bits_mask; // @[SourceShrinker.scala 88:30]
+  wire [63:0] shrinker_auto_in_a_bits_data; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_a_bits_corrupt; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_d_ready; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_d_valid; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_d_bits_opcode; // @[SourceShrinker.scala 88:30]
+  wire [1:0] shrinker_auto_in_d_bits_param; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_d_bits_size; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_in_d_bits_source; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_d_bits_sink; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_d_bits_denied; // @[SourceShrinker.scala 88:30]
+  wire [63:0] shrinker_auto_in_d_bits_data; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_in_d_bits_corrupt; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_a_ready; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_a_valid; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_a_bits_opcode; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_a_bits_param; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_a_bits_size; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_a_bits_source; // @[SourceShrinker.scala 88:30]
+  wire [28:0] shrinker_auto_out_a_bits_address; // @[SourceShrinker.scala 88:30]
+  wire [7:0] shrinker_auto_out_a_bits_mask; // @[SourceShrinker.scala 88:30]
+  wire [63:0] shrinker_auto_out_a_bits_data; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_a_bits_corrupt; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_d_ready; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_d_valid; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_d_bits_opcode; // @[SourceShrinker.scala 88:30]
+  wire [1:0] shrinker_auto_out_d_bits_param; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_d_bits_size; // @[SourceShrinker.scala 88:30]
+  wire [2:0] shrinker_auto_out_d_bits_source; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_d_bits_sink; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_d_bits_denied; // @[SourceShrinker.scala 88:30]
+  wire [63:0] shrinker_auto_out_d_bits_data; // @[SourceShrinker.scala 88:30]
+  wire  shrinker_auto_out_d_bits_corrupt; // @[SourceShrinker.scala 88:30]
+  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 [2:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [28:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [2: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 [63: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 [2:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [28:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [2: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 [63:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  TLSourceShrinker_1 shrinker ( // @[SourceShrinker.scala 88:30]
+    .auto_in_a_ready(shrinker_auto_in_a_ready),
+    .auto_in_a_valid(shrinker_auto_in_a_valid),
+    .auto_in_a_bits_opcode(shrinker_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(shrinker_auto_in_a_bits_param),
+    .auto_in_a_bits_size(shrinker_auto_in_a_bits_size),
+    .auto_in_a_bits_source(shrinker_auto_in_a_bits_source),
+    .auto_in_a_bits_address(shrinker_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(shrinker_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(shrinker_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(shrinker_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(shrinker_auto_in_d_ready),
+    .auto_in_d_valid(shrinker_auto_in_d_valid),
+    .auto_in_d_bits_opcode(shrinker_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(shrinker_auto_in_d_bits_param),
+    .auto_in_d_bits_size(shrinker_auto_in_d_bits_size),
+    .auto_in_d_bits_source(shrinker_auto_in_d_bits_source),
+    .auto_in_d_bits_sink(shrinker_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(shrinker_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(shrinker_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(shrinker_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(shrinker_auto_out_a_ready),
+    .auto_out_a_valid(shrinker_auto_out_a_valid),
+    .auto_out_a_bits_opcode(shrinker_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(shrinker_auto_out_a_bits_param),
+    .auto_out_a_bits_size(shrinker_auto_out_a_bits_size),
+    .auto_out_a_bits_source(shrinker_auto_out_a_bits_source),
+    .auto_out_a_bits_address(shrinker_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(shrinker_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(shrinker_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(shrinker_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(shrinker_auto_out_d_ready),
+    .auto_out_d_valid(shrinker_auto_out_d_valid),
+    .auto_out_d_bits_opcode(shrinker_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(shrinker_auto_out_d_bits_param),
+    .auto_out_d_bits_size(shrinker_auto_out_d_bits_size),
+    .auto_out_d_bits_source(shrinker_auto_out_d_bits_source),
+    .auto_out_d_bits_sink(shrinker_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(shrinker_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(shrinker_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(shrinker_auto_out_d_bits_corrupt)
+  );
+  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_tlserial_manager_crossing_out_a_valid = shrinker_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_opcode = shrinker_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_param = shrinker_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_size = shrinker_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_source = shrinker_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_address = shrinker_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_mask = shrinker_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_data = shrinker_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_a_bits_corrupt = shrinker_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tlserial_manager_crossing_out_d_ready = shrinker_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 shrinker_auto_in_a_valid = widget_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_opcode = widget_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_param = widget_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_size = widget_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_source = widget_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_address = widget_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_mask = widget_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_data = widget_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_a_bits_corrupt = widget_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_in_d_ready = widget_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign shrinker_auto_out_a_ready = auto_tlserial_manager_crossing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_valid = auto_tlserial_manager_crossing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_opcode = auto_tlserial_manager_crossing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_param = auto_tlserial_manager_crossing_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_size = auto_tlserial_manager_crossing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_source = auto_tlserial_manager_crossing_out_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_sink = auto_tlserial_manager_crossing_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_denied = auto_tlserial_manager_crossing_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_data = auto_tlserial_manager_crossing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign shrinker_auto_out_d_bits_corrupt = auto_tlserial_manager_crossing_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  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 = shrinker_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_valid = shrinker_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_opcode = shrinker_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_param = shrinker_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_size = shrinker_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_source = shrinker_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_sink = shrinker_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_denied = shrinker_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_data = shrinker_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign widget_auto_out_d_bits_corrupt = shrinker_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h10010000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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_1(
+  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  [2:0]  io_enq_bits_source,
+  input  [28:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [28:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [28:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_1 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 [7:0]  auto_control_xing_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h10011000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 UART.scala:268:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_1 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 [7:0]  auto_control_xing_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h10012000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 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_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 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_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 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_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 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_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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_1 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 [7:0]  auto_control_xing_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h10013000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 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_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 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_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 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_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 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_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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_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_1 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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_10(
+  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 [7:0]  auto_control_xing_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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  [2: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh10000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19: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 [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 <= 5'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 <= 20'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 <= 20'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & _T_96) 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_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 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_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 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_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 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_208 & (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_208) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_96 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & _T_96) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_96 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & _T_96) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_96 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_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: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[2: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[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19: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_5(
+  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  [2: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 [2: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 [2: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[2: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_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  [2: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 [2: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 [9: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  [9: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 [2: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 [2: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 [2: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 [2: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 [3: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_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)
+  );
+  Repeater_5 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[9: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[9: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_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  [2: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh10000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19: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 [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_685 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_694 = ~(|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 <= 5'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 <= 20'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 <= 20'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & _T_96) 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_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 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_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 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_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 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_208 & (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_208) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_96 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & _T_96) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_96 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & _T_96) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_96 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_685 & _T_2) begin
+          $fatal; // @[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_685) 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_694 & ~reset) begin
+          $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_694) 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[2: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[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19: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  [2: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 [2: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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[2: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_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  [2: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 [2: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 [2: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  [2: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 [2: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 [2: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 [2: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 [2: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_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)
+  );
+  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_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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h20000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh10000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_294 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_295 = io_in_a_bits_mask & _T_294; // @[Monitor.scala 127:31]
+  wire  _T_296 = _T_295 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_685 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_694 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_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 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_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 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_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 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_208 & (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_208) 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_296 & (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_296) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_212 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_212) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_212 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_212) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_212 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_685 & _T_2) begin
+          $fatal; // @[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_685) 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_694 & ~reset) begin
+          $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_694) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[2:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[2: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(
+  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  [2:0]  io_enq_bits_source,
+  input  [29:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [29:0] io_deq_bits_address,
+  output [7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [2: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  [2: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;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+`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 [2: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 [7: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 [2: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 [2: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 [7: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 [2: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 [7: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 [2:0] repeat_sel = cated_bits_address[2:0]; // @[WidthWidget.scala 110:39]
+  wire [7: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  repeat_bundleOut_0_a_bits_mask_mux_4 = cated_bits_mask[4]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_5 = cated_bits_mask[5]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_6 = cated_bits_mask[6]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_7 = cated_bits_mask[7]; // @[WidthWidget.scala 122:55]
+  wire  _GEN_3 = 3'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 = 3'h2 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_2 : _GEN_3; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_5 = 3'h3 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_3 : _GEN_4; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_6 = 3'h4 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_4 : _GEN_5; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_7 = 3'h5 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_5 : _GEN_6; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_8 = 3'h6 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_6 : _GEN_7; // @[WidthWidget.scala 134:{53,53}]
+  wire [9:0] _limit_T_1 = 10'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] limit = ~_limit_T_1[2:0]; // @[package.scala 234:46]
+  reg [2:0] count; // @[WidthWidget.scala 34:27]
+  wire  last = count == limit; // @[WidthWidget.scala 36:26]
+  wire [2:0] _enable_T_1 = count & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_0 = ~(|_enable_T_1); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_3 = count ^ 3'h1; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_4 = _enable_T_3 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_1 = ~(|_enable_T_4); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_6 = count ^ 3'h2; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_7 = _enable_T_6 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_2 = ~(|_enable_T_7); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_9 = count ^ 3'h3; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_10 = _enable_T_9 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_3 = ~(|_enable_T_10); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_12 = count ^ 3'h4; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_13 = _enable_T_12 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_4 = ~(|_enable_T_13); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_15 = count ^ 3'h5; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_16 = _enable_T_15 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_5 = ~(|_enable_T_16); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_18 = count ^ 3'h6; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_19 = _enable_T_18 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_6 = ~(|_enable_T_19); // @[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 [2:0] _count_T_1 = count + 3'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]
+  wire  bundleIn_0_d_bits_data_masked_enable_3 = enable_3 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_4 = enable_4 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_5 = enable_5 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_6 = enable_6 | ~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]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_3; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_4; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_5; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_6; // @[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 [7:0] bundleIn_0_d_bits_data_mdata_3 = bundleIn_0_d_bits_data_masked_enable_3 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_3; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_4 = bundleIn_0_d_bits_data_masked_enable_4 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_4; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_5 = bundleIn_0_d_bits_data_masked_enable_5 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_5; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_6 = bundleIn_0_d_bits_data_masked_enable_6 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_6; // @[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 [31:0] bundleIn_0_d_bits_data_lo = {bundleIn_0_d_bits_data_mdata_3,bundleIn_0_d_bits_data_mdata_2,
+    bundleIn_0_d_bits_data_mdata_1,bundleIn_0_d_bits_data_mdata_0}; // @[Cat.scala 31:58]
+  wire [31:0] bundleIn_0_d_bits_data_hi = {auto_out_d_bits_data,bundleIn_0_d_bits_data_mdata_6,
+    bundleIn_0_d_bits_data_mdata_5,bundleIn_0_d_bits_data_mdata_4}; // @[Cat.scala 31:58]
+  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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_6 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 = 3'h7 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_7 : _GEN_8; // @[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 <= 3'h0; // @[WidthWidget.scala 34:27]
+    end else if (_T) begin // @[WidthWidget.scala 43:24]
+      if (last) begin // @[WidthWidget.scala 46:21]
+        count <= 3'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
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_3) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_3 <= 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_4) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_4 <= 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_5) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_5 <= 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_6) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_6 <= 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[2: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];
+  _RAND_5 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_3 = _RAND_5[7:0];
+  _RAND_6 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_4 = _RAND_6[7:0];
+  _RAND_7 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_5 = _RAND_7[7:0];
+  _RAND_8 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_6 = _RAND_8[7: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_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 [9: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  [9: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [29:0] auto_tl_in_a_bits_address,
+  input  [7: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [2: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 [9: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 [9: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 [2: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 [2: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 [2: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 [2: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 [2: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 [7: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 [2:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [63: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 [2: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 [2: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_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_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_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_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_5 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_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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h10014000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 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_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 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_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 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_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 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_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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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_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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [28:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_1 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 [7:0]  auto_control_xing_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [28:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  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_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  [2: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h30000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh10000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19: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 [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 <= 5'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 <= 20'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 <= 20'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & _T_96) 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_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 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_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 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_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 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_208 & (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_208) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_96 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & _T_96) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_96 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & _T_96) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_96 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_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: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[2: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[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19: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 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  [2: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 [2: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 [9: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  [9: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 [2: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 [2: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 [2: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 [2: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 [3: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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_5 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[9: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[9: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_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  [2: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h30000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh10000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire  _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = ~(~io_in_a_bits_mask); // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19: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 [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_685 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_694 = ~(|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 <= 5'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 <= 20'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 <= 20'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_96 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & _T_96) 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_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 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_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 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_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 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_208 & (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_208) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_96 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & _T_96) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_96 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & _T_96) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_96 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & _T_96) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_685 & _T_2) begin
+          $fatal; // @[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_685) 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_694 & ~reset) begin
+          $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_694) 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[2: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[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19: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 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  [2:0]  auto_in_a_bits_size,
+  input  [2: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 [2: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 [2: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  [2: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 [2: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 [2: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 [2: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 [2: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_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_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_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  [2:0]  io_in_a_bits_source,
+  input  [29:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [29:0] _T_56 = io_in_a_bits_address ^ 30'h30000000; // @[Parameters.scala 137:31]
+  wire [30:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [30:0] _T_59 = $signed(_T_57) & -31'sh10000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 31'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_294 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_295 = io_in_a_bits_mask & _T_294; // @[Monitor.scala 127:31]
+  wire  _T_296 = _T_295 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [29:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_685 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_694 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_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 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_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 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_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 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_208 & (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_208) 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_296 & (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_296) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_212 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_212) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_212 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_212) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_212 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_685 & _T_2) begin
+          $fatal; // @[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_685) 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_694 & ~reset) begin
+          $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_694) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[29:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[2:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[2: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 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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [2: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  [2: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;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+`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 [2: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 [7: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 [2: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 [2: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 [7: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 [2: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 [7: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 [2:0] repeat_sel = cated_bits_address[2:0]; // @[WidthWidget.scala 110:39]
+  wire [7: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  repeat_bundleOut_0_a_bits_mask_mux_4 = cated_bits_mask[4]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_5 = cated_bits_mask[5]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_6 = cated_bits_mask[6]; // @[WidthWidget.scala 122:55]
+  wire  repeat_bundleOut_0_a_bits_mask_mux_7 = cated_bits_mask[7]; // @[WidthWidget.scala 122:55]
+  wire  _GEN_3 = 3'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 = 3'h2 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_2 : _GEN_3; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_5 = 3'h3 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_3 : _GEN_4; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_6 = 3'h4 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_4 : _GEN_5; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_7 = 3'h5 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_5 : _GEN_6; // @[WidthWidget.scala 134:{53,53}]
+  wire  _GEN_8 = 3'h6 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_6 : _GEN_7; // @[WidthWidget.scala 134:{53,53}]
+  wire [9:0] _limit_T_1 = 10'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] limit = ~_limit_T_1[2:0]; // @[package.scala 234:46]
+  reg [2:0] count; // @[WidthWidget.scala 34:27]
+  wire  last = count == limit; // @[WidthWidget.scala 36:26]
+  wire [2:0] _enable_T_1 = count & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_0 = ~(|_enable_T_1); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_3 = count ^ 3'h1; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_4 = _enable_T_3 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_1 = ~(|_enable_T_4); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_6 = count ^ 3'h2; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_7 = _enable_T_6 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_2 = ~(|_enable_T_7); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_9 = count ^ 3'h3; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_10 = _enable_T_9 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_3 = ~(|_enable_T_10); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_12 = count ^ 3'h4; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_13 = _enable_T_12 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_4 = ~(|_enable_T_13); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_15 = count ^ 3'h5; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_16 = _enable_T_15 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_5 = ~(|_enable_T_16); // @[WidthWidget.scala 37:47]
+  wire [2:0] _enable_T_18 = count ^ 3'h6; // @[WidthWidget.scala 37:56]
+  wire [2:0] _enable_T_19 = _enable_T_18 & limit; // @[WidthWidget.scala 37:63]
+  wire  enable_6 = ~(|_enable_T_19); // @[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 [2:0] _count_T_1 = count + 3'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]
+  wire  bundleIn_0_d_bits_data_masked_enable_3 = enable_3 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_4 = enable_4 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_5 = enable_5 | ~bundleIn_0_d_bits_data_rdata_written_once; // @[WidthWidget.scala 57:42]
+  wire  bundleIn_0_d_bits_data_masked_enable_6 = enable_6 | ~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]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_3; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_4; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_5; // @[WidthWidget.scala 60:24]
+  reg [7:0] bundleIn_0_d_bits_data_rdata_6; // @[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 [7:0] bundleIn_0_d_bits_data_mdata_3 = bundleIn_0_d_bits_data_masked_enable_3 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_3; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_4 = bundleIn_0_d_bits_data_masked_enable_4 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_4; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_5 = bundleIn_0_d_bits_data_masked_enable_5 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_5; // @[WidthWidget.scala 62:88]
+  wire [7:0] bundleIn_0_d_bits_data_mdata_6 = bundleIn_0_d_bits_data_masked_enable_6 ? auto_out_d_bits_data :
+    bundleIn_0_d_bits_data_rdata_6; // @[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 [31:0] bundleIn_0_d_bits_data_lo = {bundleIn_0_d_bits_data_mdata_3,bundleIn_0_d_bits_data_mdata_2,
+    bundleIn_0_d_bits_data_mdata_1,bundleIn_0_d_bits_data_mdata_0}; // @[Cat.scala 31:58]
+  wire [31:0] bundleIn_0_d_bits_data_hi = {auto_out_d_bits_data,bundleIn_0_d_bits_data_mdata_6,
+    bundleIn_0_d_bits_data_mdata_5,bundleIn_0_d_bits_data_mdata_4}; // @[Cat.scala 31:58]
+  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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_6 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 = 3'h7 == repeat_sel ? repeat_bundleOut_0_a_bits_mask_mux_7 : _GEN_8; // @[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 <= 3'h0; // @[WidthWidget.scala 34:27]
+    end else if (_T) begin // @[WidthWidget.scala 43:24]
+      if (last) begin // @[WidthWidget.scala 46:21]
+        count <= 3'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
+    if (_T & _bundleOut_0_d_ready_T) begin // @[WidthWidget.scala 63:35]
+      if (bundleIn_0_d_bits_data_masked_enable_3) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_3 <= 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_4) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_4 <= 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_5) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_5 <= 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_6) begin // @[WidthWidget.scala 62:88]
+        bundleIn_0_d_bits_data_rdata_6 <= 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[2: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];
+  _RAND_5 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_3 = _RAND_5[7:0];
+  _RAND_6 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_4 = _RAND_6[7:0];
+  _RAND_7 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_5 = _RAND_7[7:0];
+  _RAND_8 = {1{`RANDOM}};
+  bundleIn_0_d_bits_data_rdata_6 = _RAND_8[7: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_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 [9: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  [9: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [29:0] auto_tl_in_a_bits_address,
+  input  [7: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [2: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 [9: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 [9: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 [2: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 [2: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 [2: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 [2: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 [2: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 [7: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 [2:0] widget_auto_in_d_bits_source; // @[WidthWidget.scala 219:28]
+  wire [63: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 [2: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 [2: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_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_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_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_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_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_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_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  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [14:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [14:0] _GEN_71 = {{12'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [14:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 15'h0; // @[Edges.scala 20:24]
+  wire [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [14:0] _T_33 = io_in_a_bits_address ^ 15'h4000; // @[Parameters.scala 137:31]
+  wire [15:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [15:0] _T_36 = $signed(_T_34) & -16'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 16'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [14: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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_37 & (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_37) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\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[14: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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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 PeripheryBus(
+  input         auto_coupler_to_device_named_qspi_1_mem_xing_out_a_ready,
+  output        auto_coupler_to_device_named_qspi_1_mem_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_param,
+  output        auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_size,
+  output [9:0]  auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_source,
+  output [29:0] auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_address,
+  output        auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_mask,
+  output        auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_qspi_1_mem_xing_out_d_ready,
+  input         auto_coupler_to_device_named_qspi_1_mem_xing_out_d_valid,
+  input         auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_size,
+  input  [9:0]  auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_source,
+  input  [7:0]  auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_data,
+  input         auto_coupler_to_device_named_qspi_1_control_xing_out_a_ready,
+  output        auto_coupler_to_device_named_qspi_1_control_xing_out_a_valid,
+  output [2:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_param,
+  output [1:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_size,
+  output [6:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_source,
+  output [28:0] auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_address,
+  output [7:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_mask,
+  output [63:0] auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_data,
+  output        auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_corrupt,
+  output        auto_coupler_to_device_named_qspi_1_control_xing_out_d_ready,
+  input         auto_coupler_to_device_named_qspi_1_control_xing_out_d_valid,
+  input  [2:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_source,
+  input  [63:0] auto_coupler_to_device_named_qspi_1_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 [9: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  [9: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 [7:0]  auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask,
+  output [63: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  [63:0] auto_coupler_to_device_named_qspi_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 [7:0]  auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask,
+  output [63: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  [63:0] auto_coupler_to_device_named_gpio_0_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 [7:0]  auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask,
+  output [63: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  [63: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 [7:0]  auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask,
+  output [63: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  [63:0] auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data,
+  input         auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_ready,
+  output        auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_valid,
+  output [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_param,
+  output [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_size,
+  output [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_source,
+  output [28:0] auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_address,
+  output [7:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_mask,
+  output [63:0] auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_data,
+  output        auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_corrupt,
+  output        auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_ready,
+  input         auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_valid,
+  input  [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_param,
+  input  [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_size,
+  input  [2:0]  auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_source,
+  input         auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_sink,
+  input         auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_denied,
+  input  [63:0] auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_data,
+  input         auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_corrupt,
+  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  [2:0]  auto_bus_xing_in_a_bits_source,
+  input  [29:0] auto_bus_xing_in_a_bits_address,
+  input  [7:0]  auto_bus_xing_in_a_bits_mask,
+  input  [63: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 [2: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 [63:0] auto_bus_xing_in_d_bits_data,
+  output        auto_bus_xing_in_d_bits_corrupt,
+  output        clock,
+  output        reset
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [63:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  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_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 [2: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 [7:0] fixer_auto_in_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [63: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 [2:0] fixer_auto_in_d_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [2: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 [63: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 [2:0] fixer_auto_out_a_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [2: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 [7:0] fixer_auto_out_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [63: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 [2:0] fixer_auto_out_d_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [2: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 [63: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 [2:0] in_xbar_auto_in_a_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [2: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 [7:0] in_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] in_xbar_auto_out_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] out_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_in_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [2: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 [63: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_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 [2:0] out_xbar_auto_out_8_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [29:0] out_xbar_auto_out_8_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7:0] out_xbar_auto_out_8_a_bits_mask; // @[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_size; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_7_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_7_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7: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 [2:0] out_xbar_auto_out_6_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_5_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_5_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_4_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_4_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_3_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_3_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_2_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_2_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_1_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [63: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 [2:0] out_xbar_auto_out_0_a_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_0_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [14:0] out_xbar_auto_out_0_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7:0] out_xbar_auto_out_0_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_0_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [2: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 [63: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 [2:0] atomics_auto_in_a_bits_size; // @[AtomicAutomata.scala 283:29]
+  wire [2: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 [7:0] atomics_auto_in_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] atomics_auto_out_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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_slave_named_bootaddressreg_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [14:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [14:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  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 [7:0] coupler_to_device_named_uart_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_device_named_uart_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_device_named_uart_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63: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 [7:0] coupler_to_device_named_uart_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_device_named_uart_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_device_named_uart_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_uart_1_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 [7:0] coupler_to_device_named_gpio_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_device_named_gpio_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_device_named_gpio_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_gpio_0_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 [7:0] coupler_to_device_named_qspi_0_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_device_named_qspi_0_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_device_named_qspi_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63: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 [9: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 [9: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 [2: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 [7: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 [2:0] coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_qspi_0_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_control_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_control_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_control_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [28:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_qspi_1_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_qspi_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [9:0] coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [9:0] coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [29:0] coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_tl_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_device_named_qspi_1_1_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  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 [14:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  bundleIn_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  reg [63:0] bootAddrReg; // @[BootAddrReg.scala 34:32]
+  wire [7:0] oldBytes_0 = bootAddrReg[7:0]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_1 = bootAddrReg[15:8]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_2 = bootAddrReg[23:16]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_3 = bootAddrReg[31:24]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_4 = bootAddrReg[39:32]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_5 = bootAddrReg[47:40]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_6 = bootAddrReg[55:48]; // @[RegField.scala 151:53]
+  wire [7:0] oldBytes_7 = bootAddrReg[63:56]; // @[RegField.scala 151:53]
+  wire  bundleIn_0_2_a_valid = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [2:0] bundleIn_0_2_a_bits_opcode = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  in_bits_read = bundleIn_0_2_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [14:0] bundleIn_0_2_a_bits_address = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [8:0] in_bits_index = bundleIn_0_2_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire  bundleIn_0_2_d_ready = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire  out_woready_0 = bundleIn_0_2_a_valid & bundleIn_0_2_d_ready & ~in_bits_read & in_bits_index == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] bundleIn_0_2_a_bits_mask = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] _out_backMask_T_23 = bundleIn_0_2_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_21 = bundleIn_0_2_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_19 = bundleIn_0_2_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_17 = bundleIn_0_2_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_15 = bundleIn_0_2_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_13 = bundleIn_0_2_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_11 = bundleIn_0_2_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = bundleIn_0_2_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_backMask = {_out_backMask_T_23,_out_backMask_T_21,_out_backMask_T_19,_out_backMask_T_17,
+    _out_backMask_T_15,_out_backMask_T_13,_out_backMask_T_11,_out_backMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_womask = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready = out_woready_0 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_1 = &out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_1 = out_woready_0 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_2 = &out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_woready_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_3 = &out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_3 = out_woready_0 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_4 = &out_backMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready_0 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_5 = &out_backMask[47:40]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_5 = out_woready_0 & out_womask_5; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_6 = &out_backMask[55:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_6 = out_woready_0 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_7 = &out_backMask[63:56]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_7 = out_woready_0 & out_womask_7; // @[RegisterRouter.scala 83:24]
+  wire [63:0] bundleIn_0_2_a_bits_data = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  wire [7:0] newBytes_1 = out_f_woready_1 ? bundleIn_0_2_a_bits_data[15:8] : oldBytes_1; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_0 = out_f_woready ? bundleIn_0_2_a_bits_data[7:0] : oldBytes_0; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_3 = out_f_woready_3 ? bundleIn_0_2_a_bits_data[31:24] : oldBytes_3; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_2 = out_f_woready_2 ? bundleIn_0_2_a_bits_data[23:16] : oldBytes_2; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_5 = out_f_woready_5 ? bundleIn_0_2_a_bits_data[47:40] : oldBytes_5; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_4 = out_f_woready_4 ? bundleIn_0_2_a_bits_data[39:32] : oldBytes_4; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_7 = out_f_woready_7 ? bundleIn_0_2_a_bits_data[63:56] : oldBytes_7; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_6 = out_f_woready_6 ? bundleIn_0_2_a_bits_data[55:48] : oldBytes_6; // @[RegField.scala 158:{20,33}]
+  wire [63:0] _bootAddrReg_T = {newBytes_7,newBytes_6,newBytes_5,newBytes_4,newBytes_3,newBytes_2,newBytes_1,newBytes_0}
+    ; // @[RegField.scala 154:52]
+  wire [63:0] out_prepend_6 = {oldBytes_7,oldBytes_6,oldBytes_5,oldBytes_4,oldBytes_3,oldBytes_2,oldBytes_1,oldBytes_0}; // @[Cat.scala 31:58]
+  wire  bundleIn_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  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_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_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_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_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_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_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_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_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_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_1 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 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_2 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_5 coupler_to_slave_named_bootaddressreg ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_slave_named_bootaddressreg_clock),
+    .reset(coupler_to_slave_named_bootaddressreg_reset),
+    .auto_buffer_in_a_ready(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_ready),
+    .auto_buffer_in_a_valid(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_valid),
+    .auto_buffer_in_a_bits_opcode(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_opcode),
+    .auto_buffer_in_a_bits_param(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_param),
+    .auto_buffer_in_a_bits_size(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_size),
+    .auto_buffer_in_a_bits_source(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_source),
+    .auto_buffer_in_a_bits_address(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_address),
+    .auto_buffer_in_a_bits_mask(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_mask),
+    .auto_buffer_in_a_bits_data(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_data),
+    .auto_buffer_in_a_bits_corrupt(coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_corrupt),
+    .auto_buffer_in_d_ready(coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_ready),
+    .auto_buffer_in_d_valid(coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_valid),
+    .auto_buffer_in_d_bits_opcode(coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_opcode),
+    .auto_buffer_in_d_bits_size(coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_size),
+    .auto_buffer_in_d_bits_source(coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_source),
+    .auto_buffer_in_d_bits_data(coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_data),
+    .auto_fragmenter_out_a_ready(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_ready),
+    .auto_fragmenter_out_a_valid(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_valid),
+    .auto_fragmenter_out_a_bits_opcode(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_opcode),
+    .auto_fragmenter_out_a_bits_param(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_param),
+    .auto_fragmenter_out_a_bits_size(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_size),
+    .auto_fragmenter_out_a_bits_source(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_source),
+    .auto_fragmenter_out_a_bits_address(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_address),
+    .auto_fragmenter_out_a_bits_mask(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_mask),
+    .auto_fragmenter_out_a_bits_data(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_data),
+    .auto_fragmenter_out_a_bits_corrupt(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_corrupt),
+    .auto_fragmenter_out_d_ready(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_ready),
+    .auto_fragmenter_out_d_valid(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_valid),
+    .auto_fragmenter_out_d_bits_opcode(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_opcode),
+    .auto_fragmenter_out_d_bits_size(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_size),
+    .auto_fragmenter_out_d_bits_source(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_source),
+    .auto_fragmenter_out_d_bits_data(coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_data)
+  );
+  TLInterconnectCoupler_6 coupler_to_port_named_serial_tl_mem ( // @[LazyModule.scala 432:27]
+    .auto_tlserial_manager_crossing_out_a_ready(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_ready),
+    .auto_tlserial_manager_crossing_out_a_valid(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_valid),
+    .auto_tlserial_manager_crossing_out_a_bits_opcode(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_opcode),
+    .auto_tlserial_manager_crossing_out_a_bits_param(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_param),
+    .auto_tlserial_manager_crossing_out_a_bits_size(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_size),
+    .auto_tlserial_manager_crossing_out_a_bits_source(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_source),
+    .auto_tlserial_manager_crossing_out_a_bits_address(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_address),
+    .auto_tlserial_manager_crossing_out_a_bits_mask(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_mask),
+    .auto_tlserial_manager_crossing_out_a_bits_data(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_data),
+    .auto_tlserial_manager_crossing_out_a_bits_corrupt(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_corrupt),
+    .auto_tlserial_manager_crossing_out_d_ready(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_ready),
+    .auto_tlserial_manager_crossing_out_d_valid(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_valid),
+    .auto_tlserial_manager_crossing_out_d_bits_opcode(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_opcode),
+    .auto_tlserial_manager_crossing_out_d_bits_param(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_param),
+    .auto_tlserial_manager_crossing_out_d_bits_size(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_size),
+    .auto_tlserial_manager_crossing_out_d_bits_source(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_source),
+    .auto_tlserial_manager_crossing_out_d_bits_sink(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_sink),
+    .auto_tlserial_manager_crossing_out_d_bits_denied(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_denied),
+    .auto_tlserial_manager_crossing_out_d_bits_data(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_data),
+    .auto_tlserial_manager_crossing_out_d_bits_corrupt(
+      coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_corrupt),
+    .auto_tl_in_a_ready(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_param(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_param),
+    .auto_tl_in_d_bits_size(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_sink(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_sink),
+    .auto_tl_in_d_bits_denied(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_denied),
+    .auto_tl_in_d_bits_data(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_data),
+    .auto_tl_in_d_bits_corrupt(coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_corrupt)
+  );
+  TLInterconnectCoupler_7 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_8 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_9 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_10 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_11 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_12 coupler_to_device_named_qspi_1 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_qspi_1_clock),
+    .reset(coupler_to_device_named_qspi_1_reset),
+    .auto_control_xing_out_a_ready(coupler_to_device_named_qspi_1_auto_control_xing_out_a_ready),
+    .auto_control_xing_out_a_valid(coupler_to_device_named_qspi_1_auto_control_xing_out_a_valid),
+    .auto_control_xing_out_a_bits_opcode(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_opcode),
+    .auto_control_xing_out_a_bits_param(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_param),
+    .auto_control_xing_out_a_bits_size(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_size),
+    .auto_control_xing_out_a_bits_source(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_source),
+    .auto_control_xing_out_a_bits_address(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_address),
+    .auto_control_xing_out_a_bits_mask(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_mask),
+    .auto_control_xing_out_a_bits_data(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_data),
+    .auto_control_xing_out_a_bits_corrupt(coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_corrupt),
+    .auto_control_xing_out_d_ready(coupler_to_device_named_qspi_1_auto_control_xing_out_d_ready),
+    .auto_control_xing_out_d_valid(coupler_to_device_named_qspi_1_auto_control_xing_out_d_valid),
+    .auto_control_xing_out_d_bits_opcode(coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_opcode),
+    .auto_control_xing_out_d_bits_size(coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_size),
+    .auto_control_xing_out_d_bits_source(coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_source),
+    .auto_control_xing_out_d_bits_data(coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_qspi_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_qspi_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_qspi_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_qspi_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_qspi_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(coupler_to_device_named_qspi_1_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_qspi_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_qspi_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_qspi_1_auto_tl_in_d_bits_data)
+  );
+  TLInterconnectCoupler_13 coupler_to_device_named_qspi_1_1 ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_device_named_qspi_1_1_clock),
+    .reset(coupler_to_device_named_qspi_1_1_reset),
+    .auto_mem_xing_out_a_ready(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_ready),
+    .auto_mem_xing_out_a_valid(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_valid),
+    .auto_mem_xing_out_a_bits_opcode(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_opcode),
+    .auto_mem_xing_out_a_bits_param(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_param),
+    .auto_mem_xing_out_a_bits_size(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_size),
+    .auto_mem_xing_out_a_bits_source(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_source),
+    .auto_mem_xing_out_a_bits_address(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_address),
+    .auto_mem_xing_out_a_bits_mask(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_mask),
+    .auto_mem_xing_out_a_bits_corrupt(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_corrupt),
+    .auto_mem_xing_out_d_ready(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_ready),
+    .auto_mem_xing_out_d_valid(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_valid),
+    .auto_mem_xing_out_d_bits_size(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_size),
+    .auto_mem_xing_out_d_bits_source(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_source),
+    .auto_mem_xing_out_d_bits_data(coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_data),
+    .auto_tl_in_a_ready(coupler_to_device_named_qspi_1_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_to_device_named_qspi_1_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_corrupt(coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(coupler_to_device_named_qspi_1_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(coupler_to_device_named_qspi_1_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_size(coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_data)
+  );
+  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)
+  );
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_valid =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_opcode =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_param =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_size =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_source =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_address =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_mask =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_corrupt =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_mem_xing_out_d_ready =
+    coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_valid =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_opcode =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_param =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_size =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_source =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_address =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_mask =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_data =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_corrupt =
+    coupler_to_device_named_qspi_1_auto_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_device_named_qspi_1_control_xing_out_d_ready =
+    coupler_to_device_named_qspi_1_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_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_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_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_valid =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_opcode =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_param =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_size =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_source =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_address =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_mask =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_data =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_corrupt =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_ready =
+    coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_ready; // @[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 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_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_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_8_a_ready = coupler_to_device_named_qspi_1_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_valid = coupler_to_device_named_qspi_1_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_size = coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_source = coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_data = coupler_to_device_named_qspi_1_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_a_ready = coupler_to_device_named_qspi_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_valid = coupler_to_device_named_qspi_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_opcode = coupler_to_device_named_qspi_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_size = coupler_to_device_named_qspi_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_source = coupler_to_device_named_qspi_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_data = coupler_to_device_named_qspi_1_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_gpio_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_valid = coupler_to_device_named_gpio_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_opcode = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_size = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_source = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_4_d_bits_data = coupler_to_device_named_gpio_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_a_ready = coupler_to_device_named_uart_1_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_valid = coupler_to_device_named_uart_1_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_opcode = coupler_to_device_named_uart_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_size = coupler_to_device_named_uart_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_source = coupler_to_device_named_uart_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_3_d_bits_data = coupler_to_device_named_uart_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_a_ready = coupler_to_device_named_uart_0_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_valid = coupler_to_device_named_uart_0_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_opcode = coupler_to_device_named_uart_0_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_size = coupler_to_device_named_uart_0_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_source = coupler_to_device_named_uart_0_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_2_d_bits_data = coupler_to_device_named_uart_0_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_a_ready = coupler_to_port_named_serial_tl_mem_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_valid = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_opcode = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_param = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_size = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_source = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_sink = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_denied = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_data = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_1_d_bits_corrupt = coupler_to_port_named_serial_tl_mem_auto_tl_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_a_ready = coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_valid = coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_opcode = coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_size = coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_source = coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_0_d_bits_data = coupler_to_slave_named_bootaddressreg_auto_buffer_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_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 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_slave_named_bootaddressreg_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_bootaddressreg_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_valid = out_xbar_auto_out_0_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_opcode = out_xbar_auto_out_0_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_param = out_xbar_auto_out_0_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_size = out_xbar_auto_out_0_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_source = out_xbar_auto_out_0_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_address = out_xbar_auto_out_0_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_mask = out_xbar_auto_out_0_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_data = out_xbar_auto_out_0_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_a_bits_corrupt = out_xbar_auto_out_0_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_buffer_in_d_ready = out_xbar_auto_out_0_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_ready =
+    coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_valid =
+    coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_size =
+    coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_source =
+    coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_bits_data = in_bits_index == 9'h0 ? out_prepend_6
+     : 64'h0; // @[RegisterRouter.scala 83:24]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_a_ready =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_valid =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_opcode =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_param =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_size =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_source =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_sink =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_denied =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_data =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tlserial_manager_crossing_out_d_bits_corrupt =
+    auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_valid = out_xbar_auto_out_1_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_opcode = out_xbar_auto_out_1_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_param = out_xbar_auto_out_1_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_size = out_xbar_auto_out_1_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_source = out_xbar_auto_out_1_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_address = out_xbar_auto_out_1_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_mask = out_xbar_auto_out_1_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_data = out_xbar_auto_out_1_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_1_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_port_named_serial_tl_mem_auto_tl_in_d_ready = out_xbar_auto_out_1_d_ready; // @[LazyModule.scala 298: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_2_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_2_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_param = out_xbar_auto_out_2_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_size = out_xbar_auto_out_2_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_source = out_xbar_auto_out_2_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_address = out_xbar_auto_out_2_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_2_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_data = out_xbar_auto_out_2_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_2_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_0_auto_tl_in_d_ready = out_xbar_auto_out_2_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_3_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_3_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_param = out_xbar_auto_out_3_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_size = out_xbar_auto_out_3_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_source = out_xbar_auto_out_3_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_address = out_xbar_auto_out_3_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_3_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_data = out_xbar_auto_out_3_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_3_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_uart_1_auto_tl_in_d_ready = out_xbar_auto_out_3_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_4_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_opcode = out_xbar_auto_out_4_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_param = out_xbar_auto_out_4_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_size = out_xbar_auto_out_4_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_source = out_xbar_auto_out_4_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_address = out_xbar_auto_out_4_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_mask = out_xbar_auto_out_4_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_data = out_xbar_auto_out_4_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_4_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_gpio_0_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_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_1_auto_control_xing_out_a_ready =
+    auto_coupler_to_device_named_qspi_1_control_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_auto_control_xing_out_d_valid =
+    auto_coupler_to_device_named_qspi_1_control_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_opcode =
+    auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_size =
+    auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_source =
+    auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_auto_control_xing_out_d_bits_data =
+    auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_valid = out_xbar_auto_out_7_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_7_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_param = out_xbar_auto_out_7_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_size = out_xbar_auto_out_7_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_source = out_xbar_auto_out_7_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_address = out_xbar_auto_out_7_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_7_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_data = out_xbar_auto_out_7_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_7_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_auto_tl_in_d_ready = out_xbar_auto_out_7_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_1_1_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_device_named_qspi_1_1_auto_mem_xing_out_a_ready =
+    auto_coupler_to_device_named_qspi_1_mem_xing_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_valid =
+    auto_coupler_to_device_named_qspi_1_mem_xing_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_size =
+    auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_source =
+    auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_1_auto_mem_xing_out_d_bits_data =
+    auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_valid = out_xbar_auto_out_8_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_opcode = out_xbar_auto_out_8_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_param = out_xbar_auto_out_8_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_size = out_xbar_auto_out_8_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_source = out_xbar_auto_out_8_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_address = out_xbar_auto_out_8_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_mask = out_xbar_auto_out_8_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_8_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_device_named_qspi_1_1_auto_tl_in_d_ready = out_xbar_auto_out_8_d_ready; // @[LazyModule.scala 298:16]
+  assign monitor_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_ready = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_valid = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_opcode = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_param = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_size = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_source = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_address = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_mask = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_a_bits_corrupt = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_ready = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_valid = coupler_to_slave_named_bootaddressreg_auto_fragmenter_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 = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign monitor_io_in_d_bits_source = coupler_to_slave_named_bootaddressreg_auto_fragmenter_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  always @(posedge bundleIn_0_clock) begin
+    if (bundleIn_0_reset) begin // @[BootAddrReg.scala 34:32]
+      bootAddrReg <= 64'h80000000; // @[BootAddrReg.scala 34:32]
+    end else if (out_f_woready | out_f_woready_1 | out_f_woready_2 | out_f_woready_3 | out_f_woready_4 | out_f_woready_5
+       | out_f_woready_6 | out_f_woready_7) begin // @[RegField.scala 154:34]
+      bootAddrReg <= _bootAddrReg_T; // @[RegField.scala 154:40]
+    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}};
+  bootAddrReg = _RAND_0[63:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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_1_clock,
+  output  auto_out_1_reset,
+  output  auto_out_0_clock,
+  output  auto_out_0_reset
+);
+  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 TLXbar_3(
+  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         auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_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_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  [3:0]  io_in_a_bits_size,
+  input         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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         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;
+`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 [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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_5 = ~_source_ok_T; // @[Monitor.scala 63:7]
+  wire [32: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  _T_17 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_20 = _T_17 & _source_ok_T; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_33 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_36 = $signed(_T_34) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_38 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_41 = $signed(_T_39) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_73 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_76 = $signed(_T_74) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_191 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_195 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_196 = _T_195 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_200 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_204 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_384 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_416 = _T_17 & _T_32; // @[Parameters.scala 670:56]
+  wire  _T_418 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_485 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_486 = _T_418 & _T_485; // @[Parameters.scala 670:56]
+  wire  _T_488 = _T_416 | _T_486; // @[Parameters.scala 672:30]
+  wire  _T_498 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_502 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_510 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_577 = _T_27 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_578 = _T_418 & _T_577; // @[Parameters.scala 670:56]
+  wire  _T_599 = _T_416 | _T_578; // @[Parameters.scala 672:30]
+  wire  _T_601 = _T_20 & _T_599; // @[Monitor.scala 115:71]
+  wire  _T_619 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_724 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_725 = io_in_a_bits_mask & _T_724; // @[Monitor.scala 127:31]
+  wire  _T_726 = _T_725 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_730 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_738 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_793 = _T_27 | _T_32 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_794 = _T_738 & _T_793; // @[Parameters.scala 670:56]
+  wire  _T_816 = _T_20 & _T_794; // @[Monitor.scala 131:74]
+  wire  _T_826 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_834 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_930 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_938 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1024 = _T_20 & _T_416; // @[Monitor.scala 147:68]
+  wire  _T_1034 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1046 = 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_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1193 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1197 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1201 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1205 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1209 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1229 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[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 = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [7: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] _GEN_75 = {{8'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_75 & _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_1243 = 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] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1246 = _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_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3: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 [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  _T_1250 = ~(inflight >> io_in_a_bits_source); // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[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_1050 ? _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] _GEN_22 = _d_first_T & d_first_1 & _T_1256 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1256 ? _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_1256 ? _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_1243 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire  _T_1269 = 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_1274 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1275 = io_in_d_bits_opcode == _GEN_32 | _T_1274; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[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_1291 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1256; // @[Monitor.scala 694:116]
+  wire  _T_1303 = ~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_1310 = 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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [7:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_83 = {{8'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_83 & _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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1050 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire  _T_1353 = 1'h0 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1363 = _GEN_79 == 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 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 <= 9'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 <= 9'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 (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 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_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 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_5 & (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 & _T_5) 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_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 & ~_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_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 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_191 & (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 & ~_T_191) 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_196 & (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 & ~_T_196) 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_200 & (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 & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock 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_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (_T_5 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & _T_5) 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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_191 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_191) 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_384 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_384) 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_196 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_196) 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_200 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm 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 (~_T_20 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_20) 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_488 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_488) 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 (_T_5 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & _T_5) 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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_498 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_502) 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_200 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' 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 (~_T_601 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_601) 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 (_T_5 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & _T_5) 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_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~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_498 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_502) 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_601 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_601) 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 (_T_5 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & _T_5) 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_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~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_498 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_498) 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_726 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_726) 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_816 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_816) 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 (_T_5 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & _T_5) 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_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~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_826 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_826) 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_502 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_502) 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_816 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_816) 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 (_T_5 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & _T_5) 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_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~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_930 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_930) 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_502 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_502) 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_1024 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1024) 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 (_T_5 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & _T_5) 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_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~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_1034 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1034) 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_502 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_502) 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_200 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' 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 (~_T_1046 & (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_1046) 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_T_1 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_source_ok_T_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_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) 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_1058 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) 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_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) 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_T_1 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_source_ok_T_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 (io_in_d_valid & _T_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) 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_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) 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_T_1 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_source_ok_T_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 (io_in_d_valid & _T_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) 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_1118 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) 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_T_1 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_source_ok_T_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_1058 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) 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_T_1 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_source_ok_T_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_1058 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) 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_1118 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) 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_T_1 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_source_ok_T_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_1058 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) 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_1193 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1193) 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_1197 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1197) 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_1201 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1201) 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_1205 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1205) 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_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) 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_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) 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_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) 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_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) 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_1229 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1229) 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_1233 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) 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_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) 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_1250 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) 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_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) 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_1275 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1275) 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_1279 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1279) 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_1287 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1287) 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_1291 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1291) 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_1303 & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~_T_1303) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (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_1319 & ~reset) begin
+          $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_1319) 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_1353 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1353) 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_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) 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
+  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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[7:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_19[7:0];
+  _RAND_20 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_20[8: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  [2:0]  io_enq_bits_param,
+  input  [3:0]  io_enq_bits_size,
+  input         io_enq_bits_source,
+  input  [31:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  input  [63: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        io_deq_bits_source,
+  output [31:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_mask,
+  output [63: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 [63: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  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  ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  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 [31: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 [31:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[7:0];
+  _RAND_6 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_7(
+  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         io_enq_bits_source,
+  input         io_enq_bits_sink,
+  input         io_enq_bits_denied,
+  input  [63: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        io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [63: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 [63: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  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  ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire  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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[0: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 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_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  [3:0]  auto_in_a_bits_size,
+  input         auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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  monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  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  bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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  bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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  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 [63: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  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 [63: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_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_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_6 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_7 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_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 = 1'h0; // @[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_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  [3:0]  io_in_a_bits_size,
+  input         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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         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;
+`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 [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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_5 = ~_source_ok_T; // @[Monitor.scala 63:7]
+  wire [32: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  _T_17 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_20 = _T_17 & _source_ok_T; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_33 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_36 = $signed(_T_34) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_38 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_41 = $signed(_T_39) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_73 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_76 = $signed(_T_74) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_191 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_195 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_196 = _T_195 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_200 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_204 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_384 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_416 = _T_17 & _T_32; // @[Parameters.scala 670:56]
+  wire  _T_418 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_485 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_486 = _T_418 & _T_485; // @[Parameters.scala 670:56]
+  wire  _T_488 = _T_416 | _T_486; // @[Parameters.scala 672:30]
+  wire  _T_498 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_502 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_510 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_577 = _T_27 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_578 = _T_418 & _T_577; // @[Parameters.scala 670:56]
+  wire  _T_599 = _T_416 | _T_578; // @[Parameters.scala 672:30]
+  wire  _T_601 = _T_20 & _T_599; // @[Monitor.scala 115:71]
+  wire  _T_619 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_724 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_725 = io_in_a_bits_mask & _T_724; // @[Monitor.scala 127:31]
+  wire  _T_726 = _T_725 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_730 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_738 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_793 = _T_27 | _T_32 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_794 = _T_738 & _T_793; // @[Parameters.scala 670:56]
+  wire  _T_816 = _T_20 & _T_794; // @[Monitor.scala 131:74]
+  wire  _T_826 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_834 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_930 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_938 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1024 = _T_20 & _T_416; // @[Monitor.scala 147:68]
+  wire  _T_1034 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1046 = 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_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1193 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1197 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1201 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1205 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1209 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1229 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[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 = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [7: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] _GEN_75 = {{8'd0}, _a_size_lookup_T_1}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_75 & _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_1243 = 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] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1246 = _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_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3: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 [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  _T_1250 = ~(inflight >> io_in_a_bits_source); // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[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_1050 ? _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] _GEN_22 = _d_first_T & d_first_1 & _T_1256 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1256 ? _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_1256 ? _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_1243 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire  _T_1269 = 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_1274 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1275 = io_in_d_bits_opcode == _GEN_32 | _T_1274; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[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_1291 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1256; // @[Monitor.scala 694:116]
+  wire  _T_1303 = ~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_1310 = 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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [7:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [15:0] _GEN_83 = {{8'd0}, _c_size_lookup_T_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_83 & _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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1050 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire  _T_1353 = 1'h0 >> io_in_d_bits_source; // @[Monitor.scala 791:25]
+  wire [7:0] c_size_lookup = _c_size_lookup_T_7[7:0];
+  wire  _T_1363 = _GEN_79 == 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 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 <= 9'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 <= 9'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 (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 SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_191 & (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 & ~_T_191) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_196 & (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 & ~_T_196) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_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 & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_191 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_191) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_384 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_384) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_196 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_196) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_20 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_20) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_488 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_488) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_498) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_498) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_601 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_601) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_498) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_726 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_726) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_816 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_816) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_826 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_826) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_816 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_816) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Logical type which is unexpected using diplomatic parameters (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_930) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1024 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1024) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & _T_5) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1034 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1034) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_200) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1046 & (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_1046) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\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_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\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_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_source_ok_T_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1193 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1193) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1197 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1197) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1201 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1201) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1205 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1205) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1229) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1279 & (_T_1257 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & same_cycle_resp & _T_2 & ~_T_1279) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1287 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1287) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1291 & (_T_1257 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~same_cycle_resp & _T_2 & ~_T_1291) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1303 & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~_T_1303) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 6 (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1319 & ~reset) begin
+          $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_1319) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1353 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1353) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at SerialAdapter.scala:390:9)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at SerialAdapter.scala:390:9)\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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[7:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_19[7:0];
+  _RAND_20 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_20[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLBuffer_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  [3:0]  auto_in_a_bits_size,
+  input         auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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        auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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  monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  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  bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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  bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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  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 [63: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  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 [63: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_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_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_6 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_7 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 = 1'h0; // @[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 TLInterconnectCoupler_14(
+  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         auto_buffer_in_a_bits_source,
+  input  [31:0] auto_buffer_in_a_bits_address,
+  input  [7:0]  auto_buffer_in_a_bits_mask,
+  input  [63:0] auto_buffer_in_a_bits_data,
+  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        auto_buffer_in_d_bits_source,
+  output        auto_buffer_in_d_bits_sink,
+  output        auto_buffer_in_d_bits_denied,
+  output [63:0] auto_buffer_in_d_bits_data,
+  output        auto_buffer_in_d_bits_corrupt,
+  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        auto_tl_out_a_bits_source,
+  output [31:0] auto_tl_out_a_bits_address,
+  output [7:0]  auto_tl_out_a_bits_mask,
+  output [63:0] auto_tl_out_a_bits_data,
+  output        auto_tl_out_a_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         auto_tl_out_d_bits_sink,
+  input         auto_tl_out_d_bits_denied,
+  input  [63:0] auto_tl_out_d_bits_data,
+  input         auto_tl_out_d_bits_corrupt
+);
+  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  buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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  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 [63: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  buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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  buffer_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  TLBuffer_7 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_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)
+  );
+  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 auto_tl_out_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_tl_out_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 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_data = auto_buffer_in_a_bits_data; // @[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 = auto_tl_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_valid = auto_tl_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_opcode = auto_tl_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_param = auto_tl_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_size = auto_tl_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_sink = auto_tl_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_denied = auto_tl_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_data = auto_tl_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_corrupt = auto_tl_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+endmodule
+module FrontBus(
+  output        auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_ready,
+  input         auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_valid,
+  input  [2:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_opcode,
+  input  [2:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_param,
+  input  [3:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_size,
+  input         auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_source,
+  input  [31:0] auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_address,
+  input  [7:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_mask,
+  input  [63:0] auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_data,
+  input         auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_corrupt,
+  input         auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_ready,
+  output        auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_valid,
+  output [2:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_opcode,
+  output [1:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_param,
+  output [3:0]  auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_size,
+  output        auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_source,
+  output        auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_sink,
+  output        auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_denied,
+  output [63:0] auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_data,
+  output        auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_corrupt,
+  output        auto_fixedClockNode_out_clock,
+  output        auto_fixedClockNode_out_reset,
+  input         auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock,
+  input         auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset,
+  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        auto_bus_xing_out_a_bits_source,
+  output [31:0] auto_bus_xing_out_a_bits_address,
+  output [7:0]  auto_bus_xing_out_a_bits_mask,
+  output [63: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         auto_bus_xing_out_d_bits_sink,
+  input         auto_bus_xing_out_d_bits_denied,
+  input  [63:0] auto_bus_xing_out_d_bits_data,
+  input         auto_bus_xing_out_d_bits_corrupt
+);
+  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_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  subsystem_fbus_xbar_auto_in_a_ready; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_a_valid; // @[BusWrapper.scala 372:32]
+  wire [2:0] subsystem_fbus_xbar_auto_in_a_bits_opcode; // @[BusWrapper.scala 372:32]
+  wire [2:0] subsystem_fbus_xbar_auto_in_a_bits_param; // @[BusWrapper.scala 372:32]
+  wire [3:0] subsystem_fbus_xbar_auto_in_a_bits_size; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_a_bits_source; // @[BusWrapper.scala 372:32]
+  wire [31:0] subsystem_fbus_xbar_auto_in_a_bits_address; // @[BusWrapper.scala 372:32]
+  wire [7:0] subsystem_fbus_xbar_auto_in_a_bits_mask; // @[BusWrapper.scala 372:32]
+  wire [63:0] subsystem_fbus_xbar_auto_in_a_bits_data; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_a_bits_corrupt; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_d_ready; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_d_valid; // @[BusWrapper.scala 372:32]
+  wire [2:0] subsystem_fbus_xbar_auto_in_d_bits_opcode; // @[BusWrapper.scala 372:32]
+  wire [1:0] subsystem_fbus_xbar_auto_in_d_bits_param; // @[BusWrapper.scala 372:32]
+  wire [3:0] subsystem_fbus_xbar_auto_in_d_bits_size; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_d_bits_sink; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_d_bits_denied; // @[BusWrapper.scala 372:32]
+  wire [63:0] subsystem_fbus_xbar_auto_in_d_bits_data; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_in_d_bits_corrupt; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_a_ready; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_a_valid; // @[BusWrapper.scala 372:32]
+  wire [2:0] subsystem_fbus_xbar_auto_out_a_bits_opcode; // @[BusWrapper.scala 372:32]
+  wire [2:0] subsystem_fbus_xbar_auto_out_a_bits_param; // @[BusWrapper.scala 372:32]
+  wire [3:0] subsystem_fbus_xbar_auto_out_a_bits_size; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_a_bits_source; // @[BusWrapper.scala 372:32]
+  wire [31:0] subsystem_fbus_xbar_auto_out_a_bits_address; // @[BusWrapper.scala 372:32]
+  wire [7:0] subsystem_fbus_xbar_auto_out_a_bits_mask; // @[BusWrapper.scala 372:32]
+  wire [63:0] subsystem_fbus_xbar_auto_out_a_bits_data; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_a_bits_corrupt; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_d_ready; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_d_valid; // @[BusWrapper.scala 372:32]
+  wire [2:0] subsystem_fbus_xbar_auto_out_d_bits_opcode; // @[BusWrapper.scala 372:32]
+  wire [1:0] subsystem_fbus_xbar_auto_out_d_bits_param; // @[BusWrapper.scala 372:32]
+  wire [3:0] subsystem_fbus_xbar_auto_out_d_bits_size; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_d_bits_sink; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_d_bits_denied; // @[BusWrapper.scala 372:32]
+  wire [63:0] subsystem_fbus_xbar_auto_out_d_bits_data; // @[BusWrapper.scala 372:32]
+  wire  subsystem_fbus_xbar_auto_out_d_bits_corrupt; // @[BusWrapper.scala 372:32]
+  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  buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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  buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [63: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  buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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  buffer_auto_out_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  wire  coupler_from_port_named_serial_tl_ctrl_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [3:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  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_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)
+  );
+  TLXbar_3 subsystem_fbus_xbar ( // @[BusWrapper.scala 372:32]
+    .auto_in_a_ready(subsystem_fbus_xbar_auto_in_a_ready),
+    .auto_in_a_valid(subsystem_fbus_xbar_auto_in_a_valid),
+    .auto_in_a_bits_opcode(subsystem_fbus_xbar_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(subsystem_fbus_xbar_auto_in_a_bits_param),
+    .auto_in_a_bits_size(subsystem_fbus_xbar_auto_in_a_bits_size),
+    .auto_in_a_bits_source(subsystem_fbus_xbar_auto_in_a_bits_source),
+    .auto_in_a_bits_address(subsystem_fbus_xbar_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(subsystem_fbus_xbar_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(subsystem_fbus_xbar_auto_in_a_bits_data),
+    .auto_in_a_bits_corrupt(subsystem_fbus_xbar_auto_in_a_bits_corrupt),
+    .auto_in_d_ready(subsystem_fbus_xbar_auto_in_d_ready),
+    .auto_in_d_valid(subsystem_fbus_xbar_auto_in_d_valid),
+    .auto_in_d_bits_opcode(subsystem_fbus_xbar_auto_in_d_bits_opcode),
+    .auto_in_d_bits_param(subsystem_fbus_xbar_auto_in_d_bits_param),
+    .auto_in_d_bits_size(subsystem_fbus_xbar_auto_in_d_bits_size),
+    .auto_in_d_bits_sink(subsystem_fbus_xbar_auto_in_d_bits_sink),
+    .auto_in_d_bits_denied(subsystem_fbus_xbar_auto_in_d_bits_denied),
+    .auto_in_d_bits_data(subsystem_fbus_xbar_auto_in_d_bits_data),
+    .auto_in_d_bits_corrupt(subsystem_fbus_xbar_auto_in_d_bits_corrupt),
+    .auto_out_a_ready(subsystem_fbus_xbar_auto_out_a_ready),
+    .auto_out_a_valid(subsystem_fbus_xbar_auto_out_a_valid),
+    .auto_out_a_bits_opcode(subsystem_fbus_xbar_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(subsystem_fbus_xbar_auto_out_a_bits_param),
+    .auto_out_a_bits_size(subsystem_fbus_xbar_auto_out_a_bits_size),
+    .auto_out_a_bits_source(subsystem_fbus_xbar_auto_out_a_bits_source),
+    .auto_out_a_bits_address(subsystem_fbus_xbar_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(subsystem_fbus_xbar_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(subsystem_fbus_xbar_auto_out_a_bits_data),
+    .auto_out_a_bits_corrupt(subsystem_fbus_xbar_auto_out_a_bits_corrupt),
+    .auto_out_d_ready(subsystem_fbus_xbar_auto_out_d_ready),
+    .auto_out_d_valid(subsystem_fbus_xbar_auto_out_d_valid),
+    .auto_out_d_bits_opcode(subsystem_fbus_xbar_auto_out_d_bits_opcode),
+    .auto_out_d_bits_param(subsystem_fbus_xbar_auto_out_d_bits_param),
+    .auto_out_d_bits_size(subsystem_fbus_xbar_auto_out_d_bits_size),
+    .auto_out_d_bits_sink(subsystem_fbus_xbar_auto_out_d_bits_sink),
+    .auto_out_d_bits_denied(subsystem_fbus_xbar_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(subsystem_fbus_xbar_auto_out_d_bits_data),
+    .auto_out_d_bits_corrupt(subsystem_fbus_xbar_auto_out_d_bits_corrupt)
+  );
+  TLBuffer_6 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_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_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)
+  );
+  TLInterconnectCoupler_14 coupler_from_port_named_serial_tl_ctrl ( // @[LazyModule.scala 432:27]
+    .clock(coupler_from_port_named_serial_tl_ctrl_clock),
+    .reset(coupler_from_port_named_serial_tl_ctrl_reset),
+    .auto_buffer_in_a_ready(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_ready),
+    .auto_buffer_in_a_valid(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_valid),
+    .auto_buffer_in_a_bits_opcode(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_opcode),
+    .auto_buffer_in_a_bits_param(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_param),
+    .auto_buffer_in_a_bits_size(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_size),
+    .auto_buffer_in_a_bits_source(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_source),
+    .auto_buffer_in_a_bits_address(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_address),
+    .auto_buffer_in_a_bits_mask(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_mask),
+    .auto_buffer_in_a_bits_data(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_data),
+    .auto_buffer_in_a_bits_corrupt(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_corrupt),
+    .auto_buffer_in_d_ready(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_ready),
+    .auto_buffer_in_d_valid(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_valid),
+    .auto_buffer_in_d_bits_opcode(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_opcode),
+    .auto_buffer_in_d_bits_param(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_param),
+    .auto_buffer_in_d_bits_size(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_size),
+    .auto_buffer_in_d_bits_source(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_source),
+    .auto_buffer_in_d_bits_sink(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_sink),
+    .auto_buffer_in_d_bits_denied(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_denied),
+    .auto_buffer_in_d_bits_data(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_data),
+    .auto_buffer_in_d_bits_corrupt(coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_corrupt),
+    .auto_tl_out_a_ready(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_ready),
+    .auto_tl_out_a_valid(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_valid),
+    .auto_tl_out_a_bits_opcode(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_opcode),
+    .auto_tl_out_a_bits_param(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_param),
+    .auto_tl_out_a_bits_size(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_size),
+    .auto_tl_out_a_bits_source(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_source),
+    .auto_tl_out_a_bits_address(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_address),
+    .auto_tl_out_a_bits_mask(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_mask),
+    .auto_tl_out_a_bits_data(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_data),
+    .auto_tl_out_a_bits_corrupt(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_corrupt),
+    .auto_tl_out_d_ready(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_ready),
+    .auto_tl_out_d_valid(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_valid),
+    .auto_tl_out_d_bits_opcode(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_opcode),
+    .auto_tl_out_d_bits_param(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_param),
+    .auto_tl_out_d_bits_size(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_size),
+    .auto_tl_out_d_bits_sink(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_sink),
+    .auto_tl_out_d_bits_denied(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_denied),
+    .auto_tl_out_d_bits_data(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_data),
+    .auto_tl_out_d_bits_corrupt(coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_corrupt)
+  );
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_ready =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_valid =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_opcode =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_param =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_size =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_source =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_sink =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_denied =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_data =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_corrupt =
+    coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_fixedClockNode_out_clock = fixedClockNode_auto_out_1_clock; // @[LazyModule.scala 311:12]
+  assign auto_fixedClockNode_out_reset = fixedClockNode_auto_out_1_reset; // @[LazyModule.scala 311:12]
+  assign auto_bus_xing_out_a_valid = buffer_auto_out_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_param = buffer_auto_out_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_size = buffer_auto_out_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_source = buffer_auto_out_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_address = buffer_auto_out_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_mask = buffer_auto_out_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_data = buffer_auto_out_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign auto_bus_xing_out_d_ready = buffer_auto_out_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  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]
+  assign subsystem_fbus_xbar_auto_in_a_valid = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_opcode = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_param = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_size = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_source = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_address = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_mask = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_data = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_a_bits_corrupt = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_in_d_ready = coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_xbar_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_fbus_xbar_auto_out_d_bits_corrupt = buffer_auto_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 = subsystem_fbus_xbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_opcode = subsystem_fbus_xbar_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_param = subsystem_fbus_xbar_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_size = subsystem_fbus_xbar_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_source = subsystem_fbus_xbar_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_address = subsystem_fbus_xbar_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_mask = subsystem_fbus_xbar_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_data = subsystem_fbus_xbar_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_a_bits_corrupt = subsystem_fbus_xbar_auto_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign buffer_auto_in_d_ready = subsystem_fbus_xbar_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_a_ready = auto_bus_xing_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_valid = auto_bus_xing_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_opcode = auto_bus_xing_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_param = auto_bus_xing_out_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_size = auto_bus_xing_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_sink = auto_bus_xing_out_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_denied = auto_bus_xing_out_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_data = auto_bus_xing_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_corrupt = auto_bus_xing_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign coupler_from_port_named_serial_tl_ctrl_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_valid =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_valid; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_opcode =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_param =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_size =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_source =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_address =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_mask =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_data =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_a_bits_corrupt =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_buffer_in_d_ready =
+    auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_ready; // @[LazyModule.scala 309:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_a_ready = subsystem_fbus_xbar_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_valid = subsystem_fbus_xbar_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_opcode = subsystem_fbus_xbar_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_param = subsystem_fbus_xbar_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_size = subsystem_fbus_xbar_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_sink = subsystem_fbus_xbar_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_denied = subsystem_fbus_xbar_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_data = subsystem_fbus_xbar_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_serial_tl_ctrl_auto_tl_out_d_bits_corrupt = subsystem_fbus_xbar_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+endmodule
+module ClockGroupAggregator_3(
+  input   auto_in_member_subsystem_cbus_0_clock,
+  input   auto_in_member_subsystem_cbus_0_reset,
+  output  auto_out_member_subsystem_cbus_0_clock,
+  output  auto_out_member_subsystem_cbus_0_reset
+);
+  assign auto_out_member_subsystem_cbus_0_clock = auto_in_member_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_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 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  [2:0]  io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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  [2: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 [63:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [63: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_44 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_53 = _T_44 & source_ok; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_59 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_61 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_64 = $signed(_T_62) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_66 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_69 = $signed(_T_67) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_71 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_74 = $signed(_T_72) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_76 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_79 = $signed(_T_77) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_81 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_84 = $signed(_T_82) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_86 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_87 = {1'b0,$signed(_T_86)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_89 = $signed(_T_87) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_90 = $signed(_T_89) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_91 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_92 = {1'b0,$signed(_T_91)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_94 = $signed(_T_92) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_95 = $signed(_T_94) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_96 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_97 = {1'b0,$signed(_T_96)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_99 = $signed(_T_97) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_100 = $signed(_T_99) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_101 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_102 = {1'b0,$signed(_T_101)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_104 = $signed(_T_102) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_105 = $signed(_T_104) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_106 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_107 = {1'b0,$signed(_T_106)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_109 = $signed(_T_107) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_110 = $signed(_T_109) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_111 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_112 = {1'b0,$signed(_T_111)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_114 = $signed(_T_112) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_115 = $signed(_T_114) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_224 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_228 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_229 = _T_228 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_233 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_237 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_423 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_436 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_461 = _T_44 & _T_65; // @[Parameters.scala 670:56]
+  wire  _T_463 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_530 = _T_60 | _T_70 | _T_75 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_110 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_531 = _T_463 & _T_530; // @[Parameters.scala 670:56]
+  wire  _T_533 = _T_461 | _T_531; // @[Parameters.scala 672:30]
+  wire  _T_543 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_547 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_555 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_628 = _T_60 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_629 = _T_463 & _T_628; // @[Parameters.scala 670:56]
+  wire  _T_650 = _T_461 | _T_629; // @[Parameters.scala 672:30]
+  wire  _T_652 = _T_53 & _T_650; // @[Monitor.scala 115:71]
+  wire  _T_670 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_781 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_782 = io_in_a_bits_mask & _T_781; // @[Monitor.scala 127:31]
+  wire  _T_783 = _T_782 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_787 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_801 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire [31:0] _T_809 = io_in_a_bits_address ^ 32'h4000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_810 = {1'b0,$signed(_T_809)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_812 = $signed(_T_810) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_813 = $signed(_T_812) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_832 = _T_65 | _T_813 | _T_95 | _T_100 | _T_105; // @[Parameters.scala 671:42]
+  wire  _T_833 = _T_801 & _T_832; // @[Parameters.scala 670:56]
+  wire  _T_879 = 4'h2 <= io_in_a_bits_size & io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:37]
+  wire  _T_886 = _T_879 & _T_115; // @[Parameters.scala 670:56]
+  wire  _T_889 = _T_833 | _T_886; // @[Parameters.scala 672:30]
+  wire  _T_890 = _T_53 & _T_889; // @[Monitor.scala 131:74]
+  wire  _T_900 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_908 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1021 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1029 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1121 = _T_53 & _T_461; // @[Monitor.scala 147:68]
+  wire  _T_1131 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1143 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_1147 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1151 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1155 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1159 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1163 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1167 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1178 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1182 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1195 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1215 = _T_1163 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1224 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1241 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1259 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1289 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1290 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1294 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1298 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1302 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1306 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1313 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1314 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1318 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1322 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1326 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1330 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1334 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [39:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [5:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [39: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 [39:0] _GEN_75 = {{24'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[39:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1340 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_1343 = _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 [4:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [5: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 [67:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [67:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_1345 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1347 = ~_T_1345[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [67:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 68'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1351 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1353 = ~_T_1147; // @[Monitor.scala 671:74]
+  wire  _T_1354 = io_in_d_valid & d_first_1 & ~_T_1147; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [78:0] _GEN_4 = {{63'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [78:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_1353 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_1353 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 675:91 677:21]
+  wire [78:0] _GEN_24 = _d_first_T & d_first_1 & _T_1353 ? _d_sizes_clr_T_5 : 79'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_1340 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_1364 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1366 = _T_1364[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_1371 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1372 = io_in_d_bits_opcode == _GEN_32 | _T_1371; // @[Monitor.scala 685:77]
+  wire  _T_1376 = 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_1383 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1384 = io_in_d_bits_opcode == _GEN_48 | _T_1383; // @[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_1388 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1398 = _T_1351 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1353; // @[Monitor.scala 694:116]
+  wire  _T_1400 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [39:0] a_sizes_set = _GEN_20[39:0];
+  wire [39:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [39:0] d_sizes_clr = _GEN_24[39:0];
+  wire [39:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [39: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_1409 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [39:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [39:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [39:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [39:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[39:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1435 = io_in_d_valid & d_first_2 & _T_1147; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_1147 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_69 = _d_first_T & d_first_2 & _T_1147 ? _d_sizes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 786:21]
+  wire [4:0] _T_1443 = 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_1453 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [39:0] d_sizes_clr_1 = _GEN_69[39:0];
+  wire [39:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [39: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_1473 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 20'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 <= 40'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 40'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 <= 9'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 <= 9'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_224 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_224) 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_229 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_229) 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_233 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_233) 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_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 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 (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 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_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 & ~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_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 & ~_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_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 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_224 & (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 & ~_T_224) 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_423 & (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 & ~_T_423) 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_229 & (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 & ~_T_229) 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_233 & (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 & ~_T_233) 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_53 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_53) 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_533 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_533) 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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_543 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_233) 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_652 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_652) 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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_543 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_547) 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_652 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_652) 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_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 (io_in_a_valid & _T_670 & ~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_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 (io_in_a_valid & _T_670 & ~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_543 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_543) 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_783 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_783) 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_890 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_890) 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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_900 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_900) 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_547 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_547) 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_890 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_890) 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_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~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_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~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_1021 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_1021) 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_547 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_547) 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_1121 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_1121) 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_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~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_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~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_1131 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_1131) 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_547 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_233) 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_1143 & (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_1143) 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_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _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_1151 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1151) 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_1155 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1159) 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_1163 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1163) 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_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _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_1167 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _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_1151 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1151) 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_1178 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1178) 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_1182 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1182) 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_1159 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1159) 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_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _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_1195 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _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_1151 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1151) 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_1178 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1178) 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_1182 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1182) 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_1215 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1215) 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_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _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_1155 & (io_in_d_valid & _T_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _T_2 & ~_T_1159) 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_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _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_1155 & (io_in_d_valid & _T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _T_2 & ~_T_1155) 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_1215 & (io_in_d_valid & _T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _T_2 & ~_T_1215) 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_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _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_1155 & (io_in_d_valid & _T_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _T_2 & ~_T_1159) 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_1290 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1290) 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_1294 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1294) 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_1298 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1298) 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_1302 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1302) 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_1306 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1306) 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_1314 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1314) 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_1318 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1318) 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_1322 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1322) 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_1326 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1326) 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_1330 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1330) 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_1334 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1334) 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_1347 & (_T_1343 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1343 & ~reset & ~_T_1347) 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_1366 & (_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 (_T_1354 & _T_2 & ~_T_1366) 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_1372 & (_T_1354 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & same_cycle_resp & _T_2 & ~_T_1372) 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_1376 & (_T_1354 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & same_cycle_resp & _T_2 & ~_T_1376) 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_1384 & (_T_1354 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & ~same_cycle_resp & _T_2 & ~_T_1384) 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_1388 & (_T_1354 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & ~same_cycle_resp & _T_2 & ~_T_1388) 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_1400 & (_T_1398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1398 & _T_2 & ~_T_1400) 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_1409 & ~reset) begin
+          $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_1409) 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_1443[0] & (_T_1435 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1435 & _T_2 & ~_T_1443[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_1453 & (_T_1435 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1435 & _T_2 & ~_T_1453) 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_1473 & ~reset) begin
+          $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_1473) 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[8: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {2{`RANDOM}};
+  inflight_sizes = _RAND_15[39:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[39:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 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  [31:0] io_in_a_bits_address,
+  input  [7: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'h2; // @[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'h0; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32: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 [32:0] _T_48 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_49 = $signed(_T_48) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_50 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_51 = {1'b0,$signed(_T_50)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_53 = $signed(_T_51) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_54 = $signed(_T_53) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_55 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_56 = {1'b0,$signed(_T_55)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_58 = $signed(_T_56) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_59 = $signed(_T_58) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_60 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_61 = {1'b0,$signed(_T_60)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_63 = $signed(_T_61) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_64 = $signed(_T_63) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_65 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_66 = {1'b0,$signed(_T_65)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_68 = $signed(_T_66) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_69 = $signed(_T_68) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_70 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_71 = {1'b0,$signed(_T_70)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_73 = $signed(_T_71) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_74 = $signed(_T_73) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_75 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_76 = {1'b0,$signed(_T_75)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_78 = $signed(_T_76) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_79 = $signed(_T_78) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_80 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_81 = {1'b0,$signed(_T_80)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_83 = $signed(_T_81) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_84 = $signed(_T_83) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_85 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_86 = {1'b0,$signed(_T_85)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_88 = $signed(_T_86) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_89 = $signed(_T_88) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_90 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_91 = {1'b0,$signed(_T_90)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_93 = $signed(_T_91) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_94 = $signed(_T_93) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_95 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_96 = {1'b0,$signed(_T_95)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_98 = $signed(_T_96) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_99 = $signed(_T_98) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_100 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_101 = {1'b0,$signed(_T_100)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_103 = $signed(_T_101) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_104 = $signed(_T_103) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_213 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_217 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_218 = _T_217 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_222 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_226 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_410 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_423 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_446 = _T_35 & _T_54; // @[Parameters.scala 670:56]
+  wire  _T_448 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_515 = _T_49 | _T_59 | _T_64 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_99 | _T_104; // @[Parameters.scala 671:42]
+  wire  _T_516 = _T_448 & _T_515; // @[Parameters.scala 670:56]
+  wire  _T_518 = _T_446 | _T_516; // @[Parameters.scala 672:30]
+  wire  _T_528 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_532 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_540 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_611 = _T_49 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_104; // @[Parameters.scala 671:42]
+  wire  _T_612 = _T_448 & _T_611; // @[Parameters.scala 670:56]
+  wire  _T_633 = _T_446 | _T_612; // @[Parameters.scala 672:30]
+  wire  _T_635 = _T_42 & _T_633; // @[Monitor.scala 115:71]
+  wire  _T_653 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_762 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_763 = io_in_a_bits_mask & _T_762; // @[Monitor.scala 127:31]
+  wire  _T_764 = _T_763 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_768 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_780 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_835 = _T_49 | _T_54 | _T_69 | _T_74 | _T_79 | _T_84 | _T_89 | _T_94 | _T_104; // @[Parameters.scala 671:42]
+  wire  _T_836 = _T_780 & _T_835; // @[Parameters.scala 670:56]
+  wire  _T_858 = _T_42 & _T_836; // @[Monitor.scala 131:74]
+  wire  _T_868 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_876 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_976 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_984 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1074 = _T_42 & _T_446; // @[Monitor.scala 147:68]
+  wire  _T_1084 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1096 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_4 = io_in_d_bits_source == 2'h2; // @[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'h0; // @[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_1100 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1104 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1108 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1112 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1116 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1120 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1131 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1135 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1148 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1168 = _T_1116 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1177 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1194 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1212 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1242 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1243 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1247 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1251 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1255 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1259 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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_1266 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1267 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1271 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1275 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1279 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1283 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1287 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'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_1293 = 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_1296 = _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_1298 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1300 = ~_T_1298[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_1304 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1306 = ~_T_1100; // @[Monitor.scala 671:74]
+  wire  _T_1307 = io_in_d_valid & d_first_1 & ~_T_1100; // @[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_1100 ? _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_1306 ? _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_1306 ? _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_1306 ? _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_1293 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [2:0] _T_1317 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1319 = _T_1317[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_1324 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1325 = io_in_d_bits_opcode == _GEN_32 | _T_1324; // @[Monitor.scala 685:77]
+  wire  _T_1329 = 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_1336 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1337 = io_in_d_bits_opcode == _GEN_48 | _T_1336; // @[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_1341 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1351 = _T_1304 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1306; // @[Monitor.scala 694:116]
+  wire  _T_1353 = ~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_1360 = 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_1369 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'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_1395 = io_in_d_valid & d_first_2 & _T_1100; // @[Monitor.scala 779:71]
+  wire [3:0] _GEN_67 = _d_first_T & d_first_2 & _T_1100 ? _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_1100 ? _d_sizes_clr_T_5 : 47'h0; // @[Monitor.scala 783:90 786:21]
+  wire [2:0] _T_1403 = 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_1413 = _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_1438 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `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 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 (~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:14)\n    at Monitor.scala:42 assert(cond, message)\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:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_213 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef 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_213) 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_218 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef 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_218) 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_222 & (io_in_a_valid & _T_33 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef 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_222) 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_226 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~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_226 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~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 (~source_ok & (io_in_a_valid & _T_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~reset & ~source_ok) 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_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~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_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~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_213 & (io_in_a_valid & _T_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~reset & ~_T_213) 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_410 & (io_in_a_valid & _T_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~reset & ~_T_410) 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_218 & (io_in_a_valid & _T_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~reset & ~_T_218) 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_222 & (io_in_a_valid & _T_226 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_226 & ~reset & ~_T_222) 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_42 & (io_in_a_valid & _T_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~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:30:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_518 & (io_in_a_valid & _T_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~reset & ~_T_518) 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 (~source_ok & (io_in_a_valid & _T_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~reset & ~source_ok) 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_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~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_528 & (io_in_a_valid & _T_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~reset & ~_T_528) 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_532 & (io_in_a_valid & _T_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~reset & ~_T_532) 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_222 & (io_in_a_valid & _T_423 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_423 & ~reset & ~_T_222) 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_635 & (io_in_a_valid & _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 (io_in_a_valid & _T_540 & ~reset & ~_T_635) 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 (~source_ok & (io_in_a_valid & _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 (io_in_a_valid & _T_540 & ~reset & ~source_ok) 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_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 (io_in_a_valid & _T_540 & ~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_528 & (io_in_a_valid & _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 (io_in_a_valid & _T_540 & ~reset & ~_T_528) 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_532 & (io_in_a_valid & _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 (io_in_a_valid & _T_540 & ~reset & ~_T_532) 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_635 & (io_in_a_valid & _T_653 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_653 & ~reset & ~_T_635) 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 (~source_ok & (io_in_a_valid & _T_653 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_653 & ~reset & ~source_ok) 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_653 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_653 & ~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_528 & (io_in_a_valid & _T_653 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_653 & ~reset & ~_T_528) 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_764 & (io_in_a_valid & _T_653 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_653 & ~reset & ~_T_764) 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 (~_T_858 & (io_in_a_valid & _T_768 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_768 & ~reset & ~_T_858) 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 (~source_ok & (io_in_a_valid & _T_768 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_768 & ~reset & ~source_ok) 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_768 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_768 & ~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_868 & (io_in_a_valid & _T_768 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_768 & ~reset & ~_T_868) 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_532 & (io_in_a_valid & _T_768 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_768 & ~reset & ~_T_532) 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 (~_T_858 & (io_in_a_valid & _T_876 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_876 & ~reset & ~_T_858) 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 (~source_ok & (io_in_a_valid & _T_876 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_876 & ~reset & ~source_ok) 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_876 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_876 & ~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_976 & (io_in_a_valid & _T_876 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_876 & ~reset & ~_T_976) 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_532 & (io_in_a_valid & _T_876 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_876 & ~reset & ~_T_532) 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 (~_T_1074 & (io_in_a_valid & _T_984 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_984 & ~reset & ~_T_1074) 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 (~source_ok & (io_in_a_valid & _T_984 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_984 & ~reset & ~source_ok) 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_984 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_984 & ~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_1084 & (io_in_a_valid & _T_984 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_984 & ~reset & ~_T_1084) 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_532 & (io_in_a_valid & _T_984 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_984 & ~reset & ~_T_532) 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_222 & (io_in_a_valid & _T_984 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_984 & ~reset & ~_T_222) 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_1096 & (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_1096) 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_1 & (io_in_d_valid & _T_1100 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1100 & _T_2 & ~source_ok_1) 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_1104 & (io_in_d_valid & _T_1100 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1100 & _T_2 & ~_T_1104) 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 (~_T_1108 & (io_in_d_valid & _T_1100 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1100 & _T_2 & ~_T_1108) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1112 & (io_in_d_valid & _T_1100 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1100 & _T_2 & ~_T_1112) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1116 & (io_in_d_valid & _T_1100 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1100 & _T_2 & ~_T_1116) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1120 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1120 & _T_2 & ~source_ok_1) 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_1120 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1120 & _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_1104 & (io_in_d_valid & _T_1120 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1120 & _T_2 & ~_T_1104) 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 (~_T_1131 & (io_in_d_valid & _T_1120 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1120 & _T_2 & ~_T_1131) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1120 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1120 & _T_2 & ~_T_1135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1112 & (io_in_d_valid & _T_1120 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1120 & _T_2 & ~_T_1112) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1148 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1148 & _T_2 & ~source_ok_1) 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_1148 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1148 & _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_1104 & (io_in_d_valid & _T_1148 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1148 & _T_2 & ~_T_1104) 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_1131 & (io_in_d_valid & _T_1148 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1148 & _T_2 & ~_T_1131) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1148 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1148 & _T_2 & ~_T_1135) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1168 & (io_in_d_valid & _T_1148 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1148 & _T_2 & ~_T_1168) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1177 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1177 & _T_2 & ~source_ok_1) 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 (~_T_1108 & (io_in_d_valid & _T_1177 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1177 & _T_2 & ~_T_1108) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1112 & (io_in_d_valid & _T_1177 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1177 & _T_2 & ~_T_1112) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1194 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1194 & _T_2 & ~source_ok_1) 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_1108 & (io_in_d_valid & _T_1194 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1194 & _T_2 & ~_T_1108) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1168 & (io_in_d_valid & _T_1194 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1194 & _T_2 & ~_T_1168) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_1212 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1212 & _T_2 & ~source_ok_1) 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_1108 & (io_in_d_valid & _T_1212 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1212 & _T_2 & ~_T_1108) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1112 & (io_in_d_valid & _T_1212 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1212 & _T_2 & ~_T_1112) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1243 & (_T_1242 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1242 & ~reset & ~_T_1243) 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_1247 & (_T_1242 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1242 & ~reset & ~_T_1247) 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_1251 & (_T_1242 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1242 & ~reset & ~_T_1251) 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_1255 & (_T_1242 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1242 & ~reset & ~_T_1255) 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_1259 & (_T_1242 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1242 & ~reset & ~_T_1259) 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_1267 & (_T_1266 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1266 & _T_2 & ~_T_1267) 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_1271 & (_T_1266 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1266 & _T_2 & ~_T_1271) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param 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_1275 & (_T_1266 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1266 & _T_2 & ~_T_1275) 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_1279 & (_T_1266 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1266 & _T_2 & ~_T_1279) 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_1283 & (_T_1266 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1266 & _T_2 & ~_T_1283) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with 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_1287 & (_T_1266 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1266 & _T_2 & ~_T_1287) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with 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_1300 & (_T_1296 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1296 & ~reset & ~_T_1300) 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_1319 & (_T_1307 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1307 & _T_2 & ~_T_1319) 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_1325 & (_T_1307 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1307 & same_cycle_resp & _T_2 & ~_T_1325) 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_1329 & (_T_1307 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1307 & same_cycle_resp & _T_2 & ~_T_1329) 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_1337 & (_T_1307 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1307 & ~same_cycle_resp & _T_2 & ~_T_1337) 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_1341 & (_T_1307 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1307 & ~same_cycle_resp & _T_2 & ~_T_1341) 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_1353 & (_T_1351 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1351 & _T_2 & ~_T_1353) 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_1360 & _T_2) begin
+          $fatal; // @[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_1360) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1369 & ~reset) begin
+          $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_1369) 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_1403[0] & (_T_1395 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1395 & _T_2 & ~_T_1403[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_1413 & (_T_1395 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1395 & _T_2 & ~_T_1413) 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_1438 & ~reset) begin
+          $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_1438) 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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8: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[8: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 TLMonitor_26(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [31:0] io_in_a_bits_address,
+  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_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 [31:0] _is_aligned_T = io_in_a_bits_address & 32'h3; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[Misc.scala 209:26]
+  wire  mask_nbit = ~mask_bit; // @[Misc.scala 210:20]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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_eq_3 = mask_nbit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_eq_4 = mask_bit & mask_nbit_1; // @[Misc.scala 213:27]
+  wire  mask_eq_5 = mask_bit & mask_bit_1; // @[Misc.scala 213:27]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_nbit | mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_nbit | mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_nbit | mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_nbit | mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_bit | mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_bit | mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_bit | mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_bit | mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_502 = 8'hf == mask; // @[Monitor.scala 110:30]
+  wire  _T_577 = _T_27 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_599 = _T_32 | _T_577; // @[Parameters.scala 672:30]
+  wire  _T_1046 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'h0; // @[Edges.scala 230:25]
+  reg [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1209 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'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_1243 = 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_1246 = a_first_done & a_first_1; // @[Monitor.scala 652:27]
+  wire [3:0] a_opcodes_set_interm = a_first_done & a_first_1 ? 4'h1 : 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'h5 : 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_1250 = ~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_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[Monitor.scala 671:71]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1050 ? 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 [30:0] _GEN_23 = _T_1257 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire [30:0] _GEN_24 = _T_1257 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _T_1269 = inflight | _T_1243; // @[Monitor.scala 682:49]
+  wire  _T_1275 = _T_1127 | _T_1127; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 4'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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[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_1291 = _GEN_75 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _T_1256; // @[Monitor.scala 694:116]
+  wire  a_set_wo_ready = _GEN_15[0];
+  wire  d_clr_wo_ready = _GEN_21[0];
+  wire  _T_1310 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire  a_set = _GEN_16[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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _T_1345 ? _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_1363 = _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 <= 9'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 <= 9'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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (io_in_d_valid) 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 <= 9'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (io_in_d_valid & 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_wo_ready; // @[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 <= 9'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 <= 9'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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (io_in_d_valid) 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 <= 9'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 | io_in_d_valid) 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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (io_in_d_valid) 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 <= 9'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_599 & (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_599) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `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 PutFull address not aligned to size (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (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_502) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1046 & (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_1046) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\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_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\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_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_1257 & _T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_1243 & _T_2 & ~_T_1275) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1279 & (_T_1257 & _T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_1243 & _T_2 & ~_T_1279) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1287 & (_T_1257 & ~_T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~_T_1243 & _T_2 & ~_T_1287) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1291 & (_T_1257 & ~_T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~_T_1243 & _T_2 & ~_T_1291) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\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_a_ready & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~io_in_a_ready) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1319 & ~reset) begin
+          $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_1319) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_1345 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:91:33)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:91:33)\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[8:0];
+  _RAND_1 = {1{`RANDOM}};
+  address = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  d_first_counter = _RAND_2[8: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[0: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[8:0];
+  _RAND_12 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_12[8: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[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_4(
+  input         clock,
+  input         reset,
+  output        auto_in_1_a_ready,
+  input         auto_in_1_a_valid,
+  input  [31:0] auto_in_1_a_bits_address,
+  input  [63:0] auto_in_1_a_bits_data,
+  output        auto_in_1_d_valid,
+  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  [1:0]  auto_in_0_a_bits_source,
+  input  [31:0] auto_in_0_a_bits_address,
+  input  [7:0]  auto_in_0_a_bits_mask,
+  input  [63:0] auto_in_0_a_bits_data,
+  input         auto_in_0_a_bits_corrupt,
+  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 [1:0]  auto_in_0_d_bits_source,
+  output        auto_in_0_d_bits_sink,
+  output        auto_in_0_d_bits_denied,
+  output [63:0] auto_in_0_d_bits_data,
+  output        auto_in_0_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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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;
+`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 [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  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 [31:0] monitor_1_io_in_a_bits_address; // @[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  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  requestDOI_0_0 = ~auto_out_d_bits_source[2]; // @[Parameters.scala 54:32]
+  wire  requestDOI_0_1 = auto_out_d_bits_source == 3'h4; // @[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 [8:0] beatsAI_decode = _beatsAI_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  beatsAI_opdata = ~auto_in_0_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 9'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_10 = auto_in_0_a_valid | auto_in_1_a_valid; // @[Arbiter.scala 107:36]
+  wire  _T_11 = ~(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_10 : _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 [8:0] _GEN_3 = {{8'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [8: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 [63:0] _T_27 = muxStateEarly_0 ? auto_in_0_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_28 = muxStateEarly_1 ? auto_in_1_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_30 = muxStateEarly_0 ? auto_in_0_a_bits_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_31 = muxStateEarly_1 ? 8'hf : 8'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_33 = muxStateEarly_0 ? auto_in_0_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_34 = muxStateEarly_1 ? auto_in_1_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [2:0] in_0_a_bits_source = {{1'd0}, auto_in_0_a_bits_source}; // @[Xbar.scala 231:18 237:29]
+  wire [2:0] _T_36 = muxStateEarly_0 ? in_0_a_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_37 = muxStateEarly_1 ? 3'h4 : 3'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_39 = muxStateEarly_0 ? auto_in_0_a_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_40 = muxStateEarly_1 ? 4'h2 : 4'h0; // @[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)
+  );
+  TLMonitor_26 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_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_0_a_ready = auto_out_a_ready & allowed_0; // @[Arbiter.scala 123:31]
+  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[1: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_d_bits_corrupt = auto_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_out_a_valid = idle ? _T_10 : _out_0_a_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = muxStateEarly_0 ? auto_in_0_a_bits_opcode : 3'h0; // @[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_39 | _T_40; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = _T_36 | _T_37; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_address = _T_33 | _T_34; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_30 | _T_31; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = _T_27 | _T_28; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_corrupt = muxStateEarly_0 & auto_in_0_a_bits_corrupt; // @[Mux.scala 27:73]
+  assign auto_out_d_ready = requestDOI_0_0 & auto_in_0_d_ready | requestDOI_0_1; // @[Mux.scala 27:73]
+  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_a_bits_corrupt = auto_in_0_a_bits_corrupt; // @[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[1: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_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_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 <= 9'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 <= 9'h0;
+        end
+      end else begin
+        beatsLeft <= 9'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_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[8: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_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  [2:0]  io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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  [2: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 [63:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [63: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_44 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_53 = _T_44 & source_ok; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_59 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_61 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_64 = $signed(_T_62) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_66 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_69 = $signed(_T_67) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_71 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_74 = $signed(_T_72) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_76 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_79 = $signed(_T_77) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_81 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_84 = $signed(_T_82) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_86 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_87 = {1'b0,$signed(_T_86)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_89 = $signed(_T_87) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_90 = $signed(_T_89) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_91 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_92 = {1'b0,$signed(_T_91)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_94 = $signed(_T_92) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_95 = $signed(_T_94) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_96 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_97 = {1'b0,$signed(_T_96)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_99 = $signed(_T_97) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_100 = $signed(_T_99) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_101 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_102 = {1'b0,$signed(_T_101)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_104 = $signed(_T_102) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_105 = $signed(_T_104) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_106 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_107 = {1'b0,$signed(_T_106)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_109 = $signed(_T_107) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_110 = $signed(_T_109) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_111 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_112 = {1'b0,$signed(_T_111)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_114 = $signed(_T_112) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_115 = $signed(_T_114) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_224 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_228 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_229 = _T_228 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_233 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_237 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_423 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_436 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_461 = _T_44 & _T_65; // @[Parameters.scala 670:56]
+  wire  _T_463 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_530 = _T_60 | _T_70 | _T_75 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_110 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_531 = _T_463 & _T_530; // @[Parameters.scala 670:56]
+  wire  _T_533 = _T_461 | _T_531; // @[Parameters.scala 672:30]
+  wire  _T_543 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_547 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_555 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_628 = _T_60 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_629 = _T_463 & _T_628; // @[Parameters.scala 670:56]
+  wire  _T_650 = _T_461 | _T_629; // @[Parameters.scala 672:30]
+  wire  _T_652 = _T_53 & _T_650; // @[Monitor.scala 115:71]
+  wire  _T_670 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_781 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_782 = io_in_a_bits_mask & _T_781; // @[Monitor.scala 127:31]
+  wire  _T_783 = _T_782 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_787 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_801 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire [31:0] _T_809 = io_in_a_bits_address ^ 32'h4000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_810 = {1'b0,$signed(_T_809)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_812 = $signed(_T_810) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_813 = $signed(_T_812) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_832 = _T_65 | _T_813 | _T_95 | _T_100 | _T_105; // @[Parameters.scala 671:42]
+  wire  _T_833 = _T_801 & _T_832; // @[Parameters.scala 670:56]
+  wire  _T_879 = 4'h2 <= io_in_a_bits_size & io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:37]
+  wire  _T_886 = _T_879 & _T_115; // @[Parameters.scala 670:56]
+  wire  _T_889 = _T_833 | _T_886; // @[Parameters.scala 672:30]
+  wire  _T_890 = _T_53 & _T_889; // @[Monitor.scala 131:74]
+  wire  _T_900 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_908 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1021 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1029 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1121 = _T_53 & _T_461; // @[Monitor.scala 147:68]
+  wire  _T_1131 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1143 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_1147 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1151 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1155 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1159 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1163 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1167 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1178 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1182 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1195 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1215 = _T_1163 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1224 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1241 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1259 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1289 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1290 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1294 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1298 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1302 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1306 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1313 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1314 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1318 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1322 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1326 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1330 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1334 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [39:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [5:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [39: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 [39:0] _GEN_75 = {{24'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[39:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1340 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_1343 = _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 [4:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [5: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 [67:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [67:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_1345 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1347 = ~_T_1345[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [67:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 68'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1351 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1353 = ~_T_1147; // @[Monitor.scala 671:74]
+  wire  _T_1354 = io_in_d_valid & d_first_1 & ~_T_1147; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [78:0] _GEN_4 = {{63'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [78:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_1353 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_1353 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 675:91 677:21]
+  wire [78:0] _GEN_24 = _d_first_T & d_first_1 & _T_1353 ? _d_sizes_clr_T_5 : 79'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_1340 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_1364 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1366 = _T_1364[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_1371 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1372 = io_in_d_bits_opcode == _GEN_32 | _T_1371; // @[Monitor.scala 685:77]
+  wire  _T_1376 = 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_1383 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1384 = io_in_d_bits_opcode == _GEN_48 | _T_1383; // @[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_1388 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1398 = _T_1351 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1353; // @[Monitor.scala 694:116]
+  wire  _T_1400 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [39:0] a_sizes_set = _GEN_20[39:0];
+  wire [39:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [39:0] d_sizes_clr = _GEN_24[39:0];
+  wire [39:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [39: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_1409 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [39:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [39:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [39:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [39:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[39:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1435 = io_in_d_valid & d_first_2 & _T_1147; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_1147 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_69 = _d_first_T & d_first_2 & _T_1147 ? _d_sizes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 786:21]
+  wire [4:0] _T_1443 = 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_1453 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [39:0] d_sizes_clr_1 = _GEN_69[39:0];
+  wire [39:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [39: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_1473 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 20'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 <= 40'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 40'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 <= 9'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 <= 9'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_224 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_224) 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_229 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_229) 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_233 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_233) 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_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 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 (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 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_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 & ~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_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 & ~_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_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 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_224 & (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 & ~_T_224) 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_423 & (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 & ~_T_423) 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_229 & (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 & ~_T_229) 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_233 & (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 & ~_T_233) 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_53 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_53) 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_533 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_533) 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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_543 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_233) 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_652 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_652) 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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_543 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_547) 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_652 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_652) 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_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 (io_in_a_valid & _T_670 & ~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_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 (io_in_a_valid & _T_670 & ~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_543 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_543) 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_783 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_783) 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_890 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_890) 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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_900 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_900) 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_547 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_547) 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_890 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_890) 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_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~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_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~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_1021 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_1021) 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_547 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_547) 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_1121 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_1121) 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_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~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_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~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_1131 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_1131) 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_547 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_233) 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_1143 & (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_1143) 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_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _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_1151 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1151) 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_1155 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1159) 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_1163 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1163) 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_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _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_1167 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _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_1151 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1151) 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_1178 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1178) 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_1182 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1182) 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_1159 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1159) 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_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _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_1195 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _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_1151 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1151) 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_1178 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1178) 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_1182 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1182) 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_1215 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1215) 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_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _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_1155 & (io_in_d_valid & _T_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _T_2 & ~_T_1159) 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_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _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_1155 & (io_in_d_valid & _T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _T_2 & ~_T_1155) 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_1215 & (io_in_d_valid & _T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _T_2 & ~_T_1215) 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_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _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_1155 & (io_in_d_valid & _T_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _T_2 & ~_T_1159) 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_1290 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1290) 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_1294 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1294) 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_1298 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1298) 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_1302 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1302) 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_1306 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1306) 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_1314 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1314) 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_1318 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1318) 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_1322 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1322) 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_1326 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1326) 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_1330 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1330) 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_1334 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1334) 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_1347 & (_T_1343 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1343 & ~reset & ~_T_1347) 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_1366 & (_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 (_T_1354 & _T_2 & ~_T_1366) 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_1372 & (_T_1354 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & same_cycle_resp & _T_2 & ~_T_1372) 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_1376 & (_T_1354 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & same_cycle_resp & _T_2 & ~_T_1376) 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_1384 & (_T_1354 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & ~same_cycle_resp & _T_2 & ~_T_1384) 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_1388 & (_T_1354 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & ~same_cycle_resp & _T_2 & ~_T_1388) 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_1400 & (_T_1398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1398 & _T_2 & ~_T_1400) 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_1409 & ~reset) begin
+          $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_1409) 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_1443[0] & (_T_1435 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1435 & _T_2 & ~_T_1443[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_1453 & (_T_1435 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1435 & _T_2 & ~_T_1453) 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_1473 & ~reset) begin
+          $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_1473) 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[8: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {2{`RANDOM}};
+  inflight_sizes = _RAND_15[39:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[39:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63:0] auto_in_d_bits_data,
+  output        auto_in_d_bits_corrupt,
+  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 [2:0]  auto_out_8_a_bits_source,
+  output [20:0] auto_out_8_a_bits_address,
+  output [7:0]  auto_out_8_a_bits_mask,
+  output [63: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  [1:0]  auto_out_8_d_bits_param,
+  input  [2:0]  auto_out_8_d_bits_size,
+  input  [2:0]  auto_out_8_d_bits_source,
+  input         auto_out_8_d_bits_sink,
+  input         auto_out_8_d_bits_denied,
+  input  [63:0] auto_out_8_d_bits_data,
+  input         auto_out_8_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 [2:0]  auto_out_7_a_bits_source,
+  output [20:0] auto_out_7_a_bits_address,
+  output [7:0]  auto_out_7_a_bits_mask,
+  output [63: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  [1:0]  auto_out_7_d_bits_param,
+  input  [2:0]  auto_out_7_d_bits_size,
+  input  [2:0]  auto_out_7_d_bits_source,
+  input         auto_out_7_d_bits_sink,
+  input         auto_out_7_d_bits_denied,
+  input  [63:0] auto_out_7_d_bits_data,
+  input         auto_out_7_d_bits_corrupt,
+  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 [2:0]  auto_out_6_a_bits_source,
+  output [16:0] auto_out_6_a_bits_address,
+  output [7: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  [2:0]  auto_out_6_d_bits_source,
+  input  [63: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 [2:0]  auto_out_5_a_bits_source,
+  output [31:0] auto_out_5_a_bits_address,
+  output [7:0]  auto_out_5_a_bits_mask,
+  output [63:0] auto_out_5_a_bits_data,
+  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  [2:0]  auto_out_5_d_bits_source,
+  input         auto_out_5_d_bits_sink,
+  input         auto_out_5_d_bits_denied,
+  input  [63: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 [2:0]  auto_out_4_a_bits_source,
+  output [11:0] auto_out_4_a_bits_address,
+  output [7:0]  auto_out_4_a_bits_mask,
+  output [63: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  [2:0]  auto_out_4_d_bits_source,
+  input  [63: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 [2:0]  auto_out_3_a_bits_source,
+  output [25:0] auto_out_3_a_bits_address,
+  output [7:0]  auto_out_3_a_bits_mask,
+  output [63: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  [2:0]  auto_out_3_d_bits_source,
+  input  [63: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 [2:0]  auto_out_2_a_bits_source,
+  output [27:0] auto_out_2_a_bits_address,
+  output [7:0]  auto_out_2_a_bits_mask,
+  output [63: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  [2:0]  auto_out_2_d_bits_source,
+  input  [63: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 [2:0]  auto_out_1_a_bits_source,
+  output [29:0] auto_out_1_a_bits_address,
+  output [7:0]  auto_out_1_a_bits_mask,
+  output [63: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  [2:0]  auto_out_1_d_bits_source,
+  input         auto_out_1_d_bits_sink,
+  input         auto_out_1_d_bits_denied,
+  input  [63: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 [2:0]  auto_out_0_a_bits_source,
+  output [13:0] auto_out_0_a_bits_address,
+  output [7: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  [2:0]  auto_out_0_d_bits_source,
+  input         auto_out_0_d_bits_sink,
+  input         auto_out_0_d_bits_denied,
+  input  [63: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;
+  reg [31:0] _RAND_10;
+`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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 [8:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 9'h0; // @[Arbiter.scala 88:28]
+  wire [8:0] readys_valid = {auto_out_8_d_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 [8:0] readys_mask; // @[Arbiter.scala 23:23]
+  wire [8:0] _readys_filter_T = ~readys_mask; // @[Arbiter.scala 24:30]
+  wire [8:0] _readys_filter_T_1 = readys_valid & _readys_filter_T; // @[Arbiter.scala 24:28]
+  wire [17:0] readys_filter = {_readys_filter_T_1,auto_out_8_d_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]
+  wire [17:0] _GEN_1 = {{1'd0}, readys_filter[17:1]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_1 = readys_filter | _GEN_1; // @[package.scala 253:43]
+  wire [17:0] _GEN_2 = {{2'd0}, _readys_unready_T_1[17:2]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_3 = _readys_unready_T_1 | _GEN_2; // @[package.scala 253:43]
+  wire [17:0] _GEN_3 = {{4'd0}, _readys_unready_T_3[17:4]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_5 = _readys_unready_T_3 | _GEN_3; // @[package.scala 253:43]
+  wire [17:0] _GEN_4 = {{8'd0}, _readys_unready_T_5[17:8]}; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_7 = _readys_unready_T_5 | _GEN_4; // @[package.scala 253:43]
+  wire [17:0] _readys_unready_T_10 = {readys_mask, 9'h0}; // @[Arbiter.scala 25:66]
+  wire [17:0] _GEN_5 = {{1'd0}, _readys_unready_T_7[17:1]}; // @[Arbiter.scala 25:58]
+  wire [17:0] readys_unready = _GEN_5 | _readys_unready_T_10; // @[Arbiter.scala 25:58]
+  wire [8:0] _readys_readys_T_2 = readys_unready[17:9] & readys_unready[8:0]; // @[Arbiter.scala 26:39]
+  wire [8: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 [2:0] _T_148 = muxStateEarly_0 ? auto_out_0_d_bits_source : 3'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 [2:0] _T_149 = muxStateEarly_1 ? auto_out_1_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_157 = _T_148 | _T_149; // @[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 [2:0] _T_150 = muxStateEarly_2 ? auto_out_2_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_158 = _T_157 | _T_150; // @[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 [2:0] _T_151 = muxStateEarly_3 ? auto_out_3_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_159 = _T_158 | _T_151; // @[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 [2:0] _T_152 = muxStateEarly_4 ? auto_out_4_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_160 = _T_159 | _T_152; // @[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 [2:0] _T_153 = muxStateEarly_5 ? auto_out_5_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_161 = _T_160 | _T_153; // @[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 [2:0] _T_154 = muxStateEarly_6 ? auto_out_6_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_162 = _T_161 | _T_154; // @[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 [2:0] _T_155 = muxStateEarly_7 ? auto_out_7_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_163 = _T_162 | _T_155; // @[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 [2:0] _T_156 = muxStateEarly_8 ? auto_out_8_d_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [31:0] _requestAIO_T = auto_in_a_bits_address ^ 32'h2000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_1 = {1'b0,$signed(_requestAIO_T)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_3 = $signed(_requestAIO_T_1) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_0 = $signed(_requestAIO_T_3) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_5 = auto_in_a_bits_address ^ 32'h4000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_6 = {1'b0,$signed(_requestAIO_T_5)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_8 = $signed(_requestAIO_T_6) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_9 = $signed(_requestAIO_T_8) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_10 = auto_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_11 = {1'b0,$signed(_requestAIO_T_10)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_13 = $signed(_requestAIO_T_11) & 33'shba130000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_14 = $signed(_requestAIO_T_13) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_15 = auto_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_16 = {1'b0,$signed(_requestAIO_T_15)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_18 = $signed(_requestAIO_T_16) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_19 = $signed(_requestAIO_T_18) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_20 = auto_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_21 = {1'b0,$signed(_requestAIO_T_20)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_23 = $signed(_requestAIO_T_21) & 33'shba134000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_24 = $signed(_requestAIO_T_23) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_25 = auto_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_26 = {1'b0,$signed(_requestAIO_T_25)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_28 = $signed(_requestAIO_T_26) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_29 = $signed(_requestAIO_T_28) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_30 = auto_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_31 = {1'b0,$signed(_requestAIO_T_30)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_33 = $signed(_requestAIO_T_31) & 33'sha0000000; // @[Parameters.scala 137:52]
+  wire  _requestAIO_T_34 = $signed(_requestAIO_T_33) == 33'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 [31:0] _requestAIO_T_40 = auto_in_a_bits_address ^ 32'h8000000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_41 = {1'b0,$signed(_requestAIO_T_40)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_43 = $signed(_requestAIO_T_41) & 33'shb8000000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_2 = $signed(_requestAIO_T_43) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_45 = auto_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_46 = {1'b0,$signed(_requestAIO_T_45)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_48 = $signed(_requestAIO_T_46) & 33'shba130000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_3 = $signed(_requestAIO_T_48) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [32:0] _requestAIO_T_51 = {1'b0,$signed(auto_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_53 = $signed(_requestAIO_T_51) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_4 = $signed(_requestAIO_T_53) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_55 = auto_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_56 = {1'b0,$signed(_requestAIO_T_55)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_58 = $signed(_requestAIO_T_56) & 33'shba134000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_5 = $signed(_requestAIO_T_58) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_60 = auto_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_61 = {1'b0,$signed(_requestAIO_T_60)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_63 = $signed(_requestAIO_T_61) & 33'shba130000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_6 = $signed(_requestAIO_T_63) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_65 = auto_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_66 = {1'b0,$signed(_requestAIO_T_65)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_68 = $signed(_requestAIO_T_66) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_7 = $signed(_requestAIO_T_68) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _requestAIO_T_70 = auto_in_a_bits_address ^ 32'h110000; // @[Parameters.scala 137:31]
+  wire [32:0] _requestAIO_T_71 = {1'b0,$signed(_requestAIO_T_70)}; // @[Parameters.scala 137:49]
+  wire [32:0] _requestAIO_T_73 = $signed(_requestAIO_T_71) & 33'shba136000; // @[Parameters.scala 137:52]
+  wire  requestAIO_0_8 = $signed(_requestAIO_T_73) == 33'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 [8:0] beatsDO_decode = _beatsDO_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata = auto_out_0_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [8:0] beatsDO_0 = beatsDO_opdata ? beatsDO_decode : 9'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 [2:0] beatsDO_decode_1 = _beatsDO_decode_T_7[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_1 = auto_out_1_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_1 = beatsDO_opdata_1 ? beatsDO_decode_1 : 3'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 [2:0] beatsDO_decode_2 = _beatsDO_decode_T_11[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_2 = auto_out_2_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_2 = beatsDO_opdata_2 ? beatsDO_decode_2 : 3'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 [2:0] beatsDO_decode_3 = _beatsDO_decode_T_15[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_3 = auto_out_3_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_3 = beatsDO_opdata_3 ? beatsDO_decode_3 : 3'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 [2:0] beatsDO_decode_4 = _beatsDO_decode_T_19[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_4 = auto_out_4_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_4 = beatsDO_opdata_4 ? beatsDO_decode_4 : 3'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 [2:0] beatsDO_decode_5 = _beatsDO_decode_T_23[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_5 = auto_out_5_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_5 = beatsDO_opdata_5 ? beatsDO_decode_5 : 3'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 [2:0] beatsDO_decode_6 = _beatsDO_decode_T_27[5:3]; // @[Edges.scala 219:59]
+  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 [2:0] beatsDO_decode_7 = _beatsDO_decode_T_31[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_7 = auto_out_7_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_7 = beatsDO_opdata_7 ? beatsDO_decode_7 : 3'h0; // @[Edges.scala 220:14]
+  wire [3:0] out_1_8_d_bits_size = {{1'd0}, auto_out_8_d_bits_size}; // @[BundleMap.scala 247:19 Xbar.scala 288:19]
+  wire [20:0] _beatsDO_decode_T_33 = 21'h3f << out_1_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 [2:0] beatsDO_decode_8 = _beatsDO_decode_T_35[5:3]; // @[Edges.scala 219:59]
+  wire  beatsDO_opdata_8 = auto_out_8_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [2:0] beatsDO_8 = beatsDO_opdata_8 ? beatsDO_decode_8 : 3'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 [8:0] _readys_mask_T = readys_readys & readys_valid; // @[Arbiter.scala 28:29]
+  wire [9:0] _readys_mask_T_1 = {_readys_mask_T, 1'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_3 = _readys_mask_T | _readys_mask_T_1[8:0]; // @[package.scala 244:43]
+  wire [10:0] _readys_mask_T_4 = {_readys_mask_T_3, 2'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_6 = _readys_mask_T_3 | _readys_mask_T_4[8:0]; // @[package.scala 244:43]
+  wire [12:0] _readys_mask_T_7 = {_readys_mask_T_6, 4'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_9 = _readys_mask_T_6 | _readys_mask_T_7[8:0]; // @[package.scala 244:43]
+  wire [16:0] _readys_mask_T_10 = {_readys_mask_T_9, 8'h0}; // @[package.scala 244:48]
+  wire [8:0] _readys_mask_T_12 = _readys_mask_T_9 | _readys_mask_T_10[8: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_T = prefixOR_8 | earlyWinner_8; // @[Arbiter.scala 104:53]
+  wire  _T_26 = ~prefixOR_8 | ~earlyWinner_8; // @[Arbiter.scala 105:64]
+  wire  _T_45 = 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; // @[Arbiter.scala 107:36]
+  wire  _T_46 = ~(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); // @[Arbiter.scala 107:15]
+  wire [8:0] maskedBeats_0 = earlyWinner_0 ? beatsDO_0 : 9'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_1 = earlyWinner_1 ? beatsDO_1 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_2 = earlyWinner_2 ? beatsDO_2 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_3 = earlyWinner_3 ? beatsDO_3 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_4 = earlyWinner_4 ? beatsDO_4 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_5 = earlyWinner_5 ? beatsDO_5 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_6 = earlyWinner_6 ? beatsDO_decode_6 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_7 = earlyWinner_7 ? beatsDO_7 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [2:0] maskedBeats_8 = earlyWinner_8 ? beatsDO_8 : 3'h0; // @[Arbiter.scala 111:73]
+  wire [8:0] _GEN_6 = {{6'd0}, maskedBeats_1}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T = maskedBeats_0 | _GEN_6; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_7 = {{6'd0}, maskedBeats_2}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T_1 = _initBeats_T | _GEN_7; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_8 = {{6'd0}, maskedBeats_3}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T_2 = _initBeats_T_1 | _GEN_8; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_9 = {{6'd0}, maskedBeats_4}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T_3 = _initBeats_T_2 | _GEN_9; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_10 = {{6'd0}, maskedBeats_5}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T_4 = _initBeats_T_3 | _GEN_10; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_11 = {{6'd0}, maskedBeats_6}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T_5 = _initBeats_T_4 | _GEN_11; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_12 = {{6'd0}, maskedBeats_7}; // @[Arbiter.scala 112:44]
+  wire [8:0] _initBeats_T_6 = _initBeats_T_5 | _GEN_12; // @[Arbiter.scala 112:44]
+  wire [8:0] _GEN_13 = {{6'd0}, maskedBeats_8}; // @[Arbiter.scala 112:44]
+  wire [8:0] initBeats = _initBeats_T_6 | _GEN_13; // @[Arbiter.scala 112:44]
+  wire  _sink_ACancel_earlyValid_T_24 = 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; // @[Mux.scala 27:73]
+  wire  sink_ACancel_19_earlyValid = idle ? _T_45 : _sink_ACancel_earlyValid_T_24; // @[Arbiter.scala 125:29]
+  wire  _beatsLeft_T_2 = auto_in_d_ready & sink_ACancel_19_earlyValid; // @[ReadyValidCancel.scala 49:33]
+  wire [8:0] _GEN_14 = {{8'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [8:0] _beatsLeft_T_4 = beatsLeft - _GEN_14; // @[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 [63:0] _T_97 = muxStateEarly_0 ? auto_out_0_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_98 = muxStateEarly_1 ? auto_out_1_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_99 = muxStateEarly_2 ? auto_out_2_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_100 = muxStateEarly_3 ? auto_out_3_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_101 = muxStateEarly_4 ? auto_out_4_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_102 = muxStateEarly_5 ? auto_out_5_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_103 = muxStateEarly_6 ? auto_out_6_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_104 = muxStateEarly_7 ? auto_out_7_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_105 = muxStateEarly_8 ? auto_out_8_d_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_106 = _T_97 | _T_98; // @[Mux.scala 27:73]
+  wire [63:0] _T_107 = _T_106 | _T_99; // @[Mux.scala 27:73]
+  wire [63:0] _T_108 = _T_107 | _T_100; // @[Mux.scala 27:73]
+  wire [63:0] _T_109 = _T_108 | _T_101; // @[Mux.scala 27:73]
+  wire [63:0] _T_110 = _T_109 | _T_102; // @[Mux.scala 27:73]
+  wire [63:0] _T_111 = _T_110 | _T_103; // @[Mux.scala 27:73]
+  wire [63:0] _T_112 = _T_111 | _T_104; // @[Mux.scala 27:73]
+  wire [3:0] _T_165 = muxStateEarly_0 ? auto_out_0_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_166 = muxStateEarly_1 ? out_1_1_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_167 = muxStateEarly_2 ? out_1_2_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_168 = muxStateEarly_3 ? out_1_3_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_169 = muxStateEarly_4 ? out_1_4_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_170 = muxStateEarly_5 ? out_1_5_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_171 = muxStateEarly_6 ? out_1_6_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_172 = muxStateEarly_7 ? out_1_7_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_173 = muxStateEarly_8 ? out_1_8_d_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_174 = _T_165 | _T_166; // @[Mux.scala 27:73]
+  wire [3:0] _T_175 = _T_174 | _T_167; // @[Mux.scala 27:73]
+  wire [3:0] _T_176 = _T_175 | _T_168; // @[Mux.scala 27:73]
+  wire [3:0] _T_177 = _T_176 | _T_169; // @[Mux.scala 27:73]
+  wire [3:0] _T_178 = _T_177 | _T_170; // @[Mux.scala 27:73]
+  wire [3:0] _T_179 = _T_178 | _T_171; // @[Mux.scala 27:73]
+  wire [3:0] _T_180 = _T_179 | _T_172; // @[Mux.scala 27:73]
+  wire [1:0] _T_182 = muxStateEarly_0 ? auto_out_0_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_183 = muxStateEarly_1 ? auto_out_1_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_187 = muxStateEarly_5 ? auto_out_5_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_189 = muxStateEarly_7 ? auto_out_7_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_190 = muxStateEarly_8 ? auto_out_8_d_bits_param : 2'h0; // @[Mux.scala 27:73]
+  wire [1:0] _T_191 = _T_182 | _T_183; // @[Mux.scala 27:73]
+  wire [1:0] _T_195 = _T_191 | _T_187; // @[Mux.scala 27:73]
+  wire [1:0] _T_197 = _T_195 | _T_189; // @[Mux.scala 27:73]
+  wire [2:0] _T_199 = muxStateEarly_0 ? auto_out_0_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_200 = muxStateEarly_1 ? auto_out_1_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_201 = muxStateEarly_2 ? auto_out_2_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_202 = muxStateEarly_3 ? auto_out_3_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_203 = muxStateEarly_4 ? auto_out_4_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_204 = muxStateEarly_5 ? auto_out_5_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_205 = muxStateEarly_6 ? 3'h1 : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_206 = muxStateEarly_7 ? auto_out_7_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_207 = muxStateEarly_8 ? auto_out_8_d_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_208 = _T_199 | _T_200; // @[Mux.scala 27:73]
+  wire [2:0] _T_209 = _T_208 | _T_201; // @[Mux.scala 27:73]
+  wire [2:0] _T_210 = _T_209 | _T_202; // @[Mux.scala 27:73]
+  wire [2:0] _T_211 = _T_210 | _T_203; // @[Mux.scala 27:73]
+  wire [2:0] _T_212 = _T_211 | _T_204; // @[Mux.scala 27:73]
+  wire [2:0] _T_213 = _T_212 | _T_205; // @[Mux.scala 27:73]
+  wire [2:0] _T_214 = _T_213 | _T_206; // @[Mux.scala 27:73]
+  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 = 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; // @[Mux.scala 27:73]
+  assign auto_in_d_valid = idle ? _T_45 : _sink_ACancel_earlyValid_T_24; // @[Arbiter.scala 125:29]
+  assign auto_in_d_bits_opcode = _T_214 | _T_207; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_param = _T_197 | _T_190; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_size = _T_180 | _T_173; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_source = _T_163 | _T_156; // @[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_7 & auto_out_7_d_bits_sink | muxStateEarly_8 &
+    auto_out_8_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_7 & auto_out_7_d_bits_denied | muxStateEarly_8 &
+    auto_out_8_d_bits_denied; // @[Mux.scala 27:73]
+  assign auto_in_d_bits_data = _T_112 | _T_105; // @[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_7 &
+    auto_out_7_d_bits_corrupt | muxStateEarly_8 & auto_out_8_d_bits_corrupt; // @[Mux.scala 27:73]
+  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[2:0]; // @[Xbar.scala 132:50 BundleMap.scala 247:19]
+  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[20: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[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[20: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[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[16: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_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; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  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_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[29: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[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 |
+    requestAIO_0_8 & auto_out_8_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_45 : _sink_ACancel_earlyValid_T_24; // @[Arbiter.scala 125:29]
+  assign monitor_io_in_d_bits_opcode = _T_214 | _T_207; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_param = _T_197 | _T_190; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_size = _T_180 | _T_173; // @[Mux.scala 27:73]
+  assign monitor_io_in_d_bits_source = _T_163 | _T_156; // @[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_7 & auto_out_7_d_bits_sink | muxStateEarly_8 &
+    auto_out_8_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_7 & auto_out_7_d_bits_denied
+     | muxStateEarly_8 & auto_out_8_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_7 &
+    auto_out_7_d_bits_corrupt | muxStateEarly_8 & auto_out_8_d_bits_corrupt; // @[Mux.scala 27:73]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiter.scala 87:30]
+      beatsLeft <= 9'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 <= 9'h1ff; // @[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
+    `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) & _T_26) & _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) & _T_26)) 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) | _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) |
+          _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_46 | _T_45) & _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_46 | _T_45)) 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[8:0];
+  _RAND_1 = {1{`RANDOM}};
+  readys_mask = _RAND_1[8: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];
+`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  [2:0]  io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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  [2: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 [63:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [63: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_44 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_53 = _T_44 & source_ok; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_59 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_61 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_64 = $signed(_T_62) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_66 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_69 = $signed(_T_67) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_71 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_74 = $signed(_T_72) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_76 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_79 = $signed(_T_77) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_81 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_84 = $signed(_T_82) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_86 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_87 = {1'b0,$signed(_T_86)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_89 = $signed(_T_87) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_90 = $signed(_T_89) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_91 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_92 = {1'b0,$signed(_T_91)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_94 = $signed(_T_92) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_95 = $signed(_T_94) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_96 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_97 = {1'b0,$signed(_T_96)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_99 = $signed(_T_97) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_100 = $signed(_T_99) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_101 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_102 = {1'b0,$signed(_T_101)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_104 = $signed(_T_102) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_105 = $signed(_T_104) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_106 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_107 = {1'b0,$signed(_T_106)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_109 = $signed(_T_107) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_110 = $signed(_T_109) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_111 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_112 = {1'b0,$signed(_T_111)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_114 = $signed(_T_112) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_115 = $signed(_T_114) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_224 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_228 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_229 = _T_228 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_233 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_237 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_423 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_436 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_461 = _T_44 & _T_65; // @[Parameters.scala 670:56]
+  wire  _T_463 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_530 = _T_60 | _T_70 | _T_75 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_110 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_531 = _T_463 & _T_530; // @[Parameters.scala 670:56]
+  wire  _T_533 = _T_461 | _T_531; // @[Parameters.scala 672:30]
+  wire  _T_543 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_547 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_555 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_628 = _T_60 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_629 = _T_463 & _T_628; // @[Parameters.scala 670:56]
+  wire  _T_650 = _T_461 | _T_629; // @[Parameters.scala 672:30]
+  wire  _T_652 = _T_53 & _T_650; // @[Monitor.scala 115:71]
+  wire  _T_670 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_781 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_782 = io_in_a_bits_mask & _T_781; // @[Monitor.scala 127:31]
+  wire  _T_783 = _T_782 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_787 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_801 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire [31:0] _T_809 = io_in_a_bits_address ^ 32'h4000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_810 = {1'b0,$signed(_T_809)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_812 = $signed(_T_810) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_813 = $signed(_T_812) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_832 = _T_65 | _T_813 | _T_95 | _T_100 | _T_105; // @[Parameters.scala 671:42]
+  wire  _T_833 = _T_801 & _T_832; // @[Parameters.scala 670:56]
+  wire  _T_879 = 4'h2 <= io_in_a_bits_size & io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:37]
+  wire  _T_886 = _T_879 & _T_115; // @[Parameters.scala 670:56]
+  wire  _T_889 = _T_833 | _T_886; // @[Parameters.scala 672:30]
+  wire  _T_890 = _T_53 & _T_889; // @[Monitor.scala 131:74]
+  wire  _T_900 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_908 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_1021 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1029 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1121 = _T_53 & _T_461; // @[Monitor.scala 147:68]
+  wire  _T_1131 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1143 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_1147 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1151 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1155 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1159 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1163 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1167 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1178 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1182 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1195 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1215 = _T_1163 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1224 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1241 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1259 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1289 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1290 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1294 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1298 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1302 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1306 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1313 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1314 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1318 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1322 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1326 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1330 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1334 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [39:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [5:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [39: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 [39:0] _GEN_75 = {{24'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[39:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1340 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1343 = _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 [4:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [5: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 [67:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [67:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_1345 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1347 = ~_T_1345[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [67:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 68'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1351 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1353 = ~_T_1147; // @[Monitor.scala 671:74]
+  wire  _T_1354 = io_in_d_valid & d_first_1 & ~_T_1147; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1147 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [78:0] _GEN_4 = {{63'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [78:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_1353 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_1353 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 675:91 677:21]
+  wire [78:0] _GEN_24 = _d_first_T & d_first_1 & _T_1353 ? _d_sizes_clr_T_5 : 79'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_1340 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_1364 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1366 = _T_1364[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_1371 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1372 = io_in_d_bits_opcode == _GEN_32 | _T_1371; // @[Monitor.scala 685:77]
+  wire  _T_1376 = 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_1383 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1384 = io_in_d_bits_opcode == _GEN_48 | _T_1383; // @[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_1388 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1398 = _T_1351 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1353; // @[Monitor.scala 694:116]
+  wire  _T_1400 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_1407 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [39:0] a_sizes_set = _GEN_20[39:0];
+  wire [39:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [39:0] d_sizes_clr = _GEN_24[39:0];
+  wire [39:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [39: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_1416 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [39:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [39:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [39:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [39:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[39:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1442 = io_in_d_valid & d_first_2 & _T_1147; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_1147 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_69 = _d_first_T & d_first_2 & _T_1147 ? _d_sizes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 786:21]
+  wire [4:0] _T_1450 = 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_1460 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [39:0] d_sizes_clr_1 = _GEN_69[39:0];
+  wire [39:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [39: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_1485 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 20'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 <= 40'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 40'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 <= 9'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 <= 9'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_224 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_224) 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_229 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_229) 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_233 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_233) 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_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 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 (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 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_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 & ~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_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 & ~_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_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 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_224 & (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 & ~_T_224) 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_423 & (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 & ~_T_423) 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_229 & (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 & ~_T_229) 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_233 & (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 & ~_T_233) 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_53 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_53) 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_533 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_533) 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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_543 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_233) 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_652 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_652) 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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_543 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_547) 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_652 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_652) 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_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 (io_in_a_valid & _T_670 & ~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_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 (io_in_a_valid & _T_670 & ~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_543 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_543) 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_783 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_783) 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_890 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_890) 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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_900 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_900) 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_547 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_547) 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_890 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_890) 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_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~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_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~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_1021 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_1021) 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_547 & (io_in_a_valid & _T_908 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_908 & ~reset & ~_T_547) 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_1121 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_1121) 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_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~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_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~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_1131 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_1131) 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_547 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_1029 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1029 & ~reset & ~_T_233) 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_1143 & (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_1143) 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_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _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_1151 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1151) 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_1155 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1159) 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_1163 & (io_in_d_valid & _T_1147 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1147 & _T_2 & ~_T_1163) 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_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _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_1167 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _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_1151 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1151) 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_1178 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1178) 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_1182 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1182) 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_1159 & (io_in_d_valid & _T_1167 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1167 & _T_2 & ~_T_1159) 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_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _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_1195 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _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_1151 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1151) 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_1178 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1178) 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_1182 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1182) 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_1215 & (io_in_d_valid & _T_1195 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1195 & _T_2 & ~_T_1215) 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_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _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_1155 & (io_in_d_valid & _T_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1224 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1224 & _T_2 & ~_T_1159) 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_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _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_1155 & (io_in_d_valid & _T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _T_2 & ~_T_1155) 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_1215 & (io_in_d_valid & _T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1241 & _T_2 & ~_T_1215) 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_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _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_1155 & (io_in_d_valid & _T_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _T_2 & ~_T_1155) 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_1159 & (io_in_d_valid & _T_1259 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1259 & _T_2 & ~_T_1159) 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_1290 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1290) 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_1294 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1294) 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_1298 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1298) 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_1302 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1302) 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_1306 & (_T_1289 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1289 & ~reset & ~_T_1306) 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_1314 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1314) 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_1318 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1318) 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_1322 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1322) 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_1326 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1326) 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_1330 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1330) 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_1334 & (_T_1313 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1313 & _T_2 & ~_T_1334) 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_1347 & (_T_1343 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1343 & ~reset & ~_T_1347) 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_1366 & (_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 (_T_1354 & _T_2 & ~_T_1366) 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_1372 & (_T_1354 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & same_cycle_resp & _T_2 & ~_T_1372) 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_1376 & (_T_1354 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & same_cycle_resp & _T_2 & ~_T_1376) 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_1384 & (_T_1354 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & ~same_cycle_resp & _T_2 & ~_T_1384) 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_1388 & (_T_1354 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1354 & ~same_cycle_resp & _T_2 & ~_T_1388) 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_1400 & (_T_1398 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1398 & _T_2 & ~_T_1400) 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_1407 & _T_2) begin
+          $fatal; // @[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_1407) 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_1416 & ~reset) begin
+          $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_1416) 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_1450[0] & (_T_1442 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1442 & _T_2 & ~_T_1450[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_1460 & (_T_1442 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1442 & _T_2 & ~_T_1460) 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_1485 & ~reset) begin
+          $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_1485) 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[8: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {2{`RANDOM}};
+  inflight_sizes = _RAND_15[39:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[39:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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_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  [3:0]  io_enq_bits_size,
+  input  [2:0]  io_enq_bits_source,
+  input  [31:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  input  [63: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 [2:0]  io_deq_bits_source,
+  output [31:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_mask,
+  output [63: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 [63: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [31: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 [31:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[7:0];
+  _RAND_6 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_11(
+  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  [2:0]  io_enq_bits_source,
+  input         io_enq_bits_sink,
+  input         io_enq_bits_denied,
+  input  [63: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 [2:0]  io_deq_bits_source,
+  output        io_deq_bits_sink,
+  output        io_deq_bits_denied,
+  output [63: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 [63: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[2: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 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_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  [3:0]  auto_in_a_bits_size,
+  input  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 [2:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2: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 [63: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 [2: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 [63: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_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_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_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_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_11 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_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  [2:0]  io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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  [2: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 [63:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [63: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_44 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_53 = _T_44 & source_ok; // @[Parameters.scala 1160:30]
+  wire [32:0] _T_59 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_61 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_64 = $signed(_T_62) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_66 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_67 = {1'b0,$signed(_T_66)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_69 = $signed(_T_67) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_70 = $signed(_T_69) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_71 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_72 = {1'b0,$signed(_T_71)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_74 = $signed(_T_72) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_75 = $signed(_T_74) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_76 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_77 = {1'b0,$signed(_T_76)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_79 = $signed(_T_77) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_80 = $signed(_T_79) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_81 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_82 = {1'b0,$signed(_T_81)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_84 = $signed(_T_82) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_85 = $signed(_T_84) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_86 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_87 = {1'b0,$signed(_T_86)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_89 = $signed(_T_87) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_90 = $signed(_T_89) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_91 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_92 = {1'b0,$signed(_T_91)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_94 = $signed(_T_92) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_95 = $signed(_T_94) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_96 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_97 = {1'b0,$signed(_T_96)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_99 = $signed(_T_97) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_100 = $signed(_T_99) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_101 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_102 = {1'b0,$signed(_T_101)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_104 = $signed(_T_102) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_105 = $signed(_T_104) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_106 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_107 = {1'b0,$signed(_T_106)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_109 = $signed(_T_107) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_110 = $signed(_T_109) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_111 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_112 = {1'b0,$signed(_T_111)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_114 = $signed(_T_112) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_115 = $signed(_T_114) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_224 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_228 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_229 = _T_228 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_233 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_237 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_423 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_436 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_461 = _T_44 & _T_65; // @[Parameters.scala 670:56]
+  wire  _T_463 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_530 = _T_60 | _T_70 | _T_75 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_110 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_531 = _T_463 & _T_530; // @[Parameters.scala 670:56]
+  wire  _T_533 = _T_461 | _T_531; // @[Parameters.scala 672:30]
+  wire  _T_543 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_547 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_555 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_628 = _T_60 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_629 = _T_463 & _T_628; // @[Parameters.scala 670:56]
+  wire  _T_650 = _T_461 | _T_629; // @[Parameters.scala 672:30]
+  wire  _T_652 = _T_53 & _T_650; // @[Monitor.scala 115:71]
+  wire  _T_670 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_781 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_782 = io_in_a_bits_mask & _T_781; // @[Monitor.scala 127:31]
+  wire  _T_783 = _T_782 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_787 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_801 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_856 = _T_60 | _T_65 | _T_80 | _T_85 | _T_90 | _T_95 | _T_100 | _T_105 | _T_115; // @[Parameters.scala 671:42]
+  wire  _T_857 = _T_801 & _T_856; // @[Parameters.scala 670:56]
+  wire  _T_879 = _T_53 & _T_857; // @[Monitor.scala 131:74]
+  wire  _T_889 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_897 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_999 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_1007 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1099 = _T_53 & _T_461; // @[Monitor.scala 147:68]
+  wire  _T_1109 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1121 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_1125 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1129 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1133 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1137 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1141 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1145 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1156 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1160 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1173 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1193 = _T_1141 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1202 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1219 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1237 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1267 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1268 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1272 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1276 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1280 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1284 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1291 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1292 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1296 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1300 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1304 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1308 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1312 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [39:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [5:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [39: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 [39:0] _GEN_75 = {{24'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[39:1]}; // @[Monitor.scala 638:144]
+  wire  _T_1318 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_1321 = _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 [4:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [5: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 [67:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [67:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_1323 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1325 = ~_T_1323[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [67:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 68'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1329 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1331 = ~_T_1125; // @[Monitor.scala 671:74]
+  wire  _T_1332 = io_in_d_valid & d_first_1 & ~_T_1125; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1125 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [78:0] _GEN_4 = {{63'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [78:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_1331 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_1331 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 675:91 677:21]
+  wire [78:0] _GEN_24 = _d_first_T & d_first_1 & _T_1331 ? _d_sizes_clr_T_5 : 79'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_1318 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_1342 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1344 = _T_1342[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_1349 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1350 = io_in_d_bits_opcode == _GEN_32 | _T_1349; // @[Monitor.scala 685:77]
+  wire  _T_1354 = 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_1361 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1362 = io_in_d_bits_opcode == _GEN_48 | _T_1361; // @[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_1366 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1376 = _T_1329 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1331; // @[Monitor.scala 694:116]
+  wire  _T_1378 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_1385 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [39:0] a_sizes_set = _GEN_20[39:0];
+  wire [39:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [39:0] d_sizes_clr = _GEN_24[39:0];
+  wire [39:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [39: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_1394 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [39:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [39:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [39:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [39:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[39:1]}; // @[Monitor.scala 747:146]
+  wire  _T_1420 = io_in_d_valid & d_first_2 & _T_1125; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_1125 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_69 = _d_first_T & d_first_2 & _T_1125 ? _d_sizes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 786:21]
+  wire [4:0] _T_1428 = 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_1438 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [39:0] d_sizes_clr_1 = _GEN_69[39:0];
+  wire [39:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [39: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_1463 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 20'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 <= 40'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 40'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 <= 9'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 <= 9'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_224 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_224) 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_229 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_229) 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_233 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_233) 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_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 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 (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 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_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 & ~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_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 & ~_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_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 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_224 & (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 & ~_T_224) 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_423 & (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 & ~_T_423) 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_229 & (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 & ~_T_229) 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_233 & (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 & ~_T_233) 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_53 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_53) 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_533 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_533) 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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~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_543 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_436 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_436 & ~reset & ~_T_233) 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_652 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_652) 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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~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_543 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_543) 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_547 & (io_in_a_valid & _T_555 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_555 & ~reset & ~_T_547) 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_652 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_652) 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_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 (io_in_a_valid & _T_670 & ~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_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 (io_in_a_valid & _T_670 & ~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_543 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_543) 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_783 & (io_in_a_valid & _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 (io_in_a_valid & _T_670 & ~reset & ~_T_783) 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_879 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_879) 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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~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_889 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_889) 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_547 & (io_in_a_valid & _T_787 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_787 & ~reset & ~_T_547) 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_879 & (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_879) 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_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 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_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 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_999 & (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_999) 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_547 & (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_547) 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_1099 & (io_in_a_valid & _T_1007 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1007 & ~reset & ~_T_1099) 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_1007 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1007 & ~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_1007 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1007 & ~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_1109 & (io_in_a_valid & _T_1007 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1007 & ~reset & ~_T_1109) 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_547 & (io_in_a_valid & _T_1007 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1007 & ~reset & ~_T_547) 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_233 & (io_in_a_valid & _T_1007 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_1007 & ~reset & ~_T_233) 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_1121 & (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_1121) 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_1125 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1125 & _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_1129 & (io_in_d_valid & _T_1125 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1125 & _T_2 & ~_T_1129) 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_1133 & (io_in_d_valid & _T_1125 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1125 & _T_2 & ~_T_1133) 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_1137 & (io_in_d_valid & _T_1125 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1125 & _T_2 & ~_T_1137) 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_1141 & (io_in_d_valid & _T_1125 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1125 & _T_2 & ~_T_1141) 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_1145 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1145 & _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_1145 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1145 & _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_1129 & (io_in_d_valid & _T_1145 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1145 & _T_2 & ~_T_1129) 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_1156 & (io_in_d_valid & _T_1145 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1145 & _T_2 & ~_T_1156) 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_1160 & (io_in_d_valid & _T_1145 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1145 & _T_2 & ~_T_1160) 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_1137 & (io_in_d_valid & _T_1145 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1145 & _T_2 & ~_T_1137) 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_1173 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1173 & _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_1173 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1173 & _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_1129 & (io_in_d_valid & _T_1173 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1173 & _T_2 & ~_T_1129) 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_1156 & (io_in_d_valid & _T_1173 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1173 & _T_2 & ~_T_1156) 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_1160 & (io_in_d_valid & _T_1173 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1173 & _T_2 & ~_T_1160) 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_1193 & (io_in_d_valid & _T_1173 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1173 & _T_2 & ~_T_1193) 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_1202 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1202 & _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_1133 & (io_in_d_valid & _T_1202 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1202 & _T_2 & ~_T_1133) 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_1137 & (io_in_d_valid & _T_1202 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1202 & _T_2 & ~_T_1137) 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_1219 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1219 & _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_1133 & (io_in_d_valid & _T_1219 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1219 & _T_2 & ~_T_1133) 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_1193 & (io_in_d_valid & _T_1219 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1219 & _T_2 & ~_T_1193) 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_1237 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1237 & _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_1133 & (io_in_d_valid & _T_1237 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1237 & _T_2 & ~_T_1133) 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_1137 & (io_in_d_valid & _T_1237 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1237 & _T_2 & ~_T_1137) 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_1268 & (_T_1267 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1267 & ~reset & ~_T_1268) 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_1272 & (_T_1267 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1267 & ~reset & ~_T_1272) 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_1276 & (_T_1267 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1267 & ~reset & ~_T_1276) 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_1280 & (_T_1267 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1267 & ~reset & ~_T_1280) 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_1284 & (_T_1267 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1267 & ~reset & ~_T_1284) 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_1292 & (_T_1291 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1291 & _T_2 & ~_T_1292) 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_1296 & (_T_1291 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1291 & _T_2 & ~_T_1296) 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_1300 & (_T_1291 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1291 & _T_2 & ~_T_1300) 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_1304 & (_T_1291 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1291 & _T_2 & ~_T_1304) 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_1308 & (_T_1291 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1291 & _T_2 & ~_T_1308) 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_1312 & (_T_1291 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1291 & _T_2 & ~_T_1312) 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_1325 & (_T_1321 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1321 & ~reset & ~_T_1325) 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_1344 & (_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_1344) 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_1350 & (_T_1332 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[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 & same_cycle_resp & _T_2 & ~_T_1350) 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_1354 & (_T_1332 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[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 & same_cycle_resp & _T_2 & ~_T_1354) 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_1362 & (_T_1332 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[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 & ~same_cycle_resp & _T_2 & ~_T_1362) 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_1366 & (_T_1332 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[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 & ~same_cycle_resp & _T_2 & ~_T_1366) 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_1378 & (_T_1376 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1376 & _T_2 & ~_T_1378) 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_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 (_T_2 & ~_T_1385) 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_1394 & ~reset) begin
+          $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_1394) 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_1428[0] & (_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 (_T_1420 & _T_2 & ~_T_1428[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_1438 & (_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 (_T_1420 & _T_2 & ~_T_1438) 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_1463 & ~reset) begin
+          $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_1463) 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[8: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {2{`RANDOM}};
+  inflight_sizes = _RAND_15[39:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[39:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [63:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [63: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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 [2:0] cam_a_0_bits_source; // @[AtomicAutomata.scala 77:24]
+  reg [31:0] cam_a_0_bits_address; // @[AtomicAutomata.scala 77:24]
+  reg [7:0] cam_a_0_bits_mask; // @[AtomicAutomata.scala 77:24]
+  reg [63: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 [63: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'h3; // @[Parameters.scala 92:42]
+  wire [31:0] _a_canLogical_T_4 = auto_in_a_bits_address ^ 32'h2000; // @[Parameters.scala 137:31]
+  wire [32:0] _a_canLogical_T_5 = {1'b0,$signed(_a_canLogical_T_4)}; // @[Parameters.scala 137:49]
+  wire [32:0] _a_canLogical_T_7 = $signed(_a_canLogical_T_5) & 33'shba036000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_8 = $signed(_a_canLogical_T_7) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _a_canLogical_T_9 = auto_in_a_bits_address ^ 32'h4000; // @[Parameters.scala 137:31]
+  wire [32:0] _a_canLogical_T_10 = {1'b0,$signed(_a_canLogical_T_9)}; // @[Parameters.scala 137:49]
+  wire [32:0] _a_canLogical_T_12 = $signed(_a_canLogical_T_10) & 33'shba036000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_13 = $signed(_a_canLogical_T_12) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _a_canLogical_T_14 = auto_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _a_canLogical_T_15 = {1'b0,$signed(_a_canLogical_T_14)}; // @[Parameters.scala 137:49]
+  wire [32:0] _a_canLogical_T_17 = $signed(_a_canLogical_T_15) & 33'shba036000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_18 = $signed(_a_canLogical_T_17) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _a_canLogical_T_19 = auto_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _a_canLogical_T_20 = {1'b0,$signed(_a_canLogical_T_19)}; // @[Parameters.scala 137:49]
+  wire [32:0] _a_canLogical_T_22 = $signed(_a_canLogical_T_20) & 33'shba034000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_23 = $signed(_a_canLogical_T_22) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _a_canLogical_T_24 = auto_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _a_canLogical_T_25 = {1'b0,$signed(_a_canLogical_T_24)}; // @[Parameters.scala 137:49]
+  wire [32:0] _a_canLogical_T_27 = $signed(_a_canLogical_T_25) & 33'shba036000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_28 = $signed(_a_canLogical_T_27) == 33'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_T_33 = _a_canLogical_T_1 & _a_canLogical_T_32; // @[Parameters.scala 670:56]
+  wire  _a_canLogical_T_73 = 4'h2 <= auto_in_a_bits_size & auto_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:37]
+  wire [31:0] _a_canLogical_T_75 = auto_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _a_canLogical_T_76 = {1'b0,$signed(_a_canLogical_T_75)}; // @[Parameters.scala 137:49]
+  wire [32:0] _a_canLogical_T_78 = $signed(_a_canLogical_T_76) & 33'shba034000; // @[Parameters.scala 137:52]
+  wire  _a_canLogical_T_79 = $signed(_a_canLogical_T_78) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _a_canLogical_T_80 = _a_canLogical_T_73 & _a_canLogical_T_79; // @[Parameters.scala 670:56]
+  wire  a_canLogical = _a_canLogical_T_33 | _a_canLogical_T_80; // @[Parameters.scala 672:30]
+  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 [1:0] indexes_32 = {cam_a_0_bits_data[32],cam_d_0_data[32]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_33 = {cam_a_0_bits_data[33],cam_d_0_data[33]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_34 = {cam_a_0_bits_data[34],cam_d_0_data[34]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_35 = {cam_a_0_bits_data[35],cam_d_0_data[35]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_36 = {cam_a_0_bits_data[36],cam_d_0_data[36]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_37 = {cam_a_0_bits_data[37],cam_d_0_data[37]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_38 = {cam_a_0_bits_data[38],cam_d_0_data[38]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_39 = {cam_a_0_bits_data[39],cam_d_0_data[39]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_40 = {cam_a_0_bits_data[40],cam_d_0_data[40]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_41 = {cam_a_0_bits_data[41],cam_d_0_data[41]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_42 = {cam_a_0_bits_data[42],cam_d_0_data[42]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_43 = {cam_a_0_bits_data[43],cam_d_0_data[43]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_44 = {cam_a_0_bits_data[44],cam_d_0_data[44]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_45 = {cam_a_0_bits_data[45],cam_d_0_data[45]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_46 = {cam_a_0_bits_data[46],cam_d_0_data[46]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_47 = {cam_a_0_bits_data[47],cam_d_0_data[47]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_48 = {cam_a_0_bits_data[48],cam_d_0_data[48]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_49 = {cam_a_0_bits_data[49],cam_d_0_data[49]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_50 = {cam_a_0_bits_data[50],cam_d_0_data[50]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_51 = {cam_a_0_bits_data[51],cam_d_0_data[51]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_52 = {cam_a_0_bits_data[52],cam_d_0_data[52]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_53 = {cam_a_0_bits_data[53],cam_d_0_data[53]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_54 = {cam_a_0_bits_data[54],cam_d_0_data[54]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_55 = {cam_a_0_bits_data[55],cam_d_0_data[55]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_56 = {cam_a_0_bits_data[56],cam_d_0_data[56]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_57 = {cam_a_0_bits_data[57],cam_d_0_data[57]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_58 = {cam_a_0_bits_data[58],cam_d_0_data[58]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_59 = {cam_a_0_bits_data[59],cam_d_0_data[59]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_60 = {cam_a_0_bits_data[60],cam_d_0_data[60]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_61 = {cam_a_0_bits_data[61],cam_d_0_data[61]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_62 = {cam_a_0_bits_data[62],cam_d_0_data[62]}; // @[Cat.scala 31:58]
+  wire [1:0] indexes_63 = {cam_a_0_bits_data[63],cam_d_0_data[63]}; // @[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 [3:0] _logic_out_T_64 = cam_a_0_lut >> indexes_32; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_66 = cam_a_0_lut >> indexes_33; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_68 = cam_a_0_lut >> indexes_34; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_70 = cam_a_0_lut >> indexes_35; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_72 = cam_a_0_lut >> indexes_36; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_74 = cam_a_0_lut >> indexes_37; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_76 = cam_a_0_lut >> indexes_38; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_78 = cam_a_0_lut >> indexes_39; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_80 = cam_a_0_lut >> indexes_40; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_82 = cam_a_0_lut >> indexes_41; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_84 = cam_a_0_lut >> indexes_42; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_86 = cam_a_0_lut >> indexes_43; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_88 = cam_a_0_lut >> indexes_44; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_90 = cam_a_0_lut >> indexes_45; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_92 = cam_a_0_lut >> indexes_46; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_94 = cam_a_0_lut >> indexes_47; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_96 = cam_a_0_lut >> indexes_48; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_98 = cam_a_0_lut >> indexes_49; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_100 = cam_a_0_lut >> indexes_50; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_102 = cam_a_0_lut >> indexes_51; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_104 = cam_a_0_lut >> indexes_52; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_106 = cam_a_0_lut >> indexes_53; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_108 = cam_a_0_lut >> indexes_54; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_110 = cam_a_0_lut >> indexes_55; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_112 = cam_a_0_lut >> indexes_56; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_114 = cam_a_0_lut >> indexes_57; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_116 = cam_a_0_lut >> indexes_58; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_118 = cam_a_0_lut >> indexes_59; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_120 = cam_a_0_lut >> indexes_60; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_122 = cam_a_0_lut >> indexes_61; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_124 = cam_a_0_lut >> indexes_62; // @[AtomicAutomata.scala 114:57]
+  wire [3:0] _logic_out_T_126 = cam_a_0_lut >> indexes_63; // @[AtomicAutomata.scala 114:57]
+  wire [7:0] logic_out_lo_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_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_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_lo_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_lo = {_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_lo_hi_lo,logic_out_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_hi_lo_lo = {_logic_out_T_78[0],_logic_out_T_76[0],_logic_out_T_74[0],_logic_out_T_72[0],
+    _logic_out_T_70[0],_logic_out_T_68[0],_logic_out_T_66[0],_logic_out_T_64[0]}; // @[Cat.scala 31:58]
+  wire [15:0] logic_out_hi_lo = {_logic_out_T_94[0],_logic_out_T_92[0],_logic_out_T_90[0],_logic_out_T_88[0],
+    _logic_out_T_86[0],_logic_out_T_84[0],_logic_out_T_82[0],_logic_out_T_80[0],logic_out_hi_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] logic_out_hi_hi_lo = {_logic_out_T_110[0],_logic_out_T_108[0],_logic_out_T_106[0],_logic_out_T_104[0],
+    _logic_out_T_102[0],_logic_out_T_100[0],_logic_out_T_98[0],_logic_out_T_96[0]}; // @[Cat.scala 31:58]
+  wire [31:0] logic_out_hi = {_logic_out_T_126[0],_logic_out_T_124[0],_logic_out_T_122[0],_logic_out_T_120[0],
+    _logic_out_T_118[0],_logic_out_T_116[0],_logic_out_T_114[0],_logic_out_T_112[0],logic_out_hi_hi_lo,logic_out_hi_lo}; // @[Cat.scala 31:58]
+  wire [63:0] logic_out = {logic_out_hi,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 [7:0] _signSel_T = ~cam_a_0_bits_mask; // @[AtomicAutomata.scala 121:25]
+  wire [7:0] _GEN_39 = {{1'd0}, cam_a_0_bits_mask[7:1]}; // @[AtomicAutomata.scala 121:31]
+  wire [7:0] _signSel_T_2 = _signSel_T | _GEN_39; // @[AtomicAutomata.scala 121:31]
+  wire [7:0] signSel = ~_signSel_T_2; // @[AtomicAutomata.scala 121:23]
+  wire [7:0] signbits_a = {cam_a_0_bits_data[63],cam_a_0_bits_data[55],cam_a_0_bits_data[47],cam_a_0_bits_data[39],
+    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 [7:0] signbits_d = {cam_d_0_data[63],cam_d_0_data[55],cam_d_0_data[47],cam_d_0_data[39],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 [7:0] _signbit_a_T = signbits_a & signSel; // @[AtomicAutomata.scala 125:38]
+  wire [8:0] _signbit_a_T_1 = {_signbit_a_T, 1'h0}; // @[AtomicAutomata.scala 125:49]
+  wire [7:0] signbit_a = _signbit_a_T_1[7:0]; // @[AtomicAutomata.scala 125:54]
+  wire [7:0] _signbit_d_T = signbits_d & signSel; // @[AtomicAutomata.scala 126:38]
+  wire [8:0] _signbit_d_T_1 = {_signbit_d_T, 1'h0}; // @[AtomicAutomata.scala 126:49]
+  wire [7:0] signbit_d = _signbit_d_T_1[7:0]; // @[AtomicAutomata.scala 126:54]
+  wire [8:0] _signext_a_T = {signbit_a, 1'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_a_T_2 = signbit_a | _signext_a_T[7:0]; // @[package.scala 244:43]
+  wire [9:0] _signext_a_T_3 = {_signext_a_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_a_T_5 = _signext_a_T_2 | _signext_a_T_3[7:0]; // @[package.scala 244:43]
+  wire [11:0] _signext_a_T_6 = {_signext_a_T_5, 4'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_a_T_8 = _signext_a_T_5 | _signext_a_T_6[7:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_a_T_19 = _signext_a_T_8[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_21 = _signext_a_T_8[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_23 = _signext_a_T_8[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_25 = _signext_a_T_8[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_27 = _signext_a_T_8[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_29 = _signext_a_T_8[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_31 = _signext_a_T_8[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_a_T_33 = _signext_a_T_8[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] signext_a = {_signext_a_T_33,_signext_a_T_31,_signext_a_T_29,_signext_a_T_27,_signext_a_T_25,
+    _signext_a_T_23,_signext_a_T_21,_signext_a_T_19}; // @[Cat.scala 31:58]
+  wire [8:0] _signext_d_T = {signbit_d, 1'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_d_T_2 = signbit_d | _signext_d_T[7:0]; // @[package.scala 244:43]
+  wire [9:0] _signext_d_T_3 = {_signext_d_T_2, 2'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_d_T_5 = _signext_d_T_2 | _signext_d_T_3[7:0]; // @[package.scala 244:43]
+  wire [11:0] _signext_d_T_6 = {_signext_d_T_5, 4'h0}; // @[package.scala 244:48]
+  wire [7:0] _signext_d_T_8 = _signext_d_T_5 | _signext_d_T_6[7:0]; // @[package.scala 244:43]
+  wire [7:0] _signext_d_T_19 = _signext_d_T_8[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_21 = _signext_d_T_8[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_23 = _signext_d_T_8[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_25 = _signext_d_T_8[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_27 = _signext_d_T_8[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_29 = _signext_d_T_8[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_31 = _signext_d_T_8[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _signext_d_T_33 = _signext_d_T_8[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] signext_d = {_signext_d_T_33,_signext_d_T_31,_signext_d_T_29,_signext_d_T_27,_signext_d_T_25,
+    _signext_d_T_23,_signext_d_T_21,_signext_d_T_19}; // @[Cat.scala 31:58]
+  wire [7:0] _wide_mask_T_9 = cam_a_0_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_11 = cam_a_0_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_13 = cam_a_0_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_15 = cam_a_0_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_17 = cam_a_0_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_19 = cam_a_0_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_21 = cam_a_0_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _wide_mask_T_23 = cam_a_0_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] wide_mask = {_wide_mask_T_23,_wide_mask_T_21,_wide_mask_T_19,_wide_mask_T_17,_wide_mask_T_15,
+    _wide_mask_T_13,_wide_mask_T_11,_wide_mask_T_9}; // @[Cat.scala 31:58]
+  wire [63:0] _a_a_ext_T = cam_a_0_bits_data & wide_mask; // @[AtomicAutomata.scala 131:28]
+  wire [63:0] a_a_ext = _a_a_ext_T | signext_a; // @[AtomicAutomata.scala 131:41]
+  wire [63:0] _a_d_ext_T = cam_d_0_data & wide_mask; // @[AtomicAutomata.scala 132:28]
+  wire [63:0] a_d_ext = _a_d_ext_T | signext_d; // @[AtomicAutomata.scala 132:41]
+  wire [63:0] _a_d_inv_T = ~a_d_ext; // @[AtomicAutomata.scala 133:43]
+  wire [63:0] a_d_inv = adder ? a_d_ext : _a_d_inv_T; // @[AtomicAutomata.scala 133:26]
+  wire [63:0] adder_out = a_a_ext + a_d_inv; // @[AtomicAutomata.scala 134:33]
+  wire  a_bigger_uneq = unsigned_ == a_a_ext[63]; // @[AtomicAutomata.scala 136:38]
+  wire  a_bigger = a_a_ext[63] == a_d_ext[63] ? ~adder_out[63] : a_bigger_uneq; // @[AtomicAutomata.scala 137:27]
+  wire  pick_a = take_max == a_bigger; // @[AtomicAutomata.scala 138:31]
+  wire [63:0] _arith_out_T = pick_a ? cam_a_0_bits_data : cam_d_0_data; // @[AtomicAutomata.scala 139:50]
+  wire [63:0] arith_out = adder ? adder_out : _arith_out_T; // @[AtomicAutomata.scala 139:28]
+  wire [63: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 [8:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 9'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 [1:0] source_c_bits_a_mask_sizeOH_shiftAmount = cam_a_0_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _source_c_bits_a_mask_sizeOH_T_1 = 4'h1 << source_c_bits_a_mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] source_c_bits_a_mask_sizeOH = _source_c_bits_a_mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _source_c_bits_a_mask_T = cam_a_0_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  source_c_bits_a_mask_size = source_c_bits_a_mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit = cam_a_0_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit_1 = cam_a_0_bits_address[1]; // @[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  source_c_bits_a_mask_size_2 = source_c_bits_a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  source_c_bits_a_mask_bit_2 = cam_a_0_bits_address[0]; // @[Misc.scala 209:26]
+  wire  source_c_bits_a_mask_nbit_2 = ~source_c_bits_a_mask_bit_2; // @[Misc.scala 210:20]
+  wire  source_c_bits_a_mask_eq_6 = source_c_bits_a_mask_eq_2 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_6 = source_c_bits_a_mask_acc_2 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_6; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_7 = source_c_bits_a_mask_eq_2 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_7 = source_c_bits_a_mask_acc_2 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_7; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_8 = source_c_bits_a_mask_eq_3 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_8 = source_c_bits_a_mask_acc_3 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_8; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_9 = source_c_bits_a_mask_eq_3 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_9 = source_c_bits_a_mask_acc_3 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_9; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_10 = source_c_bits_a_mask_eq_4 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_10 = source_c_bits_a_mask_acc_4 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_10; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_11 = source_c_bits_a_mask_eq_4 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_11 = source_c_bits_a_mask_acc_4 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_11; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_12 = source_c_bits_a_mask_eq_5 & source_c_bits_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_12 = source_c_bits_a_mask_acc_5 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_12; // @[Misc.scala 214:29]
+  wire  source_c_bits_a_mask_eq_13 = source_c_bits_a_mask_eq_5 & source_c_bits_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  source_c_bits_a_mask_acc_13 = source_c_bits_a_mask_acc_5 | source_c_bits_a_mask_size_2 &
+    source_c_bits_a_mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] source_c_bits_a_mask = {source_c_bits_a_mask_acc_13,source_c_bits_a_mask_acc_12,source_c_bits_a_mask_acc_11
+    ,source_c_bits_a_mask_acc_10,source_c_bits_a_mask_acc_9,source_c_bits_a_mask_acc_8,source_c_bits_a_mask_acc_7,
+    source_c_bits_a_mask_acc_6}; // @[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 [8:0] decode = _decode_T_3[11:3]; // @[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 [8:0] _GEN_40 = {{8'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [8: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 [63:0] _T_29 = muxStateEarly_0 ? amo_data : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _T_30 = muxStateEarly_1 ? auto_in_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_32 = muxStateEarly_0 ? source_c_bits_a_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_33 = muxStateEarly_1 ? auto_in_a_bits_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_35 = muxStateEarly_0 ? cam_a_0_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_36 = muxStateEarly_1 ? auto_in_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_38 = muxStateEarly_0 ? cam_a_0_bits_source : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_39 = muxStateEarly_1 ? auto_in_a_bits_source : 3'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 [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire  d_first = d_first_counter == 9'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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'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_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)
+  );
+  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 <= 9'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 <= 9'h0;
+        end
+      end else begin
+        beatsLeft <= 9'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 <= 9'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 <= 9'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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  cam_a_0_bits_address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  cam_a_0_bits_mask = _RAND_6[7:0];
+  _RAND_7 = {2{`RANDOM}};
+  cam_a_0_bits_data = _RAND_7[63: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 = {2{`RANDOM}};
+  cam_d_0_data = _RAND_10[63: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[8: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[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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  [3:0]  io_in_a_bits_size,
+  input  [2:0]  io_in_a_bits_source,
+  input  [13:0] io_in_a_bits_address,
+  input  [7: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  [2: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 [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  _source_ok_T = io_in_a_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_44 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_53 = _T_44 & source_ok; // @[Parameters.scala 1160:30]
+  wire [13:0] _T_56 = io_in_a_bits_address ^ 14'h3000; // @[Parameters.scala 137:31]
+  wire [14:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [14:0] _T_59 = $signed(_T_57) & -15'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 15'sh0; // @[Parameters.scala 137:67]
+  wire  _T_76 = _T_44 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = _T_53 & _T_76; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_320 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_328 = _T_320 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_330 = _T_53 & _T_328; // @[Monitor.scala 131:74]
+  wire  _T_340 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_348 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_390 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_424 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_436 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_440 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_444 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_452 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_460 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_488 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_517 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_534 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_552 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [13:0] address; // @[Monitor.scala 388:22]
+  wire  _T_582 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_583 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_587 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_591 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_595 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_599 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [3:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_606 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_607 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_615 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_619 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [39:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [5:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [39: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 [39:0] _GEN_75 = {{24'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[39:1]}; // @[Monitor.scala 638:144]
+  wire  _T_633 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_636 = _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 [4:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [5: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 [67:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [67:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_638 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_640 = ~_T_638[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [67:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 68'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_644 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_646 = ~_T_440; // @[Monitor.scala 671:74]
+  wire  _T_647 = io_in_d_valid & d_first_1 & ~_T_440; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_440 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [78:0] _GEN_4 = {{63'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [78:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_646 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_646 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 675:91 677:21]
+  wire [78:0] _GEN_24 = _d_first_T & d_first_1 & _T_646 ? _d_sizes_clr_T_5 : 79'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_633 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_657 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_659 = _T_657[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_664 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_665 = io_in_d_bits_opcode == _GEN_32 | _T_664; // @[Monitor.scala 685:77]
+  wire  _T_669 = 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_676 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_677 = io_in_d_bits_opcode == _GEN_48 | _T_676; // @[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_681 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_691 = _T_644 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_646; // @[Monitor.scala 694:116]
+  wire  _T_693 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_700 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [39:0] a_sizes_set = _GEN_20[39:0];
+  wire [39:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [39:0] d_sizes_clr = _GEN_24[39:0];
+  wire [39:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [39: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_709 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [39:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [39:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [39:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [39:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[39:1]}; // @[Monitor.scala 747:146]
+  wire  _T_735 = io_in_d_valid & d_first_2 & _T_440; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_440 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_69 = _d_first_T & d_first_2 & _T_440 ? _d_sizes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 786:21]
+  wire [4:0] _T_743 = 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_753 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [39:0] d_sizes_clr_1 = _GEN_69[39:0];
+  wire [39:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [39: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_778 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 20'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 <= 40'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 40'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 <= 9'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 <= 9'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_53 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_53) 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_76 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_76) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_330 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_330) 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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_340 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_340) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_330 & (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_330) 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_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 & ~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_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 & ~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_382 & (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_382) 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_212 & (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_212) 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_244 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_244) 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_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~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_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~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_424 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_424) 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_212 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_101) 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_436 & (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_436) 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_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _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_444 & (io_in_d_valid & _T_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _T_2 & ~_T_444) 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_452 & (io_in_d_valid & _T_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _T_2 & ~_T_452) 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_440 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _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_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _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_460 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _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_444 & (io_in_d_valid & _T_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _T_2 & ~_T_444) 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_452 & (io_in_d_valid & _T_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _T_2 & ~_T_452) 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_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _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_488 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _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_444 & (io_in_d_valid & _T_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _T_2 & ~_T_444) 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_452 & (io_in_d_valid & _T_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _T_2 & _T_452) 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_517 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_517 & _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_452 & (io_in_d_valid & _T_517 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_517 & _T_2 & ~_T_452) 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_534 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_534 & _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_452 & (io_in_d_valid & _T_534 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_534 & _T_2 & _T_452) 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_552 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_552 & _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_452 & (io_in_d_valid & _T_552 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_552 & _T_2 & ~_T_452) 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_583 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_583) 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_587 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_587) 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_591 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_591) 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_595 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_595) 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_599 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_599) 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_607 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_607) 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_615 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_615) 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_619 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_619) 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_640 & (_T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_636 & ~reset & ~_T_640) 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_659 & (_T_647 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & _T_2 & ~_T_659) 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_665 & (_T_647 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & same_cycle_resp & _T_2 & ~_T_665) 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_669 & (_T_647 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & same_cycle_resp & _T_2 & ~_T_669) 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_677 & (_T_647 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & ~same_cycle_resp & _T_2 & ~_T_677) 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_681 & (_T_647 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & ~same_cycle_resp & _T_2 & ~_T_681) 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_693 & (_T_691 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_691 & _T_2 & ~_T_693) 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_700 & _T_2) begin
+          $fatal; // @[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_700) 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_709 & ~reset) begin
+          $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_709) 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_743[0] & (_T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_735 & _T_2 & ~_T_743[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_753 & (_T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_735 & _T_2 & ~_T_753) 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_778 & ~reset) begin
+          $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_778) 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[8: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[13:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {2{`RANDOM}};
+  inflight_sizes = _RAND_12[39:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[8:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[8:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[39:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[8: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_12(
+  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  [2: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 [2: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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[2: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  [2:0]  auto_in_a_bits_source,
+  input  [13:0] auto_in_a_bits_address,
+  input  [7: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 [2: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 [2: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 [7: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 [2: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 [2: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 [2: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 [8:0] a_last_beats1_decode = _a_last_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  a_last_beats1_opdata = ~a_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [8:0] a_last_beats1 = a_last_beats1_opdata ? a_last_beats1_decode : 9'h0; // @[Edges.scala 220:14]
+  reg [8:0] a_last_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_last_counter1 = a_last_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_last_first = a_last_counter == 9'h0; // @[Edges.scala 230:25]
+  wire  a_last = a_last_counter == 9'h1 | a_last_beats1 == 9'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 [8:0] beats1_decode = _beats1_decode_T_3[11:3]; // @[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 [8:0] beats1 = beats1_opdata ? beats1_decode : 9'h0; // @[Edges.scala 220:14]
+  reg [8:0] counter; // @[Edges.scala 228:27]
+  wire [8:0] counter1 = counter - 9'h1; // @[Edges.scala 229:28]
+  wire  da_first = counter == 9'h0; // @[Edges.scala 230:25]
+  wire  da_last = counter == 9'h1 | beats1 == 9'h0; // @[Edges.scala 231:37]
+  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),
+    .io_in_d_bits_corrupt(monitor_io_in_d_bits_corrupt)
+  );
+  Queue_12 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 <= 9'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 <= 9'h0;
+        end
+      end else begin
+        a_last_counter <= a_last_counter1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      counter <= 9'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 <= 9'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[8:0];
+  _RAND_1 = {1{`RANDOM}};
+  counter = _RAND_1[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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  [3:0]  io_in_a_bits_size,
+  input  [2:0]  io_in_a_bits_source,
+  input  [13:0] io_in_a_bits_address,
+  input  [7: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  [2: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 [63:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [31:0] _RAND_19;
+  reg [63: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire  _T_44 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire  _T_53 = _T_44 & source_ok; // @[Parameters.scala 1160:30]
+  wire [13:0] _T_56 = io_in_a_bits_address ^ 14'h3000; // @[Parameters.scala 137:31]
+  wire [14:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [14:0] _T_59 = $signed(_T_57) & -15'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 15'sh0; // @[Parameters.scala 137:67]
+  wire  _T_76 = _T_44 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = _T_53 & _T_76; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_320 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_328 = _T_320 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_330 = _T_53 & _T_328; // @[Monitor.scala 131:74]
+  wire  _T_340 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_348 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_382 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_390 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_424 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_436 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_440 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_444 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_448 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_452 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_456 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_460 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_471 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_475 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_488 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = _T_456 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_517 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_534 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_552 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [13:0] address; // @[Monitor.scala 388:22]
+  wire  _T_582 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_583 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_587 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_591 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_595 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_599 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_606 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_607 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_611 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_615 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_619 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_623 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_627 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [39:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [5:0] _a_size_lookup_T = {io_in_d_bits_source, 3'h0}; // @[Monitor.scala 638:65]
+  wire [39: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 [39:0] _GEN_75 = {{24'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 638:91]
+  wire [39:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[39:1]}; // @[Monitor.scala 638:144]
+  wire  _T_633 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_636 = _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 [4:0] _GEN_77 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [5: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 [67:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [67:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_638 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_640 = ~_T_638[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [67:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 68'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_644 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_646 = ~_T_440; // @[Monitor.scala 671:74]
+  wire  _T_647 = io_in_d_valid & d_first_1 & ~_T_440; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_440 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [78:0] _GEN_4 = {{63'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [78:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_646 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_646 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 675:91 677:21]
+  wire [78:0] _GEN_24 = _d_first_T & d_first_1 & _T_646 ? _d_sizes_clr_T_5 : 79'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_633 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_657 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_659 = _T_657[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_664 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_665 = io_in_d_bits_opcode == _GEN_32 | _T_664; // @[Monitor.scala 685:77]
+  wire  _T_669 = 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_676 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_677 = io_in_d_bits_opcode == _GEN_48 | _T_676; // @[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_681 = _GEN_79 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_691 = _T_644 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_646; // @[Monitor.scala 694:116]
+  wire  _T_693 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_700 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [39:0] a_sizes_set = _GEN_20[39:0];
+  wire [39:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [39:0] d_sizes_clr = _GEN_24[39:0];
+  wire [39:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [39: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_709 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [39:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [39:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_size_lookup_T; // @[Monitor.scala 747:42]
+  wire [39:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_75; // @[Monitor.scala 747:93]
+  wire [39:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[39:1]}; // @[Monitor.scala 747:146]
+  wire  _T_735 = io_in_d_valid & d_first_2 & _T_440; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_440 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_69 = _d_first_T & d_first_2 & _T_440 ? _d_sizes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 786:21]
+  wire [4:0] _T_743 = 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_753 = _GEN_79 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [39:0] d_sizes_clr_1 = _GEN_69[39:0];
+  wire [39:0] _inflight_sizes_T_4 = ~d_sizes_clr_1; // @[Monitor.scala 811:58]
+  wire [39: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_778 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 20'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 <= 40'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 5'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 <= 40'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 <= 9'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 <= 9'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_53 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_53) 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_76 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_76) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_330 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_330) 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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_340 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_340) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_330 & (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_330) 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_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 & ~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_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 & ~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_382 & (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_382) 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_212 & (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_212) 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_244 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_244) 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_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~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_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~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_424 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_424) 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_212 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_390 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_390 & ~reset & ~_T_101) 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_436 & (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_436) 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_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _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_444 & (io_in_d_valid & _T_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _T_2 & ~_T_444) 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_448 & (io_in_d_valid & _T_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _T_2 & ~_T_448) 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_452 & (io_in_d_valid & _T_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _T_2 & ~_T_452) 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_456 & (io_in_d_valid & _T_440 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_440 & _T_2 & ~_T_456) 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_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _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_460 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _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_444 & (io_in_d_valid & _T_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _T_2 & ~_T_444) 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_471 & (io_in_d_valid & _T_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _T_2 & ~_T_471) 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_475 & (io_in_d_valid & _T_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _T_2 & ~_T_475) 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_452 & (io_in_d_valid & _T_460 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_460 & _T_2 & ~_T_452) 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_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _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_488 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _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_444 & (io_in_d_valid & _T_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _T_2 & ~_T_444) 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_471 & (io_in_d_valid & _T_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _T_2 & ~_T_471) 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_475 & (io_in_d_valid & _T_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _T_2 & ~_T_475) 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_508 & (io_in_d_valid & _T_488 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_488 & _T_2 & ~_T_508) 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_517 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_517 & _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_448 & (io_in_d_valid & _T_517 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_517 & _T_2 & ~_T_448) 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_452 & (io_in_d_valid & _T_517 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_517 & _T_2 & ~_T_452) 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_534 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_534 & _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_448 & (io_in_d_valid & _T_534 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_534 & _T_2 & ~_T_448) 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_508 & (io_in_d_valid & _T_534 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_534 & _T_2 & ~_T_508) 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_552 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_552 & _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_448 & (io_in_d_valid & _T_552 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_552 & _T_2 & ~_T_448) 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_452 & (io_in_d_valid & _T_552 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_552 & _T_2 & ~_T_452) 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_583 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_583) 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_587 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_587) 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_591 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_591) 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_595 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_595) 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_599 & (_T_582 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_582 & ~reset & ~_T_599) 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_607 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_607) 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_611 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_611) 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_615 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_615) 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_619 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_619) 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_623 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_623) 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_627 & (_T_606 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_606 & _T_2 & ~_T_627) 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_640 & (_T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_636 & ~reset & ~_T_640) 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_659 & (_T_647 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & _T_2 & ~_T_659) 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_665 & (_T_647 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & same_cycle_resp & _T_2 & ~_T_665) 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_669 & (_T_647 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & same_cycle_resp & _T_2 & ~_T_669) 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_677 & (_T_647 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & ~same_cycle_resp & _T_2 & ~_T_677) 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_681 & (_T_647 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_647 & ~same_cycle_resp & _T_2 & ~_T_681) 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_693 & (_T_691 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_691 & _T_2 & ~_T_693) 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_700 & _T_2) begin
+          $fatal; // @[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_700) 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_709 & ~reset) begin
+          $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_709) 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_743[0] & (_T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_735 & _T_2 & ~_T_743[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_753 & (_T_735 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_735 & _T_2 & ~_T_753) 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_778 & ~reset) begin
+          $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_778) 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[8: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[13:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {2{`RANDOM}};
+  inflight_sizes = _RAND_15[39:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {2{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[39:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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_13(
+  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  [2:0]  io_enq_bits_source,
+  input  [13:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [13:0] io_deq_bits_address,
+  output [7: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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[2: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[7: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_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  [3:0]  auto_in_a_bits_size,
+  input  [2:0]  auto_in_a_bits_source,
+  input  [13:0] auto_in_a_bits_address,
+  input  [7: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [13:0] auto_out_a_bits_address,
+  output [7: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  [2: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 [2: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 [7: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 [2: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 [2: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 [7: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 [2: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 [7: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 [2: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 [63: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 [2: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 [63: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_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_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_13 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_11 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 = 64'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  [2:0]  auto_buffer_in_a_bits_source,
+  input  [13:0] auto_buffer_in_a_bits_address,
+  input  [7: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 [2:0]  auto_buffer_in_d_bits_source,
+  output        auto_buffer_in_d_bits_sink,
+  output        auto_buffer_in_d_bits_denied,
+  output [63: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 [2: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 [7: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 [2: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 [2: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 [7: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 [2: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 [63: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 [2: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 [7: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 [2: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_9 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_10(
+  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  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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 [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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_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  [2:0]  auto_in_a_bits_source,
+  input  [29:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [29:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_15(
+  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  [2:0]  auto_widget_in_a_bits_source,
+  input  [29:0] auto_widget_in_a_bits_address,
+  input  [7:0]  auto_widget_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_widget_in_d_bits_source,
+  output        auto_widget_in_d_bits_sink,
+  output        auto_widget_in_d_bits_denied,
+  output [63: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 [2:0]  auto_bus_xing_out_a_bits_source,
+  output [29:0] auto_bus_xing_out_a_bits_address,
+  output [7:0]  auto_bus_xing_out_a_bits_mask,
+  output [63: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  [2: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  [63: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 [2: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 [7:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [2: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 [63:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[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_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_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  [2:0]  io_in_a_bits_source,
+  input  [27:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [27:0] _T_56 = io_in_a_bits_address ^ 28'hc000000; // @[Parameters.scala 137:31]
+  wire [28:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [28:0] _T_59 = $signed(_T_57) & -29'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 29'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [27:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_691 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_700 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_726 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_734 = 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_744 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_769 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 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_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 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_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 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_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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_691 & _T_2) begin
+          $fatal; // @[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_691) 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_700 & ~reset) begin
+          $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_700) 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_734[0] & (_T_726 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_726 & _T_2 & ~_T_734[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_744 & (_T_726 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_726 & _T_2 & ~_T_744) 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_769 & ~reset) begin
+          $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_769) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[27:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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_10(
+  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  [2:0]  io_enq_bits_source,
+  input  [27:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [27:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [27:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[27:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [27:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [27:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [27:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_10 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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_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 [7:0]  auto_fragmenter_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [27:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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_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  [2:0]  io_in_a_bits_size,
+  input  [2:0]  io_in_a_bits_source,
+  input  [25:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [25:0] _T_56 = io_in_a_bits_address ^ 26'h2000000; // @[Parameters.scala 137:31]
+  wire [26:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [26:0] _T_59 = $signed(_T_57) & -27'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 27'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [25:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 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_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 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_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 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_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 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_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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[25:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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_11(
+  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  [2:0]  io_enq_bits_source,
+  input  [25:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [25:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [25:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[25:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [25:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [25:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [25:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_11 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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_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 [7:0]  auto_fragmenter_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [25:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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_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  [2:0]  io_in_a_bits_source,
+  input  [11:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [12:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [12:0] _T_59 = $signed(_T_7) & 13'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 13'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [11:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] opcode_1; // @[Monitor.scala 535:22]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_719 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4: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 [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_757 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) 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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_244 & (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_244) 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_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 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_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 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_208 & (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_208) 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_302 & (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_302) 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_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~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_337 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) 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_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) 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_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 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_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 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_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 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_376 & (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_376) 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_212 & (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_212) 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_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~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_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) 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_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) 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_427 & (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_427) 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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _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_435 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) 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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _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_435 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) 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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _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_435 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) 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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_574 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) 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_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) 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_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) 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_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) 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_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) 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_598 & (_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_598) 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_606 & (_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_606) 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_610 & (_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_610) 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_631 & (_T_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) 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_650 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) 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_656 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) 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_660 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) 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_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) 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_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) 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_684 & (_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_684) 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 & ~reset) begin
+          $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 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_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 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_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 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_757 & ~reset) begin
+          $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_757) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[11:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight = _RAND_10[4:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_sizes = _RAND_12[19:0];
+  _RAND_13 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_13[2:0];
+  _RAND_14 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_14[2:0];
+  _RAND_15 = {1{`RANDOM}};
+  watchdog = _RAND_15[31:0];
+  _RAND_16 = {1{`RANDOM}};
+  inflight_1 = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[19:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[2: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_12(
+  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  [2:0]  io_enq_bits_source,
+  input  [11:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [11:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [11:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[11:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [11:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [11:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [11:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  Repeater_12 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = ~aHasData & new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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_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 [7:0]  auto_fragmenter_out_a_bits_mask,
+  output [63: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [11:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63: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_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_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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_size,
+  output [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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_param,
+  input  [2:0]  auto_out_d_bits_size,
+  input  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module TLInterconnectCoupler_19(
+  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 [2:0]  auto_tl_slave_clock_xing_out_a_bits_source,
+  output [31:0] auto_tl_slave_clock_xing_out_a_bits_address,
+  output [7:0]  auto_tl_slave_clock_xing_out_a_bits_mask,
+  output [63:0] auto_tl_slave_clock_xing_out_a_bits_data,
+  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  [2: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [31:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [1:0]  auto_tl_in_d_bits_param,
+  output [2:0]  auto_tl_in_d_bits_size,
+  output [2:0]  auto_tl_in_d_bits_source,
+  output        auto_tl_in_d_bits_sink,
+  output        auto_tl_in_d_bits_denied,
+  output [63: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 [2:0] widget_auto_in_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_in_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_in_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [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 [2: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 [63: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 [2:0] widget_auto_out_a_bits_source; // @[WidthWidget.scala 219:28]
+  wire [31:0] widget_auto_out_a_bits_address; // @[WidthWidget.scala 219:28]
+  wire [7:0] widget_auto_out_a_bits_mask; // @[WidthWidget.scala 219:28]
+  wire [63: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 [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 [2: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 [63:0] widget_auto_out_d_bits_data; // @[WidthWidget.scala 219:28]
+  wire  widget_auto_out_d_bits_corrupt; // @[WidthWidget.scala 219:28]
+  TLWidthWidget_8 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_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_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_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_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_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  [2:0]  io_in_a_bits_source,
+  input  [16:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [16:0] _T_56 = io_in_a_bits_address ^ 17'h10000; // @[Parameters.scala 137:31]
+  wire [17:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [17:0] _T_59 = $signed(_T_57) & -18'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 18'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_259 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_294 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_295 = io_in_a_bits_mask & _T_294; // @[Monitor.scala 127:31]
+  wire  _T_296 = _T_295 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_331 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_339 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_370 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_378 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_409 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  a_first_done = io_in_a_ready & io_in_a_valid; // @[Decoupled.scala 50:35]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [16:0] address; // @[Monitor.scala 388:22]
+  wire  _T_567 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_568 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_572 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_576 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_580 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_584 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] size_1; // @[Monitor.scala 537:22]
+  reg [2:0] source_1; // @[Monitor.scala 538:22]
+  wire  _T_591 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_600 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_604 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_618 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_621 = 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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_623 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_625 = ~_T_623[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_629 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 ? _d_opcodes_clr_T_5 : 79'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_618 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_642 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_644 = _T_642[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_649 = 3'h1 == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_650 = 3'h1 == _GEN_32 | _T_649; // @[Monitor.scala 685:77]
+  wire  _T_654 = 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_661 = 3'h1 == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_662 = 3'h1 == _GEN_48 | _T_661; // @[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_666 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_674 = _T_629 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2; // @[Monitor.scala 694:65]
+  wire  _T_678 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) 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_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) 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_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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 (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) 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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~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_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) 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_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) 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_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) 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_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) 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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~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_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) 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_220 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~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_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) 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_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) 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_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 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_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 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_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 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_208 & (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_208) 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_296 & (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_296) 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_300 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_331 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_331) 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_212 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_212) 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_339 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~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_370 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_370) 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_212 & (io_in_a_valid & _T_339 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_339 & ~reset & ~_T_212) 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_378 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~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_409 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_409) 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_212 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_212) 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_101 & (io_in_a_valid & _T_378 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_378 & ~reset & ~_T_101) 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_568 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_568) 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_572 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_572) 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_576 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_576) 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_580 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_580) 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_584 & (_T_567 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_567 & ~reset & ~_T_584) 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_600 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_600) 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_604 & (_T_591 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_591 & _T_2 & ~_T_604) 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_625 & (_T_621 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_621 & ~reset & ~_T_625) 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_644 & (_T_629 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & _T_2 & ~_T_644) 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_650 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_650) 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_654 & (_T_629 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & same_cycle_resp & _T_2 & ~_T_654) 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_662 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_662) 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_666 & (_T_629 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_629 & ~same_cycle_resp & _T_2 & ~_T_666) 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_678 & (_T_674 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_674 & _T_2 & ~_T_678) 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_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 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[16:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2:0];
+  _RAND_7 = {1{`RANDOM}};
+  size_1 = _RAND_7[2:0];
+  _RAND_8 = {1{`RANDOM}};
+  source_1 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  inflight = _RAND_9[4:0];
+  _RAND_10 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_10[19:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight_sizes = _RAND_11[19:0];
+  _RAND_12 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_12[2:0];
+  _RAND_13 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_13[2: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_13(
+  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  [2:0]  io_enq_bits_source,
+  input  [16:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [16:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [16:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[16:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [16:0] auto_in_a_bits_address,
+  input  [7: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7: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  [63: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 [2: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 [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [16:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [16:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  _T_5 = ~reset; // @[Fragmenter.scala 202:16]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _acknum_T_1 = acknum - 3'h1; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [3: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_13 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:4]; // @[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 ? 8'hff : 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:4]; // @[Fragmenter.scala 226:47]
+  assign repeater_clock = clock;
+  assign repeater_reset = reset;
+  assign repeater_io_repeat = new_gennum != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 [16:0] auto_fragmenter_out_a_bits_address,
+  output [7: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  [63: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  [2:0]  auto_tl_in_a_bits_source,
+  input  [16:0] auto_tl_in_a_bits_address,
+  input  [7: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 [2:0]  auto_tl_in_d_bits_source,
+  output [63: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 [2: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 [7: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 [2:0] fragmenter_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63: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 [7: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 [63: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_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 TLInterconnectCoupler_21(
+  output        auto_tl_in_a_ready,
+  input         auto_tl_in_a_valid,
+  input  [31:0] auto_tl_in_a_bits_address,
+  input  [63:0] auto_tl_in_a_bits_data,
+  output        auto_tl_in_d_valid,
+  input         auto_tl_out_a_ready,
+  output        auto_tl_out_a_valid,
+  output [31:0] auto_tl_out_a_bits_address,
+  output [63:0] auto_tl_out_a_bits_data,
+  input         auto_tl_out_d_valid
+);
+  assign auto_tl_in_a_ready = auto_tl_out_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_in_d_valid = auto_tl_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign auto_tl_out_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_tl_out_a_bits_data = auto_tl_in_a_bits_data; // @[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  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [20:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_14;
+  reg [319:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [95:0] _RAND_19;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [20:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [20:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 21'h0; // @[Edges.scala 20:24]
+  wire [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [20:0] _T_33 = io_in_a_bits_address ^ 21'h100000; // @[Parameters.scala 137:31]
+  wire [21:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [21:0] _T_36 = $signed(_T_34) & -22'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 22'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [20: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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set_wo_ready = _GEN_15[79:0];
+  wire [79:0] d_clr_wo_ready = _GEN_21[79:0];
+  wire  _T_661 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_37 & (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_37) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 2 (connected at BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\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[20: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[79:0];
+  _RAND_14 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_14[319:0];
+  _RAND_15 = {10{`RANDOM}};
+  inflight_sizes = _RAND_15[319: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[79:0];
+  _RAND_20 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[319: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 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  [1:0]  io_enq_bits_size,
+  input  [6:0]  io_enq_bits_source,
+  input  [20:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  input  [63: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 [1:0]  io_deq_bits_size,
+  output [6:0]  io_deq_bits_source,
+  output [20:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_mask,
+  output [63: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 [63: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 [1: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 [1:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1: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 [6: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 [6:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [6: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 [20: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 [20:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [20: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[1:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[6:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[20:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[7:0];
+  _RAND_6 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_size,
+  input  [6:0]  io_enq_bits_source,
+  input  [63:0] io_enq_bits_data,
+  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 [63: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 [63: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 [1: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 [1:0] ram_size_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [1: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 [6: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 [6:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [6: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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 = 2'h0;
+  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 = 1'h0;
+  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 = 1'h0;
+  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 = 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_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[1:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_source[initvar] = _RAND_3[6: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 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_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  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [20:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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 [20:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [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 [20:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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_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 [1:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [6:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [20:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [1:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [6:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [20:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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_size; // @[Decoupled.scala 361:21]
+  wire [6:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [63:0] bundleIn_0_d_q_io_enq_bits_data; // @[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 [1:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [6: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 [63: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_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_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_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_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_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_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .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_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_data = auto_out_d_bits_data; // @[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_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  [2:0]  io_in_a_bits_source,
+  input  [20:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [20:0] _GEN_71 = {{15'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [20:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 21'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [20:0] _T_56 = io_in_a_bits_address ^ 21'h100000; // @[Parameters.scala 137:31]
+  wire [21:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [21:0] _T_59 = $signed(_T_57) & -22'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 22'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_439 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_443 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_447 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_462 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_466 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_499 = _T_447 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [20:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_602 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_614 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_618 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_691 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_700 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_726 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_734 = 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_744 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_769 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_244 & (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_244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 PutPartial carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 PutPartial address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (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_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_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_302) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_376 & (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_376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (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_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_427 & (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_427) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_462) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_466 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_466) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_462) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_466 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_466) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_d_valid & _T_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_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_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_602 & (_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_602) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (_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_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (_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_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_614 & (_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_614) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & _T_2)) begin
+          $fatal; // @[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_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_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_684) 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_691 & _T_2) begin
+          $fatal; // @[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_691) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & ~reset) begin
+          $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_700) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_734[0] & (_T_726 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_726 & _T_2 & ~_T_734[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_744 & (_T_726 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_726 & _T_2 & ~_T_744) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_769 & ~reset) begin
+          $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_769) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusWrapper.scala:264:51)\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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[20:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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 Repeater_14(
+  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  [2:0]  io_enq_bits_source,
+  input  [20:0] io_enq_bits_address,
+  input  [7: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 [2:0]  io_deq_bits_source,
+  output [20:0] io_deq_bits_address,
+  output [7: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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [20:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[20:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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_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  [2:0]  auto_in_a_bits_source,
+  input  [20:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [20:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [20:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [20:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [20:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [20:0] _GEN_11 = {{15'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [3: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_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_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_14 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:4]; // @[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 ? 8'hff : 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:4]; // @[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 != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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 TLBuffer_12(
+  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  [2:0]  auto_in_a_bits_source,
+  input  [20:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [20:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_22(
+  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  [2:0]  auto_buffer_in_a_bits_size,
+  input  [2:0]  auto_buffer_in_a_bits_source,
+  input  [20:0] auto_buffer_in_a_bits_address,
+  input  [7:0]  auto_buffer_in_a_bits_mask,
+  input  [63:0] auto_buffer_in_a_bits_data,
+  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 [2:0]  auto_buffer_in_d_bits_size,
+  output [2:0]  auto_buffer_in_d_bits_source,
+  output        auto_buffer_in_d_bits_sink,
+  output        auto_buffer_in_d_bits_denied,
+  output [63:0] auto_buffer_in_d_bits_data,
+  output        auto_buffer_in_d_bits_corrupt,
+  input         auto_buffer_out_a_ready,
+  output        auto_buffer_out_a_valid,
+  output [2:0]  auto_buffer_out_a_bits_opcode,
+  output [2:0]  auto_buffer_out_a_bits_param,
+  output [1:0]  auto_buffer_out_a_bits_size,
+  output [6:0]  auto_buffer_out_a_bits_source,
+  output [20:0] auto_buffer_out_a_bits_address,
+  output [7:0]  auto_buffer_out_a_bits_mask,
+  output [63:0] auto_buffer_out_a_bits_data,
+  output        auto_buffer_out_a_bits_corrupt,
+  output        auto_buffer_out_d_ready,
+  input         auto_buffer_out_d_valid,
+  input  [2:0]  auto_buffer_out_d_bits_opcode,
+  input  [1:0]  auto_buffer_out_d_bits_size,
+  input  [6:0]  auto_buffer_out_d_bits_source,
+  input  [63:0] auto_buffer_out_d_bits_data
+);
+  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 [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 [20:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [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  buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [63: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 [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 [20:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68: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 [2:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [20:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2: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 [63: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 [20:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_corrupt; // @[Fragmenter.scala 333:34]
+  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 [2:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [20:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [20:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  TLBuffer_11 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)
+  );
+  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_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)
+  );
+  TLBuffer_12 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)
+  );
+  assign auto_buffer_in_a_ready = buffer_1_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_valid = buffer_1_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_opcode = buffer_1_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_param = buffer_1_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_size = buffer_1_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_source = buffer_1_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_sink = buffer_1_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_denied = buffer_1_auto_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_data = buffer_1_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_corrupt = buffer_1_auto_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_buffer_out_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign buffer_clock = clock;
+  assign buffer_reset = reset;
+  assign buffer_auto_in_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_a_ready = auto_buffer_out_a_ready; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_valid = auto_buffer_out_d_valid; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_opcode = auto_buffer_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_size = auto_buffer_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_source = auto_buffer_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_data = auto_buffer_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = buffer_1_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_param = buffer_1_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_size = buffer_1_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_source = buffer_1_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_address = buffer_1_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_data = buffer_1_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_d_ready = buffer_1_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_in_a_valid = auto_buffer_in_a_valid; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_opcode = auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_param = auto_buffer_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_size = auto_buffer_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_source = auto_buffer_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_address = auto_buffer_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_mask = auto_buffer_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_data = auto_buffer_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_corrupt = auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_d_ready = auto_buffer_in_d_ready; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_out_a_ready = fragmenter_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_valid = fragmenter_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_param = fragmenter_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_size = fragmenter_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_source = fragmenter_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_sink = fragmenter_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_denied = fragmenter_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_data = fragmenter_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_corrupt = fragmenter_auto_in_d_bits_corrupt; // @[LazyModule.scala 296: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  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [20:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_14;
+  reg [319:0] _RAND_15;
+  reg [31:0] _RAND_16;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+  reg [95:0] _RAND_19;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [20:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [20:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 21'h0; // @[Edges.scala 20:24]
+  wire [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [20:0] _T_33 = io_in_a_bits_address ^ 21'h110000; // @[Parameters.scala 137:31]
+  wire [21:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [21:0] _T_36 = $signed(_T_34) & -22'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 22'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [20: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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set_wo_ready = _GEN_15[79:0];
+  wire [79:0] d_clr_wo_ready = _GEN_21[79:0];
+  wire  _T_661 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_37 & (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_37) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 2 (connected at BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 BusWrapper.scala:264:11)\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[20: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[79:0];
+  _RAND_14 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_14[319:0];
+  _RAND_15 = {10{`RANDOM}};
+  inflight_sizes = _RAND_15[319: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[79:0];
+  _RAND_20 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[319: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 TLBuffer_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  [1:0]  auto_in_a_bits_size,
+  input  [6:0]  auto_in_a_bits_source,
+  input  [20:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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 [20:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [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 [20:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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_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 [1:0] bundleOut_0_a_q_io_enq_bits_size; // @[Decoupled.scala 361:21]
+  wire [6:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [20:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [1:0] bundleOut_0_a_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [6:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [20:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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_size; // @[Decoupled.scala 361:21]
+  wire [6:0] bundleIn_0_d_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [63:0] bundleIn_0_d_q_io_enq_bits_data; // @[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 [1:0] bundleIn_0_d_q_io_deq_bits_size; // @[Decoupled.scala 361:21]
+  wire [6: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 [63: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_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_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_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_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_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_size(bundleIn_0_d_q_io_enq_bits_size),
+    .io_enq_bits_source(bundleIn_0_d_q_io_enq_bits_source),
+    .io_enq_bits_data(bundleIn_0_d_q_io_enq_bits_data),
+    .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_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_data = auto_out_d_bits_data; // @[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_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  [2:0]  io_in_a_bits_source,
+  input  [20:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [20:0] _GEN_71 = {{15'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [20:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 21'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [20:0] _T_56 = io_in_a_bits_address ^ 21'h110000; // @[Parameters.scala 137:31]
+  wire [21:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [21:0] _T_59 = $signed(_T_57) & -22'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 22'sh0; // @[Parameters.scala 137:67]
+  wire  _T_92 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_96 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_97 = _T_96 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_101 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_105 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_159 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_172 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_189 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_197 = _T_189 & _T_60; // @[Parameters.scala 670:56]
+  wire  _T_208 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_212 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_220 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_244 = source_ok & _T_197; // @[Monitor.scala 115:71]
+  wire  _T_262 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_300 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_301 = io_in_a_bits_mask & _T_300; // @[Monitor.scala 127:31]
+  wire  _T_302 = _T_301 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_306 = 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_376 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_384 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_415 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_427 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_431 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_435 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_439 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_443 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_447 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_451 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_462 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_466 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_479 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_499 = _T_447 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_508 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_525 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_543 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [20:0] address; // @[Monitor.scala 388:22]
+  wire  _T_573 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_574 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_578 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_582 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_586 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_590 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_597 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_598 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_602 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_606 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_610 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_614 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_618 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_624 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_627 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_629 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_631 = ~_T_629[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_635 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_637 = ~_T_431; // @[Monitor.scala 671:74]
+  wire  _T_638 = io_in_d_valid & d_first_1 & ~_T_431; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_637 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_637 ? _d_opcodes_clr_T_5 : 79'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_624 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_648 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_650 = _T_648[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_655 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_656 = io_in_d_bits_opcode == _GEN_32 | _T_655; // @[Monitor.scala 685:77]
+  wire  _T_660 = 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_667 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_668 = io_in_d_bits_opcode == _GEN_48 | _T_667; // @[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_672 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_682 = _T_635 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_637; // @[Monitor.scala 694:116]
+  wire  _T_684 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_691 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_700 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_726 = io_in_d_valid & d_first_2 & _T_431; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_431 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_431 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_734 = 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_744 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_769 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquireBlock from a client which does not support Probe (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_92 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_92) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock carries invalid grow param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_97 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_97) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquireBlock is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries AcquirePerm from a client which does not support Probe (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\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_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_mask_T) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_92 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_92) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm carries invalid grow param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_159 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_159) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm requests NtoB (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_97 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_97) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_105 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_105 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel AcquirePerm is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which master claims it can't emit (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_197 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_197) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_172 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_172 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Get is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_244 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutFull type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_220 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_220 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutFull contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_244 & (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_244) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries PutPartial type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 PutPartial carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 PutPartial address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_208 & (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_208) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_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_302) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel PutPartial contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Arithmetic type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_337) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_306 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_306 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Arithmetic contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_376 & (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_376) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (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_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Logical contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Hint type which is unexpected using diplomatic parameters (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~source_ok & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~source_ok) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~is_aligned & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~is_aligned) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint address not aligned to size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_415 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_415) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint carries invalid opcode param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_212 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_212) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint contains invalid mask (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_101 & (io_in_a_valid & _T_384 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_384 & ~reset & ~_T_101) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel Hint is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_427 & (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_427) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel has invalid opcode (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_431 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_431 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\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_451 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_462) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_466 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_466) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_451 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_451 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\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_479 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_435) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData smaller than a beat (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_462) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_466 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_466) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_479 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_479 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_508 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_508 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_499 & (io_in_d_valid & _T_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~_T_499) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_525 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_525 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~source_ok_1) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_439 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_439) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_443 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_443) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_447 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_447) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_574) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel opcode changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_578 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_578) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel param changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_582 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_582) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel size changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_586 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_586) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel source changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_590 & (_T_573 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_573 & ~reset & ~_T_590) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel address changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_598 & (_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_598) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel opcode changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_602 & (_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_602) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_606 & (_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_606) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel size changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_610 & (_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_610) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel source changed within multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_614 & (_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_614) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & _T_2)) begin
+          $fatal; // @[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_618) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with multibeat operation (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_627 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_627 & ~reset & ~_T_631) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel re-used a source ID (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & _T_2 & ~_T_650) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_656) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (_T_638 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & same_cycle_resp & _T_2 & ~_T_660) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_668 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_668) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper opcode response (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_672 & (_T_638 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_638 & ~same_cycle_resp & _T_2 & ~_T_672) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_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_684) 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_691 & _T_2) begin
+          $fatal; // @[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_691) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & ~reset) begin
+          $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_700) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_734[0] & (_T_726 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_726 & _T_2 & ~_T_734[0]) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel acknowledged for nothing inflight (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_744 & (_T_726 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_726 & _T_2 & ~_T_744) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel contains improper response size (connected at BusWrapper.scala:264:51)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_769 & ~reset) begin
+          $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_769) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: TileLink timeout expired (connected at BusWrapper.scala:264:51)\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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[20:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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_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  [2:0]  auto_in_a_bits_source,
+  input  [20:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [20:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2:0] monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [20:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [2: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [20:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7: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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [20:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  wire  repeater_io_deq_bits_corrupt; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [20:0] _GEN_11 = {{15'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [3: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_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_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_14 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:4]; // @[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 ? 8'hff : 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:4]; // @[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 != 3'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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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_23(
+  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  [2:0]  auto_buffer_in_a_bits_size,
+  input  [2:0]  auto_buffer_in_a_bits_source,
+  input  [20:0] auto_buffer_in_a_bits_address,
+  input  [7:0]  auto_buffer_in_a_bits_mask,
+  input  [63:0] auto_buffer_in_a_bits_data,
+  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 [2:0]  auto_buffer_in_d_bits_size,
+  output [2:0]  auto_buffer_in_d_bits_source,
+  output        auto_buffer_in_d_bits_sink,
+  output        auto_buffer_in_d_bits_denied,
+  output [63:0] auto_buffer_in_d_bits_data,
+  output        auto_buffer_in_d_bits_corrupt,
+  input         auto_buffer_out_a_ready,
+  output        auto_buffer_out_a_valid,
+  output [2:0]  auto_buffer_out_a_bits_opcode,
+  output [2:0]  auto_buffer_out_a_bits_param,
+  output [1:0]  auto_buffer_out_a_bits_size,
+  output [6:0]  auto_buffer_out_a_bits_source,
+  output [20:0] auto_buffer_out_a_bits_address,
+  output [7:0]  auto_buffer_out_a_bits_mask,
+  output [63:0] auto_buffer_out_a_bits_data,
+  output        auto_buffer_out_a_bits_corrupt,
+  output        auto_buffer_out_d_ready,
+  input         auto_buffer_out_d_valid,
+  input  [2:0]  auto_buffer_out_d_bits_opcode,
+  input  [1:0]  auto_buffer_out_d_bits_size,
+  input  [6:0]  auto_buffer_out_d_bits_source,
+  input  [63:0] auto_buffer_out_d_bits_data
+);
+  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 [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 [20:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [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  buffer_auto_in_d_bits_sink; // @[Buffer.scala 68:28]
+  wire  buffer_auto_in_d_bits_denied; // @[Buffer.scala 68:28]
+  wire [63: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 [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 [20:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68: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 [2:0] fragmenter_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [20:0] fragmenter_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [2: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 [63: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 [20:0] fragmenter_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63: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 [63:0] fragmenter_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_auto_out_d_bits_corrupt; // @[Fragmenter.scala 333:34]
+  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 [2:0] buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [20:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2:0] buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [20:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63:0] buffer_1_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_1_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  TLBuffer_13 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)
+  );
+  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_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)
+  );
+  TLBuffer_12 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)
+  );
+  assign auto_buffer_in_a_ready = buffer_1_auto_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_valid = buffer_1_auto_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_opcode = buffer_1_auto_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_param = buffer_1_auto_in_d_bits_param; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_size = buffer_1_auto_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_source = buffer_1_auto_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_sink = buffer_1_auto_in_d_bits_sink; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_denied = buffer_1_auto_in_d_bits_denied; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_data = buffer_1_auto_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_buffer_in_d_bits_corrupt = buffer_1_auto_in_d_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign auto_buffer_out_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_buffer_out_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 311:12]
+  assign buffer_clock = clock;
+  assign buffer_reset = reset;
+  assign buffer_auto_in_a_valid = fragmenter_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_opcode = fragmenter_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_param = fragmenter_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_size = fragmenter_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_source = fragmenter_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_address = fragmenter_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_mask = fragmenter_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_data = fragmenter_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_a_bits_corrupt = fragmenter_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_auto_in_d_ready = fragmenter_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_a_ready = auto_buffer_out_a_ready; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_valid = auto_buffer_out_d_valid; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_opcode = auto_buffer_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_size = auto_buffer_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_source = auto_buffer_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign buffer_auto_out_d_bits_data = auto_buffer_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign fragmenter_clock = clock;
+  assign fragmenter_reset = reset;
+  assign fragmenter_auto_in_a_valid = buffer_1_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_param = buffer_1_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_size = buffer_1_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_source = buffer_1_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_address = buffer_1_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_data = buffer_1_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_in_d_ready = buffer_1_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_a_ready = buffer_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_valid = buffer_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_param = buffer_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_size = buffer_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_source = buffer_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_sink = buffer_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_denied = buffer_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_data = buffer_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign fragmenter_auto_out_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_in_a_valid = auto_buffer_in_a_valid; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_opcode = auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_param = auto_buffer_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_size = auto_buffer_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_source = auto_buffer_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_address = auto_buffer_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_mask = auto_buffer_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_data = auto_buffer_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_a_bits_corrupt = auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_in_d_ready = auto_buffer_in_d_ready; // @[LazyModule.scala 309:16]
+  assign buffer_1_auto_out_a_ready = fragmenter_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_valid = fragmenter_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_opcode = fragmenter_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_param = fragmenter_auto_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_size = fragmenter_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_source = fragmenter_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_sink = fragmenter_auto_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_denied = fragmenter_auto_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_data = fragmenter_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_corrupt = fragmenter_auto_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+endmodule
+module PeripheryBus_1(
+  input         auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_ready,
+  output        auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_valid,
+  output [2:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_param,
+  output [1:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_size,
+  output [6:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_source,
+  output [20:0] auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_address,
+  output [7:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_mask,
+  output [63:0] auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_data,
+  output        auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_corrupt,
+  output        auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_ready,
+  input         auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_valid,
+  input  [2:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_source,
+  input  [63:0] auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_data,
+  input         auto_coupler_to_slave_named_clockgater_buffer_out_a_ready,
+  output        auto_coupler_to_slave_named_clockgater_buffer_out_a_valid,
+  output [2:0]  auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_opcode,
+  output [2:0]  auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_param,
+  output [1:0]  auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_size,
+  output [6:0]  auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_source,
+  output [20:0] auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_address,
+  output [7:0]  auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_mask,
+  output [63:0] auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_data,
+  output        auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_corrupt,
+  output        auto_coupler_to_slave_named_clockgater_buffer_out_d_ready,
+  input         auto_coupler_to_slave_named_clockgater_buffer_out_d_valid,
+  input  [2:0]  auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_opcode,
+  input  [1:0]  auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_size,
+  input  [6:0]  auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_source,
+  input  [63:0] auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_data,
+  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 [7: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  [63:0] auto_coupler_to_bootrom_fragmenter_out_d_bits_data,
+  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 [2:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source,
+  output [31:0] auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address,
+  output [7:0]  auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask,
+  output [63:0] auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_data,
+  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  [2: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  [63: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 [7:0]  auto_coupler_to_debug_fragmenter_out_a_bits_mask,
+  output [63: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  [63: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 [7:0]  auto_coupler_to_clint_fragmenter_out_a_bits_mask,
+  output [63: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  [63: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 [7:0]  auto_coupler_to_plic_fragmenter_out_a_bits_mask,
+  output [63: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  [63: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 [2: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 [7:0]  auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask,
+  output [63: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  [2: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  [63: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_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_0_clock,
+  output        auto_fixedClockNode_out_0_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_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  [31:0] auto_bus_xing_in_a_bits_address,
+  input  [7:0]  auto_bus_xing_in_a_bits_mask,
+  input  [63: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 [63:0] auto_bus_xing_in_d_bits_data,
+  output        auto_bus_xing_in_d_bits_corrupt,
+  input         custom_boot,
+  output        clock,
+  output        reset
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  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_member_subsystem_cbus_0_clock; // @[BusWrapper.scala 40:48]
+  wire  subsystem_cbus_clock_groups_auto_out_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_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 [3:0] fixer_auto_in_a_bits_size; // @[PeripheryBus.scala 47:33]
+  wire [2:0] fixer_auto_in_a_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_in_a_bits_address; // @[PeripheryBus.scala 47:33]
+  wire [7:0] fixer_auto_in_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [63: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 [2: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 [63: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 [2:0] fixer_auto_out_a_bits_source; // @[PeripheryBus.scala 47:33]
+  wire [31:0] fixer_auto_out_a_bits_address; // @[PeripheryBus.scala 47:33]
+  wire [7:0] fixer_auto_out_a_bits_mask; // @[PeripheryBus.scala 47:33]
+  wire [63: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 [2: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 [63: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_clock; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_reset; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_1_a_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_1_a_valid; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_in_1_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [63:0] in_xbar_auto_in_1_a_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_1_d_valid; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_a_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_a_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_0_a_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_0_a_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_in_0_a_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_0_a_bits_source; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_in_0_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [7:0] in_xbar_auto_in_0_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [63:0] in_xbar_auto_in_0_a_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_a_bits_corrupt; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_d_ready; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_d_valid; // @[PeripheryBus.scala 49:29]
+  wire [2:0] in_xbar_auto_in_0_d_bits_opcode; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_0_d_bits_param; // @[PeripheryBus.scala 49:29]
+  wire [3:0] in_xbar_auto_in_0_d_bits_size; // @[PeripheryBus.scala 49:29]
+  wire [1:0] in_xbar_auto_in_0_d_bits_source; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_d_bits_sink; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_d_bits_denied; // @[PeripheryBus.scala 49:29]
+  wire [63:0] in_xbar_auto_in_0_d_bits_data; // @[PeripheryBus.scala 49:29]
+  wire  in_xbar_auto_in_0_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 [2:0] in_xbar_auto_out_a_bits_source; // @[PeripheryBus.scala 49:29]
+  wire [31:0] in_xbar_auto_out_a_bits_address; // @[PeripheryBus.scala 49:29]
+  wire [7:0] in_xbar_auto_out_a_bits_mask; // @[PeripheryBus.scala 49:29]
+  wire [63: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 [2: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 [63: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 [2:0] out_xbar_auto_in_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_in_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7:0] out_xbar_auto_in_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [63: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_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 [2:0] out_xbar_auto_out_8_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [20:0] out_xbar_auto_out_8_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7:0] out_xbar_auto_out_8_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [1:0] out_xbar_auto_out_8_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_8_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [63:0] out_xbar_auto_out_8_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_8_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 [2:0] out_xbar_auto_out_7_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [20:0] out_xbar_auto_out_7_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7:0] out_xbar_auto_out_7_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [1:0] out_xbar_auto_out_7_d_bits_param; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_d_bits_size; // @[PeripheryBus.scala 50:30]
+  wire [2:0] out_xbar_auto_out_7_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_bits_sink; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_bits_denied; // @[PeripheryBus.scala 50:30]
+  wire [63:0] out_xbar_auto_out_7_d_bits_data; // @[PeripheryBus.scala 50:30]
+  wire  out_xbar_auto_out_7_d_bits_corrupt; // @[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 [2:0] out_xbar_auto_out_6_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [16:0] out_xbar_auto_out_6_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7: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 [2:0] out_xbar_auto_out_6_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_5_a_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [31:0] out_xbar_auto_out_5_a_bits_address; // @[PeripheryBus.scala 50:30]
+  wire [7:0] out_xbar_auto_out_5_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63:0] out_xbar_auto_out_5_a_bits_data; // @[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 [2: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 [63: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 [2: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 [7:0] out_xbar_auto_out_4_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_4_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_3_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_3_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_2_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2:0] out_xbar_auto_out_2_d_bits_source; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [7:0] out_xbar_auto_out_1_a_bits_mask; // @[PeripheryBus.scala 50:30]
+  wire [63: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 [2: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 [63: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 [2: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 [7: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 [2: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 [63: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 [2:0] buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2:0] buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2:0] atomics_auto_in_a_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_in_a_bits_address; // @[AtomicAutomata.scala 283:29]
+  wire [7:0] atomics_auto_in_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [63: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 [2: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 [63: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 [2:0] atomics_auto_out_a_bits_source; // @[AtomicAutomata.scala 283:29]
+  wire [31:0] atomics_auto_out_a_bits_address; // @[AtomicAutomata.scala 283:29]
+  wire [7:0] atomics_auto_out_a_bits_mask; // @[AtomicAutomata.scala 283:29]
+  wire [63: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 [2: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 [63: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 [2: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 [7: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 [2: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 [63: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 [31:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [31:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_bus_named_subsystem_pbus_auto_widget_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] coupler_to_bus_named_subsystem_pbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2: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 [63: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 [7:0] coupler_to_plic_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_plic_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_plic_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63: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 [7:0] coupler_to_clint_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_clint_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_clint_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63: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 [7:0] coupler_to_debug_auto_fragmenter_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [63: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 [2: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 [7:0] coupler_to_debug_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_debug_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63: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 [2:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_tile_auto_tl_slave_clock_xing_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63: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_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 [2: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 [63: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 [2:0] coupler_to_tile_auto_tl_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_to_tile_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_tile_auto_tl_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_tile_auto_tl_in_a_bits_data; // @[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 [2: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 [63: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_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 [7: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 [63: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 [2: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 [7: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 [2:0] coupler_to_bootrom_auto_tl_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_bootrom_auto_tl_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_custom_boot_pin_auto_tl_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_custom_boot_pin_auto_tl_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_port_named_custom_boot_pin_auto_tl_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_port_named_custom_boot_pin_auto_tl_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_custom_boot_pin_auto_tl_in_d_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_custom_boot_pin_auto_tl_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_custom_boot_pin_auto_tl_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [31:0] coupler_from_port_named_custom_boot_pin_auto_tl_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_from_port_named_custom_boot_pin_auto_tl_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_from_port_named_custom_boot_pin_auto_tl_out_d_valid; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [20:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [20:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_clockgater_auto_buffer_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_clock; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_reset; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [20:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_param; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_source; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_param; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_source; // @[LazyModule.scala 432:27]
+  wire [20:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_address; // @[LazyModule.scala 432:27]
+  wire [7:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_mask; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_data; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_corrupt; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_ready; // @[LazyModule.scala 432:27]
+  wire  coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_valid; // @[LazyModule.scala 432:27]
+  wire [2:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_opcode; // @[LazyModule.scala 432:27]
+  wire [1:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_size; // @[LazyModule.scala 432:27]
+  wire [6:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_source; // @[LazyModule.scala 432:27]
+  wire [63:0] coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_data; // @[LazyModule.scala 432:27]
+  wire  bundleIn_0_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  reg [2:0] state; // @[CustomBootPin.scala 46:28]
+  wire  bundleOut_0_1_a_ready = coupler_from_port_named_custom_boot_pin_auto_tl_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  wire  _GEN_19 = 3'h2 == state ? 1'h0 : 3'h3 == state; // @[CustomBootPin.scala 47:20 50:24]
+  wire  _GEN_28 = 3'h1 == state | _GEN_19; // @[CustomBootPin.scala 50:24 53:24]
+  wire  bundleOut_0_1_a_valid = 3'h0 == state ? 1'h0 : _GEN_28; // @[CustomBootPin.scala 47:20 50:24]
+  wire  _T_2 = bundleOut_0_1_a_ready & bundleOut_0_1_a_valid; // @[Decoupled.scala 50:35]
+  wire  bundleOut_0_1_d_valid = coupler_from_port_named_custom_boot_pin_auto_tl_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  wire [2:0] _GEN_2 = bundleOut_0_1_d_valid ? 3'h3 : state; // @[CustomBootPin.scala 46:28 62:{58,66}]
+  wire [2:0] _GEN_3 = _T_2 ? 3'h4 : state; // @[CustomBootPin.scala 46:28 71:{30,38}]
+  wire [2:0] _GEN_4 = bundleOut_0_1_d_valid ? 3'h5 : state; // @[CustomBootPin.scala 46:28 73:{50,58}]
+  wire [2:0] _GEN_5 = ~custom_boot ? 3'h0 : state; // @[CustomBootPin.scala 46:28 74:{43,51}]
+  wire [2:0] _GEN_6 = 3'h5 == state ? _GEN_5 : state; // @[CustomBootPin.scala 50:24 46:28]
+  wire [2:0] _GEN_7 = 3'h4 == state ? _GEN_4 : _GEN_6; // @[CustomBootPin.scala 50:24]
+  wire [2:0] _GEN_17 = 3'h3 == state ? _GEN_3 : _GEN_7; // @[CustomBootPin.scala 50:24]
+  wire  bundleIn_0_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  ClockGroupAggregator_3 subsystem_cbus_clock_groups ( // @[BusWrapper.scala 40:48]
+    .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_member_subsystem_cbus_0_clock(subsystem_cbus_clock_groups_auto_out_member_subsystem_cbus_0_clock),
+    .auto_out_member_subsystem_cbus_0_reset(subsystem_cbus_clock_groups_auto_out_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_1 fixedClockNode ( // @[ClockGroup.scala 106:107]
+    .auto_in_clock(fixedClockNode_auto_in_clock),
+    .auto_in_reset(fixedClockNode_auto_in_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_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]
+    .clock(in_xbar_clock),
+    .reset(in_xbar_reset),
+    .auto_in_1_a_ready(in_xbar_auto_in_1_a_ready),
+    .auto_in_1_a_valid(in_xbar_auto_in_1_a_valid),
+    .auto_in_1_a_bits_address(in_xbar_auto_in_1_a_bits_address),
+    .auto_in_1_a_bits_data(in_xbar_auto_in_1_a_bits_data),
+    .auto_in_1_d_valid(in_xbar_auto_in_1_d_valid),
+    .auto_in_0_a_ready(in_xbar_auto_in_0_a_ready),
+    .auto_in_0_a_valid(in_xbar_auto_in_0_a_valid),
+    .auto_in_0_a_bits_opcode(in_xbar_auto_in_0_a_bits_opcode),
+    .auto_in_0_a_bits_param(in_xbar_auto_in_0_a_bits_param),
+    .auto_in_0_a_bits_size(in_xbar_auto_in_0_a_bits_size),
+    .auto_in_0_a_bits_source(in_xbar_auto_in_0_a_bits_source),
+    .auto_in_0_a_bits_address(in_xbar_auto_in_0_a_bits_address),
+    .auto_in_0_a_bits_mask(in_xbar_auto_in_0_a_bits_mask),
+    .auto_in_0_a_bits_data(in_xbar_auto_in_0_a_bits_data),
+    .auto_in_0_a_bits_corrupt(in_xbar_auto_in_0_a_bits_corrupt),
+    .auto_in_0_d_ready(in_xbar_auto_in_0_d_ready),
+    .auto_in_0_d_valid(in_xbar_auto_in_0_d_valid),
+    .auto_in_0_d_bits_opcode(in_xbar_auto_in_0_d_bits_opcode),
+    .auto_in_0_d_bits_param(in_xbar_auto_in_0_d_bits_param),
+    .auto_in_0_d_bits_size(in_xbar_auto_in_0_d_bits_size),
+    .auto_in_0_d_bits_source(in_xbar_auto_in_0_d_bits_source),
+    .auto_in_0_d_bits_sink(in_xbar_auto_in_0_d_bits_sink),
+    .auto_in_0_d_bits_denied(in_xbar_auto_in_0_d_bits_denied),
+    .auto_in_0_d_bits_data(in_xbar_auto_in_0_d_bits_data),
+    .auto_in_0_d_bits_corrupt(in_xbar_auto_in_0_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_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_param(out_xbar_auto_out_8_d_bits_param),
+    .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_sink(out_xbar_auto_out_8_d_bits_sink),
+    .auto_out_8_d_bits_denied(out_xbar_auto_out_8_d_bits_denied),
+    .auto_out_8_d_bits_data(out_xbar_auto_out_8_d_bits_data),
+    .auto_out_8_d_bits_corrupt(out_xbar_auto_out_8_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_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_param(out_xbar_auto_out_7_d_bits_param),
+    .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_sink(out_xbar_auto_out_7_d_bits_sink),
+    .auto_out_7_d_bits_denied(out_xbar_auto_out_7_d_bits_denied),
+    .auto_out_7_d_bits_data(out_xbar_auto_out_7_d_bits_data),
+    .auto_out_7_d_bits_corrupt(out_xbar_auto_out_7_d_bits_corrupt),
+    .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_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_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_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_10 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_15 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_16 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_17 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_18 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_19 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_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_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_20 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)
+  );
+  TLInterconnectCoupler_21 coupler_from_port_named_custom_boot_pin ( // @[LazyModule.scala 432:27]
+    .auto_tl_in_a_ready(coupler_from_port_named_custom_boot_pin_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(coupler_from_port_named_custom_boot_pin_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_address(coupler_from_port_named_custom_boot_pin_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_data(coupler_from_port_named_custom_boot_pin_auto_tl_in_a_bits_data),
+    .auto_tl_in_d_valid(coupler_from_port_named_custom_boot_pin_auto_tl_in_d_valid),
+    .auto_tl_out_a_ready(coupler_from_port_named_custom_boot_pin_auto_tl_out_a_ready),
+    .auto_tl_out_a_valid(coupler_from_port_named_custom_boot_pin_auto_tl_out_a_valid),
+    .auto_tl_out_a_bits_address(coupler_from_port_named_custom_boot_pin_auto_tl_out_a_bits_address),
+    .auto_tl_out_a_bits_data(coupler_from_port_named_custom_boot_pin_auto_tl_out_a_bits_data),
+    .auto_tl_out_d_valid(coupler_from_port_named_custom_boot_pin_auto_tl_out_d_valid)
+  );
+  TLInterconnectCoupler_22 coupler_to_slave_named_clockgater ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_slave_named_clockgater_clock),
+    .reset(coupler_to_slave_named_clockgater_reset),
+    .auto_buffer_in_a_ready(coupler_to_slave_named_clockgater_auto_buffer_in_a_ready),
+    .auto_buffer_in_a_valid(coupler_to_slave_named_clockgater_auto_buffer_in_a_valid),
+    .auto_buffer_in_a_bits_opcode(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_opcode),
+    .auto_buffer_in_a_bits_param(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_param),
+    .auto_buffer_in_a_bits_size(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_size),
+    .auto_buffer_in_a_bits_source(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_source),
+    .auto_buffer_in_a_bits_address(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_address),
+    .auto_buffer_in_a_bits_mask(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_mask),
+    .auto_buffer_in_a_bits_data(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_data),
+    .auto_buffer_in_a_bits_corrupt(coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_corrupt),
+    .auto_buffer_in_d_ready(coupler_to_slave_named_clockgater_auto_buffer_in_d_ready),
+    .auto_buffer_in_d_valid(coupler_to_slave_named_clockgater_auto_buffer_in_d_valid),
+    .auto_buffer_in_d_bits_opcode(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_opcode),
+    .auto_buffer_in_d_bits_param(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_param),
+    .auto_buffer_in_d_bits_size(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_size),
+    .auto_buffer_in_d_bits_source(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_source),
+    .auto_buffer_in_d_bits_sink(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_sink),
+    .auto_buffer_in_d_bits_denied(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_denied),
+    .auto_buffer_in_d_bits_data(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_data),
+    .auto_buffer_in_d_bits_corrupt(coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_corrupt),
+    .auto_buffer_out_a_ready(coupler_to_slave_named_clockgater_auto_buffer_out_a_ready),
+    .auto_buffer_out_a_valid(coupler_to_slave_named_clockgater_auto_buffer_out_a_valid),
+    .auto_buffer_out_a_bits_opcode(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_opcode),
+    .auto_buffer_out_a_bits_param(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_param),
+    .auto_buffer_out_a_bits_size(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_size),
+    .auto_buffer_out_a_bits_source(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_source),
+    .auto_buffer_out_a_bits_address(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_address),
+    .auto_buffer_out_a_bits_mask(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_mask),
+    .auto_buffer_out_a_bits_data(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_data),
+    .auto_buffer_out_a_bits_corrupt(coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_corrupt),
+    .auto_buffer_out_d_ready(coupler_to_slave_named_clockgater_auto_buffer_out_d_ready),
+    .auto_buffer_out_d_valid(coupler_to_slave_named_clockgater_auto_buffer_out_d_valid),
+    .auto_buffer_out_d_bits_opcode(coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_opcode),
+    .auto_buffer_out_d_bits_size(coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_size),
+    .auto_buffer_out_d_bits_source(coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_source),
+    .auto_buffer_out_d_bits_data(coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_data)
+  );
+  TLInterconnectCoupler_23 coupler_to_slave_named_tileresetsetter ( // @[LazyModule.scala 432:27]
+    .clock(coupler_to_slave_named_tileresetsetter_clock),
+    .reset(coupler_to_slave_named_tileresetsetter_reset),
+    .auto_buffer_in_a_ready(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_ready),
+    .auto_buffer_in_a_valid(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_valid),
+    .auto_buffer_in_a_bits_opcode(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_opcode),
+    .auto_buffer_in_a_bits_param(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_param),
+    .auto_buffer_in_a_bits_size(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_size),
+    .auto_buffer_in_a_bits_source(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_source),
+    .auto_buffer_in_a_bits_address(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_address),
+    .auto_buffer_in_a_bits_mask(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_mask),
+    .auto_buffer_in_a_bits_data(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_data),
+    .auto_buffer_in_a_bits_corrupt(coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_corrupt),
+    .auto_buffer_in_d_ready(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_ready),
+    .auto_buffer_in_d_valid(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_valid),
+    .auto_buffer_in_d_bits_opcode(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_opcode),
+    .auto_buffer_in_d_bits_param(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_param),
+    .auto_buffer_in_d_bits_size(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_size),
+    .auto_buffer_in_d_bits_source(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_source),
+    .auto_buffer_in_d_bits_sink(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_sink),
+    .auto_buffer_in_d_bits_denied(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_denied),
+    .auto_buffer_in_d_bits_data(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_data),
+    .auto_buffer_in_d_bits_corrupt(coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_corrupt),
+    .auto_buffer_out_a_ready(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_ready),
+    .auto_buffer_out_a_valid(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_valid),
+    .auto_buffer_out_a_bits_opcode(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_opcode),
+    .auto_buffer_out_a_bits_param(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_param),
+    .auto_buffer_out_a_bits_size(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_size),
+    .auto_buffer_out_a_bits_source(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_source),
+    .auto_buffer_out_a_bits_address(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_address),
+    .auto_buffer_out_a_bits_mask(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_mask),
+    .auto_buffer_out_a_bits_data(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_data),
+    .auto_buffer_out_a_bits_corrupt(coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_corrupt),
+    .auto_buffer_out_d_ready(coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_ready),
+    .auto_buffer_out_d_valid(coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_valid),
+    .auto_buffer_out_d_bits_opcode(coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_opcode),
+    .auto_buffer_out_d_bits_size(coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_size),
+    .auto_buffer_out_d_bits_source(coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_source),
+    .auto_buffer_out_d_bits_data(coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_data)
+  );
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_valid =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_opcode =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_param =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_size =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_source =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_address =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_mask =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_data =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_corrupt =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_ready =
+    coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_valid =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_opcode =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_param =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_size =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_source =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_address =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_mask =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_data =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_corrupt =
+    coupler_to_slave_named_clockgater_auto_buffer_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_coupler_to_slave_named_clockgater_buffer_out_d_ready =
+    coupler_to_slave_named_clockgater_auto_buffer_out_d_ready; // @[LazyModule.scala 311:12]
+  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_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_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_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_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 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_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_member_subsystem_cbus_0_clock; // @[LazyModule.scala 298:16]
+  assign clockGroup_auto_in_member_subsystem_cbus_0_reset =
+    subsystem_cbus_clock_groups_auto_out_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_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign in_xbar_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign in_xbar_auto_in_1_a_valid = coupler_from_port_named_custom_boot_pin_auto_tl_out_a_valid; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_1_a_bits_address = coupler_from_port_named_custom_boot_pin_auto_tl_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_1_a_bits_data = coupler_from_port_named_custom_boot_pin_auto_tl_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_valid = buffer_1_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_opcode = buffer_1_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_param = buffer_1_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_size = buffer_1_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_source = buffer_1_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_address = buffer_1_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_mask = buffer_1_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_data = buffer_1_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_a_bits_corrupt = buffer_1_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign in_xbar_auto_in_0_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_8_a_ready = coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_valid = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_opcode = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_param = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_size = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_source = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_sink = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_denied = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_data = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_8_d_bits_corrupt = coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_a_ready = coupler_to_slave_named_clockgater_auto_buffer_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_valid = coupler_to_slave_named_clockgater_auto_buffer_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_opcode = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_param = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_size = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_source = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_sink = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_denied = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_data = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_7_d_bits_corrupt = coupler_to_slave_named_clockgater_auto_buffer_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_a_ready = coupler_to_bootrom_auto_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_valid = coupler_to_bootrom_auto_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_size = coupler_to_bootrom_auto_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_source = coupler_to_bootrom_auto_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign out_xbar_auto_out_6_d_bits_data = coupler_to_bootrom_auto_tl_in_d_bits_data; // @[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_0_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_valid = in_xbar_auto_in_0_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_opcode = in_xbar_auto_in_0_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_param = in_xbar_auto_in_0_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_size = in_xbar_auto_in_0_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_source = in_xbar_auto_in_0_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_sink = in_xbar_auto_in_0_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_denied = in_xbar_auto_in_0_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_data = in_xbar_auto_in_0_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_1_auto_out_d_bits_corrupt = in_xbar_auto_in_0_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_d_ready = out_xbar_auto_out_5_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_6_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_opcode = out_xbar_auto_out_6_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_param = out_xbar_auto_out_6_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_size = out_xbar_auto_out_6_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_source = out_xbar_auto_out_6_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_address = out_xbar_auto_out_6_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_mask = out_xbar_auto_out_6_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_a_bits_corrupt = out_xbar_auto_out_6_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_bootrom_auto_tl_in_d_ready = out_xbar_auto_out_6_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_from_port_named_custom_boot_pin_auto_tl_in_a_valid = 3'h0 == state ? 1'h0 : _GEN_28; // @[CustomBootPin.scala 47:20 50:24]
+  assign coupler_from_port_named_custom_boot_pin_auto_tl_in_a_bits_address = 3'h1 == state ? 32'h4000 : 32'h2000000; // @[CustomBootPin.scala 50:24 54:23]
+  assign coupler_from_port_named_custom_boot_pin_auto_tl_in_a_bits_data = 3'h1 == state ? 64'h80000000 : 64'h1; // @[CustomBootPin.scala 50:24 54:23]
+  assign coupler_from_port_named_custom_boot_pin_auto_tl_out_a_ready = in_xbar_auto_in_1_a_ready; // @[LazyModule.scala 296:16]
+  assign coupler_from_port_named_custom_boot_pin_auto_tl_out_d_valid = in_xbar_auto_in_1_d_valid; // @[LazyModule.scala 296:16]
+  assign coupler_to_slave_named_clockgater_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_clockgater_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_valid = out_xbar_auto_out_7_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_opcode = out_xbar_auto_out_7_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_param = out_xbar_auto_out_7_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_size = out_xbar_auto_out_7_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_source = out_xbar_auto_out_7_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_address = out_xbar_auto_out_7_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_mask = out_xbar_auto_out_7_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_data = out_xbar_auto_out_7_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_a_bits_corrupt = out_xbar_auto_out_7_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_in_d_ready = out_xbar_auto_out_7_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_clockgater_auto_buffer_out_a_ready =
+    auto_coupler_to_slave_named_clockgater_buffer_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_clockgater_auto_buffer_out_d_valid =
+    auto_coupler_to_slave_named_clockgater_buffer_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_opcode =
+    auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_size =
+    auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_source =
+    auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_clockgater_auto_buffer_out_d_bits_data =
+    auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_tileresetsetter_clock = fixedClockNode_auto_out_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_tileresetsetter_reset = fixedClockNode_auto_out_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_valid = out_xbar_auto_out_8_a_valid; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_opcode = out_xbar_auto_out_8_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_param = out_xbar_auto_out_8_a_bits_param; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_size = out_xbar_auto_out_8_a_bits_size; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_source = out_xbar_auto_out_8_a_bits_source; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_address = out_xbar_auto_out_8_a_bits_address; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_mask = out_xbar_auto_out_8_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_data = out_xbar_auto_out_8_a_bits_data; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_a_bits_corrupt = out_xbar_auto_out_8_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_in_d_ready = out_xbar_auto_out_8_d_ready; // @[LazyModule.scala 298:16]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_out_a_ready =
+    auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_ready; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_valid =
+    auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_valid; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_opcode =
+    auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_size =
+    auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_source =
+    auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign coupler_to_slave_named_tileresetsetter_auto_buffer_out_d_bits_data =
+    auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_data; // @[LazyModule.scala 311:12]
+  always @(posedge bundleIn_0_clock) begin
+    if (bundleIn_0_reset) begin // @[CustomBootPin.scala 46:28]
+      state <= 3'h0; // @[CustomBootPin.scala 46:28]
+    end else if (3'h0 == state) begin // @[CustomBootPin.scala 50:24]
+      if (custom_boot) begin // @[CustomBootPin.scala 51:46]
+        state <= 3'h1; // @[CustomBootPin.scala 51:54]
+      end
+    end else if (3'h1 == state) begin // @[CustomBootPin.scala 50:24]
+      if (_T_2) begin // @[CustomBootPin.scala 60:30]
+        state <= 3'h2; // @[CustomBootPin.scala 60:38]
+      end
+    end else if (3'h2 == state) begin // @[CustomBootPin.scala 50:24]
+      state <= _GEN_2;
+    end else begin
+      state <= _GEN_17;
+    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];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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  [3:0]  io_in_a_bits_size,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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  [1:0]  io_in_d_bits_param,
+  input  [3: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;
+  reg [31:0] _RAND_17;
+  reg [31:0] _RAND_18;
+`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 [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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32: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  _T_17 = io_in_a_bits_size <= 4'hc; // @[Parameters.scala 92:42]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_33 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_36 = $signed(_T_34) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_38 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_41 = $signed(_T_39) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_73 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_76 = $signed(_T_74) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_191 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_195 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_196 = _T_195 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_204 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_384 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_416 = _T_17 & _T_32; // @[Parameters.scala 670:56]
+  wire  _T_418 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_485 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_486 = _T_418 & _T_485; // @[Parameters.scala 670:56]
+  wire  _T_488 = _T_416 | _T_486; // @[Parameters.scala 672:30]
+  wire  _T_498 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_502 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_510 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_577 = _T_27 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_578 = _T_418 & _T_577; // @[Parameters.scala 670:56]
+  wire  _T_599 = _T_416 | _T_578; // @[Parameters.scala 672:30]
+  wire  _T_601 = _T_17 & _T_599; // @[Monitor.scala 115:71]
+  wire  _T_619 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_724 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_725 = io_in_a_bits_mask & _T_724; // @[Monitor.scala 127:31]
+  wire  _T_726 = _T_725 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_730 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_738 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_793 = _T_27 | _T_32 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_794 = _T_738 & _T_793; // @[Parameters.scala 670:56]
+  wire  _T_816 = _T_17 & _T_794; // @[Monitor.scala 131:74]
+  wire  _T_826 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_834 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_930 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_938 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1024 = _T_17 & _T_416; // @[Monitor.scala 147:68]
+  wire  _T_1034 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1046 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1193 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1197 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1201 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1209 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'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_72 = {{12'd0}, inflight_opcodes}; // @[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 [15:0] _a_size_lookup_T_5 = 16'h100 - 16'h1; // @[Monitor.scala 609:57]
+  wire [15:0] _GEN_74 = {{8'd0}, inflight_sizes}; // @[Monitor.scala 638:91]
+  wire [15:0] _a_size_lookup_T_6 = _GEN_74 & _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_1243 = 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_1246 = _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] 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] _a_opcodes_set_T_1 = {{15'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  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] _a_sizes_set_T_1 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire  _T_1250 = ~inflight; // @[Monitor.scala 658:17]
+  wire [1:0] _GEN_16 = _a_first_T & a_first_1 ? 2'h1 : 2'h0; // @[Monitor.scala 652:72 653:28]
+  wire [18:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[Monitor.scala 671:71]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1050 ? 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_1256 ? 2'h1 : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1256 ? _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_1256 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _T_1269 = inflight | _T_1243; // @[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_1274 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1275 = io_in_d_bits_opcode == _GEN_32 | _T_1274; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_76 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1291 = _GEN_76 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _T_1256; // @[Monitor.scala 694:116]
+  wire  _T_1303 = ~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_1310 = 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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'h0; // @[Edges.scala 230:25]
+  wire [15:0] _GEN_79 = {{8'd0}, inflight_sizes_1}; // @[Monitor.scala 747:93]
+  wire [15:0] _c_size_lookup_T_6 = _GEN_79 & _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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1050 ? _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_1363 = _GEN_76 == 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 <= 9'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 <= 9'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]
+      address <= io_in_a_bits_address; // @[Monitor.scala 401:15]
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      d_first_counter <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 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 <= 9'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 <= 9'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 (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 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_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 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_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 & ~_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_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 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_191 & (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 & ~_T_191) 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_196 & (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 & ~_T_196) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (io_in_a_valid & _T_204 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset) 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 (~_mask_T & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~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_191 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_191) 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_384 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_384) 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_196 & (io_in_a_valid & _T_204 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_204 & ~reset & ~_T_196) 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_17 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_17) 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_488 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_488) 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 (~is_aligned & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_498 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_502) 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_601 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_601) 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 (~is_aligned & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~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_498 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_498) 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_502 & (io_in_a_valid & _T_510 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_510 & ~reset & ~_T_502) 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_601 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_601) 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 (~is_aligned & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~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_498 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_498) 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_726 & (io_in_a_valid & _T_619 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_619 & ~reset & ~_T_726) 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_816 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_816) 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 (~is_aligned & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~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_826 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_826) 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_502 & (io_in_a_valid & _T_730 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_730 & ~reset & ~_T_502) 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_816 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_816) 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 (~is_aligned & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~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_930 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_930) 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_502 & (io_in_a_valid & _T_834 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_834 & ~reset & ~_T_502) 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_1024 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1024) 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 (~is_aligned & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~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_1034 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_1034) 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_502 & (io_in_a_valid & _T_938 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_938 & ~reset & ~_T_502) 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_1046 & (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_1046) 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 (~_T_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) 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_1058 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) 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_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) 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 (io_in_d_valid & _T_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) 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_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) 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 (io_in_d_valid & _T_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) 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_1118 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) 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 (~_T_1058 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) 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 (~_T_1058 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) 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_1118 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) 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 (~_T_1058 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) 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_1193 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1193) 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_1197 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1197) 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_1201 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1201) 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_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) 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_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) 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_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) 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_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) 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_1233 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) 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_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) 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_1250 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) 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_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) 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_1275 & (_T_1257 & _T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_1243 & _T_2 & ~_T_1275) 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_1279 & (_T_1257 & _T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_1243 & _T_2 & ~_T_1279) 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_1287 & (_T_1257 & ~_T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~_T_1243 & _T_2 & ~_T_1287) 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_1291 & (_T_1257 & ~_T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~_T_1243 & _T_2 & ~_T_1291) 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_1303 & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~_T_1303) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (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_1319 & ~reset) begin
+          $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_1319) 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_1345 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2) 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_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) 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
+  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[8: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}};
+  address = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  d_first_counter = _RAND_5[8:0];
+  _RAND_6 = {1{`RANDOM}};
+  opcode_1 = _RAND_6[2:0];
+  _RAND_7 = {1{`RANDOM}};
+  param_1 = _RAND_7[1:0];
+  _RAND_8 = {1{`RANDOM}};
+  size_1 = _RAND_8[3:0];
+  _RAND_9 = {1{`RANDOM}};
+  sink = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  denied = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  inflight = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight_sizes = _RAND_13[7:0];
+  _RAND_14 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_14[8:0];
+  _RAND_15 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_15[8:0];
+  _RAND_16 = {1{`RANDOM}};
+  watchdog = _RAND_16[31:0];
+  _RAND_17 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[7:0];
+  _RAND_18 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_18[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLMonitor_41(
+  input         clock,
+  input         reset,
+  input         io_in_a_ready,
+  input         io_in_a_valid,
+  input  [31:0] io_in_a_bits_address,
+  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_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 [31:0] _is_aligned_T = io_in_a_bits_address & 32'h3f; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [32:0] _T_7 = {1'b0,$signed(io_in_a_bits_address)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_26 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_27 = $signed(_T_26) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_28 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_29 = {1'b0,$signed(_T_28)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_31 = $signed(_T_29) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_32 = $signed(_T_31) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_33 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_36 = $signed(_T_34) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_38 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_39 = {1'b0,$signed(_T_38)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_41 = $signed(_T_39) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_42 = $signed(_T_41) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_43 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_44 = {1'b0,$signed(_T_43)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_46 = $signed(_T_44) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_47 = $signed(_T_46) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_48 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_49 = {1'b0,$signed(_T_48)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_51 = $signed(_T_49) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_52 = $signed(_T_51) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_53 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_54 = {1'b0,$signed(_T_53)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_56 = $signed(_T_54) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_57 = $signed(_T_56) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_58 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_59 = {1'b0,$signed(_T_58)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_61 = $signed(_T_59) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_62 = $signed(_T_61) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_63 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_64 = {1'b0,$signed(_T_63)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_66 = $signed(_T_64) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_67 = $signed(_T_66) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_68 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_69 = {1'b0,$signed(_T_68)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_71 = $signed(_T_69) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_72 = $signed(_T_71) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_73 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_74 = {1'b0,$signed(_T_73)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_76 = $signed(_T_74) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_77 = $signed(_T_76) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_78 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_79 = {1'b0,$signed(_T_78)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_81 = $signed(_T_79) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_82 = $signed(_T_81) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_485 = _T_27 | _T_37 | _T_42 | _T_47 | _T_52 | _T_57 | _T_62 | _T_67 | _T_72 | _T_77 | _T_82; // @[Parameters.scala 671:42]
+  wire  _T_488 = _T_32 | _T_485; // @[Parameters.scala 672:30]
+  wire  _T_1046 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _T_1050 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1054 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1058 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1062 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1066 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1070 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1081 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1085 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1098 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1118 = _T_1066 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1127 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1144 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1162 = 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 [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'h0; // @[Edges.scala 230:25]
+  reg [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1192 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1209 = io_in_a_bits_address == address; // @[Monitor.scala 394:32]
+  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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1216 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1217 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1221 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1225 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1233 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1237 = 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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'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_1243 = 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_1246 = 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_1250 = ~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_1254 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1256 = ~_T_1050; // @[Monitor.scala 671:74]
+  wire  _T_1257 = io_in_d_valid & d_first_1 & ~_T_1050; // @[Monitor.scala 671:71]
+  wire [1:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_1050 ? 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 [30:0] _GEN_23 = _T_1257 ? _d_opcodes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 677:21]
+  wire [30:0] _GEN_24 = _T_1257 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 675:91 678:21]
+  wire  _T_1269 = inflight | _T_1243; // @[Monitor.scala 682:49]
+  wire  _T_1275 = _T_1144 | _T_1144; // @[Monitor.scala 685:77]
+  wire  _T_1279 = 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_1286 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1287 = io_in_d_bits_opcode == _GEN_48 | _T_1286; // @[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_1291 = _GEN_75 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1301 = _T_1254 & a_first_1 & io_in_a_valid & _T_1256; // @[Monitor.scala 694:116]
+  wire  a_set_wo_ready = _GEN_15[0];
+  wire  d_clr_wo_ready = _GEN_21[0];
+  wire  _T_1310 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire  a_set = _GEN_16[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_1319 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'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_1345 = io_in_d_valid & d_first_2 & _T_1050; // @[Monitor.scala 779:71]
+  wire [30:0] _GEN_69 = _T_1345 ? _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_1363 = _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 <= 9'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 <= 9'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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (io_in_d_valid) 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 <= 9'h0;
+        end
+      end else begin
+        d_first_counter <= d_first_counter1;
+      end
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      opcode_1 <= io_in_d_bits_opcode; // @[Monitor.scala 550:15]
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      param_1 <= io_in_d_bits_param; // @[Monitor.scala 551:15]
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      size_1 <= io_in_d_bits_size; // @[Monitor.scala 552:15]
+    end
+    if (io_in_d_valid & d_first) begin // @[Monitor.scala 549:32]
+      sink <= io_in_d_bits_sink; // @[Monitor.scala 554:15]
+    end
+    if (io_in_d_valid & 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_wo_ready; // @[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 <= 9'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 <= 9'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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (io_in_d_valid) 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 <= 9'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 | io_in_d_valid) 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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (io_in_d_valid) 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 <= 9'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_488 & (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_488) 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_1046 & (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_1046) 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_1054 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1054) 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_1058 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1062) 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_1066 & (io_in_d_valid & _T_1050 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1050 & _T_2 & ~_T_1066) 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 (io_in_d_valid & _T_1070 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid sink ID (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_1054 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1085) 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_1062 & (io_in_d_valid & _T_1070 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1070 & _T_2 & ~_T_1062) 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 (io_in_d_valid & _T_1098 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid sink ID (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_1054 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1054) 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_1081 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1081) 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_1085 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1085) 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_1118 & (io_in_d_valid & _T_1098 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1098 & _T_2 & ~_T_1118) 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_1058 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1127 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1127 & _T_2 & ~_T_1062) 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_1058 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1058) 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_1118 & (io_in_d_valid & _T_1144 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1144 & _T_2 & ~_T_1118) 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_1058 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1058) 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_1062 & (io_in_d_valid & _T_1162 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1162 & _T_2 & ~_T_1062) 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_1209 & (_T_1192 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1192 & ~reset & ~_T_1209) 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_1217 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1217) 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_1221 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1221) 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_1225 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1225) 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_1233 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1233) 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_1237 & (_T_1216 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1216 & _T_2 & ~_T_1237) 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_1250 & (_T_1246 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1246 & ~reset & ~_T_1250) 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_1269 & (_T_1257 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_2 & ~_T_1269) 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_1275 & (_T_1257 & _T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_1243 & _T_2 & ~_T_1275) 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_1279 & (_T_1257 & _T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & _T_1243 & _T_2 & ~_T_1279) 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_1287 & (_T_1257 & ~_T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~_T_1243 & _T_2 & ~_T_1287) 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_1291 & (_T_1257 & ~_T_1243 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1257 & ~_T_1243 & _T_2 & ~_T_1291) 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 (~io_in_a_ready & (_T_1301 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1301 & _T_2 & ~io_in_a_ready) 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_1310 & _T_2) begin
+          $fatal; // @[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_1310) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (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_1319 & ~reset) begin
+          $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_1319) 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_1345 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _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_1363 & (_T_1345 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1345 & _T_2 & ~_T_1363) 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[8:0];
+  _RAND_1 = {1{`RANDOM}};
+  address = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  d_first_counter = _RAND_2[8: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[0: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[8:0];
+  _RAND_12 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_12[8: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[8:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLXbar_6(
+  input         clock,
+  input         reset,
+  output        auto_in_1_a_ready,
+  input         auto_in_1_a_valid,
+  input  [31:0] auto_in_1_a_bits_address,
+  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 [63: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  [31:0] auto_in_0_a_bits_address,
+  input  [7:0]  auto_in_0_a_bits_mask,
+  input  [63:0] auto_in_0_a_bits_data,
+  input         auto_in_0_d_ready,
+  output        auto_in_0_d_valid,
+  output [2:0]  auto_in_0_d_bits_opcode,
+  output [3:0]  auto_in_0_d_bits_size,
+  output        auto_in_0_d_bits_denied,
+  output [63:0] auto_in_0_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 [3:0]  auto_out_a_bits_size,
+  output        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input         auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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;
+`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 [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [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_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_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 [31:0] monitor_1_io_in_a_bits_address; // @[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  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  requestDOI_0_1 = ~auto_out_d_bits_source; // @[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 [8:0] beatsAI_decode = _beatsAI_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  beatsAI_opdata = ~auto_in_0_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] beatsLeft; // @[Arbiter.scala 87:30]
+  wire  idle = beatsLeft == 9'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_10 = auto_in_0_a_valid | auto_in_1_a_valid; // @[Arbiter.scala 107:36]
+  wire  _T_11 = ~(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_10 : _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 [8:0] _GEN_3 = {{8'd0}, _beatsLeft_T_2}; // @[Arbiter.scala 113:52]
+  wire [8: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 [7:0] _T_30 = muxStateEarly_0 ? auto_in_0_a_bits_mask : 8'h0; // @[Mux.scala 27:73]
+  wire [7:0] _T_31 = muxStateEarly_1 ? 8'hff : 8'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_33 = muxStateEarly_0 ? auto_in_0_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [31:0] _T_34 = muxStateEarly_1 ? auto_in_1_a_bits_address : 32'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_39 = muxStateEarly_0 ? auto_in_0_a_bits_size : 4'h0; // @[Mux.scala 27:73]
+  wire [3:0] _T_40 = muxStateEarly_1 ? 4'h6 : 4'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_45 = muxStateEarly_0 ? auto_in_0_a_bits_opcode : 3'h0; // @[Mux.scala 27:73]
+  wire [2:0] _T_46 = muxStateEarly_1 ? 3'h4 : 3'h0; // @[Mux.scala 27:73]
+  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_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_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)
+  );
+  TLMonitor_41 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_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_d_valid = auto_out_d_valid & auto_out_d_bits_source; // @[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_size = auto_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  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_out_a_valid = idle ? _T_10 : _out_0_a_earlyValid_T_3; // @[Arbiter.scala 125:29]
+  assign auto_out_a_bits_opcode = _T_45 | _T_46; // @[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_39 | _T_40; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_source = idle ? earlyWinner_0 : state_0; // @[Arbiter.scala 117:30]
+  assign auto_out_a_bits_address = _T_33 | _T_34; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_mask = _T_30 | _T_31; // @[Mux.scala 27:73]
+  assign auto_out_a_bits_data = muxStateEarly_0 ? auto_in_0_a_bits_data : 64'h0; // @[Mux.scala 27:73]
+  assign auto_out_d_ready = auto_out_d_bits_source & auto_in_0_d_ready | requestDOI_0_1; // @[Mux.scala 27:73]
+  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_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_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 & auto_out_d_bits_source; // @[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_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_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_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 <= 9'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 <= 9'h0;
+        end
+      end else begin
+        beatsLeft <= 9'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_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[8: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_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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input  [63: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 IntXbar_1(
+  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
+);
+  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]
+endmodule
+module BundleBridgeNexus_4(
+  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_w,
+  input         io_pmp_0_cfg_r,
+  input  [29:0] io_pmp_0_addr,
+  input  [31:0] io_pmp_0_mask,
+  input         io_pmp_1_cfg_l,
+  input  [1:0]  io_pmp_1_cfg_a,
+  input         io_pmp_1_cfg_w,
+  input         io_pmp_1_cfg_r,
+  input  [29:0] io_pmp_1_addr,
+  input  [31:0] io_pmp_1_mask,
+  input         io_pmp_2_cfg_l,
+  input  [1:0]  io_pmp_2_cfg_a,
+  input         io_pmp_2_cfg_w,
+  input         io_pmp_2_cfg_r,
+  input  [29:0] io_pmp_2_addr,
+  input  [31:0] io_pmp_2_mask,
+  input         io_pmp_3_cfg_l,
+  input  [1:0]  io_pmp_3_cfg_a,
+  input         io_pmp_3_cfg_w,
+  input         io_pmp_3_cfg_r,
+  input  [29:0] io_pmp_3_addr,
+  input  [31:0] io_pmp_3_mask,
+  input         io_pmp_4_cfg_l,
+  input  [1:0]  io_pmp_4_cfg_a,
+  input         io_pmp_4_cfg_w,
+  input         io_pmp_4_cfg_r,
+  input  [29:0] io_pmp_4_addr,
+  input  [31:0] io_pmp_4_mask,
+  input         io_pmp_5_cfg_l,
+  input  [1:0]  io_pmp_5_cfg_a,
+  input         io_pmp_5_cfg_w,
+  input         io_pmp_5_cfg_r,
+  input  [29:0] io_pmp_5_addr,
+  input  [31:0] io_pmp_5_mask,
+  input         io_pmp_6_cfg_l,
+  input  [1:0]  io_pmp_6_cfg_a,
+  input         io_pmp_6_cfg_w,
+  input         io_pmp_6_cfg_r,
+  input  [29:0] io_pmp_6_addr,
+  input  [31:0] io_pmp_6_mask,
+  input         io_pmp_7_cfg_l,
+  input  [1:0]  io_pmp_7_cfg_a,
+  input         io_pmp_7_cfg_w,
+  input         io_pmp_7_cfg_r,
+  input  [29:0] io_pmp_7_addr,
+  input  [31:0] io_pmp_7_mask,
+  input  [31:0] io_addr,
+  input  [1:0]  io_size,
+  output        io_r,
+  output        io_w
+);
+  wire  default_ = io_prv > 2'h1; // @[PMP.scala 156:56]
+  wire [5:0] _res_hit_lsbMask_T_1 = 6'h7 << io_size; // @[package.scala 234:77]
+  wire [2:0] _res_hit_lsbMask_T_3 = ~_res_hit_lsbMask_T_1[2:0]; // @[package.scala 234:46]
+  wire [31:0] _GEN_0 = {{29'd0}, _res_hit_lsbMask_T_3}; // @[PMP.scala 69:26]
+  wire [31:0] res_hit_lsbMask = io_pmp_7_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [31:0] _res_hit_msbMatch_T_1 = {io_pmp_7_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbMatch_T_2 = ~_res_hit_msbMatch_T_1; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbMatch_T_3 = _res_hit_msbMatch_T_2 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbMatch_T_4 = ~_res_hit_msbMatch_T_3; // @[PMP.scala 61:27]
+  wire [28:0] _res_hit_msbMatch_T_7 = io_addr[31:3] ^ _res_hit_msbMatch_T_4[31:3]; // @[PMP.scala 64:47]
+  wire [28:0] _res_hit_msbMatch_T_8 = ~io_pmp_7_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_9 = _res_hit_msbMatch_T_7 & _res_hit_msbMatch_T_8; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch = _res_hit_msbMatch_T_9 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_7 = io_addr[2:0] ^ _res_hit_msbMatch_T_4[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_8 = ~res_hit_lsbMask[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_9 = _res_hit_lsbMatch_T_7 & _res_hit_lsbMatch_T_8; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch = _res_hit_lsbMatch_T_9 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_1 = res_hit_msbMatch & res_hit_lsbMatch; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_1 = {io_pmp_6_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_2 = ~_res_hit_msbsLess_T_1; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_3 = _res_hit_msbsLess_T_2 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_4 = ~_res_hit_msbsLess_T_3; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess = io_addr[31:3] < _res_hit_msbsLess_T_4[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_6 = io_addr[31:3] ^ _res_hit_msbsLess_T_4[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual = _res_hit_msbsEqual_T_6 == 29'h0; // @[PMP.scala 82:69]
+  wire [2:0] _res_hit_lsbsLess_T_1 = io_addr[2:0] | _res_hit_lsbMask_T_3; // @[PMP.scala 83:42]
+  wire  res_hit_lsbsLess = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_4[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_8 = res_hit_msbsLess | res_hit_msbsEqual & res_hit_lsbsLess; // @[PMP.scala 84:16]
+  wire  _res_hit_T_9 = ~_res_hit_T_8; // @[PMP.scala 89:5]
+  wire  res_hit_msbsLess_1 = io_addr[31:3] < _res_hit_msbMatch_T_4[31:3]; // @[PMP.scala 81:39]
+  wire  res_hit_msbsEqual_1 = _res_hit_msbMatch_T_7 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_1 = io_addr[2:0] < _res_hit_msbMatch_T_4[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_11 = res_hit_msbsLess_1 | res_hit_msbsEqual_1 & res_hit_lsbsLess_1; // @[PMP.scala 84:16]
+  wire  _res_hit_T_12 = _res_hit_T_9 & _res_hit_T_11; // @[PMP.scala 95:48]
+  wire  res_hit = io_pmp_7_cfg_a[1] ? _res_hit_T_1 : io_pmp_7_cfg_a[0] & _res_hit_T_12; // @[PMP.scala 133:8]
+  wire  res_ignore = default_ & ~io_pmp_7_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_14 = ~io_addr[2:0]; // @[PMP.scala 124:125]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_15 = _res_hit_msbsLess_T_4[2:0] & _res_aligned_straddlesLowerBound_T_14; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound = res_hit_msbsEqual & _res_aligned_straddlesLowerBound_T_15 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_15 = _res_hit_msbMatch_T_4[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound = res_hit_msbsEqual_1 & _res_aligned_straddlesUpperBound_T_15 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned = ~(res_aligned_straddlesLowerBound | res_aligned_straddlesUpperBound); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_1 = ~io_pmp_7_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_2 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_1; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned = _res_aligned_pow2Aligned_T_2 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned = io_pmp_7_cfg_a[1] ? res_aligned_pow2Aligned : res_aligned_rangeAligned; // @[PMP.scala 128:8]
+  wire  res_cur_cfg_r = res_aligned & (io_pmp_7_cfg_r | res_ignore); // @[PMP.scala 182:26]
+  wire  res_cur_cfg_w = res_aligned & (io_pmp_7_cfg_w | res_ignore); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_1 = io_pmp_6_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_18 = ~io_pmp_6_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_19 = _res_hit_msbsEqual_T_6 & _res_hit_msbMatch_T_18; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_1 = _res_hit_msbMatch_T_19 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_17 = io_addr[2:0] ^ _res_hit_msbsLess_T_4[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_18 = ~res_hit_lsbMask_1[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_19 = _res_hit_lsbMatch_T_17 & _res_hit_lsbMatch_T_18; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_1 = _res_hit_lsbMatch_T_19 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_15 = res_hit_msbMatch_1 & res_hit_lsbMatch_1; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_13 = {io_pmp_5_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_14 = ~_res_hit_msbsLess_T_13; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_15 = _res_hit_msbsLess_T_14 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_16 = ~_res_hit_msbsLess_T_15; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess_2 = io_addr[31:3] < _res_hit_msbsLess_T_16[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_20 = io_addr[31:3] ^ _res_hit_msbsLess_T_16[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual_2 = _res_hit_msbsEqual_T_20 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_2 = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_16[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_22 = res_hit_msbsLess_2 | res_hit_msbsEqual_2 & res_hit_lsbsLess_2; // @[PMP.scala 84:16]
+  wire  _res_hit_T_23 = ~_res_hit_T_22; // @[PMP.scala 89:5]
+  wire  res_hit_lsbsLess_3 = io_addr[2:0] < _res_hit_msbsLess_T_4[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_25 = res_hit_msbsLess | res_hit_msbsEqual & res_hit_lsbsLess_3; // @[PMP.scala 84:16]
+  wire  _res_hit_T_26 = _res_hit_T_23 & _res_hit_T_25; // @[PMP.scala 95:48]
+  wire  res_hit_1 = io_pmp_6_cfg_a[1] ? _res_hit_T_15 : io_pmp_6_cfg_a[0] & _res_hit_T_26; // @[PMP.scala 133:8]
+  wire  res_ignore_1 = default_ & ~io_pmp_6_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_32 = _res_hit_msbsLess_T_16[2:0] & _res_aligned_straddlesLowerBound_T_14
+    ; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound_1 = res_hit_msbsEqual_2 & _res_aligned_straddlesLowerBound_T_32 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_32 = _res_hit_msbsLess_T_4[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_1 = res_hit_msbsEqual & _res_aligned_straddlesUpperBound_T_32 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_1 = ~(res_aligned_straddlesLowerBound_1 | res_aligned_straddlesUpperBound_1); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_4 = ~io_pmp_6_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_5 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_4; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_1 = _res_aligned_pow2Aligned_T_5 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_1 = io_pmp_6_cfg_a[1] ? res_aligned_pow2Aligned_1 : res_aligned_rangeAligned_1; // @[PMP.scala 128:8]
+  wire  res_cur_1_cfg_r = res_aligned_1 & (io_pmp_6_cfg_r | res_ignore_1); // @[PMP.scala 182:26]
+  wire  res_cur_1_cfg_w = res_aligned_1 & (io_pmp_6_cfg_w | res_ignore_1); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_2 = io_pmp_5_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_28 = ~io_pmp_5_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_29 = _res_hit_msbsEqual_T_20 & _res_hit_msbMatch_T_28; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_2 = _res_hit_msbMatch_T_29 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_27 = io_addr[2:0] ^ _res_hit_msbsLess_T_16[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_28 = ~res_hit_lsbMask_2[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_29 = _res_hit_lsbMatch_T_27 & _res_hit_lsbMatch_T_28; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_2 = _res_hit_lsbMatch_T_29 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_29 = res_hit_msbMatch_2 & res_hit_lsbMatch_2; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_25 = {io_pmp_4_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_26 = ~_res_hit_msbsLess_T_25; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_27 = _res_hit_msbsLess_T_26 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_28 = ~_res_hit_msbsLess_T_27; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess_4 = io_addr[31:3] < _res_hit_msbsLess_T_28[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_34 = io_addr[31:3] ^ _res_hit_msbsLess_T_28[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual_4 = _res_hit_msbsEqual_T_34 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_4 = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_28[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_36 = res_hit_msbsLess_4 | res_hit_msbsEqual_4 & res_hit_lsbsLess_4; // @[PMP.scala 84:16]
+  wire  _res_hit_T_37 = ~_res_hit_T_36; // @[PMP.scala 89:5]
+  wire  res_hit_lsbsLess_5 = io_addr[2:0] < _res_hit_msbsLess_T_16[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_39 = res_hit_msbsLess_2 | res_hit_msbsEqual_2 & res_hit_lsbsLess_5; // @[PMP.scala 84:16]
+  wire  _res_hit_T_40 = _res_hit_T_37 & _res_hit_T_39; // @[PMP.scala 95:48]
+  wire  res_hit_2 = io_pmp_5_cfg_a[1] ? _res_hit_T_29 : io_pmp_5_cfg_a[0] & _res_hit_T_40; // @[PMP.scala 133:8]
+  wire  res_ignore_2 = default_ & ~io_pmp_5_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_49 = _res_hit_msbsLess_T_28[2:0] & _res_aligned_straddlesLowerBound_T_14
+    ; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound_2 = res_hit_msbsEqual_4 & _res_aligned_straddlesLowerBound_T_49 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_49 = _res_hit_msbsLess_T_16[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_2 = res_hit_msbsEqual_2 & _res_aligned_straddlesUpperBound_T_49 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_2 = ~(res_aligned_straddlesLowerBound_2 | res_aligned_straddlesUpperBound_2); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_7 = ~io_pmp_5_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_8 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_7; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_2 = _res_aligned_pow2Aligned_T_8 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_2 = io_pmp_5_cfg_a[1] ? res_aligned_pow2Aligned_2 : res_aligned_rangeAligned_2; // @[PMP.scala 128:8]
+  wire  res_cur_2_cfg_r = res_aligned_2 & (io_pmp_5_cfg_r | res_ignore_2); // @[PMP.scala 182:26]
+  wire  res_cur_2_cfg_w = res_aligned_2 & (io_pmp_5_cfg_w | res_ignore_2); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_3 = io_pmp_4_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_38 = ~io_pmp_4_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_39 = _res_hit_msbsEqual_T_34 & _res_hit_msbMatch_T_38; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_3 = _res_hit_msbMatch_T_39 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_37 = io_addr[2:0] ^ _res_hit_msbsLess_T_28[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_38 = ~res_hit_lsbMask_3[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_39 = _res_hit_lsbMatch_T_37 & _res_hit_lsbMatch_T_38; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_3 = _res_hit_lsbMatch_T_39 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_43 = res_hit_msbMatch_3 & res_hit_lsbMatch_3; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_37 = {io_pmp_3_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_38 = ~_res_hit_msbsLess_T_37; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_39 = _res_hit_msbsLess_T_38 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_40 = ~_res_hit_msbsLess_T_39; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess_6 = io_addr[31:3] < _res_hit_msbsLess_T_40[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_48 = io_addr[31:3] ^ _res_hit_msbsLess_T_40[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual_6 = _res_hit_msbsEqual_T_48 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_6 = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_40[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_50 = res_hit_msbsLess_6 | res_hit_msbsEqual_6 & res_hit_lsbsLess_6; // @[PMP.scala 84:16]
+  wire  _res_hit_T_51 = ~_res_hit_T_50; // @[PMP.scala 89:5]
+  wire  res_hit_lsbsLess_7 = io_addr[2:0] < _res_hit_msbsLess_T_28[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_53 = res_hit_msbsLess_4 | res_hit_msbsEqual_4 & res_hit_lsbsLess_7; // @[PMP.scala 84:16]
+  wire  _res_hit_T_54 = _res_hit_T_51 & _res_hit_T_53; // @[PMP.scala 95:48]
+  wire  res_hit_3 = io_pmp_4_cfg_a[1] ? _res_hit_T_43 : io_pmp_4_cfg_a[0] & _res_hit_T_54; // @[PMP.scala 133:8]
+  wire  res_ignore_3 = default_ & ~io_pmp_4_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_66 = _res_hit_msbsLess_T_40[2:0] & _res_aligned_straddlesLowerBound_T_14
+    ; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound_3 = res_hit_msbsEqual_6 & _res_aligned_straddlesLowerBound_T_66 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_66 = _res_hit_msbsLess_T_28[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_3 = res_hit_msbsEqual_4 & _res_aligned_straddlesUpperBound_T_66 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_3 = ~(res_aligned_straddlesLowerBound_3 | res_aligned_straddlesUpperBound_3); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_10 = ~io_pmp_4_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_11 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_10; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_3 = _res_aligned_pow2Aligned_T_11 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_3 = io_pmp_4_cfg_a[1] ? res_aligned_pow2Aligned_3 : res_aligned_rangeAligned_3; // @[PMP.scala 128:8]
+  wire  res_cur_3_cfg_r = res_aligned_3 & (io_pmp_4_cfg_r | res_ignore_3); // @[PMP.scala 182:26]
+  wire  res_cur_3_cfg_w = res_aligned_3 & (io_pmp_4_cfg_w | res_ignore_3); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_4 = io_pmp_3_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_48 = ~io_pmp_3_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_49 = _res_hit_msbsEqual_T_48 & _res_hit_msbMatch_T_48; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_4 = _res_hit_msbMatch_T_49 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_47 = io_addr[2:0] ^ _res_hit_msbsLess_T_40[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_48 = ~res_hit_lsbMask_4[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_49 = _res_hit_lsbMatch_T_47 & _res_hit_lsbMatch_T_48; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_4 = _res_hit_lsbMatch_T_49 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_57 = res_hit_msbMatch_4 & res_hit_lsbMatch_4; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_49 = {io_pmp_2_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_50 = ~_res_hit_msbsLess_T_49; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_51 = _res_hit_msbsLess_T_50 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_52 = ~_res_hit_msbsLess_T_51; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess_8 = io_addr[31:3] < _res_hit_msbsLess_T_52[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_62 = io_addr[31:3] ^ _res_hit_msbsLess_T_52[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual_8 = _res_hit_msbsEqual_T_62 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_8 = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_52[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_64 = res_hit_msbsLess_8 | res_hit_msbsEqual_8 & res_hit_lsbsLess_8; // @[PMP.scala 84:16]
+  wire  _res_hit_T_65 = ~_res_hit_T_64; // @[PMP.scala 89:5]
+  wire  res_hit_lsbsLess_9 = io_addr[2:0] < _res_hit_msbsLess_T_40[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_67 = res_hit_msbsLess_6 | res_hit_msbsEqual_6 & res_hit_lsbsLess_9; // @[PMP.scala 84:16]
+  wire  _res_hit_T_68 = _res_hit_T_65 & _res_hit_T_67; // @[PMP.scala 95:48]
+  wire  res_hit_4 = io_pmp_3_cfg_a[1] ? _res_hit_T_57 : io_pmp_3_cfg_a[0] & _res_hit_T_68; // @[PMP.scala 133:8]
+  wire  res_ignore_4 = default_ & ~io_pmp_3_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_83 = _res_hit_msbsLess_T_52[2:0] & _res_aligned_straddlesLowerBound_T_14
+    ; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound_4 = res_hit_msbsEqual_8 & _res_aligned_straddlesLowerBound_T_83 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_83 = _res_hit_msbsLess_T_40[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_4 = res_hit_msbsEqual_6 & _res_aligned_straddlesUpperBound_T_83 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_4 = ~(res_aligned_straddlesLowerBound_4 | res_aligned_straddlesUpperBound_4); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_13 = ~io_pmp_3_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_14 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_13; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_4 = _res_aligned_pow2Aligned_T_14 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_4 = io_pmp_3_cfg_a[1] ? res_aligned_pow2Aligned_4 : res_aligned_rangeAligned_4; // @[PMP.scala 128:8]
+  wire  res_cur_4_cfg_r = res_aligned_4 & (io_pmp_3_cfg_r | res_ignore_4); // @[PMP.scala 182:26]
+  wire  res_cur_4_cfg_w = res_aligned_4 & (io_pmp_3_cfg_w | res_ignore_4); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_5 = io_pmp_2_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_58 = ~io_pmp_2_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_59 = _res_hit_msbsEqual_T_62 & _res_hit_msbMatch_T_58; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_5 = _res_hit_msbMatch_T_59 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_57 = io_addr[2:0] ^ _res_hit_msbsLess_T_52[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_58 = ~res_hit_lsbMask_5[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_59 = _res_hit_lsbMatch_T_57 & _res_hit_lsbMatch_T_58; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_5 = _res_hit_lsbMatch_T_59 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_71 = res_hit_msbMatch_5 & res_hit_lsbMatch_5; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_61 = {io_pmp_1_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_62 = ~_res_hit_msbsLess_T_61; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_63 = _res_hit_msbsLess_T_62 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_64 = ~_res_hit_msbsLess_T_63; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess_10 = io_addr[31:3] < _res_hit_msbsLess_T_64[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_76 = io_addr[31:3] ^ _res_hit_msbsLess_T_64[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual_10 = _res_hit_msbsEqual_T_76 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_10 = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_64[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_78 = res_hit_msbsLess_10 | res_hit_msbsEqual_10 & res_hit_lsbsLess_10; // @[PMP.scala 84:16]
+  wire  _res_hit_T_79 = ~_res_hit_T_78; // @[PMP.scala 89:5]
+  wire  res_hit_lsbsLess_11 = io_addr[2:0] < _res_hit_msbsLess_T_52[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_81 = res_hit_msbsLess_8 | res_hit_msbsEqual_8 & res_hit_lsbsLess_11; // @[PMP.scala 84:16]
+  wire  _res_hit_T_82 = _res_hit_T_79 & _res_hit_T_81; // @[PMP.scala 95:48]
+  wire  res_hit_5 = io_pmp_2_cfg_a[1] ? _res_hit_T_71 : io_pmp_2_cfg_a[0] & _res_hit_T_82; // @[PMP.scala 133:8]
+  wire  res_ignore_5 = default_ & ~io_pmp_2_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_100 = _res_hit_msbsLess_T_64[2:0] &
+    _res_aligned_straddlesLowerBound_T_14; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound_5 = res_hit_msbsEqual_10 & _res_aligned_straddlesLowerBound_T_100 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_100 = _res_hit_msbsLess_T_52[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_5 = res_hit_msbsEqual_8 & _res_aligned_straddlesUpperBound_T_100 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_5 = ~(res_aligned_straddlesLowerBound_5 | res_aligned_straddlesUpperBound_5); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_16 = ~io_pmp_2_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_17 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_16; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_5 = _res_aligned_pow2Aligned_T_17 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_5 = io_pmp_2_cfg_a[1] ? res_aligned_pow2Aligned_5 : res_aligned_rangeAligned_5; // @[PMP.scala 128:8]
+  wire  res_cur_5_cfg_r = res_aligned_5 & (io_pmp_2_cfg_r | res_ignore_5); // @[PMP.scala 182:26]
+  wire  res_cur_5_cfg_w = res_aligned_5 & (io_pmp_2_cfg_w | res_ignore_5); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_6 = io_pmp_1_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_68 = ~io_pmp_1_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_69 = _res_hit_msbsEqual_T_76 & _res_hit_msbMatch_T_68; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_6 = _res_hit_msbMatch_T_69 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_67 = io_addr[2:0] ^ _res_hit_msbsLess_T_64[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_68 = ~res_hit_lsbMask_6[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_69 = _res_hit_lsbMatch_T_67 & _res_hit_lsbMatch_T_68; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_6 = _res_hit_lsbMatch_T_69 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_85 = res_hit_msbMatch_6 & res_hit_lsbMatch_6; // @[PMP.scala 72:16]
+  wire [31:0] _res_hit_msbsLess_T_73 = {io_pmp_0_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_msbsLess_T_74 = ~_res_hit_msbsLess_T_73; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_msbsLess_T_75 = _res_hit_msbsLess_T_74 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_msbsLess_T_76 = ~_res_hit_msbsLess_T_75; // @[PMP.scala 61:27]
+  wire  res_hit_msbsLess_12 = io_addr[31:3] < _res_hit_msbsLess_T_76[31:3]; // @[PMP.scala 81:39]
+  wire [28:0] _res_hit_msbsEqual_T_90 = io_addr[31:3] ^ _res_hit_msbsLess_T_76[31:3]; // @[PMP.scala 82:41]
+  wire  res_hit_msbsEqual_12 = _res_hit_msbsEqual_T_90 == 29'h0; // @[PMP.scala 82:69]
+  wire  res_hit_lsbsLess_12 = _res_hit_lsbsLess_T_1 < _res_hit_msbsLess_T_76[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_92 = res_hit_msbsLess_12 | res_hit_msbsEqual_12 & res_hit_lsbsLess_12; // @[PMP.scala 84:16]
+  wire  _res_hit_T_93 = ~_res_hit_T_92; // @[PMP.scala 89:5]
+  wire  res_hit_lsbsLess_13 = io_addr[2:0] < _res_hit_msbsLess_T_64[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_95 = res_hit_msbsLess_10 | res_hit_msbsEqual_10 & res_hit_lsbsLess_13; // @[PMP.scala 84:16]
+  wire  _res_hit_T_96 = _res_hit_T_93 & _res_hit_T_95; // @[PMP.scala 95:48]
+  wire  res_hit_6 = io_pmp_1_cfg_a[1] ? _res_hit_T_85 : io_pmp_1_cfg_a[0] & _res_hit_T_96; // @[PMP.scala 133:8]
+  wire  res_ignore_6 = default_ & ~io_pmp_1_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesLowerBound_T_117 = _res_hit_msbsLess_T_76[2:0] &
+    _res_aligned_straddlesLowerBound_T_14; // @[PMP.scala 124:123]
+  wire  res_aligned_straddlesLowerBound_6 = res_hit_msbsEqual_12 & _res_aligned_straddlesLowerBound_T_117 != 3'h0; // @[PMP.scala 124:88]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_117 = _res_hit_msbsLess_T_64[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_6 = res_hit_msbsEqual_10 & _res_aligned_straddlesUpperBound_T_117 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_6 = ~(res_aligned_straddlesLowerBound_6 | res_aligned_straddlesUpperBound_6); // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_19 = ~io_pmp_1_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_20 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_19; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_6 = _res_aligned_pow2Aligned_T_20 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_6 = io_pmp_1_cfg_a[1] ? res_aligned_pow2Aligned_6 : res_aligned_rangeAligned_6; // @[PMP.scala 128:8]
+  wire  res_cur_6_cfg_r = res_aligned_6 & (io_pmp_1_cfg_r | res_ignore_6); // @[PMP.scala 182:26]
+  wire  res_cur_6_cfg_w = res_aligned_6 & (io_pmp_1_cfg_w | res_ignore_6); // @[PMP.scala 183:26]
+  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 [31:0] res_hit_lsbMask_7 = io_pmp_0_mask | _GEN_0; // @[PMP.scala 69:26]
+  wire [28:0] _res_hit_msbMatch_T_78 = ~io_pmp_0_mask[31:3]; // @[PMP.scala 64:54]
+  wire [28:0] _res_hit_msbMatch_T_79 = _res_hit_msbsEqual_T_90 & _res_hit_msbMatch_T_78; // @[PMP.scala 64:52]
+  wire  res_hit_msbMatch_7 = _res_hit_msbMatch_T_79 == 29'h0; // @[PMP.scala 64:58]
+  wire [2:0] _res_hit_lsbMatch_T_77 = io_addr[2:0] ^ _res_hit_msbsLess_T_76[2:0]; // @[PMP.scala 64:47]
+  wire [2:0] _res_hit_lsbMatch_T_78 = ~res_hit_lsbMask_7[2:0]; // @[PMP.scala 64:54]
+  wire [2:0] _res_hit_lsbMatch_T_79 = _res_hit_lsbMatch_T_77 & _res_hit_lsbMatch_T_78; // @[PMP.scala 64:52]
+  wire  res_hit_lsbMatch_7 = _res_hit_lsbMatch_T_79 == 3'h0; // @[PMP.scala 64:58]
+  wire  _res_hit_T_99 = res_hit_msbMatch_7 & res_hit_lsbMatch_7; // @[PMP.scala 72:16]
+  wire  res_hit_lsbsLess_15 = io_addr[2:0] < _res_hit_msbsLess_T_76[2:0]; // @[PMP.scala 83:53]
+  wire  _res_hit_T_109 = res_hit_msbsLess_12 | res_hit_msbsEqual_12 & res_hit_lsbsLess_15; // @[PMP.scala 84:16]
+  wire  res_hit_7 = io_pmp_0_cfg_a[1] ? _res_hit_T_99 : io_pmp_0_cfg_a[0] & _res_hit_T_109; // @[PMP.scala 133:8]
+  wire  res_ignore_7 = default_ & ~io_pmp_0_cfg_l; // @[PMP.scala 164:26]
+  wire [2:0] _res_aligned_straddlesUpperBound_T_134 = _res_hit_msbsLess_T_76[2:0] & _res_hit_lsbsLess_T_1; // @[PMP.scala 125:113]
+  wire  res_aligned_straddlesUpperBound_7 = res_hit_msbsEqual_12 & _res_aligned_straddlesUpperBound_T_134 != 3'h0; // @[PMP.scala 125:83]
+  wire  res_aligned_rangeAligned_7 = ~res_aligned_straddlesUpperBound_7; // @[PMP.scala 126:24]
+  wire [2:0] _res_aligned_pow2Aligned_T_22 = ~io_pmp_0_mask[2:0]; // @[PMP.scala 127:34]
+  wire [2:0] _res_aligned_pow2Aligned_T_23 = _res_hit_lsbMask_T_3 & _res_aligned_pow2Aligned_T_22; // @[PMP.scala 127:32]
+  wire  res_aligned_pow2Aligned_7 = _res_aligned_pow2Aligned_T_23 == 3'h0; // @[PMP.scala 127:57]
+  wire  res_aligned_7 = io_pmp_0_cfg_a[1] ? res_aligned_pow2Aligned_7 : res_aligned_rangeAligned_7; // @[PMP.scala 128:8]
+  wire  res_cur_7_cfg_r = res_aligned_7 & (io_pmp_0_cfg_r | res_ignore_7); // @[PMP.scala 182:26]
+  wire  res_cur_7_cfg_w = res_aligned_7 & (io_pmp_0_cfg_w | res_ignore_7); // @[PMP.scala 183:26]
+  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]
+endmodule
+module TLB(
+  input         io_req_valid,
+  input  [33: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 [31: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,
+  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_w,
+  input         io_ptw_pmp_0_cfg_r,
+  input  [29:0] io_ptw_pmp_0_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_1_cfg_r,
+  input  [29:0] io_ptw_pmp_1_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_2_cfg_r,
+  input  [29:0] io_ptw_pmp_2_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_3_cfg_r,
+  input  [29:0] io_ptw_pmp_3_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_4_cfg_r,
+  input  [29:0] io_ptw_pmp_4_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_5_cfg_r,
+  input  [29:0] io_ptw_pmp_5_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_6_cfg_r,
+  input  [29:0] io_ptw_pmp_6_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_7_cfg_r,
+  input  [29:0] io_ptw_pmp_7_addr,
+  input  [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_0_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_0_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_1_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_1_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_2_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_2_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_3_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_3_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_4_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_4_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_5_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_5_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_6_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_6_addr; // @[TLB.scala 233:19]
+  wire [31: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_w; // @[TLB.scala 233:19]
+  wire  pmp_io_pmp_7_cfg_r; // @[TLB.scala 233:19]
+  wire [29:0] pmp_io_pmp_7_addr; // @[TLB.scala 233:19]
+  wire [31:0] pmp_io_pmp_7_mask; // @[TLB.scala 233:19]
+  wire [31:0] pmp_io_addr; // @[TLB.scala 233:19]
+  wire [1:0] pmp_io_size; // @[TLB.scala 233:19]
+  wire  pmp_io_r; // @[TLB.scala 233:19]
+  wire  pmp_io_w; // @[TLB.scala 233:19]
+  wire [20:0] vpn = io_req_bits_vaddr[32:12]; // @[TLB.scala 187:30]
+  wire [21:0] mpu_ppn = io_req_bits_vaddr[33:12]; // @[TLB.scala 230:144]
+  wire [33: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 [33:0] _legal_address_T = mpu_physaddr ^ 34'h3000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_1 = {1'b0,$signed(_legal_address_T)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_3 = $signed(_legal_address_T_1) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_4 = $signed(_legal_address_T_3) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_5 = mpu_physaddr ^ 34'h4000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_6 = {1'b0,$signed(_legal_address_T_5)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_8 = $signed(_legal_address_T_6) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_9 = $signed(_legal_address_T_8) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_10 = mpu_physaddr ^ 34'h10000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_11 = {1'b0,$signed(_legal_address_T_10)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_13 = $signed(_legal_address_T_11) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_14 = $signed(_legal_address_T_13) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_15 = mpu_physaddr ^ 34'h20000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_16 = {1'b0,$signed(_legal_address_T_15)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_18 = $signed(_legal_address_T_16) & -35'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_19 = $signed(_legal_address_T_18) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_20 = mpu_physaddr ^ 34'h10010000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_21 = {1'b0,$signed(_legal_address_T_20)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_23 = $signed(_legal_address_T_21) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_24 = $signed(_legal_address_T_23) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_25 = mpu_physaddr ^ 34'h10011000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_26 = {1'b0,$signed(_legal_address_T_25)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_28 = $signed(_legal_address_T_26) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_29 = $signed(_legal_address_T_28) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_30 = mpu_physaddr ^ 34'h10012000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_31 = {1'b0,$signed(_legal_address_T_30)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_33 = $signed(_legal_address_T_31) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_34 = $signed(_legal_address_T_33) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_35 = mpu_physaddr ^ 34'h10013000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_36 = {1'b0,$signed(_legal_address_T_35)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_38 = $signed(_legal_address_T_36) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_39 = $signed(_legal_address_T_38) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_40 = mpu_physaddr ^ 34'h20000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_41 = {1'b0,$signed(_legal_address_T_40)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_43 = $signed(_legal_address_T_41) & -35'sh10000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_44 = $signed(_legal_address_T_43) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_45 = mpu_physaddr ^ 34'h10014000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_46 = {1'b0,$signed(_legal_address_T_45)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_48 = $signed(_legal_address_T_46) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_49 = $signed(_legal_address_T_48) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_50 = mpu_physaddr ^ 34'h30000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_51 = {1'b0,$signed(_legal_address_T_50)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_53 = $signed(_legal_address_T_51) & -35'sh10000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_54 = $signed(_legal_address_T_53) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_55 = mpu_physaddr ^ 34'hc000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_56 = {1'b0,$signed(_legal_address_T_55)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_58 = $signed(_legal_address_T_56) & -35'sh4000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_59 = $signed(_legal_address_T_58) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_60 = mpu_physaddr ^ 34'h2000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_61 = {1'b0,$signed(_legal_address_T_60)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_63 = $signed(_legal_address_T_61) & -35'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_64 = $signed(_legal_address_T_63) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _legal_address_T_66 = {1'b0,$signed(mpu_physaddr)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_68 = $signed(_legal_address_T_66) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_69 = $signed(_legal_address_T_68) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_70 = mpu_physaddr ^ 34'h80000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_71 = {1'b0,$signed(_legal_address_T_70)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_73 = $signed(_legal_address_T_71) & -35'sh4000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_74 = $signed(_legal_address_T_73) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_75 = mpu_physaddr ^ 34'h10000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_76 = {1'b0,$signed(_legal_address_T_75)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_78 = $signed(_legal_address_T_76) & -35'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_79 = $signed(_legal_address_T_78) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_80 = mpu_physaddr ^ 34'h100000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_81 = {1'b0,$signed(_legal_address_T_80)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_83 = $signed(_legal_address_T_81) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_84 = $signed(_legal_address_T_83) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_85 = mpu_physaddr ^ 34'h110000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_86 = {1'b0,$signed(_legal_address_T_85)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_88 = $signed(_legal_address_T_86) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_89 = $signed(_legal_address_T_88) == 35'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; // @[TLB.scala 238:67]
+  wire  deny_access_to_debug = mpu_priv <= 3'h3 & _legal_address_T_69; // @[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 [34:0] _prot_w_T_3 = $signed(_legal_address_T_66) & 35'sh38130000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_4 = $signed(_prot_w_T_3) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _prot_w_T_8 = $signed(_legal_address_T_81) & 35'shb8120000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_9 = $signed(_prot_w_T_8) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _prot_w_T_10 = mpu_physaddr ^ 34'h8000000; // @[Parameters.scala 137:31]
+  wire [34:0] _prot_w_T_11 = {1'b0,$signed(_prot_w_T_10)}; // @[Parameters.scala 137:49]
+  wire [34:0] _prot_w_T_13 = $signed(_prot_w_T_11) & 35'shb8000000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_14 = $signed(_prot_w_T_13) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _prot_w_T_18 = $signed(_legal_address_T_11) & 35'shb8120000; // @[Parameters.scala 137:52]
+  wire  _prot_w_T_19 = $signed(_prot_w_T_18) == 35'sh0; // @[Parameters.scala 137:67]
+  wire  _prot_w_T_22 = _prot_w_T_4 | _prot_w_T_9 | _prot_w_T_14 | _prot_w_T_19; // @[Parameters.scala 615:89]
+  wire  _prot_w_T_43 = legal_address & _prot_w_T_22; // @[TLB.scala 240:19]
+  wire  prot_w = _prot_w_T_43 & _prot_r_T_6 & pmp_io_w; // @[TLB.scala 245:70]
+  wire [34:0] _prot_x_T_42 = $signed(_legal_address_T_61) & 35'shba130000; // @[Parameters.scala 137:52]
+  wire  _prot_x_T_43 = $signed(_prot_x_T_42) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _prot_eff_T_38 = $signed(_legal_address_T_66) & 35'shba132000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_39 = $signed(_prot_eff_T_38) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _prot_eff_T_43 = $signed(_legal_address_T_81) & 35'shba122000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_44 = $signed(_prot_eff_T_43) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _prot_eff_T_58 = $signed(_legal_address_T_21) & 35'shba130000; // @[Parameters.scala 137:52]
+  wire  _prot_eff_T_59 = $signed(_prot_eff_T_58) == 35'sh0; // @[Parameters.scala 137:67]
+  wire  _prot_eff_T_63 = _prot_eff_T_39 | _prot_eff_T_44 | _prot_x_T_43 | _prot_w_T_14 | _prot_eff_T_59; // @[Parameters.scala 615:89]
+  wire  prot_eff = legal_address & _prot_eff_T_63; // @[TLB.scala 240:19]
+  wire [19:0] ppn = vpn[19: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] _ppp_array_T_1 = _prot_w_T_43 ? 2'h3 : 2'h0; // @[Bitwise.scala 74:12]
+  wire [6:0] ppp_array = {_ppp_array_T_1,5'h0}; // @[Cat.scala 31:58]
+  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 [33:0] _GEN_144 = {{30'd0}, _misaligned_T_2}; // @[TLB.scala 341:39]
+  wire [33: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_2 = cmd_lrsc ? 7'h7f : 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; // @[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]
+  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_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_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_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_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_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_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_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_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_size(pmp_io_size),
+    .io_r(pmp_io_r),
+    .io_w(pmp_io_w)
+  );
+  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 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_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_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_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_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_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_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_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_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[31:0]; // @[TLB.scala 234:15]
+  assign pmp_io_size = io_req_bits_size; // @[TLB.scala 235:15]
+endmodule
+module DCacheModuleImpl_Anon_1(
+  input         io_in_2_valid,
+  input  [33:0] io_in_2_bits_addr,
+  input         io_in_3_valid,
+  input  [33:0] io_in_3_bits_addr,
+  output        io_in_5_ready,
+  input         io_in_5_valid,
+  output        io_in_7_ready,
+  input         io_in_7_valid,
+  input  [33:0] io_in_7_bits_addr,
+  output        io_out_valid,
+  output        io_out_bits_write,
+  output [33:0] io_out_bits_addr
+);
+  wire [33:0] _GEN_22 = io_in_3_valid ? io_in_3_bits_addr : io_in_7_bits_addr; // @[Arbiter.scala 141:26 143:19]
+  wire  _GEN_29 = io_in_2_valid | io_in_3_valid; // @[Arbiter.scala 141:26 143:19]
+  wire  grant_4 = ~_GEN_29; // @[Arbiter.scala 46:78]
+  assign io_in_5_ready = ~_GEN_29; // @[Arbiter.scala 46:78]
+  assign io_in_7_ready = ~_GEN_29; // @[Arbiter.scala 46:78]
+  assign io_out_valid = ~grant_4 | io_in_7_valid; // @[Arbiter.scala 150:31]
+  assign io_out_bits_write = io_in_2_valid | io_in_3_valid; // @[Arbiter.scala 141:26 143:19]
+  assign io_out_bits_addr = io_in_2_valid ? io_in_2_bits_addr : _GEN_22; // @[Arbiter.scala 141:26 143:19]
+endmodule
+module DCacheDataArray(
+  input         clock,
+  input         io_req_valid,
+  input  [13:0] io_req_bits_addr,
+  input         io_req_bits_write,
+  input  [63:0] io_req_bits_wdata,
+  input  [7:0]  io_req_bits_eccMask,
+  output [63:0] io_resp_0
+);
+  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 [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_wdata_4; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_5; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_6; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_wdata_7; // @[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 [7:0] data_arrays_0_RW0_rdata_4; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_5; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_6; // @[DescribedSRAM.scala 19:26]
+  wire [7:0] data_arrays_0_RW0_rdata_7; // @[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  data_arrays_0_RW0_wmask_4; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_5; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_6; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_0_RW0_wmask_7; // @[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 [31:0] rdata_lo = {data_arrays_0_RW0_rdata_3,data_arrays_0_RW0_rdata_2,data_arrays_0_RW0_rdata_1,
+    data_arrays_0_RW0_rdata_0}; // @[Cat.scala 31:58]
+  wire [31:0] rdata_hi = {data_arrays_0_RW0_rdata_7,data_arrays_0_RW0_rdata_6,data_arrays_0_RW0_rdata_5,
+    data_arrays_0_RW0_rdata_4}; // @[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_wdata_4(data_arrays_0_RW0_wdata_4),
+    .RW0_wdata_5(data_arrays_0_RW0_wdata_5),
+    .RW0_wdata_6(data_arrays_0_RW0_wdata_6),
+    .RW0_wdata_7(data_arrays_0_RW0_wdata_7),
+    .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_rdata_4(data_arrays_0_RW0_rdata_4),
+    .RW0_rdata_5(data_arrays_0_RW0_rdata_5),
+    .RW0_rdata_6(data_arrays_0_RW0_rdata_6),
+    .RW0_rdata_7(data_arrays_0_RW0_rdata_7),
+    .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),
+    .RW0_wmask_4(data_arrays_0_RW0_wmask_4),
+    .RW0_wmask_5(data_arrays_0_RW0_wmask_5),
+    .RW0_wmask_6(data_arrays_0_RW0_wmask_6),
+    .RW0_wmask_7(data_arrays_0_RW0_wmask_7)
+  );
+  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_wdata_4 = io_req_bits_wdata[39:32]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wdata_5 = io_req_bits_wdata[47:40]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wdata_6 = io_req_bits_wdata[55:48]; // @[package.scala 202:50]
+  assign data_arrays_0_RW0_wdata_7 = io_req_bits_wdata[63:56]; // @[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_wmask_4 = io_req_bits_eccMask[4]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_wmask_5 = io_req_bits_eccMask[5]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_wmask_6 = io_req_bits_eccMask[6]; // @[DCache.scala 50:82]
+  assign data_arrays_0_RW0_wmask_7 = io_req_bits_eccMask[7]; // @[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[13:3]; // @[DCache.scala 53:31]
+endmodule
+module DCacheModuleImpl_Anon_2(
+  input         io_in_0_valid,
+  input  [13:0] io_in_0_bits_addr,
+  input         io_in_0_bits_write,
+  input  [63:0] io_in_0_bits_wdata,
+  input  [7:0]  io_in_0_bits_eccMask,
+  output        io_in_1_ready,
+  input         io_in_1_valid,
+  input  [13:0] io_in_1_bits_addr,
+  input         io_in_1_bits_write,
+  input  [63:0] io_in_1_bits_wdata,
+  input  [7:0]  io_in_1_bits_eccMask,
+  output        io_in_3_ready,
+  input         io_in_3_valid,
+  input  [13:0] io_in_3_bits_addr,
+  input  [63:0] io_in_3_bits_wdata,
+  input         io_in_3_bits_wordMask,
+  output        io_out_valid,
+  output [13:0] io_out_bits_addr,
+  output        io_out_bits_write,
+  output [63:0] io_out_bits_wdata,
+  output [7:0]  io_out_bits_eccMask
+);
+  wire [7:0] _GEN_9 = io_in_1_valid ? io_in_1_bits_eccMask : 8'hff; // @[Arbiter.scala 141:26 143:19]
+  wire [63:0] _GEN_11 = io_in_1_valid ? io_in_1_bits_wdata : io_in_3_bits_wdata; // @[Arbiter.scala 141:26 143:19]
+  wire [13:0] _GEN_13 = io_in_1_valid ? io_in_1_bits_addr : io_in_3_bits_addr; // @[Arbiter.scala 141:26 143:19]
+  wire  grant_2 = ~(io_in_0_valid | io_in_1_valid); // @[Arbiter.scala 46:78]
+  assign io_in_1_ready = ~io_in_0_valid; // @[Arbiter.scala 46:78]
+  assign io_in_3_ready = ~(io_in_0_valid | io_in_1_valid); // @[Arbiter.scala 46:78]
+  assign io_out_valid = ~grant_2 | 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 : _GEN_9; // @[Arbiter.scala 141:26 143:19]
+endmodule
+module AMOALU(
+  input  [7:0]  io_mask,
+  input  [4:0]  io_cmd,
+  input  [63:0] io_lhs,
+  input  [63:0] io_rhs,
+  output [63:0] io_out_unmasked
+);
+  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  _adder_out_mask_T_1 = ~io_mask[3]; // @[AMOALU.scala 72:63]
+  wire [31:0] _adder_out_mask_T_2 = {_adder_out_mask_T_1, 31'h0}; // @[AMOALU.scala 72:79]
+  wire [63:0] _adder_out_mask_T_3 = {{32'd0}, _adder_out_mask_T_2}; // @[AMOALU.scala 72:98]
+  wire [63:0] adder_out_mask = ~_adder_out_mask_T_3; // @[AMOALU.scala 72:16]
+  wire [63:0] _adder_out_T = io_lhs & adder_out_mask; // @[AMOALU.scala 73:13]
+  wire [63:0] _adder_out_T_1 = io_rhs & adder_out_mask; // @[AMOALU.scala 73:31]
+  wire [63:0] adder_out = _adder_out_T + _adder_out_T_1; // @[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_12 = io_lhs[31:0] < io_rhs[31:0]; // @[AMOALU.scala 79:35]
+  wire  _less_T_14 = io_lhs[63:32] < io_rhs[63:32] | io_lhs[63:32] == io_rhs[63:32] & _less_T_12; // @[AMOALU.scala 80:38]
+  wire  _less_T_17 = less_signed ? io_lhs[63] : io_rhs[63]; // @[AMOALU.scala 88:58]
+  wire  _less_T_18 = io_lhs[63] == io_rhs[63] ? _less_T_14 : _less_T_17; // @[AMOALU.scala 88:10]
+  wire  _less_T_28 = less_signed ? io_lhs[31] : io_rhs[31]; // @[AMOALU.scala 88:58]
+  wire  _less_T_29 = io_lhs[31] == io_rhs[31] ? _less_T_12 : _less_T_28; // @[AMOALU.scala 88:10]
+  wire  less = io_mask[4] ? _less_T_18 : _less_T_29; // @[Mux.scala 47:70]
+  wire  _minmax_T = less ? min : max; // @[AMOALU.scala 94:23]
+  wire [63:0] minmax = _minmax_T ? io_lhs : io_rhs; // @[AMOALU.scala 94:19]
+  wire [63:0] _logic_T = io_lhs & io_rhs; // @[AMOALU.scala 96:27]
+  wire [63:0] _logic_T_1 = logic_and ? _logic_T : 64'h0; // @[AMOALU.scala 96:8]
+  wire [63:0] _logic_T_2 = io_lhs ^ io_rhs; // @[AMOALU.scala 97:27]
+  wire [63:0] _logic_T_3 = logic_xor ? _logic_T_2 : 64'h0; // @[AMOALU.scala 97:8]
+  wire [63:0] logic_ = _logic_T_1 | _logic_T_3; // @[AMOALU.scala 96:42]
+  wire [63:0] _out_T_1 = logic_and | logic_xor ? logic_ : minmax; // @[AMOALU.scala 100:8]
+  assign io_out_unmasked = add ? adder_out : _out_T_1; // @[AMOALU.scala 99:8]
+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 [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [3:0]  auto_out_d_bits_size,
+  input         auto_out_d_bits_denied,
+  input  [63:0] auto_out_d_bits_data,
+  output        io_cpu_req_ready,
+  input         io_cpu_req_valid,
+  input  [33:0] io_cpu_req_bits_addr,
+  input  [6: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_req_bits_no_xcpt,
+  input         io_cpu_s1_kill,
+  input  [63:0] io_cpu_s1_data_data,
+  input  [7:0]  io_cpu_s1_data_mask,
+  output        io_cpu_s2_nack,
+  output        io_cpu_resp_valid,
+  output [33:0] io_cpu_resp_bits_addr,
+  output [6: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 [63:0] io_cpu_resp_bits_data,
+  output [7:0]  io_cpu_resp_bits_mask,
+  output        io_cpu_resp_bits_replay,
+  output        io_cpu_resp_bits_has_data,
+  output [63:0] io_cpu_resp_bits_data_word_bypass,
+  output [63:0] io_cpu_resp_bits_data_raw,
+  output [63: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_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_w,
+  input         io_ptw_pmp_0_cfg_r,
+  input  [29:0] io_ptw_pmp_0_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_1_cfg_r,
+  input  [29:0] io_ptw_pmp_1_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_2_cfg_r,
+  input  [29:0] io_ptw_pmp_2_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_3_cfg_r,
+  input  [29:0] io_ptw_pmp_3_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_4_cfg_r,
+  input  [29:0] io_ptw_pmp_4_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_5_cfg_r,
+  input  [29:0] io_ptw_pmp_5_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_6_cfg_r,
+  input  [29:0] io_ptw_pmp_6_addr,
+  input  [31: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_w,
+  input         io_ptw_pmp_7_cfg_r,
+  input  [29:0] io_ptw_pmp_7_addr,
+  input  [31:0] io_ptw_pmp_7_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 [63:0] _RAND_5;
+  reg [63:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [31:0] _RAND_9;
+  reg [63: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 [63: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 [63: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 [63: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 [63:0] _RAND_42;
+  reg [63:0] _RAND_43;
+  reg [31:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [31:0] _RAND_46;
+  reg [63:0] _RAND_47;
+  reg [31:0] _RAND_48;
+  reg [63: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;
+`endif // RANDOMIZE_REG_INIT
+  wire  tlb_io_req_valid; // @[DCache.scala 117:19]
+  wire [33: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 [31: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_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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_0_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_0_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_1_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_1_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_2_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_2_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_3_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_3_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_4_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_4_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_5_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_5_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_6_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_6_addr; // @[DCache.scala 117:19]
+  wire [31: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_w; // @[DCache.scala 117:19]
+  wire  tlb_io_ptw_pmp_7_cfg_r; // @[DCache.scala 117:19]
+  wire [29:0] tlb_io_ptw_pmp_7_addr; // @[DCache.scala 117:19]
+  wire [31:0] tlb_io_ptw_pmp_7_mask; // @[DCache.scala 117:19]
+  wire  pma_checker_io_req_valid; // @[DCache.scala 118:27]
+  wire [33: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 [31: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_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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_0_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_0_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_1_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_1_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_2_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_2_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_3_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_3_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_4_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_4_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_5_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_5_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_6_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_6_addr; // @[DCache.scala 118:27]
+  wire [31: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_w; // @[DCache.scala 118:27]
+  wire  pma_checker_io_ptw_pmp_7_cfg_r; // @[DCache.scala 118:27]
+  wire [29:0] pma_checker_io_ptw_pmp_7_addr; // @[DCache.scala 118:27]
+  wire [31:0] pma_checker_io_ptw_pmp_7_mask; // @[DCache.scala 118:27]
+  wire  metaArb_io_in_2_valid; // @[DCache.scala 122:23]
+  wire [33:0] metaArb_io_in_2_bits_addr; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_3_valid; // @[DCache.scala 122:23]
+  wire [33:0] metaArb_io_in_3_bits_addr; // @[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  metaArb_io_in_7_ready; // @[DCache.scala 122:23]
+  wire  metaArb_io_in_7_valid; // @[DCache.scala 122:23]
+  wire [33:0] metaArb_io_in_7_bits_addr; // @[DCache.scala 122:23]
+  wire  metaArb_io_out_valid; // @[DCache.scala 122:23]
+  wire  metaArb_io_out_bits_write; // @[DCache.scala 122:23]
+  wire [33:0] metaArb_io_out_bits_addr; // @[DCache.scala 122:23]
+  wire  data_clock; // @[DCache.scala 132:20]
+  wire  data_io_req_valid; // @[DCache.scala 132:20]
+  wire [13:0] data_io_req_bits_addr; // @[DCache.scala 132:20]
+  wire  data_io_req_bits_write; // @[DCache.scala 132:20]
+  wire [63:0] data_io_req_bits_wdata; // @[DCache.scala 132:20]
+  wire [7:0] data_io_req_bits_eccMask; // @[DCache.scala 132:20]
+  wire [63:0] data_io_resp_0; // @[DCache.scala 132:20]
+  wire  dataArb_io_in_0_valid; // @[DCache.scala 133:23]
+  wire [13:0] dataArb_io_in_0_bits_addr; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_0_bits_write; // @[DCache.scala 133:23]
+  wire [63:0] dataArb_io_in_0_bits_wdata; // @[DCache.scala 133:23]
+  wire [7: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 [13:0] dataArb_io_in_1_bits_addr; // @[DCache.scala 133:23]
+  wire  dataArb_io_in_1_bits_write; // @[DCache.scala 133:23]
+  wire [63:0] dataArb_io_in_1_bits_wdata; // @[DCache.scala 133:23]
+  wire [7:0] dataArb_io_in_1_bits_eccMask; // @[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 [13:0] dataArb_io_in_3_bits_addr; // @[DCache.scala 133:23]
+  wire [63: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 [13:0] dataArb_io_out_bits_addr; // @[DCache.scala 133:23]
+  wire  dataArb_io_out_bits_write; // @[DCache.scala 133:23]
+  wire [63:0] dataArb_io_out_bits_wdata; // @[DCache.scala 133:23]
+  wire [7:0] dataArb_io_out_bits_eccMask; // @[DCache.scala 133:23]
+  wire [7:0] amoalu_io_mask; // @[DCache.scala 956:26]
+  wire [4:0] amoalu_io_cmd; // @[DCache.scala 956:26]
+  wire [63:0] amoalu_io_lhs; // @[DCache.scala 956:26]
+  wire [63:0] amoalu_io_rhs; // @[DCache.scala 956:26]
+  wire [63:0] amoalu_io_out_unmasked; // @[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]
+  wire  s1_valid_masked = s1_valid & ~io_cpu_s1_kill; // @[DCache.scala 166:34]
+  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  s2_valid; // @[DCache.scala 306:21]
+  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 [33:0] pstore1_addr; // @[Reg.scala 16:16]
+  reg [33:0] s1_req_addr; // @[Reg.scala 16:16]
+  wire [33:0] s1_vaddr = {s1_req_addr[33:14],s1_req_addr[13: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 [7:0] pstore1_mask; // @[Reg.scala 16:16]
+  wire  _s1_hazard_T_18 = |pstore1_mask[7]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_17 = |pstore1_mask[6]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_16 = |pstore1_mask[5]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_15 = |pstore1_mask[4]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_14 = |pstore1_mask[3]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_13 = |pstore1_mask[2]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_12 = |pstore1_mask[1]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_11 = |pstore1_mask[0]; // @[DCache.scala 1155:66]
+  wire [7:0] _s1_hazard_T_19 = {_s1_hazard_T_18,_s1_hazard_T_17,_s1_hazard_T_16,_s1_hazard_T_15,_s1_hazard_T_14,
+    _s1_hazard_T_13,_s1_hazard_T_12,_s1_hazard_T_11}; // @[Cat.scala 31:58]
+  wire [7:0] _s1_hazard_T_28 = {_s1_hazard_T_19[7],_s1_hazard_T_19[6],_s1_hazard_T_19[5],_s1_hazard_T_19[4],
+    _s1_hazard_T_19[3],_s1_hazard_T_19[2],_s1_hazard_T_19[1],_s1_hazard_T_19[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_T_1 = {s1_mask_xwr_upper_1,s1_mask_xwr_lower_1}; // @[Cat.scala 31:58]
+  wire [3:0] _s1_mask_xwr_upper_T_9 = s1_req_addr[2] ? _s1_mask_xwr_T_1 : 4'h0; // @[AMOALU.scala 17:22]
+  wire [3:0] _s1_mask_xwr_upper_T_11 = s1_req_size >= 2'h3 ? 4'hf : 4'h0; // @[AMOALU.scala 17:51]
+  wire [3:0] s1_mask_xwr_upper_2 = _s1_mask_xwr_upper_T_9 | _s1_mask_xwr_upper_T_11; // @[AMOALU.scala 17:46]
+  wire [3:0] s1_mask_xwr_lower_2 = s1_req_addr[2] ? 4'h0 : _s1_mask_xwr_T_1; // @[AMOALU.scala 18:22]
+  wire [7:0] s1_mask_xwr = {s1_mask_xwr_upper_2,s1_mask_xwr_lower_2}; // @[Cat.scala 31:58]
+  wire  _s1_hazard_T_44 = |s1_mask_xwr[7]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_43 = |s1_mask_xwr[6]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_42 = |s1_mask_xwr[5]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_41 = |s1_mask_xwr[4]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_40 = |s1_mask_xwr[3]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_39 = |s1_mask_xwr[2]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_38 = |s1_mask_xwr[1]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_37 = |s1_mask_xwr[0]; // @[DCache.scala 1155:66]
+  wire [7:0] _s1_hazard_T_45 = {_s1_hazard_T_44,_s1_hazard_T_43,_s1_hazard_T_42,_s1_hazard_T_41,_s1_hazard_T_40,
+    _s1_hazard_T_39,_s1_hazard_T_38,_s1_hazard_T_37}; // @[Cat.scala 31:58]
+  wire [7:0] _s1_hazard_T_54 = {_s1_hazard_T_45[7],_s1_hazard_T_45[6],_s1_hazard_T_45[5],_s1_hazard_T_45[4],
+    _s1_hazard_T_45[3],_s1_hazard_T_45[2],_s1_hazard_T_45[1],_s1_hazard_T_45[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _s1_hazard_T_55 = _s1_hazard_T_28 & _s1_hazard_T_54; // @[DCache.scala 537:38]
+  wire [7:0] _s1_hazard_T_57 = pstore1_mask & s1_mask_xwr; // @[DCache.scala 537:77]
+  wire  _s1_hazard_T_59 = s1_write ? |_s1_hazard_T_55 : |_s1_hazard_T_57; // @[DCache.scala 537:8]
+  wire  _s1_hazard_T_60 = pstore1_addr[13:3] == s1_vaddr[13:3] & _s1_hazard_T_59; // @[DCache.scala 536:65]
+  reg  pstore2_valid; // @[DCache.scala 476:30]
+  reg [33:0] pstore2_addr; // @[Reg.scala 16:16]
+  reg [7:0] mask; // @[DCache.scala 506:19]
+  wire  _s1_hazard_T_80 = |mask[7]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_79 = |mask[6]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_78 = |mask[5]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_77 = |mask[4]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_76 = |mask[3]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_75 = |mask[2]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_74 = |mask[1]; // @[DCache.scala 1155:66]
+  wire  _s1_hazard_T_73 = |mask[0]; // @[DCache.scala 1155:66]
+  wire [7:0] _s1_hazard_T_81 = {_s1_hazard_T_80,_s1_hazard_T_79,_s1_hazard_T_78,_s1_hazard_T_77,_s1_hazard_T_76,
+    _s1_hazard_T_75,_s1_hazard_T_74,_s1_hazard_T_73}; // @[Cat.scala 31:58]
+  wire [7:0] _s1_hazard_T_90 = {_s1_hazard_T_81[7],_s1_hazard_T_81[6],_s1_hazard_T_81[5],_s1_hazard_T_81[4],
+    _s1_hazard_T_81[3],_s1_hazard_T_81[2],_s1_hazard_T_81[1],_s1_hazard_T_81[0]}; // @[Cat.scala 31:58]
+  wire [7:0] _s1_hazard_T_117 = _s1_hazard_T_90 & _s1_hazard_T_54; // @[DCache.scala 537:38]
+  wire [7:0] _s1_hazard_T_119 = mask & s1_mask_xwr; // @[DCache.scala 537:77]
+  wire  _s1_hazard_T_121 = s1_write ? |_s1_hazard_T_117 : |_s1_hazard_T_119; // @[DCache.scala 537:8]
+  wire  _s1_hazard_T_122 = pstore2_addr[13:3] == s1_vaddr[13:3] & _s1_hazard_T_121; // @[DCache.scala 536:65]
+  wire  _s1_hazard_T_123 = pstore2_valid & _s1_hazard_T_122; // @[DCache.scala 540:21]
+  wire  s1_hazard = pstore1_valid_likely & _s1_hazard_T_60 | _s1_hazard_T_123; // @[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_35 = {s2_write,_c_cat_T_49,s2_hit_state_state}; // @[Cat.scala 31:58]
+  wire  _T_93 = 4'h3 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_90 = 4'h2 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_87 = 4'h1 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_84 = 4'h7 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_81 = 4'h6 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_78 = 4'hf == _T_35; // @[Misc.scala 48:20]
+  wire  _T_75 = 4'he == _T_35; // @[Misc.scala 48:20]
+  wire  _T_72 = 4'h0 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_69 = 4'h5 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_66 = 4'h4 == _T_35; // @[Misc.scala 48:20]
+  wire  _T_63 = 4'hd == _T_35; // @[Misc.scala 48:20]
+  wire  _T_60 = 4'hc == _T_35; // @[Misc.scala 48:20]
+  wire  s2_hit = _T_93 | (_T_90 | (_T_87 | (_T_84 | (_T_81 | (_T_78 | _T_75))))); // @[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_62 = _T_60 ? 2'h1 : 2'h0; // @[Misc.scala 34:36]
+  wire [1:0] _T_65 = _T_63 ? 2'h2 : _T_62; // @[Misc.scala 34:36]
+  wire [1:0] _T_68 = _T_66 ? 2'h1 : _T_65; // @[Misc.scala 34:36]
+  wire [1:0] _T_71 = _T_69 ? 2'h2 : _T_68; // @[Misc.scala 34:36]
+  wire [1:0] _T_74 = _T_72 ? 2'h0 : _T_71; // @[Misc.scala 34:36]
+  wire [1:0] _T_77 = _T_75 ? 2'h3 : _T_74; // @[Misc.scala 34:36]
+  wire [1:0] _T_80 = _T_78 ? 2'h3 : _T_77; // @[Misc.scala 34:36]
+  wire [1:0] _T_83 = _T_81 ? 2'h2 : _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'h1 : _T_86; // @[Misc.scala 34:36]
+  wire [1:0] _T_92 = _T_90 ? 2'h2 : _T_89; // @[Misc.scala 34:36]
+  wire [1:0] s2_grow_param = _T_93 ? 2'h3 : _T_92; // @[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_227 = io_cpu_s2_nack | s2_valid_hit_pre_data_ecc_and_waw & s2_update_meta; // @[DCache.scala 421:24]
+  reg  s1_req_no_xcpt; // @[Reg.scala 16:16]
+  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  s1_nack = s1_valid & s1_raw_hazard | _T_227; // @[DCache.scala 546:{36,46}]
+  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 [33:0] s0_req_addr = {metaArb_io_out_bits_addr[33:6],io_cpu_req_bits_addr[5:0]}; // @[Cat.scala 31:58]
+  wire  _T = ~metaArb_io_in_7_ready; // @[DCache.scala 175:9]
+  reg [6: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 [33: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  uncachedInFlight_0; // @[DCache.scala 216:33]
+  reg [33:0] uncachedReqs_0_addr; // @[DCache.scala 217:25]
+  reg [6: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 [33:0] _dataArb_io_in_3_bits_addr_T_2 = {io_cpu_req_bits_addr[33:14],io_cpu_req_bits_addr[13:0]}; // @[Cat.scala 31:58]
+  wire  _GEN_33 = ~dataArb_io_in_3_ready & s0_read ? 1'h0 : _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 = _T ? 1'h0 : _GEN_33; // @[DCache.scala 247:{34,53}]
+  wire [31:0] s1_paddr = {tlb_io_resp_paddr[31:12],s1_req_addr[11:0]}; // @[Cat.scala 31:58]
+  wire  inScratchpad = s1_paddr >= 32'h80000000 & s1_paddr < 32'h80004000; // @[DCache.scala 278:47]
+  wire [63:0] _tl_d_data_encoded_T_8 = {auto_out_d_bits_data[63:56],auto_out_d_bits_data[55:48],auto_out_d_bits_data[47:
+    40],auto_out_d_bits_data[39:32],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 [7:0] _T_27 = ~io_cpu_s1_data_mask; // @[DCache.scala 304:71]
+  wire [7:0] _T_28 = s1_mask_xwr | _T_27; // @[DCache.scala 304:69]
+  wire  s2_valid_x44 = s1_valid_masked & ~s1_sfence; // @[DCache.scala 306:43]
+  reg [33:0] s2_req_addr; // @[DCache.scala 314:19]
+  reg [6: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]
+  reg  s2_req_no_xcpt; // @[DCache.scala 314:19]
+  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 [33:0] s2_uncached_resp_addr; // @[DCache.scala 319:34]
+  wire  _T_34 = s1_valid_not_nacked | s1_flush_valid; // @[DCache.scala 320:29]
+  wire [33:0] _GEN_40 = s1_valid_not_nacked | s1_flush_valid ? {{2'd0}, s1_paddr} : s2_req_addr; // @[DCache.scala 320:48 322:17 314:19]
+  wire [6:0] _GEN_41 = 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_42 = 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_43 = s1_valid_not_nacked | s1_flush_valid ? s1_req_size : s2_req_size; // @[DCache.scala 320:48 321:12 314:19]
+  wire  _GEN_44 = s1_valid_not_nacked | s1_flush_valid ? s1_req_signed : s2_req_signed; // @[DCache.scala 320:48 321:12 314:19]
+  reg [33:0] s2_vaddr_r; // @[Reg.scala 16:16]
+  wire [33:0] s2_vaddr = {s2_vaddr_r[33:14],s2_req_addr[13:0]}; // @[Cat.scala 31:58]
+  reg  s2_flush_valid_pre_tag_ecc; // @[DCache.scala 330:43]
+  wire  en = s1_valid | io_cpu_replay_next; // @[DCache.scala 341:38]
+  wire  word_en = s1_did_read & s1_read_mask; // @[DCache.scala 342:63]
+  wire [63: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 [1:0] opc = auto_out_d_bits_opcode[1:0]; // @[DCache.scala 631:26]
+  wire [1:0] _T_261 = opc & 2'h1; // @[Decode.scala 14:65]
+  wire  data_1 = _T_261 == 2'h1; // @[Decode.scala 14:121]
+  reg  blockUncachedGrant; // @[DCache.scala 725:33]
+  wire [2:0] _GEN_248 = {{1'd0}, opc}; // @[DCache.scala 641:29]
+  wire  grantIsRefill = _GEN_248 == 3'h5; // @[DCache.scala 641:29]
+  wire  _T_288 = ~dataArb_io_in_1_ready; // @[DCache.scala 697:26]
+  wire  _grantIsCached_T = _GEN_248 == 3'h4; // @[package.scala 15:47]
+  wire  grantIsCached = _grantIsCached_T | grantIsRefill; // @[package.scala 72:59]
+  reg [8:0] counter; // @[Edges.scala 228:27]
+  wire  d_first = counter == 9'h0; // @[Edges.scala 230:25]
+  wire  _bundleOut_0_d_ready_T_3 = grantIsCached ? ~d_first : 1'h1; // @[DCache.scala 646:24]
+  wire  _GEN_227 = 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 = data_1 & (blockUncachedGrant | s1_valid) ? 1'h0 : _GEN_227; // @[DCache.scala 727:68 728:22]
+  wire  _T_265 = tl_out__d_ready & auto_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [1:0] _GEN_184 = data_1 ? 2'h2 : 2'h1; // @[DCache.scala 666:34 669:25]
+  wire [1:0] _GEN_206 = grantIsCached ? 2'h1 : _GEN_184; // @[DCache.scala 650:26]
+  wire [1:0] s1_data_way = _T_265 ? _GEN_206 : 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 [63:0] _s2_data_T_4 = _s2_data_T_1[0] ? s1_all_data_ways_0 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _s2_data_T_5 = _s2_data_T_1[1] ? _tl_d_data_encoded_T_8 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _s2_data_T_6 = _s2_data_T_4 | _s2_data_T_5; // @[Mux.scala 27:73]
+  reg [63:0] s2_data; // @[Reg.scala 16:16]
+  wire  s2_hit_valid = s2_hit_state_state > 2'h0; // @[Metadata.scala 49:45]
+  wire [31:0] s2_data_corrected_lo = {s2_data[31:24],s2_data[23:16],s2_data[15:8],s2_data[7:0]}; // @[Cat.scala 31:58]
+  wire [31:0] s2_data_corrected_hi = {s2_data[63:56],s2_data[55:48],s2_data[47:40],s2_data[39:32]}; // @[Cat.scala 31:58]
+  wire [63:0] s2_data_corrected = {s2_data[63:56],s2_data[55:48],s2_data[47:40],s2_data[39:32],s2_data[31:24],s2_data[23
+    :16],s2_data[15:8],s2_data[7:0]}; // @[Cat.scala 31:58]
+  wire  s2_valid_miss = s2_valid_masked & s2_readwrite & ~s2_hit; // @[DCache.scala 398:73]
+  wire  _s2_valid_cached_miss_T_2 = |uncachedInFlight_0; // @[DCache.scala 400:88]
+  wire  s2_valid_cached_miss = 1'h0; // @[DCache.scala 400:60]
+  wire  _s2_cannot_victimize_T = ~s2_flush_valid_pre_tag_ecc; // @[DCache.scala 403:29]
+  wire  s2_valid_uncached_pending = s2_valid_miss & ~(&uncachedInFlight_0); // @[DCache.scala 405:64]
+  wire [1:0] s2_victim_state_state = s2_hit_valid ? s2_hit_state_state : 2'h0; // @[DCache.scala 409:28]
+  wire [3:0] _T_167 = {2'h2,s2_victim_state_state}; // @[Cat.scala 31:58]
+  wire  _T_192 = 4'hb == _T_167; // @[Misc.scala 55:20]
+  wire  _T_196 = 4'h4 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_197 = _T_196 ? 1'h0 : _T_192; // @[Misc.scala 37:9]
+  wire  _T_200 = 4'h5 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_201 = _T_200 ? 1'h0 : _T_197; // @[Misc.scala 37:9]
+  wire  _T_204 = 4'h6 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_205 = _T_204 ? 1'h0 : _T_201; // @[Misc.scala 37:9]
+  wire  _T_208 = 4'h7 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_212 = 4'h0 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_213 = _T_212 ? 1'h0 : _T_208 | _T_205; // @[Misc.scala 37:9]
+  wire  _T_216 = 4'h1 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_217 = _T_216 ? 1'h0 : _T_213; // @[Misc.scala 37:9]
+  wire  _T_220 = 4'h2 == _T_167; // @[Misc.scala 55:20]
+  wire  _T_221 = _T_220 ? 1'h0 : _T_217; // @[Misc.scala 37:9]
+  wire  _T_224 = 4'h3 == _T_167; // @[Misc.scala 55:20]
+  wire  s2_victim_dirty = _T_224 | _T_221; // @[Misc.scala 37:9]
+  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  _pstore1_cmd_T = s1_valid_not_nacked & s1_write; // @[DCache.scala 467:63]
+  reg [4:0] pstore1_cmd; // @[Reg.scala 16:16]
+  reg [63: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  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  pstore1_valid = _pstore1_merge_T | 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  _pstore_drain_T_10 = (pstore1_valid & ~pstore1_rmw_r | pstore2_valid) & (pstore_drain_opportunistic |
+    pstore_drain_on_miss_REG); // @[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 [7:0] _pstore1_storegen_data_mask_T_24 = pstore1_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_22 = pstore1_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_20 = pstore1_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_18 = pstore1_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_16 = pstore1_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_14 = pstore1_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_12 = pstore1_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _pstore1_storegen_data_mask_T_10 = pstore1_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] mask_1 = {_pstore1_storegen_data_mask_T_24,_pstore1_storegen_data_mask_T_22,
+    _pstore1_storegen_data_mask_T_20,_pstore1_storegen_data_mask_T_18,_pstore1_storegen_data_mask_T_16,
+    _pstore1_storegen_data_mask_T_14,_pstore1_storegen_data_mask_T_12,_pstore1_storegen_data_mask_T_10}; // @[Cat.scala 31:58]
+  wire [63:0] _pstore1_storegen_data_T = amoalu_io_out_unmasked & mask_1; // @[DCache.scala 965:45]
+  wire [63:0] _pstore1_storegen_data_T_1 = ~mask_1; // @[DCache.scala 965:79]
+  wire [63:0] _pstore1_storegen_data_T_2 = s2_data_corrected & _pstore1_storegen_data_T_1; // @[DCache.scala 965:77]
+  wire [63:0] pstore1_storegen_data = _pstore1_storegen_data_T | _pstore1_storegen_data_T_2; // @[DCache.scala 965:52]
+  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]
+  reg [7:0] pstore2_storegen_data_r_4; // @[Reg.scala 16:16]
+  reg [7:0] pstore2_storegen_data_r_5; // @[Reg.scala 16:16]
+  reg [7:0] pstore2_storegen_data_r_6; // @[Reg.scala 16:16]
+  reg [7:0] pstore2_storegen_data_r_7; // @[Reg.scala 16:16]
+  wire [63:0] pstore2_storegen_data = {pstore2_storegen_data_r_7,pstore2_storegen_data_r_6,pstore2_storegen_data_r_5,
+    pstore2_storegen_data_r_4,pstore2_storegen_data_r_3,pstore2_storegen_data_r_2,pstore2_storegen_data_r_1,
+    pstore2_storegen_data_r}; // @[Cat.scala 31:58]
+  wire [7:0] _pstore2_storegen_mask_mask_T = ~pstore1_mask; // @[DCache.scala 509:37]
+  wire [7:0] _pstore2_storegen_mask_mask_T_2 = ~_pstore2_storegen_mask_mask_T; // @[DCache.scala 509:15]
+  wire [33:0] _dataArb_io_in_0_bits_addr_T = pstore2_valid ? pstore2_addr : pstore1_addr; // @[DCache.scala 524:36]
+  wire [63:0] _dataArb_io_in_0_bits_wdata_T = pstore2_valid ? pstore2_storegen_data : pstore1_data; // @[DCache.scala 526:63]
+  wire [31:0] dataArb_io_in_0_bits_wdata_lo = {_dataArb_io_in_0_bits_wdata_T[31:24],_dataArb_io_in_0_bits_wdata_T[23:16]
+    ,_dataArb_io_in_0_bits_wdata_T[15:8],_dataArb_io_in_0_bits_wdata_T[7:0]}; // @[Cat.scala 31:58]
+  wire [31:0] dataArb_io_in_0_bits_wdata_hi = {_dataArb_io_in_0_bits_wdata_T[63:56],_dataArb_io_in_0_bits_wdata_T[55:48]
+    ,_dataArb_io_in_0_bits_wdata_T[47:40],_dataArb_io_in_0_bits_wdata_T[39:32]}; // @[Cat.scala 31:58]
+  wire [7: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_9 = |_dataArb_io_in_0_bits_eccMask_T[0]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_10 = |_dataArb_io_in_0_bits_eccMask_T[1]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_11 = |_dataArb_io_in_0_bits_eccMask_T[2]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_12 = |_dataArb_io_in_0_bits_eccMask_T[3]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_13 = |_dataArb_io_in_0_bits_eccMask_T[4]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_14 = |_dataArb_io_in_0_bits_eccMask_T[5]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_15 = |_dataArb_io_in_0_bits_eccMask_T[6]; // @[DCache.scala 1155:66]
+  wire  _dataArb_io_in_0_bits_eccMask_T_16 = |_dataArb_io_in_0_bits_eccMask_T[7]; // @[DCache.scala 1155:66]
+  wire [3:0] dataArb_io_in_0_bits_eccMask_lo = {_dataArb_io_in_0_bits_eccMask_T_12,_dataArb_io_in_0_bits_eccMask_T_11,
+    _dataArb_io_in_0_bits_eccMask_T_10,_dataArb_io_in_0_bits_eccMask_T_9}; // @[Cat.scala 31:58]
+  wire [3:0] dataArb_io_in_0_bits_eccMask_hi = {_dataArb_io_in_0_bits_eccMask_T_16,_dataArb_io_in_0_bits_eccMask_T_15,
+    _dataArb_io_in_0_bits_eccMask_T_14,_dataArb_io_in_0_bits_eccMask_T_13}; // @[Cat.scala 31:58]
+  wire  _a_source_T = ~uncachedInFlight_0; // @[DCache.scala 552:34]
+  wire [22:0] a_mask = {{15'd0}, pstore1_mask}; // @[DCache.scala 557:29]
+  wire [2:0] _get_a_mask_sizeOH_T = {{1'd0}, s2_req_size}; // @[Misc.scala 201:34]
+  wire [1:0] get_a_mask_sizeOH_shiftAmount = _get_a_mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _get_a_mask_sizeOH_T_1 = 4'h1 << get_a_mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] get_a_mask_sizeOH = _get_a_mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _get_a_mask_T = s2_req_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  get_a_mask_size = get_a_mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  get_a_mask_bit = s2_req_addr[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  get_a_mask_bit_1 = s2_req_addr[1]; // @[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  get_a_mask_size_2 = get_a_mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  get_a_mask_bit_2 = s2_req_addr[0]; // @[Misc.scala 209:26]
+  wire  get_a_mask_nbit_2 = ~get_a_mask_bit_2; // @[Misc.scala 210:20]
+  wire  get_a_mask_eq_6 = get_a_mask_eq_2 & get_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_6 = get_a_mask_acc_2 | get_a_mask_size_2 & get_a_mask_eq_6; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_7 = get_a_mask_eq_2 & get_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_7 = get_a_mask_acc_2 | get_a_mask_size_2 & get_a_mask_eq_7; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_8 = get_a_mask_eq_3 & get_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_8 = get_a_mask_acc_3 | get_a_mask_size_2 & get_a_mask_eq_8; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_9 = get_a_mask_eq_3 & get_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_9 = get_a_mask_acc_3 | get_a_mask_size_2 & get_a_mask_eq_9; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_10 = get_a_mask_eq_4 & get_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_10 = get_a_mask_acc_4 | get_a_mask_size_2 & get_a_mask_eq_10; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_11 = get_a_mask_eq_4 & get_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_11 = get_a_mask_acc_4 | get_a_mask_size_2 & get_a_mask_eq_11; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_12 = get_a_mask_eq_5 & get_a_mask_nbit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_12 = get_a_mask_acc_5 | get_a_mask_size_2 & get_a_mask_eq_12; // @[Misc.scala 214:29]
+  wire  get_a_mask_eq_13 = get_a_mask_eq_5 & get_a_mask_bit_2; // @[Misc.scala 213:27]
+  wire  get_a_mask_acc_13 = get_a_mask_acc_5 | get_a_mask_size_2 & get_a_mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] get_mask = {get_a_mask_acc_13,get_a_mask_acc_12,get_a_mask_acc_11,get_a_mask_acc_10,get_a_mask_acc_9,
+    get_a_mask_acc_8,get_a_mask_acc_7,get_a_mask_acc_6}; // @[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 [31:0] atomics_a_address = s2_req_addr[31:0]; // @[Edges.scala 513:17 518:15]
+  wire [31:0] _atomics_T_1_address = 5'h4 == s2_req_cmd ? atomics_a_address : 32'h0; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_1_mask = 5'h4 == s2_req_cmd ? get_mask : 8'h0; // @[Mux.scala 81:58]
+  wire [63:0] _atomics_T_1_data = 5'h4 == s2_req_cmd ? pstore1_data : 64'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 [31:0] _atomics_T_3_address = 5'h9 == s2_req_cmd ? atomics_a_address : _atomics_T_1_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_3_mask = 5'h9 == s2_req_cmd ? get_mask : _atomics_T_1_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] _atomics_T_5_address = 5'ha == s2_req_cmd ? atomics_a_address : _atomics_T_3_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_5_mask = 5'ha == s2_req_cmd ? get_mask : _atomics_T_3_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] _atomics_T_7_address = 5'hb == s2_req_cmd ? atomics_a_address : _atomics_T_5_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_7_mask = 5'hb == s2_req_cmd ? get_mask : _atomics_T_5_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] _atomics_T_9_address = 5'h8 == s2_req_cmd ? atomics_a_address : _atomics_T_7_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_9_mask = 5'h8 == s2_req_cmd ? get_mask : _atomics_T_7_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] _atomics_T_11_address = 5'hc == s2_req_cmd ? atomics_a_address : _atomics_T_9_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_11_mask = 5'hc == s2_req_cmd ? get_mask : _atomics_T_9_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] _atomics_T_13_address = 5'hd == s2_req_cmd ? atomics_a_address : _atomics_T_11_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_13_mask = 5'hd == s2_req_cmd ? get_mask : _atomics_T_11_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] _atomics_T_15_address = 5'he == s2_req_cmd ? atomics_a_address : _atomics_T_13_address; // @[Mux.scala 81:58]
+  wire [7:0] _atomics_T_15_mask = 5'he == s2_req_cmd ? get_mask : _atomics_T_13_mask; // @[Mux.scala 81:58]
+  wire [63: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 [31:0] atomics_address = 5'hf == s2_req_cmd ? atomics_a_address : _atomics_T_15_address; // @[Mux.scala 81:58]
+  wire [7:0] atomics_mask = 5'hf == s2_req_cmd ? get_mask : _atomics_T_15_mask; // @[Mux.scala 81:58]
+  wire [63:0] atomics_data = 5'hf == s2_req_cmd ? pstore1_data : _atomics_T_15_data; // @[Mux.scala 81:58]
+  wire  _tl_out_a_valid_T_10 = ~s2_victim_dirty; // @[DCache.scala 582:89]
+  wire  _tl_out_a_valid_T_12 = 1'h0 & _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_4_opcode = ~s2_read ? 3'h0 : atomics_opcode; // @[DCache.scala 586:8]
+  wire [2:0] _tl_out_a_bits_T_4_param = ~s2_read ? 3'h0 : atomics_param; // @[DCache.scala 586:8]
+  wire [3:0] _tl_out_a_bits_T_4_size = ~s2_read ? atomics_a_size : atomics_size; // @[DCache.scala 586:8]
+  wire [31:0] _tl_out_a_bits_T_4_address = ~s2_read ? atomics_a_address : atomics_address; // @[DCache.scala 586:8]
+  wire [7:0] _tl_out_a_bits_T_4_mask = ~s2_read ? get_mask : atomics_mask; // @[DCache.scala 586:8]
+  wire [63:0] _tl_out_a_bits_T_4_data = ~s2_read ? pstore1_data : atomics_data; // @[DCache.scala 586:8]
+  wire [2:0] _tl_out_a_bits_T_5_opcode = _s2_write_T_1 ? 3'h1 : _tl_out_a_bits_T_4_opcode; // @[DCache.scala 585:8]
+  wire [2:0] _tl_out_a_bits_T_5_param = _s2_write_T_1 ? 3'h0 : _tl_out_a_bits_T_4_param; // @[DCache.scala 585:8]
+  wire [3:0] _tl_out_a_bits_T_5_size = _s2_write_T_1 ? atomics_a_size : _tl_out_a_bits_T_4_size; // @[DCache.scala 585:8]
+  wire [31:0] _tl_out_a_bits_T_5_address = _s2_write_T_1 ? atomics_a_address : _tl_out_a_bits_T_4_address; // @[DCache.scala 585:8]
+  wire [7:0] putpartial_mask = a_mask[7:0]; // @[Edges.scala 483:17 489:15]
+  wire [7:0] _tl_out_a_bits_T_5_mask = _s2_write_T_1 ? putpartial_mask : _tl_out_a_bits_T_4_mask; // @[DCache.scala 585:8]
+  wire [63:0] _tl_out_a_bits_T_5_data = _s2_write_T_1 ? pstore1_data : _tl_out_a_bits_T_4_data; // @[DCache.scala 585:8]
+  wire  _T_248 = auto_out_a_ready & tl_out_a_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_162 = _T_248 | uncachedInFlight_0; // @[DCache.scala 606:26 216:33]
+  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 [8:0] beats1_decode = _beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  beats1_opdata = auto_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [8:0] beats1 = beats1_opdata ? beats1_decode : 9'h0; // @[Edges.scala 220:14]
+  wire [8:0] counter1 = counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_last = counter == 9'h1 | beats1 == 9'h0; // @[Edges.scala 231:37]
+  wire  d_done = d_last & _T_265; // @[Edges.scala 232:22]
+  wire  _T_252 = auto_out_d_bits_opcode == 3'h1; // @[package.scala 15:47]
+  wire  _T_253 = auto_out_d_bits_opcode == 3'h0; // @[package.scala 15:47]
+  wire  _T_254 = auto_out_d_bits_opcode == 3'h2; // @[package.scala 15:47]
+  wire  _T_256 = _T_252 | _T_253 | _T_254; // @[package.scala 72:59]
+  wire [31:0] dontCareBits = {s1_paddr[31:3], 3'h0}; // @[DCache.scala 676:55]
+  wire [31:0] _GEN_253 = {{29'd0}, uncachedReqs_0_addr[2:0]}; // @[DCache.scala 677:26]
+  wire [31:0] _s2_req_addr_T_1 = dontCareBits | _GEN_253; // @[DCache.scala 677:26]
+  wire  _GEN_228 = auto_out_d_valid ? 1'h0 : _GEN_36; // @[DCache.scala 730:29 731:26]
+  wire  _GEN_229 = auto_out_d_valid | auto_out_d_valid & grantIsRefill; // @[DCache.scala 696:26 730:29 732:32]
+  wire  _GEN_230 = auto_out_d_valid ? 1'h0 : dataArb_io_in_0_bits_write; // @[DCache.scala 709:27 730:29 733:37]
+  wire  _io_cpu_ordered_T = ~s1_req_no_xcpt; // @[DCache.scala 904:35]
+  reg  io_cpu_s2_xcpt_REG; // @[DCache.scala 907:32]
+  wire  _T_303 = _c_cat_T_48 | _s2_write_T_3; // @[package.scala 72:59]
+  reg  doUncachedResp; // @[DCache.scala 922:27]
+  wire [31:0] io_cpu_resp_bits_data_shifted = get_a_mask_bit ? s2_data_corrected[63:32] : s2_data_corrected[31:0]; // @[AMOALU.scala 39:24]
+  wire  _io_cpu_resp_bits_data_T_3 = s2_req_signed & io_cpu_resp_bits_data_shifted[31]; // @[AMOALU.scala 42:76]
+  wire [31:0] _io_cpu_resp_bits_data_T_5 = _io_cpu_resp_bits_data_T_3 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] _io_cpu_resp_bits_data_T_7 = s2_req_size == 2'h2 ? _io_cpu_resp_bits_data_T_5 : s2_data_corrected[63:32]; // @[AMOALU.scala 42:20]
+  wire [63: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 [15:0] io_cpu_resp_bits_data_shifted_1 = get_a_mask_bit_1 ? _io_cpu_resp_bits_data_T_8[31:16] :
+    _io_cpu_resp_bits_data_T_8[15:0]; // @[AMOALU.scala 39:24]
+  wire  _io_cpu_resp_bits_data_T_12 = s2_req_signed & io_cpu_resp_bits_data_shifted_1[15]; // @[AMOALU.scala 42:76]
+  wire [47:0] _io_cpu_resp_bits_data_T_14 = _io_cpu_resp_bits_data_T_12 ? 48'hffffffffffff : 48'h0; // @[Bitwise.scala 74:12]
+  wire [47:0] _io_cpu_resp_bits_data_T_16 = s2_req_size == 2'h1 ? _io_cpu_resp_bits_data_T_14 :
+    _io_cpu_resp_bits_data_T_8[63:16]; // @[AMOALU.scala 42:20]
+  wire [63:0] _io_cpu_resp_bits_data_T_17 = {_io_cpu_resp_bits_data_T_16,io_cpu_resp_bits_data_shifted_1}; // @[Cat.scala 31:58]
+  wire [7:0] io_cpu_resp_bits_data_shifted_2 = get_a_mask_bit_2 ? _io_cpu_resp_bits_data_T_17[15:8] :
+    _io_cpu_resp_bits_data_T_17[7:0]; // @[AMOALU.scala 39:24]
+  wire  _io_cpu_resp_bits_data_T_21 = s2_req_signed & io_cpu_resp_bits_data_shifted_2[7]; // @[AMOALU.scala 42:76]
+  wire [55:0] _io_cpu_resp_bits_data_T_23 = _io_cpu_resp_bits_data_T_21 ? 56'hffffffffffffff : 56'h0; // @[Bitwise.scala 74:12]
+  wire [55:0] _io_cpu_resp_bits_data_T_25 = s2_req_size == 2'h0 ? _io_cpu_resp_bits_data_T_23 :
+    _io_cpu_resp_bits_data_T_17[63:8]; // @[AMOALU.scala 42:20]
+  wire  _s1_flush_valid_T = metaArb_io_in_5_ready & metaArb_io_in_5_valid; // @[Decoupled.scala 50:35]
+  wire  _T_318 = ~grantIsCached; // @[DCache.scala 1107:35]
+  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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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)
+  );
+  DCacheModuleImpl_Anon_1 metaArb ( // @[DCache.scala 122:23]
+    .io_in_2_valid(metaArb_io_in_2_valid),
+    .io_in_2_bits_addr(metaArb_io_in_2_bits_addr),
+    .io_in_3_valid(metaArb_io_in_3_valid),
+    .io_in_3_bits_addr(metaArb_io_in_3_bits_addr),
+    .io_in_5_ready(metaArb_io_in_5_ready),
+    .io_in_5_valid(metaArb_io_in_5_valid),
+    .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_out_valid(metaArb_io_out_valid),
+    .io_out_bits_write(metaArb_io_out_bits_write),
+    .io_out_bits_addr(metaArb_io_out_bits_addr)
+  );
+  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)
+  );
+  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_1_bits_eccMask(dataArb_io_in_1_bits_eccMask),
+    .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_unmasked(amoalu_io_out_unmasked)
+  );
+  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_write ? 3'h4 : _tl_out_a_bits_T_5_opcode; // @[DCache.scala 584:8]
+  assign auto_out_a_bits_param = ~s2_write ? 3'h0 : _tl_out_a_bits_T_5_param; // @[DCache.scala 584:8]
+  assign auto_out_a_bits_size = ~s2_write ? atomics_a_size : _tl_out_a_bits_T_5_size; // @[DCache.scala 584:8]
+  assign auto_out_a_bits_address = ~s2_write ? atomics_a_address : _tl_out_a_bits_T_5_address; // @[DCache.scala 584:8]
+  assign auto_out_a_bits_mask = ~s2_write ? get_mask : _tl_out_a_bits_T_5_mask; // @[DCache.scala 584:8]
+  assign auto_out_a_bits_data = ~s2_write ? 64'h0 : _tl_out_a_bits_T_5_data; // @[DCache.scala 584:8]
+  assign auto_out_d_ready = data_1 & (blockUncachedGrant | s1_valid) ? 1'h0 : _GEN_227; // @[DCache.scala 727:68 728:22]
+  assign io_cpu_req_ready = data_1 & (blockUncachedGrant | s1_valid) ? _GEN_228 : _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_25,io_cpu_resp_bits_data_shifted_2}; // @[Cat.scala 31:58]
+  assign io_cpu_resp_bits_mask = 8'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 = {_io_cpu_resp_bits_data_T_7,io_cpu_resp_bits_data_shifted}; // @[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_265 & data_1; // @[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 & ~s1_req_no_xcpt | s2_valid & ~s2_req_no_xcpt | _s2_valid_cached_miss_T_2); // @[DCache.scala 904:21]
+  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_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_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_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_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_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_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_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_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 = 34'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_0_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_0_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_1_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_1_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_1_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_2_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_2_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_2_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_3_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_3_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_3_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_4_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_4_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_4_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_5_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_5_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_5_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_6_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_6_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_6_mask = 32'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_w = 1'h0;
+  assign pma_checker_io_ptw_pmp_7_cfg_r = 1'h0;
+  assign pma_checker_io_ptw_pmp_7_addr = 30'h0;
+  assign pma_checker_io_ptw_pmp_7_mask = 32'h0;
+  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[33:14],s2_vaddr[13:0]}; // @[Cat.scala 31:58]
+  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[33:14],s2_vaddr[13:0]}; // @[Cat.scala 31:58]
+  assign metaArb_io_in_5_valid = 1'h0; // @[DCache.scala 989:38]
+  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 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[13: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 = data_1 & (blockUncachedGrant | s1_valid) ? _GEN_229 : auto_out_d_valid & grantIsRefill; // @[DCache.scala 696:26 727:68]
+  assign dataArb_io_in_1_bits_addr = dataArb_io_in_0_bits_addr; // @[DCache.scala 709:27]
+  assign dataArb_io_in_1_bits_write = data_1 & (blockUncachedGrant | s1_valid) ? _GEN_230 : dataArb_io_in_0_bits_write; // @[DCache.scala 709:27 727:68]
+  assign dataArb_io_in_1_bits_wdata = dataArb_io_in_0_bits_wdata; // @[DCache.scala 709:27]
+  assign dataArb_io_in_1_bits_eccMask = dataArb_io_in_0_bits_eccMask; // @[DCache.scala 709:27]
+  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[13: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]
+  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 (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_cmd <= io_cpu_req_bits_cmd; // @[Reg.scala 17:22]
+    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 (_T_265) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_cmd <= _GEN_42;
+      end else if (data_1) begin // @[DCache.scala 666:34]
+        s2_req_cmd <= 5'h0; // @[DCache.scala 670:22]
+      end else begin
+        s2_req_cmd <= _GEN_42;
+      end
+    end else begin
+      s2_req_cmd <= _GEN_42;
+    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_34) begin // @[Reg.scala 17:18]
+      if (inScratchpad) begin // @[DCache.scala 279:25]
+        s2_hit_state_state <= 2'h3;
+      end else begin
+        s2_hit_state_state <= 2'h0;
+      end
+    end
+    if (s0_clk_en) begin // @[Reg.scala 17:18]
+      s1_req_no_xcpt <= io_cpu_req_bits_no_xcpt; // @[Reg.scala 17:22]
+    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 & ~s1_flush_valid & _s2_cannot_victimize_T; // @[DCache.scala 988:64]
+    if (reset) begin // @[DCache.scala 216:33]
+      uncachedInFlight_0 <= 1'h0; // @[DCache.scala 216:33]
+    end else if (_T_265) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        uncachedInFlight_0 <= _GEN_162;
+      end else if (d_last) begin // @[DCache.scala 661:28]
+        uncachedInFlight_0 <= 1'h0; // @[DCache.scala 663:13]
+      end else begin
+        uncachedInFlight_0 <= _GEN_162;
+      end
+    end else begin
+      uncachedInFlight_0 <= _GEN_162;
+    end
+    if (_T_248) begin // @[DCache.scala 606:26]
+      uncachedReqs_0_addr <= s2_req_addr;
+    end
+    if (_T_248) begin // @[DCache.scala 606:26]
+      uncachedReqs_0_tag <= s2_req_tag;
+    end
+    if (_T_248) begin // @[DCache.scala 606:26]
+      uncachedReqs_0_size <= s2_req_size;
+    end
+    if (_T_248) begin // @[DCache.scala 606:26]
+      uncachedReqs_0_signed <= s2_req_signed;
+    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_265) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_addr <= _GEN_40;
+      end else if (data_1) begin // @[DCache.scala 666:34]
+        s2_req_addr <= {{2'd0}, _s2_req_addr_T_1}; // @[DCache.scala 674:23]
+      end else begin
+        s2_req_addr <= _GEN_40;
+      end
+    end else begin
+      s2_req_addr <= _GEN_40;
+    end
+    if (_T_265) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_tag <= _GEN_41;
+      end else if (data_1) begin // @[DCache.scala 666:34]
+        s2_req_tag <= uncachedReqs_0_tag; // @[DCache.scala 673:22]
+      end else begin
+        s2_req_tag <= _GEN_41;
+      end
+    end else begin
+      s2_req_tag <= _GEN_41;
+    end
+    if (_T_265) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_size <= _GEN_43;
+      end else if (data_1) begin // @[DCache.scala 666:34]
+        s2_req_size <= uncachedReqs_0_size; // @[DCache.scala 671:23]
+      end else begin
+        s2_req_size <= _GEN_43;
+      end
+    end else begin
+      s2_req_size <= _GEN_43;
+    end
+    if (_T_265) begin // @[DCache.scala 649:26]
+      if (grantIsCached) begin // @[DCache.scala 650:26]
+        s2_req_signed <= _GEN_44;
+      end else if (data_1) begin // @[DCache.scala 666:34]
+        s2_req_signed <= uncachedReqs_0_signed; // @[DCache.scala 672:25]
+      end else begin
+        s2_req_signed <= _GEN_44;
+      end
+    end else begin
+      s2_req_signed <= _GEN_44;
+    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_req_no_xcpt <= s1_req_no_xcpt; // @[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 (_T_265) begin // @[DCache.scala 649:26]
+      if (!(grantIsCached)) begin // @[DCache.scala 650:26]
+        if (data_1) begin // @[DCache.scala 666:34]
+          s2_uncached_resp_addr <= uncachedReqs_0_addr; // @[DCache.scala 679:33]
+        end
+      end
+    end
+    if (_T_34) 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 (data_1 & (blockUncachedGrant | s1_valid)) begin // @[DCache.scala 727:68]
+      if (auto_out_d_valid) begin // @[DCache.scala 730:29]
+        blockUncachedGrant <= _T_288; // @[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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (_T_265) 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 <= 9'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 (_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
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_4 <= pstore1_storegen_data[39:32]; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_5 <= pstore1_storegen_data[47:40]; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_6 <= pstore1_storegen_data[55:48]; // @[Reg.scala 17:22]
+    end
+    if (advance_pstore1) begin // @[Reg.scala 17:18]
+      pstore2_storegen_data_r_7 <= pstore1_storegen_data[63:56]; // @[Reg.scala 17:22]
+    end
+    io_cpu_s2_xcpt_REG <= tlb_io_req_valid & _io_cpu_ordered_T & _s1_valid_not_nacked_T; // @[DCache.scala 906:65]
+    doUncachedResp <= io_cpu_replay_next; // @[DCache.scala 922:27]
+    `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_28) & _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_28)) 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 | pstore1_valid == 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 | pstore1_valid == 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 (~(~auto_out_d_valid | _T_256) & _dataArb_io_in_3_valid_T_56) begin
+          $fatal; // @[DCache.scala 629:13]
+        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 & ~(~auto_out_d_valid | _T_256)) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at DCache.scala:629 assert(!tl_out.d.valid || whole_opc.isOneOf(uncachedGrantOpcodes))\n"
+            ); // @[DCache.scala 629:13]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (_T_265 & 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_265 & grantIsCached & _dataArb_io_in_3_valid_T_56) 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_265 & _T_318 & d_last & _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_265 & _T_318 & d_last & _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 (~(~(_T_265 & 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_265 & 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_masked & _T_303)) & _dataArb_io_in_3_valid_T_56) begin
+          $fatal; // @[DCache.scala 910:11]
+        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 & ~(~(s2_valid_masked & _T_303))) begin
+          $fwrite(32'h80000002,
+            "Assertion failed\n    at DCache.scala:910 assert(!(s2_valid_masked && s2_req.cmd.isOneOf(M_XLR, M_XSC)))\n"
+            ); // @[DCache.scala 910:11]
+        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}};
+  s1_req_cmd = _RAND_1[4:0];
+  _RAND_2 = {1{`RANDOM}};
+  s2_valid = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  s2_req_cmd = _RAND_3[4:0];
+  _RAND_4 = {1{`RANDOM}};
+  pstore1_held = _RAND_4[0:0];
+  _RAND_5 = {2{`RANDOM}};
+  pstore1_addr = _RAND_5[33:0];
+  _RAND_6 = {2{`RANDOM}};
+  s1_req_addr = _RAND_6[33:0];
+  _RAND_7 = {1{`RANDOM}};
+  pstore1_mask = _RAND_7[7:0];
+  _RAND_8 = {1{`RANDOM}};
+  s1_req_size = _RAND_8[1:0];
+  _RAND_9 = {1{`RANDOM}};
+  pstore2_valid = _RAND_9[0:0];
+  _RAND_10 = {2{`RANDOM}};
+  pstore2_addr = _RAND_10[33:0];
+  _RAND_11 = {1{`RANDOM}};
+  mask = _RAND_11[7:0];
+  _RAND_12 = {1{`RANDOM}};
+  s2_not_nacked_in_s1 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  s2_hit_state_state = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  s1_req_no_xcpt = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  s1_req_tag = _RAND_15[6:0];
+  _RAND_16 = {1{`RANDOM}};
+  s1_req_signed = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  s1_req_dprv = _RAND_17[1:0];
+  _RAND_18 = {2{`RANDOM}};
+  s1_tlb_req_vaddr = _RAND_18[33:0];
+  _RAND_19 = {1{`RANDOM}};
+  s1_tlb_req_size = _RAND_19[1:0];
+  _RAND_20 = {1{`RANDOM}};
+  s1_tlb_req_cmd = _RAND_20[4:0];
+  _RAND_21 = {1{`RANDOM}};
+  s1_tlb_req_prv = _RAND_21[1:0];
+  _RAND_22 = {1{`RANDOM}};
+  s1_flush_valid = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  uncachedInFlight_0 = _RAND_23[0:0];
+  _RAND_24 = {2{`RANDOM}};
+  uncachedReqs_0_addr = _RAND_24[33:0];
+  _RAND_25 = {1{`RANDOM}};
+  uncachedReqs_0_tag = _RAND_25[6:0];
+  _RAND_26 = {1{`RANDOM}};
+  uncachedReqs_0_size = _RAND_26[1:0];
+  _RAND_27 = {1{`RANDOM}};
+  uncachedReqs_0_signed = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  s1_did_read = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  s1_read_mask = _RAND_29[0:0];
+  _RAND_30 = {2{`RANDOM}};
+  s2_req_addr = _RAND_30[33:0];
+  _RAND_31 = {1{`RANDOM}};
+  s2_req_tag = _RAND_31[6:0];
+  _RAND_32 = {1{`RANDOM}};
+  s2_req_size = _RAND_32[1:0];
+  _RAND_33 = {1{`RANDOM}};
+  s2_req_signed = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  s2_req_dprv = _RAND_34[1:0];
+  _RAND_35 = {1{`RANDOM}};
+  s2_req_no_xcpt = _RAND_35[0:0];
+  _RAND_36 = {1{`RANDOM}};
+  s2_tlb_xcpt_pf_ld = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  s2_tlb_xcpt_pf_st = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  s2_tlb_xcpt_ae_ld = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  s2_tlb_xcpt_ae_st = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  s2_tlb_xcpt_ma_ld = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  s2_tlb_xcpt_ma_st = _RAND_41[0:0];
+  _RAND_42 = {2{`RANDOM}};
+  s2_uncached_resp_addr = _RAND_42[33:0];
+  _RAND_43 = {2{`RANDOM}};
+  s2_vaddr_r = _RAND_43[33:0];
+  _RAND_44 = {1{`RANDOM}};
+  s2_flush_valid_pre_tag_ecc = _RAND_44[0:0];
+  _RAND_45 = {1{`RANDOM}};
+  blockUncachedGrant = _RAND_45[0:0];
+  _RAND_46 = {1{`RANDOM}};
+  counter = _RAND_46[8:0];
+  _RAND_47 = {2{`RANDOM}};
+  s2_data = _RAND_47[63:0];
+  _RAND_48 = {1{`RANDOM}};
+  pstore1_cmd = _RAND_48[4:0];
+  _RAND_49 = {2{`RANDOM}};
+  pstore1_data = _RAND_49[63:0];
+  _RAND_50 = {1{`RANDOM}};
+  pstore1_rmw_r = _RAND_50[0:0];
+  _RAND_51 = {1{`RANDOM}};
+  pstore_drain_on_miss_REG = _RAND_51[0:0];
+  _RAND_52 = {1{`RANDOM}};
+  pstore2_storegen_data_r = _RAND_52[7:0];
+  _RAND_53 = {1{`RANDOM}};
+  pstore2_storegen_data_r_1 = _RAND_53[7:0];
+  _RAND_54 = {1{`RANDOM}};
+  pstore2_storegen_data_r_2 = _RAND_54[7:0];
+  _RAND_55 = {1{`RANDOM}};
+  pstore2_storegen_data_r_3 = _RAND_55[7:0];
+  _RAND_56 = {1{`RANDOM}};
+  pstore2_storegen_data_r_4 = _RAND_56[7:0];
+  _RAND_57 = {1{`RANDOM}};
+  pstore2_storegen_data_r_5 = _RAND_57[7:0];
+  _RAND_58 = {1{`RANDOM}};
+  pstore2_storegen_data_r_6 = _RAND_58[7:0];
+  _RAND_59 = {1{`RANDOM}};
+  pstore2_storegen_data_r_7 = _RAND_59[7:0];
+  _RAND_60 = {1{`RANDOM}};
+  io_cpu_s2_xcpt_REG = _RAND_60[0:0];
+  _RAND_61 = {1{`RANDOM}};
+  doUncachedResp = _RAND_61[0: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,
+  input         auto_master_out_a_ready,
+  output        auto_master_out_a_valid,
+  output [31:0] auto_master_out_a_bits_address,
+  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  [63:0] auto_master_out_d_bits_data,
+  input         auto_master_out_d_bits_corrupt,
+  output        io_req_ready,
+  input         io_req_valid,
+  input  [32:0] io_req_bits_addr,
+  input  [31:0] io_s1_paddr,
+  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
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [63: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;
+`endif // RANDOMIZE_REG_INIT
+  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 [8: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_rdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [8:0] data_arrays_1_RW0_addr; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_1_RW0_en; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_1_RW0_clk; // @[DescribedSRAM.scala 19:26]
+  wire  data_arrays_1_RW0_wmode; // @[DescribedSRAM.scala 19:26]
+  wire [31:0] data_arrays_1_RW0_wdata_0; // @[DescribedSRAM.scala 19:26]
+  wire [31:0] data_arrays_1_RW0_rdata_0; // @[DescribedSRAM.scala 19:26]
+  wire  s0_valid = io_req_ready & io_req_valid; // @[Decoupled.scala 50:35]
+  reg  s1_valid; // @[ICache.scala 168:21]
+  reg [63:0] vb_array; // @[ICache.scala 230:21]
+  wire [5:0] s1_idx = io_s1_paddr[11:6]; // @[ICache.scala 485:21]
+  wire [6:0] _s1_vb_T = {1'h0,s1_idx}; // @[Cat.scala 31:58]
+  wire [63:0] _s1_vb_T_1 = vb_array >> _s1_vb_T; // @[ICache.scala 258:25]
+  wire  s1_vb = _s1_vb_T_1[0]; // @[ICache.scala 258:25]
+  wire [19:0] tag = tag_array_RW0_rdata_0[19:0]; // @[package.scala 154:13]
+  wire [19:0] s1_tag = io_s1_paddr[31:12]; // @[ICache.scala 253:30]
+  wire  tagMatch = s1_vb & tag == s1_tag; // @[ICache.scala 261:26]
+  wire  _s1_tag_hit_0_T = tagMatch; // @[ICache.scala 261:26]
+  wire  s1_hit = tagMatch; // @[ICache.scala 261:26]
+  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 [31:0] refill_paddr; // @[Reg.scala 16:16]
+  wire [19:0] refill_tag = refill_paddr[31:12]; // @[ICache.scala 186:33]
+  wire [5:0] refill_idx = refill_paddr[11:6]; // @[ICache.scala 485:21]
+  wire  refill_one_beat_opdata = auto_master_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire  refill_one_beat = auto_master_out_d_valid & 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 [8:0] beats1_decode = _beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire [8:0] beats1 = refill_one_beat_opdata ? beats1_decode : 9'h0; // @[Edges.scala 220:14]
+  reg [8:0] counter; // @[Edges.scala 228:27]
+  wire [8:0] counter1 = counter - 9'h1; // @[Edges.scala 229:28]
+  wire  first = counter == 9'h0; // @[Edges.scala 230:25]
+  wire  last = counter == 9'h1 | beats1 == 9'h0; // @[Edges.scala 231:37]
+  wire  d_done = last & auto_master_out_d_valid; // @[Edges.scala 232:22]
+  wire [8:0] _count_T = ~counter1; // @[Edges.scala 233:27]
+  wire [8:0] refill_cnt = beats1 & _count_T; // @[Edges.scala 233:25]
+  wire  refill_done = refill_one_beat & d_done; // @[ICache.scala 194:37]
+  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 > 9'h0 & accruedRefillError; // @[ICache.scala 219:43]
+  wire [6:0] _vb_array_T = {1'h0,refill_idx}; // @[Cat.scala 31:58]
+  wire  _vb_array_T_1 = ~invalidated; // @[ICache.scala 234:75]
+  wire [127:0] _vb_array_T_3 = 128'h1 << _vb_array_T; // @[ICache.scala 234:32]
+  wire [127:0] _GEN_52 = {{64'd0}, vb_array}; // @[ICache.scala 234:32]
+  wire [127:0] _vb_array_T_4 = _GEN_52 | _vb_array_T_3; // @[ICache.scala 234:32]
+  wire [63:0] _vb_array_T_5 = ~vb_array; // @[ICache.scala 234:32]
+  wire [127:0] _GEN_53 = {{64'd0}, _vb_array_T_5}; // @[ICache.scala 234:32]
+  wire [127:0] _vb_array_T_6 = _GEN_53 | _vb_array_T_3; // @[ICache.scala 234:32]
+  wire [127:0] _vb_array_T_7 = ~_vb_array_T_6; // @[ICache.scala 234:32]
+  wire [127:0] _vb_array_T_8 = refill_done & ~invalidated ? _vb_array_T_4 : _vb_array_T_7; // @[ICache.scala 234:32]
+  wire [127:0] _GEN_16 = refill_one_beat ? _vb_array_T_8 : {{64'd0}, vb_array}; // @[ICache.scala 231:26 234:14 230:21]
+  wire [127:0] _GEN_17 = io_invalidate ? 128'h0 : _GEN_16; // @[ICache.scala 237:21 238:14]
+  wire  _GEN_18 = io_invalidate | invalidated; // @[ICache.scala 237:21 239:17 176:24]
+  wire  tl_error = tag_array_RW0_rdata_0[20]; // @[package.scala 154:13]
+  wire  s1_tl_error_0 = tagMatch & tl_error; // @[ICache.scala 263:32]
+  wire  _s0_ren_T_1 = ~io_req_bits_addr[2]; // @[ICache.scala 281:111]
+  wire  s0_ren = s0_valid & _s0_ren_T_1; // @[ICache.scala 283:28]
+  wire  wen = refill_one_beat & _vb_array_T_1; // @[ICache.scala 284:32]
+  wire [8:0] _mem_idx_T = {refill_idx, 3'h0}; // @[ICache.scala 285:52]
+  wire [8:0] _mem_idx_T_1 = _mem_idx_T | refill_cnt; // @[ICache.scala 285:79]
+  wire  _dout_T_1 = ~wen & s0_ren; // @[ICache.scala 294:46]
+  wire [31:0] _GEN_30 = data_arrays_0_RW0_rdata_0; // @[ICache.scala 295:71 296:15]
+  wire  s0_ren_1 = s0_valid & io_req_bits_addr[2]; // @[ICache.scala 283:28]
+  wire  _dout_T_5 = ~wen & s0_ren_1; // @[ICache.scala 294:46]
+  reg [31:0] s2_dout_0; // @[Reg.scala 16:16]
+  wire  _s2_tl_error_T = |s1_tl_error_0; // @[ICache.scala 312:50]
+  reg  s2_tl_error; // @[Reg.scala 16:16]
+  wire  _GEN_50 = refill_fire | refill_valid; // @[ICache.scala 476:22 177:29 476:37]
+  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)
+  );
+  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_rdata_0(data_arrays_0_RW0_rdata_0)
+  );
+  data_arrays_0_0 data_arrays_1 ( // @[DescribedSRAM.scala 19:26]
+    .RW0_addr(data_arrays_1_RW0_addr),
+    .RW0_en(data_arrays_1_RW0_en),
+    .RW0_clk(data_arrays_1_RW0_clk),
+    .RW0_wmode(data_arrays_1_RW0_wmode),
+    .RW0_wdata_0(data_arrays_1_RW0_wdata_0),
+    .RW0_rdata_0(data_arrays_1_RW0_rdata_0)
+  );
+  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[31:6], 6'h0}; // @[ICache.scala 420:64]
+  assign io_req_ready = ~refill_one_beat; // @[ICache.scala 190:19]
+  assign io_resp_valid = s2_valid & s2_hit; // @[ICache.scala 338:33]
+  assign io_resp_bits_data = s2_dout_0; // @[ICache.scala 335:25]
+  assign io_resp_bits_ae = s2_tl_error; // @[ICache.scala 336:23]
+  assign tag_array_RW0_clk = clock; // @[ICache.scala 220:22]
+  assign tag_array_RW0_wdata_0 = {refillError,refill_tag}; // @[Cat.scala 31:58]
+  assign data_arrays_0_RW0_clk = clock; // @[ICache.scala 289:16]
+  assign data_arrays_0_RW0_wdata_0 = auto_master_out_d_bits_data[31:0]; // @[ICache.scala 290:71]
+  assign data_arrays_1_RW0_clk = clock; // @[ICache.scala 289:16]
+  assign data_arrays_1_RW0_wdata_0 = auto_master_out_d_bits_data[63:32]; // @[ICache.scala 290:71]
+  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[11:6];
+  assign data_arrays_0_RW0_en = _dout_T_1 | wen;
+  assign data_arrays_0_RW0_wmode = refill_one_beat & _vb_array_T_1; // @[ICache.scala 284:32]
+  assign data_arrays_0_RW0_addr = refill_one_beat ? _mem_idx_T_1 : io_req_bits_addr[11:3]; // @[ICache.scala 285:22]
+  assign data_arrays_1_RW0_en = _dout_T_5 | wen;
+  assign data_arrays_1_RW0_wmode = refill_one_beat & _vb_array_T_1; // @[ICache.scala 284:32]
+  assign data_arrays_1_RW0_addr = refill_one_beat ? _mem_idx_T_1 : io_req_bits_addr[11:3]; // @[ICache.scala 285:22]
+  always @(posedge clock) begin
+    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 <= 64'h0; // @[ICache.scala 230:21]
+    end else begin
+      vb_array <= _GEN_17[63:0];
+    end
+    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_tag_hit_0_T; // @[ICache.scala 174:23]
+    if (~refill_valid) begin // @[ICache.scala 475:24]
+      invalidated <= 1'h0; // @[ICache.scala 475:38]
+    end else begin
+      invalidated <= _GEN_18;
+    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_50;
+    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 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (auto_master_out_d_valid) 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 <= 9'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 (s1_valid) begin // @[Reg.scala 17:18]
+      if (io_s1_paddr[2]) begin // @[ICache.scala 295:71]
+        s2_dout_0 <= data_arrays_1_RW0_rdata_0; // @[ICache.scala 296:15]
+      end else begin
+        s2_dout_0 <= _GEN_30;
+      end
+    end
+    if (s1_valid) begin // @[Reg.scala 17:18]
+      s2_tl_error <= _s2_tl_error_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}};
+  s1_valid = _RAND_0[0:0];
+  _RAND_1 = {2{`RANDOM}};
+  vb_array = _RAND_1[63:0];
+  _RAND_2 = {1{`RANDOM}};
+  s2_valid = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  s2_hit = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  invalidated = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  refill_valid = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  s2_request_refill_REG = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  refill_paddr = _RAND_7[31:0];
+  _RAND_8 = {1{`RANDOM}};
+  counter = _RAND_8[8:0];
+  _RAND_9 = {1{`RANDOM}};
+  accruedRefillError = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  s2_dout_0 = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  s2_tl_error = _RAND_11[0: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  [33:0] io_enq_bits_pc,
+  input  [31:0] io_enq_bits_data,
+  input         io_enq_bits_xcpt_ae_inst,
+  input         io_enq_bits_replay,
+  input         io_deq_ready,
+  output        io_deq_valid,
+  output [33: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 [63:0] _RAND_5;
+  reg [31:0] _RAND_6;
+  reg [31:0] _RAND_7;
+  reg [31:0] _RAND_8;
+  reg [63:0] _RAND_9;
+  reg [31:0] _RAND_10;
+  reg [31:0] _RAND_11;
+  reg [31:0] _RAND_12;
+  reg [63: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;
+  reg [31:0] _RAND_20;
+  reg [63:0] _RAND_21;
+  reg [31:0] _RAND_22;
+  reg [31:0] _RAND_23;
+  reg [31:0] _RAND_24;
+`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 [33: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 [33: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 [33: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 [33: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 [33: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_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_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_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_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_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_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 = {2{`RANDOM}};
+  elts_0_pc = _RAND_5[33:0];
+  _RAND_6 = {1{`RANDOM}};
+  elts_0_data = _RAND_6[31:0];
+  _RAND_7 = {1{`RANDOM}};
+  elts_0_xcpt_ae_inst = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  elts_0_replay = _RAND_8[0:0];
+  _RAND_9 = {2{`RANDOM}};
+  elts_1_pc = _RAND_9[33:0];
+  _RAND_10 = {1{`RANDOM}};
+  elts_1_data = _RAND_10[31:0];
+  _RAND_11 = {1{`RANDOM}};
+  elts_1_xcpt_ae_inst = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  elts_1_replay = _RAND_12[0:0];
+  _RAND_13 = {2{`RANDOM}};
+  elts_2_pc = _RAND_13[33:0];
+  _RAND_14 = {1{`RANDOM}};
+  elts_2_data = _RAND_14[31:0];
+  _RAND_15 = {1{`RANDOM}};
+  elts_2_xcpt_ae_inst = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  elts_2_replay = _RAND_16[0:0];
+  _RAND_17 = {2{`RANDOM}};
+  elts_3_pc = _RAND_17[33:0];
+  _RAND_18 = {1{`RANDOM}};
+  elts_3_data = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  elts_3_xcpt_ae_inst = _RAND_19[0:0];
+  _RAND_20 = {1{`RANDOM}};
+  elts_3_replay = _RAND_20[0:0];
+  _RAND_21 = {2{`RANDOM}};
+  elts_4_pc = _RAND_21[33:0];
+  _RAND_22 = {1{`RANDOM}};
+  elts_4_data = _RAND_22[31:0];
+  _RAND_23 = {1{`RANDOM}};
+  elts_4_xcpt_ae_inst = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  elts_4_replay = _RAND_24[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module PMPChecker_2(
+  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  [29:0] io_pmp_0_addr,
+  input  [31: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  [29:0] io_pmp_1_addr,
+  input  [31: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  [29:0] io_pmp_2_addr,
+  input  [31: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  [29:0] io_pmp_3_addr,
+  input  [31: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  [29:0] io_pmp_4_addr,
+  input  [31: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  [29:0] io_pmp_5_addr,
+  input  [31: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  [29:0] io_pmp_6_addr,
+  input  [31: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  [29:0] io_pmp_7_addr,
+  input  [31:0] io_pmp_7_mask,
+  input  [31:0] io_addr,
+  output        io_x
+);
+  wire  default_ = io_prv > 2'h1; // @[PMP.scala 156:56]
+  wire [31:0] _res_hit_T_1 = {io_pmp_7_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_2 = ~_res_hit_T_1; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_3 = _res_hit_T_2 | 32'h3; // @[PMP.scala 61:48]
+  wire [31:0] _res_hit_T_4 = ~_res_hit_T_3; // @[PMP.scala 61:27]
+  wire [31:0] _res_hit_T_5 = io_addr ^ _res_hit_T_4; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_6 = ~io_pmp_7_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_14 = {io_pmp_6_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_15 = ~_res_hit_T_14; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_16 = _res_hit_T_15 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_32 = io_addr ^ _res_hit_T_17; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_33 = ~io_pmp_6_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_41 = {io_pmp_5_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_42 = ~_res_hit_T_41; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_43 = _res_hit_T_42 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_59 = io_addr ^ _res_hit_T_44; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_60 = ~io_pmp_5_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_68 = {io_pmp_4_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_69 = ~_res_hit_T_68; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_70 = _res_hit_T_69 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_86 = io_addr ^ _res_hit_T_71; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_87 = ~io_pmp_4_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_95 = {io_pmp_3_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_96 = ~_res_hit_T_95; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_97 = _res_hit_T_96 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_113 = io_addr ^ _res_hit_T_98; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_114 = ~io_pmp_3_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_122 = {io_pmp_2_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_123 = ~_res_hit_T_122; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_124 = _res_hit_T_123 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_140 = io_addr ^ _res_hit_T_125; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_141 = ~io_pmp_2_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_149 = {io_pmp_1_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_150 = ~_res_hit_T_149; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_151 = _res_hit_T_150 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_167 = io_addr ^ _res_hit_T_152; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_168 = ~io_pmp_1_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'h0; // @[PMP.scala 64:58]
+  wire [31:0] _res_hit_T_176 = {io_pmp_0_addr, 2'h0}; // @[PMP.scala 61:36]
+  wire [31:0] _res_hit_T_177 = ~_res_hit_T_176; // @[PMP.scala 61:29]
+  wire [31:0] _res_hit_T_178 = _res_hit_T_177 | 32'h3; // @[PMP.scala 61:48]
+  wire [31: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_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 [31:0] _res_hit_T_194 = io_addr ^ _res_hit_T_179; // @[PMP.scala 64:47]
+  wire [31:0] _res_hit_T_195 = ~io_pmp_0_mask; // @[PMP.scala 64:54]
+  wire [31: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 == 32'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_x = io_pmp_0_cfg_x | res_ignore_7; // @[PMP.scala 184:40]
+  assign io_x = res_hit_7 ? res_cur_7_cfg_x : _res_T_314_cfg_x; // @[PMP.scala 185:8]
+endmodule
+module TLB_1(
+  input  [33:0] io_req_bits_vaddr,
+  output [31:0] io_resp_paddr,
+  output        io_resp_ae_inst,
+  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  [29:0] io_ptw_pmp_0_addr,
+  input  [31: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  [29:0] io_ptw_pmp_1_addr,
+  input  [31: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  [29:0] io_ptw_pmp_2_addr,
+  input  [31: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  [29:0] io_ptw_pmp_3_addr,
+  input  [31: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  [29:0] io_ptw_pmp_4_addr,
+  input  [31: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  [29:0] io_ptw_pmp_5_addr,
+  input  [31: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  [29:0] io_ptw_pmp_6_addr,
+  input  [31: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  [29:0] io_ptw_pmp_7_addr,
+  input  [31: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 [29:0] pmp_io_pmp_0_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_1_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_2_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_3_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_4_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_5_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_6_addr; // @[TLB.scala 233:19]
+  wire [31: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 [29:0] pmp_io_pmp_7_addr; // @[TLB.scala 233:19]
+  wire [31:0] pmp_io_pmp_7_mask; // @[TLB.scala 233:19]
+  wire [31:0] pmp_io_addr; // @[TLB.scala 233:19]
+  wire  pmp_io_x; // @[TLB.scala 233:19]
+  wire [20:0] vpn = io_req_bits_vaddr[32:12]; // @[TLB.scala 187:30]
+  wire [21:0] mpu_ppn = io_req_bits_vaddr[33:12]; // @[TLB.scala 230:144]
+  wire [33:0] mpu_physaddr = {mpu_ppn,io_req_bits_vaddr[11:0]}; // @[Cat.scala 31:58]
+  wire [2:0] mpu_priv = {io_ptw_status_debug,2'h3}; // @[Cat.scala 31:58]
+  wire [33:0] _legal_address_T = mpu_physaddr ^ 34'h3000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_1 = {1'b0,$signed(_legal_address_T)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_3 = $signed(_legal_address_T_1) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_4 = $signed(_legal_address_T_3) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_5 = mpu_physaddr ^ 34'h4000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_6 = {1'b0,$signed(_legal_address_T_5)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_8 = $signed(_legal_address_T_6) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_9 = $signed(_legal_address_T_8) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_10 = mpu_physaddr ^ 34'h10000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_11 = {1'b0,$signed(_legal_address_T_10)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_13 = $signed(_legal_address_T_11) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_14 = $signed(_legal_address_T_13) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_15 = mpu_physaddr ^ 34'h20000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_16 = {1'b0,$signed(_legal_address_T_15)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_18 = $signed(_legal_address_T_16) & -35'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_19 = $signed(_legal_address_T_18) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_20 = mpu_physaddr ^ 34'h10010000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_21 = {1'b0,$signed(_legal_address_T_20)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_23 = $signed(_legal_address_T_21) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_24 = $signed(_legal_address_T_23) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_25 = mpu_physaddr ^ 34'h10011000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_26 = {1'b0,$signed(_legal_address_T_25)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_28 = $signed(_legal_address_T_26) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_29 = $signed(_legal_address_T_28) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_30 = mpu_physaddr ^ 34'h10012000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_31 = {1'b0,$signed(_legal_address_T_30)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_33 = $signed(_legal_address_T_31) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_34 = $signed(_legal_address_T_33) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_35 = mpu_physaddr ^ 34'h10013000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_36 = {1'b0,$signed(_legal_address_T_35)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_38 = $signed(_legal_address_T_36) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_39 = $signed(_legal_address_T_38) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_40 = mpu_physaddr ^ 34'h20000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_41 = {1'b0,$signed(_legal_address_T_40)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_43 = $signed(_legal_address_T_41) & -35'sh10000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_44 = $signed(_legal_address_T_43) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_45 = mpu_physaddr ^ 34'h10014000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_46 = {1'b0,$signed(_legal_address_T_45)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_48 = $signed(_legal_address_T_46) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_49 = $signed(_legal_address_T_48) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_50 = mpu_physaddr ^ 34'h30000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_51 = {1'b0,$signed(_legal_address_T_50)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_53 = $signed(_legal_address_T_51) & -35'sh10000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_54 = $signed(_legal_address_T_53) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_55 = mpu_physaddr ^ 34'hc000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_56 = {1'b0,$signed(_legal_address_T_55)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_58 = $signed(_legal_address_T_56) & -35'sh4000000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_59 = $signed(_legal_address_T_58) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_60 = mpu_physaddr ^ 34'h2000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_61 = {1'b0,$signed(_legal_address_T_60)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_63 = $signed(_legal_address_T_61) & -35'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_64 = $signed(_legal_address_T_63) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _legal_address_T_66 = {1'b0,$signed(mpu_physaddr)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_68 = $signed(_legal_address_T_66) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_69 = $signed(_legal_address_T_68) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_70 = mpu_physaddr ^ 34'h80000000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_71 = {1'b0,$signed(_legal_address_T_70)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_73 = $signed(_legal_address_T_71) & -35'sh4000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_74 = $signed(_legal_address_T_73) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_75 = mpu_physaddr ^ 34'h10000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_76 = {1'b0,$signed(_legal_address_T_75)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_78 = $signed(_legal_address_T_76) & -35'sh10000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_79 = $signed(_legal_address_T_78) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_80 = mpu_physaddr ^ 34'h100000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_81 = {1'b0,$signed(_legal_address_T_80)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_83 = $signed(_legal_address_T_81) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_84 = $signed(_legal_address_T_83) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [33:0] _legal_address_T_85 = mpu_physaddr ^ 34'h110000; // @[Parameters.scala 137:31]
+  wire [34:0] _legal_address_T_86 = {1'b0,$signed(_legal_address_T_85)}; // @[Parameters.scala 137:49]
+  wire [34:0] _legal_address_T_88 = $signed(_legal_address_T_86) & -35'sh1000; // @[Parameters.scala 137:52]
+  wire  _legal_address_T_89 = $signed(_legal_address_T_88) == 35'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; // @[TLB.scala 238:67]
+  wire [34:0] _homogeneous_T_75 = $signed(_legal_address_T_76) & 35'shba130000; // @[Parameters.scala 137:52]
+  wire  _homogeneous_T_76 = $signed(_homogeneous_T_75) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _homogeneous_T_80 = $signed(_legal_address_T_16) & 35'shba130000; // @[Parameters.scala 137:52]
+  wire  _homogeneous_T_81 = $signed(_homogeneous_T_80) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _homogeneous_T_85 = $signed(_legal_address_T_41) & 35'sha0000000; // @[Parameters.scala 137:52]
+  wire  _homogeneous_T_86 = $signed(_homogeneous_T_85) == 35'sh0; // @[Parameters.scala 137:67]
+  wire  deny_access_to_debug = mpu_priv <= 3'h3 & _legal_address_T_69; // @[TLB.scala 243:48]
+  wire  _prot_r_T_6 = ~deny_access_to_debug; // @[TLB.scala 244:44]
+  wire [34:0] _prot_x_T_3 = $signed(_legal_address_T_66) & 35'sh3a134000; // @[Parameters.scala 137:52]
+  wire  _prot_x_T_4 = $signed(_prot_x_T_3) == 35'sh0; // @[Parameters.scala 137:67]
+  wire [34:0] _prot_x_T_18 = $signed(_legal_address_T_11) & 35'shba136000; // @[Parameters.scala 137:52]
+  wire  _prot_x_T_19 = $signed(_prot_x_T_18) == 35'sh0; // @[Parameters.scala 137:67]
+  wire  _prot_x_T_28 = _prot_x_T_4 | _homogeneous_T_76 | _homogeneous_T_81 | _prot_x_T_19 | _homogeneous_T_86; // @[Parameters.scala 615:89]
+  wire  _prot_x_T_67 = legal_address & _prot_x_T_28; // @[TLB.scala 240:19]
+  wire  prot_x = _prot_x_T_67 & _prot_r_T_6 & pmp_io_x; // @[TLB.scala 249:65]
+  wire [19:0] ppn = vpn[19: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 [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]
+  PMPChecker_2 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_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_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_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_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_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_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_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_addr(pmp_io_pmp_7_addr),
+    .io_pmp_7_mask(pmp_io_pmp_7_mask),
+    .io_addr(pmp_io_addr),
+    .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 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_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_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_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_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_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_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_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_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[31:0]; // @[TLB.scala 234:15]
+endmodule
+module Frontend(
+  input         clock,
+  input         reset,
+  input         auto_icache_master_out_a_ready,
+  output        auto_icache_master_out_a_valid,
+  output [31:0] auto_icache_master_out_a_bits_address,
+  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  [63: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  [33:0] io_cpu_req_bits_pc,
+  input         io_cpu_req_bits_speculative,
+  input         io_cpu_resp_ready,
+  output        io_cpu_resp_valid,
+  output [33: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         io_cpu_bht_update_valid,
+  input         io_cpu_flush_icache,
+  output [33:0] io_cpu_npc,
+  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  [29:0] io_ptw_pmp_0_addr,
+  input  [31: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  [29:0] io_ptw_pmp_1_addr,
+  input  [31: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  [29:0] io_ptw_pmp_2_addr,
+  input  [31: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  [29:0] io_ptw_pmp_3_addr,
+  input  [31: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  [29:0] io_ptw_pmp_4_addr,
+  input  [31: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  [29:0] io_ptw_pmp_5_addr,
+  input  [31: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  [29:0] io_ptw_pmp_6_addr,
+  input  [31: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  [29:0] io_ptw_pmp_7_addr,
+  input  [31:0] io_ptw_pmp_7_mask,
+  input  [63:0] io_ptw_customCSRs_csrs_0_value
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [63:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [63: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  icache_clock; // @[Frontend.scala 66:26]
+  wire  icache_reset; // @[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 [31:0] icache_auto_master_out_a_bits_address; // @[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 [63: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 [32:0] icache_io_req_bits_addr; // @[Frontend.scala 66:26]
+  wire [31:0] icache_io_s1_paddr; // @[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 [33:0] fq_io_enq_bits_pc; // @[Frontend.scala 88:57]
+  wire [31:0] fq_io_enq_bits_data; // @[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 [33: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 [33:0] tlb_io_req_bits_vaddr; // @[Frontend.scala 102:19]
+  wire [31:0] tlb_io_resp_paddr; // @[Frontend.scala 102:19]
+  wire  tlb_io_resp_ae_inst; // @[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 [29:0] tlb_io_ptw_pmp_0_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_1_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_2_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_3_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_4_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_5_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_6_addr; // @[Frontend.scala 102:19]
+  wire [31: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 [29:0] tlb_io_ptw_pmp_7_addr; // @[Frontend.scala 102:19]
+  wire [31:0] tlb_io_ptw_pmp_7_mask; // @[Frontend.scala 102:19]
+  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 [33:0] s1_pc; // @[Frontend.scala 112:18]
+  reg  s1_speculative; // @[Frontend.scala 113:27]
+  reg [33:0] s2_pc; // @[Frontend.scala 114:22]
+  reg  s2_tlb_resp_ae_inst; // @[Frontend.scala 118:24]
+  reg  s2_speculative; // @[Frontend.scala 120:27]
+  wire [33:0] _s1_base_pc_T = ~s1_pc; // @[Frontend.scala 125:22]
+  wire [33:0] _s1_base_pc_T_1 = _s1_base_pc_T | 34'h3; // @[Frontend.scala 125:29]
+  wire [33:0] s1_base_pc = ~_s1_base_pc_T_1; // @[Frontend.scala 125:20]
+  wire [33:0] ntpc = s1_base_pc + 34'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 [33:0] npc = s2_replay ? s2_pc : ntpc; // @[Frontend.scala 132:16]
+  wire  s0_speculative = s1_speculative | s2_valid & ~s2_speculative; // @[Frontend.scala 138:41]
+  wire  _GEN_0 = ~s2_replay & ~io_cpu_req_valid; // @[Frontend.scala 143:12 144:21 145:14]
+  reg  fq_io_enq_valid_REG; // @[Frontend.scala 171:29]
+  wire [33:0] _io_cpu_npc_T = io_cpu_req_valid ? io_cpu_req_bits_pc : npc; // @[Frontend.scala 173:28]
+  wire [33:0] _io_cpu_npc_T_1 = ~_io_cpu_npc_T; // @[Frontend.scala 362:29]
+  wire [33:0] _io_cpu_npc_T_2 = _io_cpu_npc_T_1 | 34'h1; // @[Frontend.scala 362:33]
+  ICache icache ( // @[Frontend.scala 66:26]
+    .clock(icache_clock),
+    .reset(icache_reset),
+    .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_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_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)
+  );
+  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_pc(fq_io_enq_bits_pc),
+    .io_enq_bits_data(fq_io_enq_bits_data),
+    .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_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_resp_paddr(tlb_io_resp_paddr),
+    .io_resp_ae_inst(tlb_io_resp_ae_inst),
+    .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_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_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_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_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_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_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_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_addr(tlb_io_ptw_pmp_7_addr),
+    .io_ptw_pmp_7_mask(tlb_io_ptw_pmp_7_mask)
+  );
+  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 io_cpu_resp_valid = fq_io_deq_valid; // @[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_2; // @[Frontend.scala 362:27]
+  assign icache_clock = clock; // @[Frontend.scala 98:16]
+  assign icache_reset = reset;
+  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[32:0]; // @[Frontend.scala 162:27]
+  assign icache_io_s1_paddr = tlb_io_resp_paddr; // @[Frontend.scala 164:22]
+  assign icache_io_s1_kill = io_cpu_req_valid | s2_replay; // @[Frontend.scala 166:56]
+  assign icache_io_s2_kill = s2_speculative | 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_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_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 = icache_io_s2_kill & ~icache_io_resp_valid & ~s2_tlb_resp_ae_inst; // @[Frontend.scala 177:101]
+  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_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_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_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_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_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_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_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_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_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]
+  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 <= 34'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 (~s2_replay) begin // @[Frontend.scala 144:21]
+      s2_tlb_resp_ae_inst <= tlb_io_resp_ae_inst; // @[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
+    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
+  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 = {2{`RANDOM}};
+  s1_pc = _RAND_2[33:0];
+  _RAND_3 = {1{`RANDOM}};
+  s1_speculative = _RAND_3[0:0];
+  _RAND_4 = {2{`RANDOM}};
+  s2_pc = _RAND_4[33:0];
+  _RAND_5 = {1{`RANDOM}};
+  s2_tlb_resp_ae_inst = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  s2_speculative = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  s2_replay_REG = _RAND_7[0:0];
+  _RAND_8 = {1{`RANDOM}};
+  fq_io_enq_valid_REG = _RAND_8[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ScratchpadSlavePort(
+  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  [7:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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_size,
+  output [7:0]  auto_in_d_bits_source,
+  output [63:0] auto_in_d_bits_data,
+  input         io_dmem_req_ready,
+  output        io_dmem_req_valid,
+  output [33:0] io_dmem_req_bits_addr,
+  output [4:0]  io_dmem_req_bits_cmd,
+  output [1:0]  io_dmem_req_bits_size,
+  output        io_dmem_s1_kill,
+  output [63:0] io_dmem_s1_data_data,
+  output [7:0]  io_dmem_s1_data_mask,
+  input         io_dmem_s2_nack,
+  input         io_dmem_resp_valid,
+  input  [63:0] io_dmem_resp_bits_data_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;
+  reg [63:0] _RAND_7;
+  reg [63:0] _RAND_8;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] state; // @[ScratchpadSlavePort.scala 45:20]
+  wire [2:0] _GEN_0 = state == 3'h1 ? 3'h2 : state; // @[ScratchpadSlavePort.scala 45:20 47:{30,38}]
+  wire  _T_1 = state == 3'h4; // @[ScratchpadSlavePort.scala 48:17]
+  wire [2:0] _GEN_1 = state == 3'h4 & auto_in_a_valid ? 3'h0 : _GEN_0; // @[ScratchpadSlavePort.scala 48:{46,54}]
+  wire [2:0] _GEN_2 = io_dmem_resp_valid ? 3'h5 : _GEN_1; // @[ScratchpadSlavePort.scala 49:{31,39}]
+  wire  tl_in_d_valid = io_dmem_resp_valid | state == 3'h5; // @[ScratchpadSlavePort.scala 110:41]
+  wire  _T_3 = auto_in_d_ready & tl_in_d_valid; // @[Decoupled.scala 50:35]
+  wire  _ready_T = state == 3'h0; // @[ScratchpadSlavePort.scala 98:23]
+  wire  _ready_T_1 = state == 3'h2; // @[ScratchpadSlavePort.scala 98:44]
+  wire  ready = state == 3'h0 | state == 3'h2 & io_dmem_resp_valid & auto_in_d_ready; // @[ScratchpadSlavePort.scala 98:35]
+  wire  _dmem_req_valid_T_1 = state == 3'h3; // @[ScratchpadSlavePort.scala 99:57]
+  wire  dmem_req_valid = auto_in_a_valid & ready | state == 3'h3; // @[ScratchpadSlavePort.scala 99:48]
+  reg [2:0] acq_opcode; // @[ScratchpadSlavePort.scala 54:18]
+  reg [2:0] acq_param; // @[ScratchpadSlavePort.scala 54:18]
+  reg [1:0] acq_size; // @[ScratchpadSlavePort.scala 54:18]
+  reg [7:0] acq_source; // @[ScratchpadSlavePort.scala 54:18]
+  reg [31:0] acq_address; // @[ScratchpadSlavePort.scala 54:18]
+  reg [7:0] acq_mask; // @[ScratchpadSlavePort.scala 54:18]
+  reg [63:0] acq_data; // @[ScratchpadSlavePort.scala 54:18]
+  wire  tl_in_a_ready = io_dmem_req_ready & ready; // @[ScratchpadSlavePort.scala 103:40]
+  wire  _T_5 = tl_in_a_ready & auto_in_a_valid; // @[Decoupled.scala 50:35]
+  wire  ready_likely = _ready_T | _ready_T_1; // @[package.scala 72:59]
+  wire [2:0] _io_dmem_req_bits_T_1_opcode = _dmem_req_valid_T_1 ? acq_opcode : auto_in_a_bits_opcode; // @[ScratchpadSlavePort.scala 104:41]
+  wire [2:0] _io_dmem_req_bits_T_1_param = _dmem_req_valid_T_1 ? acq_param : auto_in_a_bits_param; // @[ScratchpadSlavePort.scala 104:41]
+  wire [1:0] io_dmem_req_bits_mask_full_desired_mask_size = _dmem_req_valid_T_1 ? acq_size : auto_in_a_bits_size; // @[ScratchpadSlavePort.scala 104:41]
+  wire [31:0] _io_dmem_req_bits_T_1_address = _dmem_req_valid_T_1 ? acq_address : auto_in_a_bits_address; // @[ScratchpadSlavePort.scala 104:41]
+  wire [7:0] _io_dmem_req_bits_T_1_mask = _dmem_req_valid_T_1 ? acq_mask : auto_in_a_bits_mask; // @[ScratchpadSlavePort.scala 104:41]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_1 = 3'h0 == _io_dmem_req_bits_T_1_param ? 4'hc : 4'h0; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_3 = 3'h1 == _io_dmem_req_bits_T_1_param ? 4'hd : _io_dmem_req_bits_req_cmd_T_1; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_5 = 3'h2 == _io_dmem_req_bits_T_1_param ? 4'he : _io_dmem_req_bits_req_cmd_T_3; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_7 = 3'h3 == _io_dmem_req_bits_T_1_param ? 4'hf : _io_dmem_req_bits_req_cmd_T_5; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_9 = 3'h4 == _io_dmem_req_bits_T_1_param ? 4'h8 : _io_dmem_req_bits_req_cmd_T_7; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_11 = 3'h0 == _io_dmem_req_bits_T_1_param ? 4'h9 : 4'h0; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_13 = 3'h1 == _io_dmem_req_bits_T_1_param ? 4'ha :
+    _io_dmem_req_bits_req_cmd_T_11; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_15 = 3'h2 == _io_dmem_req_bits_T_1_param ? 4'hb :
+    _io_dmem_req_bits_req_cmd_T_13; // @[Mux.scala 81:58]
+  wire [3:0] _io_dmem_req_bits_req_cmd_T_17 = 3'h3 == _io_dmem_req_bits_T_1_param ? 4'h4 :
+    _io_dmem_req_bits_req_cmd_T_15; // @[Mux.scala 81:58]
+  wire [4:0] _io_dmem_req_bits_req_cmd_T_21 = 3'h1 == _io_dmem_req_bits_T_1_opcode ? 5'h11 : {{4'd0}, 3'h0 ==
+    _io_dmem_req_bits_T_1_opcode}; // @[Mux.scala 81:58]
+  wire [4:0] _io_dmem_req_bits_req_cmd_T_23 = 3'h2 == _io_dmem_req_bits_T_1_opcode ? {{1'd0},
+    _io_dmem_req_bits_req_cmd_T_9} : _io_dmem_req_bits_req_cmd_T_21; // @[Mux.scala 81:58]
+  wire [4:0] _io_dmem_req_bits_req_cmd_T_25 = 3'h3 == _io_dmem_req_bits_T_1_opcode ? {{1'd0},
+    _io_dmem_req_bits_req_cmd_T_17} : _io_dmem_req_bits_req_cmd_T_23; // @[Mux.scala 81:58]
+  wire [4:0] _io_dmem_req_bits_req_cmd_T_27 = 3'h4 == _io_dmem_req_bits_T_1_opcode ? 5'h0 :
+    _io_dmem_req_bits_req_cmd_T_25; // @[Mux.scala 81:58]
+  wire  io_dmem_req_bits_mask_full_desired_mask_upper = _io_dmem_req_bits_T_1_address[0] |
+    io_dmem_req_bits_mask_full_desired_mask_size >= 2'h1; // @[AMOALU.scala 17:46]
+  wire  io_dmem_req_bits_mask_full_desired_mask_lower = _io_dmem_req_bits_T_1_address[0] ? 1'h0 : 1'h1; // @[AMOALU.scala 18:22]
+  wire [1:0] _io_dmem_req_bits_mask_full_desired_mask_T = {io_dmem_req_bits_mask_full_desired_mask_upper,
+    io_dmem_req_bits_mask_full_desired_mask_lower}; // @[Cat.scala 31:58]
+  wire [1:0] _io_dmem_req_bits_mask_full_desired_mask_upper_T_5 = _io_dmem_req_bits_T_1_address[1] ?
+    _io_dmem_req_bits_mask_full_desired_mask_T : 2'h0; // @[AMOALU.scala 17:22]
+  wire [1:0] _io_dmem_req_bits_mask_full_desired_mask_upper_T_7 = io_dmem_req_bits_mask_full_desired_mask_size >= 2'h2
+     ? 2'h3 : 2'h0; // @[AMOALU.scala 17:51]
+  wire [1:0] io_dmem_req_bits_mask_full_desired_mask_upper_1 = _io_dmem_req_bits_mask_full_desired_mask_upper_T_5 |
+    _io_dmem_req_bits_mask_full_desired_mask_upper_T_7; // @[AMOALU.scala 17:46]
+  wire [1:0] io_dmem_req_bits_mask_full_desired_mask_lower_1 = _io_dmem_req_bits_T_1_address[1] ? 2'h0 :
+    _io_dmem_req_bits_mask_full_desired_mask_T; // @[AMOALU.scala 18:22]
+  wire [3:0] _io_dmem_req_bits_mask_full_desired_mask_T_1 = {io_dmem_req_bits_mask_full_desired_mask_upper_1,
+    io_dmem_req_bits_mask_full_desired_mask_lower_1}; // @[Cat.scala 31:58]
+  wire [3:0] _io_dmem_req_bits_mask_full_desired_mask_upper_T_9 = _io_dmem_req_bits_T_1_address[2] ?
+    _io_dmem_req_bits_mask_full_desired_mask_T_1 : 4'h0; // @[AMOALU.scala 17:22]
+  wire [3:0] _io_dmem_req_bits_mask_full_desired_mask_upper_T_11 = io_dmem_req_bits_mask_full_desired_mask_size >= 2'h3
+     ? 4'hf : 4'h0; // @[AMOALU.scala 17:51]
+  wire [3:0] io_dmem_req_bits_mask_full_desired_mask_upper_2 = _io_dmem_req_bits_mask_full_desired_mask_upper_T_9 |
+    _io_dmem_req_bits_mask_full_desired_mask_upper_T_11; // @[AMOALU.scala 17:46]
+  wire [3:0] io_dmem_req_bits_mask_full_desired_mask_lower_2 = _io_dmem_req_bits_T_1_address[2] ? 4'h0 :
+    _io_dmem_req_bits_mask_full_desired_mask_T_1; // @[AMOALU.scala 18:22]
+  wire [7:0] io_dmem_req_bits_mask_full_desired_mask = {io_dmem_req_bits_mask_full_desired_mask_upper_2,
+    io_dmem_req_bits_mask_full_desired_mask_lower_2}; // @[Cat.scala 31:58]
+  wire [7:0] _io_dmem_req_bits_mask_full_T = ~io_dmem_req_bits_mask_full_desired_mask; // @[ScratchpadSlavePort.scala 79:19]
+  wire [7:0] _io_dmem_req_bits_mask_full_T_1 = _io_dmem_req_bits_T_1_mask | _io_dmem_req_bits_mask_full_T; // @[ScratchpadSlavePort.scala 79:17]
+  wire  io_dmem_req_bits_mask_full = &_io_dmem_req_bits_mask_full_T_1; // @[ScratchpadSlavePort.scala 79:34]
+  wire  _bundleIn_0_d_bits_T = acq_opcode == 3'h0; // @[package.scala 15:47]
+  wire  _bundleIn_0_d_bits_T_1 = acq_opcode == 3'h1; // @[package.scala 15:47]
+  wire  _bundleIn_0_d_bits_T_2 = _bundleIn_0_d_bits_T | _bundleIn_0_d_bits_T_1; // @[package.scala 72:59]
+  reg [63:0] bundleIn_0_d_bits_data_r; // @[Reg.scala 16:16]
+  assign auto_in_a_ready = io_dmem_req_ready & ready; // @[ScratchpadSlavePort.scala 103:40]
+  assign auto_in_d_valid = io_dmem_resp_valid | state == 3'h5; // @[ScratchpadSlavePort.scala 110:41]
+  assign auto_in_d_bits_opcode = _bundleIn_0_d_bits_T_2 ? 3'h0 : 3'h1; // @[ScratchpadSlavePort.scala 111:24]
+  assign auto_in_d_bits_size = acq_size; // @[ScratchpadSlavePort.scala 111:24]
+  assign auto_in_d_bits_source = acq_source; // @[ScratchpadSlavePort.scala 111:24]
+  assign auto_in_d_bits_data = _ready_T_1 ? io_dmem_resp_bits_data_raw : bundleIn_0_d_bits_data_r; // @[package.scala 79:42]
+  assign io_dmem_req_valid = auto_in_a_valid & ready_likely | _dmem_req_valid_T_1; // @[ScratchpadSlavePort.scala 100:65]
+  assign io_dmem_req_bits_addr = {{2'd0}, _io_dmem_req_bits_T_1_address}; // @[ScratchpadSlavePort.scala 58:21 87:16]
+  assign io_dmem_req_bits_cmd = _T_1 | _io_dmem_req_bits_T_1_opcode == 3'h1 & io_dmem_req_bits_mask_full ? 5'h1 :
+    _io_dmem_req_bits_req_cmd_T_27; // @[ScratchpadSlavePort.scala 59:15 81:88 82:17]
+  assign io_dmem_req_bits_size = _dmem_req_valid_T_1 ? acq_size : auto_in_a_bits_size; // @[ScratchpadSlavePort.scala 104:41]
+  assign io_dmem_s1_kill = state != 3'h1; // @[ScratchpadSlavePort.scala 107:30]
+  assign io_dmem_s1_data_data = acq_data; // @[ScratchpadSlavePort.scala 105:26]
+  assign io_dmem_s1_data_mask = acq_mask; // @[ScratchpadSlavePort.scala 106:26]
+  always @(posedge clock) begin
+    if (reset) begin // @[ScratchpadSlavePort.scala 45:20]
+      state <= 3'h4; // @[ScratchpadSlavePort.scala 45:20]
+    end else if (dmem_req_valid & io_dmem_req_ready) begin // @[ScratchpadSlavePort.scala 52:48]
+      state <= 3'h1; // @[ScratchpadSlavePort.scala 52:56]
+    end else if (io_dmem_s2_nack) begin // @[ScratchpadSlavePort.scala 51:28]
+      state <= 3'h3; // @[ScratchpadSlavePort.scala 51:36]
+    end else if (_T_3) begin // @[ScratchpadSlavePort.scala 50:27]
+      state <= 3'h0; // @[ScratchpadSlavePort.scala 50:35]
+    end else begin
+      state <= _GEN_2;
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_opcode <= auto_in_a_bits_opcode; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_param <= auto_in_a_bits_param; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_size <= auto_in_a_bits_size; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_source <= auto_in_a_bits_source; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_address <= auto_in_a_bits_address; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_mask <= auto_in_a_bits_mask; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_T_5) begin // @[ScratchpadSlavePort.scala 55:27]
+      acq_data <= auto_in_a_bits_data; // @[ScratchpadSlavePort.scala 55:33]
+    end
+    if (_ready_T_1) begin // @[Reg.scala 17:18]
+      bundleIn_0_d_bits_data_r <= io_dmem_resp_bits_data_raw; // @[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}};
+  state = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  acq_opcode = _RAND_1[2:0];
+  _RAND_2 = {1{`RANDOM}};
+  acq_param = _RAND_2[2:0];
+  _RAND_3 = {1{`RANDOM}};
+  acq_size = _RAND_3[1:0];
+  _RAND_4 = {1{`RANDOM}};
+  acq_source = _RAND_4[7:0];
+  _RAND_5 = {1{`RANDOM}};
+  acq_address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  acq_mask = _RAND_6[7:0];
+  _RAND_7 = {2{`RANDOM}};
+  acq_data = _RAND_7[63:0];
+  _RAND_8 = {2{`RANDOM}};
+  bundleIn_0_d_bits_data_r = _RAND_8[63: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  [2:0]  io_enq_bits_source,
+  input  [31:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  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 [2:0]  io_deq_bits_source,
+  output [31:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_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;
+`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 [2:0] saved_source; // @[Repeater.scala 20:18]
+  reg [31:0] saved_address; // @[Repeater.scala 20:18]
+  reg [7:0] saved_mask; // @[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]
+  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
+  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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  saved_address = _RAND_5[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  saved_mask = _RAND_6[7: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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [7:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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 [2:0] repeater_io_enq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [31:0] repeater_io_enq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_enq_bits_mask; // @[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 [2:0] repeater_io_deq_bits_source; // @[Fragmenter.scala 262:30]
+  wire [31:0] repeater_io_deq_bits_address; // @[Fragmenter.scala 262:30]
+  wire [7:0] repeater_io_deq_bits_mask; // @[Fragmenter.scala 262:30]
+  reg [2:0] acknum; // @[Fragmenter.scala 189:29]
+  reg [2:0] dOrig; // @[Fragmenter.scala 190:24]
+  reg  dToggle; // @[Fragmenter.scala 191:30]
+  wire [2:0] dFragnum = auto_out_d_bits_source[2:0]; // @[Fragmenter.scala 192:41]
+  wire  dFirst = acknum == 3'h0; // @[Fragmenter.scala 193:29]
+  wire  dLast = dFragnum == 3'h0; // @[Fragmenter.scala 194:30]
+  wire [3:0] dsizeOH = 4'h1 << auto_out_d_bits_size; // @[OneHot.scala 64:12]
+  wire [5:0] _dsizeOH1_T_1 = 6'h7 << auto_out_d_bits_size; // @[package.scala 234:77]
+  wire [2:0] dsizeOH1 = ~_dsizeOH1_T_1[2: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[3]; // @[Fragmenter.scala 204:32]
+  wire [5:0] _dFirst_size_T = {dFragnum, 3'h0}; // @[Fragmenter.scala 206:47]
+  wire [5:0] _GEN_7 = {{3'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[4]; // @[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 [2:0] _GEN_9 = {{2'd0}, ack_decrement}; // @[Fragmenter.scala 209:55]
+  wire [2:0] _acknum_T_1 = acknum - _GEN_9; // @[Fragmenter.scala 209:55]
+  wire [2:0] aFrag = repeater_io_deq_bits_size > 3'h3 ? 3'h3 : 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 [9:0] _aFragOH1_T_1 = 10'h7 << aFrag; // @[package.scala 234:77]
+  wire [2:0] aFragOH1 = ~_aFragOH1_T_1[2:0]; // @[package.scala 234:46]
+  wire  aHasData = ~repeater_io_deq_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] gennum; // @[Fragmenter.scala 291:29]
+  wire  aFirst = gennum == 3'h0; // @[Fragmenter.scala 292:29]
+  wire [2:0] _old_gennum1_T_2 = gennum - 3'h1; // @[Fragmenter.scala 293:79]
+  wire [2:0] old_gennum1 = aFirst ? aOrigOH1[5:3] : _old_gennum1_T_2; // @[Fragmenter.scala 293:30]
+  wire [2:0] _new_gennum_T = ~old_gennum1; // @[Fragmenter.scala 294:28]
+  wire [2: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, 3'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 = {{3'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'h7; // @[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 [31:0] _GEN_11 = {{26'd0}, _bundleOut_0_a_bits_address_T_5}; // @[Fragmenter.scala 304:49]
+  wire [3:0] bundleOut_0_a_bits_source_lo = {aToggle,new_gennum}; // @[Cat.scala 31:58]
+  wire [3: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_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)
+  );
+  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: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,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 ? 8'hff : 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 != 3'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_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 <= 3'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[3]; // @[Fragmenter.scala 212:21]
+      end
+    end
+    if (reset) begin // @[Fragmenter.scala 291:29]
+      gennum <= 3'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 == 8'hff) & _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 == 8'hff)) 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[2: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[2: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(
+  input         clock,
+  output        io_requestor_0_req_ready,
+  input         io_requestor_0_req_valid,
+  input  [33:0] io_requestor_0_req_bits_addr,
+  input  [6: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         io_requestor_0_s1_kill,
+  input  [63:0] io_requestor_0_s1_data_data,
+  output        io_requestor_0_s2_nack,
+  output        io_requestor_0_resp_valid,
+  output [6:0]  io_requestor_0_resp_bits_tag,
+  output [63:0] io_requestor_0_resp_bits_data,
+  output        io_requestor_0_resp_bits_replay,
+  output        io_requestor_0_resp_bits_has_data,
+  output [63: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_grant,
+  output        io_requestor_1_req_ready,
+  input         io_requestor_1_req_valid,
+  input  [33:0] io_requestor_1_req_bits_addr,
+  input  [4:0]  io_requestor_1_req_bits_cmd,
+  input  [1:0]  io_requestor_1_req_bits_size,
+  input         io_requestor_1_s1_kill,
+  input  [63:0] io_requestor_1_s1_data_data,
+  input  [7:0]  io_requestor_1_s1_data_mask,
+  output        io_requestor_1_s2_nack,
+  output        io_requestor_1_resp_valid,
+  output [63:0] io_requestor_1_resp_bits_data_raw,
+  input         io_mem_req_ready,
+  output        io_mem_req_valid,
+  output [33:0] io_mem_req_bits_addr,
+  output [6: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_req_bits_no_xcpt,
+  output        io_mem_s1_kill,
+  output [63:0] io_mem_s1_data_data,
+  output [7:0]  io_mem_s1_data_mask,
+  input         io_mem_s2_nack,
+  input         io_mem_resp_valid,
+  input  [6:0]  io_mem_resp_bits_tag,
+  input  [63:0] io_mem_resp_bits_data,
+  input         io_mem_resp_bits_replay,
+  input         io_mem_resp_bits_has_data,
+  input  [63:0] io_mem_resp_bits_data_word_bypass,
+  input  [63:0] io_mem_resp_bits_data_raw,
+  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_grant
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  reg  s1_id; // @[HellaCacheArbiter.scala 19:20]
+  reg  s2_id; // @[HellaCacheArbiter.scala 20:20]
+  wire [7:0] _io_mem_req_bits_tag_T_1 = {io_requestor_0_req_bits_tag,1'h0}; // @[Cat.scala 31:58]
+  wire [7:0] _GEN_1 = io_requestor_0_req_valid ? _io_mem_req_bits_tag_T_1 : 8'h1; // @[HellaCacheArbiter.scala 49:26 33:{29,29}]
+  wire  _T_1 = ~s2_id; // @[HellaCacheArbiter.scala 51:21]
+  wire  tag_hit = ~io_mem_resp_bits_tag[0]; // @[HellaCacheArbiter.scala 59:57]
+  assign io_requestor_0_req_ready = io_mem_req_ready; // @[HellaCacheArbiter.scala 25:31]
+  assign io_requestor_0_s2_nack = io_mem_s2_nack & _T_1; // @[HellaCacheArbiter.scala 66:49]
+  assign io_requestor_0_resp_valid = io_mem_resp_valid & tag_hit; // @[HellaCacheArbiter.scala 60:39]
+  assign io_requestor_0_resp_bits_tag = {{1'd0}, io_mem_resp_bits_tag[6:1]}; // @[HellaCacheArbiter.scala 72:21]
+  assign io_requestor_0_resp_bits_data = io_mem_resp_bits_data; // @[HellaCacheArbiter.scala 71:17]
+  assign io_requestor_0_resp_bits_replay = io_mem_resp_bits_replay; // @[HellaCacheArbiter.scala 71:17]
+  assign io_requestor_0_resp_bits_has_data = io_mem_resp_bits_has_data; // @[HellaCacheArbiter.scala 71:17]
+  assign io_requestor_0_resp_bits_data_word_bypass = io_mem_resp_bits_data_word_bypass; // @[HellaCacheArbiter.scala 71:17]
+  assign io_requestor_0_replay_next = io_mem_replay_next; // @[HellaCacheArbiter.scala 74:35]
+  assign io_requestor_0_s2_xcpt_ma_ld = io_mem_s2_xcpt_ma_ld; // @[HellaCacheArbiter.scala 61:31]
+  assign io_requestor_0_s2_xcpt_ma_st = io_mem_s2_xcpt_ma_st; // @[HellaCacheArbiter.scala 61:31]
+  assign io_requestor_0_s2_xcpt_pf_ld = io_mem_s2_xcpt_pf_ld; // @[HellaCacheArbiter.scala 61:31]
+  assign io_requestor_0_s2_xcpt_pf_st = io_mem_s2_xcpt_pf_st; // @[HellaCacheArbiter.scala 61:31]
+  assign io_requestor_0_s2_xcpt_ae_ld = io_mem_s2_xcpt_ae_ld; // @[HellaCacheArbiter.scala 61:31]
+  assign io_requestor_0_s2_xcpt_ae_st = io_mem_s2_xcpt_ae_st; // @[HellaCacheArbiter.scala 61:31]
+  assign io_requestor_0_ordered = io_mem_ordered; // @[HellaCacheArbiter.scala 64:31]
+  assign io_requestor_0_perf_grant = io_mem_perf_grant; // @[HellaCacheArbiter.scala 65:28]
+  assign io_requestor_1_req_ready = io_requestor_0_req_ready & ~io_requestor_0_req_valid; // @[HellaCacheArbiter.scala 27:64]
+  assign io_requestor_1_s2_nack = io_mem_s2_nack & s2_id; // @[HellaCacheArbiter.scala 66:49]
+  assign io_requestor_1_resp_valid = io_mem_resp_valid & io_mem_resp_bits_tag[0]; // @[HellaCacheArbiter.scala 60:39]
+  assign io_requestor_1_resp_bits_data_raw = io_mem_resp_bits_data_raw; // @[HellaCacheArbiter.scala 71:17]
+  assign io_mem_req_valid = io_requestor_0_req_valid | io_requestor_1_req_valid; // @[HellaCacheArbiter.scala 24:63]
+  assign io_mem_req_bits_addr = io_requestor_0_req_valid ? io_requestor_0_req_bits_addr : io_requestor_1_req_bits_addr; // @[HellaCacheArbiter.scala 32:{25,25} 49:26]
+  assign io_mem_req_bits_tag = _GEN_1[6:0];
+  assign io_mem_req_bits_cmd = io_requestor_0_req_valid ? io_requestor_0_req_bits_cmd : io_requestor_1_req_bits_cmd; // @[HellaCacheArbiter.scala 32:{25,25} 49:26]
+  assign io_mem_req_bits_size = io_requestor_0_req_valid ? io_requestor_0_req_bits_size : io_requestor_1_req_bits_size; // @[HellaCacheArbiter.scala 32:{25,25} 49:26]
+  assign io_mem_req_bits_signed = io_requestor_0_req_valid & io_requestor_0_req_bits_signed; // @[HellaCacheArbiter.scala 32:{25,25} 49:26]
+  assign io_mem_req_bits_dprv = io_requestor_0_req_valid ? 2'h3 : 2'h0; // @[HellaCacheArbiter.scala 32:{25,25} 49:26]
+  assign io_mem_req_bits_no_xcpt = io_requestor_0_req_valid ? 1'h0 : 1'h1; // @[HellaCacheArbiter.scala 32:{25,25} 49:26]
+  assign io_mem_s1_kill = ~s1_id ? io_requestor_0_s1_kill : io_requestor_1_s1_kill; // @[HellaCacheArbiter.scala 37:{24,24} 50:34]
+  assign io_mem_s1_data_data = ~s1_id ? io_requestor_0_s1_data_data : io_requestor_1_s1_data_data; // @[HellaCacheArbiter.scala 38:{24,24} 50:34]
+  assign io_mem_s1_data_mask = ~s1_id ? 8'h0 : io_requestor_1_s1_data_mask; // @[HellaCacheArbiter.scala 38:{24,24} 50:34]
+  always @(posedge clock) begin
+    if (io_requestor_0_req_valid) begin // @[HellaCacheArbiter.scala 49:26]
+      s1_id <= 1'h0; // @[HellaCacheArbiter.scala 34:15]
+    end else begin
+      s1_id <= 1'h1; // @[HellaCacheArbiter.scala 34:15]
+    end
+    s2_id <= s1_id; // @[HellaCacheArbiter.scala 20:20]
+  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_id = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  s2_id = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+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_w,
+  output        io_requestor_0_pmp_0_cfg_r,
+  output [29:0] io_requestor_0_pmp_0_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_1_cfg_r,
+  output [29:0] io_requestor_0_pmp_1_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_2_cfg_r,
+  output [29:0] io_requestor_0_pmp_2_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_3_cfg_r,
+  output [29:0] io_requestor_0_pmp_3_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_4_cfg_r,
+  output [29:0] io_requestor_0_pmp_4_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_5_cfg_r,
+  output [29:0] io_requestor_0_pmp_5_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_6_cfg_r,
+  output [29:0] io_requestor_0_pmp_6_addr,
+  output [31: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_w,
+  output        io_requestor_0_pmp_7_cfg_r,
+  output [29:0] io_requestor_0_pmp_7_addr,
+  output [31:0] io_requestor_0_pmp_7_mask,
+  output        io_requestor_1_status_debug,
+  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 [29:0] io_requestor_1_pmp_0_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_1_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_2_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_3_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_4_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_5_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_6_addr,
+  output [31: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 [29:0] io_requestor_1_pmp_7_addr,
+  output [31:0] io_requestor_1_pmp_7_mask,
+  output [63:0] io_requestor_1_customCSRs_csrs_0_value,
+  input         io_dpath_status_debug,
+  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  [29:0] io_dpath_pmp_0_addr,
+  input  [31: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  [29:0] io_dpath_pmp_1_addr,
+  input  [31: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  [29:0] io_dpath_pmp_2_addr,
+  input  [31: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  [29:0] io_dpath_pmp_3_addr,
+  input  [31: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  [29:0] io_dpath_pmp_4_addr,
+  input  [31: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  [29:0] io_dpath_pmp_5_addr,
+  input  [31: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  [29:0] io_dpath_pmp_6_addr,
+  input  [31: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  [29:0] io_dpath_pmp_7_addr,
+  input  [31:0] io_dpath_pmp_7_mask,
+  output        io_dpath_perf_l2hit,
+  output        io_dpath_perf_pte_miss,
+  output        io_dpath_perf_pte_hit,
+  input  [63: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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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 [27:0] _io_out_s_T_51 = {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'h3}; // @[Cat.scala 31:58]
+  wire [26:0] _io_out_s_T_73 = {_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_93 = {_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_115 = {_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 [27:0] _io_out_s_T_135 = {_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'h23}; // @[Cat.scala 31:58]
+  wire [6:0] _io_out_s_T_145 = io_in[12] ? 7'h7f : 7'h0; // @[Bitwise.scala 74:12]
+  wire [11:0] _io_out_s_T_147 = {_io_out_s_T_145,io_in[6:2]}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_8_bits = {_io_out_s_T_145,io_in[6:2],io_in[11:7],3'h0,io_in[11:7],7'h13}; // @[Cat.scala 31:58]
+  wire  _io_out_s_opc_T_3 = |io_in[11:7]; // @[RVC.scala 77:24]
+  wire [6:0] io_out_s_opc_1 = |io_in[11:7] ? 7'h1b : 7'h1f; // @[RVC.scala 77:20]
+  wire [31:0] io_out_s_9_bits = {_io_out_s_T_145,io_in[6:2],io_in[11:7],3'h0,io_in[11:7],io_out_s_opc_1}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_10_bits = {_io_out_s_T_145,io_in[6:2],5'h0,3'h0,io_in[11:7],7'h13}; // @[Cat.scala 31:58]
+  wire  _io_out_s_opc_T_9 = |_io_out_s_T_147; // @[RVC.scala 90:29]
+  wire [6:0] io_out_s_opc_2 = |_io_out_s_T_147 ? 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_2}; // @[Cat.scala 31:58]
+  wire [6:0] io_out_s_opc_3 = _io_out_s_opc_T_9 ? 7'h13 : 7'h1f; // @[RVC.scala 86:20]
+  wire [2:0] _io_out_s_T_187 = io_in[12] ? 3'h7 : 3'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] io_out_s_res_bits = {_io_out_s_T_187,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_3}; // @[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_208 = {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_208}; // @[RVC.scala 99:23]
+  wire [30:0] _io_out_s_T_217 = _GEN_0 | 31'h40000000; // @[RVC.scala 99:23]
+  wire [31:0] _io_out_s_T_227 = {_io_out_s_T_145,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_4 = io_in[12] ? 7'h3b : 7'h33; // @[RVC.scala 104:22]
+  wire [24:0] _io_out_s_T_234 = {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_4}; // @[Cat.scala 31:58]
+  wire [30:0] _GEN_1 = {{6'd0}, _io_out_s_T_234}; // @[RVC.scala 105:43]
+  wire [30:0] _io_out_s_T_235 = _GEN_1 | io_out_s_sub; // @[RVC.scala 105:43]
+  wire [30:0] _io_out_s_T_238 = io_in[11:10] == 2'h1 ? _io_out_s_T_217 : {{5'd0}, _io_out_s_T_208}; // @[package.scala 32:76]
+  wire [31:0] _io_out_s_T_240 = io_in[11:10] == 2'h2 ? _io_out_s_T_227 : {{1'd0}, _io_out_s_T_238}; // @[package.scala 32:76]
+  wire [31:0] io_out_s_12_bits = io_in[11:10] == 2'h3 ? {{1'd0}, _io_out_s_T_235} : _io_out_s_T_240; // @[package.scala 32:76]
+  wire [9:0] _io_out_s_T_252 = io_in[12] ? 10'h3ff : 10'h0; // @[Bitwise.scala 74:12]
+  wire [20:0] _io_out_s_T_260 = {_io_out_s_T_252,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_13_bits = {_io_out_s_T_260[20],_io_out_s_T_260[10:1],_io_out_s_T_260[11],_io_out_s_T_260[19:12],5'h0
+    ,7'h6f}; // @[Cat.scala 31:58]
+  wire [4:0] _io_out_s_T_306 = io_in[12] ? 5'h1f : 5'h0; // @[Bitwise.scala 74:12]
+  wire [12:0] _io_out_s_T_311 = {_io_out_s_T_306,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_311[12],_io_out_s_T_311[10:5],5'h0,2'h1,io_in[9:7],3'h0,_io_out_s_T_311[4:
+    1],_io_out_s_T_311[11],7'h63}; // @[Cat.scala 31:58]
+  wire [31:0] io_out_s_15_bits = {_io_out_s_T_311[12],_io_out_s_T_311[10:5],5'h0,2'h1,io_in[9:7],3'h1,_io_out_s_T_311[4:
+    1],_io_out_s_T_311[11],7'h63}; // @[Cat.scala 31:58]
+  wire [6:0] io_out_s_load_opc = _io_out_s_opc_T_3 ? 7'h3 : 7'h1f; // @[RVC.scala 113:23]
+  wire [25:0] _io_out_s_T_395 = {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_405 = {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_414 = {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 [28:0] _io_out_s_T_423 = {io_in[4:2],io_in[12],io_in[6:5],3'h0,5'h2,3'h3,io_in[11:7],io_out_s_load_opc}; // @[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_opc_T_3 ? 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_opc_T_3 ? 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_430 = {io_in[9:7],io_in[12:10],3'h0}; // @[Cat.scala 31:58]
+  wire [28:0] _io_out_s_T_437 = {_io_out_s_T_430[8:5],io_in[6:2],5'h2,3'h3,_io_out_s_T_430[4:0],7'h27}; // @[Cat.scala 31:58]
+  wire [7:0] _io_out_s_T_443 = {io_in[8:7],io_in[12:9],2'h0}; // @[Cat.scala 31:58]
+  wire [27:0] _io_out_s_T_450 = {_io_out_s_T_443[7:5],io_in[6:2],5'h2,3'h2,_io_out_s_T_443[4:0],7'h23}; // @[Cat.scala 31:58]
+  wire [28:0] _io_out_s_T_463 = {_io_out_s_T_430[8:5],io_in[6:2],5'h2,3'h3,_io_out_s_T_430[4:0],7'h23}; // @[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 = {{4'd0}, _io_out_s_T_51}; // @[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_73}; // @[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_93}; // @[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_115}; // @[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 = {{4'd0}, _io_out_s_T_135}; // @[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 ? io_in[11:7] : _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_395}; // @[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_405}; // @[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_414}; // @[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 = {{3'd0}, _io_out_s_T_423}; // @[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_437}; // @[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_450}; // @[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 = {{3'd0}, _io_out_s_T_463}; // @[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  [33: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 [33:0] io_pc,
+  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 [63:0] _RAND_1;
+  reg [31:0] _RAND_2;
+  reg [31:0] _RAND_3;
+  reg [31:0] _RAND_4;
+`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 [33: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]
+  wire  pcWordBits = io_imem_bits_pc[1]; // @[package.scala 154:13]
+  wire [1:0] _GEN_58 = {{1'd0}, pcWordBits}; // @[IBuf.scala 41:88]
+  wire [1:0] nIC = 2'h2 - _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 [33:0] _buf_pc_T_1 = io_imem_bits_pc & 34'h3fffffffc; // @[IBuf.scala 59:35]
+  wire [2:0] _buf_pc_T_2 = {nICReady, 1'h0}; // @[IBuf.scala 59:80]
+  wire [33:0] _GEN_67 = {{31'd0}, _buf_pc_T_2}; // @[IBuf.scala 59:68]
+  wire [33:0] _buf_pc_T_4 = io_imem_bits_pc + _GEN_67; // @[IBuf.scala 59:68]
+  wire [33:0] _buf_pc_T_5 = _buf_pc_T_4 & 34'h3; // @[IBuf.scala 59:109]
+  wire [33: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]
+  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_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
+  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 = {2{`RANDOM}};
+  buf__pc = _RAND_1[33: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];
+`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_hartid,
+  input  [11:0] io_rw_addr,
+  input  [2:0]  io_rw_cmd,
+  output [63:0] io_rw_rdata,
+  input  [63: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 [33:0] io_evec,
+  input         io_exception,
+  input         io_retire,
+  input  [63:0] io_cause,
+  input  [33:0] io_pc,
+  input  [33:0] io_tval,
+  input         io_gva,
+  output [63:0] io_time,
+  output        io_interrupt,
+  output [63:0] io_interrupt_cause,
+  output        io_bp_0_control_action,
+  output [1:0]  io_bp_0_control_tmatch,
+  output        io_bp_0_control_x,
+  output        io_bp_0_control_w,
+  output        io_bp_0_control_r,
+  output [32:0] io_bp_0_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 [29:0] io_pmp_0_addr,
+  output [31: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 [29:0] io_pmp_1_addr,
+  output [31: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 [29:0] io_pmp_2_addr,
+  output [31: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 [29:0] io_pmp_3_addr,
+  output [31: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 [29:0] io_pmp_4_addr,
+  output [31: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 [29:0] io_pmp_5_addr,
+  output [31: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 [29:0] io_pmp_6_addr,
+  output [31: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 [29:0] io_pmp_7_addr,
+  output [31:0] io_pmp_7_mask,
+  output        io_inhibit_cycle,
+  input  [31:0] io_inst_0,
+  output        io_trace_0_valid,
+  output [33:0] io_trace_0_iaddr,
+  output [31:0] io_trace_0_insn,
+  output        io_trace_0_exception,
+  output [63: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 [63:0] _RAND_8;
+  reg [63: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 [63: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 [63:0] _RAND_66;
+  reg [63:0] _RAND_67;
+  reg [63:0] _RAND_68;
+  reg [63:0] _RAND_69;
+  reg [63:0] _RAND_70;
+  reg [31:0] _RAND_71;
+  reg [31:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [63:0] _RAND_75;
+  reg [31:0] _RAND_76;
+  reg [63:0] _RAND_77;
+  reg [63:0] _RAND_78;
+  reg [63:0] _RAND_79;
+  reg [31:0] _RAND_80;
+`endif // RANDOMIZE_REG_INIT
+  reg  reg_mstatus_gva; // @[CSR.scala 369:24]
+  reg  reg_mstatus_spp; // @[CSR.scala 369:24]
+  reg  reg_mstatus_mpie; // @[CSR.scala 369:24]
+  reg  reg_mstatus_mie; // @[CSR.scala 369:24]
+  reg  reg_dcsr_ebreakm; // @[CSR.scala 377:21]
+  reg [2:0] reg_dcsr_cause; // @[CSR.scala 377:21]
+  reg  reg_dcsr_step; // @[CSR.scala 377:21]
+  reg  reg_debug; // @[CSR.scala 449:22]
+  reg [33:0] reg_dpc; // @[CSR.scala 450:20]
+  reg [63:0] reg_dscratch; // @[CSR.scala 451:25]
+  reg  reg_singleStepped; // @[CSR.scala 453:30]
+  reg  reg_bp_0_control_dmode; // @[CSR.scala 459:19]
+  reg  reg_bp_0_control_action; // @[CSR.scala 459:19]
+  reg [1:0] reg_bp_0_control_tmatch; // @[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 [32:0] reg_bp_0_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 [29: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 [29: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 [29: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 [29: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 [29: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 [29: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 [29: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 [29:0] reg_pmp_7_addr; // @[CSR.scala 460:20]
+  reg [63:0] reg_mie; // @[CSR.scala 462:20]
+  reg [33:0] reg_mepc; // @[CSR.scala 472:21]
+  reg [63:0] reg_mcause; // @[CSR.scala 473:27]
+  reg [33:0] reg_mtval; // @[CSR.scala 474:22]
+  reg [63:0] reg_mscratch; // @[CSR.scala 476:25]
+  reg [31:0] reg_mtvec; // @[CSR.scala 479:27]
+  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_36 = {{5'd0}, io_retire}; // @[Counters.scala 46:33]
+  wire [6:0] nextSmall = small_ + _GEN_36; // @[Counters.scala 46:33]
+  wire  _T_18 = ~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_18 ? _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_37 = {{5'd0}, x86}; // @[Counters.scala 46:33]
+  wire [6:0] nextSmall_1 = small_1 + _GEN_37; // @[Counters.scala 46:33]
+  wire  _T_19 = ~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_19 ? _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 [15:0] _read_mip_T = {4'h0,io_interrupts_meip,1'h0,2'h0,io_interrupts_mtip,1'h0,2'h0,io_interrupts_msip,1'h0,2'h0
+    }; // @[CSR.scala 567:22]
+  wire [15:0] read_mip = _read_mip_T & 16'h888; // @[CSR.scala 567:29]
+  wire [63:0] _GEN_42 = {{48'd0}, read_mip}; // @[CSR.scala 571:56]
+  wire [63:0] pending_interrupts = _GEN_42 & reg_mie; // @[CSR.scala 571:56]
+  wire [14:0] d_interrupts = {io_interrupts_debug, 14'h0}; // @[CSR.scala 572:42]
+  wire [63:0] _m_interrupts_T_3 = ~pending_interrupts; // @[CSR.scala 577:83]
+  wire [63:0] _m_interrupts_T_5 = ~_m_interrupts_T_3; // @[CSR.scala 577:81]
+  wire [63:0] m_interrupts = reg_mstatus_mie ? _m_interrupts_T_5 : 64'h0; // @[CSR.scala 577: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  anyInterrupt = _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 [3:0] _which_T_95 = m_interrupts[0] ? 4'h0 : 4'h4; // @[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 [63:0] _GEN_43 = {{60'd0}, whichInterrupt}; // @[CSR.scala 582:67]
+  wire  _io_interrupt_T = ~io_singleStep; // @[CSR.scala 583:36]
+  wire [30:0] pmp_mask_base = {reg_pmp_0_addr,reg_pmp_0_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_1 = pmp_mask_base + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_2 = ~_pmp_mask_T_1; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_3 = pmp_mask_base & _pmp_mask_T_2; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_4 = {_pmp_mask_T_3,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_1 = {reg_pmp_1_addr,reg_pmp_1_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_6 = pmp_mask_base_1 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_7 = ~_pmp_mask_T_6; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_8 = pmp_mask_base_1 & _pmp_mask_T_7; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_9 = {_pmp_mask_T_8,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_2 = {reg_pmp_2_addr,reg_pmp_2_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_11 = pmp_mask_base_2 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_12 = ~_pmp_mask_T_11; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_13 = pmp_mask_base_2 & _pmp_mask_T_12; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_14 = {_pmp_mask_T_13,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_3 = {reg_pmp_3_addr,reg_pmp_3_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_16 = pmp_mask_base_3 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_17 = ~_pmp_mask_T_16; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_18 = pmp_mask_base_3 & _pmp_mask_T_17; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_19 = {_pmp_mask_T_18,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_4 = {reg_pmp_4_addr,reg_pmp_4_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_21 = pmp_mask_base_4 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_22 = ~_pmp_mask_T_21; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_23 = pmp_mask_base_4 & _pmp_mask_T_22; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_24 = {_pmp_mask_T_23,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_5 = {reg_pmp_5_addr,reg_pmp_5_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_26 = pmp_mask_base_5 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_27 = ~_pmp_mask_T_26; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_28 = pmp_mask_base_5 & _pmp_mask_T_27; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_29 = {_pmp_mask_T_28,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_6 = {reg_pmp_6_addr,reg_pmp_6_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_31 = pmp_mask_base_6 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_32 = ~_pmp_mask_T_31; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_33 = pmp_mask_base_6 & _pmp_mask_T_32; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_34 = {_pmp_mask_T_33,2'h3}; // @[Cat.scala 31:58]
+  wire [30:0] pmp_mask_base_7 = {reg_pmp_7_addr,reg_pmp_7_cfg_a[0]}; // @[Cat.scala 31:58]
+  wire [30:0] _pmp_mask_T_36 = pmp_mask_base_7 + 31'h1; // @[PMP.scala 59:23]
+  wire [30:0] _pmp_mask_T_37 = ~_pmp_mask_T_36; // @[PMP.scala 59:16]
+  wire [30:0] _pmp_mask_T_38 = pmp_mask_base_7 & _pmp_mask_T_37; // @[PMP.scala 59:14]
+  wire [32:0] _pmp_mask_T_39 = {_pmp_mask_T_38,2'h3}; // @[Cat.scala 31:58]
+  reg [63: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 [63:0] read_mstatus = _read_mstatus_T[63:0]; // @[CSR.scala 606:40]
+  wire [7:0] _read_mtvec_T_1 = reg_mtvec[0] ? 8'hfe : 8'h2; // @[CSR.scala 1563:39]
+  wire [31:0] _read_mtvec_T_3 = {{24'd0}, _read_mtvec_T_1}; // @[package.scala 165:41]
+  wire [31:0] _read_mtvec_T_4 = ~_read_mtvec_T_3; // @[package.scala 165:37]
+  wire [31:0] _read_mtvec_T_5 = reg_mtvec & _read_mtvec_T_4; // @[package.scala 165:35]
+  wire [63:0] read_mtvec = {32'h0,_read_mtvec_T_5}; // @[Cat.scala 31:58]
+  wire [6:0] lo_4 = {4'h8,reg_bp_0_control_x,reg_bp_0_control_w,reg_bp_0_control_r}; // @[CSR.scala 612:48]
+  wire [63:0] _T_20 = {4'h2,reg_bp_0_control_dmode,46'h40000000000,reg_bp_0_control_action,1'h0,2'h0,
+    reg_bp_0_control_tmatch,lo_4}; // @[CSR.scala 612:48]
+  wire [30:0] _T_23 = reg_bp_0_address[32] ? 31'h7fffffff : 31'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] _T_24 = {_T_23,reg_bp_0_address}; // @[Cat.scala 31:58]
+  wire [33:0] _T_26 = ~reg_mepc; // @[CSR.scala 1562:28]
+  wire [1:0] _T_28 = reg_misa[2] ? 2'h1 : 2'h3; // @[CSR.scala 1562:36]
+  wire [33:0] _GEN_582 = {{32'd0}, _T_28}; // @[CSR.scala 1562:31]
+  wire [33:0] _T_29 = _T_26 | _GEN_582; // @[CSR.scala 1562:31]
+  wire [33:0] _T_30 = ~_T_29; // @[CSR.scala 1562:26]
+  wire [29:0] _T_33 = _T_30[33] ? 30'h3fffffff : 30'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] _T_34 = {_T_33,_T_30}; // @[Cat.scala 31:58]
+  wire [29:0] _T_37 = reg_mtval[33] ? 30'h3fffffff : 30'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] _T_38 = {_T_37,reg_mtval}; // @[Cat.scala 31:58]
+  wire [31:0] _T_39 = {4'h4,12'h0,reg_dcsr_ebreakm,4'h0,2'h0,reg_dcsr_cause,1'h0,2'h0,reg_dcsr_step,2'h3}; // @[CSR.scala 627:27]
+  wire [33:0] _T_40 = ~reg_dpc; // @[CSR.scala 1562:28]
+  wire [33:0] _T_43 = _T_40 | _GEN_582; // @[CSR.scala 1562:31]
+  wire [33:0] _T_44 = ~_T_43; // @[CSR.scala 1562:26]
+  wire [29:0] _T_47 = _T_44[33] ? 30'h3fffffff : 30'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] _T_48 = {_T_47,_T_44}; // @[Cat.scala 31:58]
+  wire [7:0] _T_49 = {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_51 = {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 [7:0] _T_53 = {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_55 = {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_lo_6 = {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_49}; // @[Cat.scala 31:58]
+  wire [31:0] lo_15 = {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_51,
+    lo_lo_6}; // @[Cat.scala 31:58]
+  wire [15:0] hi_lo_6 = {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_53}; // @[Cat.scala 31:58]
+  wire [63:0] _T_57 = {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_55,
+    hi_lo_6,lo_15}; // @[Cat.scala 31:58]
+  reg [63: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'h413; // @[Decode.scala 14:65]
+  wire [12:0] _decoded_T_2 = addr & 13'h453; // @[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'h865; // @[Decode.scala 14:65]
+  wire  decoded_4 = _decoded_T_8 == 13'h1; // @[Decode.scala 14:121]
+  wire  decoded_5 = _decoded_T_8 == 13'h0; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_12 = addr & 13'h825; // @[Decode.scala 14:65]
+  wire  decoded_6 = _decoded_T_12 == 13'h5; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_14 = addr & 13'h44; // @[Decode.scala 14:65]
+  wire  decoded_7 = _decoded_T_14 == 13'h44; // @[Decode.scala 14:121]
+  wire  decoded_8 = _decoded_T_8 == 13'h4; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_18 = addr & 13'h47; // @[Decode.scala 14:65]
+  wire  decoded_9 = _decoded_T_18 == 13'h40; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_20 = addr & 13'h443; // @[Decode.scala 14:65]
+  wire  decoded_10 = _decoded_T_20 == 13'h41; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_22 = addr & 13'h823; // @[Decode.scala 14:65]
+  wire  decoded_11 = _decoded_T_22 == 13'h3; // @[Decode.scala 14:121]
+  wire  decoded_12 = _decoded_T_22 == 13'h2; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_26 = addr & 13'h483; // @[Decode.scala 14:65]
+  wire  decoded_13 = _decoded_T_26 == 13'h400; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_28 = addr & 13'hc13; // @[Decode.scala 14:65]
+  wire  decoded_14 = _decoded_T_28 == 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'h81e; // @[Decode.scala 14:65]
+  wire  decoded_18 = _decoded_T_36 == 13'h800; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_38 = addr & 13'hdf; // @[Decode.scala 14:65]
+  wire  decoded_19 = _decoded_T_38 == 13'h2; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_156 = addr & 13'h492; // @[Decode.scala 14:65]
+  wire  decoded_78 = _decoded_T_156 == 13'h80; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_160 = addr & 13'h49f; // @[Decode.scala 14:65]
+  wire  decoded_80 = _decoded_T_160 == 13'h90; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_162 = addr & 13'h48f; // @[Decode.scala 14:65]
+  wire  decoded_81 = _decoded_T_162 == 13'h81; // @[Decode.scala 14:121]
+  wire  decoded_82 = _decoded_T_160 == 13'h92; // @[Decode.scala 14:121]
+  wire  decoded_83 = _decoded_T_162 == 13'h83; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_168 = addr & 13'h8f; // @[Decode.scala 14:65]
+  wire  decoded_84 = _decoded_T_168 == 13'h84; // @[Decode.scala 14:121]
+  wire  decoded_85 = _decoded_T_168 == 13'h85; // @[Decode.scala 14:121]
+  wire  decoded_86 = _decoded_T_168 == 13'h86; // @[Decode.scala 14:121]
+  wire  decoded_87 = _decoded_T_168 == 13'h87; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_192 = addr & 13'hc20; // @[Decode.scala 14:65]
+  wire  decoded_96 = _decoded_T_192 == 13'h400; // @[Decode.scala 14:121]
+  wire [12:0] _decoded_T_194 = addr & 13'h485; // @[Decode.scala 14:65]
+  wire  decoded_97 = _decoded_T_194 == 13'h400; // @[Decode.scala 14:121]
+  wire  decoded_99 = _decoded_T_26 == 13'h403; // @[Decode.scala 14:121]
+  wire [63:0] _wdata_T_1 = io_rw_cmd[1] ? io_rw_rdata : 64'h0; // @[CSR.scala 1540:9]
+  wire [63:0] _wdata_T_2 = _wdata_T_1 | io_rw_wdata; // @[CSR.scala 1540:34]
+  wire [63:0] _wdata_T_5 = &io_rw_cmd[1:0] ? io_rw_wdata : 64'h0; // @[CSR.scala 1540:49]
+  wire [63:0] _wdata_T_6 = ~_wdata_T_5; // @[CSR.scala 1540:45]
+  wire [63:0] wdata = _wdata_T_2 & _wdata_T_6; // @[CSR.scala 1540:43]
+  wire  system_insn = io_rw_cmd == 3'h4; // @[CSR.scala 813:31]
+  wire [31:0] _T_167 = {io_rw_addr, 20'h0}; // @[CSR.scala 829:28]
+  wire [31:0] _T_168 = _T_167 & 32'h20100000; // @[Decode.scala 14:65]
+  wire  _T_169 = _T_168 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _T_171 = _T_167 & 32'h10100000; // @[Decode.scala 14:65]
+  wire  _T_172 = _T_171 == 32'h100000; // @[Decode.scala 14:121]
+  wire [31:0] _T_174 = _T_167 & 32'h20400000; // @[Decode.scala 14:65]
+  wire  _T_175 = _T_174 == 32'h20000000; // @[Decode.scala 14:121]
+  wire [31:0] _T_177 = _T_167 & 32'h20200000; // @[Decode.scala 14:65]
+  wire  _T_178 = _T_177 == 32'h20000000; // @[Decode.scala 14:121]
+  wire [31:0] _T_180 = _T_167 & 32'h30000000; // @[Decode.scala 14:65]
+  wire  _T_181 = _T_180 == 32'h10000000; // @[Decode.scala 14:121]
+  wire  insn_call = system_insn & _T_169; // @[CSR.scala 829:95]
+  wire  insn_break = system_insn & _T_172; // @[CSR.scala 829:95]
+  wire  insn_ret = system_insn & _T_175; // @[CSR.scala 829:95]
+  wire  insn_cease = system_insn & _T_178; // @[CSR.scala 829:95]
+  wire  insn_wfi = system_insn & _T_181; // @[CSR.scala 829:95]
+  wire [11:0] addr_1 = io_decode_0_inst[31:20]; // @[CSR.scala 832:27]
+  wire [31:0] _T_198 = io_decode_0_inst & 32'h20400000; // @[Decode.scala 14:65]
+  wire  is_ret = _T_198 == 32'h20000000; // @[Decode.scala 14:121]
+  wire  _csr_exists_T_15 = addr_1 == 12'h7b1; // @[CSR.scala 834:93]
+  wire  _csr_exists_T_114 = 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_129 = _csr_exists_T_114 | 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'h324 | addr_1 == 12'hb04 | addr_1 == 12'h325 | addr_1 == 12'hb05
+     | addr_1 == 12'h326 | addr_1 == 12'hb06 | addr_1 == 12'h327 | addr_1 == 12'hb07 | addr_1 == 12'h328; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_144 = _csr_exists_T_129 | addr_1 == 12'hb08 | addr_1 == 12'h329 | addr_1 == 12'hb09 | addr_1 == 12'h32a
+     | addr_1 == 12'hb0a | addr_1 == 12'h32b | addr_1 == 12'hb0b | addr_1 == 12'h32c | addr_1 == 12'hb0c | addr_1 == 12'h32d
+     | addr_1 == 12'hb0d | addr_1 == 12'h32e | addr_1 == 12'hb0e | addr_1 == 12'h32f | addr_1 == 12'hb0f; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_159 = _csr_exists_T_144 | addr_1 == 12'h330 | addr_1 == 12'hb10 | addr_1 == 12'h331 | addr_1 == 12'hb11
+     | addr_1 == 12'h332 | addr_1 == 12'hb12 | addr_1 == 12'h333 | addr_1 == 12'hb13 | addr_1 == 12'h334 | addr_1 == 12'hb14
+     | addr_1 == 12'h335 | addr_1 == 12'hb15 | addr_1 == 12'h336 | addr_1 == 12'hb16 | addr_1 == 12'h337; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_174 = _csr_exists_T_159 | addr_1 == 12'hb17 | addr_1 == 12'h338 | addr_1 == 12'hb18 | addr_1 == 12'h339
+     | addr_1 == 12'hb19 | addr_1 == 12'h33a | addr_1 == 12'hb1a | addr_1 == 12'h33b | addr_1 == 12'hb1b | addr_1 == 12'h33c
+     | addr_1 == 12'hb1c | addr_1 == 12'h33d | addr_1 == 12'hb1d | addr_1 == 12'h33e | addr_1 == 12'hb1e; // @[CSR.scala 834:109]
+  wire  _csr_exists_T_189 = _csr_exists_T_174 | addr_1 == 12'h33f | addr_1 == 12'hb1f | addr_1 == 12'h3a0 | addr_1 == 12'h3a2
+     | 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 | addr_1 == 12'h3b8 | addr_1 == 12'h3b9 | addr_1 == 12'h3ba; // @[CSR.scala 834:109]
+  wire  csr_exists = _csr_exists_T_189 | 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_1 = ~csr_exists; // @[CSR.scala 858:7]
+  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_16 = ~reg_debug; // @[CSR.scala 861:45]
+  wire  _io_decode_0_read_illegal_T_17 = _io_decode_0_read_illegal_T_13 & ~reg_debug; // @[CSR.scala 861:42]
+  wire  _io_decode_0_read_illegal_T_18 = _io_decode_0_read_illegal_T_1 | _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 [63:0] _cause_T_5 = insn_break ? 64'h3 : io_cause; // @[CSR.scala 894:14]
+  wire [63:0] cause = insn_call ? 64'hb : _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[63] & cause_lsbs == 8'he; // @[CSR.scala 896:39]
+  wire  _causeIsDebugTrigger_T_1 = ~cause[63]; // @[CSR.scala 897:29]
+  wire  causeIsDebugTrigger = ~cause[63] & _causeIsDebugInt_T_1; // @[CSR.scala 897:44]
+  wire [3:0] _causeIsDebugBreak_T_3 = {reg_dcsr_ebreakm,1'h0,2'h0}; // @[Cat.scala 31:58]
+  wire [3:0] _causeIsDebugBreak_T_4 = {{3'd0}, _causeIsDebugBreak_T_3[3]}; // @[CSR.scala 898:134]
+  wire  causeIsDebugBreak = _causeIsDebugTrigger_T_1 & insn_break & _causeIsDebugBreak_T_4[0]; // @[CSR.scala 898:56]
+  wire  trapToDebug = reg_singleStepped | causeIsDebugInt | causeIsDebugTrigger | causeIsDebugBreak | reg_debug; // @[CSR.scala 899:123]
+  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 [7:0] notDebugTVec_interruptOffset = {cause[5:0], 2'h0}; // @[CSR.scala 912:59]
+  wire [63:0] notDebugTVec_interruptVec = {read_mtvec[63:8],notDebugTVec_interruptOffset}; // @[Cat.scala 31:58]
+  wire  notDebugTVec_doVector = read_mtvec[0] & cause[63] & cause_lsbs[7:6] == 2'h0; // @[CSR.scala 914:55]
+  wire [63:0] _notDebugTVec_T_1 = {read_mtvec[63:2], 2'h0}; // @[CSR.scala 915:56]
+  wire [63:0] notDebugTVec = notDebugTVec_doVector ? notDebugTVec_interruptVec : _notDebugTVec_T_1; // @[CSR.scala 915:8]
+  wire [63:0] tvec = trapToDebug ? {{52'd0}, debugTVec} : notDebugTVec; // @[CSR.scala 928:17]
+  wire  _io_eret_T = insn_call | insn_break; // @[CSR.scala 933:24]
+  wire  exception = _io_eret_T | io_exception; // @[CSR.scala 953:43]
+  wire [1:0] _T_209 = insn_ret + insn_call; // @[Bitwise.scala 48:55]
+  wire [1:0] _T_211 = insn_break + io_exception; // @[Bitwise.scala 48:55]
+  wire [2:0] _T_213 = _T_209 + _T_211; // @[Bitwise.scala 48:55]
+  wire  _T_217 = ~reset; // @[CSR.scala 954:9]
+  wire  _GEN_48 = insn_wfi & _io_interrupt_T & _io_decode_0_read_illegal_T_16 | reg_wfi; // @[CSR.scala 538:50 956:{51,61}]
+  wire  _GEN_50 = io_retire | exception | reg_singleStepped; // @[CSR.scala 453:30 960:{36,56}]
+  wire [33:0] _epc_T = ~io_pc; // @[CSR.scala 1561:28]
+  wire [33:0] _epc_T_1 = _epc_T | 34'h1; // @[CSR.scala 1561:31]
+  wire [33: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_53 = _io_decode_0_read_illegal_T_16 | reg_debug; // @[CSR.scala 969:25 971:19 449:22]
+  wire [33:0] _GEN_54 = _io_decode_0_read_illegal_T_16 ? epc : reg_dpc; // @[CSR.scala 969:25 972:17 450:20]
+  wire [1:0] _GEN_75 = {{1'd0}, reg_mstatus_spp}; // @[CSR.scala 1007:23 369:24 997:35]
+  wire  _GEN_147 = trapToDebug ? _GEN_53 : reg_debug; // @[CSR.scala 449:22 968:24]
+  wire [33:0] _GEN_148 = trapToDebug ? _GEN_54 : reg_dpc; // @[CSR.scala 450:20 968:24]
+  wire [1:0] _GEN_172 = trapToDebug ? {{1'd0}, reg_mstatus_spp} : _GEN_75; // @[CSR.scala 369:24 968:24]
+  wire [33:0] _GEN_176 = trapToDebug ? reg_mepc : epc; // @[CSR.scala 472:21 968:24]
+  wire [63:0] _GEN_177 = trapToDebug ? reg_mcause : cause; // @[CSR.scala 968:24 473:27]
+  wire [33:0] _GEN_178 = trapToDebug ? reg_mtval : io_tval; // @[CSR.scala 474:22 968:24]
+  wire  _GEN_180 = trapToDebug ? reg_mstatus_mpie : reg_mstatus_mie; // @[CSR.scala 369:24 968:24]
+  wire  _GEN_182 = trapToDebug & reg_mstatus_mie; // @[CSR.scala 369:24 968:24]
+  wire  _GEN_184 = exception ? _GEN_147 : reg_debug; // @[CSR.scala 967:20 449:22]
+  wire [33:0] _GEN_185 = exception ? _GEN_148 : reg_dpc; // @[CSR.scala 450:20 967:20]
+  wire [1:0] _GEN_209 = exception ? _GEN_172 : {{1'd0}, reg_mstatus_spp}; // @[CSR.scala 967:20 369:24]
+  wire [33:0] _GEN_213 = exception ? _GEN_176 : reg_mepc; // @[CSR.scala 967:20 472:21]
+  wire [63:0] _GEN_214 = exception ? _GEN_177 : reg_mcause; // @[CSR.scala 967:20 473:27]
+  wire [33:0] _GEN_215 = exception ? _GEN_178 : reg_mtval; // @[CSR.scala 967:20 474:22]
+  wire  _GEN_217 = exception ? _GEN_180 : reg_mstatus_mpie; // @[CSR.scala 967:20 369:24]
+  wire  _GEN_219 = exception ? _GEN_182 : reg_mstatus_mie; // @[CSR.scala 967:20 369:24]
+  wire [33:0] _GEN_241 = io_rw_addr[10] & io_rw_addr[7] ? _T_44 : _T_30; // @[CSR.scala 1064:70 1068:15]
+  wire  _GEN_243 = io_rw_addr[10] & io_rw_addr[7] ? _GEN_219 : reg_mstatus_mpie; // @[CSR.scala 1064:70]
+  wire  _GEN_244 = io_rw_addr[10] & io_rw_addr[7] ? _GEN_217 : 1'h1; // @[CSR.scala 1064:70]
+  wire [63:0] _GEN_268 = insn_ret ? {{30'd0}, _GEN_241} : tvec; // @[CSR.scala 1045:19 929:11]
+  wire  _GEN_275 = insn_ret ? _GEN_243 : _GEN_219; // @[CSR.scala 1045:19]
+  wire  _GEN_276 = insn_ret ? _GEN_244 : _GEN_217; // @[CSR.scala 1045:19]
+  reg  io_status_cease_r; // @[Reg.scala 28:20]
+  wire  _GEN_281 = insn_cease | io_status_cease_r; // @[Reg.scala 29:18 28:20 29:22]
+  wire [63:0] _io_rw_rdata_T_1 = decoded_1 ? _T_20 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_2 = decoded_2 ? _T_24 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_4 = decoded_4 ? reg_misa : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_5 = decoded_5 ? read_mstatus : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_6 = decoded_6 ? read_mtvec : 64'h0; // @[Mux.scala 27:73]
+  wire [15:0] _io_rw_rdata_T_7 = decoded_7 ? read_mip : 16'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_8 = decoded_8 ? reg_mie : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_9 = decoded_9 ? reg_mscratch : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_10 = decoded_10 ? _T_34 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_11 = decoded_11 ? _T_38 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_12 = decoded_12 ? reg_mcause : 64'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_39 : 32'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_15 = decoded_15 ? _T_48 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_16 = decoded_16 ? reg_dscratch : 64'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 [63:0] _io_rw_rdata_T_78 = decoded_78 ? _T_57 : 64'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_80 = decoded_80 ? reg_pmp_0_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_81 = decoded_81 ? reg_pmp_1_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_82 = decoded_82 ? reg_pmp_2_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_83 = decoded_83 ? reg_pmp_3_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_84 = decoded_84 ? reg_pmp_4_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_85 = decoded_85 ? reg_pmp_5_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_86 = decoded_86 ? reg_pmp_6_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [29:0] _io_rw_rdata_T_87 = decoded_87 ? reg_pmp_7_addr : 30'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_96 = decoded_96 ? reg_custom_0 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_97 = decoded_97 ? 64'h1 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_99 = decoded_99 ? 64'h20181004 : 64'h0; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_101 = _io_rw_rdata_T_1 | _io_rw_rdata_T_2; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_103 = _io_rw_rdata_T_101 | _io_rw_rdata_T_4; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_104 = _io_rw_rdata_T_103 | _io_rw_rdata_T_5; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_105 = _io_rw_rdata_T_104 | _io_rw_rdata_T_6; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_588 = {{48'd0}, _io_rw_rdata_T_7}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_106 = _io_rw_rdata_T_105 | _GEN_588; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_107 = _io_rw_rdata_T_106 | _io_rw_rdata_T_8; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_108 = _io_rw_rdata_T_107 | _io_rw_rdata_T_9; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_109 = _io_rw_rdata_T_108 | _io_rw_rdata_T_10; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_110 = _io_rw_rdata_T_109 | _io_rw_rdata_T_11; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_111 = _io_rw_rdata_T_110 | _io_rw_rdata_T_12; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_589 = {{63'd0}, _io_rw_rdata_T_13}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_112 = _io_rw_rdata_T_111 | _GEN_589; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_590 = {{32'd0}, _io_rw_rdata_T_14}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_113 = _io_rw_rdata_T_112 | _GEN_590; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_114 = _io_rw_rdata_T_113 | _io_rw_rdata_T_15; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_115 = _io_rw_rdata_T_114 | _io_rw_rdata_T_16; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_591 = {{61'd0}, _io_rw_rdata_T_17}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_116 = _io_rw_rdata_T_115 | _GEN_591; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_117 = _io_rw_rdata_T_116 | _io_rw_rdata_T_18; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_118 = _io_rw_rdata_T_117 | _io_rw_rdata_T_19; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_177 = _io_rw_rdata_T_118 | _io_rw_rdata_T_78; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_592 = {{34'd0}, _io_rw_rdata_T_80}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_179 = _io_rw_rdata_T_177 | _GEN_592; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_593 = {{34'd0}, _io_rw_rdata_T_81}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_180 = _io_rw_rdata_T_179 | _GEN_593; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_594 = {{34'd0}, _io_rw_rdata_T_82}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_181 = _io_rw_rdata_T_180 | _GEN_594; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_595 = {{34'd0}, _io_rw_rdata_T_83}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_182 = _io_rw_rdata_T_181 | _GEN_595; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_596 = {{34'd0}, _io_rw_rdata_T_84}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_183 = _io_rw_rdata_T_182 | _GEN_596; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_597 = {{34'd0}, _io_rw_rdata_T_85}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_184 = _io_rw_rdata_T_183 | _GEN_597; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_598 = {{34'd0}, _io_rw_rdata_T_86}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_185 = _io_rw_rdata_T_184 | _GEN_598; // @[Mux.scala 27:73]
+  wire [63:0] _GEN_599 = {{34'd0}, _io_rw_rdata_T_87}; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_186 = _io_rw_rdata_T_185 | _GEN_599; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_195 = _io_rw_rdata_T_186 | _io_rw_rdata_T_96; // @[Mux.scala 27:73]
+  wire [63:0] _io_rw_rdata_T_196 = _io_rw_rdata_T_195 | _io_rw_rdata_T_97; // @[Mux.scala 27:73]
+  wire  _T_361 = io_rw_cmd == 3'h5; // @[package.scala 15:47]
+  wire  _T_362 = io_rw_cmd == 3'h6; // @[package.scala 15:47]
+  wire  _T_363 = io_rw_cmd == 3'h7; // @[package.scala 15:47]
+  wire  csr_wen = _T_362 | _T_363 | _T_361; // @[package.scala 72:59]
+  wire [104:0] _new_mstatus_WIRE = {{41'd0}, wdata};
+  wire  new_mstatus_mie = _new_mstatus_WIRE[3]; // @[CSR.scala 1153:47]
+  wire  new_mstatus_mpie = _new_mstatus_WIRE[7]; // @[CSR.scala 1153:47]
+  wire  f = wdata[5]; // @[CSR.scala 1183:20]
+  wire [63: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 [63:0] _GEN_600 = {{60'd0}, _reg_misa_T_2}; // @[CSR.scala 1187:32]
+  wire [63:0] _reg_misa_T_3 = _reg_misa_T | _GEN_600; // @[CSR.scala 1187:32]
+  wire [63:0] _reg_misa_T_4 = ~_reg_misa_T_3; // @[CSR.scala 1187:23]
+  wire [63:0] _reg_misa_T_5 = _reg_misa_T_4 & 64'h1005; // @[CSR.scala 1187:55]
+  wire [63:0] _reg_misa_T_7 = reg_misa & 64'hffffffffffffeffa; // @[CSR.scala 1187:73]
+  wire [63:0] _reg_misa_T_8 = _reg_misa_T_5 | _reg_misa_T_7; // @[CSR.scala 1187:62]
+  wire [63:0] _reg_mie_T = wdata & 64'h888; // @[CSR.scala 1205:59]
+  wire [63:0] _reg_mepc_T_1 = _reg_misa_T | 64'h1; // @[CSR.scala 1561:31]
+  wire [63:0] _reg_mepc_T_2 = ~_reg_mepc_T_1; // @[CSR.scala 1561:26]
+  wire [63:0] _GEN_290 = decoded_10 ? _reg_mepc_T_2 : {{30'd0}, _GEN_213}; // @[CSR.scala 1206:{40,51}]
+  wire [63:0] _GEN_292 = decoded_6 ? wdata : {{32'd0}, reg_mtvec}; // @[CSR.scala 1209:{40,52} 479:27]
+  wire [63:0] _reg_mcause_T = wdata & 64'h800000000000000f; // @[CSR.scala 1210:62]
+  wire [63:0] _GEN_294 = decoded_11 ? wdata : {{30'd0}, _GEN_215}; // @[CSR.scala 1211:{40,52}]
+  wire [63:0] _reg_mcountinhibit_T_1 = wdata & 64'hfffffffffffffffd; // @[CSR.scala 1230:76]
+  wire [63:0] _GEN_295 = decoded_17 ? _reg_mcountinhibit_T_1 : {{61'd0}, reg_mcountinhibit}; // @[CSR.scala 1230:{47,67} 547:34]
+  wire [63:0] _GEN_296 = decoded_18 ? wdata : {{57'd0}, _GEN_2}; // @[CSR.scala 1558:31 Counters.scala 65:11]
+  wire [63:0] _GEN_298 = decoded_19 ? wdata : {{57'd0}, _GEN_0}; // @[CSR.scala 1558:31 Counters.scala 65:11]
+  wire  new_dcsr_step = wdata[2]; // @[CSR.scala 1246:43]
+  wire  new_dcsr_ebreakm = wdata[15]; // @[CSR.scala 1246:43]
+  wire [63:0] _GEN_302 = decoded_15 ? _reg_mepc_T_2 : {{30'd0}, _GEN_185}; // @[CSR.scala 1254:{42,52}]
+  wire [63:0] _GEN_305 = decoded_2 ? wdata : {{31'd0}, reg_bp_0_address}; // @[CSR.scala 1377:{44,57} 459:19]
+  wire [63:0] _newBPC_T_2 = io_rw_cmd[1] ? _T_20 : 64'h0; // @[CSR.scala 1540:9]
+  wire [63:0] _newBPC_T_3 = _newBPC_T_2 | io_rw_wdata; // @[CSR.scala 1540:34]
+  wire [63:0] _newBPC_T_8 = _newBPC_T_3 & _wdata_T_6; // @[CSR.scala 1540:43]
+  wire  newBPC_action = _newBPC_T_8[12]; // @[CSR.scala 1395:96]
+  wire  newBPC_dmode = _newBPC_T_8[59]; // @[CSR.scala 1395:96]
+  wire  dMode = newBPC_dmode & reg_debug; // @[CSR.scala 1396:38]
+  wire  _GEN_306 = dMode & newBPC_action; // @[CSR.scala 1398:{120,51,71}]
+  wire [63:0] _GEN_322 = ~reg_bp_0_control_dmode | reg_debug ? _GEN_305 : {{31'd0}, reg_bp_0_address}; // @[CSR.scala 1376:70 459:19]
+  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_1583 = ~reg_pmp_1_cfg_a[1] & reg_pmp_1_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1585 = reg_pmp_0_cfg_l | reg_pmp_1_cfg_l & _T_1583; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_377 = decoded_80 & ~_T_1585 ? wdata : {{34'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_1593 = ~reg_pmp_2_cfg_a[1] & reg_pmp_2_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1595 = reg_pmp_1_cfg_l | reg_pmp_2_cfg_l & _T_1593; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_384 = decoded_81 & ~_T_1595 ? wdata : {{34'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_1603 = ~reg_pmp_3_cfg_a[1] & reg_pmp_3_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1605 = reg_pmp_2_cfg_l | reg_pmp_3_cfg_l & _T_1603; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_391 = decoded_82 & ~_T_1605 ? wdata : {{34'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_1613 = ~reg_pmp_4_cfg_a[1] & reg_pmp_4_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1615 = reg_pmp_3_cfg_l | reg_pmp_4_cfg_l & _T_1613; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_398 = decoded_83 & ~_T_1615 ? wdata : {{34'd0}, reg_pmp_3_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_4_r = wdata[32]; // @[CSR.scala 1409:46]
+  wire  newCfg_4_w = wdata[33]; // @[CSR.scala 1409:46]
+  wire  newCfg_4_x = wdata[34]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_4_a = wdata[36:35]; // @[CSR.scala 1409:46]
+  wire  newCfg_4_l = wdata[39]; // @[CSR.scala 1409:46]
+  wire  _T_1623 = ~reg_pmp_5_cfg_a[1] & reg_pmp_5_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1625 = reg_pmp_4_cfg_l | reg_pmp_5_cfg_l & _T_1623; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_405 = decoded_84 & ~_T_1625 ? wdata : {{34'd0}, reg_pmp_4_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_5_r = wdata[40]; // @[CSR.scala 1409:46]
+  wire  newCfg_5_w = wdata[41]; // @[CSR.scala 1409:46]
+  wire  newCfg_5_x = wdata[42]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_5_a = wdata[44:43]; // @[CSR.scala 1409:46]
+  wire  newCfg_5_l = wdata[47]; // @[CSR.scala 1409:46]
+  wire  _T_1633 = ~reg_pmp_6_cfg_a[1] & reg_pmp_6_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1635 = reg_pmp_5_cfg_l | reg_pmp_6_cfg_l & _T_1633; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_412 = decoded_85 & ~_T_1635 ? wdata : {{34'd0}, reg_pmp_5_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_6_r = wdata[48]; // @[CSR.scala 1409:46]
+  wire  newCfg_6_w = wdata[49]; // @[CSR.scala 1409:46]
+  wire  newCfg_6_x = wdata[50]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_6_a = wdata[52:51]; // @[CSR.scala 1409:46]
+  wire  newCfg_6_l = wdata[55]; // @[CSR.scala 1409:46]
+  wire  _T_1643 = ~reg_pmp_7_cfg_a[1] & reg_pmp_7_cfg_a[0]; // @[PMP.scala 48:20]
+  wire  _T_1645 = reg_pmp_6_cfg_l | reg_pmp_7_cfg_l & _T_1643; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_419 = decoded_86 & ~_T_1645 ? wdata : {{34'd0}, reg_pmp_6_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire  newCfg_7_r = wdata[56]; // @[CSR.scala 1409:46]
+  wire  newCfg_7_w = wdata[57]; // @[CSR.scala 1409:46]
+  wire  newCfg_7_x = wdata[58]; // @[CSR.scala 1409:46]
+  wire [1:0] newCfg_7_a = wdata[60:59]; // @[CSR.scala 1409:46]
+  wire  newCfg_7_l = wdata[63]; // @[CSR.scala 1409:46]
+  wire  _T_1655 = reg_pmp_7_cfg_l | reg_pmp_7_cfg_l & _T_1643; // @[PMP.scala 50:44]
+  wire [63:0] _GEN_426 = decoded_87 & ~_T_1655 ? wdata : {{34'd0}, reg_pmp_7_addr}; // @[CSR.scala 1417:71 1418:18 460:20]
+  wire [63:0] _reg_custom_0_T = wdata & 64'h8; // @[CSR.scala 1424:23]
+  wire [63:0] _reg_custom_0_T_2 = reg_custom_0 & 64'hfffffffffffffff7; // @[CSR.scala 1424:38]
+  wire [63:0] _reg_custom_0_T_3 = _reg_custom_0_T | _reg_custom_0_T_2; // @[CSR.scala 1424:31]
+  wire [63:0] _GEN_440 = csr_wen ? _GEN_290 : {{30'd0}, _GEN_213}; // @[CSR.scala 1148:18]
+  wire [63:0] _GEN_442 = csr_wen ? _GEN_292 : {{32'd0}, reg_mtvec}; // @[CSR.scala 1148:18 479:27]
+  wire [63:0] _GEN_444 = csr_wen ? _GEN_294 : {{30'd0}, _GEN_215}; // @[CSR.scala 1148:18]
+  wire [63:0] _GEN_445 = csr_wen ? _GEN_295 : {{61'd0}, reg_mcountinhibit}; // @[CSR.scala 1148:18 547:34]
+  wire [63:0] _GEN_446 = csr_wen ? _GEN_296 : {{57'd0}, _GEN_2}; // @[CSR.scala 1148:18]
+  wire [63:0] _GEN_448 = csr_wen ? _GEN_298 : {{57'd0}, _GEN_0}; // @[CSR.scala 1148:18]
+  wire [63:0] _GEN_452 = csr_wen ? _GEN_302 : {{30'd0}, _GEN_185}; // @[CSR.scala 1148:18]
+  wire [63:0] _GEN_455 = csr_wen ? _GEN_322 : {{31'd0}, reg_bp_0_address}; // @[CSR.scala 1148:18 459:19]
+  wire [63:0] _GEN_493 = csr_wen ? _GEN_377 : {{34'd0}, reg_pmp_0_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_500 = csr_wen ? _GEN_384 : {{34'd0}, reg_pmp_1_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_507 = csr_wen ? _GEN_391 : {{34'd0}, reg_pmp_2_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_514 = csr_wen ? _GEN_398 : {{34'd0}, reg_pmp_3_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_521 = csr_wen ? _GEN_405 : {{34'd0}, reg_pmp_4_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_528 = csr_wen ? _GEN_412 : {{34'd0}, reg_pmp_5_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_535 = csr_wen ? _GEN_419 : {{34'd0}, reg_pmp_6_addr}; // @[CSR.scala 1148:18 460:20]
+  wire [63:0] _GEN_542 = csr_wen ? _GEN_426 : {{34'd0}, reg_pmp_7_addr}; // @[CSR.scala 1148:18 460:20]
+  assign io_rw_rdata = _io_rw_rdata_T_196 | _io_rw_rdata_T_99; // @[Mux.scala 27:73]
+  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 = is_ret & addr_1[10] & addr_1[7] & _io_decode_0_read_illegal_T_16; // @[CSR.scala 872:37]
+  assign io_csr_stall = reg_wfi | io_status_cease; // @[CSR.scala 1091:27]
+  assign io_eret = insn_call | insn_break | insn_ret; // @[CSR.scala 933:38]
+  assign io_singleStep = reg_dcsr_step & _io_decode_0_read_illegal_T_16; // @[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[31:0]; // @[CSR.scala 938:17]
+  assign io_status_dprv = 2'h3; // @[CSR.scala 941:24]
+  assign io_status_dv = 1'h0; // @[CSR.scala 942:33]
+  assign io_status_prv = 2'h3; // @[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'h0; // @[CSR.scala 940:17]
+  assign io_status_uxl = 2'h0; // @[CSR.scala 939:17]
+  assign io_status_sd_rv32 = 1'h0; // @[CSR.scala 943:35]
+  assign io_status_zero1 = 8'h0; // @[CSR.scala 935:13]
+  assign io_status_tsr = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_tw = 1'h0; // @[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 = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_xs = 2'h0; // @[CSR.scala 935:13]
+  assign io_status_fs = 2'h0; // @[CSR.scala 935:13]
+  assign io_status_mpp = 2'h3; // @[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 = 1'h0; // @[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 = 1'h0; // @[CSR.scala 935:13]
+  assign io_status_uie = 1'h0; // @[CSR.scala 935:13]
+  assign io_evec = _GEN_268[33:0];
+  assign io_time = {large_1,small_1}; // @[Cat.scala 31:58]
+  assign io_interrupt = (anyInterrupt & ~io_singleStep | reg_singleStepped) & ~(reg_debug | io_status_cease); // @[CSR.scala 583:73]
+  assign io_interrupt_cause = 64'h8000000000000000 + _GEN_43; // @[CSR.scala 582:67]
+  assign io_bp_0_control_action = reg_bp_0_control_action; // @[CSR.scala 585:9]
+  assign io_bp_0_control_tmatch = reg_bp_0_control_tmatch; // @[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_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[31: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[31: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[31: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[31: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[31: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[31: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[31: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[31: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 = _io_eret_T | 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_gva <= 1'h0; // @[CSR.scala 369:24]
+    end else if (exception) begin // @[CSR.scala 967:20]
+      if (!(trapToDebug)) begin // @[CSR.scala 968:24]
+        reg_mstatus_gva <= io_gva;
+      end
+    end
+    if (reset) begin // @[CSR.scala 369:24]
+      reg_mstatus_spp <= 1'h0; // @[CSR.scala 369:24]
+    end else begin
+      reg_mstatus_spp <= _GEN_209[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_276;
+      end
+    end else begin
+      reg_mstatus_mpie <= _GEN_276;
+    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_275;
+      end
+    end else begin
+      reg_mstatus_mie <= _GEN_275;
+    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_cause <= 3'h0; // @[CSR.scala 377:21]
+    end else if (exception) begin // @[CSR.scala 967:20]
+      if (trapToDebug) begin // @[CSR.scala 968:24]
+        if (_io_decode_0_read_illegal_T_16) 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 <= new_dcsr_step; // @[CSR.scala 1247:23]
+      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[10] & io_rw_addr[7]) begin // @[CSR.scala 1064:70]
+        reg_debug <= 1'h0; // @[CSR.scala 1067:17]
+      end else begin
+        reg_debug <= _GEN_184;
+      end
+    end else begin
+      reg_debug <= _GEN_184;
+    end
+    reg_dpc <= _GEN_452[33:0];
+    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
+    if (_io_interrupt_T) begin // @[CSR.scala 961:25]
+      reg_singleStepped <= 1'h0; // @[CSR.scala 961:45]
+    end else begin
+      reg_singleStepped <= _GEN_50;
+    end
+    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_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_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_306;
+        end
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (~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 (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_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_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_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
+    reg_bp_0_address <= _GEN_455[32:0];
+    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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_493[29: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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_500[29: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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_507[29: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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_78 & ~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_514[29: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_78 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_l <= newCfg_4_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_78 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_a <= newCfg_4_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_x <= newCfg_4_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_w <= newCfg_4_w & newCfg_4_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_4_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_4_cfg_r <= newCfg_4_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_4_addr <= _GEN_521[29: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_78 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_l <= newCfg_5_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_78 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_a <= newCfg_5_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_x <= newCfg_5_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_w <= newCfg_5_w & newCfg_5_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_5_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_5_cfg_r <= newCfg_5_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_5_addr <= _GEN_528[29: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_78 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_l <= newCfg_6_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_78 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_a <= newCfg_6_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_x <= newCfg_6_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_w <= newCfg_6_w & newCfg_6_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_6_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_6_cfg_r <= newCfg_6_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_6_addr <= _GEN_535[29: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_78 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_l <= newCfg_7_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_78 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_a <= newCfg_7_a; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_x <= newCfg_7_x; // @[CSR.scala 1410:17]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_w <= newCfg_7_w & newCfg_7_r; // @[CSR.scala 1412:19]
+      end
+    end
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_78 & ~reg_pmp_7_cfg_l) begin // @[CSR.scala 1408:76]
+        reg_pmp_7_cfg_r <= newCfg_7_r; // @[CSR.scala 1410:17]
+      end
+    end
+    reg_pmp_7_addr <= _GEN_542[29:0];
+    if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_8) begin // @[CSR.scala 1205:40]
+        reg_mie <= _reg_mie_T; // @[CSR.scala 1205:50]
+      end
+    end
+    reg_mepc <= _GEN_440[33:0];
+    if (reset) begin // @[CSR.scala 473:27]
+      reg_mcause <= 64'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_214;
+      end
+    end else begin
+      reg_mcause <= _GEN_214;
+    end
+    reg_mtval <= _GEN_444[33:0];
+    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 <= 32'h0; // @[CSR.scala 479:27]
+    end else begin
+      reg_mtvec <= _GEN_442[31:0];
+    end
+    if (reset) begin // @[CSR.scala 547:34]
+      reg_mcountinhibit <= 3'h0; // @[CSR.scala 547:34]
+    end else begin
+      reg_mcountinhibit <= _GEN_445[2:0];
+    end
+    if (reset) begin // @[Counters.scala 45:37]
+      small_ <= 6'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_ <= _GEN_448[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_19) begin // @[CSR.scala 1558:31]
+        large_ <= wdata[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 <= 64'h8000000000801105; // @[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 <= 64'h8; // @[CSR.scala 750:43]
+    end else if (csr_wen) begin // @[CSR.scala 1148:18]
+      if (decoded_96) 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_281;
+    end
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(_T_213 <= 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_213 <= 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_217) 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_217 & ~(~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_48;
+    end
+    if (reset) begin // @[Counters.scala 45:37]
+      small_1 <= 6'h0; // @[Counters.scala 45:37]
+    end else begin
+      small_1 <= _GEN_446[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_18) begin // @[CSR.scala 1558:31]
+        large_1 <= wdata[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_gva = _RAND_0[0:0];
+  _RAND_1 = {1{`RANDOM}};
+  reg_mstatus_spp = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  reg_mstatus_mpie = _RAND_2[0:0];
+  _RAND_3 = {1{`RANDOM}};
+  reg_mstatus_mie = _RAND_3[0:0];
+  _RAND_4 = {1{`RANDOM}};
+  reg_dcsr_ebreakm = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  reg_dcsr_cause = _RAND_5[2:0];
+  _RAND_6 = {1{`RANDOM}};
+  reg_dcsr_step = _RAND_6[0:0];
+  _RAND_7 = {1{`RANDOM}};
+  reg_debug = _RAND_7[0:0];
+  _RAND_8 = {2{`RANDOM}};
+  reg_dpc = _RAND_8[33:0];
+  _RAND_9 = {2{`RANDOM}};
+  reg_dscratch = _RAND_9[63:0];
+  _RAND_10 = {1{`RANDOM}};
+  reg_singleStepped = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  reg_bp_0_control_dmode = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  reg_bp_0_control_action = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  reg_bp_0_control_tmatch = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  reg_bp_0_control_x = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  reg_bp_0_control_w = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  reg_bp_0_control_r = _RAND_16[0:0];
+  _RAND_17 = {2{`RANDOM}};
+  reg_bp_0_address = _RAND_17[32:0];
+  _RAND_18 = {1{`RANDOM}};
+  reg_pmp_0_cfg_l = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  reg_pmp_0_cfg_a = _RAND_19[1:0];
+  _RAND_20 = {1{`RANDOM}};
+  reg_pmp_0_cfg_x = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  reg_pmp_0_cfg_w = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  reg_pmp_0_cfg_r = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  reg_pmp_0_addr = _RAND_23[29:0];
+  _RAND_24 = {1{`RANDOM}};
+  reg_pmp_1_cfg_l = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  reg_pmp_1_cfg_a = _RAND_25[1:0];
+  _RAND_26 = {1{`RANDOM}};
+  reg_pmp_1_cfg_x = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  reg_pmp_1_cfg_w = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  reg_pmp_1_cfg_r = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  reg_pmp_1_addr = _RAND_29[29:0];
+  _RAND_30 = {1{`RANDOM}};
+  reg_pmp_2_cfg_l = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  reg_pmp_2_cfg_a = _RAND_31[1:0];
+  _RAND_32 = {1{`RANDOM}};
+  reg_pmp_2_cfg_x = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  reg_pmp_2_cfg_w = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  reg_pmp_2_cfg_r = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  reg_pmp_2_addr = _RAND_35[29:0];
+  _RAND_36 = {1{`RANDOM}};
+  reg_pmp_3_cfg_l = _RAND_36[0:0];
+  _RAND_37 = {1{`RANDOM}};
+  reg_pmp_3_cfg_a = _RAND_37[1:0];
+  _RAND_38 = {1{`RANDOM}};
+  reg_pmp_3_cfg_x = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  reg_pmp_3_cfg_w = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  reg_pmp_3_cfg_r = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  reg_pmp_3_addr = _RAND_41[29:0];
+  _RAND_42 = {1{`RANDOM}};
+  reg_pmp_4_cfg_l = _RAND_42[0:0];
+  _RAND_43 = {1{`RANDOM}};
+  reg_pmp_4_cfg_a = _RAND_43[1:0];
+  _RAND_44 = {1{`RANDOM}};
+  reg_pmp_4_cfg_x = _RAND_44[0:0];
+  _RAND_45 = {1{`RANDOM}};
+  reg_pmp_4_cfg_w = _RAND_45[0:0];
+  _RAND_46 = {1{`RANDOM}};
+  reg_pmp_4_cfg_r = _RAND_46[0:0];
+  _RAND_47 = {1{`RANDOM}};
+  reg_pmp_4_addr = _RAND_47[29:0];
+  _RAND_48 = {1{`RANDOM}};
+  reg_pmp_5_cfg_l = _RAND_48[0:0];
+  _RAND_49 = {1{`RANDOM}};
+  reg_pmp_5_cfg_a = _RAND_49[1:0];
+  _RAND_50 = {1{`RANDOM}};
+  reg_pmp_5_cfg_x = _RAND_50[0:0];
+  _RAND_51 = {1{`RANDOM}};
+  reg_pmp_5_cfg_w = _RAND_51[0:0];
+  _RAND_52 = {1{`RANDOM}};
+  reg_pmp_5_cfg_r = _RAND_52[0:0];
+  _RAND_53 = {1{`RANDOM}};
+  reg_pmp_5_addr = _RAND_53[29:0];
+  _RAND_54 = {1{`RANDOM}};
+  reg_pmp_6_cfg_l = _RAND_54[0:0];
+  _RAND_55 = {1{`RANDOM}};
+  reg_pmp_6_cfg_a = _RAND_55[1:0];
+  _RAND_56 = {1{`RANDOM}};
+  reg_pmp_6_cfg_x = _RAND_56[0:0];
+  _RAND_57 = {1{`RANDOM}};
+  reg_pmp_6_cfg_w = _RAND_57[0:0];
+  _RAND_58 = {1{`RANDOM}};
+  reg_pmp_6_cfg_r = _RAND_58[0:0];
+  _RAND_59 = {1{`RANDOM}};
+  reg_pmp_6_addr = _RAND_59[29:0];
+  _RAND_60 = {1{`RANDOM}};
+  reg_pmp_7_cfg_l = _RAND_60[0:0];
+  _RAND_61 = {1{`RANDOM}};
+  reg_pmp_7_cfg_a = _RAND_61[1:0];
+  _RAND_62 = {1{`RANDOM}};
+  reg_pmp_7_cfg_x = _RAND_62[0:0];
+  _RAND_63 = {1{`RANDOM}};
+  reg_pmp_7_cfg_w = _RAND_63[0:0];
+  _RAND_64 = {1{`RANDOM}};
+  reg_pmp_7_cfg_r = _RAND_64[0:0];
+  _RAND_65 = {1{`RANDOM}};
+  reg_pmp_7_addr = _RAND_65[29:0];
+  _RAND_66 = {2{`RANDOM}};
+  reg_mie = _RAND_66[63:0];
+  _RAND_67 = {2{`RANDOM}};
+  reg_mepc = _RAND_67[33:0];
+  _RAND_68 = {2{`RANDOM}};
+  reg_mcause = _RAND_68[63:0];
+  _RAND_69 = {2{`RANDOM}};
+  reg_mtval = _RAND_69[33:0];
+  _RAND_70 = {2{`RANDOM}};
+  reg_mscratch = _RAND_70[63:0];
+  _RAND_71 = {1{`RANDOM}};
+  reg_mtvec = _RAND_71[31:0];
+  _RAND_72 = {1{`RANDOM}};
+  reg_wfi = _RAND_72[0:0];
+  _RAND_73 = {1{`RANDOM}};
+  reg_mcountinhibit = _RAND_73[2:0];
+  _RAND_74 = {1{`RANDOM}};
+  small_ = _RAND_74[5:0];
+  _RAND_75 = {2{`RANDOM}};
+  large_ = _RAND_75[57:0];
+  _RAND_76 = {1{`RANDOM}};
+  small_1 = _RAND_76[5:0];
+  _RAND_77 = {2{`RANDOM}};
+  large_1 = _RAND_77[57:0];
+  _RAND_78 = {2{`RANDOM}};
+  reg_misa = _RAND_78[63:0];
+  _RAND_79 = {2{`RANDOM}};
+  reg_custom_0 = _RAND_79[63:0];
+  _RAND_80 = {1{`RANDOM}};
+  io_status_cease_r = _RAND_80[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         io_bp_0_control_action,
+  input  [1:0]  io_bp_0_control_tmatch,
+  input         io_bp_0_control_x,
+  input         io_bp_0_control_w,
+  input         io_bp_0_control_r,
+  input  [32:0] io_bp_0_address,
+  input  [32:0] io_pc,
+  input  [32: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  en = ~io_status_debug; // @[Breakpoint.scala 31:35]
+  wire  _r_T_4 = io_ea >= io_bp_0_address ^ io_bp_0_control_tmatch[0]; // @[Breakpoint.scala 66:20]
+  wire [32: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 [32:0] _GEN_11 = {{29'd0}, _r_T_13}; // @[Breakpoint.scala 63:9]
+  wire [32:0] _r_T_14 = _r_T_5 | _GEN_11; // @[Breakpoint.scala 63:9]
+  wire [32:0] _r_T_15 = ~io_bp_0_address; // @[Breakpoint.scala 63:24]
+  wire [32:0] _r_T_24 = _r_T_15 | _GEN_11; // @[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 [32:0] _x_T_5 = ~io_pc; // @[Breakpoint.scala 63:6]
+  wire [32:0] _x_T_14 = _x_T_5 | _GEN_11; // @[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  _io_xcpt_ld_T = ~io_bp_0_control_action; // @[Breakpoint.scala 119:51]
+  assign io_xcpt_if = x & _io_xcpt_ld_T; // @[Breakpoint.scala 121:{27,40} 97:14]
+  assign io_xcpt_ld = r & ~io_bp_0_control_action; // @[Breakpoint.scala 119:{27,40} 98:14]
+  assign io_xcpt_st = w & _io_xcpt_ld_T; // @[Breakpoint.scala 120:{27,40} 99:14]
+  assign io_debug_if = x & io_bp_0_control_action; // @[Breakpoint.scala 100:15 121:{27,73}]
+  assign io_debug_ld = r & io_bp_0_control_action; // @[Breakpoint.scala 101:15 119:{27,73}]
+  assign io_debug_st = w & io_bp_0_control_action; // @[Breakpoint.scala 102:15 120:{27,73}]
+endmodule
+module ALU(
+  input         io_dw,
+  input  [3:0]  io_fn,
+  input  [63:0] io_in2,
+  input  [63:0] io_in1,
+  output [63:0] io_out,
+  output [63:0] io_adder_out,
+  output        io_cmp_out
+);
+  wire [63:0] _in2_inv_T_1 = ~io_in2; // @[ALU.scala 61:35]
+  wire [63:0] in2_inv = io_fn[3] ? _in2_inv_T_1 : io_in2; // @[ALU.scala 61:20]
+  wire [63:0] in1_xor_in2 = io_in1 ^ in2_inv; // @[ALU.scala 62:28]
+  wire [63:0] _io_adder_out_T_1 = io_in1 + in2_inv; // @[ALU.scala 63:26]
+  wire [63:0] _GEN_1 = {{63'd0}, io_fn[3]}; // @[ALU.scala 63:36]
+  wire  _slt_T_7 = io_fn[1] ? io_in2[63] : io_in1[63]; // @[ALU.scala 68:8]
+  wire  slt = io_in1[63] == io_in2[63] ? io_adder_out[63] : _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 == 64'h0 : slt; // @[ALU.scala 69:41]
+  wire  _T_2 = io_fn[3] & io_in1[31]; // @[ALU.scala 76:46]
+  wire [31:0] _T_4 = _T_2 ? 32'hffffffff : 32'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] _T_7 = io_dw ? io_in1[63:32] : _T_4; // @[ALU.scala 77:24]
+  wire  _T_10 = io_in2[5] & io_dw; // @[ALU.scala 78:33]
+  wire [5:0] shamt = {_T_10,io_in2[4:0]}; // @[Cat.scala 31:58]
+  wire [63:0] shin_r = {_T_7,io_in1[31:0]}; // @[Cat.scala 31:58]
+  wire  _shin_T_2 = io_fn == 4'h5 | io_fn == 4'hb; // @[ALU.scala 81:35]
+  wire [63:0] _GEN_2 = {{32'd0}, shin_r[63:32]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_6 = _GEN_2 & 64'hffffffff; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_8 = {shin_r[31:0], 32'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shin_T_10 = _shin_T_8 & 64'hffffffff00000000; // @[Bitwise.scala 105:80]
+  wire [63:0] _shin_T_11 = _shin_T_6 | _shin_T_10; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_3 = {{16'd0}, _shin_T_11[63:16]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_16 = _GEN_3 & 64'hffff0000ffff; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_18 = {_shin_T_11[47:0], 16'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shin_T_20 = _shin_T_18 & 64'hffff0000ffff0000; // @[Bitwise.scala 105:80]
+  wire [63:0] _shin_T_21 = _shin_T_16 | _shin_T_20; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_4 = {{8'd0}, _shin_T_21[63:8]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_26 = _GEN_4 & 64'hff00ff00ff00ff; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_28 = {_shin_T_21[55:0], 8'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shin_T_30 = _shin_T_28 & 64'hff00ff00ff00ff00; // @[Bitwise.scala 105:80]
+  wire [63:0] _shin_T_31 = _shin_T_26 | _shin_T_30; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_5 = {{4'd0}, _shin_T_31[63:4]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_36 = _GEN_5 & 64'hf0f0f0f0f0f0f0f; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_38 = {_shin_T_31[59:0], 4'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shin_T_40 = _shin_T_38 & 64'hf0f0f0f0f0f0f0f0; // @[Bitwise.scala 105:80]
+  wire [63:0] _shin_T_41 = _shin_T_36 | _shin_T_40; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_6 = {{2'd0}, _shin_T_41[63:2]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_46 = _GEN_6 & 64'h3333333333333333; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_48 = {_shin_T_41[61:0], 2'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shin_T_50 = _shin_T_48 & 64'hcccccccccccccccc; // @[Bitwise.scala 105:80]
+  wire [63:0] _shin_T_51 = _shin_T_46 | _shin_T_50; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_7 = {{1'd0}, _shin_T_51[63:1]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_56 = _GEN_7 & 64'h5555555555555555; // @[Bitwise.scala 105:31]
+  wire [63:0] _shin_T_58 = {_shin_T_51[62:0], 1'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shin_T_60 = _shin_T_58 & 64'haaaaaaaaaaaaaaaa; // @[Bitwise.scala 105:80]
+  wire [63:0] _shin_T_61 = _shin_T_56 | _shin_T_60; // @[Bitwise.scala 105:39]
+  wire [63:0] shin = io_fn == 4'h5 | io_fn == 4'hb ? shin_r : _shin_T_61; // @[ALU.scala 81:17]
+  wire  _shout_r_T_2 = io_fn[3] & shin[63]; // @[ALU.scala 82:35]
+  wire [64:0] _shout_r_T_4 = {_shout_r_T_2,shin}; // @[ALU.scala 82:57]
+  wire [64:0] _shout_r_T_5 = $signed(_shout_r_T_4) >>> shamt; // @[ALU.scala 82:64]
+  wire [63:0] shout_r = _shout_r_T_5[63:0]; // @[ALU.scala 82:73]
+  wire [63:0] _GEN_8 = {{32'd0}, shout_r[63:32]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_3 = _GEN_8 & 64'hffffffff; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_5 = {shout_r[31:0], 32'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shout_l_T_7 = _shout_l_T_5 & 64'hffffffff00000000; // @[Bitwise.scala 105:80]
+  wire [63:0] _shout_l_T_8 = _shout_l_T_3 | _shout_l_T_7; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_9 = {{16'd0}, _shout_l_T_8[63:16]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_13 = _GEN_9 & 64'hffff0000ffff; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_15 = {_shout_l_T_8[47:0], 16'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shout_l_T_17 = _shout_l_T_15 & 64'hffff0000ffff0000; // @[Bitwise.scala 105:80]
+  wire [63:0] _shout_l_T_18 = _shout_l_T_13 | _shout_l_T_17; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_10 = {{8'd0}, _shout_l_T_18[63:8]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_23 = _GEN_10 & 64'hff00ff00ff00ff; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_25 = {_shout_l_T_18[55:0], 8'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shout_l_T_27 = _shout_l_T_25 & 64'hff00ff00ff00ff00; // @[Bitwise.scala 105:80]
+  wire [63:0] _shout_l_T_28 = _shout_l_T_23 | _shout_l_T_27; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_11 = {{4'd0}, _shout_l_T_28[63:4]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_33 = _GEN_11 & 64'hf0f0f0f0f0f0f0f; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_35 = {_shout_l_T_28[59:0], 4'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shout_l_T_37 = _shout_l_T_35 & 64'hf0f0f0f0f0f0f0f0; // @[Bitwise.scala 105:80]
+  wire [63:0] _shout_l_T_38 = _shout_l_T_33 | _shout_l_T_37; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_12 = {{2'd0}, _shout_l_T_38[63:2]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_43 = _GEN_12 & 64'h3333333333333333; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_45 = {_shout_l_T_38[61:0], 2'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shout_l_T_47 = _shout_l_T_45 & 64'hcccccccccccccccc; // @[Bitwise.scala 105:80]
+  wire [63:0] _shout_l_T_48 = _shout_l_T_43 | _shout_l_T_47; // @[Bitwise.scala 105:39]
+  wire [63:0] _GEN_13 = {{1'd0}, _shout_l_T_48[63:1]}; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_53 = _GEN_13 & 64'h5555555555555555; // @[Bitwise.scala 105:31]
+  wire [63:0] _shout_l_T_55 = {_shout_l_T_48[62:0], 1'h0}; // @[Bitwise.scala 105:70]
+  wire [63:0] _shout_l_T_57 = _shout_l_T_55 & 64'haaaaaaaaaaaaaaaa; // @[Bitwise.scala 105:80]
+  wire [63:0] shout_l = _shout_l_T_53 | _shout_l_T_57; // @[Bitwise.scala 105:39]
+  wire [63:0] _shout_T_3 = _shin_T_2 ? shout_r : 64'h0; // @[ALU.scala 84:18]
+  wire [63:0] _shout_T_5 = io_fn == 4'h1 ? shout_l : 64'h0; // @[ALU.scala 85:18]
+  wire [63: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 [63:0] _logic_T_3 = io_fn == 4'h4 | io_fn == 4'h6 ? in1_xor_in2 : 64'h0; // @[ALU.scala 88:18]
+  wire [63:0] _logic_T_7 = io_in1 & io_in2; // @[ALU.scala 89:63]
+  wire [63:0] _logic_T_8 = _logic_T_1 | io_fn == 4'h7 ? _logic_T_7 : 64'h0; // @[ALU.scala 89:18]
+  wire [63: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 [63:0] _GEN_14 = {{63'd0}, _shift_logic_T_1}; // @[ALU.scala 90:43]
+  wire [63:0] _shift_logic_T_2 = _GEN_14 | logic_; // @[ALU.scala 90:43]
+  wire [63:0] shift_logic = _shift_logic_T_2 | shout; // @[ALU.scala 90:51]
+  wire [63:0] out = io_fn == 4'h0 | io_fn == 4'ha ? io_adder_out : shift_logic; // @[ALU.scala 91:16]
+  wire [31:0] _io_out_T_2 = out[31] ? 32'hffffffff : 32'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] _io_out_T_4 = {_io_out_T_2,out[31:0]}; // @[Cat.scala 31:58]
+  assign io_out = ~io_dw ? _io_out_T_4 : out; // @[ALU.scala 93:10 96:{28,37}]
+  assign io_adder_out = _io_adder_out_T_1 + _GEN_1; // @[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         io_req_bits_dw,
+  input  [63:0] io_req_bits_in1,
+  input  [63:0] io_req_bits_in2,
+  input  [4:0]  io_req_bits_tag,
+  input         io_kill,
+  input         io_resp_ready,
+  output        io_resp_valid,
+  output [63: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 [31:0] _RAND_6;
+  reg [95:0] _RAND_7;
+  reg [159:0] _RAND_8;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] state; // @[Multiplier.scala 50:22]
+  reg  req_dw; // @[Multiplier.scala 52:16]
+  reg [4:0] req_tag; // @[Multiplier.scala 52:16]
+  reg [6: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 [64:0] divisor; // @[Multiplier.scala 59:20]
+  reg [129: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  _T_19 = ~io_req_bits_dw; // @[Multiplier.scala 77:60]
+  wire  _sign_T_2 = _T_19 ? io_req_bits_in1[31] : io_req_bits_in1[63]; // @[Multiplier.scala 80:29]
+  wire  lhs_sign = lhsSigned & _sign_T_2; // @[Multiplier.scala 80:23]
+  wire [31:0] _hi_T_1 = lhs_sign ? 32'hffffffff : 32'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] hi = _T_19 ? _hi_T_1 : io_req_bits_in1[63:32]; // @[Multiplier.scala 81:17]
+  wire [63:0] lhs_in = {hi,io_req_bits_in1[31:0]}; // @[Cat.scala 31:58]
+  wire  _sign_T_5 = _T_19 ? io_req_bits_in2[31] : io_req_bits_in2[63]; // @[Multiplier.scala 80:29]
+  wire  rhs_sign = rhsSigned & _sign_T_5; // @[Multiplier.scala 80:23]
+  wire [31:0] _hi_T_4 = rhs_sign ? 32'hffffffff : 32'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] hi_1 = _T_19 ? _hi_T_4 : io_req_bits_in2[63:32]; // @[Multiplier.scala 81:17]
+  wire [64:0] subtractor = remainder[128:64] - divisor; // @[Multiplier.scala 87:37]
+  wire [63:0] result = resHi ? remainder[128:65] : remainder[63:0]; // @[Multiplier.scala 88:19]
+  wire [63:0] negated_remainder = 64'h0 - result; // @[Multiplier.scala 89:27]
+  wire [129:0] _GEN_0 = remainder[63] ? {{66'd0}, negated_remainder} : remainder; // @[Multiplier.scala 92:27 93:17 60:22]
+  wire [129: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 [128:0] mulReg = {remainder[129:65],remainder[63:0]}; // @[Cat.scala 31:58]
+  wire  mplierSign = remainder[64]; // @[Multiplier.scala 107:31]
+  wire [63:0] mplier = mulReg[63:0]; // @[Multiplier.scala 108:24]
+  wire [64:0] accum = mulReg[128:64]; // @[Multiplier.scala 109:37]
+  wire [1:0] _prod_T_2 = {mplierSign,mplier[0]}; // @[Multiplier.scala 111:60]
+  wire [66:0] _prod_T_3 = $signed(_prod_T_2) * $signed(divisor); // @[Multiplier.scala 111:67]
+  wire [66:0] _GEN_35 = {{2{accum[64]}},accum}; // @[Multiplier.scala 111:76]
+  wire [66:0] nextMulReg_hi = $signed(_prod_T_3) + $signed(_GEN_35); // @[Cat.scala 31:58]
+  wire [129:0] nextMulReg = {nextMulReg_hi,mplier[63:1]}; // @[Cat.scala 31:58]
+  wire  nextMplierSign = count == 7'h3e & neg_out; // @[Multiplier.scala 113:57]
+  wire  _eOut_T_4 = ~isHi; // @[Multiplier.scala 117:7]
+  wire [128:0] nextMulReg1 = {nextMulReg[128:64],nextMulReg[63:0]}; // @[Cat.scala 31:58]
+  wire [129:0] _remainder_T_2 = {nextMulReg1[128:64],nextMplierSign,nextMulReg1[63:0]}; // @[Cat.scala 31:58]
+  wire [6:0] _count_T_1 = count + 7'h1; // @[Multiplier.scala 122:20]
+  wire [2:0] _GEN_8 = count == 7'h3f ? 3'h6 : _GEN_6; // @[Multiplier.scala 123:51 124:13]
+  wire  _GEN_9 = count == 7'h3f ? 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[64]; // @[Multiplier.scala 132:28]
+  wire [63:0] _unrolls_T_2 = unrolls_less ? remainder[127:64] : subtractor[63:0]; // @[Multiplier.scala 133:14]
+  wire  _unrolls_T_4 = ~unrolls_less; // @[Multiplier.scala 133:67]
+  wire [128:0] unrolls_0 = {_unrolls_T_2,remainder[63: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 == 7'h40 ? _state_T : _GEN_12; // @[Multiplier.scala 137:38 138:13]
+  wire  divby0 = count == 7'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 [5:0] _count_T_7 = cmdMul & _T_19 ? 6'h20 : 6'h0; // @[Multiplier.scala 167:38]
+  wire [64:0] _divisor_T = {rhs_sign,hi_1,io_req_bits_in2[31:0]}; // @[Cat.scala 31:58]
+  wire [2:0] _outMul_T_1 = state & 3'h1; // @[Multiplier.scala 174:23]
+  wire  outMul = _outMul_T_1 == 3'h0; // @[Multiplier.scala 174:52]
+  wire  _loOut_T = ~req_dw; // @[Multiplier.scala 77:60]
+  wire [31:0] loOut = _loOut_T & outMul ? result[63:32] : result[31:0]; // @[Multiplier.scala 175:18]
+  wire [31:0] _hiOut_T_4 = loOut[31] ? 32'hffffffff : 32'h0; // @[Bitwise.scala 74:12]
+  wire [31:0] hiOut = _loOut_T ? _hiOut_T_4 : result[63:32]; // @[Multiplier.scala 176:18]
+  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 = {hiOut,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_dw <= io_req_bits_dw; // @[Multiplier.scala 171:9]
+    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 <= {{1'd0}, _count_T_7}; // @[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 == 7'h40) 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[63]) begin // @[Multiplier.scala 95:25]
+        divisor <= subtractor; // @[Multiplier.scala 96:15]
+      end
+    end
+    if (_T_38) begin // @[Multiplier.scala 163:24]
+      remainder <= {{66'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 <= {{66'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_dw = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  req_tag = _RAND_2[4:0];
+  _RAND_3 = {1{`RANDOM}};
+  count = _RAND_3[6:0];
+  _RAND_4 = {1{`RANDOM}};
+  neg_out = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  isHi = _RAND_5[0:0];
+  _RAND_6 = {1{`RANDOM}};
+  resHi = _RAND_6[0:0];
+  _RAND_7 = {3{`RANDOM}};
+  divisor = _RAND_7[64:0];
+  _RAND_8 = {5{`RANDOM}};
+  remainder = _RAND_8[129: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,
+  output        io_imem_might_request,
+  output        io_imem_req_valid,
+  output [33:0] io_imem_req_bits_pc,
+  output        io_imem_req_bits_speculative,
+  output        io_imem_resp_ready,
+  input         io_imem_resp_valid,
+  input  [33: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        io_imem_bht_update_valid,
+  output        io_imem_flush_icache,
+  input         io_dmem_req_ready,
+  output        io_dmem_req_valid,
+  output [33:0] io_dmem_req_bits_addr,
+  output [6: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        io_dmem_req_bits_dv,
+  output        io_dmem_s1_kill,
+  output [63:0] io_dmem_s1_data_data,
+  input         io_dmem_s2_nack,
+  input         io_dmem_resp_valid,
+  input  [6:0]  io_dmem_resp_bits_tag,
+  input  [63:0] io_dmem_resp_bits_data,
+  input         io_dmem_resp_bits_replay,
+  input         io_dmem_resp_bits_has_data,
+  input  [63: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_grant,
+  output        io_ptw_status_debug,
+  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 [29:0] io_ptw_pmp_0_addr,
+  output [31: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 [29:0] io_ptw_pmp_1_addr,
+  output [31: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 [29:0] io_ptw_pmp_2_addr,
+  output [31: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 [29:0] io_ptw_pmp_3_addr,
+  output [31: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 [29:0] io_ptw_pmp_4_addr,
+  output [31: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 [29:0] io_ptw_pmp_5_addr,
+  output [31: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 [29:0] io_ptw_pmp_6_addr,
+  output [31: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 [29:0] io_ptw_pmp_7_addr,
+  output [31:0] io_ptw_pmp_7_mask,
+  output [63:0] io_ptw_customCSRs_csrs_0_value,
+  output        io_wfi
+);
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+  reg [63:0] _RAND_1;
+  reg [63:0] _RAND_2;
+`endif // RANDOMIZE_GARBAGE_ASSIGN
+`ifdef RANDOMIZE_MEM_INIT
+  reg [63: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 [63:0] _RAND_44;
+  reg [31:0] _RAND_45;
+  reg [63: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 [63:0] _RAND_56;
+  reg [31:0] _RAND_57;
+  reg [31:0] _RAND_58;
+  reg [31:0] _RAND_59;
+  reg [63:0] _RAND_60;
+  reg [31:0] _RAND_61;
+  reg [31:0] _RAND_62;
+  reg [31:0] _RAND_63;
+  reg [63:0] _RAND_64;
+  reg [63: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 [63:0] _RAND_71;
+  reg [63:0] _RAND_72;
+  reg [31:0] _RAND_73;
+  reg [31:0] _RAND_74;
+  reg [31:0] _RAND_75;
+  reg [63: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 [63:0] _RAND_82;
+  reg [63:0] _RAND_83;
+  reg [31:0] _RAND_84;
+  reg [31:0] _RAND_85;
+  reg [31:0] _RAND_86;
+  reg [63:0] _RAND_87;
+  reg [63:0] _RAND_88;
+  reg [63:0] _RAND_89;
+  reg [63:0] _RAND_90;
+`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 [33: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 [33:0] ibuf_io_pc; // @[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 [63: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 [63: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 [63:0] rf_id_rs_MPORT_1_data; // @[RocketCore.scala 1061:15]
+  wire [63: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_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 [63:0] csr_io_rw_rdata; // @[RocketCore.scala 291:19]
+  wire [63: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 [33: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 [63:0] csr_io_cause; // @[RocketCore.scala 291:19]
+  wire [33:0] csr_io_pc; // @[RocketCore.scala 291:19]
+  wire [33:0] csr_io_tval; // @[RocketCore.scala 291:19]
+  wire  csr_io_gva; // @[RocketCore.scala 291:19]
+  wire [63:0] csr_io_time; // @[RocketCore.scala 291:19]
+  wire  csr_io_interrupt; // @[RocketCore.scala 291:19]
+  wire [63:0] csr_io_interrupt_cause; // @[RocketCore.scala 291:19]
+  wire  csr_io_bp_0_control_action; // @[RocketCore.scala 291:19]
+  wire [1:0] csr_io_bp_0_control_tmatch; // @[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 [32:0] csr_io_bp_0_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 [29:0] csr_io_pmp_0_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_1_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_2_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_3_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_4_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_5_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_6_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [29:0] csr_io_pmp_7_addr; // @[RocketCore.scala 291:19]
+  wire [31: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 [33: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 [63:0] csr_io_customCSRs_0_value; // @[RocketCore.scala 291:19]
+  wire  bpu_io_status_debug; // @[RocketCore.scala 334:19]
+  wire  bpu_io_bp_0_control_action; // @[RocketCore.scala 334:19]
+  wire [1:0] bpu_io_bp_0_control_tmatch; // @[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 [32:0] bpu_io_bp_0_address; // @[RocketCore.scala 334:19]
+  wire [32:0] bpu_io_pc; // @[RocketCore.scala 334:19]
+  wire [32: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  alu_io_dw; // @[RocketCore.scala 399:19]
+  wire [3:0] alu_io_fn; // @[RocketCore.scala 399:19]
+  wire [63:0] alu_io_in2; // @[RocketCore.scala 399:19]
+  wire [63:0] alu_io_in1; // @[RocketCore.scala 399:19]
+  wire [63:0] alu_io_out; // @[RocketCore.scala 399:19]
+  wire [63: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  div_io_req_bits_dw; // @[RocketCore.scala 423:19]
+  wire [63:0] div_io_req_bits_in1; // @[RocketCore.scala 423:19]
+  wire [63: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 [63: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  ex_ctrl_alu_dw; // @[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  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 [63:0] ex_reg_cause; // @[RocketCore.scala 205:35]
+  reg  ex_reg_replay; // @[RocketCore.scala 206:26]
+  reg [33: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  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 [63: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 [33: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 [63:0] mem_reg_wdata; // @[RocketCore.scala 235:26]
+  reg [63: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 [63:0] wb_reg_cause; // @[RocketCore.scala 245:35]
+  reg [33: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 [63: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_90 = wb_reg_valid & wb_ctrl_mem; // @[RocketCore.scala 637:19]
+  wire  _T_91 = wb_reg_valid & wb_ctrl_mem & io_dmem_s2_xcpt_pf_st; // @[RocketCore.scala 637:34]
+  wire  _T_93 = _T_90 & io_dmem_s2_xcpt_pf_ld; // @[RocketCore.scala 638:34]
+  wire  _T_99 = _T_90 & io_dmem_s2_xcpt_ae_st; // @[RocketCore.scala 641:34]
+  wire  _T_101 = _T_90 & io_dmem_s2_xcpt_ae_ld; // @[RocketCore.scala 642:34]
+  wire  _T_103 = _T_90 & io_dmem_s2_xcpt_ma_st; // @[RocketCore.scala 643:34]
+  wire  _T_105 = _T_90 & io_dmem_s2_xcpt_ma_ld; // @[RocketCore.scala 644:34]
+  wire  wb_xcpt = wb_reg_xcpt | _T_91 | _T_93 | _T_99 | _T_101 | _T_103 | _T_105; // @[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  _mem_cfi_taken_T = mem_ctrl_branch & mem_br_taken; // @[RocketCore.scala 538:40]
+  wire  mem_cfi_taken = mem_ctrl_branch & mem_br_taken | mem_ctrl_jalr | mem_ctrl_jal; // @[RocketCore.scala 538:74]
+  wire  take_pc_mem = mem_reg_valid & ~mem_reg_xcpt & mem_cfi_taken; // @[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  _id_ctrl_decoder_bit_T_17 = _id_ctrl_decoder_bit_T == 32'h200003b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_19 = _id_ctrl_decoder_bit_T == 32'h200403b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_21 = _id_ctrl_decoder_bit_T == 32'h200503b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_23 = _id_ctrl_decoder_bit_T == 32'h200603b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_25 = _id_ctrl_decoder_bit_T == 32'h200703b; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_26 = ibuf_io_inst_0_bits_inst_bits & 32'hf800707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_27 = _id_ctrl_decoder_bit_T_26 == 32'h202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_29 = _id_ctrl_decoder_bit_T_26 == 32'h2000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_31 = _id_ctrl_decoder_bit_T_26 == 32'h800202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_33 = _id_ctrl_decoder_bit_T_26 == 32'h6000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_35 = _id_ctrl_decoder_bit_T_26 == 32'h4000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_37 = _id_ctrl_decoder_bit_T_26 == 32'h8000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_39 = _id_ctrl_decoder_bit_T_26 == 32'hc000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_41 = _id_ctrl_decoder_bit_T_26 == 32'ha000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_43 = _id_ctrl_decoder_bit_T_26 == 32'he000202f; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_44 = ibuf_io_inst_0_bits_inst_bits & 32'hf9f0707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_45 = _id_ctrl_decoder_bit_T_44 == 32'h1000202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_47 = _id_ctrl_decoder_bit_T_26 == 32'h1800202f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_49 = _id_ctrl_decoder_bit_T_26 == 32'h302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_51 = _id_ctrl_decoder_bit_T_26 == 32'h800302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_53 = _id_ctrl_decoder_bit_T_26 == 32'h2000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_55 = _id_ctrl_decoder_bit_T_26 == 32'h6000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_57 = _id_ctrl_decoder_bit_T_26 == 32'h4000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_59 = _id_ctrl_decoder_bit_T_26 == 32'h8000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_61 = _id_ctrl_decoder_bit_T_26 == 32'hc000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_63 = _id_ctrl_decoder_bit_T_26 == 32'ha000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_65 = _id_ctrl_decoder_bit_T_26 == 32'he000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_67 = _id_ctrl_decoder_bit_T_44 == 32'h1000302f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_69 = _id_ctrl_decoder_bit_T_26 == 32'h1800302f; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_70 = ibuf_io_inst_0_bits_inst_bits & 32'h707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_71 = _id_ctrl_decoder_bit_T_70 == 32'h3003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_73 = _id_ctrl_decoder_bit_T_70 == 32'h6003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_75 = _id_ctrl_decoder_bit_T_70 == 32'h3023; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_76 = ibuf_io_inst_0_bits_inst_bits & 32'hfc00707f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_77 = _id_ctrl_decoder_bit_T_76 == 32'h1013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_79 = _id_ctrl_decoder_bit_T_76 == 32'h5013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_81 = _id_ctrl_decoder_bit_T_76 == 32'h40005013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_83 = _id_ctrl_decoder_bit_T_70 == 32'h1b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_85 = _id_ctrl_decoder_bit_T == 32'h101b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_87 = _id_ctrl_decoder_bit_T == 32'h501b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_89 = _id_ctrl_decoder_bit_T == 32'h4000501b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_91 = _id_ctrl_decoder_bit_T == 32'h3b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_93 = _id_ctrl_decoder_bit_T == 32'h4000003b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_95 = _id_ctrl_decoder_bit_T == 32'h103b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_97 = _id_ctrl_decoder_bit_T == 32'h503b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_99 = _id_ctrl_decoder_bit_T == 32'h4000503b; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_100 = ibuf_io_inst_0_bits_inst_bits == 32'h7b200073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_102 = _id_ctrl_decoder_bit_T_70 == 32'h100f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_104 = _id_ctrl_decoder_bit_T_70 == 32'h1063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_106 = _id_ctrl_decoder_bit_T_70 == 32'h63; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_108 = _id_ctrl_decoder_bit_T_70 == 32'h4063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_110 = _id_ctrl_decoder_bit_T_70 == 32'h6063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_112 = _id_ctrl_decoder_bit_T_70 == 32'h5063; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_114 = _id_ctrl_decoder_bit_T_70 == 32'h7063; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_bit_T_115 = ibuf_io_inst_0_bits_inst_bits & 32'h7f; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_bit_T_116 = _id_ctrl_decoder_bit_T_115 == 32'h6f; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_118 = _id_ctrl_decoder_bit_T_70 == 32'h67; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_120 = _id_ctrl_decoder_bit_T_115 == 32'h17; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_122 = _id_ctrl_decoder_bit_T_70 == 32'h3; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_124 = _id_ctrl_decoder_bit_T_70 == 32'h1003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_126 = _id_ctrl_decoder_bit_T_70 == 32'h2003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_128 = _id_ctrl_decoder_bit_T_70 == 32'h4003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_130 = _id_ctrl_decoder_bit_T_70 == 32'h5003; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_132 = _id_ctrl_decoder_bit_T_70 == 32'h23; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_134 = _id_ctrl_decoder_bit_T_70 == 32'h1023; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_136 = _id_ctrl_decoder_bit_T_70 == 32'h2023; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_138 = _id_ctrl_decoder_bit_T_115 == 32'h37; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_140 = _id_ctrl_decoder_bit_T_70 == 32'h13; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_142 = _id_ctrl_decoder_bit_T_70 == 32'h2013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_144 = _id_ctrl_decoder_bit_T_70 == 32'h3013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_146 = _id_ctrl_decoder_bit_T_70 == 32'h7013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_148 = _id_ctrl_decoder_bit_T_70 == 32'h6013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_150 = _id_ctrl_decoder_bit_T_70 == 32'h4013; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_152 = _id_ctrl_decoder_bit_T == 32'h33; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_154 = _id_ctrl_decoder_bit_T == 32'h40000033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_156 = _id_ctrl_decoder_bit_T == 32'h2033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_158 = _id_ctrl_decoder_bit_T == 32'h3033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_160 = _id_ctrl_decoder_bit_T == 32'h7033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_162 = _id_ctrl_decoder_bit_T == 32'h6033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_164 = _id_ctrl_decoder_bit_T == 32'h4033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_166 = _id_ctrl_decoder_bit_T == 32'h1033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_168 = _id_ctrl_decoder_bit_T == 32'h5033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_170 = _id_ctrl_decoder_bit_T == 32'h40005033; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_172 = _id_ctrl_decoder_bit_T_70 == 32'hf; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_173 = ibuf_io_inst_0_bits_inst_bits == 32'h73; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_174 = ibuf_io_inst_0_bits_inst_bits == 32'h100073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_175 = ibuf_io_inst_0_bits_inst_bits == 32'h30200073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_176 = ibuf_io_inst_0_bits_inst_bits == 32'h10500073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_177 = ibuf_io_inst_0_bits_inst_bits == 32'h30500073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_179 = _id_ctrl_decoder_bit_T_70 == 32'h1073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_181 = _id_ctrl_decoder_bit_T_70 == 32'h2073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_183 = _id_ctrl_decoder_bit_T_70 == 32'h3073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_185 = _id_ctrl_decoder_bit_T_70 == 32'h5073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_187 = _id_ctrl_decoder_bit_T_70 == 32'h6073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_189 = _id_ctrl_decoder_bit_T_70 == 32'h7073; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_bit_T_220 = _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_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 | _id_ctrl_decoder_bit_T_61; // @[Decode.scala 15:30]
+  wire  _id_ctrl_decoder_bit_T_250 = _id_ctrl_decoder_bit_T_220 | _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_100 | _id_ctrl_decoder_bit_T_102 | _id_ctrl_decoder_bit_T_104 |
+    _id_ctrl_decoder_bit_T_106 | _id_ctrl_decoder_bit_T_108 | _id_ctrl_decoder_bit_T_110 | _id_ctrl_decoder_bit_T_112 |
+    _id_ctrl_decoder_bit_T_114 | _id_ctrl_decoder_bit_T_116 | _id_ctrl_decoder_bit_T_118 | _id_ctrl_decoder_bit_T_120; // @[Decode.scala 15:30]
+  wire  _id_ctrl_decoder_bit_T_280 = _id_ctrl_decoder_bit_T_250 | _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 | _id_ctrl_decoder_bit_T_136 | _id_ctrl_decoder_bit_T_138 |
+    _id_ctrl_decoder_bit_T_140 | _id_ctrl_decoder_bit_T_142 | _id_ctrl_decoder_bit_T_144 | _id_ctrl_decoder_bit_T_146 |
+    _id_ctrl_decoder_bit_T_148 | _id_ctrl_decoder_bit_T_150 | _id_ctrl_decoder_bit_T_152 | _id_ctrl_decoder_bit_T_154 |
+    _id_ctrl_decoder_bit_T_156 | _id_ctrl_decoder_bit_T_158 | _id_ctrl_decoder_bit_T_160 | _id_ctrl_decoder_bit_T_162 |
+    _id_ctrl_decoder_bit_T_164 | _id_ctrl_decoder_bit_T_166 | _id_ctrl_decoder_bit_T_168 | _id_ctrl_decoder_bit_T_170 |
+    _id_ctrl_decoder_bit_T_172 | _id_ctrl_decoder_bit_T_173 | _id_ctrl_decoder_bit_T_174 | _id_ctrl_decoder_bit_T_175 |
+    _id_ctrl_decoder_bit_T_176; // @[Decode.scala 15:30]
+  wire  id_ctrl_decoder_0 = _id_ctrl_decoder_bit_T_280 | _id_ctrl_decoder_bit_T_177 | _id_ctrl_decoder_bit_T_179 |
+    _id_ctrl_decoder_bit_T_181 | _id_ctrl_decoder_bit_T_183 | _id_ctrl_decoder_bit_T_185 | _id_ctrl_decoder_bit_T_187 |
+    _id_ctrl_decoder_bit_T_189; // @[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_45 = _id_ctrl_decoder_T_39 | _id_ctrl_decoder_T_17 | _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_45,_id_ctrl_decoder_T_37}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_46 = ibuf_io_inst_0_bits_inst_bits & 32'h50; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_47 = _id_ctrl_decoder_T_46 == 32'h0; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_51 = _id_ctrl_decoder_T_15 | _id_ctrl_decoder_T_47 | _id_ctrl_decoder_T_17 |
+    _id_ctrl_decoder_T_19; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_52 = ibuf_io_inst_0_bits_inst_bits & 32'h24; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_53 = _id_ctrl_decoder_T_52 == 32'h4; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_55 = _id_ctrl_decoder_T_53 | id_ctrl_decoder_4; // @[Decode.scala 15:30]
+  wire [1:0] id_ctrl_decoder_10 = {_id_ctrl_decoder_T_55,_id_ctrl_decoder_T_51}; // @[Cat.scala 31:58]
+  wire  _id_ctrl_decoder_T_57 = _id_ctrl_decoder_T_18 == 32'h8; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_59 = _id_ctrl_decoder_T_16 == 32'h40; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_61 = _id_ctrl_decoder_T_57 | _id_ctrl_decoder_T_59; // @[Decode.scala 15:30]
+  wire  _id_ctrl_decoder_T_63 = _id_ctrl_decoder_T_16 == 32'h4; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_65 = _id_ctrl_decoder_T_63 | _id_ctrl_decoder_T_57; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_66 = ibuf_io_inst_0_bits_inst_bits & 32'h14; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_67 = _id_ctrl_decoder_T_66 == 32'h10; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_68 = ibuf_io_inst_0_bits_inst_bits & 32'h30; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_69 = _id_ctrl_decoder_T_68 == 32'h0; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_72 = id_ctrl_decoder_5 | _id_ctrl_decoder_T_67 | _id_ctrl_decoder_T_69; // @[Decode.scala 15:30]
+  wire [2:0] id_ctrl_decoder_11 = {_id_ctrl_decoder_T_72,_id_ctrl_decoder_T_65,_id_ctrl_decoder_T_61}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_73 = ibuf_io_inst_0_bits_inst_bits & 32'h10; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_74 = _id_ctrl_decoder_T_73 == 32'h0; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_75 = ibuf_io_inst_0_bits_inst_bits & 32'h8; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_76 = _id_ctrl_decoder_T_75 == 32'h0; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_12 = _id_ctrl_decoder_T_74 | _id_ctrl_decoder_T_76; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_78 = ibuf_io_inst_0_bits_inst_bits & 32'h3054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_79 = _id_ctrl_decoder_T_78 == 32'h1010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_80 = ibuf_io_inst_0_bits_inst_bits & 32'h1058; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_81 = _id_ctrl_decoder_T_80 == 32'h1040; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_82 = ibuf_io_inst_0_bits_inst_bits & 32'h7044; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_83 = _id_ctrl_decoder_T_82 == 32'h7000; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_84 = ibuf_io_inst_0_bits_inst_bits & 32'h2001074; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_85 = _id_ctrl_decoder_T_84 == 32'h2001030; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_89 = _id_ctrl_decoder_T_79 | _id_ctrl_decoder_T_81 | _id_ctrl_decoder_T_83 |
+    _id_ctrl_decoder_T_85; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_90 = ibuf_io_inst_0_bits_inst_bits & 32'h4054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_91 = _id_ctrl_decoder_T_90 == 32'h40; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_92 = ibuf_io_inst_0_bits_inst_bits & 32'h2058; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_93 = _id_ctrl_decoder_T_92 == 32'h2040; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_95 = _id_ctrl_decoder_T_78 == 32'h3010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_96 = ibuf_io_inst_0_bits_inst_bits & 32'h6054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_97 = _id_ctrl_decoder_T_96 == 32'h6010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_98 = ibuf_io_inst_0_bits_inst_bits & 32'h2002074; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_99 = _id_ctrl_decoder_T_98 == 32'h2002030; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_100 = ibuf_io_inst_0_bits_inst_bits & 32'h40003034; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_101 = _id_ctrl_decoder_T_100 == 32'h40000030; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_102 = ibuf_io_inst_0_bits_inst_bits & 32'h40001054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_103 = _id_ctrl_decoder_T_102 == 32'h40001010; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_110 = _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 | _id_ctrl_decoder_T_101 | _id_ctrl_decoder_T_103; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_111 = ibuf_io_inst_0_bits_inst_bits & 32'h2002054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_112 = _id_ctrl_decoder_T_111 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_113 = ibuf_io_inst_0_bits_inst_bits & 32'h2034; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_114 = _id_ctrl_decoder_T_113 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_115 = ibuf_io_inst_0_bits_inst_bits & 32'h40004054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_116 = _id_ctrl_decoder_T_115 == 32'h4010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_117 = ibuf_io_inst_0_bits_inst_bits & 32'h5054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_118 = _id_ctrl_decoder_T_117 == 32'h4010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_119 = ibuf_io_inst_0_bits_inst_bits & 32'h4058; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_120 = _id_ctrl_decoder_T_119 == 32'h4040; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_125 = _id_ctrl_decoder_T_112 | _id_ctrl_decoder_T_114 | _id_ctrl_decoder_T_116 |
+    _id_ctrl_decoder_T_118 | _id_ctrl_decoder_T_120; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_126 = ibuf_io_inst_0_bits_inst_bits & 32'h2006054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_127 = _id_ctrl_decoder_T_126 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_128 = ibuf_io_inst_0_bits_inst_bits & 32'h6034; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_129 = _id_ctrl_decoder_T_128 == 32'h2010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_130 = ibuf_io_inst_0_bits_inst_bits & 32'h40003054; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_131 = _id_ctrl_decoder_T_130 == 32'h40001010; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_136 = _id_ctrl_decoder_T_127 | _id_ctrl_decoder_T_129 | _id_ctrl_decoder_T_120 |
+    _id_ctrl_decoder_T_101 | _id_ctrl_decoder_T_131; // @[Decode.scala 15:30]
+  wire [3:0] id_ctrl_decoder_13 = {_id_ctrl_decoder_T_136,_id_ctrl_decoder_T_125,_id_ctrl_decoder_T_110,
+    _id_ctrl_decoder_T_89}; // @[Cat.scala 31:58]
+  wire  _id_ctrl_decoder_bit_T_317 = _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_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 | _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_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; // @[Decode.scala 15:30]
+  wire  id_ctrl_decoder_14 = _id_ctrl_decoder_bit_T_317 | _id_ctrl_decoder_bit_T_134 | _id_ctrl_decoder_bit_T_136; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_137 = ibuf_io_inst_0_bits_inst_bits & 32'h28; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_138 = _id_ctrl_decoder_T_137 == 32'h20; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_139 = ibuf_io_inst_0_bits_inst_bits & 32'h18000020; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_140 = _id_ctrl_decoder_T_139 == 32'h18000020; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_141 = ibuf_io_inst_0_bits_inst_bits & 32'h20000020; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_142 = _id_ctrl_decoder_T_141 == 32'h20000020; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_145 = _id_ctrl_decoder_T_138 | _id_ctrl_decoder_T_140 | _id_ctrl_decoder_T_142; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_146 = ibuf_io_inst_0_bits_inst_bits & 32'h10000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_147 = _id_ctrl_decoder_T_146 == 32'h10000008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_148 = ibuf_io_inst_0_bits_inst_bits & 32'h40000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_149 = _id_ctrl_decoder_T_148 == 32'h40000008; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_151 = _id_ctrl_decoder_T_147 | _id_ctrl_decoder_T_149; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_152 = ibuf_io_inst_0_bits_inst_bits & 32'h8000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_153 = _id_ctrl_decoder_T_152 == 32'h8000008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_154 = ibuf_io_inst_0_bits_inst_bits & 32'h80000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_155 = _id_ctrl_decoder_T_154 == 32'h80000008; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_158 = _id_ctrl_decoder_T_153 | _id_ctrl_decoder_T_147 | _id_ctrl_decoder_T_155; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_159 = ibuf_io_inst_0_bits_inst_bits & 32'h18000008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_160 = _id_ctrl_decoder_T_159 == 32'h8; // @[Decode.scala 14:121]
+  wire [4:0] id_ctrl_decoder_15 = {1'h0,_id_ctrl_decoder_T_160,_id_ctrl_decoder_T_158,_id_ctrl_decoder_T_151,
+    _id_ctrl_decoder_T_145}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_162 = ibuf_io_inst_0_bits_inst_bits & 32'h2000074; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_21 = _id_ctrl_decoder_T_162 == 32'h2000030; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_165 = _id_ctrl_decoder_T_46 == 32'h10; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_166 = ibuf_io_inst_0_bits_inst_bits & 32'h1010; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_167 = _id_ctrl_decoder_T_166 == 32'h1010; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_168 = ibuf_io_inst_0_bits_inst_bits & 32'h2008; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_169 = _id_ctrl_decoder_T_168 == 32'h2008; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_170 = ibuf_io_inst_0_bits_inst_bits & 32'h2010; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_171 = _id_ctrl_decoder_T_170 == 32'h2010; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_173 = _id_ctrl_decoder_T_137 == 32'h0; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_22 = _id_ctrl_decoder_T_30 | _id_ctrl_decoder_T_165 | id_ctrl_decoder_4 | _id_ctrl_decoder_T_167
+     | _id_ctrl_decoder_T_169 | _id_ctrl_decoder_T_171 | _id_ctrl_decoder_T_173; // @[Decode.scala 15:30]
+  wire [31:0] _id_ctrl_decoder_T_180 = ibuf_io_inst_0_bits_inst_bits & 32'h1050; // @[Decode.scala 14:65]
+  wire  _id_ctrl_decoder_T_181 = _id_ctrl_decoder_T_180 == 32'h1050; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_184 = _id_ctrl_decoder_T_20 == 32'h2050; // @[Decode.scala 14:121]
+  wire  _id_ctrl_decoder_T_187 = _id_ctrl_decoder_T_46 == 32'h50; // @[Decode.scala 14:121]
+  wire [2:0] id_ctrl_decoder_23 = {_id_ctrl_decoder_T_187,_id_ctrl_decoder_T_184,_id_ctrl_decoder_T_181}; // @[Cat.scala 31:58]
+  wire [31:0] _id_ctrl_decoder_T_189 = ibuf_io_inst_0_bits_inst_bits & 32'h3058; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_24 = _id_ctrl_decoder_T_189 == 32'h1008; // @[Decode.scala 14:121]
+  wire  id_ctrl_decoder_25 = _id_ctrl_decoder_T_92 == 32'h8; // @[Decode.scala 14:121]
+  wire [31:0] _id_ctrl_decoder_T_193 = ibuf_io_inst_0_bits_inst_bits & 32'h6048; // @[Decode.scala 14:65]
+  wire  id_ctrl_decoder_26 = _id_ctrl_decoder_T_193 == 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 [63:0] _id_rs_T_4 = rf_id_rs_MPORT_data; // @[RocketCore.scala 1068:25]
+  wire [63: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 [61:0] ex_reg_rs_msb_0; // @[RocketCore.scala 387:26]
+  reg [61:0] ex_reg_rs_msb_1; // @[RocketCore.scala 387:26]
+  wire [63:0] _ex_rs_T_1 = ex_reg_rs_lsb_0 == 2'h1 ? mem_reg_wdata : 64'h0; // @[package.scala 32:76]
+  wire [63:0] _ex_rs_T_3 = ex_reg_rs_lsb_0 == 2'h2 ? wb_reg_wdata : _ex_rs_T_1; // @[package.scala 32:76]
+  wire [63: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 [63:0] _ex_rs_T_6 = {ex_reg_rs_msb_0,ex_reg_rs_lsb_0}; // @[Cat.scala 31:58]
+  wire [63:0] _ex_rs_T_8 = ex_reg_rs_lsb_1 == 2'h1 ? mem_reg_wdata : 64'h0; // @[package.scala 32:76]
+  wire [63:0] _ex_rs_T_10 = ex_reg_rs_lsb_1 == 2'h2 ? wb_reg_wdata : _ex_rs_T_8; // @[package.scala 32:76]
+  wire [63: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 [63:0] _ex_rs_T_13 = {ex_reg_rs_msb_1,ex_reg_rs_lsb_1}; // @[Cat.scala 31:58]
+  wire [63: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 [63:0] _ex_op1_T = ex_reg_rs_bypass_0 ? _ex_rs_T_5 : _ex_rs_T_6; // @[RocketCore.scala 392:24]
+  wire [33:0] _ex_op1_T_1 = ex_reg_pc; // @[RocketCore.scala 393:24]
+  wire [63:0] _ex_op1_T_3 = 2'h1 == ex_ctrl_sel_alu1 ? $signed(_ex_op1_T) : $signed(64'sh0); // @[Mux.scala 81:58]
+  wire [63: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 [63:0] _ex_op2_T_3 = 2'h2 == ex_ctrl_sel_alu2 ? $signed(_ex_op2_T) : $signed(64'sh0); // @[Mux.scala 81:58]
+  wire [63:0] _ex_op2_T_5 = 2'h3 == ex_ctrl_sel_alu2 ? $signed({{32{ex_imm[31]}},ex_imm}) : $signed(_ex_op2_T_3); // @[Mux.scala 81:58]
+  wire  _T_134 = id_raddr1 != 5'h0; // @[RocketCore.scala 757:55]
+  wire  _T_135 = 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_136 = id_raddr2 != 5'h0; // @[RocketCore.scala 758:55]
+  wire  _T_137 = 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_139 = 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_135 & _data_hazard_ex_T | _T_137 & _data_hazard_ex_T_2 | _T_139 & _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_135 & _data_hazard_mem_T | _T_137 & _data_hazard_mem_T_2 | _T_139 &
+    _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_135 & _data_hazard_wb_T | _T_137 & _data_hazard_wb_T_2 | _T_139 & _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_135 & _id_sboard_hazard_T_5 | _T_137 & _id_sboard_hazard_T_12 | _T_139 &
+    _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  _GEN_9 = id_xcpt | id_ctrl_decoder_12; // @[RocketCore.scala 443:13 450:20 452:22]
+  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_136,_T_134}; // @[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_129 = rf_waddr != 5'h0; // @[RocketCore.scala 1073:16]
+  wire  _rf_wdata_T = dmem_resp_valid & dmem_resp_xpu; // @[RocketCore.scala 701:38]
+  wire [63:0] ll_wdata = div_io_resp_bits_data;
+  wire [63:0] _rf_wdata_T_4 = wb_ctrl_csr != 3'h0 ? csr_io_rw_rdata : wb_reg_wdata; // @[RocketCore.scala 703:21]
+  wire [63:0] _rf_wdata_T_5 = ll_wen ? ll_wdata : _rf_wdata_T_4; // @[RocketCore.scala 702:21]
+  wire [63:0] rf_wdata = dmem_resp_valid & dmem_resp_xpu ? io_dmem_resp_bits_data : _rf_wdata_T_5; // @[RocketCore.scala 701:21]
+  wire [63:0] _GEN_233 = rf_waddr == id_raddr1 ? rf_wdata : _id_rs_T_4; // @[RocketCore.scala 1068:19 1076:{31,39}]
+  wire [63:0] _GEN_240 = rf_waddr != 5'h0 ? _GEN_233 : _id_rs_T_4; // @[RocketCore.scala 1068:19 1073:29]
+  wire [63:0] id_rs_0 = rf_wen ? _GEN_240 : _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 [63:0] _GEN_234 = rf_waddr == id_raddr2 ? rf_wdata : _id_rs_T_9; // @[RocketCore.scala 1068:19 1076:{31,39}]
+  wire [63:0] _GEN_241 = rf_waddr != 5'h0 ? _GEN_234 : _id_rs_T_9; // @[RocketCore.scala 1068:19 1073:29]
+  wire [63:0] id_rs_1 = rf_wen ? _GEN_241 : _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  ex_pc_valid = ex_reg_valid | ex_reg_replay | ex_reg_xcpt_interrupt; // @[RocketCore.scala 508: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_br_target_sign = mem_reg_inst[31]; // @[RocketCore.scala 1083:53]
+  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  mem_br_target_hi_lo_lo = mem_reg_inst[7]; // @[Cat.scala 31:58]
+  wire [7:0] mem_br_target_hi_lo_hi = {8{mem_br_target_sign}}; // @[Cat.scala 31:58]
+  wire [10:0] mem_br_target_hi_hi_lo = {11{mem_br_target_sign}}; // @[Cat.scala 31:58]
+  wire  mem_br_target_hi_hi_hi = mem_reg_inst[31]; // @[Cat.scala 31:58]
+  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  mem_br_target_hi_lo_lo_1 = mem_reg_inst[20]; // @[Cat.scala 31:58]
+  wire [7:0] mem_br_target_hi_lo_hi_1 = mem_reg_inst[19:12]; // @[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_cfi_taken_T ? $signed(_mem_br_target_T_3) : $signed(_mem_br_target_T_7); // @[RocketCore.scala 528:8]
+  wire [33:0] _GEN_253 = {{2{_mem_br_target_T_8[31]}},_mem_br_target_T_8}; // @[RocketCore.scala 527:41]
+  wire [33:0] mem_br_target = $signed(mem_reg_pc) + $signed(_GEN_253); // @[RocketCore.scala 527:41]
+  wire [63:0] _mem_npc_a_T = mem_reg_wdata; // @[RocketCore.scala 1035:16]
+  wire [30:0] a = _mem_npc_a_T[63:33]; // @[RocketCore.scala 1035:23]
+  wire  msb = $signed(a) == 31'sh0 | $signed(a) == -31'sh1 ? mem_reg_wdata[33] : ~mem_reg_wdata[32]; // @[RocketCore.scala 1036:18]
+  wire [33:0] _mem_npc_T_3 = {msb,mem_reg_wdata[32:0]}; // @[RocketCore.scala 531:106]
+  wire [33:0] _mem_npc_T_4 = mem_ctrl_jalr ? $signed(_mem_npc_T_3) : $signed(mem_br_target); // @[RocketCore.scala 531:21]
+  wire [33:0] mem_npc = $signed(_mem_npc_T_4) & -34'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  mem_npc_misaligned = _id_illegal_insn_T_18 & mem_npc[1]; // @[RocketCore.scala 535:56]
+  wire [63:0] mem_int_wdata = _take_pc_mem_T & (mem_ctrl_jalr ^ mem_npc_misaligned) ? $signed({{30{mem_br_target[33]}},
+    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_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 [63:0] _mem_reg_wdata_T = alu_io_out; // @[RocketCore.scala 571:25]
+  wire [63:0] _mem_reg_rs2_T_4 = {ex_rs_1[7:0],ex_rs_1[7:0],ex_rs_1[7:0],ex_rs_1[7:0],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 [63:0] _mem_reg_rs2_T_8 = {ex_rs_1[15:0],ex_rs_1[15:0],ex_rs_1[15:0],ex_rs_1[15:0]}; // @[Cat.scala 31:58]
+  wire [63:0] _mem_reg_rs2_T_11 = {ex_rs_1[31:0],ex_rs_1[31:0]}; // @[Cat.scala 31:58]
+  wire [63:0] _mem_reg_rs2_T_12 = ex_reg_mem_size == 2'h2 ? _mem_reg_rs2_T_11 : ex_rs_1; // @[AMOALU.scala 26:13]
+  wire [63:0] _mem_reg_rs2_T_13 = ex_reg_mem_size == 2'h1 ? _mem_reg_rs2_T_8 : _mem_reg_rs2_T_12; // @[AMOALU.scala 26:13]
+  wire  _GEN_79 = ex_ctrl_jalr & csr_io_status_debug | ex_ctrl_fence_i; // @[RocketCore.scala 553:14 578:48 580:24]
+  wire  _GEN_80 = 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_113 = _T_103 ? 3'h6 : 3'h4; // @[Mux.scala 47:70]
+  wire [2:0] _T_114 = _T_101 ? 3'h5 : _T_113; // @[Mux.scala 47:70]
+  wire [2:0] _T_115 = _T_99 ? 3'h7 : _T_114; // @[Mux.scala 47:70]
+  wire [4:0] _T_116 = {{2'd0}, _T_115}; // @[Mux.scala 47:70]
+  wire [4:0] _T_118 = _T_93 ? 5'hd : _T_116; // @[Mux.scala 47:70]
+  wire [4:0] _T_119 = _T_91 ? 5'hf : _T_118; // @[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  tval_dmem_addr = ~wb_reg_xcpt; // @[RocketCore.scala 723:24]
+  wire  _tval_any_addr_T = wb_reg_cause == 64'h3; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_1 = wb_reg_cause == 64'h1; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_2 = wb_reg_cause == 64'hc; // @[package.scala 15:47]
+  wire  _tval_any_addr_T_3 = wb_reg_cause == 64'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 == 64'h2; // @[RocketCore.scala 726:32]
+  wire  tval_valid = wb_xcpt & (tval_any_addr | tval_inst); // @[RocketCore.scala 727:28]
+  wire [63:0] _csr_io_tval_a_T = wb_reg_wdata; // @[RocketCore.scala 1035:16]
+  wire [30:0] a_1 = _csr_io_tval_a_T[63:33]; // @[RocketCore.scala 1035:23]
+  wire  msb_1 = $signed(a_1) == 31'sh0 | $signed(a_1) == -31'sh1 ? wb_reg_wdata[33] : ~wb_reg_wdata[32]; // @[RocketCore.scala 1036:18]
+  wire [33:0] _csr_io_tval_T_1 = {msb_1,wb_reg_wdata[32:0]}; // @[Cat.scala 31:58]
+  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_140 = 32'h1 << ll_waddr; // @[RocketCore.scala 1051:62]
+  wire [31:0] _T_141 = ll_wen ? _T_140 : 32'h0; // @[RocketCore.scala 1051:49]
+  wire [31:0] _T_142 = ~_T_141; // @[RocketCore.scala 1043:64]
+  wire [31:0] _T_143 = r & _T_142; // @[RocketCore.scala 1043:62]
+  wire  _T_145 = wb_set_sboard & wb_wen; // @[RocketCore.scala 773:28]
+  wire [31:0] _T_146 = 32'h1 << wb_waddr; // @[RocketCore.scala 1051:62]
+  wire [31:0] _T_147 = _T_145 ? _T_146 : 32'h0; // @[RocketCore.scala 1051:49]
+  wire [31:0] _T_148 = _T_143 | _T_147; // @[RocketCore.scala 1042:60]
+  wire  _T_149 = ll_wen | _T_145; // @[RocketCore.scala 1054:17]
+  wire [33:0] _io_imem_req_bits_pc_T_1 = replay_wb_common ? wb_reg_pc : mem_npc; // @[RocketCore.scala 833:8]
+  wire [5:0] ex_dcache_tag = {ex_waddr,1'h0}; // @[Cat.scala 31:58]
+  wire [30:0] a_2 = _ex_op1_T[63:33]; // @[RocketCore.scala 1035:23]
+  wire  msb_2 = $signed(a_2) == 31'sh0 | $signed(a_2) == -31'sh1 ? alu_io_adder_out[33] : ~alu_io_adder_out[32]; // @[RocketCore.scala 1036:18]
+  wire  unpause = csr_io_time[4:0] == 5'h0 | csr_io_inhibit_cycle | 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 [33:0] _coreMonitorBundle_pc_T = csr_io_trace_0_iaddr; // @[RocketCore.scala 936:48]
+  wire [29:0] _coreMonitorBundle_pc_T_3 = _coreMonitorBundle_pc_T[33] ? 30'h3fffffff : 30'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] coreMonitorBundle_pc = {_coreMonitorBundle_pc_T_3,_coreMonitorBundle_pc_T}; // @[Cat.scala 31:58]
+  wire  coreMonitorBundle_wrenx = wb_wen & ~wb_set_sboard; // @[RocketCore.scala 937:37]
+  reg [63:0] coreMonitorBundle_rd0val_x23; // @[RocketCore.scala 942:43]
+  reg [63:0] coreMonitorBundle_rd0val_REG; // @[RocketCore.scala 942:34]
+  reg [63:0] coreMonitorBundle_rd1val_x29; // @[RocketCore.scala 944:43]
+  reg [63:0] coreMonitorBundle_rd1val_REG; // @[RocketCore.scala 944:34]
+  wire [4:0] _T_151 = wb_ctrl_wxd ? wb_waddr : 5'h0; // @[RocketCore.scala 980:13]
+  wire [63:0] _T_152 = coreMonitorBundle_wrenx ? rf_wdata : 64'h0; // @[RocketCore.scala 981:13]
+  wire [4:0] _T_154 = wb_ctrl_rxs1 ? wb_reg_inst[19:15] : 5'h0; // @[RocketCore.scala 983:13]
+  wire [63:0] _T_156 = wb_ctrl_rxs1 ? coreMonitorBundle_rd0val_REG : 64'h0; // @[RocketCore.scala 984:13]
+  wire [4:0] _T_158 = wb_ctrl_rxs2 ? wb_reg_inst[24:20] : 5'h0; // @[RocketCore.scala 985:13]
+  wire [63:0] _T_160 = wb_ctrl_rxs2 ? coreMonitorBundle_rd1val_REG : 64'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_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_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_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_tmatch(csr_io_bp_0_control_tmatch),
+    .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_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_bp_0_control_action(bpu_io_bp_0_control_action),
+    .io_bp_0_control_tmatch(bpu_io_bp_0_control_tmatch),
+    .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_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_dw(alu_io_dw),
+    .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_dw(div_io_req_bits_dw),
+    .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[63: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[63: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_129;
+  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_bht_update_valid = mem_reg_valid & _wb_reg_replay_T; // @[RocketCore.scala 863:45]
+  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 = {msb_2,alu_io_adder_out[32:0]}; // @[Cat.scala 31:58]
+  assign io_dmem_req_bits_tag = {{1'd0}, ex_dcache_tag}; // @[RocketCore.scala 884:25]
+  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_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_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_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_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_91 | _T_93 | _T_99 | _T_101 | _T_103 | _T_105; // @[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 : {{59'd0}, _T_119}; // @[Mux.scala 47:70]
+  assign csr_io_pc = wb_reg_pc; // @[RocketCore.scala 722:13]
+  assign csr_io_tval = tval_valid ? _csr_io_tval_T_1 : 34'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_bp_0_control_action = csr_io_bp_0_control_action; // @[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_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_pc = ibuf_io_pc[32:0]; // @[RocketCore.scala 337:13]
+  assign bpu_io_ea = mem_reg_wdata[32:0]; // @[RocketCore.scala 338:13]
+  assign alu_io_dw = ex_ctrl_alu_dw; // @[RocketCore.scala 400:13]
+  assign alu_io_fn = ex_ctrl_alu_fn; // @[RocketCore.scala 401:13]
+  assign alu_io_in2 = 2'h1 == ex_ctrl_sel_alu2 ? $signed({{60{_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({{30{_ex_op1_T_1[33]}},_ex_op1_T_1}) : $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_dw = ex_ctrl_alu_dw; // @[RocketCore.scala 425: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[31:0]; // @[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]
+      ex_ctrl_alu_dw <= _GEN_9;
+    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_79;
+      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
+    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 <= {{59'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
+    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_80;
+      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_4;
+          end else begin
+            mem_reg_rs2 <= _mem_reg_rs2_T_13;
+          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 <= {{60'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 <= {{32'd0}, 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[63: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[63: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_149) begin // @[RocketCore.scala 1055:18]
+      _r <= _T_148; // @[RocketCore.scala 1055:23]
+    end else if (ll_wen) begin // @[RocketCore.scala 1055:18]
+      _r <= _T_143; // @[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 <= 64'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 <= 64'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,
+            csr_io_time[31:0],coreMonitorBundle_valid,coreMonitorBundle_pc,_T_151,_T_152,coreMonitorBundle_wrenx,_T_154,
+            _T_156,_T_158,_T_160,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 = {2{`RANDOM}};
+  _RAND_2 = {2{`RANDOM}};
+`endif // RANDOMIZE_GARBAGE_ASSIGN
+`ifdef RANDOMIZE_MEM_INIT
+  _RAND_0 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 31; initvar = initvar+1)
+    rf[initvar] = _RAND_0[63: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_dw = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  ex_ctrl_alu_fn = _RAND_14[3:0];
+  _RAND_15 = {1{`RANDOM}};
+  ex_ctrl_mem = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  ex_ctrl_mem_cmd = _RAND_16[4:0];
+  _RAND_17 = {1{`RANDOM}};
+  ex_ctrl_div = _RAND_17[0:0];
+  _RAND_18 = {1{`RANDOM}};
+  ex_ctrl_wxd = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  ex_ctrl_csr = _RAND_19[2:0];
+  _RAND_20 = {1{`RANDOM}};
+  ex_ctrl_fence_i = _RAND_20[0:0];
+  _RAND_21 = {1{`RANDOM}};
+  mem_ctrl_branch = _RAND_21[0:0];
+  _RAND_22 = {1{`RANDOM}};
+  mem_ctrl_jal = _RAND_22[0:0];
+  _RAND_23 = {1{`RANDOM}};
+  mem_ctrl_jalr = _RAND_23[0:0];
+  _RAND_24 = {1{`RANDOM}};
+  mem_ctrl_rxs2 = _RAND_24[0:0];
+  _RAND_25 = {1{`RANDOM}};
+  mem_ctrl_rxs1 = _RAND_25[0:0];
+  _RAND_26 = {1{`RANDOM}};
+  mem_ctrl_mem = _RAND_26[0:0];
+  _RAND_27 = {1{`RANDOM}};
+  mem_ctrl_div = _RAND_27[0:0];
+  _RAND_28 = {1{`RANDOM}};
+  mem_ctrl_wxd = _RAND_28[0:0];
+  _RAND_29 = {1{`RANDOM}};
+  mem_ctrl_csr = _RAND_29[2:0];
+  _RAND_30 = {1{`RANDOM}};
+  mem_ctrl_fence_i = _RAND_30[0:0];
+  _RAND_31 = {1{`RANDOM}};
+  wb_ctrl_rxs2 = _RAND_31[0:0];
+  _RAND_32 = {1{`RANDOM}};
+  wb_ctrl_rxs1 = _RAND_32[0:0];
+  _RAND_33 = {1{`RANDOM}};
+  wb_ctrl_mem = _RAND_33[0:0];
+  _RAND_34 = {1{`RANDOM}};
+  wb_ctrl_div = _RAND_34[0:0];
+  _RAND_35 = {1{`RANDOM}};
+  wb_ctrl_wxd = _RAND_35[0:0];
+  _RAND_36 = {1{`RANDOM}};
+  wb_ctrl_csr = _RAND_36[2:0];
+  _RAND_37 = {1{`RANDOM}};
+  wb_ctrl_fence_i = _RAND_37[0:0];
+  _RAND_38 = {1{`RANDOM}};
+  ex_reg_xcpt_interrupt = _RAND_38[0:0];
+  _RAND_39 = {1{`RANDOM}};
+  ex_reg_valid = _RAND_39[0:0];
+  _RAND_40 = {1{`RANDOM}};
+  ex_reg_rvc = _RAND_40[0:0];
+  _RAND_41 = {1{`RANDOM}};
+  ex_reg_xcpt = _RAND_41[0:0];
+  _RAND_42 = {1{`RANDOM}};
+  ex_reg_flush_pipe = _RAND_42[0:0];
+  _RAND_43 = {1{`RANDOM}};
+  ex_reg_load_use = _RAND_43[0:0];
+  _RAND_44 = {2{`RANDOM}};
+  ex_reg_cause = _RAND_44[63:0];
+  _RAND_45 = {1{`RANDOM}};
+  ex_reg_replay = _RAND_45[0:0];
+  _RAND_46 = {2{`RANDOM}};
+  ex_reg_pc = _RAND_46[33:0];
+  _RAND_47 = {1{`RANDOM}};
+  ex_reg_mem_size = _RAND_47[1:0];
+  _RAND_48 = {1{`RANDOM}};
+  ex_reg_inst = _RAND_48[31:0];
+  _RAND_49 = {1{`RANDOM}};
+  ex_reg_raw_inst = _RAND_49[31:0];
+  _RAND_50 = {1{`RANDOM}};
+  mem_reg_xcpt_interrupt = _RAND_50[0:0];
+  _RAND_51 = {1{`RANDOM}};
+  mem_reg_valid = _RAND_51[0:0];
+  _RAND_52 = {1{`RANDOM}};
+  mem_reg_rvc = _RAND_52[0:0];
+  _RAND_53 = {1{`RANDOM}};
+  mem_reg_xcpt = _RAND_53[0:0];
+  _RAND_54 = {1{`RANDOM}};
+  mem_reg_replay = _RAND_54[0:0];
+  _RAND_55 = {1{`RANDOM}};
+  mem_reg_flush_pipe = _RAND_55[0:0];
+  _RAND_56 = {2{`RANDOM}};
+  mem_reg_cause = _RAND_56[63:0];
+  _RAND_57 = {1{`RANDOM}};
+  mem_reg_slow_bypass = _RAND_57[0:0];
+  _RAND_58 = {1{`RANDOM}};
+  mem_reg_load = _RAND_58[0:0];
+  _RAND_59 = {1{`RANDOM}};
+  mem_reg_store = _RAND_59[0:0];
+  _RAND_60 = {2{`RANDOM}};
+  mem_reg_pc = _RAND_60[33:0];
+  _RAND_61 = {1{`RANDOM}};
+  mem_reg_inst = _RAND_61[31:0];
+  _RAND_62 = {1{`RANDOM}};
+  mem_reg_hls_or_dv = _RAND_62[0:0];
+  _RAND_63 = {1{`RANDOM}};
+  mem_reg_raw_inst = _RAND_63[31:0];
+  _RAND_64 = {2{`RANDOM}};
+  mem_reg_wdata = _RAND_64[63:0];
+  _RAND_65 = {2{`RANDOM}};
+  mem_reg_rs2 = _RAND_65[63:0];
+  _RAND_66 = {1{`RANDOM}};
+  mem_br_taken = _RAND_66[0:0];
+  _RAND_67 = {1{`RANDOM}};
+  wb_reg_valid = _RAND_67[0:0];
+  _RAND_68 = {1{`RANDOM}};
+  wb_reg_xcpt = _RAND_68[0:0];
+  _RAND_69 = {1{`RANDOM}};
+  wb_reg_replay = _RAND_69[0:0];
+  _RAND_70 = {1{`RANDOM}};
+  wb_reg_flush_pipe = _RAND_70[0:0];
+  _RAND_71 = {2{`RANDOM}};
+  wb_reg_cause = _RAND_71[63:0];
+  _RAND_72 = {2{`RANDOM}};
+  wb_reg_pc = _RAND_72[33:0];
+  _RAND_73 = {1{`RANDOM}};
+  wb_reg_hls_or_dv = _RAND_73[0:0];
+  _RAND_74 = {1{`RANDOM}};
+  wb_reg_inst = _RAND_74[31:0];
+  _RAND_75 = {1{`RANDOM}};
+  wb_reg_raw_inst = _RAND_75[31:0];
+  _RAND_76 = {2{`RANDOM}};
+  wb_reg_wdata = _RAND_76[63:0];
+  _RAND_77 = {1{`RANDOM}};
+  id_reg_fence = _RAND_77[0:0];
+  _RAND_78 = {1{`RANDOM}};
+  ex_reg_rs_bypass_0 = _RAND_78[0:0];
+  _RAND_79 = {1{`RANDOM}};
+  ex_reg_rs_bypass_1 = _RAND_79[0:0];
+  _RAND_80 = {1{`RANDOM}};
+  ex_reg_rs_lsb_0 = _RAND_80[1:0];
+  _RAND_81 = {1{`RANDOM}};
+  ex_reg_rs_lsb_1 = _RAND_81[1:0];
+  _RAND_82 = {2{`RANDOM}};
+  ex_reg_rs_msb_0 = _RAND_82[61:0];
+  _RAND_83 = {2{`RANDOM}};
+  ex_reg_rs_msb_1 = _RAND_83[61:0];
+  _RAND_84 = {1{`RANDOM}};
+  _r = _RAND_84[31:0];
+  _RAND_85 = {1{`RANDOM}};
+  blocked = _RAND_85[0:0];
+  _RAND_86 = {1{`RANDOM}};
+  div_io_kill_REG = _RAND_86[0:0];
+  _RAND_87 = {2{`RANDOM}};
+  coreMonitorBundle_rd0val_x23 = _RAND_87[63:0];
+  _RAND_88 = {2{`RANDOM}};
+  coreMonitorBundle_rd0val_REG = _RAND_88[63:0];
+  _RAND_89 = {2{`RANDOM}};
+  coreMonitorBundle_rd1val_x29 = _RAND_89[63:0];
+  _RAND_90 = {2{`RANDOM}};
+  coreMonitorBundle_rd1val_REG = _RAND_90[63: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  [2:0]  auto_slave_in_a_bits_source,
+  input  [31:0] auto_slave_in_a_bits_address,
+  input  [7:0]  auto_slave_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_slave_in_d_bits_size,
+  output [2:0]  auto_slave_in_d_bits_source,
+  output [63:0] auto_slave_in_d_bits_data,
+  output        auto_wfi_out_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        auto_tl_other_masters_out_a_bits_source,
+  output [31:0] auto_tl_other_masters_out_a_bits_address,
+  output [7:0]  auto_tl_other_masters_out_a_bits_mask,
+  output [63:0] auto_tl_other_masters_out_a_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         auto_tl_other_masters_out_d_bits_source,
+  input         auto_tl_other_masters_out_d_bits_sink,
+  input         auto_tl_other_masters_out_d_bits_denied,
+  input  [63:0] auto_tl_other_masters_out_d_bits_data,
+  input         auto_tl_other_masters_out_d_bits_corrupt
+);
+`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 [31:0] tlMasterXbar_auto_in_1_a_bits_address; // @[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 [63: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 [31:0] tlMasterXbar_auto_in_0_a_bits_address; // @[BaseTile.scala 210:42]
+  wire [7:0] tlMasterXbar_auto_in_0_a_bits_mask; // @[BaseTile.scala 210:42]
+  wire [63:0] tlMasterXbar_auto_in_0_a_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 [3:0] tlMasterXbar_auto_in_0_d_bits_size; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_in_0_d_bits_denied; // @[BaseTile.scala 210:42]
+  wire [63:0] tlMasterXbar_auto_in_0_d_bits_data; // @[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  tlMasterXbar_auto_out_a_bits_source; // @[BaseTile.scala 210:42]
+  wire [31:0] tlMasterXbar_auto_out_a_bits_address; // @[BaseTile.scala 210:42]
+  wire [7:0] tlMasterXbar_auto_out_a_bits_mask; // @[BaseTile.scala 210:42]
+  wire [63:0] tlMasterXbar_auto_out_a_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  tlMasterXbar_auto_out_d_bits_source; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_bits_sink; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_bits_denied; // @[BaseTile.scala 210:42]
+  wire [63:0] tlMasterXbar_auto_out_d_bits_data; // @[BaseTile.scala 210:42]
+  wire  tlMasterXbar_auto_out_d_bits_corrupt; // @[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 [2:0] tlSlaveXbar_auto_in_a_bits_source; // @[BaseTile.scala 211:41]
+  wire [31:0] tlSlaveXbar_auto_in_a_bits_address; // @[BaseTile.scala 211:41]
+  wire [7:0] tlSlaveXbar_auto_in_a_bits_mask; // @[BaseTile.scala 211:41]
+  wire [63:0] tlSlaveXbar_auto_in_a_bits_data; // @[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 [2:0] tlSlaveXbar_auto_in_d_bits_source; // @[BaseTile.scala 211:41]
+  wire [63: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 [2:0] tlSlaveXbar_auto_out_a_bits_source; // @[BaseTile.scala 211:41]
+  wire [31:0] tlSlaveXbar_auto_out_a_bits_address; // @[BaseTile.scala 211:41]
+  wire [7:0] tlSlaveXbar_auto_out_a_bits_mask; // @[BaseTile.scala 211:41]
+  wire [63:0] tlSlaveXbar_auto_out_a_bits_data; // @[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 [2:0] tlSlaveXbar_auto_out_d_bits_source; // @[BaseTile.scala 211:41]
+  wire [63:0] tlSlaveXbar_auto_out_d_bits_data; // @[BaseTile.scala 211:41]
+  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  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 [31:0] dcache_auto_out_a_bits_address; // @[HellaCache.scala 269:43]
+  wire [7:0] dcache_auto_out_a_bits_mask; // @[HellaCache.scala 269:43]
+  wire [63:0] dcache_auto_out_a_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 [3:0] dcache_auto_out_d_bits_size; // @[HellaCache.scala 269:43]
+  wire  dcache_auto_out_d_bits_denied; // @[HellaCache.scala 269:43]
+  wire [63:0] dcache_auto_out_d_bits_data; // @[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 [33:0] dcache_io_cpu_req_bits_addr; // @[HellaCache.scala 269:43]
+  wire [6: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_req_bits_no_xcpt; // @[HellaCache.scala 269:43]
+  wire  dcache_io_cpu_s1_kill; // @[HellaCache.scala 269:43]
+  wire [63:0] dcache_io_cpu_s1_data_data; // @[HellaCache.scala 269:43]
+  wire [7: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 [33:0] dcache_io_cpu_resp_bits_addr; // @[HellaCache.scala 269:43]
+  wire [6: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 [63:0] dcache_io_cpu_resp_bits_data; // @[HellaCache.scala 269:43]
+  wire [7: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 [63:0] dcache_io_cpu_resp_bits_data_word_bypass; // @[HellaCache.scala 269:43]
+  wire [63:0] dcache_io_cpu_resp_bits_data_raw; // @[HellaCache.scala 269:43]
+  wire [63: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_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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_0_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_0_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_1_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_1_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_2_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_2_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_3_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_3_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_4_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_4_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_5_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_5_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_6_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_6_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_w; // @[HellaCache.scala 269:43]
+  wire  dcache_io_ptw_pmp_7_cfg_r; // @[HellaCache.scala 269:43]
+  wire [29:0] dcache_io_ptw_pmp_7_addr; // @[HellaCache.scala 269:43]
+  wire [31: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_master_out_a_ready; // @[Frontend.scala 371:28]
+  wire  frontend_auto_icache_master_out_a_valid; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_auto_icache_master_out_a_bits_address; // @[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 [63: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 [33: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 [33: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  frontend_io_cpu_bht_update_valid; // @[Frontend.scala 371:28]
+  wire  frontend_io_cpu_flush_icache; // @[Frontend.scala 371:28]
+  wire [33:0] frontend_io_cpu_npc; // @[Frontend.scala 371:28]
+  wire  frontend_io_ptw_status_debug; // @[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 [29:0] frontend_io_ptw_pmp_0_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_1_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_2_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_3_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_4_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_5_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_6_addr; // @[Frontend.scala 371:28]
+  wire [31: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 [29:0] frontend_io_ptw_pmp_7_addr; // @[Frontend.scala 371:28]
+  wire [31:0] frontend_io_ptw_pmp_7_mask; // @[Frontend.scala 371:28]
+  wire [63:0] frontend_io_ptw_customCSRs_csrs_0_value; // @[Frontend.scala 371:28]
+  wire  dtim_adapter_clock; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_reset; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_auto_in_a_ready; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_auto_in_a_valid; // @[RocketTile.scala 62:15]
+  wire [2:0] dtim_adapter_auto_in_a_bits_opcode; // @[RocketTile.scala 62:15]
+  wire [2:0] dtim_adapter_auto_in_a_bits_param; // @[RocketTile.scala 62:15]
+  wire [1:0] dtim_adapter_auto_in_a_bits_size; // @[RocketTile.scala 62:15]
+  wire [7:0] dtim_adapter_auto_in_a_bits_source; // @[RocketTile.scala 62:15]
+  wire [31:0] dtim_adapter_auto_in_a_bits_address; // @[RocketTile.scala 62:15]
+  wire [7:0] dtim_adapter_auto_in_a_bits_mask; // @[RocketTile.scala 62:15]
+  wire [63:0] dtim_adapter_auto_in_a_bits_data; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_auto_in_d_ready; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_auto_in_d_valid; // @[RocketTile.scala 62:15]
+  wire [2:0] dtim_adapter_auto_in_d_bits_opcode; // @[RocketTile.scala 62:15]
+  wire [1:0] dtim_adapter_auto_in_d_bits_size; // @[RocketTile.scala 62:15]
+  wire [7:0] dtim_adapter_auto_in_d_bits_source; // @[RocketTile.scala 62:15]
+  wire [63:0] dtim_adapter_auto_in_d_bits_data; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_io_dmem_req_ready; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_io_dmem_req_valid; // @[RocketTile.scala 62:15]
+  wire [33:0] dtim_adapter_io_dmem_req_bits_addr; // @[RocketTile.scala 62:15]
+  wire [4:0] dtim_adapter_io_dmem_req_bits_cmd; // @[RocketTile.scala 62:15]
+  wire [1:0] dtim_adapter_io_dmem_req_bits_size; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_io_dmem_s1_kill; // @[RocketTile.scala 62:15]
+  wire [63:0] dtim_adapter_io_dmem_s1_data_data; // @[RocketTile.scala 62:15]
+  wire [7:0] dtim_adapter_io_dmem_s1_data_mask; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_io_dmem_s2_nack; // @[RocketTile.scala 62:15]
+  wire  dtim_adapter_io_dmem_resp_valid; // @[RocketTile.scala 62:15]
+  wire [63:0] dtim_adapter_io_dmem_resp_bits_data_raw; // @[RocketTile.scala 62:15]
+  wire  fragmenter_1_clock; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_reset; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_in_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_in_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_1_auto_in_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_1_auto_in_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63:0] fragmenter_1_auto_in_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_in_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_in_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_in_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63:0] fragmenter_1_auto_in_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_out_a_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_out_a_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_out_a_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_out_a_bits_param; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_1_auto_out_a_bits_size; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_1_auto_out_a_bits_source; // @[Fragmenter.scala 333:34]
+  wire [31:0] fragmenter_1_auto_out_a_bits_address; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_1_auto_out_a_bits_mask; // @[Fragmenter.scala 333:34]
+  wire [63:0] fragmenter_1_auto_out_a_bits_data; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_out_d_ready; // @[Fragmenter.scala 333:34]
+  wire  fragmenter_1_auto_out_d_valid; // @[Fragmenter.scala 333:34]
+  wire [2:0] fragmenter_1_auto_out_d_bits_opcode; // @[Fragmenter.scala 333:34]
+  wire [1:0] fragmenter_1_auto_out_d_bits_size; // @[Fragmenter.scala 333:34]
+  wire [7:0] fragmenter_1_auto_out_d_bits_source; // @[Fragmenter.scala 333:34]
+  wire [63:0] fragmenter_1_auto_out_d_bits_data; // @[Fragmenter.scala 333:34]
+  wire  dcacheArb_clock; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_req_ready; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_0_req_valid; // @[HellaCache.scala 280:25]
+  wire [33:0] dcacheArb_io_requestor_0_req_bits_addr; // @[HellaCache.scala 280:25]
+  wire [6: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  dcacheArb_io_requestor_0_s1_kill; // @[HellaCache.scala 280:25]
+  wire [63: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 [6:0] dcacheArb_io_requestor_0_resp_bits_tag; // @[HellaCache.scala 280:25]
+  wire [63: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 [63: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_grant; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_1_req_ready; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_1_req_valid; // @[HellaCache.scala 280:25]
+  wire [33:0] dcacheArb_io_requestor_1_req_bits_addr; // @[HellaCache.scala 280:25]
+  wire [4:0] dcacheArb_io_requestor_1_req_bits_cmd; // @[HellaCache.scala 280:25]
+  wire [1:0] dcacheArb_io_requestor_1_req_bits_size; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_1_s1_kill; // @[HellaCache.scala 280:25]
+  wire [63:0] dcacheArb_io_requestor_1_s1_data_data; // @[HellaCache.scala 280:25]
+  wire [7:0] dcacheArb_io_requestor_1_s1_data_mask; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_1_s2_nack; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_requestor_1_resp_valid; // @[HellaCache.scala 280:25]
+  wire [63:0] dcacheArb_io_requestor_1_resp_bits_data_raw; // @[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 [33:0] dcacheArb_io_mem_req_bits_addr; // @[HellaCache.scala 280:25]
+  wire [6: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_req_bits_no_xcpt; // @[HellaCache.scala 280:25]
+  wire  dcacheArb_io_mem_s1_kill; // @[HellaCache.scala 280:25]
+  wire [63:0] dcacheArb_io_mem_s1_data_data; // @[HellaCache.scala 280:25]
+  wire [7:0] dcacheArb_io_mem_s1_data_mask; // @[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 [6:0] dcacheArb_io_mem_resp_bits_tag; // @[HellaCache.scala 280:25]
+  wire [63: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 [63:0] dcacheArb_io_mem_resp_bits_data_word_bypass; // @[HellaCache.scala 280:25]
+  wire [63:0] dcacheArb_io_mem_resp_bits_data_raw; // @[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_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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_0_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_0_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_1_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_1_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_2_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_2_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_3_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_3_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_4_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_4_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_5_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_5_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_6_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_6_addr; // @[PTW.scala 604:19]
+  wire [31: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_w; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_0_pmp_7_cfg_r; // @[PTW.scala 604:19]
+  wire [29:0] ptw_io_requestor_0_pmp_7_addr; // @[PTW.scala 604:19]
+  wire [31:0] ptw_io_requestor_0_pmp_7_mask; // @[PTW.scala 604:19]
+  wire  ptw_io_requestor_1_status_debug; // @[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 [29:0] ptw_io_requestor_1_pmp_0_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_1_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_2_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_3_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_4_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_5_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_6_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_requestor_1_pmp_7_addr; // @[PTW.scala 604:19]
+  wire [31:0] ptw_io_requestor_1_pmp_7_mask; // @[PTW.scala 604:19]
+  wire [63:0] ptw_io_requestor_1_customCSRs_csrs_0_value; // @[PTW.scala 604:19]
+  wire  ptw_io_dpath_status_debug; // @[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 [29:0] ptw_io_dpath_pmp_0_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_1_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_2_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_3_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_4_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_5_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_6_addr; // @[PTW.scala 604:19]
+  wire [31: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 [29:0] ptw_io_dpath_pmp_7_addr; // @[PTW.scala 604:19]
+  wire [31: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 [63: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_imem_might_request; // @[RocketTile.scala 140:20]
+  wire  core_io_imem_req_valid; // @[RocketTile.scala 140:20]
+  wire [33: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 [33: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  core_io_imem_bht_update_valid; // @[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 [33:0] core_io_dmem_req_bits_addr; // @[RocketTile.scala 140:20]
+  wire [6: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  core_io_dmem_req_bits_dv; // @[RocketTile.scala 140:20]
+  wire  core_io_dmem_s1_kill; // @[RocketTile.scala 140:20]
+  wire [63: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 [6:0] core_io_dmem_resp_bits_tag; // @[RocketTile.scala 140:20]
+  wire [63: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 [63: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_grant; // @[RocketTile.scala 140:20]
+  wire  core_io_ptw_status_debug; // @[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 [29:0] core_io_ptw_pmp_0_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_1_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_2_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_3_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_4_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_5_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_6_addr; // @[RocketTile.scala 140:20]
+  wire [31: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 [29:0] core_io_ptw_pmp_7_addr; // @[RocketTile.scala 140:20]
+  wire [31:0] core_io_ptw_pmp_7_mask; // @[RocketTile.scala 140:20]
+  wire [63: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_6 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_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_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_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_size(tlMasterXbar_auto_in_0_d_bits_size),
+    .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_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_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)
+  );
+  TLXbar_7 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_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_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_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)
+  );
+  BundleBridgeNexus_4 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_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_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_size(dcache_auto_out_d_bits_size),
+    .auto_out_d_bits_denied(dcache_auto_out_d_bits_denied),
+    .auto_out_d_bits_data(dcache_auto_out_d_bits_data),
+    .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_req_bits_no_xcpt(dcache_io_cpu_req_bits_no_xcpt),
+    .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_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_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_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_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_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_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_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_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_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)
+  );
+  Frontend frontend ( // @[Frontend.scala 371:28]
+    .clock(frontend_clock),
+    .reset(frontend_reset),
+    .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_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_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_bht_update_valid(frontend_io_cpu_bht_update_valid),
+    .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_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_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_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_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_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_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_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_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_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)
+  );
+  ScratchpadSlavePort dtim_adapter ( // @[RocketTile.scala 62:15]
+    .clock(dtim_adapter_clock),
+    .reset(dtim_adapter_reset),
+    .auto_in_a_ready(dtim_adapter_auto_in_a_ready),
+    .auto_in_a_valid(dtim_adapter_auto_in_a_valid),
+    .auto_in_a_bits_opcode(dtim_adapter_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(dtim_adapter_auto_in_a_bits_param),
+    .auto_in_a_bits_size(dtim_adapter_auto_in_a_bits_size),
+    .auto_in_a_bits_source(dtim_adapter_auto_in_a_bits_source),
+    .auto_in_a_bits_address(dtim_adapter_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(dtim_adapter_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(dtim_adapter_auto_in_a_bits_data),
+    .auto_in_d_ready(dtim_adapter_auto_in_d_ready),
+    .auto_in_d_valid(dtim_adapter_auto_in_d_valid),
+    .auto_in_d_bits_opcode(dtim_adapter_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(dtim_adapter_auto_in_d_bits_size),
+    .auto_in_d_bits_source(dtim_adapter_auto_in_d_bits_source),
+    .auto_in_d_bits_data(dtim_adapter_auto_in_d_bits_data),
+    .io_dmem_req_ready(dtim_adapter_io_dmem_req_ready),
+    .io_dmem_req_valid(dtim_adapter_io_dmem_req_valid),
+    .io_dmem_req_bits_addr(dtim_adapter_io_dmem_req_bits_addr),
+    .io_dmem_req_bits_cmd(dtim_adapter_io_dmem_req_bits_cmd),
+    .io_dmem_req_bits_size(dtim_adapter_io_dmem_req_bits_size),
+    .io_dmem_s1_kill(dtim_adapter_io_dmem_s1_kill),
+    .io_dmem_s1_data_data(dtim_adapter_io_dmem_s1_data_data),
+    .io_dmem_s1_data_mask(dtim_adapter_io_dmem_s1_data_mask),
+    .io_dmem_s2_nack(dtim_adapter_io_dmem_s2_nack),
+    .io_dmem_resp_valid(dtim_adapter_io_dmem_resp_valid),
+    .io_dmem_resp_bits_data_raw(dtim_adapter_io_dmem_resp_bits_data_raw)
+  );
+  TLFragmenter_15 fragmenter_1 ( // @[Fragmenter.scala 333:34]
+    .clock(fragmenter_1_clock),
+    .reset(fragmenter_1_reset),
+    .auto_in_a_ready(fragmenter_1_auto_in_a_ready),
+    .auto_in_a_valid(fragmenter_1_auto_in_a_valid),
+    .auto_in_a_bits_opcode(fragmenter_1_auto_in_a_bits_opcode),
+    .auto_in_a_bits_param(fragmenter_1_auto_in_a_bits_param),
+    .auto_in_a_bits_size(fragmenter_1_auto_in_a_bits_size),
+    .auto_in_a_bits_source(fragmenter_1_auto_in_a_bits_source),
+    .auto_in_a_bits_address(fragmenter_1_auto_in_a_bits_address),
+    .auto_in_a_bits_mask(fragmenter_1_auto_in_a_bits_mask),
+    .auto_in_a_bits_data(fragmenter_1_auto_in_a_bits_data),
+    .auto_in_d_ready(fragmenter_1_auto_in_d_ready),
+    .auto_in_d_valid(fragmenter_1_auto_in_d_valid),
+    .auto_in_d_bits_opcode(fragmenter_1_auto_in_d_bits_opcode),
+    .auto_in_d_bits_size(fragmenter_1_auto_in_d_bits_size),
+    .auto_in_d_bits_source(fragmenter_1_auto_in_d_bits_source),
+    .auto_in_d_bits_data(fragmenter_1_auto_in_d_bits_data),
+    .auto_out_a_ready(fragmenter_1_auto_out_a_ready),
+    .auto_out_a_valid(fragmenter_1_auto_out_a_valid),
+    .auto_out_a_bits_opcode(fragmenter_1_auto_out_a_bits_opcode),
+    .auto_out_a_bits_param(fragmenter_1_auto_out_a_bits_param),
+    .auto_out_a_bits_size(fragmenter_1_auto_out_a_bits_size),
+    .auto_out_a_bits_source(fragmenter_1_auto_out_a_bits_source),
+    .auto_out_a_bits_address(fragmenter_1_auto_out_a_bits_address),
+    .auto_out_a_bits_mask(fragmenter_1_auto_out_a_bits_mask),
+    .auto_out_a_bits_data(fragmenter_1_auto_out_a_bits_data),
+    .auto_out_d_ready(fragmenter_1_auto_out_d_ready),
+    .auto_out_d_valid(fragmenter_1_auto_out_d_valid),
+    .auto_out_d_bits_opcode(fragmenter_1_auto_out_d_bits_opcode),
+    .auto_out_d_bits_size(fragmenter_1_auto_out_d_bits_size),
+    .auto_out_d_bits_source(fragmenter_1_auto_out_d_bits_source),
+    .auto_out_d_bits_data(fragmenter_1_auto_out_d_bits_data)
+  );
+  HellaCacheArbiter dcacheArb ( // @[HellaCache.scala 280:25]
+    .clock(dcacheArb_clock),
+    .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_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_grant(dcacheArb_io_requestor_0_perf_grant),
+    .io_requestor_1_req_ready(dcacheArb_io_requestor_1_req_ready),
+    .io_requestor_1_req_valid(dcacheArb_io_requestor_1_req_valid),
+    .io_requestor_1_req_bits_addr(dcacheArb_io_requestor_1_req_bits_addr),
+    .io_requestor_1_req_bits_cmd(dcacheArb_io_requestor_1_req_bits_cmd),
+    .io_requestor_1_req_bits_size(dcacheArb_io_requestor_1_req_bits_size),
+    .io_requestor_1_s1_kill(dcacheArb_io_requestor_1_s1_kill),
+    .io_requestor_1_s1_data_data(dcacheArb_io_requestor_1_s1_data_data),
+    .io_requestor_1_s1_data_mask(dcacheArb_io_requestor_1_s1_data_mask),
+    .io_requestor_1_s2_nack(dcacheArb_io_requestor_1_s2_nack),
+    .io_requestor_1_resp_valid(dcacheArb_io_requestor_1_resp_valid),
+    .io_requestor_1_resp_bits_data_raw(dcacheArb_io_requestor_1_resp_bits_data_raw),
+    .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_req_bits_no_xcpt(dcacheArb_io_mem_req_bits_no_xcpt),
+    .io_mem_s1_kill(dcacheArb_io_mem_s1_kill),
+    .io_mem_s1_data_data(dcacheArb_io_mem_s1_data_data),
+    .io_mem_s1_data_mask(dcacheArb_io_mem_s1_data_mask),
+    .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_resp_bits_data_raw(dcacheArb_io_mem_resp_bits_data_raw),
+    .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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_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_bht_update_valid(core_io_imem_bht_update_valid),
+    .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_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_grant(core_io_dmem_perf_grant),
+    .io_ptw_status_debug(core_io_ptw_status_debug),
+    .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_d_ready = tlMasterXbar_auto_out_d_ready; // @[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_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_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_d_ready = dcache_auto_out_d_ready; // @[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_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 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_d_ready = auto_slave_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign tlSlaveXbar_auto_out_a_ready = fragmenter_1_auto_in_a_ready; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_valid = fragmenter_1_auto_in_d_valid; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_opcode = fragmenter_1_auto_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_size = fragmenter_1_auto_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_source = fragmenter_1_auto_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign tlSlaveXbar_auto_out_d_bits_data = fragmenter_1_auto_in_d_bits_data; // @[LazyModule.scala 298: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_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_size = tlMasterXbar_auto_in_0_d_bits_size; // @[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_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_req_bits_no_xcpt = dcacheArb_io_mem_req_bits_no_xcpt; // @[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 = dcacheArb_io_mem_s1_data_mask; // @[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_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_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_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_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_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_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_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_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_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_bht_update_valid = core_io_imem_bht_update_valid; // @[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_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_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_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_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_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_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_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_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_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 dtim_adapter_clock = clock;
+  assign dtim_adapter_reset = reset;
+  assign dtim_adapter_auto_in_a_valid = fragmenter_1_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_opcode = fragmenter_1_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_param = fragmenter_1_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_size = fragmenter_1_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_source = fragmenter_1_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_address = fragmenter_1_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_mask = fragmenter_1_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_a_bits_data = fragmenter_1_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_auto_in_d_ready = fragmenter_1_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign dtim_adapter_io_dmem_req_ready = dcacheArb_io_requestor_1_req_ready; // @[RocketTile.scala 197:26]
+  assign dtim_adapter_io_dmem_s2_nack = dcacheArb_io_requestor_1_s2_nack; // @[RocketTile.scala 197:26]
+  assign dtim_adapter_io_dmem_resp_valid = dcacheArb_io_requestor_1_resp_valid; // @[RocketTile.scala 197:26]
+  assign dtim_adapter_io_dmem_resp_bits_data_raw = dcacheArb_io_requestor_1_resp_bits_data_raw; // @[RocketTile.scala 197:26]
+  assign fragmenter_1_clock = clock;
+  assign fragmenter_1_reset = reset;
+  assign fragmenter_1_auto_in_a_valid = tlSlaveXbar_auto_out_a_valid; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_opcode = tlSlaveXbar_auto_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_param = tlSlaveXbar_auto_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_size = tlSlaveXbar_auto_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_source = tlSlaveXbar_auto_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_address = tlSlaveXbar_auto_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_mask = tlSlaveXbar_auto_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_a_bits_data = tlSlaveXbar_auto_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_in_d_ready = tlSlaveXbar_auto_out_d_ready; // @[LazyModule.scala 298:16]
+  assign fragmenter_1_auto_out_a_ready = dtim_adapter_auto_in_a_ready; // @[LazyModule.scala 296:16]
+  assign fragmenter_1_auto_out_d_valid = dtim_adapter_auto_in_d_valid; // @[LazyModule.scala 296:16]
+  assign fragmenter_1_auto_out_d_bits_opcode = dtim_adapter_auto_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign fragmenter_1_auto_out_d_bits_size = dtim_adapter_auto_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign fragmenter_1_auto_out_d_bits_source = dtim_adapter_auto_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign fragmenter_1_auto_out_d_bits_data = dtim_adapter_auto_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign dcacheArb_clock = clock;
+  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_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_requestor_1_req_valid = dtim_adapter_io_dmem_req_valid; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_1_req_bits_addr = dtim_adapter_io_dmem_req_bits_addr; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_1_req_bits_cmd = dtim_adapter_io_dmem_req_bits_cmd; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_1_req_bits_size = dtim_adapter_io_dmem_req_bits_size; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_1_s1_kill = dtim_adapter_io_dmem_s1_kill; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_1_s1_data_data = dtim_adapter_io_dmem_s1_data_data; // @[RocketTile.scala 197:26]
+  assign dcacheArb_io_requestor_1_s1_data_mask = dtim_adapter_io_dmem_s1_data_mask; // @[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_resp_bits_data_raw = dcache_io_cpu_resp_bits_data_raw; // @[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_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_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_imem_resp_valid = frontend_io_cpu_resp_valid; // @[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_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  [2:0]  auto_tile_slave_in_a_bits_source,
+  input  [31:0] auto_tile_slave_in_a_bits_address,
+  input  [7:0]  auto_tile_slave_in_a_bits_mask,
+  input  [63:0] auto_tile_slave_in_a_bits_data,
+  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 [2:0]  auto_tile_slave_in_d_bits_source,
+  output [63:0] auto_tile_slave_in_d_bits_data,
+  output        auto_tile_wfi_out_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        auto_tile_tl_other_masters_out_a_bits_source,
+  output [31:0] auto_tile_tl_other_masters_out_a_bits_address,
+  output [7:0]  auto_tile_tl_other_masters_out_a_bits_mask,
+  output [63:0] auto_tile_tl_other_masters_out_a_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         auto_tile_tl_other_masters_out_d_bits_source,
+  input         auto_tile_tl_other_masters_out_d_bits_sink,
+  input         auto_tile_tl_other_masters_out_d_bits_denied,
+  input  [63:0] auto_tile_tl_other_masters_out_d_bits_data,
+  input         auto_tile_tl_other_masters_out_d_bits_corrupt,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  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 [2:0] tile_auto_slave_in_a_bits_source; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_slave_in_a_bits_address; // @[HasTiles.scala 253:53]
+  wire [7:0] tile_auto_slave_in_a_bits_mask; // @[HasTiles.scala 253:53]
+  wire [63:0] tile_auto_slave_in_a_bits_data; // @[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 [2:0] tile_auto_slave_in_d_bits_source; // @[HasTiles.scala 253:53]
+  wire [63: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_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  tile_auto_tl_other_masters_out_a_bits_source; // @[HasTiles.scala 253:53]
+  wire [31:0] tile_auto_tl_other_masters_out_a_bits_address; // @[HasTiles.scala 253:53]
+  wire [7:0] tile_auto_tl_other_masters_out_a_bits_mask; // @[HasTiles.scala 253:53]
+  wire [63:0] tile_auto_tl_other_masters_out_a_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  tile_auto_tl_other_masters_out_d_bits_source; // @[HasTiles.scala 253:53]
+  wire  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 [63: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]
+  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_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_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_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)
+  );
+  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_d_ready = tile_auto_tl_other_masters_out_d_ready; // @[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_d_ready = auto_tile_slave_in_d_ready; // @[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_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]
+endmodule
+module FixedClockBroadcast_4(
+  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 TLBuffer_15(
+  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         auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [3: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 [63: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        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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_param,
+  input  [3:0]  auto_out_d_bits_size,
+  input         auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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_d_ready = auto_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+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  [3:0]  io_in_a_bits_size,
+  input         io_in_a_bits_source,
+  input  [31:0] io_in_a_bits_address,
+  input  [7: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  [1:0]  io_in_d_bits_param,
+  input  [3: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;
+  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_1 = ~io_in_a_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok = io_in_a_bits_source | _source_ok_T_1; // @[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 [31:0] _GEN_71 = {{20'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [31:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 32'h0; // @[Edges.scala 20:24]
+  wire [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 4'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire [32: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 [32:0] _T_37 = $signed(_T_7) & -33'sh5000; // @[Parameters.scala 137:52]
+  wire  _T_38 = $signed(_T_37) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_39 = io_in_a_bits_address ^ 32'h3000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_40 = {1'b0,$signed(_T_39)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_42 = $signed(_T_40) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_43 = $signed(_T_42) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_44 = io_in_a_bits_address ^ 32'h10000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_45 = {1'b0,$signed(_T_44)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_47 = $signed(_T_45) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_48 = $signed(_T_47) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_49 = io_in_a_bits_address ^ 32'h20000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_50 = {1'b0,$signed(_T_49)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_52 = $signed(_T_50) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_53 = $signed(_T_52) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_54 = io_in_a_bits_address ^ 32'h100000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_55 = {1'b0,$signed(_T_54)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_57 = $signed(_T_55) & -33'sh11000; // @[Parameters.scala 137:52]
+  wire  _T_58 = $signed(_T_57) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_59 = io_in_a_bits_address ^ 32'h2000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_60 = {1'b0,$signed(_T_59)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_62 = $signed(_T_60) & -33'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_63 = $signed(_T_62) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_64 = io_in_a_bits_address ^ 32'hc000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_65 = {1'b0,$signed(_T_64)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_67 = $signed(_T_65) & -33'sh4000000; // @[Parameters.scala 137:52]
+  wire  _T_68 = $signed(_T_67) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_69 = io_in_a_bits_address ^ 32'h10000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_70 = {1'b0,$signed(_T_69)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_72 = $signed(_T_70) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_73 = $signed(_T_72) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_74 = io_in_a_bits_address ^ 32'h10010000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_75 = {1'b0,$signed(_T_74)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_77 = $signed(_T_75) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_78 = $signed(_T_77) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_79 = io_in_a_bits_address ^ 32'h10014000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_80 = {1'b0,$signed(_T_79)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_82 = $signed(_T_80) & -33'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_83 = $signed(_T_82) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_84 = io_in_a_bits_address ^ 32'h20000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_85 = {1'b0,$signed(_T_84)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_87 = $signed(_T_85) & -33'sh20000000; // @[Parameters.scala 137:52]
+  wire  _T_88 = $signed(_T_87) == 33'sh0; // @[Parameters.scala 137:67]
+  wire [31:0] _T_89 = io_in_a_bits_address ^ 32'h80000000; // @[Parameters.scala 137:31]
+  wire [32:0] _T_90 = {1'b0,$signed(_T_89)}; // @[Parameters.scala 137:49]
+  wire [32:0] _T_92 = $signed(_T_90) & -33'sh4000; // @[Parameters.scala 137:52]
+  wire  _T_93 = $signed(_T_92) == 33'sh0; // @[Parameters.scala 137:67]
+  wire  _T_202 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_206 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_207 = _T_206 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_215 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_397 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_410 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_431 = _T_26 & _T_43; // @[Parameters.scala 670:56]
+  wire  _T_433 = io_in_a_bits_size <= 4'h6; // @[Parameters.scala 92:42]
+  wire  _T_500 = _T_38 | _T_48 | _T_53 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_88 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_501 = _T_433 & _T_500; // @[Parameters.scala 670:56]
+  wire  _T_503 = _T_431 | _T_501; // @[Parameters.scala 672:30]
+  wire  _T_513 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_517 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_525 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_594 = _T_38 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_595 = _T_433 & _T_594; // @[Parameters.scala 670:56]
+  wire  _T_616 = _T_431 | _T_595; // @[Parameters.scala 672:30]
+  wire  _T_618 = _T_31 & _T_616; // @[Monitor.scala 115:71]
+  wire  _T_636 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_743 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_744 = io_in_a_bits_mask & _T_743; // @[Monitor.scala 127:31]
+  wire  _T_745 = _T_744 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_749 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_759 = io_in_a_bits_size <= 4'h3; // @[Parameters.scala 92:42]
+  wire  _T_814 = _T_38 | _T_43 | _T_58 | _T_63 | _T_68 | _T_73 | _T_78 | _T_83 | _T_93; // @[Parameters.scala 671:42]
+  wire  _T_815 = _T_759 & _T_814; // @[Parameters.scala 670:56]
+  wire  _T_837 = _T_31 & _T_815; // @[Monitor.scala 131:74]
+  wire  _T_847 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_855 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_953 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_961 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_1049 = _T_31 & _T_431; // @[Monitor.scala 147:68]
+  wire  _T_1059 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_1071 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_3 = ~io_in_d_bits_source; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = io_in_d_bits_source | _source_ok_T_3; // @[Parameters.scala 1125:46]
+  wire  _T_1075 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_1079 = io_in_d_bits_size >= 4'h3; // @[Monitor.scala 312:27]
+  wire  _T_1083 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_1087 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_1091 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_1095 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_1106 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_1110 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_1123 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_1143 = _T_1091 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_1152 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_1169 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_1187 = 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 [8:0] a_first_beats1_decode = is_aligned_mask[11:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [8:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1 = a_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 9'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 [31:0] address; // @[Monitor.scala 388:22]
+  wire  _T_1217 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_1218 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_1222 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_1226 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_1230 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_1234 = 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 [8:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [8:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1 = d_first_counter - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 9'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  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_1241 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_1242 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_1246 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_1250 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_1254 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_1258 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_1262 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  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 [8:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] a_first_counter1_1 = a_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  reg [8:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_1 = d_first_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 9'h0; // @[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 [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_73 = {{8'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 = {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_1268 = 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_1271 = _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_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [3:0] _a_opcodes_set_T = {{1'd0}, _GEN_76}; // @[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_1273 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_1275 = ~_T_1273[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_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 19'h0; // @[Monitor.scala 652:72 656:28]
+  wire [19:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 20'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_1279 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_1281 = ~_T_1075; // @[Monitor.scala 671:74]
+  wire  _T_1282 = io_in_d_valid & d_first_1 & ~_T_1075; // @[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_1075 ? _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_1281 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 675:91 676:21]
+  wire [30:0] _GEN_23 = _d_first_T & d_first_1 & _T_1281 ? _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_1281 ? _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_1268 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [1:0] _T_1292 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_1294 = _T_1292[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_1299 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_1300 = io_in_d_bits_opcode == _GEN_32 | _T_1299; // @[Monitor.scala 685:77]
+  wire  _T_1304 = 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_1311 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_1312 = io_in_d_bits_opcode == _GEN_48 | _T_1311; // @[Monitor.scala 689:72]
+  wire [7:0] a_size_lookup = _a_size_lookup_T_7[7:0];
+  wire [7:0] _GEN_78 = {{4'd0}, io_in_d_bits_size}; // @[Monitor.scala 691:36]
+  wire  _T_1316 = _GEN_78 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_1326 = _T_1279 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_1281; // @[Monitor.scala 694:116]
+  wire  _T_1328 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire  _T_1335 = 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_19[7:0];
+  wire [7:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [7:0] d_opcodes_clr = _GEN_23[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_20[15:0];
+  wire [15:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [15:0] d_sizes_clr = _GEN_24[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_1344 = ~(|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 [8:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [8:0] d_first_counter1_2 = d_first_counter_2 - 9'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 9'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_1370 = io_in_d_valid & d_first_2 & _T_1075; // @[Monitor.scala 779:71]
+  wire [1:0] d_clr_1 = _d_first_T & d_first_2 & _T_1075 ? _d_clr_wo_ready_T : 2'h0; // @[Monitor.scala 783:90 784:21]
+  wire [30:0] _GEN_69 = _d_first_T & d_first_2 & _T_1075 ? _d_sizes_clr_T_5 : 31'h0; // @[Monitor.scala 783:90 786:21]
+  wire [1:0] _T_1378 = 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_1388 = _GEN_78 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [1:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [1:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [15:0] d_sizes_clr_1 = _GEN_69[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_1 & _inflight_sizes_T_4; // @[Monitor.scala 811:56]
+  reg [31:0] watchdog_1; // @[Monitor.scala 813:27]
+  wire  _T_1413 = ~(|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 <= 9'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 <= 9'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 <= 9'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 <= 9'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 <= 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 <= 9'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 <= 9'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 <= 9'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 <= 9'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]
+      d_first_counter_2 <= 9'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 <= 9'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_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) 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 (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) 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_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 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_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 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_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 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_202 & (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_202) 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_207 & (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_207) 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 (io_in_a_valid & _T_215 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset) 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 (io_in_a_valid & _T_215 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset) 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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~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_202 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_202) 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_397 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_397) 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_207 & (io_in_a_valid & _T_215 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_215 & ~reset & ~_T_207) 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_31 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_31) 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_503 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_503) 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_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~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_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~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_513 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_513) 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_517 & (io_in_a_valid & _T_410 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_410 & ~reset & ~_T_517) 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_618 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_618) 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_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~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_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~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_513 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_513) 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_517 & (io_in_a_valid & _T_525 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_525 & ~reset & ~_T_517) 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_618 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_618) 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_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~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_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~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_513 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_513) 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_745 & (io_in_a_valid & _T_636 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_636 & ~reset & ~_T_745) 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_837 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_837) 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_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~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_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~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_847 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_847) 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_517 & (io_in_a_valid & _T_749 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_749 & ~reset & ~_T_517) 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_837 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_837) 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_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~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_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~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_953 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_953) 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_517 & (io_in_a_valid & _T_855 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_855 & ~reset & ~_T_517) 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_1049 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_1049) 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_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~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_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~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_1059 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_1059) 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_517 & (io_in_a_valid & _T_961 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_961 & ~reset & ~_T_517) 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_1071 & (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_1071) 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_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _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_1079 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1079) 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_1083 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1087) 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_1091 & (io_in_d_valid & _T_1075 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1075 & _T_2 & ~_T_1091) 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_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _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 (io_in_d_valid & _T_1095 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid 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_1079 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1079) 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_1106 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1106) 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_1110 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1110) 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_1087 & (io_in_d_valid & _T_1095 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1095 & _T_2 & ~_T_1087) 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_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _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 (io_in_d_valid & _T_1123 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid 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_1079 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1079) 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_1106 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1106) 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_1110 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1110) 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_1143 & (io_in_d_valid & _T_1123 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1123 & _T_2 & ~_T_1143) 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_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _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_1083 & (io_in_d_valid & _T_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1152 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1152 & _T_2 & ~_T_1087) 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_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _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_1083 & (io_in_d_valid & _T_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _T_2 & ~_T_1083) 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_1143 & (io_in_d_valid & _T_1169 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1169 & _T_2 & ~_T_1143) 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_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _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_1083 & (io_in_d_valid & _T_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _T_2 & ~_T_1083) 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_1087 & (io_in_d_valid & _T_1187 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_1187 & _T_2 & ~_T_1087) 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_1218 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1218) 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_1222 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1222) 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_1226 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1226) 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_1230 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1230) 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_1234 & (_T_1217 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1217 & ~reset & ~_T_1234) 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_1242 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1242) 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_1246 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1246) 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_1250 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1250) 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_1254 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1254) 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_1258 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1258) 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_1262 & (_T_1241 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1241 & _T_2 & ~_T_1262) 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_1275 & (_T_1271 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1271 & ~reset & ~_T_1275) 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_1294 & (_T_1282 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & _T_2 & ~_T_1294) 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_1300 & (_T_1282 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & same_cycle_resp & _T_2 & ~_T_1300) 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_1304 & (_T_1282 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & same_cycle_resp & _T_2 & ~_T_1304) 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_1312 & (_T_1282 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & ~same_cycle_resp & _T_2 & ~_T_1312) 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_1316 & (_T_1282 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1282 & ~same_cycle_resp & _T_2 & ~_T_1316) 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_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_1335 & _T_2) begin
+          $fatal; // @[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_1335) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 4 (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_1344 & ~reset) begin
+          $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_1344) 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_1378[0] & (_T_1370 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1370 & _T_2 & ~_T_1378[0]) 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_1388 & (_T_1370 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_1370 & _T_2 & ~_T_1388) 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_1413 & ~reset) begin
+          $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_1413) 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
+  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[8: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[31:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[8: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[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  denied = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  inflight = _RAND_13[1:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[7:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[15:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[8:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[8:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[1:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[15:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[8: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_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  [3:0]  auto_in_a_bits_size,
+  input         auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [3: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 [63: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        auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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         auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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  monitor_io_in_a_bits_source; // @[Nodes.scala 24:25]
+  wire [31:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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 [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  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  bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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  bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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  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 [63: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  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 [63: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_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_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_6 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_7 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_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 = 1'h0; // @[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 TLBuffer_17(
+  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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input  [63: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 Queue_21(
+  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  [2:0]  io_enq_bits_source,
+  input  [31:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  input  [63: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 [2:0]  io_deq_bits_source,
+  output [31:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_mask,
+  output [63:0] io_deq_bits_data
+);
+`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 [63: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 [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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [31: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 [31:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [31: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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  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 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]
+  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 (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[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[31:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[7:0];
+  _RAND_6 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_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  [2:0]  auto_in_a_bits_source,
+  input  [31:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_size,
+  output [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [31:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input  [63: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 [2:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [31:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63:0] bundleOut_0_a_q_io_deq_bits_data; // @[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 [2: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 [63: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 [2: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 [63: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_21 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)
+  );
+  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_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_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
+);
+`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 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[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]
+  AsyncResetRegVec_w1_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; // @[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]
+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_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  [2:0]  auto_tl_slave_clock_xing_in_a_bits_source,
+  input  [31:0] auto_tl_slave_clock_xing_in_a_bits_address,
+  input  [7:0]  auto_tl_slave_clock_xing_in_a_bits_mask,
+  input  [63:0] auto_tl_slave_clock_xing_in_a_bits_data,
+  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 [2: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 [63: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        auto_tl_master_clock_xing_out_a_bits_source,
+  output [31:0] auto_tl_master_clock_xing_out_a_bits_address,
+  output [7:0]  auto_tl_master_clock_xing_out_a_bits_mask,
+  output [63: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_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         auto_tl_master_clock_xing_out_d_bits_source,
+  input         auto_tl_master_clock_xing_out_d_bits_sink,
+  input         auto_tl_master_clock_xing_out_d_bits_denied,
+  input  [63:0] auto_tl_master_clock_xing_out_d_bits_data,
+  input         auto_tl_master_clock_xing_out_d_bits_corrupt,
+  input         auto_tap_clock_in_clock,
+  input         auto_tap_clock_in_reset
+);
+  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 [2:0] tile_reset_domain_auto_tile_slave_in_a_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_slave_in_a_bits_address; // @[TilePRCIDomain.scala 45:37]
+  wire [7:0] tile_reset_domain_auto_tile_slave_in_a_bits_mask; // @[TilePRCIDomain.scala 45:37]
+  wire [63:0] tile_reset_domain_auto_tile_slave_in_a_bits_data; // @[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 [2:0] tile_reset_domain_auto_tile_slave_in_d_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [63: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_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  tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire [31:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_address; // @[TilePRCIDomain.scala 45:37]
+  wire [7:0] tile_reset_domain_auto_tile_tl_other_masters_out_a_bits_mask; // @[TilePRCIDomain.scala 45:37]
+  wire [63: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_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  tile_reset_domain_auto_tile_tl_other_masters_out_d_bits_source; // @[TilePRCIDomain.scala 45:37]
+  wire  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 [63: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_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  buffer_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [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  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 [63: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  buffer_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [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  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 [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[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  buffer_1_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_1_auto_in_a_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  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 [63: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  buffer_1_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_1_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_1_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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  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 [63: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_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 [2:0] buffer_2_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_2_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_2_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_2_auto_in_a_bits_data; // @[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 [2:0] buffer_2_auto_in_d_bits_source; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_2_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_2_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_2_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_2_auto_out_a_bits_data; // @[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 [2:0] buffer_2_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_3_auto_in_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_3_auto_in_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_3_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_3_auto_in_a_bits_data; // @[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 [2: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 [63: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 [2:0] buffer_3_auto_out_a_bits_source; // @[Buffer.scala 68:28]
+  wire [31:0] buffer_3_auto_out_a_bits_address; // @[Buffer.scala 68:28]
+  wire [7:0] buffer_3_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63:0] buffer_3_auto_out_a_bits_data; // @[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 [2:0] buffer_3_auto_out_d_bits_source; // @[Buffer.scala 68:28]
+  wire [63: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  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_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_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_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_clock_in_clock(tile_reset_domain_auto_clock_in_clock),
+    .auto_clock_in_reset(tile_reset_domain_auto_clock_in_reset)
+  );
+  FixedClockBroadcast_4 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_15 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_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_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)
+  );
+  TLBuffer_16 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_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)
+  );
+  TLBuffer_17 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_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_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_18 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_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_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)
+  );
+  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_d_ready = buffer_1_auto_out_d_ready; // @[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_d_ready = buffer_2_auto_out_d_ready; // @[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_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_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_d_ready = tile_reset_domain_auto_tile_tl_other_masters_out_d_ready; // @[LazyModule.scala 298:16]
+  assign buffer_auto_out_a_ready = buffer_1_auto_in_a_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_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_d_ready = buffer_auto_out_d_ready; // @[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_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_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_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 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_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  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [27:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [27:0] _GEN_71 = {{25'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set_wo_ready = _GEN_15[79:0];
+  wire [79:0] d_clr_wo_ready = _GEN_21[79:0];
+  wire  _T_661 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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  [7:0] io_ip,
+  output [3: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  _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 = _T_26 >= effectivePriority_8; // @[Plic.scala 345:20]
+  wire [3:0] maxPri = _T_28 ? _T_26 : effectivePriority_8; // @[Misc.scala 34:9]
+  assign io_dev = _T_28 ? {{1'd0}, _T_27} : 4'h8; // @[Misc.scala 34:36]
+  assign io_max = maxPri[2:0]; // @[Plic.scala 351:10]
+endmodule
+module Queue_23(
+  input         clock,
+  input         reset,
+  output        io_enq_ready,
+  input         io_enq_valid,
+  input         io_enq_bits_read,
+  input  [22:0] io_enq_bits_index,
+  input  [63:0] io_enq_bits_data,
+  input  [7: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 [22:0] io_deq_bits_index,
+  output [63:0] io_deq_bits_data,
+  output [7: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 [63: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 [22: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 [22:0] ram_index_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [22: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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[22:0];
+  _RAND_2 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_data[initvar] = _RAND_2[63:0];
+  _RAND_3 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 1; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_3[7: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,
+  output        auto_int_out_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  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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;
+`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 [7: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 [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 [7:0] fanin_io_ip; // @[Plic.scala 184:25]
+  wire [3:0] fanin_io_dev; // @[Plic.scala 184:25]
+  wire [2:0] fanin_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 [22:0] out_back_io_enq_bits_index; // @[Decoupled.scala 361:21]
+  wire [63:0] out_back_io_enq_bits_data; // @[Decoupled.scala 361:21]
+  wire [7: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 [22:0] out_back_io_deq_bits_index; // @[Decoupled.scala 361:21]
+  wire [63:0] out_back_io_deq_bits_data; // @[Decoupled.scala 361:21]
+  wire [7: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] threshold_0; // @[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 [6:0] enables_0_0; // @[Plic.scala 174:26]
+  reg  enables_0_1; // @[Plic.scala 176:51]
+  wire [7:0] enableVec_0 = {enables_0_1,enables_0_0}; // @[Cat.scala 31:58]
+  wire [8:0] enableVec0_0 = {enables_0_1,enables_0_0,1'h0}; // @[Cat.scala 31:58]
+  reg [3:0] maxDevs_0; // @[Plic.scala 181:22]
+  wire [7:0] pendingUInt = {pending_7,pending_6,pending_5,pending_4,pending_3,pending_2,pending_1,pending_0}; // @[Cat.scala 31:58]
+  reg [2:0] bundleOut_0_0_REG; // @[Plic.scala 188:41]
+  wire [5:0] out_oindex = {out_back_io_deq_bits_index[18],out_back_io_deq_bits_index[10],out_back_io_deq_bits_index[9],
+    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 [63:0] _out_backSel_T = 64'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_32 = _out_backSel_T[32]; // @[RegisterRouter.scala 83:24]
+  wire [22:0] out_bindex = out_back_io_deq_bits_index & 23'h7bf9f8; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_13 = out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_roready_21 = out_back_io_deq_valid & auto_in_d_ready & out_back_io_deq_bits_read & out_backSel_32 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_23 = out_back_io_deq_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_21 = out_back_io_deq_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_19 = out_back_io_deq_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_17 = out_back_io_deq_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_15 = out_back_io_deq_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_13 = 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[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = out_back_io_deq_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_backMask = {_out_backMask_T_23,_out_backMask_T_21,_out_backMask_T_19,_out_backMask_T_17,
+    _out_backMask_T_15,_out_backMask_T_13,_out_backMask_T_11,_out_backMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_romask_21 = |out_backMask[63:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_21 = out_roready_21 & out_romask_21; // @[RegisterRouter.scala 83:24]
+  wire  _T_5 = ~reset; // @[Plic.scala 245:11]
+  wire [3:0] claiming = out_f_roready_21 ? maxDevs_0 : 4'h0; // @[Plic.scala 246:49]
+  wire [15:0] _claimedDevs_T = 16'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  out_woready_21 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_32 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_21 = &out_backMask[63:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_21 = out_woready_21 & out_womask_21; // @[RegisterRouter.scala 83:24]
+  wire [3:0] completerDev = out_back_io_deq_bits_data[35:32]; // @[package.scala 154:13]
+  wire [8:0] _out_completer_0_T = enableVec0_0 >> completerDev; // @[Plic.scala 295:51]
+  wire  completer_0 = out_f_woready_21 & _out_completer_0_T[0]; // @[Plic.scala 295:35]
+  wire [15:0] _completedDevs_T = 16'h1 << completerDev; // @[OneHot.scala 64:12]
+  wire [8:0] completedDevs = completer_0 ? _completedDevs_T[8:0] : 9'h0; // @[Plic.scala 264:28]
+  wire  out_backSel_16 = _out_backSel_T[16]; // @[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_16 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_1 = &out_backMask[7:1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_1 = out_woready_0 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_2 = &out_backMask[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_woready_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire [8:0] out_prepend_1 = {enables_0_1,enables_0_0,1'h0}; // @[Cat.scala 31:58]
+  wire  out_womask_3 = &out_backMask[34:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_3 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_0 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_3 = out_woready_3 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire [34:0] out_prepend_2 = {priority_0,32'h0}; // @[Cat.scala 31:58]
+  wire  out_womask_4 = &out_backMask[2:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_1 = _out_backSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_4 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_1 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready_4 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_5 = out_woready_4 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_3 = {{29'd0}, priority_1}; // @[RegisterRouter.scala 83:24]
+  wire [34:0] out_prepend_3 = {priority_2,_out_prepend_T_3}; // @[Cat.scala 31:58]
+  wire [8:0] out_prepend_11 = {pending_7,pending_6,pending_5,pending_4,pending_3,pending_2,pending_1,pending_0,1'h0}; // @[Cat.scala 31:58]
+  wire  out_backSel_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_15 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_2 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_15 = out_woready_15 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_16 = out_woready_15 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_12 = {{29'd0}, priority_3}; // @[RegisterRouter.scala 83:24]
+  wire [34:0] out_prepend_12 = {priority_4,_out_prepend_T_12}; // @[Cat.scala 31:58]
+  wire  out_backSel_3 = _out_backSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_17 = out_back_io_deq_valid & auto_in_d_ready & ~out_back_io_deq_bits_read & out_backSel_3 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_17 = out_woready_17 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_18 = out_woready_17 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_13 = {{29'd0}, priority_5}; // @[RegisterRouter.scala 83:24]
+  wire [34:0] out_prepend_13 = {priority_6,_out_prepend_T_13}; // @[Cat.scala 31:58]
+  wire  out_f_woready_19 = out_woready_21 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_14 = {1'h0,threshold_0}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_223 = {{28'd0}, out_prepend_14}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_15 = {maxDevs_0,_out_T_223}; // @[Cat.scala 31:58]
+  wire [63:0] _out_T_239 = {{28'd0}, out_prepend_15}; // @[RegisterRouter.scala 83:24]
+  wire  out_backSel_4 = _out_backSel_T[4]; // @[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_4 &
+    out_bindex == 23'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_22 = out_woready_22 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_275 = 6'h20 == out_oindex ? _out_T_13 : 1'h1; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_276 = 6'h10 == out_oindex ? _out_T_13 : _GEN_275; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_277 = 6'h8 == out_oindex ? _out_T_13 : _GEN_276; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_278 = 6'h4 == out_oindex ? _out_T_13 : _GEN_277; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_279 = 6'h3 == out_oindex ? _out_T_13 : _GEN_278; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_280 = 6'h2 == out_oindex ? _out_T_13 : _GEN_279; // @[MuxLiteral.scala 53:{26,32}]
+  wire  _GEN_281 = 6'h1 == out_oindex ? _out_T_13 : _GEN_280; // @[MuxLiteral.scala 53:{26,32}]
+  wire  out_out_bits_data_out = 6'h0 == out_oindex ? _out_T_13 : _GEN_281; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_283 = 6'h20 == out_oindex ? _out_T_239 : 64'h0; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_284 = 6'h10 == out_oindex ? {{55'd0}, out_prepend_1} : _GEN_283; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_285 = 6'h8 == out_oindex ? {{55'd0}, out_prepend_11} : _GEN_284; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_286 = 6'h4 == out_oindex ? {{61'd0}, priority_7} : _GEN_285; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_287 = 6'h3 == out_oindex ? {{29'd0}, out_prepend_13} : _GEN_286; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_288 = 6'h2 == out_oindex ? {{29'd0}, out_prepend_12} : _GEN_287; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] _GEN_289 = 6'h1 == out_oindex ? {{29'd0}, out_prepend_3} : _GEN_288; // @[MuxLiteral.scala 53:{26,32}]
+  wire [63:0] out_out_bits_data_out_1 = 6'h0 == out_oindex ? {{29'd0}, out_prepend_2} : _GEN_289; // @[MuxLiteral.scala 53:{26,32}]
+  wire  out_bits_read = out_back_io_deq_bits_read; // @[RegisterRouter.scala 83:{24,24}]
+  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_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)
+  );
+  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_ip(fanin_io_ip),
+    .io_dev(fanin_io_dev),
+    .io_max(fanin_io_max)
+  );
+  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 = 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 : 64'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 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_ip = enableVec_0 & 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:3]; // @[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_3) begin // @[RegField.scala 74:88]
+      priority_0 <= out_back_io_deq_bits_data[34:32]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_4) begin // @[RegField.scala 74:88]
+      priority_1 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_5) begin // @[RegField.scala 74:88]
+      priority_2 <= out_back_io_deq_bits_data[34:32]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_15) begin // @[RegField.scala 74:88]
+      priority_3 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_16) begin // @[RegField.scala 74:88]
+      priority_4 <= out_back_io_deq_bits_data[34:32]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_17) begin // @[RegField.scala 74:88]
+      priority_5 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_18) begin // @[RegField.scala 74:88]
+      priority_6 <= out_back_io_deq_bits_data[34:32]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_22) begin // @[RegField.scala 74:88]
+      priority_7 <= out_back_io_deq_bits_data[2:0]; // @[RegField.scala 74:92]
+    end
+    if (out_f_woready_19) begin // @[RegField.scala 74:88]
+      threshold_0 <= 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 (out_f_woready_1) 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_2) begin // @[RegField.scala 74:88]
+      enables_0_1 <= out_back_io_deq_bits_data[8]; // @[RegField.scala 74:92]
+    end
+    maxDevs_0 <= fanin_io_dev; // @[Plic.scala 187:21]
+    bundleOut_0_0_REG <= fanin_io_max; // @[Plic.scala 188:41]
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~(~(out_f_roready_21 & out_f_roready_21 - 1'h1)) & ~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 & ~(~(out_f_roready_21 & out_f_roready_21 - 1'h1))) 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 (~(~(completer_0 & completer_0 - 1'h1)) & _T_5) 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_5 & ~(~(completer_0 & completer_0 - 1'h1))) 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_5) 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_5 & ~(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}};
+  threshold_0 = _RAND_8[2:0];
+  _RAND_9 = {1{`RANDOM}};
+  pending_0 = _RAND_9[0:0];
+  _RAND_10 = {1{`RANDOM}};
+  pending_1 = _RAND_10[0:0];
+  _RAND_11 = {1{`RANDOM}};
+  pending_2 = _RAND_11[0:0];
+  _RAND_12 = {1{`RANDOM}};
+  pending_3 = _RAND_12[0:0];
+  _RAND_13 = {1{`RANDOM}};
+  pending_4 = _RAND_13[0:0];
+  _RAND_14 = {1{`RANDOM}};
+  pending_5 = _RAND_14[0:0];
+  _RAND_15 = {1{`RANDOM}};
+  pending_6 = _RAND_15[0:0];
+  _RAND_16 = {1{`RANDOM}};
+  pending_7 = _RAND_16[0:0];
+  _RAND_17 = {1{`RANDOM}};
+  enables_0_0 = _RAND_17[6:0];
+  _RAND_18 = {1{`RANDOM}};
+  enables_0_1 = _RAND_18[0:0];
+  _RAND_19 = {1{`RANDOM}};
+  maxDevs_0 = _RAND_19[3:0];
+  _RAND_20 = {1{`RANDOM}};
+  bundleOut_0_0_REG = _RAND_20[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,
+  output        auto_plic_int_out_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  [7:0]  auto_plic_in_a_bits_mask,
+  input  [63: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 [63: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_out_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 [7:0] plic_auto_in_a_bits_mask; // @[Plic.scala 362:46]
+  wire [63: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 [63: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_out_0(plic_auto_int_out_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_0 = plic_auto_int_out_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_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_44(
+  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  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [25:0] _GEN_71 = {{23'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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 [7: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 [12:0] in_bits_index = auto_in_a_bits_address[15:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [1:0] out_iindex = {in_bits_index[12],in_bits_index[11]}; // @[Cat.scala 31:58]
+  wire [12:0] out_findex = in_bits_index & 13'h7ff; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_2 = out_findex == 13'h7ff; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 13'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_backSel_T = 4'h1 << out_iindex; // @[OneHot.scala 57:35]
+  wire  out_backSel_1 = _out_backSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_0 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_backSel_1 & out_findex == 13'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_23 = auto_in_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_21 = auto_in_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_19 = auto_in_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_17 = auto_in_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_15 = auto_in_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_13 = auto_in_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_11 = auto_in_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_9 = auto_in_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_backMask = {_out_backMask_T_23,_out_backMask_T_21,_out_backMask_T_19,_out_backMask_T_17,
+    _out_backMask_T_15,_out_backMask_T_13,_out_backMask_T_11,_out_backMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_womask = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready = out_woready_0 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_1 = &out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_1 = out_woready_0 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_2 = &out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_2 = out_woready_0 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_3 = &out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_3 = out_woready_0 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_4 = &out_backMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_4 = out_woready_0 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_5 = &out_backMask[47:40]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_5 = out_woready_0 & out_womask_5; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_6 = &out_backMask[55:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_6 = out_woready_0 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_7 = &out_backMask[63:56]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_7 = out_woready_0 & out_womask_7; // @[RegisterRouter.scala 83:24]
+  wire [7:0] newBytes__1 = out_f_woready_1 ? auto_in_a_bits_data[15:8] : oldBytes__1; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__0 = out_f_woready ? auto_in_a_bits_data[7:0] : oldBytes__0; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__3 = out_f_woready_3 ? auto_in_a_bits_data[31:24] : oldBytes__3; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__2 = out_f_woready_2 ? auto_in_a_bits_data[23:16] : oldBytes__2; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__5 = out_f_woready_5 ? auto_in_a_bits_data[47:40] : oldBytes__5; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__4 = out_f_woready_4 ? auto_in_a_bits_data[39:32] : oldBytes__4; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__7 = out_f_woready_7 ? auto_in_a_bits_data[63:56] : oldBytes__7; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes__6 = out_f_woready_6 ? auto_in_a_bits_data[55:48] : 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_2 = _out_backSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_8 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_backSel_2 & out_findex == 13'h7ff; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_8 = out_woready_8 & out_womask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_9 = out_woready_8 & out_womask_1; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_10 = out_woready_8 & out_womask_2; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_11 = out_woready_8 & out_womask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_12 = out_woready_8 & out_womask_4; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_13 = out_woready_8 & out_womask_5; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_14 = out_woready_8 & out_womask_6; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_15 = out_woready_8 & out_womask_7; // @[RegisterRouter.scala 83:24]
+  wire [7:0] newBytes_1_1 = out_f_woready_9 ? auto_in_a_bits_data[15:8] : oldBytes_1_1; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_0 = out_f_woready_8 ? auto_in_a_bits_data[7:0] : oldBytes_1_0; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_3 = out_f_woready_11 ? auto_in_a_bits_data[31:24] : oldBytes_1_3; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_2 = out_f_woready_10 ? auto_in_a_bits_data[23:16] : oldBytes_1_2; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_5 = out_f_woready_13 ? auto_in_a_bits_data[47:40] : oldBytes_1_5; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_4 = out_f_woready_12 ? auto_in_a_bits_data[39:32] : oldBytes_1_4; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_7 = out_f_woready_15 ? auto_in_a_bits_data[63:56] : oldBytes_1_7; // @[RegField.scala 158:{20,33}]
+  wire [7:0] newBytes_1_6 = out_f_woready_14 ? auto_in_a_bits_data[55:48] : 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 [63:0] out_prepend_6 = {oldBytes__7,oldBytes__6,oldBytes__5,oldBytes__4,oldBytes__3,oldBytes__2,oldBytes__1,
+    oldBytes__0}; // @[Cat.scala 31:58]
+  wire [63:0] out_prepend_13 = {oldBytes_1_7,oldBytes_1_6,oldBytes_1_5,oldBytes_1_4,oldBytes_1_3,oldBytes_1_2,
+    oldBytes_1_1,oldBytes_1_0}; // @[Cat.scala 31:58]
+  wire  out_wimask_16 = &out_backMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_0 = _out_backSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_16 = auto_in_a_valid & auto_in_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 13'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_16 = out_wivalid_16 & out_wimask_16; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_14 = {1'h0,ipi_0}; // @[Cat.scala 31:58]
+  wire [31:0] _out_T_200 = {{30'd0}, out_prepend_14}; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_37 = 2'h1 == out_iindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_38 = 2'h2 == out_iindex ? _out_T_2 : _GEN_37; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_39 = 2'h3 == out_iindex | _GEN_38; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_0 = {{32'd0}, _out_T_200}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_41 = 2'h1 == out_iindex ? out_prepend_6 : _out_out_bits_data_WIRE_1_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_42 = 2'h2 == out_iindex ? out_prepend_13 : _GEN_41; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_43 = 2'h3 == out_iindex ? 64'h0 : _GEN_42; // @[MuxLiteral.scala 48:{10,10}]
+  TLMonitor_44 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_39 ? _GEN_43 : 64'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_8 | out_f_woready_9 | out_f_woready_10 | out_f_woready_11 | out_f_woready_12 |
+      out_f_woready_13 | out_f_woready_14 | out_f_woready_15) 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 | out_f_woready_1 | out_f_woready_2 | out_f_woready_3 | out_f_woready_4 | out_f_woready_5 |
+      out_f_woready_6 | out_f_woready_7) 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_16) 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_45(
+  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_8(
+  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_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_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_46(
+  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_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'h112380 : 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_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_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_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_47(
+  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_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_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_48(
+  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_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_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_49(
+  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 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  [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,
+  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;
+`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 | ~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_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(
+  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,
+  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 [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 | ~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  [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         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         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
+);
+  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  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  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_source_reset_n; // @[AsyncQueue.scala 207:22]
+  wire  bundleIn_0_d_sink_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 207:22]
+  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),
+    .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_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),
+    .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_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_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_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 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_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]
+  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 AsyncQueueSource_1(
+  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,
+  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;
+`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 | ~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_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         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_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,
+  input         auto_asource_out_d_safe_source_reset_n,
+  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_dmactive,
+  input         io_ctrl_dmactiveAck,
+  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_innerCtrl_safe_sink_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_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  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_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_source_reset_n; // @[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  io_innerCtrl_source_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  dmactiveAck = dmactiveAck_dmactiveAckSync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  TLXbar_8 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_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 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_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_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_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)
+  );
+  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_1 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),
+    .io_async_safe_sink_reset_n(io_innerCtrl_source_io_async_safe_sink_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_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_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_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 asource_auto_out_d_safe_source_reset_n = auto_asource_out_d_safe_source_reset_n; // @[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 = io_ctrl_dmactiveAck; // @[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]
+  assign io_innerCtrl_source_io_async_safe_sink_reset_n = io_innerCtrl_safe_sink_reset_n; // @[Debug.scala 684:20]
+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  [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  _T_2 = ~reset; // @[Monitor.scala 42: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_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 [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_2 = {{15'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [17:0] _a_sizes_set_T_1 = _GEN_2 << _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_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 [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] _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_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]
+  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]
+      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 <= 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: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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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_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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & _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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 & ~_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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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: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 & ~reset)) begin
+          $fatal; // @[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: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 & ~reset)) begin
+          $fatal; // @[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_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 & ~reset)) begin
+          $fatal; // @[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_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 & ~reset)) begin
+          $fatal; // @[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_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 & ~reset)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & ~reset)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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: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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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_51(
+  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  [11:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [11:0] _GEN_71 = {{9'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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 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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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_37 & (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_37) 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        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 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 & ~reset)) begin
+          $fatal; // @[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 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 & ~reset)) begin
+          $fatal; // @[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 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 & ~reset)) begin
+          $fatal; // @[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 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 & ~reset)) begin
+          $fatal; // @[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 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 & ~reset)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & ~reset)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & _T_2)) begin
+          $fatal; // @[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 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 & ~reset) begin
+          $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 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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,
+  input         reset,
+  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  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [63: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,
+  input         io_hartIsInReset_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;
+  reg [31:0] _RAND_82;
+  reg [31:0] _RAND_83;
+  reg [31:0] _RAND_84;
+  reg [31:0] _RAND_85;
+`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  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_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 [11:0] monitor_1_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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]
+  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_46 = out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_4 = out_findex == 7'h10; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_22 = 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__65 = 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_65 = &out_backMask[10:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_65 = out_woready__65 & out_womask_65; // @[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_65 & 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_1399 = 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_2094 = ~accessRegisterCommandReg_transfer | accessRegIsGPR ? 1'h0 : 1'h1; // @[Debug.scala 1660:73 1661:33]
+  wire  commandRegIsUnsupported = commandRegIsAccessRegister ? _GEN_2094 : 1'h1; // @[Debug.scala 1657:39]
+  wire  _GEN_2095 = (~accessRegisterCommandReg_transfer | accessRegIsGPR) & _T_10; // @[Debug.scala 1660:73 1662:33]
+  wire  commandRegBadHaltResume = commandRegIsAccessRegister & _GEN_2095; // @[Debug.scala 1657:39]
+  wire  _GEN_2111 = commandRegIsUnsupported ? 1'h0 : commandRegBadHaltResume; // @[Debug.scala 1688:38]
+  wire  _GEN_2124 = ctrlStateReg == 2'h1 & _GEN_2111; // @[Debug.scala 1681:59]
+  wire  errorHaltResume = ABSTRACTCSWrEnLegal ? 1'h0 : _GEN_2124; // @[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__90 = 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_90 = &out_backMask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_90 = out_woready__90 & out_womask_90; // @[RegisterRouter.scala 83:24]
+  wire  COMMANDWrEn = out_f_woready_90 & ABSTRACTCSWrEnLegal; // @[Debug.scala 1180:40]
+  wire [31:0] COMMANDWrDataVal = out_f_woready_90 ? 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__96 = 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_96 = &out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_96 = out_woready__96 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__96 = 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_96 = |out_backMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_96 = out_roready__96 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_0 = out_f_woready_96 | out_f_roready_96; // @[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_5 = _out_backSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__0 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & ~in_bits_read & out_backSel_5 & out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready = out_woready__0 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__0 = auto_dmi_in_a_valid & auto_dmi_in_d_ready & in_bits_read & out_backSel_5 & out_findex == 7'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready = out_roready__0 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_4 = out_f_woready | out_f_roready; // @[Debug.scala 1153:105]
+  wire  autoexecData_1 = dmiAbstractDataAccessVec_4 & ABSTRACTAUTOReg_autoexecdata[1]; // @[Debug.scala 1164:140]
+  wire  out_backSel_16 = _out_backSel_T[16]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready__31 = 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_31 = out_woready__31 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__31 = 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_31 = out_roready__31 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_0 = out_f_woready_31 | out_f_roready_31; // @[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__23 = 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_23 = out_woready__23 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__23 = 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_23 = out_roready__23 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_4 = out_f_woready_23 | out_f_roready_23; // @[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__35 = 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_35 = out_woready__35 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__35 = 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_35 = out_roready__35 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_8 = out_f_woready_35 | out_f_roready_35; // @[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__78 = 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_78 = out_woready__78 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__78 = 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_78 = out_roready__78 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_12 = out_f_woready_78 | out_f_roready_78; // @[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__91 = 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_91 = out_woready__91 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__91 = 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_91 = out_roready__91 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_16 = out_f_woready_91 | out_f_roready_91; // @[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__11 = 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_11 = out_woready__11 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__11 = 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_11 = out_roready__11 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_20 = out_f_woready_11 | out_f_roready_11; // @[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__19 = 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_19 = out_woready__19 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__19 = 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_19 = out_roready__19 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_24 = out_f_woready_19 | out_f_roready_19; // @[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__74 = 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_74 = out_woready__74 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__74 = 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_74 = out_roready__74 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_28 = out_f_woready_74 | out_f_roready_74; // @[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__86 = 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_86 = out_woready__86 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__86 = 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_86 = out_roready__86 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_32 = out_f_woready_86 | out_f_roready_86; // @[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__27 = 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_27 = out_woready__27 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__27 = 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_27 = out_roready__27 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_36 = out_f_woready_27 | out_f_roready_27; // @[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__4 = 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_4 = out_woready__4 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__4 = 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_4 = out_roready__4 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_40 = out_f_woready_4 | out_f_roready_4; // @[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__82 = 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_82 = out_woready__82 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__82 = 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_82 = out_roready__82 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_44 = out_f_woready_82 | out_f_roready_82; // @[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__70 = 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_70 = out_woready__70 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__70 = 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_70 = out_roready__70 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_48 = out_f_woready_70 | out_f_roready_70; // @[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__39 = 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_39 = out_woready__39 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__39 = 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_39 = out_roready__39 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_52 = out_f_woready_39 | out_f_roready_39; // @[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__15 = 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_15 = out_woready__15 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__15 = 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_15 = out_roready__15 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_56 = out_f_woready_15 | out_f_roready_15; // @[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__100 = 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_100 = out_woready__100 & out_womask_96; // @[RegisterRouter.scala 83:24]
+  wire  out_roready__100 = 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_100 = out_roready__100 & out_romask_96; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_60 = out_f_woready_100 | out_f_roready_100; // @[Debug.scala 1156:108]
+  wire  autoexecProg_15 = dmiProgramBufferAccessVec_60 & ABSTRACTAUTOReg_autoexecprogbuf[15]; // @[Debug.scala 1165:144]
+  wire  autoexec = autoexecData_0 | autoexecData_1 | (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_1398 = autoexec & commandRegIsUnsupported; // @[Debug.scala 1678:28]
+  wire  _GEN_2101 = commandWrIsUnsupported | _T_1398; // @[Debug.scala 1676:43 1677:26]
+  wire  _GEN_2103 = wrAccessRegisterCommand | regAccessRegisterCommand ? 1'h0 : _GEN_2101; // @[Debug.scala 1674:66]
+  wire  _GEN_2122 = ctrlStateReg == 2'h1 & commandRegIsUnsupported; // @[Debug.scala 1681:59]
+  wire  errorUnsupported = ABSTRACTCSWrEnLegal ? _GEN_2103 : _GEN_2122; // @[Debug.scala 1673:47]
+  wire  _T_1400 = 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 [8:0] in_1_bits_index = auto_tl_in_a_bits_address[11:3]; // @[Edges.scala 191:34]
+  wire [7:0] out_iindex_1 = {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 [8:0] out_findex_1 = in_1_bits_index & 9'h100; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_1342 = out_findex_1 == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_1266 = out_findex_1 == 9'h100; // @[RegisterRouter.scala 83:24]
+  wire [255:0] _out_backSel_T_1 = 256'h1 << out_iindex_1; // @[OneHot.scala 57:35]
+  wire  out_backSel_33 = _out_backSel_T_1[33]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1_345 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_backSel_33 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_backMask_T_35 = auto_tl_in_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_33 = auto_tl_in_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_31 = auto_tl_in_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_29 = auto_tl_in_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_27 = auto_tl_in_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_25 = auto_tl_in_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_23 = auto_tl_in_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_backMask_T_21 = auto_tl_in_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_backMask_1 = {_out_backMask_T_35,_out_backMask_T_33,_out_backMask_T_31,_out_backMask_T_29,
+    _out_backMask_T_27,_out_backMask_T_25,_out_backMask_T_23,_out_backMask_T_21}; // @[Cat.scala 31:58]
+  wire  out_womask_449 = &out_backMask_1[41:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_449 = out_woready_1_345 & out_womask_449; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_2120 = ctrlStateReg == 2'h2 & out_f_woready_449; // @[Debug.scala 1702:51]
+  wire  _GEN_2126 = ctrlStateReg == 2'h1 ? 1'h0 : _GEN_2120; // @[Debug.scala 1681:59]
+  wire  errorException = ABSTRACTCSWrEnLegal ? 1'h0 : _GEN_2126; // @[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__8 = 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_8 = &out_backMask[1:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_8 = out_woready__8 & out_womask_8; // @[RegisterRouter.scala 83:24]
+  wire  _errorBusy_T_3 = out_f_woready_8 & _errorBusy_T; // @[Debug.scala 1633:42]
+  wire  _errorBusy_T_4 = out_f_woready_65 & ~ABSTRACTCSWrEnLegal | _errorBusy_T_3; // @[Debug.scala 1632:74]
+  wire  out_womask_10 = &out_backMask[31:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_10 = out_woready__8 & out_womask_10; // @[RegisterRouter.scala 83:24]
+  wire  _errorBusy_T_6 = out_f_woready_10 & _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_90 & _errorBusy_T; // @[Debug.scala 1635:42]
+  wire  _errorBusy_T_10 = _errorBusy_T_7 | _errorBusy_T_9; // @[Debug.scala 1634:74]
+  wire  out_womask_97 = &out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_97 = out_woready__96 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_97 = |out_backMask[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_97 = out_roready__96 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_1 = out_f_woready_97 | out_f_roready_97; // @[Debug.scala 1153:105]
+  wire  out_womask_98 = &out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_98 = out_woready__96 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_98 = |out_backMask[23:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_98 = out_roready__96 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_2 = out_f_woready_98 | out_f_roready_98; // @[Debug.scala 1153:105]
+  wire  out_womask_99 = &out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_99 = out_woready__96 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_romask_99 = |out_backMask[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_99 = out_roready__96 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_3 = out_f_woready_99 | out_f_roready_99; // @[Debug.scala 1153:105]
+  wire  out_f_woready_1 = out_woready__0 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_1 = out_roready__0 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_5 = out_f_woready_1 | out_f_roready_1; // @[Debug.scala 1153:105]
+  wire  out_f_woready_2 = out_woready__0 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_2 = out_roready__0 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_6 = out_f_woready_2 | out_f_roready_2; // @[Debug.scala 1153:105]
+  wire  out_f_woready_3 = out_woready__0 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_3 = out_roready__0 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiAbstractDataAccessVec_7 = out_f_woready_3 | out_f_roready_3; // @[Debug.scala 1153:105]
+  wire  dmiAbstractDataAccess = dmiAbstractDataAccessVec_0 | dmiAbstractDataAccessVec_1 | dmiAbstractDataAccessVec_2 |
+    dmiAbstractDataAccessVec_3 | dmiAbstractDataAccessVec_4 | dmiAbstractDataAccessVec_5 | dmiAbstractDataAccessVec_6 |
+    dmiAbstractDataAccessVec_7; // @[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_32 = out_woready__31 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_32 = out_roready__31 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_1 = out_f_woready_32 | out_f_roready_32; // @[Debug.scala 1156:108]
+  wire  out_f_woready_33 = out_woready__31 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_33 = out_roready__31 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_2 = out_f_woready_33 | out_f_roready_33; // @[Debug.scala 1156:108]
+  wire  out_f_woready_34 = out_woready__31 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_34 = out_roready__31 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_3 = out_f_woready_34 | out_f_roready_34; // @[Debug.scala 1156:108]
+  wire  out_f_woready_24 = out_woready__23 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_24 = out_roready__23 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_5 = out_f_woready_24 | out_f_roready_24; // @[Debug.scala 1156:108]
+  wire  out_f_woready_25 = out_woready__23 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_25 = out_roready__23 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_6 = out_f_woready_25 | out_f_roready_25; // @[Debug.scala 1156:108]
+  wire  out_f_woready_26 = out_woready__23 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_26 = out_roready__23 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_7 = out_f_woready_26 | out_f_roready_26; // @[Debug.scala 1156:108]
+  wire  out_f_woready_36 = out_woready__35 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_36 = out_roready__35 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_9 = out_f_woready_36 | out_f_roready_36; // @[Debug.scala 1156:108]
+  wire  out_f_woready_37 = out_woready__35 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_37 = out_roready__35 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_10 = out_f_woready_37 | out_f_roready_37; // @[Debug.scala 1156:108]
+  wire  out_f_woready_38 = out_woready__35 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_38 = out_roready__35 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_11 = out_f_woready_38 | out_f_roready_38; // @[Debug.scala 1156:108]
+  wire  out_f_woready_79 = out_woready__78 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_79 = out_roready__78 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_13 = out_f_woready_79 | out_f_roready_79; // @[Debug.scala 1156:108]
+  wire  out_f_woready_80 = out_woready__78 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_80 = out_roready__78 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_14 = out_f_woready_80 | out_f_roready_80; // @[Debug.scala 1156:108]
+  wire  out_f_woready_81 = out_woready__78 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_81 = out_roready__78 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_15 = out_f_woready_81 | out_f_roready_81; // @[Debug.scala 1156:108]
+  wire  out_f_woready_92 = out_woready__91 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_92 = out_roready__91 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_17 = out_f_woready_92 | out_f_roready_92; // @[Debug.scala 1156:108]
+  wire  out_f_woready_93 = out_woready__91 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_93 = out_roready__91 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_18 = out_f_woready_93 | out_f_roready_93; // @[Debug.scala 1156:108]
+  wire  out_f_woready_94 = out_woready__91 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_94 = out_roready__91 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_19 = out_f_woready_94 | out_f_roready_94; // @[Debug.scala 1156:108]
+  wire  out_f_woready_12 = out_woready__11 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_12 = out_roready__11 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_21 = out_f_woready_12 | out_f_roready_12; // @[Debug.scala 1156:108]
+  wire  out_f_woready_13 = out_woready__11 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_13 = out_roready__11 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_22 = out_f_woready_13 | out_f_roready_13; // @[Debug.scala 1156:108]
+  wire  out_f_woready_14 = out_woready__11 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_14 = out_roready__11 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_23 = out_f_woready_14 | out_f_roready_14; // @[Debug.scala 1156:108]
+  wire  out_f_woready_20 = out_woready__19 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_20 = out_roready__19 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_25 = out_f_woready_20 | out_f_roready_20; // @[Debug.scala 1156:108]
+  wire  out_f_woready_21 = out_woready__19 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_21 = out_roready__19 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_26 = out_f_woready_21 | out_f_roready_21; // @[Debug.scala 1156:108]
+  wire  out_f_woready_22 = out_woready__19 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_22 = out_roready__19 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_27 = out_f_woready_22 | out_f_roready_22; // @[Debug.scala 1156:108]
+  wire  out_f_woready_75 = out_woready__74 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_75 = out_roready__74 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_29 = out_f_woready_75 | out_f_roready_75; // @[Debug.scala 1156:108]
+  wire  out_f_woready_76 = out_woready__74 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_76 = out_roready__74 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_30 = out_f_woready_76 | out_f_roready_76; // @[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_77 = out_woready__74 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_77 = out_roready__74 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_31 = out_f_woready_77 | out_f_roready_77; // @[Debug.scala 1156:108]
+  wire  out_f_woready_87 = out_woready__86 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_87 = out_roready__86 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_33 = out_f_woready_87 | out_f_roready_87; // @[Debug.scala 1156:108]
+  wire  out_f_woready_88 = out_woready__86 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_88 = out_roready__86 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_34 = out_f_woready_88 | out_f_roready_88; // @[Debug.scala 1156:108]
+  wire  out_f_woready_89 = out_woready__86 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_89 = out_roready__86 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_35 = out_f_woready_89 | out_f_roready_89; // @[Debug.scala 1156:108]
+  wire  out_f_woready_28 = out_woready__27 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_28 = out_roready__27 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_37 = out_f_woready_28 | out_f_roready_28; // @[Debug.scala 1156:108]
+  wire  out_f_woready_29 = out_woready__27 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_29 = out_roready__27 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_38 = out_f_woready_29 | out_f_roready_29; // @[Debug.scala 1156:108]
+  wire  out_f_woready_30 = out_woready__27 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_30 = out_roready__27 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_39 = out_f_woready_30 | out_f_roready_30; // @[Debug.scala 1156:108]
+  wire  out_f_woready_5 = out_woready__4 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_5 = out_roready__4 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_41 = out_f_woready_5 | out_f_roready_5; // @[Debug.scala 1156:108]
+  wire  out_f_woready_6 = out_woready__4 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_6 = out_roready__4 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_42 = out_f_woready_6 | out_f_roready_6; // @[Debug.scala 1156:108]
+  wire  out_f_woready_7 = out_woready__4 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_7 = out_roready__4 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_43 = out_f_woready_7 | out_f_roready_7; // @[Debug.scala 1156:108]
+  wire  out_f_woready_83 = out_woready__82 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_83 = out_roready__82 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_45 = out_f_woready_83 | out_f_roready_83; // @[Debug.scala 1156:108]
+  wire  out_f_woready_84 = out_woready__82 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_84 = out_roready__82 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_46 = out_f_woready_84 | out_f_roready_84; // @[Debug.scala 1156:108]
+  wire  out_f_woready_85 = out_woready__82 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_85 = out_roready__82 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_47 = out_f_woready_85 | out_f_roready_85; // @[Debug.scala 1156:108]
+  wire  out_f_woready_71 = out_woready__70 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_71 = out_roready__70 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_49 = out_f_woready_71 | out_f_roready_71; // @[Debug.scala 1156:108]
+  wire  out_f_woready_72 = out_woready__70 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_72 = out_roready__70 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_50 = out_f_woready_72 | out_f_roready_72; // @[Debug.scala 1156:108]
+  wire  out_f_woready_73 = out_woready__70 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_73 = out_roready__70 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_51 = out_f_woready_73 | out_f_roready_73; // @[Debug.scala 1156:108]
+  wire  out_f_woready_40 = out_woready__39 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_40 = out_roready__39 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_53 = out_f_woready_40 | out_f_roready_40; // @[Debug.scala 1156:108]
+  wire  out_f_woready_41 = out_woready__39 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_41 = out_roready__39 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_54 = out_f_woready_41 | out_f_roready_41; // @[Debug.scala 1156:108]
+  wire  out_f_woready_42 = out_woready__39 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_42 = out_roready__39 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_55 = out_f_woready_42 | out_f_roready_42; // @[Debug.scala 1156:108]
+  wire  out_f_woready_16 = out_woready__15 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_16 = out_roready__15 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_57 = out_f_woready_16 | out_f_roready_16; // @[Debug.scala 1156:108]
+  wire  out_f_woready_17 = out_woready__15 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_17 = out_roready__15 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_58 = out_f_woready_17 | out_f_roready_17; // @[Debug.scala 1156:108]
+  wire  out_f_woready_18 = out_woready__15 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_18 = out_roready__15 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_59 = out_f_woready_18 | out_f_roready_18; // @[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_101 = out_woready__100 & out_womask_97; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_101 = out_roready__100 & out_romask_97; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_61 = out_f_woready_101 | out_f_roready_101; // @[Debug.scala 1156:108]
+  wire  out_f_woready_102 = out_woready__100 & out_womask_98; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_102 = out_roready__100 & out_romask_98; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_62 = out_f_woready_102 | out_f_roready_102; // @[Debug.scala 1156:108]
+  wire  out_f_woready_103 = out_woready__100 & out_womask_99; // @[RegisterRouter.scala 83:24]
+  wire  out_f_roready_103 = out_roready__100 & out_romask_99; // @[RegisterRouter.scala 83:24]
+  wire  dmiProgramBufferAccessVec_63 = out_f_woready_103 | out_f_roready_103; // @[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 = {{10'd0}, auto_dmi_in_a_bits_data[1:0]};
+  wire [11:0] _ABSTRACTAUTOReg_autoexecdata_T = ABSTRACTAUTOWrData_autoexecdata & 12'h3; // @[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] abstractDataMem_4; // @[Debug.scala 1195:36]
+  reg [7:0] abstractDataMem_5; // @[Debug.scala 1195:36]
+  reg [7:0] abstractDataMem_6; // @[Debug.scala 1195:36]
+  reg [7:0] abstractDataMem_7; // @[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_2135 = {{1'd0}, haltedBitRegs}; // @[Debug.scala 1218:43]
+  wire [1:0] _haltedBitRegs_T = _GEN_2135 | 2'h1; // @[Debug.scala 1218:43]
+  wire [1:0] _GEN_2136 = {{1'd0}, _resumeReqRegs_T}; // @[Debug.scala 1218:64]
+  wire [1:0] _haltedBitRegs_T_2 = _haltedBitRegs_T & _GEN_2136; // @[Debug.scala 1218:64]
+  wire [1:0] _haltedBitRegs_T_4 = _GEN_2135 & 2'h2; // @[Debug.scala 1220:43]
+  wire [1:0] _haltedBitRegs_T_6 = _haltedBitRegs_T_4 & _GEN_2136; // @[Debug.scala 1220:69]
+  wire  _haltedBitRegs_T_8 = haltedBitRegs & _resumeReqRegs_T; // @[Debug.scala 1222:42]
+  wire  out_womask_448 = &out_backMask_1[9:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_448 = out_woready_1_345 & out_womask_448; // @[RegisterRouter.scala 83:24]
+  wire [1:0] _GEN_61 = out_f_woready_448 ? _haltedBitRegs_T_6 : {{1'd0}, _haltedBitRegs_T_8}; // @[Debug.scala 1219:39 1220:25 1222:25]
+  wire  out_backSel_32 = _out_backSel_T_1[32]; // @[RegisterRouter.scala 83:24]
+  wire  out_woready_1_527 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_backSel_32 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_631 = out_woready_1_527 & out_womask_448; // @[RegisterRouter.scala 83:24]
+  wire [1:0] _GEN_62 = out_f_woready_631 ? _haltedBitRegs_T_2 : _GEN_61; // @[Debug.scala 1217:31 1218:25]
+  wire [1:0] _GEN_2139 = {{1'd0}, resumeReqRegs}; // @[Debug.scala 1226:43]
+  wire [1:0] _resumeReqRegs_T_3 = _GEN_2139 & 2'h2; // @[Debug.scala 1226:43]
+  wire [1:0] _resumeReqRegs_T_5 = _resumeReqRegs_T_3 & _GEN_2136; // @[Debug.scala 1226:69]
+  wire [1:0] _GEN_63 = out_f_woready_448 ? _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 = {abstractDataMem_7,abstractDataMem_6,abstractDataMem_5,abstractDataMem_4}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_5 = {programBufferMem_43,programBufferMem_42,programBufferMem_41,programBufferMem_40}; // @[Cat.scala 31:58]
+  wire [2:0] out_prepend_6 = {1'h0,ABSTRACTAUTOReg_autoexecdata[1:0]}; // @[Cat.scala 31:58]
+  wire [15:0] _out_T_154 = {{13'd0}, out_prepend_6}; // @[RegisterRouter.scala 83:24]
+  wire [31:0] out_prepend_7 = {ABSTRACTAUTOReg_autoexecprogbuf,_out_T_154}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_10 = {programBufferMem_23,programBufferMem_22,programBufferMem_21,programBufferMem_20}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_13 = {programBufferMem_59,programBufferMem_58,programBufferMem_57,programBufferMem_56}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_16 = {programBufferMem_27,programBufferMem_26,programBufferMem_25,programBufferMem_24}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_19 = {programBufferMem_7,programBufferMem_6,programBufferMem_5,programBufferMem_4}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_22 = {programBufferMem_39,programBufferMem_38,programBufferMem_37,programBufferMem_36}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_25 = {programBufferMem_3,programBufferMem_2,programBufferMem_1,programBufferMem_0}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_28 = {programBufferMem_11,programBufferMem_10,programBufferMem_9,programBufferMem_8}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_31 = {programBufferMem_55,programBufferMem_54,programBufferMem_53,programBufferMem_52}; // @[Cat.scala 31:58]
+  wire [16:0] out_prepend_44 = {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_48 = {1'h0,haveResetBitRegs,haveResetBitRegs,resumeAcks,out_prepend_44}; // @[Cat.scala 31:58]
+  wire [21:0] _out_T_688 = {{1'd0}, out_prepend_48}; // @[RegisterRouter.scala 83:24]
+  wire [22:0] out_prepend_49 = {1'h0,_out_T_688}; // @[Cat.scala 31:58]
+  wire  abstractCommandBusy = ctrlStateReg != 2'h0; // @[Debug.scala 1624:42]
+  wire [13:0] out_prepend_54 = {1'h0,abstractCommandBusy,1'h0,ABSTRACTCSReg_cmderr,8'h2}; // @[Cat.scala 31:58]
+  wire [23:0] _out_T_753 = {{10'd0}, out_prepend_54}; // @[RegisterRouter.scala 83:24]
+  wire [28:0] out_prepend_55 = {5'h10,_out_T_753}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_58 = {programBufferMem_51,programBufferMem_50,programBufferMem_49,programBufferMem_48}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_61 = {programBufferMem_31,programBufferMem_30,programBufferMem_29,programBufferMem_28}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_64 = {programBufferMem_15,programBufferMem_14,programBufferMem_13,programBufferMem_12}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_67 = {programBufferMem_47,programBufferMem_46,programBufferMem_45,programBufferMem_44}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_70 = {programBufferMem_35,programBufferMem_34,programBufferMem_33,programBufferMem_32}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_73 = {programBufferMem_19,programBufferMem_18,programBufferMem_17,programBufferMem_16}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_76 = {abstractDataMem_3,abstractDataMem_2,abstractDataMem_1,abstractDataMem_0}; // @[Cat.scala 31:58]
+  wire [31:0] out_prepend_79 = {programBufferMem_63,programBufferMem_62,programBufferMem_61,programBufferMem_60}; // @[Cat.scala 31:58]
+  wire  _GEN_270 = 5'h1 == out_iindex ? _out_T_4 : _out_T_22; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_272 = 5'h3 == out_iindex ? _out_T_4 : 5'h2 == out_iindex | _GEN_270; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_273 = 5'h4 == out_iindex ? _out_T_46 : _GEN_272; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_274 = 5'h5 == out_iindex ? _out_T_46 : _GEN_273; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_275 = 5'h6 == out_iindex ? _out_T_4 : _GEN_274; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_276 = 5'h7 == out_iindex ? _out_T_4 : _GEN_275; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_277 = 5'h8 == out_iindex ? _out_T_4 : _GEN_276; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_285 = 5'h10 == out_iindex ? _out_T_46 : 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_277)))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_286 = 5'h11 == out_iindex ? _out_T_46 : _GEN_285; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_287 = 5'h12 == out_iindex ? _out_T_46 : _GEN_286; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_288 = 5'h13 == out_iindex ? _out_T_46 : _GEN_287; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_289 = 5'h14 == out_iindex ? _out_T_46 : _GEN_288; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_290 = 5'h15 == out_iindex ? _out_T_46 : _GEN_289; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_291 = 5'h16 == out_iindex ? _out_T_46 : _GEN_290; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_292 = 5'h17 == out_iindex ? _out_T_46 : _GEN_291; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_293 = 5'h18 == out_iindex ? _out_T_46 : _GEN_292; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_294 = 5'h19 == out_iindex ? _out_T_46 : _GEN_293; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_295 = 5'h1a == out_iindex ? _out_T_46 : _GEN_294; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_296 = 5'h1b == out_iindex ? _out_T_46 : _GEN_295; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_297 = 5'h1c == out_iindex ? _out_T_46 : _GEN_296; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_298 = 5'h1d == out_iindex ? _out_T_46 : _GEN_297; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_299 = 5'h1e == out_iindex ? _out_T_46 : _GEN_298; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_300 = 5'h1f == out_iindex ? _out_T_46 : _GEN_299; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_1 = {{9'd0}, out_prepend_49}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_302 = 5'h1 == out_iindex ? _out_out_bits_data_WIRE_1_1 : haltedStatus_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_303 = 5'h2 == out_iindex ? 32'h0 : _GEN_302; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_304 = 5'h3 == out_iindex ? HALTSUM1RdData_haltsum1 : _GEN_303; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_305 = 5'h4 == out_iindex ? out_prepend_76 : _GEN_304; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_306 = 5'h5 == out_iindex ? out_prepend_2 : _GEN_305; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _out_out_bits_data_WIRE_1_6 = {{3'd0}, out_prepend_55}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [31:0] _GEN_307 = 5'h6 == out_iindex ? _out_out_bits_data_WIRE_1_6 : _GEN_306; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_308 = 5'h7 == out_iindex ? _accessRegisterCommandReg_T : _GEN_307; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_309 = 5'h8 == out_iindex ? out_prepend_7 : _GEN_308; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_310 = 5'h9 == out_iindex ? 32'h0 : _GEN_309; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_311 = 5'ha == out_iindex ? 32'h0 : _GEN_310; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_312 = 5'hb == out_iindex ? 32'h0 : _GEN_311; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_313 = 5'hc == out_iindex ? 32'h0 : _GEN_312; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_314 = 5'hd == out_iindex ? 32'h0 : _GEN_313; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_315 = 5'he == out_iindex ? 32'h0 : _GEN_314; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_316 = 5'hf == out_iindex ? 32'h0 : _GEN_315; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_317 = 5'h10 == out_iindex ? out_prepend_25 : _GEN_316; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_318 = 5'h11 == out_iindex ? out_prepend_19 : _GEN_317; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_319 = 5'h12 == out_iindex ? out_prepend_28 : _GEN_318; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_320 = 5'h13 == out_iindex ? out_prepend_64 : _GEN_319; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_321 = 5'h14 == out_iindex ? out_prepend_73 : _GEN_320; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_322 = 5'h15 == out_iindex ? out_prepend_10 : _GEN_321; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_323 = 5'h16 == out_iindex ? out_prepend_16 : _GEN_322; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_324 = 5'h17 == out_iindex ? out_prepend_61 : _GEN_323; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_325 = 5'h18 == out_iindex ? out_prepend_70 : _GEN_324; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_326 = 5'h19 == out_iindex ? out_prepend_22 : _GEN_325; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_327 = 5'h1a == out_iindex ? out_prepend_5 : _GEN_326; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_328 = 5'h1b == out_iindex ? out_prepend_67 : _GEN_327; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_329 = 5'h1c == out_iindex ? out_prepend_58 : _GEN_328; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_330 = 5'h1d == out_iindex ? out_prepend_31 : _GEN_329; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_331 = 5'h1e == out_iindex ? out_prepend_13 : _GEN_330; // @[MuxLiteral.scala 48:{10,10}]
+  wire [31:0] _GEN_332 = 5'h1f == out_iindex ? out_prepend_79 : _GEN_331; // @[MuxLiteral.scala 48:{10,10}]
+  reg  goReg; // @[Debug.scala 1379:27]
+  wire [9:0] hartGoingId = auto_tl_in_a_bits_data[41:32]; // @[RegisterRouter.scala 83:24]
+  wire  _T_357 = ~reset; // @[Debug.scala 1391:15]
+  wire  _T_358 = ~(hartGoingId == 10'h0); // @[Debug.scala 1391:15]
+  wire  out_f_woready_632 = out_woready_1_527 & out_womask_449; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_405 = out_f_woready_632 ? 1'h0 : goReg; // @[Debug.scala 1390:33 1392:15 1379:27]
+  wire  _GEN_2108 = commandRegBadHaltResume ? 1'h0 : 1'h1; // @[Debug.scala 1691:43]
+  wire  _GEN_2112 = commandRegIsUnsupported ? 1'h0 : _GEN_2108; // @[Debug.scala 1688:38]
+  wire  _GEN_2125 = ctrlStateReg == 2'h1 & _GEN_2112; // @[Debug.scala 1681:59]
+  wire  goAbstract = ABSTRACTCSWrEnLegal ? 1'h0 : _GEN_2125; // @[Debug.scala 1673:47]
+  wire  _GEN_406 = goAbstract | _GEN_405; // @[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_104 = &out_backMask_1[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_105 = &out_backMask_1[15:8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_106 = &out_backMask_1[23:16]; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_81 = {6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg}; // @[Cat.scala 31:58]
+  wire  out_wimask_107 = &out_backMask_1[31:24]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_108 = &out_backMask_1[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_109 = &out_backMask_1[47:40]; // @[RegisterRouter.scala 83:24]
+  wire [47:0] out_prepend_84 = {6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg,
+    out_prepend_81}; // @[Cat.scala 31:58]
+  wire  out_wimask_110 = &out_backMask_1[55:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_111 = &out_backMask_1[63:56]; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_86 = {6'h0,resumeReqRegs,goReg,6'h0,resumeReqRegs,goReg,out_prepend_84}; // @[Cat.scala 31:58]
+  wire  out_frontSel_110 = _out_backSel_T_1[110]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_104 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_110 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_208 = out_wivalid_1_104 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_209 = out_wivalid_1_104 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_210 = out_wivalid_1_104 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_211 = out_wivalid_1_104 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_212 = out_wivalid_1_104 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_213 = out_wivalid_1_104 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_214 = out_wivalid_1_104 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_215 = out_wivalid_1_104 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_177 = {programBufferMem_55,programBufferMem_54,programBufferMem_53,programBufferMem_52,
+    programBufferMem_51,programBufferMem_50,programBufferMem_49,programBufferMem_48}; // @[Cat.scala 31:58]
+  wire  out_frontSel_106 = _out_backSel_T_1[106]; // @[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_106 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_304 = out_wivalid_1_200 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_305 = out_wivalid_1_200 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_306 = out_wivalid_1_200 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_307 = out_wivalid_1_200 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_308 = out_wivalid_1_200 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_309 = out_wivalid_1_200 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_310 = out_wivalid_1_200 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_311 = out_wivalid_1_200 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_261 = {programBufferMem_23,programBufferMem_22,programBufferMem_21,programBufferMem_20,
+    programBufferMem_19,programBufferMem_18,programBufferMem_17,programBufferMem_16}; // @[Cat.scala 31:58]
+  wire  out_frontSel_109 = _out_backSel_T_1[109]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_410 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_109 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_514 = out_wivalid_1_410 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_515 = out_wivalid_1_410 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_516 = out_wivalid_1_410 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_517 = out_wivalid_1_410 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_518 = out_wivalid_1_410 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_519 = out_wivalid_1_410 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_520 = out_wivalid_1_410 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_521 = out_wivalid_1_410 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_444 = {programBufferMem_47,programBufferMem_46,programBufferMem_45,programBufferMem_44,
+    programBufferMem_43,programBufferMem_42,programBufferMem_41,programBufferMem_40}; // @[Cat.scala 31:58]
+  wire  out_frontSel_105 = _out_backSel_T_1[105]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_491 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_105 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_595 = out_wivalid_1_491 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_596 = out_wivalid_1_491 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_597 = out_wivalid_1_491 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_598 = out_wivalid_1_491 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_599 = out_wivalid_1_491 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_600 = out_wivalid_1_491 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_601 = out_wivalid_1_491 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_602 = out_wivalid_1_491 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_514 = {programBufferMem_15,programBufferMem_14,programBufferMem_13,programBufferMem_12,
+    programBufferMem_11,programBufferMem_10,programBufferMem_9,programBufferMem_8}; // @[Cat.scala 31:58]
+  wire [63:0] out_prepend_673 = {abstractGeneratedMem_1,abstractGeneratedMem_0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_108 = _out_backSel_T_1[108]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_731 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_108 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_835 = out_wivalid_1_731 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_836 = out_wivalid_1_731 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_837 = out_wivalid_1_731 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_838 = out_wivalid_1_731 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_839 = out_wivalid_1_731 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_840 = out_wivalid_1_731 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_841 = out_wivalid_1_731 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_842 = out_wivalid_1_731 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_722 = {programBufferMem_39,programBufferMem_38,programBufferMem_37,programBufferMem_36,
+    programBufferMem_35,programBufferMem_34,programBufferMem_33,programBufferMem_32}; // @[Cat.scala 31:58]
+  wire  out_frontSel_112 = _out_backSel_T_1[112]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_811 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_112 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_915 = out_wivalid_1_811 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_916 = out_wivalid_1_811 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_917 = out_wivalid_1_811 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_918 = out_wivalid_1_811 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_919 = out_wivalid_1_811 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_920 = out_wivalid_1_811 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_921 = out_wivalid_1_811 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_922 = out_wivalid_1_811 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_792 = {abstractDataMem_7,abstractDataMem_6,abstractDataMem_5,abstractDataMem_4,
+    abstractDataMem_3,abstractDataMem_2,abstractDataMem_1,abstractDataMem_0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_104 = _out_backSel_T_1[104]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_931 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_104 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1035 = out_wivalid_1_931 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1036 = out_wivalid_1_931 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1037 = out_wivalid_1_931 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1038 = out_wivalid_1_931 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1039 = out_wivalid_1_931 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1040 = out_wivalid_1_931 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1041 = out_wivalid_1_931 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1042 = out_wivalid_1_931 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_897 = {programBufferMem_7,programBufferMem_6,programBufferMem_5,programBufferMem_4,
+    programBufferMem_3,programBufferMem_2,programBufferMem_1,programBufferMem_0}; // @[Cat.scala 31:58]
+  wire  out_frontSel_107 = _out_backSel_T_1[107]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_1067 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_107 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1171 = out_wivalid_1_1067 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1172 = out_wivalid_1_1067 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1173 = out_wivalid_1_1067 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1174 = out_wivalid_1_1067 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1175 = out_wivalid_1_1067 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1176 = out_wivalid_1_1067 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1177 = out_wivalid_1_1067 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1178 = out_wivalid_1_1067 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_1016 = {programBufferMem_31,programBufferMem_30,programBufferMem_29,programBufferMem_28,
+    programBufferMem_27,programBufferMem_26,programBufferMem_25,programBufferMem_24}; // @[Cat.scala 31:58]
+  wire  out_frontSel_111 = _out_backSel_T_1[111]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1_1139 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_1_bits_read & out_frontSel_111 & out_findex_1
+     == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1243 = out_wivalid_1_1139 & out_wimask_104; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1244 = out_wivalid_1_1139 & out_wimask_105; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1245 = out_wivalid_1_1139 & out_wimask_106; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1246 = out_wivalid_1_1139 & out_wimask_107; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1247 = out_wivalid_1_1139 & out_wimask_108; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1248 = out_wivalid_1_1139 & out_wimask_109; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1249 = out_wivalid_1_1139 & out_wimask_110; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1250 = out_wivalid_1_1139 & out_wimask_111; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_1079 = {programBufferMem_63,programBufferMem_62,programBufferMem_61,programBufferMem_60,
+    programBufferMem_59,programBufferMem_58,programBufferMem_57,programBufferMem_56}; // @[Cat.scala 31:58]
+  wire  _GEN_1511 = 8'h1 == out_iindex_1 ? _out_T_1266 : _out_T_1266; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1512 = 8'h2 == out_iindex_1 ? _out_T_1266 : _GEN_1511; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1513 = 8'h3 == out_iindex_1 ? _out_T_1266 : _GEN_1512; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1514 = 8'h4 == out_iindex_1 ? _out_T_1266 : _GEN_1513; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1515 = 8'h5 == out_iindex_1 ? _out_T_1266 : _GEN_1514; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1516 = 8'h6 == out_iindex_1 ? _out_T_1266 : _GEN_1515; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1517 = 8'h7 == out_iindex_1 ? _out_T_1266 : _GEN_1516; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1518 = 8'h8 == out_iindex_1 ? _out_T_1266 : _GEN_1517; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1519 = 8'h9 == out_iindex_1 ? _out_T_1266 : _GEN_1518; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1520 = 8'ha == out_iindex_1 ? _out_T_1266 : _GEN_1519; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1535 = 8'h19 == out_iindex_1 | (8'h18 == out_iindex_1 | (8'h17 == out_iindex_1 | (8'h16 == out_iindex_1 | (8'h15
+     == out_iindex_1 | (8'h14 == out_iindex_1 | (8'h13 == out_iindex_1 | (8'h12 == out_iindex_1 | (8'h11 == out_iindex_1
+     | (8'h10 == out_iindex_1 | (8'hf == out_iindex_1 | (8'he == out_iindex_1 | (8'hd == out_iindex_1 | (8'hc ==
+    out_iindex_1 | (8'hb == out_iindex_1 | _GEN_1520)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1542 = 8'h20 == out_iindex_1 ? _out_T_1342 : 8'h1f == out_iindex_1 | (8'h1e == out_iindex_1 | (8'h1d ==
+    out_iindex_1 | (8'h1c == out_iindex_1 | (8'h1b == out_iindex_1 | (8'h1a == out_iindex_1 | _GEN_1535))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1543 = 8'h21 == out_iindex_1 ? _out_T_1342 : _GEN_1542; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1558 = 8'h30 == out_iindex_1 | (8'h2f == out_iindex_1 | (8'h2e == out_iindex_1 | (8'h2d == out_iindex_1 | (8'h2c
+     == out_iindex_1 | (8'h2b == out_iindex_1 | (8'h2a == out_iindex_1 | (8'h29 == out_iindex_1 | (8'h28 == out_iindex_1
+     | (8'h27 == out_iindex_1 | (8'h26 == out_iindex_1 | (8'h25 == out_iindex_1 | (8'h24 == out_iindex_1 | (8'h23 ==
+    out_iindex_1 | (8'h22 == out_iindex_1 | _GEN_1543)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1573 = 8'h3f == out_iindex_1 | (8'h3e == out_iindex_1 | (8'h3d == out_iindex_1 | (8'h3c == out_iindex_1 | (8'h3b
+     == out_iindex_1 | (8'h3a == out_iindex_1 | (8'h39 == out_iindex_1 | (8'h38 == out_iindex_1 | (8'h37 == out_iindex_1
+     | (8'h36 == out_iindex_1 | (8'h35 == out_iindex_1 | (8'h34 == out_iindex_1 | (8'h33 == out_iindex_1 | (8'h32 ==
+    out_iindex_1 | (8'h31 == out_iindex_1 | _GEN_1558)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1588 = 8'h4e == out_iindex_1 | (8'h4d == out_iindex_1 | (8'h4c == out_iindex_1 | (8'h4b == out_iindex_1 | (8'h4a
+     == out_iindex_1 | (8'h49 == out_iindex_1 | (8'h48 == out_iindex_1 | (8'h47 == out_iindex_1 | (8'h46 == out_iindex_1
+     | (8'h45 == out_iindex_1 | (8'h44 == out_iindex_1 | (8'h43 == out_iindex_1 | (8'h42 == out_iindex_1 | (8'h41 ==
+    out_iindex_1 | (8'h40 == out_iindex_1 | _GEN_1573)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1603 = 8'h5d == out_iindex_1 | (8'h5c == out_iindex_1 | (8'h5b == out_iindex_1 | (8'h5a == out_iindex_1 | (8'h59
+     == out_iindex_1 | (8'h58 == out_iindex_1 | (8'h57 == out_iindex_1 | (8'h56 == out_iindex_1 | (8'h55 == out_iindex_1
+     | (8'h54 == out_iindex_1 | (8'h53 == out_iindex_1 | (8'h52 == out_iindex_1 | (8'h51 == out_iindex_1 | (8'h50 ==
+    out_iindex_1 | (8'h4f == out_iindex_1 | _GEN_1588)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1606 = 8'h60 == out_iindex_1 ? _out_T_1342 : 8'h5f == out_iindex_1 | (8'h5e == out_iindex_1 | _GEN_1603); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1613 = 8'h67 == out_iindex_1 ? _out_T_1342 : 8'h66 == out_iindex_1 | (8'h65 == out_iindex_1 | (8'h64 ==
+    out_iindex_1 | (8'h63 == out_iindex_1 | (8'h62 == out_iindex_1 | (8'h61 == out_iindex_1 | _GEN_1606))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1614 = 8'h68 == out_iindex_1 ? _out_T_1342 : _GEN_1613; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1615 = 8'h69 == out_iindex_1 ? _out_T_1342 : _GEN_1614; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1616 = 8'h6a == out_iindex_1 ? _out_T_1342 : _GEN_1615; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1617 = 8'h6b == out_iindex_1 ? _out_T_1342 : _GEN_1616; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1618 = 8'h6c == out_iindex_1 ? _out_T_1342 : _GEN_1617; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1619 = 8'h6d == out_iindex_1 ? _out_T_1342 : _GEN_1618; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1620 = 8'h6e == out_iindex_1 ? _out_T_1342 : _GEN_1619; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1621 = 8'h6f == out_iindex_1 ? _out_T_1342 : _GEN_1620; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1622 = 8'h70 == out_iindex_1 ? _out_T_1342 : _GEN_1621; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1637 = 8'h7f == out_iindex_1 | (8'h7e == out_iindex_1 | (8'h7d == out_iindex_1 | (8'h7c == out_iindex_1 | (8'h7b
+     == out_iindex_1 | (8'h7a == out_iindex_1 | (8'h79 == out_iindex_1 | (8'h78 == out_iindex_1 | (8'h77 == out_iindex_1
+     | (8'h76 == out_iindex_1 | (8'h75 == out_iindex_1 | (8'h74 == out_iindex_1 | (8'h73 == out_iindex_1 | (8'h72 ==
+    out_iindex_1 | (8'h71 == out_iindex_1 | _GEN_1622)))))))))))))); // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1638 = 8'h80 == out_iindex_1 ? _out_T_1342 : _GEN_1637; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1639 = 8'h81 == out_iindex_1 ? _out_T_1342 : _GEN_1638; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1640 = 8'h82 == out_iindex_1 ? _out_T_1342 : _GEN_1639; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1641 = 8'h83 == out_iindex_1 ? _out_T_1342 : _GEN_1640; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1642 = 8'h84 == out_iindex_1 ? _out_T_1342 : _GEN_1641; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1643 = 8'h85 == out_iindex_1 ? _out_T_1342 : _GEN_1642; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1644 = 8'h86 == out_iindex_1 ? _out_T_1342 : _GEN_1643; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1645 = 8'h87 == out_iindex_1 ? _out_T_1342 : _GEN_1644; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1646 = 8'h88 == out_iindex_1 ? _out_T_1342 : _GEN_1645; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1647 = 8'h89 == out_iindex_1 ? _out_T_1342 : _GEN_1646; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1648 = 8'h8a == out_iindex_1 ? _out_T_1342 : _GEN_1647; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1649 = 8'h8b == out_iindex_1 ? _out_T_1342 : _GEN_1648; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1650 = 8'h8c == out_iindex_1 ? _out_T_1342 : _GEN_1649; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1651 = 8'h8d == out_iindex_1 ? _out_T_1342 : _GEN_1650; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1652 = 8'h8e == out_iindex_1 ? _out_T_1342 : _GEN_1651; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1653 = 8'h8f == out_iindex_1 ? _out_T_1342 : _GEN_1652; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1654 = 8'h90 == out_iindex_1 ? _out_T_1342 : _GEN_1653; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1655 = 8'h91 == out_iindex_1 ? _out_T_1342 : _GEN_1654; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1656 = 8'h92 == out_iindex_1 ? _out_T_1342 : _GEN_1655; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1657 = 8'h93 == out_iindex_1 ? _out_T_1342 : _GEN_1656; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1658 = 8'h94 == out_iindex_1 ? _out_T_1342 : _GEN_1657; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1659 = 8'h95 == out_iindex_1 ? _out_T_1342 : _GEN_1658; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1660 = 8'h96 == out_iindex_1 ? _out_T_1342 : _GEN_1659; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1661 = 8'h97 == out_iindex_1 ? _out_T_1342 : _GEN_1660; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1662 = 8'h98 == out_iindex_1 ? _out_T_1342 : _GEN_1661; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1663 = 8'h99 == out_iindex_1 ? _out_T_1342 : _GEN_1662; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1664 = 8'h9a == out_iindex_1 ? _out_T_1342 : _GEN_1663; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1665 = 8'h9b == out_iindex_1 ? _out_T_1342 : _GEN_1664; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1666 = 8'h9c == out_iindex_1 ? _out_T_1342 : _GEN_1665; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1667 = 8'h9d == out_iindex_1 ? _out_T_1342 : _GEN_1666; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1668 = 8'h9e == out_iindex_1 ? _out_T_1342 : _GEN_1667; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1669 = 8'h9f == out_iindex_1 ? _out_T_1342 : _GEN_1668; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1670 = 8'ha0 == out_iindex_1 ? _out_T_1342 : _GEN_1669; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1671 = 8'ha1 == out_iindex_1 ? _out_T_1342 : _GEN_1670; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1672 = 8'ha2 == out_iindex_1 ? _out_T_1342 : _GEN_1671; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1673 = 8'ha3 == out_iindex_1 ? _out_T_1342 : _GEN_1672; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1674 = 8'ha4 == out_iindex_1 ? _out_T_1342 : _GEN_1673; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1675 = 8'ha5 == out_iindex_1 ? _out_T_1342 : _GEN_1674; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1676 = 8'ha6 == out_iindex_1 ? _out_T_1342 : _GEN_1675; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1677 = 8'ha7 == out_iindex_1 ? _out_T_1342 : _GEN_1676; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1678 = 8'ha8 == out_iindex_1 ? _out_T_1342 : _GEN_1677; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1679 = 8'ha9 == out_iindex_1 ? _out_T_1342 : _GEN_1678; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1680 = 8'haa == out_iindex_1 ? _out_T_1342 : _GEN_1679; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1681 = 8'hab == out_iindex_1 ? _out_T_1342 : _GEN_1680; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1682 = 8'hac == out_iindex_1 ? _out_T_1342 : _GEN_1681; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1683 = 8'had == out_iindex_1 ? _out_T_1342 : _GEN_1682; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1684 = 8'hae == out_iindex_1 ? _out_T_1342 : _GEN_1683; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1685 = 8'haf == out_iindex_1 ? _out_T_1342 : _GEN_1684; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1686 = 8'hb0 == out_iindex_1 ? _out_T_1342 : _GEN_1685; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1687 = 8'hb1 == out_iindex_1 ? _out_T_1342 : _GEN_1686; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1688 = 8'hb2 == out_iindex_1 ? _out_T_1342 : _GEN_1687; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1689 = 8'hb3 == out_iindex_1 ? _out_T_1342 : _GEN_1688; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1690 = 8'hb4 == out_iindex_1 ? _out_T_1342 : _GEN_1689; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1691 = 8'hb5 == out_iindex_1 ? _out_T_1342 : _GEN_1690; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1692 = 8'hb6 == out_iindex_1 ? _out_T_1342 : _GEN_1691; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1693 = 8'hb7 == out_iindex_1 ? _out_T_1342 : _GEN_1692; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1694 = 8'hb8 == out_iindex_1 ? _out_T_1342 : _GEN_1693; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1695 = 8'hb9 == out_iindex_1 ? _out_T_1342 : _GEN_1694; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1696 = 8'hba == out_iindex_1 ? _out_T_1342 : _GEN_1695; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1697 = 8'hbb == out_iindex_1 ? _out_T_1342 : _GEN_1696; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1698 = 8'hbc == out_iindex_1 ? _out_T_1342 : _GEN_1697; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1699 = 8'hbd == out_iindex_1 ? _out_T_1342 : _GEN_1698; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1700 = 8'hbe == out_iindex_1 ? _out_T_1342 : _GEN_1699; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1701 = 8'hbf == out_iindex_1 ? _out_T_1342 : _GEN_1700; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1702 = 8'hc0 == out_iindex_1 ? _out_T_1342 : _GEN_1701; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1703 = 8'hc1 == out_iindex_1 ? _out_T_1342 : _GEN_1702; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1704 = 8'hc2 == out_iindex_1 ? _out_T_1342 : _GEN_1703; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1705 = 8'hc3 == out_iindex_1 ? _out_T_1342 : _GEN_1704; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1706 = 8'hc4 == out_iindex_1 ? _out_T_1342 : _GEN_1705; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1707 = 8'hc5 == out_iindex_1 ? _out_T_1342 : _GEN_1706; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1708 = 8'hc6 == out_iindex_1 ? _out_T_1342 : _GEN_1707; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1709 = 8'hc7 == out_iindex_1 ? _out_T_1342 : _GEN_1708; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1710 = 8'hc8 == out_iindex_1 ? _out_T_1342 : _GEN_1709; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1711 = 8'hc9 == out_iindex_1 ? _out_T_1342 : _GEN_1710; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1712 = 8'hca == out_iindex_1 ? _out_T_1342 : _GEN_1711; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1713 = 8'hcb == out_iindex_1 ? _out_T_1342 : _GEN_1712; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1714 = 8'hcc == out_iindex_1 ? _out_T_1342 : _GEN_1713; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1715 = 8'hcd == out_iindex_1 ? _out_T_1342 : _GEN_1714; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1716 = 8'hce == out_iindex_1 ? _out_T_1342 : _GEN_1715; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1717 = 8'hcf == out_iindex_1 ? _out_T_1342 : _GEN_1716; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1718 = 8'hd0 == out_iindex_1 ? _out_T_1342 : _GEN_1717; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1719 = 8'hd1 == out_iindex_1 ? _out_T_1342 : _GEN_1718; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1720 = 8'hd2 == out_iindex_1 ? _out_T_1342 : _GEN_1719; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1721 = 8'hd3 == out_iindex_1 ? _out_T_1342 : _GEN_1720; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1722 = 8'hd4 == out_iindex_1 ? _out_T_1342 : _GEN_1721; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1723 = 8'hd5 == out_iindex_1 ? _out_T_1342 : _GEN_1722; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1724 = 8'hd6 == out_iindex_1 ? _out_T_1342 : _GEN_1723; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1725 = 8'hd7 == out_iindex_1 ? _out_T_1342 : _GEN_1724; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1726 = 8'hd8 == out_iindex_1 ? _out_T_1342 : _GEN_1725; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1727 = 8'hd9 == out_iindex_1 ? _out_T_1342 : _GEN_1726; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1728 = 8'hda == out_iindex_1 ? _out_T_1342 : _GEN_1727; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1729 = 8'hdb == out_iindex_1 ? _out_T_1342 : _GEN_1728; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1730 = 8'hdc == out_iindex_1 ? _out_T_1342 : _GEN_1729; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1731 = 8'hdd == out_iindex_1 ? _out_T_1342 : _GEN_1730; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1732 = 8'hde == out_iindex_1 ? _out_T_1342 : _GEN_1731; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1733 = 8'hdf == out_iindex_1 ? _out_T_1342 : _GEN_1732; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1734 = 8'he0 == out_iindex_1 ? _out_T_1342 : _GEN_1733; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1735 = 8'he1 == out_iindex_1 ? _out_T_1342 : _GEN_1734; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1736 = 8'he2 == out_iindex_1 ? _out_T_1342 : _GEN_1735; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1737 = 8'he3 == out_iindex_1 ? _out_T_1342 : _GEN_1736; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1738 = 8'he4 == out_iindex_1 ? _out_T_1342 : _GEN_1737; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1739 = 8'he5 == out_iindex_1 ? _out_T_1342 : _GEN_1738; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1740 = 8'he6 == out_iindex_1 ? _out_T_1342 : _GEN_1739; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1741 = 8'he7 == out_iindex_1 ? _out_T_1342 : _GEN_1740; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1742 = 8'he8 == out_iindex_1 ? _out_T_1342 : _GEN_1741; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1743 = 8'he9 == out_iindex_1 ? _out_T_1342 : _GEN_1742; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1744 = 8'hea == out_iindex_1 ? _out_T_1342 : _GEN_1743; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1745 = 8'heb == out_iindex_1 ? _out_T_1342 : _GEN_1744; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1746 = 8'hec == out_iindex_1 ? _out_T_1342 : _GEN_1745; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1747 = 8'hed == out_iindex_1 ? _out_T_1342 : _GEN_1746; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1748 = 8'hee == out_iindex_1 ? _out_T_1342 : _GEN_1747; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1749 = 8'hef == out_iindex_1 ? _out_T_1342 : _GEN_1748; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1750 = 8'hf0 == out_iindex_1 ? _out_T_1342 : _GEN_1749; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1751 = 8'hf1 == out_iindex_1 ? _out_T_1342 : _GEN_1750; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1752 = 8'hf2 == out_iindex_1 ? _out_T_1342 : _GEN_1751; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1753 = 8'hf3 == out_iindex_1 ? _out_T_1342 : _GEN_1752; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1754 = 8'hf4 == out_iindex_1 ? _out_T_1342 : _GEN_1753; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1755 = 8'hf5 == out_iindex_1 ? _out_T_1342 : _GEN_1754; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1756 = 8'hf6 == out_iindex_1 ? _out_T_1342 : _GEN_1755; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1757 = 8'hf7 == out_iindex_1 ? _out_T_1342 : _GEN_1756; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1758 = 8'hf8 == out_iindex_1 ? _out_T_1342 : _GEN_1757; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1759 = 8'hf9 == out_iindex_1 ? _out_T_1342 : _GEN_1758; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1760 = 8'hfa == out_iindex_1 ? _out_T_1342 : _GEN_1759; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1761 = 8'hfb == out_iindex_1 ? _out_T_1342 : _GEN_1760; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1762 = 8'hfc == out_iindex_1 ? _out_T_1342 : _GEN_1761; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1763 = 8'hfd == out_iindex_1 ? _out_T_1342 : _GEN_1762; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1764 = 8'hfe == out_iindex_1 ? _out_T_1342 : _GEN_1763; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_1765 = 8'hff == out_iindex_1 ? _out_T_1342 : _GEN_1764; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1767 = 8'h1 == out_iindex_1 ? 64'hff0000f0440006f : 64'h380006f00c0006f; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1768 = 8'h2 == out_iindex_1 ? 64'hf14024737b241073 : _GEN_1767; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1769 = 8'h3 == out_iindex_1 ? 64'h4004440310802023 : _GEN_1768; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1770 = 8'h4 == out_iindex_1 ? 64'hfe0408e300347413 : _GEN_1769; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1771 = 8'h5 == out_iindex_1 ? 64'h4086300147413 : _GEN_1770; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1772 = 8'h6 == out_iindex_1 ? 64'h100022237b202473 : _GEN_1771; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1773 = 8'h7 == out_iindex_1 ? 64'hf140247330000067 : _GEN_1772; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1774 = 8'h8 == out_iindex_1 ? 64'h7b20247310802423 : _GEN_1773; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1775 = 8'h9 == out_iindex_1 ? 64'h100026237b200073 : _GEN_1774; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1776 = 8'ha == out_iindex_1 ? 64'h100073 : _GEN_1775; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1777 = 8'hb == out_iindex_1 ? 64'h0 : _GEN_1776; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1778 = 8'hc == out_iindex_1 ? 64'h0 : _GEN_1777; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1779 = 8'hd == out_iindex_1 ? 64'h0 : _GEN_1778; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1780 = 8'he == out_iindex_1 ? 64'h0 : _GEN_1779; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1781 = 8'hf == out_iindex_1 ? 64'h0 : _GEN_1780; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1782 = 8'h10 == out_iindex_1 ? 64'h0 : _GEN_1781; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1783 = 8'h11 == out_iindex_1 ? 64'h0 : _GEN_1782; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1784 = 8'h12 == out_iindex_1 ? 64'h0 : _GEN_1783; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1785 = 8'h13 == out_iindex_1 ? 64'h0 : _GEN_1784; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1786 = 8'h14 == out_iindex_1 ? 64'h0 : _GEN_1785; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1787 = 8'h15 == out_iindex_1 ? 64'h0 : _GEN_1786; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1788 = 8'h16 == out_iindex_1 ? 64'h0 : _GEN_1787; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1789 = 8'h17 == out_iindex_1 ? 64'h0 : _GEN_1788; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1790 = 8'h18 == out_iindex_1 ? 64'h0 : _GEN_1789; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1791 = 8'h19 == out_iindex_1 ? 64'h0 : _GEN_1790; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1792 = 8'h1a == out_iindex_1 ? 64'h0 : _GEN_1791; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1793 = 8'h1b == out_iindex_1 ? 64'h0 : _GEN_1792; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1794 = 8'h1c == out_iindex_1 ? 64'h0 : _GEN_1793; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1795 = 8'h1d == out_iindex_1 ? 64'h0 : _GEN_1794; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1796 = 8'h1e == out_iindex_1 ? 64'h0 : _GEN_1795; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1797 = 8'h1f == out_iindex_1 ? 64'h0 : _GEN_1796; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1798 = 8'h20 == out_iindex_1 ? 64'h0 : _GEN_1797; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1799 = 8'h21 == out_iindex_1 ? 64'h0 : _GEN_1798; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1800 = 8'h22 == out_iindex_1 ? 64'h0 : _GEN_1799; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1801 = 8'h23 == out_iindex_1 ? 64'h0 : _GEN_1800; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1802 = 8'h24 == out_iindex_1 ? 64'h0 : _GEN_1801; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1803 = 8'h25 == out_iindex_1 ? 64'h0 : _GEN_1802; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1804 = 8'h26 == out_iindex_1 ? 64'h0 : _GEN_1803; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1805 = 8'h27 == out_iindex_1 ? 64'h0 : _GEN_1804; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1806 = 8'h28 == out_iindex_1 ? 64'h0 : _GEN_1805; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1807 = 8'h29 == out_iindex_1 ? 64'h0 : _GEN_1806; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1808 = 8'h2a == out_iindex_1 ? 64'h0 : _GEN_1807; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1809 = 8'h2b == out_iindex_1 ? 64'h0 : _GEN_1808; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1810 = 8'h2c == out_iindex_1 ? 64'h0 : _GEN_1809; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1811 = 8'h2d == out_iindex_1 ? 64'h0 : _GEN_1810; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1812 = 8'h2e == out_iindex_1 ? 64'h0 : _GEN_1811; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1813 = 8'h2f == out_iindex_1 ? 64'h0 : _GEN_1812; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1814 = 8'h30 == out_iindex_1 ? 64'h0 : _GEN_1813; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1815 = 8'h31 == out_iindex_1 ? 64'h0 : _GEN_1814; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1816 = 8'h32 == out_iindex_1 ? 64'h0 : _GEN_1815; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1817 = 8'h33 == out_iindex_1 ? 64'h0 : _GEN_1816; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1818 = 8'h34 == out_iindex_1 ? 64'h0 : _GEN_1817; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1819 = 8'h35 == out_iindex_1 ? 64'h0 : _GEN_1818; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1820 = 8'h36 == out_iindex_1 ? 64'h0 : _GEN_1819; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1821 = 8'h37 == out_iindex_1 ? 64'h0 : _GEN_1820; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1822 = 8'h38 == out_iindex_1 ? 64'h0 : _GEN_1821; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1823 = 8'h39 == out_iindex_1 ? 64'h0 : _GEN_1822; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1824 = 8'h3a == out_iindex_1 ? 64'h0 : _GEN_1823; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1825 = 8'h3b == out_iindex_1 ? 64'h0 : _GEN_1824; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1826 = 8'h3c == out_iindex_1 ? 64'h0 : _GEN_1825; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1827 = 8'h3d == out_iindex_1 ? 64'h0 : _GEN_1826; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1828 = 8'h3e == out_iindex_1 ? 64'h0 : _GEN_1827; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1829 = 8'h3f == out_iindex_1 ? 64'h0 : _GEN_1828; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1830 = 8'h40 == out_iindex_1 ? 64'h0 : _GEN_1829; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1831 = 8'h41 == out_iindex_1 ? 64'h0 : _GEN_1830; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1832 = 8'h42 == out_iindex_1 ? 64'h0 : _GEN_1831; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1833 = 8'h43 == out_iindex_1 ? 64'h0 : _GEN_1832; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1834 = 8'h44 == out_iindex_1 ? 64'h0 : _GEN_1833; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1835 = 8'h45 == out_iindex_1 ? 64'h0 : _GEN_1834; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1836 = 8'h46 == out_iindex_1 ? 64'h0 : _GEN_1835; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1837 = 8'h47 == out_iindex_1 ? 64'h0 : _GEN_1836; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1838 = 8'h48 == out_iindex_1 ? 64'h0 : _GEN_1837; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1839 = 8'h49 == out_iindex_1 ? 64'h0 : _GEN_1838; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1840 = 8'h4a == out_iindex_1 ? 64'h0 : _GEN_1839; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1841 = 8'h4b == out_iindex_1 ? 64'h0 : _GEN_1840; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1842 = 8'h4c == out_iindex_1 ? 64'h0 : _GEN_1841; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1843 = 8'h4d == out_iindex_1 ? 64'h0 : _GEN_1842; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1844 = 8'h4e == out_iindex_1 ? 64'h0 : _GEN_1843; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1845 = 8'h4f == out_iindex_1 ? 64'h0 : _GEN_1844; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1846 = 8'h50 == out_iindex_1 ? 64'h0 : _GEN_1845; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1847 = 8'h51 == out_iindex_1 ? 64'h0 : _GEN_1846; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1848 = 8'h52 == out_iindex_1 ? 64'h0 : _GEN_1847; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1849 = 8'h53 == out_iindex_1 ? 64'h0 : _GEN_1848; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1850 = 8'h54 == out_iindex_1 ? 64'h0 : _GEN_1849; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1851 = 8'h55 == out_iindex_1 ? 64'h0 : _GEN_1850; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1852 = 8'h56 == out_iindex_1 ? 64'h0 : _GEN_1851; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1853 = 8'h57 == out_iindex_1 ? 64'h0 : _GEN_1852; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1854 = 8'h58 == out_iindex_1 ? 64'h0 : _GEN_1853; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1855 = 8'h59 == out_iindex_1 ? 64'h0 : _GEN_1854; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1856 = 8'h5a == out_iindex_1 ? 64'h0 : _GEN_1855; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1857 = 8'h5b == out_iindex_1 ? 64'h0 : _GEN_1856; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1858 = 8'h5c == out_iindex_1 ? 64'h0 : _GEN_1857; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1859 = 8'h5d == out_iindex_1 ? 64'h0 : _GEN_1858; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1860 = 8'h5e == out_iindex_1 ? 64'h0 : _GEN_1859; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1861 = 8'h5f == out_iindex_1 ? 64'h0 : _GEN_1860; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1862 = 8'h60 == out_iindex_1 ? 64'h380006f : _GEN_1861; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1863 = 8'h61 == out_iindex_1 ? 64'h0 : _GEN_1862; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1864 = 8'h62 == out_iindex_1 ? 64'h0 : _GEN_1863; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1865 = 8'h63 == out_iindex_1 ? 64'h0 : _GEN_1864; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1866 = 8'h64 == out_iindex_1 ? 64'h0 : _GEN_1865; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1867 = 8'h65 == out_iindex_1 ? 64'h0 : _GEN_1866; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1868 = 8'h66 == out_iindex_1 ? 64'h0 : _GEN_1867; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1869 = 8'h67 == out_iindex_1 ? out_prepend_673 : _GEN_1868; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1870 = 8'h68 == out_iindex_1 ? out_prepend_897 : _GEN_1869; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1871 = 8'h69 == out_iindex_1 ? out_prepend_514 : _GEN_1870; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1872 = 8'h6a == out_iindex_1 ? out_prepend_261 : _GEN_1871; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1873 = 8'h6b == out_iindex_1 ? out_prepend_1016 : _GEN_1872; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1874 = 8'h6c == out_iindex_1 ? out_prepend_722 : _GEN_1873; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1875 = 8'h6d == out_iindex_1 ? out_prepend_444 : _GEN_1874; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1876 = 8'h6e == out_iindex_1 ? out_prepend_177 : _GEN_1875; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1877 = 8'h6f == out_iindex_1 ? out_prepend_1079 : _GEN_1876; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1878 = 8'h70 == out_iindex_1 ? out_prepend_792 : _GEN_1877; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1879 = 8'h71 == out_iindex_1 ? 64'h0 : _GEN_1878; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1880 = 8'h72 == out_iindex_1 ? 64'h0 : _GEN_1879; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1881 = 8'h73 == out_iindex_1 ? 64'h0 : _GEN_1880; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1882 = 8'h74 == out_iindex_1 ? 64'h0 : _GEN_1881; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1883 = 8'h75 == out_iindex_1 ? 64'h0 : _GEN_1882; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1884 = 8'h76 == out_iindex_1 ? 64'h0 : _GEN_1883; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1885 = 8'h77 == out_iindex_1 ? 64'h0 : _GEN_1884; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1886 = 8'h78 == out_iindex_1 ? 64'h0 : _GEN_1885; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1887 = 8'h79 == out_iindex_1 ? 64'h0 : _GEN_1886; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1888 = 8'h7a == out_iindex_1 ? 64'h0 : _GEN_1887; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1889 = 8'h7b == out_iindex_1 ? 64'h0 : _GEN_1888; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1890 = 8'h7c == out_iindex_1 ? 64'h0 : _GEN_1889; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1891 = 8'h7d == out_iindex_1 ? 64'h0 : _GEN_1890; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1892 = 8'h7e == out_iindex_1 ? 64'h0 : _GEN_1891; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1893 = 8'h7f == out_iindex_1 ? 64'h0 : _GEN_1892; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1894 = 8'h80 == out_iindex_1 ? out_prepend_86 : _GEN_1893; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1895 = 8'h81 == out_iindex_1 ? out_prepend_86 : _GEN_1894; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1896 = 8'h82 == out_iindex_1 ? out_prepend_86 : _GEN_1895; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1897 = 8'h83 == out_iindex_1 ? out_prepend_86 : _GEN_1896; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1898 = 8'h84 == out_iindex_1 ? out_prepend_86 : _GEN_1897; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1899 = 8'h85 == out_iindex_1 ? out_prepend_86 : _GEN_1898; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1900 = 8'h86 == out_iindex_1 ? out_prepend_86 : _GEN_1899; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1901 = 8'h87 == out_iindex_1 ? out_prepend_86 : _GEN_1900; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1902 = 8'h88 == out_iindex_1 ? out_prepend_86 : _GEN_1901; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1903 = 8'h89 == out_iindex_1 ? out_prepend_86 : _GEN_1902; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1904 = 8'h8a == out_iindex_1 ? out_prepend_86 : _GEN_1903; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1905 = 8'h8b == out_iindex_1 ? out_prepend_86 : _GEN_1904; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1906 = 8'h8c == out_iindex_1 ? out_prepend_86 : _GEN_1905; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1907 = 8'h8d == out_iindex_1 ? out_prepend_86 : _GEN_1906; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1908 = 8'h8e == out_iindex_1 ? out_prepend_86 : _GEN_1907; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1909 = 8'h8f == out_iindex_1 ? out_prepend_86 : _GEN_1908; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1910 = 8'h90 == out_iindex_1 ? out_prepend_86 : _GEN_1909; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1911 = 8'h91 == out_iindex_1 ? out_prepend_86 : _GEN_1910; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1912 = 8'h92 == out_iindex_1 ? out_prepend_86 : _GEN_1911; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1913 = 8'h93 == out_iindex_1 ? out_prepend_86 : _GEN_1912; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1914 = 8'h94 == out_iindex_1 ? out_prepend_86 : _GEN_1913; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1915 = 8'h95 == out_iindex_1 ? out_prepend_86 : _GEN_1914; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1916 = 8'h96 == out_iindex_1 ? out_prepend_86 : _GEN_1915; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1917 = 8'h97 == out_iindex_1 ? out_prepend_86 : _GEN_1916; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1918 = 8'h98 == out_iindex_1 ? out_prepend_86 : _GEN_1917; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1919 = 8'h99 == out_iindex_1 ? out_prepend_86 : _GEN_1918; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1920 = 8'h9a == out_iindex_1 ? out_prepend_86 : _GEN_1919; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1921 = 8'h9b == out_iindex_1 ? out_prepend_86 : _GEN_1920; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1922 = 8'h9c == out_iindex_1 ? out_prepend_86 : _GEN_1921; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1923 = 8'h9d == out_iindex_1 ? out_prepend_86 : _GEN_1922; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1924 = 8'h9e == out_iindex_1 ? out_prepend_86 : _GEN_1923; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1925 = 8'h9f == out_iindex_1 ? out_prepend_86 : _GEN_1924; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1926 = 8'ha0 == out_iindex_1 ? out_prepend_86 : _GEN_1925; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1927 = 8'ha1 == out_iindex_1 ? out_prepend_86 : _GEN_1926; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1928 = 8'ha2 == out_iindex_1 ? out_prepend_86 : _GEN_1927; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1929 = 8'ha3 == out_iindex_1 ? out_prepend_86 : _GEN_1928; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1930 = 8'ha4 == out_iindex_1 ? out_prepend_86 : _GEN_1929; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1931 = 8'ha5 == out_iindex_1 ? out_prepend_86 : _GEN_1930; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1932 = 8'ha6 == out_iindex_1 ? out_prepend_86 : _GEN_1931; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1933 = 8'ha7 == out_iindex_1 ? out_prepend_86 : _GEN_1932; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1934 = 8'ha8 == out_iindex_1 ? out_prepend_86 : _GEN_1933; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1935 = 8'ha9 == out_iindex_1 ? out_prepend_86 : _GEN_1934; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1936 = 8'haa == out_iindex_1 ? out_prepend_86 : _GEN_1935; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1937 = 8'hab == out_iindex_1 ? out_prepend_86 : _GEN_1936; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1938 = 8'hac == out_iindex_1 ? out_prepend_86 : _GEN_1937; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1939 = 8'had == out_iindex_1 ? out_prepend_86 : _GEN_1938; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1940 = 8'hae == out_iindex_1 ? out_prepend_86 : _GEN_1939; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1941 = 8'haf == out_iindex_1 ? out_prepend_86 : _GEN_1940; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1942 = 8'hb0 == out_iindex_1 ? out_prepend_86 : _GEN_1941; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1943 = 8'hb1 == out_iindex_1 ? out_prepend_86 : _GEN_1942; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1944 = 8'hb2 == out_iindex_1 ? out_prepend_86 : _GEN_1943; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1945 = 8'hb3 == out_iindex_1 ? out_prepend_86 : _GEN_1944; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1946 = 8'hb4 == out_iindex_1 ? out_prepend_86 : _GEN_1945; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1947 = 8'hb5 == out_iindex_1 ? out_prepend_86 : _GEN_1946; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1948 = 8'hb6 == out_iindex_1 ? out_prepend_86 : _GEN_1947; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1949 = 8'hb7 == out_iindex_1 ? out_prepend_86 : _GEN_1948; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1950 = 8'hb8 == out_iindex_1 ? out_prepend_86 : _GEN_1949; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1951 = 8'hb9 == out_iindex_1 ? out_prepend_86 : _GEN_1950; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1952 = 8'hba == out_iindex_1 ? out_prepend_86 : _GEN_1951; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1953 = 8'hbb == out_iindex_1 ? out_prepend_86 : _GEN_1952; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1954 = 8'hbc == out_iindex_1 ? out_prepend_86 : _GEN_1953; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1955 = 8'hbd == out_iindex_1 ? out_prepend_86 : _GEN_1954; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1956 = 8'hbe == out_iindex_1 ? out_prepend_86 : _GEN_1955; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1957 = 8'hbf == out_iindex_1 ? out_prepend_86 : _GEN_1956; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1958 = 8'hc0 == out_iindex_1 ? out_prepend_86 : _GEN_1957; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1959 = 8'hc1 == out_iindex_1 ? out_prepend_86 : _GEN_1958; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1960 = 8'hc2 == out_iindex_1 ? out_prepend_86 : _GEN_1959; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1961 = 8'hc3 == out_iindex_1 ? out_prepend_86 : _GEN_1960; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1962 = 8'hc4 == out_iindex_1 ? out_prepend_86 : _GEN_1961; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1963 = 8'hc5 == out_iindex_1 ? out_prepend_86 : _GEN_1962; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1964 = 8'hc6 == out_iindex_1 ? out_prepend_86 : _GEN_1963; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1965 = 8'hc7 == out_iindex_1 ? out_prepend_86 : _GEN_1964; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1966 = 8'hc8 == out_iindex_1 ? out_prepend_86 : _GEN_1965; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1967 = 8'hc9 == out_iindex_1 ? out_prepend_86 : _GEN_1966; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1968 = 8'hca == out_iindex_1 ? out_prepend_86 : _GEN_1967; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1969 = 8'hcb == out_iindex_1 ? out_prepend_86 : _GEN_1968; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1970 = 8'hcc == out_iindex_1 ? out_prepend_86 : _GEN_1969; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1971 = 8'hcd == out_iindex_1 ? out_prepend_86 : _GEN_1970; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1972 = 8'hce == out_iindex_1 ? out_prepend_86 : _GEN_1971; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1973 = 8'hcf == out_iindex_1 ? out_prepend_86 : _GEN_1972; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1974 = 8'hd0 == out_iindex_1 ? out_prepend_86 : _GEN_1973; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1975 = 8'hd1 == out_iindex_1 ? out_prepend_86 : _GEN_1974; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1976 = 8'hd2 == out_iindex_1 ? out_prepend_86 : _GEN_1975; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1977 = 8'hd3 == out_iindex_1 ? out_prepend_86 : _GEN_1976; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1978 = 8'hd4 == out_iindex_1 ? out_prepend_86 : _GEN_1977; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1979 = 8'hd5 == out_iindex_1 ? out_prepend_86 : _GEN_1978; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1980 = 8'hd6 == out_iindex_1 ? out_prepend_86 : _GEN_1979; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1981 = 8'hd7 == out_iindex_1 ? out_prepend_86 : _GEN_1980; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1982 = 8'hd8 == out_iindex_1 ? out_prepend_86 : _GEN_1981; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1983 = 8'hd9 == out_iindex_1 ? out_prepend_86 : _GEN_1982; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1984 = 8'hda == out_iindex_1 ? out_prepend_86 : _GEN_1983; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1985 = 8'hdb == out_iindex_1 ? out_prepend_86 : _GEN_1984; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1986 = 8'hdc == out_iindex_1 ? out_prepend_86 : _GEN_1985; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1987 = 8'hdd == out_iindex_1 ? out_prepend_86 : _GEN_1986; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1988 = 8'hde == out_iindex_1 ? out_prepend_86 : _GEN_1987; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1989 = 8'hdf == out_iindex_1 ? out_prepend_86 : _GEN_1988; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1990 = 8'he0 == out_iindex_1 ? out_prepend_86 : _GEN_1989; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1991 = 8'he1 == out_iindex_1 ? out_prepend_86 : _GEN_1990; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1992 = 8'he2 == out_iindex_1 ? out_prepend_86 : _GEN_1991; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1993 = 8'he3 == out_iindex_1 ? out_prepend_86 : _GEN_1992; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1994 = 8'he4 == out_iindex_1 ? out_prepend_86 : _GEN_1993; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1995 = 8'he5 == out_iindex_1 ? out_prepend_86 : _GEN_1994; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1996 = 8'he6 == out_iindex_1 ? out_prepend_86 : _GEN_1995; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1997 = 8'he7 == out_iindex_1 ? out_prepend_86 : _GEN_1996; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1998 = 8'he8 == out_iindex_1 ? out_prepend_86 : _GEN_1997; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_1999 = 8'he9 == out_iindex_1 ? out_prepend_86 : _GEN_1998; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2000 = 8'hea == out_iindex_1 ? out_prepend_86 : _GEN_1999; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2001 = 8'heb == out_iindex_1 ? out_prepend_86 : _GEN_2000; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2002 = 8'hec == out_iindex_1 ? out_prepend_86 : _GEN_2001; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2003 = 8'hed == out_iindex_1 ? out_prepend_86 : _GEN_2002; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2004 = 8'hee == out_iindex_1 ? out_prepend_86 : _GEN_2003; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2005 = 8'hef == out_iindex_1 ? out_prepend_86 : _GEN_2004; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2006 = 8'hf0 == out_iindex_1 ? out_prepend_86 : _GEN_2005; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2007 = 8'hf1 == out_iindex_1 ? out_prepend_86 : _GEN_2006; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2008 = 8'hf2 == out_iindex_1 ? out_prepend_86 : _GEN_2007; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2009 = 8'hf3 == out_iindex_1 ? out_prepend_86 : _GEN_2008; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2010 = 8'hf4 == out_iindex_1 ? out_prepend_86 : _GEN_2009; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2011 = 8'hf5 == out_iindex_1 ? out_prepend_86 : _GEN_2010; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2012 = 8'hf6 == out_iindex_1 ? out_prepend_86 : _GEN_2011; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2013 = 8'hf7 == out_iindex_1 ? out_prepend_86 : _GEN_2012; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2014 = 8'hf8 == out_iindex_1 ? out_prepend_86 : _GEN_2013; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2015 = 8'hf9 == out_iindex_1 ? out_prepend_86 : _GEN_2014; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2016 = 8'hfa == out_iindex_1 ? out_prepend_86 : _GEN_2015; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2017 = 8'hfb == out_iindex_1 ? out_prepend_86 : _GEN_2016; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2018 = 8'hfc == out_iindex_1 ? out_prepend_86 : _GEN_2017; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2019 = 8'hfd == out_iindex_1 ? out_prepend_86 : _GEN_2018; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2020 = 8'hfe == out_iindex_1 ? out_prepend_86 : _GEN_2019; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_2021 = 8'hff == out_iindex_1 ? out_prepend_86 : _GEN_2020; // @[MuxLiteral.scala 48:{10,10}]
+  wire [1:0] _GEN_2107 = commandRegBadHaltResume ? 2'h0 : 2'h2; // @[Debug.scala 1691:43 1693:22]
+  wire [1:0] _GEN_2113 = ~goReg & out_f_woready_631 ? 2'h0 : ctrlStateReg; // @[Debug.scala 1707:116 1708:22]
+  wire [1:0] _GEN_2114 = out_f_woready_449 ? 2'h0 : _GEN_2113; // @[Debug.scala 1710:31 1712:24]
+  wire  _T_1409 = ctrlStateReg == 2'h3; // @[Debug.scala 1715:30]
+  wire  _GEN_2266 = _errorBusy_T & ~_T_1399; // @[Debug.scala 1711:15]
+  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_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_51 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)
+  );
+  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_1765 ? _GEN_2021 : 64'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_300 ? _GEN_332 : 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_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_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_reset = reset;
+  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 = reset;
+  assign hartIsInResetSync_0_debug_hartReset_0_io_d = io_hartIsInReset_0; // @[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 (reset) begin // @[Debug.scala 854:29]
+      hrmaskReg_0 <= 1'h0; // @[Debug.scala 854:29]
+    end else 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_2107;
+      end
+    end else if (ctrlStateReg == 2'h2) begin // @[Debug.scala 1702:51]
+      ctrlStateReg <= _GEN_2114;
+    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_8 & 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_10 & 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_915) 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_96 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_96) 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_916) 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_97 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_97) 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_917) 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_98 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_98) 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_918) 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_99 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_99) 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]
+      abstractDataMem_4 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_919) begin // @[RegField.scala 74:88]
+      abstractDataMem_4 <= auto_tl_in_a_bits_data[39:32]; // @[RegField.scala 74:92]
+    end else if (out_f_woready & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready) begin // @[Debug.scala 265:24]
+        abstractDataMem_4 <= auto_dmi_in_a_bits_data[7:0]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_5 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_920) begin // @[RegField.scala 74:88]
+      abstractDataMem_5 <= auto_tl_in_a_bits_data[47:40]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_1 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_1) begin // @[Debug.scala 265:24]
+        abstractDataMem_5 <= auto_dmi_in_a_bits_data[15:8]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_6 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_921) begin // @[RegField.scala 74:88]
+      abstractDataMem_6 <= auto_tl_in_a_bits_data[55:48]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_2 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_2) begin // @[Debug.scala 265:24]
+        abstractDataMem_6 <= auto_dmi_in_a_bits_data[23:16]; // @[Debug.scala 265:30]
+      end
+    end
+    if (_T_1) begin // @[Debug.scala 1596:24]
+      abstractDataMem_7 <= 8'h0; // @[Debug.scala 1597:40]
+    end else if (out_f_wivalid_922) begin // @[RegField.scala 74:88]
+      abstractDataMem_7 <= auto_tl_in_a_bits_data[63:56]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_3 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1348:91]
+      if (out_f_woready_3) begin // @[Debug.scala 265:24]
+        abstractDataMem_7 <= 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_1035) 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_31 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_31) 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_1036) 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_32 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_32) 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_1037) 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_33 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_33) 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_1038) 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_34 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_34) 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_1039) begin // @[RegField.scala 74:88]
+      programBufferMem_4 <= auto_tl_in_a_bits_data[39:32]; // @[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_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_1040) begin // @[RegField.scala 74:88]
+      programBufferMem_5 <= auto_tl_in_a_bits_data[47:40]; // @[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_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_1041) begin // @[RegField.scala 74:88]
+      programBufferMem_6 <= auto_tl_in_a_bits_data[55:48]; // @[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_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_1042) begin // @[RegField.scala 74:88]
+      programBufferMem_7 <= auto_tl_in_a_bits_data[63:56]; // @[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_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_595) 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_35 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_35) 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_596) 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_36 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_36) 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_597) 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_37 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_37) 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_598) 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_38 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_38) 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_599) begin // @[RegField.scala 74:88]
+      programBufferMem_12 <= auto_tl_in_a_bits_data[39:32]; // @[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_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_600) begin // @[RegField.scala 74:88]
+      programBufferMem_13 <= auto_tl_in_a_bits_data[47:40]; // @[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_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_601) begin // @[RegField.scala 74:88]
+      programBufferMem_14 <= auto_tl_in_a_bits_data[55:48]; // @[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_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_602) begin // @[RegField.scala 74:88]
+      programBufferMem_15 <= auto_tl_in_a_bits_data[63:56]; // @[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_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_304) 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_91 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_91) 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_305) 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_92 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_92) 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_306) 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_93 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_93) 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_307) 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_94 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_94) 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_308) begin // @[RegField.scala 74:88]
+      programBufferMem_20 <= auto_tl_in_a_bits_data[39:32]; // @[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_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_309) begin // @[RegField.scala 74:88]
+      programBufferMem_21 <= auto_tl_in_a_bits_data[47:40]; // @[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_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_310) begin // @[RegField.scala 74:88]
+      programBufferMem_22 <= auto_tl_in_a_bits_data[55:48]; // @[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_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_311) begin // @[RegField.scala 74:88]
+      programBufferMem_23 <= auto_tl_in_a_bits_data[63:56]; // @[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_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_1171) 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_19 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_19) 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_1172) 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_20 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_20) 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_1173) 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_21 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_21) 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_1174) 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_22 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_22) 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_1175) begin // @[RegField.scala 74:88]
+      programBufferMem_28 <= auto_tl_in_a_bits_data[39:32]; // @[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_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_1176) begin // @[RegField.scala 74:88]
+      programBufferMem_29 <= auto_tl_in_a_bits_data[47:40]; // @[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_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_1177) begin // @[RegField.scala 74:88]
+      programBufferMem_30 <= auto_tl_in_a_bits_data[55:48]; // @[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_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_1178) begin // @[RegField.scala 74:88]
+      programBufferMem_31 <= auto_tl_in_a_bits_data[63:56]; // @[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_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_835) 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_86 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_86) 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_836) 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_87 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_87) 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_837) 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_88 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_88) 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_838) 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_89 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_89) 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_839) begin // @[RegField.scala 74:88]
+      programBufferMem_36 <= auto_tl_in_a_bits_data[39:32]; // @[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_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_840) begin // @[RegField.scala 74:88]
+      programBufferMem_37 <= auto_tl_in_a_bits_data[47:40]; // @[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_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_841) begin // @[RegField.scala 74:88]
+      programBufferMem_38 <= auto_tl_in_a_bits_data[55:48]; // @[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_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_842) begin // @[RegField.scala 74:88]
+      programBufferMem_39 <= auto_tl_in_a_bits_data[63:56]; // @[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_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_514) 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_4 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_4) 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_515) 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_5 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_5) 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_516) 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_6 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_6) 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_517) 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_7 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_7) 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_518) begin // @[RegField.scala 74:88]
+      programBufferMem_44 <= auto_tl_in_a_bits_data[39:32]; // @[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_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_519) begin // @[RegField.scala 74:88]
+      programBufferMem_45 <= auto_tl_in_a_bits_data[47:40]; // @[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_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_520) begin // @[RegField.scala 74:88]
+      programBufferMem_46 <= auto_tl_in_a_bits_data[55:48]; // @[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_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_521) begin // @[RegField.scala 74:88]
+      programBufferMem_47 <= auto_tl_in_a_bits_data[63:56]; // @[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_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_208) 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_70 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_70) 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_209) 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_71 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_71) 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_210) 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_72 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_72) 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_211) 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_73 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_73) 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_212) begin // @[RegField.scala 74:88]
+      programBufferMem_52 <= auto_tl_in_a_bits_data[39:32]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_39 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_39) 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_213) begin // @[RegField.scala 74:88]
+      programBufferMem_53 <= auto_tl_in_a_bits_data[47:40]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_40 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_40) 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_214) begin // @[RegField.scala 74:88]
+      programBufferMem_54 <= auto_tl_in_a_bits_data[55:48]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_41 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_41) 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_215) begin // @[RegField.scala 74:88]
+      programBufferMem_55 <= auto_tl_in_a_bits_data[63:56]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_42 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_42) 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_1243) 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_15 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_15) 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_1244) 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_16 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_16) 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_1245) 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_17 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_17) 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_1246) 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_18 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_18) 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_1247) begin // @[RegField.scala 74:88]
+      programBufferMem_60 <= auto_tl_in_a_bits_data[39:32]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_100 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_100) 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_1248) begin // @[RegField.scala 74:88]
+      programBufferMem_61 <= auto_tl_in_a_bits_data[47:40]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_101 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_101) 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_1249) begin // @[RegField.scala 74:88]
+      programBufferMem_62 <= auto_tl_in_a_bits_data[55:48]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_102 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_102) 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_1250) begin // @[RegField.scala 74:88]
+      programBufferMem_63 <= auto_tl_in_a_bits_data[63:56]; // @[RegField.scala 74:92]
+    end else if (out_f_woready_103 & ABSTRACTCSWrEnLegal) begin // @[Debug.scala 1370:93]
+      if (out_f_woready_103) 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_406;
+    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_632 & ~reset)) 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_632 & ~reset & ~(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_358 & (_errorBusy_T & ~_T_1399 & _T_1400 & out_f_woready_449 & _T_357)) 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_1399 & _T_1400 & out_f_woready_449 & _T_357 & _T_358) 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_2266 & ~_T_1400 & _T_1409 & _T_357) 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_2266 & ~_T_1400 & _T_1409 & _T_357) 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_449 | _T_1400) & _T_357) 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_357 & ~(_T_1 | ~out_f_woready_449 | _T_1400)) 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 reset) begin
+    if (reset) 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}};
+  abstractDataMem_4 = _RAND_15[7:0];
+  _RAND_16 = {1{`RANDOM}};
+  abstractDataMem_5 = _RAND_16[7:0];
+  _RAND_17 = {1{`RANDOM}};
+  abstractDataMem_6 = _RAND_17[7:0];
+  _RAND_18 = {1{`RANDOM}};
+  abstractDataMem_7 = _RAND_18[7:0];
+  _RAND_19 = {1{`RANDOM}};
+  programBufferMem_0 = _RAND_19[7:0];
+  _RAND_20 = {1{`RANDOM}};
+  programBufferMem_1 = _RAND_20[7:0];
+  _RAND_21 = {1{`RANDOM}};
+  programBufferMem_2 = _RAND_21[7:0];
+  _RAND_22 = {1{`RANDOM}};
+  programBufferMem_3 = _RAND_22[7:0];
+  _RAND_23 = {1{`RANDOM}};
+  programBufferMem_4 = _RAND_23[7:0];
+  _RAND_24 = {1{`RANDOM}};
+  programBufferMem_5 = _RAND_24[7:0];
+  _RAND_25 = {1{`RANDOM}};
+  programBufferMem_6 = _RAND_25[7:0];
+  _RAND_26 = {1{`RANDOM}};
+  programBufferMem_7 = _RAND_26[7:0];
+  _RAND_27 = {1{`RANDOM}};
+  programBufferMem_8 = _RAND_27[7:0];
+  _RAND_28 = {1{`RANDOM}};
+  programBufferMem_9 = _RAND_28[7:0];
+  _RAND_29 = {1{`RANDOM}};
+  programBufferMem_10 = _RAND_29[7:0];
+  _RAND_30 = {1{`RANDOM}};
+  programBufferMem_11 = _RAND_30[7:0];
+  _RAND_31 = {1{`RANDOM}};
+  programBufferMem_12 = _RAND_31[7:0];
+  _RAND_32 = {1{`RANDOM}};
+  programBufferMem_13 = _RAND_32[7:0];
+  _RAND_33 = {1{`RANDOM}};
+  programBufferMem_14 = _RAND_33[7:0];
+  _RAND_34 = {1{`RANDOM}};
+  programBufferMem_15 = _RAND_34[7:0];
+  _RAND_35 = {1{`RANDOM}};
+  programBufferMem_16 = _RAND_35[7:0];
+  _RAND_36 = {1{`RANDOM}};
+  programBufferMem_17 = _RAND_36[7:0];
+  _RAND_37 = {1{`RANDOM}};
+  programBufferMem_18 = _RAND_37[7:0];
+  _RAND_38 = {1{`RANDOM}};
+  programBufferMem_19 = _RAND_38[7:0];
+  _RAND_39 = {1{`RANDOM}};
+  programBufferMem_20 = _RAND_39[7:0];
+  _RAND_40 = {1{`RANDOM}};
+  programBufferMem_21 = _RAND_40[7:0];
+  _RAND_41 = {1{`RANDOM}};
+  programBufferMem_22 = _RAND_41[7:0];
+  _RAND_42 = {1{`RANDOM}};
+  programBufferMem_23 = _RAND_42[7:0];
+  _RAND_43 = {1{`RANDOM}};
+  programBufferMem_24 = _RAND_43[7:0];
+  _RAND_44 = {1{`RANDOM}};
+  programBufferMem_25 = _RAND_44[7:0];
+  _RAND_45 = {1{`RANDOM}};
+  programBufferMem_26 = _RAND_45[7:0];
+  _RAND_46 = {1{`RANDOM}};
+  programBufferMem_27 = _RAND_46[7:0];
+  _RAND_47 = {1{`RANDOM}};
+  programBufferMem_28 = _RAND_47[7:0];
+  _RAND_48 = {1{`RANDOM}};
+  programBufferMem_29 = _RAND_48[7:0];
+  _RAND_49 = {1{`RANDOM}};
+  programBufferMem_30 = _RAND_49[7:0];
+  _RAND_50 = {1{`RANDOM}};
+  programBufferMem_31 = _RAND_50[7:0];
+  _RAND_51 = {1{`RANDOM}};
+  programBufferMem_32 = _RAND_51[7:0];
+  _RAND_52 = {1{`RANDOM}};
+  programBufferMem_33 = _RAND_52[7:0];
+  _RAND_53 = {1{`RANDOM}};
+  programBufferMem_34 = _RAND_53[7:0];
+  _RAND_54 = {1{`RANDOM}};
+  programBufferMem_35 = _RAND_54[7:0];
+  _RAND_55 = {1{`RANDOM}};
+  programBufferMem_36 = _RAND_55[7:0];
+  _RAND_56 = {1{`RANDOM}};
+  programBufferMem_37 = _RAND_56[7:0];
+  _RAND_57 = {1{`RANDOM}};
+  programBufferMem_38 = _RAND_57[7:0];
+  _RAND_58 = {1{`RANDOM}};
+  programBufferMem_39 = _RAND_58[7:0];
+  _RAND_59 = {1{`RANDOM}};
+  programBufferMem_40 = _RAND_59[7:0];
+  _RAND_60 = {1{`RANDOM}};
+  programBufferMem_41 = _RAND_60[7:0];
+  _RAND_61 = {1{`RANDOM}};
+  programBufferMem_42 = _RAND_61[7:0];
+  _RAND_62 = {1{`RANDOM}};
+  programBufferMem_43 = _RAND_62[7:0];
+  _RAND_63 = {1{`RANDOM}};
+  programBufferMem_44 = _RAND_63[7:0];
+  _RAND_64 = {1{`RANDOM}};
+  programBufferMem_45 = _RAND_64[7:0];
+  _RAND_65 = {1{`RANDOM}};
+  programBufferMem_46 = _RAND_65[7:0];
+  _RAND_66 = {1{`RANDOM}};
+  programBufferMem_47 = _RAND_66[7:0];
+  _RAND_67 = {1{`RANDOM}};
+  programBufferMem_48 = _RAND_67[7:0];
+  _RAND_68 = {1{`RANDOM}};
+  programBufferMem_49 = _RAND_68[7:0];
+  _RAND_69 = {1{`RANDOM}};
+  programBufferMem_50 = _RAND_69[7:0];
+  _RAND_70 = {1{`RANDOM}};
+  programBufferMem_51 = _RAND_70[7:0];
+  _RAND_71 = {1{`RANDOM}};
+  programBufferMem_52 = _RAND_71[7:0];
+  _RAND_72 = {1{`RANDOM}};
+  programBufferMem_53 = _RAND_72[7:0];
+  _RAND_73 = {1{`RANDOM}};
+  programBufferMem_54 = _RAND_73[7:0];
+  _RAND_74 = {1{`RANDOM}};
+  programBufferMem_55 = _RAND_74[7:0];
+  _RAND_75 = {1{`RANDOM}};
+  programBufferMem_56 = _RAND_75[7:0];
+  _RAND_76 = {1{`RANDOM}};
+  programBufferMem_57 = _RAND_76[7:0];
+  _RAND_77 = {1{`RANDOM}};
+  programBufferMem_58 = _RAND_77[7:0];
+  _RAND_78 = {1{`RANDOM}};
+  programBufferMem_59 = _RAND_78[7:0];
+  _RAND_79 = {1{`RANDOM}};
+  programBufferMem_60 = _RAND_79[7:0];
+  _RAND_80 = {1{`RANDOM}};
+  programBufferMem_61 = _RAND_80[7:0];
+  _RAND_81 = {1{`RANDOM}};
+  programBufferMem_62 = _RAND_81[7:0];
+  _RAND_82 = {1{`RANDOM}};
+  programBufferMem_63 = _RAND_82[7:0];
+  _RAND_83 = {1{`RANDOM}};
+  goReg = _RAND_83[0:0];
+  _RAND_84 = {1{`RANDOM}};
+  abstractGeneratedMem_0 = _RAND_84[31:0];
+  _RAND_85 = {1{`RANDOM}};
+  abstractGeneratedMem_1 = _RAND_85[31:0];
+`endif // RANDOMIZE_REG_INIT
+  if (reset) 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_1(
+  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        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,
+  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 [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]
+  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;
+  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_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 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_2(
+  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         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,
+  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  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[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 (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(
+  input         clock,
+  input         reset,
+  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        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        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        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_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  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  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  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_source_reset_n; // @[AsyncQueue.scala 216:24]
+  wire  bundleIn_0_d_source_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 216:24]
+  AsyncQueueSink_1 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_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),
+    .io_async_safe_sink_reset_n(bundleOut_0_a_sink_io_async_safe_sink_reset_n)
+  );
+  AsyncQueueSource_2 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_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_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 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_2(
+  input        clock,
+  input        reset,
+  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,
+  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 [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]
+  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;
+  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_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 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 + io_deq_valid;
+    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 + 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 (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 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        auto_dmiXing_in_a_safe_sink_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,
+  output        auto_dmiXing_in_d_safe_source_reset_n,
+  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  [7:0]  auto_dmInner_tl_in_a_bits_mask,
+  input  [63: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 [63:0] auto_dmInner_tl_in_d_bits_data,
+  input         io_debug_clock,
+  input         io_debug_reset,
+  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_innerCtrl_safe_sink_reset_n,
+  output        io_hgDebugInt_0,
+  input         io_hartIsInReset_0
+);
+  wire  dmInner_clock; // @[Debug.scala 1741:27]
+  wire  dmInner_reset; // @[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 [7:0] dmInner_auto_tl_in_a_bits_mask; // @[Debug.scala 1741:27]
+  wire [63: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 [63: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  dmInner_io_hartIsInReset_0; // @[Debug.scala 1741:27]
+  wire  dmiXing_clock; // @[Debug.scala 1742:27]
+  wire  dmiXing_reset; // @[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  dmiXing_auto_in_a_safe_sink_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_source_reset_n; // @[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_reset; // @[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]
+  wire  dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_sink_reset_n; // @[AsyncQueue.scala 207:22]
+  TLDebugModuleInner dmInner ( // @[Debug.scala 1741:27]
+    .clock(dmInner_clock),
+    .reset(dmInner_reset),
+    .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),
+    .io_hartIsInReset_0(dmInner_io_hartIsInReset_0)
+  );
+  TLAsyncCrossingSink dmiXing ( // @[Debug.scala 1742:27]
+    .clock(dmiXing_clock),
+    .reset(dmiXing_reset),
+    .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_a_safe_sink_reset_n(dmiXing_auto_in_a_safe_sink_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_source_reset_n(dmiXing_auto_in_d_safe_source_reset_n),
+    .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_2 dmactive_synced_dmInner_io_innerCtrl_sink ( // @[AsyncQueue.scala 207:22]
+    .clock(dmactive_synced_dmInner_io_innerCtrl_sink_clock),
+    .reset(dmactive_synced_dmInner_io_innerCtrl_sink_reset),
+    .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),
+    .io_async_safe_sink_reset_n(dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_sink_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_a_safe_sink_reset_n = dmiXing_auto_in_a_safe_sink_reset_n; // @[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_dmiXing_in_d_safe_source_reset_n = dmiXing_auto_in_d_safe_source_reset_n; // @[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_innerCtrl_safe_sink_reset_n = dmactive_synced_dmInner_io_innerCtrl_sink_io_async_safe_sink_reset_n; // @[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_reset = io_debug_reset; // @[Debug.scala 1783: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 dmInner_io_hartIsInReset_0 = io_hartIsInReset_0; // @[Debug.scala 1791:39]
+  assign dmiXing_clock = io_debug_clock; // @[Debug.scala 1777:16 LazyModule.scala 350:31]
+  assign dmiXing_reset = io_debug_reset; // @[Debug.scala 1778:16 LazyModule.scala 352: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 = io_debug_reset; // @[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_reset = io_debug_reset; // @[Debug.scala 1778:16 LazyModule.scala 352: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  [7:0]  auto_dmInner_dmInner_tl_in_a_bits_mask,
+  input  [63: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 [63:0] auto_dmInner_dmInner_tl_in_d_bits_data,
+  output        auto_dmOuter_intsource_out_sync_0,
+  input         io_debug_clock,
+  input         io_debug_reset,
+  output        io_ctrl_dmactive,
+  input         io_ctrl_dmactiveAck,
+  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,
+  input         io_hartIsInReset_0
+);
+  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  dmOuter_auto_asource_out_a_safe_sink_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_source_reset_n; // @[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_dmactive; // @[Debug.scala 1819:53]
+  wire  dmOuter_io_ctrl_dmactiveAck; // @[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_innerCtrl_safe_sink_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  dmInner_auto_dmiXing_in_a_safe_sink_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_source_reset_n; // @[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 [7:0] dmInner_auto_dmInner_tl_in_a_bits_mask; // @[Debug.scala 1820:53]
+  wire [63: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 [63: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_debug_reset; // @[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_innerCtrl_safe_sink_reset_n; // @[Debug.scala 1820:53]
+  wire  dmInner_io_hgDebugInt_0; // @[Debug.scala 1820:53]
+  wire  dmInner_io_hartIsInReset_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_a_safe_sink_reset_n(dmOuter_auto_asource_out_a_safe_sink_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_source_reset_n(dmOuter_auto_asource_out_d_safe_source_reset_n),
+    .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_dmactive(dmOuter_io_ctrl_dmactive),
+    .io_ctrl_dmactiveAck(dmOuter_io_ctrl_dmactiveAck),
+    .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_innerCtrl_safe_sink_reset_n(dmOuter_io_innerCtrl_safe_sink_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_a_safe_sink_reset_n(dmInner_auto_dmiXing_in_a_safe_sink_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_source_reset_n(dmInner_auto_dmiXing_in_d_safe_source_reset_n),
+    .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_debug_reset(dmInner_io_debug_reset),
+    .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_innerCtrl_safe_sink_reset_n(dmInner_io_innerCtrl_safe_sink_reset_n),
+    .io_hgDebugInt_0(dmInner_io_hgDebugInt_0),
+    .io_hartIsInReset_0(dmInner_io_hartIsInReset_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_dmactive = dmOuter_io_ctrl_dmactive; // @[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_a_safe_sink_reset_n = dmInner_auto_dmiXing_in_a_safe_sink_reset_n; // @[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_auto_asource_out_d_safe_source_reset_n = dmInner_auto_dmiXing_in_d_safe_source_reset_n; // @[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_ctrl_dmactiveAck = io_ctrl_dmactiveAck; // @[Debug.scala 1879:13]
+  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_innerCtrl_safe_sink_reset_n = dmInner_io_innerCtrl_safe_sink_reset_n; // @[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_debug_reset = io_debug_reset; // @[Debug.scala 1871: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]
+  assign dmInner_io_hartIsInReset_0 = io_hartIsInReset_0; // @[Debug.scala 1881:37]
+endmodule
+module BundleBridgeNexus_13(
+  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_52(
+  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  [7: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 [319:0] _RAND_10;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [16:0] _GEN_71 = {{14'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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 [7:0] _T_267 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_268 = io_in_a_bits_mask & _T_267; // @[Monitor.scala 127:31]
+  wire  _T_269 = _T_268 == 8'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'h4f; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_10 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_10[319:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_sizes = _RAND_11[319: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  [7: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 [63: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 [7: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 [8:0] index = auto_in_a_bits_address[11:3]; // @[BootROM.scala 49:34]
+  wire [3:0] high = auto_in_a_bits_address[15:12]; // @[BootROM.scala 50:68]
+  wire [63:0] _GEN_1 = 9'h1 == index ? 64'h780006f00050463 : 64'hf1402573020005b7; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_2 = 9'h2 == index ? 64'h10069300458613 : _GEN_1; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_3 = 9'h3 == index ? 64'h46061300d62023 : _GEN_2; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_4 = 9'h4 == index ? 64'hfe069ae3ffc62683 : _GEN_3; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_5 = 9'h5 == index ? 64'h6c0006f : _GEN_4; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_6 = 9'h6 == index ? 64'h0 : _GEN_5; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_7 = 9'h7 == index ? 64'h0 : _GEN_6; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_8 = 9'h8 == index ? 64'hfc05051300000517 : _GEN_7; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_9 = 9'h9 == index ? 64'h301022f330551073 : _GEN_8; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_10 = 9'ha == index ? 64'h12f2934122d293 : _GEN_9; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_11 = 9'hb == index ? 64'h3030107300028463 : _GEN_10; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_12 = 9'hc == index ? 64'h3045107300800513 : _GEN_11; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_13 = 9'hd == index ? 64'h1050007330052073 : _GEN_12; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_14 = 9'he == index ? 64'hffdff06f : _GEN_13; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_15 = 9'hf == index ? 64'h0 : _GEN_14; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_16 = 9'h10 == index ? 64'h5a283fc1ff06f : _GEN_15; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_17 = 9'h11 == index ? 64'h251513fe029ee3 : _GEN_16; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_18 = 9'h12 == index ? 64'h5a02300b505b3 : _GEN_17; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_19 = 9'h13 == index ? 64'h5350300004537 : _GEN_18; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_20 = 9'h14 == index ? 64'hf140257334151073 : _GEN_19; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_21 = 9'h15 == index ? 64'h185859300000597 : _GEN_20; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_22 = 9'h16 == index ? 64'h3006307308000613 : _GEN_21; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_23 = 9'h17 == index ? 64'h1330200073 : _GEN_22; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_24 = 9'h18 == index ? 64'h430d0000edfe0dd0 : _GEN_23; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_25 = 9'h19 == index ? 64'h680b000038000000 : _GEN_24; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_26 = 9'h1a == index ? 64'h1100000028000000 : _GEN_25; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_27 = 9'h1b == index ? 64'h10000000 : _GEN_26; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_28 = 9'h1c == index ? 64'h300b0000db010000 : _GEN_27; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_29 = 9'h1d == index ? 64'h0 : _GEN_28; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_30 = 9'h1e == index ? 64'h0 : _GEN_29; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_31 = 9'h1f == index ? 64'h1000000 : _GEN_30; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_32 = 9'h20 == index ? 64'h400000003000000 : _GEN_31; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_33 = 9'h21 == index ? 64'h100000000000000 : _GEN_32; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_34 = 9'h22 == index ? 64'h400000003000000 : _GEN_33; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_35 = 9'h23 == index ? 64'h10000000f000000 : _GEN_34; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_36 = 9'h24 == index ? 64'h2100000003000000 : _GEN_35; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_37 = 9'h25 == index ? 64'h656572661b000000 : _GEN_36; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_38 = 9'h26 == index ? 64'h6f722c7370696863 : _GEN_37; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_39 = 9'h27 == index ? 64'h7069686374656b63 : _GEN_38; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_40 = 9'h28 == index ? 64'h6e776f6e6b6e752d : _GEN_39; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_41 = 9'h29 == index ? 64'h7665642d : _GEN_40; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_42 = 9'h2a == index ? 64'h1d00000003000000 : _GEN_41; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_43 = 9'h2b == index ? 64'h6565726626000000 : _GEN_42; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_44 = 9'h2c == index ? 64'h6f722c7370696863 : _GEN_43; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_45 = 9'h2d == index ? 64'h7069686374656b63 : _GEN_44; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_46 = 9'h2e == index ? 64'h6e776f6e6b6e752d : _GEN_45; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_47 = 9'h2f == index ? 64'h100000000000000 : _GEN_46; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_48 = 9'h30 == index ? 64'h73657361696c61 : _GEN_47; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_49 = 9'h31 == index ? 64'h1500000003000000 : _GEN_48; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_50 = 9'h32 == index ? 64'h636f732f2c000000 : _GEN_49; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_51 = 9'h33 == index ? 64'h406c61697265732f : _GEN_50; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_52 = 9'h34 == index ? 64'h3030303031303031 : _GEN_51; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_53 = 9'h35 == index ? 64'h300000000000000 : _GEN_52; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_54 = 9'h36 == index ? 64'h3400000015000000 : _GEN_53; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_55 = 9'h37 == index ? 64'h7265732f636f732f : _GEN_54; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_56 = 9'h38 == index ? 64'h31303031406c6169 : _GEN_55; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_57 = 9'h39 == index ? 64'h30303031 : _GEN_56; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_58 = 9'h3a == index ? 64'h100000002000000 : _GEN_57; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_59 = 9'h3b == index ? 64'h73757063 : _GEN_58; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_60 = 9'h3c == index ? 64'h400000003000000 : _GEN_59; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_61 = 9'h3d == index ? 64'h100000000000000 : _GEN_60; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_62 = 9'h3e == index ? 64'h400000003000000 : _GEN_61; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_63 = 9'h3f == index ? 64'hf000000 : _GEN_62; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_64 = 9'h40 == index ? 64'h400000003000000 : _GEN_63; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_65 = 9'h41 == index ? 64'h40420f003c000000 : _GEN_64; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_66 = 9'h42 == index ? 64'h4075706301000000 : _GEN_65; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_67 = 9'h43 == index ? 64'h300000000000030 : _GEN_66; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_68 = 9'h44 == index ? 64'h4f00000004000000 : _GEN_67; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_69 = 9'h45 == index ? 64'h300000000000000 : _GEN_68; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_70 = 9'h46 == index ? 64'h1b00000015000000 : _GEN_69; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_71 = 9'h47 == index ? 64'h722c657669666973 : _GEN_70; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_72 = 9'h48 == index ? 64'h72003074656b636f : _GEN_71; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_73 = 9'h49 == index ? 64'h76637369 : _GEN_72; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_74 = 9'h4a == index ? 64'h400000003000000 : _GEN_73; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_75 = 9'h4b == index ? 64'h7570635f000000 : _GEN_74; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_76 = 9'h4c == index ? 64'h400000003000000 : _GEN_75; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_77 = 9'h4d == index ? 64'h10000006b000000 : _GEN_76; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_78 = 9'h4e == index ? 64'h400000003000000 : _GEN_77; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_79 = 9'h4f == index ? 64'h400000008a000000 : _GEN_78; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_80 = 9'h50 == index ? 64'h400000003000000 : _GEN_79; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_81 = 9'h51 == index ? 64'h400000009d000000 : _GEN_80; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_82 = 9'h52 == index ? 64'h400000003000000 : _GEN_81; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_83 = 9'h53 == index ? 64'h100000aa000000 : _GEN_82; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_84 = 9'h54 == index ? 64'h400000003000000 : _GEN_83; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_85 = 9'h55 == index ? 64'hb7000000 : _GEN_84; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_86 = 9'h56 == index ? 64'h900000003000000 : _GEN_85; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_87 = 9'h57 == index ? 64'h34367672bb000000 : _GEN_86; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_88 = 9'h58 == index ? 64'h63616d69 : _GEN_87; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_89 = 9'h59 == index ? 64'h400000003000000 : _GEN_88; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_90 = 9'h5a == index ? 64'h4000000c5000000 : _GEN_89; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_91 = 9'h5b == index ? 64'h400000003000000 : _GEN_90; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_92 = 9'h5c == index ? 64'h8000000da000000 : _GEN_91; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_93 = 9'h5d == index ? 64'h400000003000000 : _GEN_92; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_94 = 9'h5e == index ? 64'h1000000eb000000 : _GEN_93; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_95 = 9'h5f == index ? 64'h500000003000000 : _GEN_94; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_96 = 9'h60 == index ? 64'h79616b6ff7000000 : _GEN_95; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_97 = 9'h61 == index ? 64'h300000000000000 : _GEN_96; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_98 = 9'h62 == index ? 64'h3c00000004000000 : _GEN_97; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_99 = 9'h63 == index ? 64'h100000040420f00 : _GEN_98; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_100 = 9'h64 == index ? 64'h7075727265746e69 : _GEN_99; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_101 = 9'h65 == index ? 64'h6f72746e6f632d74 : _GEN_100; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_102 = 9'h66 == index ? 64'h72656c6c : _GEN_101; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_103 = 9'h67 == index ? 64'h400000003000000 : _GEN_102; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_104 = 9'h68 == index ? 64'h1000000fe000000 : _GEN_103; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_105 = 9'h69 == index ? 64'hf00000003000000 : _GEN_104; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_106 = 9'h6a == index ? 64'h637369721b000000 : _GEN_105; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_107 = 9'h6b == index ? 64'h6e692d7570632c76 : _GEN_106; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_108 = 9'h6c == index ? 64'h300000000006374 : _GEN_107; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_109 = 9'h6d == index ? 64'hf01000000000000 : _GEN_108; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_110 = 9'h6e == index ? 64'h400000003000000 : _GEN_109; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_111 = 9'h6f == index ? 64'h200000024010000 : _GEN_110; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_112 = 9'h70 == index ? 64'h200000002000000 : _GEN_111; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_113 = 9'h71 == index ? 64'h100000002000000 : _GEN_112; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_114 = 9'h72 == index ? 64'h66697468 : _GEN_113; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_115 = 9'h73 == index ? 64'ha00000003000000 : _GEN_114; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_116 = 9'h74 == index ? 64'h2c6263751b000000 : _GEN_115; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_117 = 9'h75 == index ? 64'h3066697468 : _GEN_116; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_118 = 9'h76 == index ? 64'h100000002000000 : _GEN_117; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_119 = 9'h77 == index ? 64'h300000000636f73 : _GEN_118; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_120 = 9'h78 == index ? 64'h4000000 : _GEN_119; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_121 = 9'h79 == index ? 64'h300000001000000 : _GEN_120; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_122 = 9'h7a == index ? 64'hf00000004000000 : _GEN_121; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_123 = 9'h7b == index ? 64'h300000001000000 : _GEN_122; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_124 = 9'h7c == index ? 64'h1b0000002c000000 : _GEN_123; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_125 = 9'h7d == index ? 64'h7069686365657266 : _GEN_124; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_126 = 9'h7e == index ? 64'h74656b636f722c73 : _GEN_125; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_127 = 9'h7f == index ? 64'h6b6e752d70696863 : _GEN_126; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_128 = 9'h80 == index ? 64'h636f732d6e776f6e : _GEN_127; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_129 = 9'h81 == index ? 64'h2d656c706d697300 : _GEN_128; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_130 = 9'h82 == index ? 64'h300000000737562 : _GEN_129; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_131 = 9'h83 == index ? 64'h2c01000000000000 : _GEN_130; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_132 = 9'h84 == index ? 64'h746f6f6201000000 : _GEN_131; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_133 = 9'h85 == index ? 64'h737365726464612d : _GEN_132; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_134 = 9'h86 == index ? 64'h303034406765722d : _GEN_133; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_135 = 9'h87 == index ? 64'h300000000000030 : _GEN_134; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_136 = 9'h88 == index ? 64'hb700000008000000 : _GEN_135; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_137 = 9'h89 == index ? 64'h10000000400000 : _GEN_136; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_138 = 9'h8a == index ? 64'h800000003000000 : _GEN_137; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_139 = 9'h8b == index ? 64'h746e6f6333010000 : _GEN_138; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_140 = 9'h8c == index ? 64'h2000000006c6f72 : _GEN_139; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_141 = 9'h8d == index ? 64'h6e696c6301000000 : _GEN_140; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_142 = 9'h8e == index ? 64'h3030303030324074 : _GEN_141; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_143 = 9'h8f == index ? 64'h300000000000030 : _GEN_142; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_144 = 9'h90 == index ? 64'h1b0000000d000000 : _GEN_143; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_145 = 9'h91 == index ? 64'h6c632c7663736972 : _GEN_144; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_146 = 9'h92 == index ? 64'h30746e69 : _GEN_145; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_147 = 9'h93 == index ? 64'h1000000003000000 : _GEN_146; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_148 = 9'h94 == index ? 64'h20000003d010000 : _GEN_147; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_149 = 9'h95 == index ? 64'h200000003000000 : _GEN_148; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_150 = 9'h96 == index ? 64'h300000007000000 : _GEN_149; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_151 = 9'h97 == index ? 64'hb700000008000000 : _GEN_150; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_152 = 9'h98 == index ? 64'h10000000002 : _GEN_151; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_153 = 9'h99 == index ? 64'h800000003000000 : _GEN_152; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_154 = 9'h9a == index ? 64'h746e6f6333010000 : _GEN_153; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_155 = 9'h9b == index ? 64'h2000000006c6f72 : _GEN_154; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_156 = 9'h9c == index ? 64'h636f6c6301000000 : _GEN_155; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_157 = 9'h9d == index ? 64'h4072657461672d6b : _GEN_156; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_158 = 9'h9e == index ? 64'h303030303031 : _GEN_157; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_159 = 9'h9f == index ? 64'h800000003000000 : _GEN_158; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_160 = 9'ha0 == index ? 64'h1000b7000000 : _GEN_159; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_161 = 9'ha1 == index ? 64'h300000000100000 : _GEN_160; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_162 = 9'ha2 == index ? 64'h3301000008000000 : _GEN_161; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_163 = 9'ha3 == index ? 64'h6c6f72746e6f63 : _GEN_162; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_164 = 9'ha4 == index ? 64'h100000002000000 : _GEN_163; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_165 = 9'ha5 == index ? 64'h6f632d6775626564 : _GEN_164; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_166 = 9'ha6 == index ? 64'h72656c6c6f72746e : _GEN_165; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_167 = 9'ha7 == index ? 64'h300000000003040 : _GEN_166; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_168 = 9'ha8 == index ? 64'h1b00000021000000 : _GEN_167; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_169 = 9'ha9 == index ? 64'h642c657669666973 : _GEN_168; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_170 = 9'haa == index ? 64'h3331302d67756265 : _GEN_169; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_171 = 9'hab == index ? 64'h642c766373697200 : _GEN_170; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_172 = 9'hac == index ? 64'h3331302d67756265 : _GEN_171; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_173 = 9'had == index ? 64'h300000000000000 : _GEN_172; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_174 = 9'hae == index ? 64'h5101000005000000 : _GEN_173; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_175 = 9'haf == index ? 64'h6761746a : _GEN_174; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_176 = 9'hb0 == index ? 64'h800000003000000 : _GEN_175; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_177 = 9'hb1 == index ? 64'h20000003d010000 : _GEN_176; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_178 = 9'hb2 == index ? 64'h3000000ffff0000 : _GEN_177; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_179 = 9'hb3 == index ? 64'hb700000008000000 : _GEN_178; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_180 = 9'hb4 == index ? 64'h10000000000000 : _GEN_179; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_181 = 9'hb5 == index ? 64'h800000003000000 : _GEN_180; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_182 = 9'hb6 == index ? 64'h746e6f6333010000 : _GEN_181; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_183 = 9'hb7 == index ? 64'h2000000006c6f72 : _GEN_182; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_184 = 9'hb8 == index ? 64'h6d69746401000000 : _GEN_183; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_185 = 9'hb9 == index ? 64'h3030303030303840 : _GEN_184; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_186 = 9'hba == index ? 64'h300000000000030 : _GEN_185; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_187 = 9'hbb == index ? 64'h1b0000000d000000 : _GEN_186; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_188 = 9'hbc == index ? 64'h642c657669666973 : _GEN_187; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_189 = 9'hbd == index ? 64'h306d6974 : _GEN_188; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_190 = 9'hbe == index ? 64'h800000003000000 : _GEN_189; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_191 = 9'hbf == index ? 64'h80b7000000 : _GEN_190; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_192 = 9'hc0 == index ? 64'h300000000400000 : _GEN_191; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_193 = 9'hc1 == index ? 64'h3301000004000000 : _GEN_192; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_194 = 9'hc2 == index ? 64'h3000000006d656d : _GEN_193; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_195 = 9'hc3 == index ? 64'h2401000004000000 : _GEN_194; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_196 = 9'hc4 == index ? 64'h200000001000000 : _GEN_195; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_197 = 9'hc5 == index ? 64'h6f72726501000000 : _GEN_196; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_198 = 9'hc6 == index ? 64'h6563697665642d72 : _GEN_197; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_199 = 9'hc7 == index ? 64'h3030303340 : _GEN_198; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_200 = 9'hc8 == index ? 64'he00000003000000 : _GEN_199; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_201 = 9'hc9 == index ? 64'h696669731b000000 : _GEN_200; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_202 = 9'hca == index ? 64'h726f7272652c6576 : _GEN_201; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_203 = 9'hcb == index ? 64'h300000000000030 : _GEN_202; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_204 = 9'hcc == index ? 64'hb700000008000000 : _GEN_203; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_205 = 9'hcd == index ? 64'h10000000300000 : _GEN_204; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_206 = 9'hce == index ? 64'h100000002000000 : _GEN_205; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_207 = 9'hcf == index ? 64'h303031406f697067 : _GEN_206; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_208 = 9'hd0 == index ? 64'h3030303231 : _GEN_207; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_209 = 9'hd1 == index ? 64'h400000003000000 : _GEN_208; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_210 = 9'hd2 == index ? 64'h20000005e010000 : _GEN_209; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_211 = 9'hd3 == index ? 64'h400000003000000 : _GEN_210; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_212 = 9'hd4 == index ? 64'h2000000fe000000 : _GEN_211; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_213 = 9'hd5 == index ? 64'h400000003000000 : _GEN_212; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_214 = 9'hd6 == index ? 64'h30000006a010000 : _GEN_213; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_215 = 9'hd7 == index ? 64'h1a00000003000000 : _GEN_214; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_216 = 9'hd8 == index ? 64'h696669731b000000 : _GEN_215; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_217 = 9'hd9 == index ? 64'h306f6970672c6576 : _GEN_216; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_218 = 9'hda == index ? 64'h2c65766966697300 : _GEN_217; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_219 = 9'hdb == index ? 64'h316f697067 : _GEN_218; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_220 = 9'hdc == index ? 64'h3000000 : _GEN_219; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_221 = 9'hdd == index ? 64'h300000071010000 : _GEN_220; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_222 = 9'hde == index ? 64'hf01000000000000 : _GEN_221; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_223 = 9'hdf == index ? 64'h400000003000000 : _GEN_222; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_224 = 9'he0 == index ? 64'h400000081010000 : _GEN_223; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_225 = 9'he1 == index ? 64'h1000000003000000 : _GEN_224; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_226 = 9'he2 == index ? 64'h300000092010000 : _GEN_225; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_227 = 9'he3 == index ? 64'h500000004000000 : _GEN_226; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_228 = 9'he4 == index ? 64'h300000006000000 : _GEN_227; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_229 = 9'he5 == index ? 64'hb700000008000000 : _GEN_228; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_230 = 9'he6 == index ? 64'h10000000200110 : _GEN_229; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_231 = 9'he7 == index ? 64'h800000003000000 : _GEN_230; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_232 = 9'he8 == index ? 64'h746e6f6333010000 : _GEN_231; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_233 = 9'he9 == index ? 64'h2000000006c6f72 : _GEN_232; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_234 = 9'hea == index ? 64'h65746e6901000000 : _GEN_233; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_235 = 9'heb == index ? 64'h6f632d7470757272 : _GEN_234; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_236 = 9'hec == index ? 64'h72656c6c6f72746e : _GEN_235; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_237 = 9'hed == index ? 64'h3030303030306340 : _GEN_236; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_238 = 9'hee == index ? 64'h300000000000000 : _GEN_237; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_239 = 9'hef == index ? 64'hfe00000004000000 : _GEN_238; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_240 = 9'hf0 == index ? 64'h300000001000000 : _GEN_239; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_241 = 9'hf1 == index ? 64'h1b0000000c000000 : _GEN_240; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_242 = 9'hf2 == index ? 64'h6c702c7663736972 : _GEN_241; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_243 = 9'hf3 == index ? 64'h300000000306369 : _GEN_242; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_244 = 9'hf4 == index ? 64'hf01000000000000 : _GEN_243; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_245 = 9'hf5 == index ? 64'h800000003000000 : _GEN_244; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_246 = 9'hf6 == index ? 64'h20000003d010000 : _GEN_245; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_247 = 9'hf7 == index ? 64'h30000000b000000 : _GEN_246; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_248 = 9'hf8 == index ? 64'hb700000008000000 : _GEN_247; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_249 = 9'hf9 == index ? 64'h40000000c : _GEN_248; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_250 = 9'hfa == index ? 64'h800000003000000 : _GEN_249; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_251 = 9'hfb == index ? 64'h746e6f6333010000 : _GEN_250; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_252 = 9'hfc == index ? 64'h3000000006c6f72 : _GEN_251; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_253 = 9'hfd == index ? 64'h9d01000004000000 : _GEN_252; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_254 = 9'hfe == index ? 64'h300000007000000 : _GEN_253; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_255 = 9'hff == index ? 64'hb001000004000000 : _GEN_254; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_256 = 9'h100 == index ? 64'h300000008000000 : _GEN_255; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_257 = 9'h101 == index ? 64'h2401000004000000 : _GEN_256; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_258 = 9'h102 == index ? 64'h200000004000000 : _GEN_257; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_259 = 9'h103 == index ? 64'h6977626c01000000 : _GEN_258; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_260 = 9'h104 == index ? 64'h3031406d61722d66 : _GEN_259; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_261 = 9'h105 == index ? 64'h303030303030 : _GEN_260; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_262 = 9'h106 == index ? 64'h800000003000000 : _GEN_261; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_263 = 9'h107 == index ? 64'h10b7000000 : _GEN_262; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_264 = 9'h108 == index ? 64'h200000000100000 : _GEN_263; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_265 = 9'h109 == index ? 64'h6977626c01000000 : _GEN_264; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_266 = 9'h10a == index ? 64'h3032406d6f722d66 : _GEN_265; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_267 = 9'h10b == index ? 64'h300000000303030 : _GEN_266; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_268 = 9'h10c == index ? 64'hb700000008000000 : _GEN_267; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_269 = 9'h10d == index ? 64'h10000000200 : _GEN_268; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_270 = 9'h10e == index ? 64'h100000002000000 : _GEN_269; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_271 = 9'h10f == index ? 64'h30303031406d6f72 : _GEN_270; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_272 = 9'h110 == index ? 64'h300000000000030 : _GEN_271; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_273 = 9'h111 == index ? 64'h1b0000000c000000 : _GEN_272; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_274 = 9'h112 == index ? 64'h722c657669666973 : _GEN_273; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_275 = 9'h113 == index ? 64'h300000000306d6f : _GEN_274; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_276 = 9'h114 == index ? 64'hb700000008000000 : _GEN_275; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_277 = 9'h115 == index ? 64'h10000000100 : _GEN_276; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_278 = 9'h116 == index ? 64'h400000003000000 : _GEN_277; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_279 = 9'h117 == index ? 64'h6d656d33010000 : _GEN_278; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_280 = 9'h118 == index ? 64'h100000002000000 : _GEN_279; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_281 = 9'h119 == index ? 64'h31406c6169726573 : _GEN_280; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_282 = 9'h11a == index ? 64'h30303030313030 : _GEN_281; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_283 = 9'h11b == index ? 64'h400000003000000 : _GEN_282; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_284 = 9'h11c == index ? 64'h30000006a010000 : _GEN_283; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_285 = 9'h11d == index ? 64'hd00000003000000 : _GEN_284; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_286 = 9'h11e == index ? 64'h696669731b000000 : _GEN_285; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_287 = 9'h11f == index ? 64'h30747261752c6576 : _GEN_286; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_288 = 9'h120 == index ? 64'h300000000000000 : _GEN_287; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_289 = 9'h121 == index ? 64'h8101000004000000 : _GEN_288; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_290 = 9'h122 == index ? 64'h300000004000000 : _GEN_289; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_291 = 9'h123 == index ? 64'h9201000004000000 : _GEN_290; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_292 = 9'h124 == index ? 64'h300000001000000 : _GEN_291; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_293 = 9'h125 == index ? 64'hb700000008000000 : _GEN_292; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_294 = 9'h126 == index ? 64'h10000000000110 : _GEN_293; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_295 = 9'h127 == index ? 64'h800000003000000 : _GEN_294; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_296 = 9'h128 == index ? 64'h746e6f6333010000 : _GEN_295; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_297 = 9'h129 == index ? 64'h2000000006c6f72 : _GEN_296; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_298 = 9'h12a == index ? 64'h6972657301000000 : _GEN_297; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_299 = 9'h12b == index ? 64'h3131303031406c61 : _GEN_298; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_300 = 9'h12c == index ? 64'h300000000303030 : _GEN_299; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_301 = 9'h12d == index ? 64'h6a01000004000000 : _GEN_300; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_302 = 9'h12e == index ? 64'h300000003000000 : _GEN_301; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_303 = 9'h12f == index ? 64'h1b0000000d000000 : _GEN_302; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_304 = 9'h130 == index ? 64'h752c657669666973 : _GEN_303; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_305 = 9'h131 == index ? 64'h30747261 : _GEN_304; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_306 = 9'h132 == index ? 64'h400000003000000 : _GEN_305; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_307 = 9'h133 == index ? 64'h400000081010000 : _GEN_306; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_308 = 9'h134 == index ? 64'h400000003000000 : _GEN_307; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_309 = 9'h135 == index ? 64'h200000092010000 : _GEN_308; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_310 = 9'h136 == index ? 64'h800000003000000 : _GEN_309; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_311 = 9'h137 == index ? 64'h100110b7000000 : _GEN_310; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_312 = 9'h138 == index ? 64'h300000000100000 : _GEN_311; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_313 = 9'h139 == index ? 64'h3301000008000000 : _GEN_312; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_314 = 9'h13a == index ? 64'h6c6f72746e6f63 : _GEN_313; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_315 = 9'h13b == index ? 64'h100000002000000 : _GEN_314; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_316 = 9'h13c == index ? 64'h3130303140697073 : _GEN_315; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_317 = 9'h13d == index ? 64'h30303033 : _GEN_316; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_318 = 9'h13e == index ? 64'h400000003000000 : _GEN_317; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_319 = 9'h13f == index ? 64'h100000000000000 : _GEN_318; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_320 = 9'h140 == index ? 64'h400000003000000 : _GEN_319; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_321 = 9'h141 == index ? 64'hf000000 : _GEN_320; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_322 = 9'h142 == index ? 64'h400000003000000 : _GEN_321; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_323 = 9'h143 == index ? 64'h30000006a010000 : _GEN_322; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_324 = 9'h144 == index ? 64'hc00000003000000 : _GEN_323; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_325 = 9'h145 == index ? 64'h696669731b000000 : _GEN_324; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_326 = 9'h146 == index ? 64'h306970732c6576 : _GEN_325; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_327 = 9'h147 == index ? 64'h400000003000000 : _GEN_326; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_328 = 9'h148 == index ? 64'h400000081010000 : _GEN_327; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_329 = 9'h149 == index ? 64'h400000003000000 : _GEN_328; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_330 = 9'h14a == index ? 64'h700000092010000 : _GEN_329; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_331 = 9'h14b == index ? 64'h1000000003000000 : _GEN_330; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_332 = 9'h14c == index ? 64'h300110b7000000 : _GEN_331; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_333 = 9'h14d == index ? 64'h2000100000 : _GEN_332; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_334 = 9'h14e == index ? 64'h300000000000010 : _GEN_333; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_335 = 9'h14f == index ? 64'h330100000c000000 : _GEN_334; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_336 = 9'h150 == index ? 64'h6c6f72746e6f63 : _GEN_335; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_337 = 9'h151 == index ? 64'h2000000006d656d : _GEN_336; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_338 = 9'h152 == index ? 64'h4069707301000000 : _GEN_337; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_339 = 9'h153 == index ? 64'h3030303431303031 : _GEN_338; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_340 = 9'h154 == index ? 64'h300000000000000 : _GEN_339; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_341 = 9'h155 == index ? 64'h4000000 : _GEN_340; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_342 = 9'h156 == index ? 64'h300000001000000 : _GEN_341; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_343 = 9'h157 == index ? 64'hf00000004000000 : _GEN_342; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_344 = 9'h158 == index ? 64'h300000000000000 : _GEN_343; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_345 = 9'h159 == index ? 64'h6a01000004000000 : _GEN_344; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_346 = 9'h15a == index ? 64'h300000003000000 : _GEN_345; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_347 = 9'h15b == index ? 64'h1b0000000c000000 : _GEN_346; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_348 = 9'h15c == index ? 64'h732c657669666973 : _GEN_347; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_349 = 9'h15d == index ? 64'h300000000306970 : _GEN_348; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_350 = 9'h15e == index ? 64'h8101000004000000 : _GEN_349; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_351 = 9'h15f == index ? 64'h300000004000000 : _GEN_350; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_352 = 9'h160 == index ? 64'h9201000004000000 : _GEN_351; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_353 = 9'h161 == index ? 64'h300000008000000 : _GEN_352; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_354 = 9'h162 == index ? 64'hb700000010000000 : _GEN_353; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_355 = 9'h163 == index ? 64'h10000000400110 : _GEN_354; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_356 = 9'h164 == index ? 64'h1000000030 : _GEN_355; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_357 = 9'h165 == index ? 64'hc00000003000000 : _GEN_356; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_358 = 9'h166 == index ? 64'h746e6f6333010000 : _GEN_357; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_359 = 9'h167 == index ? 64'h6d656d006c6f72 : _GEN_358; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_360 = 9'h168 == index ? 64'h100000002000000 : _GEN_359; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_361 = 9'h169 == index ? 64'h6574737973627573 : _GEN_360; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_362 = 9'h16a == index ? 64'h635f737562705f6d : _GEN_361; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_363 = 9'h16b == index ? 64'h6b636f6c : _GEN_362; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_364 = 9'h16c == index ? 64'h400000003000000 : _GEN_363; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_365 = 9'h16d == index ? 64'hbb010000 : _GEN_364; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_366 = 9'h16e == index ? 64'h400000003000000 : _GEN_365; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_367 = 9'h16f == index ? 64'he1f5054f000000 : _GEN_366; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_368 = 9'h170 == index ? 64'h1500000003000000 : _GEN_367; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_369 = 9'h171 == index ? 64'h73627573c8010000 : _GEN_368; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_370 = 9'h172 == index ? 64'h62705f6d65747379 : _GEN_369; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_371 = 9'h173 == index ? 64'h6b636f6c635f7375 : _GEN_370; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_372 = 9'h174 == index ? 64'h300000000000000 : _GEN_371; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_373 = 9'h175 == index ? 64'h1b0000000c000000 : _GEN_372; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_374 = 9'h176 == index ? 64'h6c632d6465786966 : _GEN_373; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_375 = 9'h177 == index ? 64'h3000000006b636f : _GEN_374; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_376 = 9'h178 == index ? 64'h2401000004000000 : _GEN_375; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_377 = 9'h179 == index ? 64'h200000003000000 : _GEN_376; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_378 = 9'h17a == index ? 64'h656c697401000000 : _GEN_377; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_379 = 9'h17b == index ? 64'h732d74657365722d : _GEN_378; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_380 = 9'h17c == index ? 64'h3131407265747465 : _GEN_379; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_381 = 9'h17d == index ? 64'h30303030 : _GEN_380; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_382 = 9'h17e == index ? 64'h800000003000000 : _GEN_381; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_383 = 9'h17f == index ? 64'h1100b7000000 : _GEN_382; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_384 = 9'h180 == index ? 64'h300000000100000 : _GEN_383; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_385 = 9'h181 == index ? 64'h3301000008000000 : _GEN_384; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_386 = 9'h182 == index ? 64'h6c6f72746e6f63 : _GEN_385; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_387 = 9'h183 == index ? 64'h200000002000000 : _GEN_386; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_388 = 9'h184 == index ? 64'h900000002000000 : _GEN_387; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_389 = 9'h185 == index ? 64'h7373657264646123 : _GEN_388; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_390 = 9'h186 == index ? 64'h2300736c6c65632d : _GEN_389; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_391 = 9'h187 == index ? 64'h6c65632d657a6973 : _GEN_390; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_392 = 9'h188 == index ? 64'h61706d6f6300736c : _GEN_391; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_393 = 9'h189 == index ? 64'h6f6d00656c626974 : _GEN_392; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_394 = 9'h18a == index ? 64'h69726573006c6564 : _GEN_393; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_395 = 9'h18b == index ? 64'h6972657300306c61 : _GEN_394; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_396 = 9'h18c == index ? 64'h656d697400316c61 : _GEN_395; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_397 = 9'h18d == index ? 64'h6572662d65736162 : _GEN_396; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_398 = 9'h18e == index ? 64'h630079636e657571 : _GEN_397; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_399 = 9'h18f == index ? 64'h6572662d6b636f6c : _GEN_398; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_400 = 9'h190 == index ? 64'h640079636e657571 : _GEN_399; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_401 = 9'h191 == index ? 64'h79745f6563697665 : _GEN_400; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_402 = 9'h192 == index ? 64'h7764726168006570 : _GEN_401; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_403 = 9'h193 == index ? 64'h636578652d657261 : _GEN_402; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_404 = 9'h194 == index ? 64'h6f706b616572622d : _GEN_403; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_405 = 9'h195 == index ? 64'h6e756f632d746e69 : _GEN_404; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_406 = 9'h196 == index ? 64'h686361632d690074 : _GEN_405; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_407 = 9'h197 == index ? 64'h2d6b636f6c622d65 : _GEN_406; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_408 = 9'h198 == index ? 64'h632d6900657a6973 : _GEN_407; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_409 = 9'h199 == index ? 64'h7465732d65686361 : _GEN_408; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_410 = 9'h19a == index ? 64'h686361632d690073 : _GEN_409; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_411 = 9'h19b == index ? 64'h7200657a69732d65 : _GEN_410; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_412 = 9'h19c == index ? 64'h7663736972006765 : _GEN_411; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_413 = 9'h19d == index ? 64'h736972006173692c : _GEN_412; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_414 = 9'h19e == index ? 64'h7267706d702c7663 : _GEN_413; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_415 = 9'h19f == index ? 64'h746972616c756e61 : _GEN_414; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_416 = 9'h1a0 == index ? 64'h2c76637369720079 : _GEN_415; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_417 = 9'h1a1 == index ? 64'h6f69676572706d70 : _GEN_416; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_418 = 9'h1a2 == index ? 64'h766966697300736e : _GEN_417; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_419 = 9'h1a3 == index ? 64'h73006d6974642c65 : _GEN_418; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_420 = 9'h1a4 == index ? 64'h6923007375746174 : _GEN_419; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_421 = 9'h1a5 == index ? 64'h747075727265746e : _GEN_420; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_422 = 9'h1a6 == index ? 64'h6900736c6c65632d : _GEN_421; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_423 = 9'h1a7 == index ? 64'h747075727265746e : _GEN_422; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_424 = 9'h1a8 == index ? 64'h6c6f72746e6f632d : _GEN_423; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_425 = 9'h1a9 == index ? 64'h6e6168700072656c : _GEN_424; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_426 = 9'h1aa == index ? 64'h676e617200656c64 : _GEN_425; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_427 = 9'h1ab == index ? 64'h6e2d676572007365 : _GEN_426; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_428 = 9'h1ac == index ? 64'h746e690073656d61 : _GEN_427; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_429 = 9'h1ad == index ? 64'h2d73747075727265 : _GEN_428; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_430 = 9'h1ae == index ? 64'h6465646e65747865 : _GEN_429; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_431 = 9'h1af == index ? 64'h612d677562656400 : _GEN_430; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_432 = 9'h1b0 == index ? 64'h6723006863617474 : _GEN_431; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_433 = 9'h1b1 == index ? 64'h6c6c65632d6f6970 : _GEN_432; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_434 = 9'h1b2 == index ? 64'h736b636f6c630073 : _GEN_433; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_435 = 9'h1b3 == index ? 64'h6f632d6f69706700 : _GEN_434; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_436 = 9'h1b4 == index ? 64'h72656c6c6f72746e : _GEN_435; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_437 = 9'h1b5 == index ? 64'h75727265746e6900 : _GEN_436; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_438 = 9'h1b6 == index ? 64'h6e657261702d7470 : _GEN_437; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_439 = 9'h1b7 == index ? 64'h727265746e690074 : _GEN_438; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_440 = 9'h1b8 == index ? 64'h7369720073747075 : _GEN_439; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_441 = 9'h1b9 == index ? 64'h702d78616d2c7663 : _GEN_440; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_442 = 9'h1ba == index ? 64'h797469726f6972 : _GEN_441; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_443 = 9'h1bb == index ? 64'h646e2c7663736972 : _GEN_442; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_444 = 9'h1bc == index ? 64'h636f6c6323007665 : _GEN_443; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_445 = 9'h1bd == index ? 64'h736c6c65632d6b : _GEN_444; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_446 = 9'h1be == index ? 64'h756f2d6b636f6c63 : _GEN_445; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_447 = 9'h1bf == index ? 64'h6d616e2d74757074 : _GEN_446; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_448 = 9'h1c0 == index ? 64'h7365 : _GEN_447; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_449 = 9'h1c1 == index ? 64'h0 : _GEN_448; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_450 = 9'h1c2 == index ? 64'h0 : _GEN_449; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_451 = 9'h1c3 == index ? 64'h0 : _GEN_450; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_452 = 9'h1c4 == index ? 64'h0 : _GEN_451; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_453 = 9'h1c5 == index ? 64'h0 : _GEN_452; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_454 = 9'h1c6 == index ? 64'h0 : _GEN_453; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_455 = 9'h1c7 == index ? 64'h0 : _GEN_454; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_456 = 9'h1c8 == index ? 64'h0 : _GEN_455; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_457 = 9'h1c9 == index ? 64'h0 : _GEN_456; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_458 = 9'h1ca == index ? 64'h0 : _GEN_457; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_459 = 9'h1cb == index ? 64'h0 : _GEN_458; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_460 = 9'h1cc == index ? 64'h0 : _GEN_459; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_461 = 9'h1cd == index ? 64'h0 : _GEN_460; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_462 = 9'h1ce == index ? 64'h0 : _GEN_461; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_463 = 9'h1cf == index ? 64'h0 : _GEN_462; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_464 = 9'h1d0 == index ? 64'h0 : _GEN_463; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_465 = 9'h1d1 == index ? 64'h0 : _GEN_464; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_466 = 9'h1d2 == index ? 64'h0 : _GEN_465; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_467 = 9'h1d3 == index ? 64'h0 : _GEN_466; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_468 = 9'h1d4 == index ? 64'h0 : _GEN_467; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_469 = 9'h1d5 == index ? 64'h0 : _GEN_468; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_470 = 9'h1d6 == index ? 64'h0 : _GEN_469; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_471 = 9'h1d7 == index ? 64'h0 : _GEN_470; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_472 = 9'h1d8 == index ? 64'h0 : _GEN_471; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_473 = 9'h1d9 == index ? 64'h0 : _GEN_472; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_474 = 9'h1da == index ? 64'h0 : _GEN_473; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_475 = 9'h1db == index ? 64'h0 : _GEN_474; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_476 = 9'h1dc == index ? 64'h0 : _GEN_475; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_477 = 9'h1dd == index ? 64'h0 : _GEN_476; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_478 = 9'h1de == index ? 64'h0 : _GEN_477; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_479 = 9'h1df == index ? 64'h0 : _GEN_478; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_480 = 9'h1e0 == index ? 64'h0 : _GEN_479; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_481 = 9'h1e1 == index ? 64'h0 : _GEN_480; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_482 = 9'h1e2 == index ? 64'h0 : _GEN_481; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_483 = 9'h1e3 == index ? 64'h0 : _GEN_482; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_484 = 9'h1e4 == index ? 64'h0 : _GEN_483; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_485 = 9'h1e5 == index ? 64'h0 : _GEN_484; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_486 = 9'h1e6 == index ? 64'h0 : _GEN_485; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_487 = 9'h1e7 == index ? 64'h0 : _GEN_486; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_488 = 9'h1e8 == index ? 64'h0 : _GEN_487; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_489 = 9'h1e9 == index ? 64'h0 : _GEN_488; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_490 = 9'h1ea == index ? 64'h0 : _GEN_489; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_491 = 9'h1eb == index ? 64'h0 : _GEN_490; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_492 = 9'h1ec == index ? 64'h0 : _GEN_491; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_493 = 9'h1ed == index ? 64'h0 : _GEN_492; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_494 = 9'h1ee == index ? 64'h0 : _GEN_493; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_495 = 9'h1ef == index ? 64'h0 : _GEN_494; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_496 = 9'h1f0 == index ? 64'h0 : _GEN_495; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_497 = 9'h1f1 == index ? 64'h0 : _GEN_496; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_498 = 9'h1f2 == index ? 64'h0 : _GEN_497; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_499 = 9'h1f3 == index ? 64'h0 : _GEN_498; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_500 = 9'h1f4 == index ? 64'h0 : _GEN_499; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_501 = 9'h1f5 == index ? 64'h0 : _GEN_500; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_502 = 9'h1f6 == index ? 64'h0 : _GEN_501; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_503 = 9'h1f7 == index ? 64'h0 : _GEN_502; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_504 = 9'h1f8 == index ? 64'h0 : _GEN_503; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_505 = 9'h1f9 == index ? 64'h0 : _GEN_504; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_506 = 9'h1fa == index ? 64'h0 : _GEN_505; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_507 = 9'h1fb == index ? 64'h0 : _GEN_506; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_508 = 9'h1fc == index ? 64'h0 : _GEN_507; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_509 = 9'h1fd == index ? 64'h0 : _GEN_508; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_510 = 9'h1fe == index ? 64'h0 : _GEN_509; // @[BootROM.scala 51:{47,47}]
+  wire [63:0] _GEN_511 = 9'h1ff == index ? 64'h0 : _GEN_510; // @[BootROM.scala 51:{47,47}]
+  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_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 ? 64'h0 : _GEN_511; // @[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_1(
+  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  [7: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 [63: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 [7: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 [63: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 TLMonitor_53(
+  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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h20000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire [28:0] _T_61 = io_in_a_bits_address ^ 29'h10000000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_64 = $signed(_T_62) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_66 = _T_60 | _T_65; // @[Parameters.scala 671:42]
+  wire  _T_104 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_108 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_109 = _T_108 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_113 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_117 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_183 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_196 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_213 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_227 = _T_213 & _T_66; // @[Parameters.scala 670:56]
+  wire  _T_238 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_242 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_250 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_272 = _T_213 & _T_65; // @[Parameters.scala 670:56]
+  wire  _T_282 = source_ok & _T_272; // @[Monitor.scala 115:71]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_346 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_347 = io_in_a_bits_mask & _T_346; // @[Monitor.scala 127:31]
+  wire  _T_348 = _T_347 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_389 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_434 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_442 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_479 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_491 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_499 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_503 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_507 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_511 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_515 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_526 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_530 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_543 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_563 = _T_511 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_572 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_589 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_607 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_637 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_638 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_642 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_646 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_650 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_654 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_661 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_662 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_666 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_670 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_674 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_678 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_682 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_688 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire  _T_691 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_693 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_695 = ~_T_693[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_699 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_701 = ~_T_495; // @[Monitor.scala 671:74]
+  wire  _T_702 = io_in_d_valid & d_first_1 & ~_T_495; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_701 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_701 ? _d_opcodes_clr_T_5 : 79'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_688 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_712 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_714 = _T_712[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_719 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_720 = io_in_d_bits_opcode == _GEN_32 | _T_719; // @[Monitor.scala 685:77]
+  wire  _T_724 = 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_731 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_732 = io_in_d_bits_opcode == _GEN_48 | _T_731; // @[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_736 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_746 = _T_699 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_701; // @[Monitor.scala 694:116]
+  wire  _T_748 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_757 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_783 = io_in_d_valid & d_first_2 & _T_495; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_495 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_495 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_791 = 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_801 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_821 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (~source_ok & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~source_ok) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_104 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_104) 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_109 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_109) 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_113 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_113) 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_117 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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_117 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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 (~source_ok & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~source_ok) 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_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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_104 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_104) 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_183 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_183) 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_109 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_109) 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_113 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_113) 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 (~source_ok & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~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:14)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_227 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_227) 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 (~source_ok & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~source_ok) 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_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~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_238 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_238) 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_242 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_242) 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_113 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_113) 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_282 & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~_T_282) 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 (~source_ok & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~source_ok) 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_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~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_238 & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~_T_238) 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_242 & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~_T_242) 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_282 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_282) 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 (~source_ok & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~source_ok) 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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_238 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_238) 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_348 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_348) 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_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 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 (~source_ok & (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 & ~source_ok) 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_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 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_389 & (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_389) 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_242 & (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_242) 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_397 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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 (~source_ok & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~source_ok) 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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_434 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_434) 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_242 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_242) 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_442 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~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 (~source_ok & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~source_ok) 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_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~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_479 & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~_T_479) 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_242 & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~_T_242) 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_113 & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~_T_113) 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_491 & (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_491) 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_1 & (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_1) 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_499 & (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_499) 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 (~_T_503 & (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_503) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseeAck carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_507 & (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_507) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_511 & (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_511) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel ReleaseAck is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~source_ok_1) 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_515 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _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_499 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_499) 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 (~_T_526 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_526) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries invalid cap param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_530) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant carries toN param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_507 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_507) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_511 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_511) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel Grant is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~source_ok_1) 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_543 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_499 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_499) 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_526 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_526) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries invalid cap param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_530) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData carries toN param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_563) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied but not corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_511 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_511) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel GrantData is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~source_ok_1) 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 (~_T_503 & (io_in_d_valid & _T_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~_T_503) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_507 & (io_in_d_valid & _T_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~_T_507) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_511 & (io_in_d_valid & _T_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~_T_511) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAck is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~source_ok_1) 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_503 & (io_in_d_valid & _T_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~_T_503) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 & (io_in_d_valid & _T_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~_T_563) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied but not corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_511 & (io_in_d_valid & _T_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~_T_511) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel AccessAckData is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~source_ok_1) 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_503 & (io_in_d_valid & _T_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~_T_503) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck carries invalid param (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_507 & (io_in_d_valid & _T_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~_T_507) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is corrupt (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.scala 49:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_511 & (io_in_d_valid & _T_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~_T_511) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel HintAck is denied (connected at CrossingHelper.scala:30:14)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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_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 (_T_637 & ~reset & ~_T_638) 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_642 & (_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 (_T_637 & ~reset & ~_T_642) 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_646 & (_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 (_T_637 & ~reset & ~_T_646) 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_650 & (_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 (_T_637 & ~reset & ~_T_650) 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_654 & (_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 (_T_637 & ~reset & ~_T_654) 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_662 & (_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_661 & _T_2 & ~_T_662) 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_666 & (_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_661 & _T_2 & ~_T_666) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel param 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_670 & (_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_661 & _T_2 & ~_T_670) 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_674 & (_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_661 & _T_2 & ~_T_674) 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_678 & (_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_661 & _T_2 & ~_T_678) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel sink changed with 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_682 & (_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_661 & _T_2 & ~_T_682) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'D' channel denied changed with 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_695 & (_T_691 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_691 & ~reset & ~_T_695) 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_714 & (_T_702 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & _T_2 & ~_T_714) 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_720 & (_T_702 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & same_cycle_resp & _T_2 & ~_T_720) 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_724 & (_T_702 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & same_cycle_resp & _T_2 & ~_T_724) 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_732 & (_T_702 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & ~same_cycle_resp & _T_2 & ~_T_732) 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_736 & (_T_702 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & ~same_cycle_resp & _T_2 & ~_T_736) 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_748 & (_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 (_T_746 & _T_2 & ~_T_748) 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_757 & ~reset) begin
+          $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_757) 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_791[0] & (_T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_783 & _T_2 & ~_T_791[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_801 & (_T_783 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_783 & _T_2 & ~_T_801) 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_821 & ~reset) begin
+          $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_821) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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 HellaPeekingArbiter(
+  input         clock,
+  input         reset,
+  output        io_in_1_ready,
+  input         io_in_1_valid,
+  input  [2:0]  io_in_1_bits_opcode,
+  input  [2:0]  io_in_1_bits_param,
+  input  [3:0]  io_in_1_bits_size,
+  input  [2:0]  io_in_1_bits_source,
+  input  [63:0] io_in_1_bits_data,
+  input         io_in_1_bits_corrupt,
+  input  [7:0]  io_in_1_bits_union,
+  input         io_in_1_bits_last,
+  output        io_in_4_ready,
+  input         io_in_4_valid,
+  input  [2:0]  io_in_4_bits_opcode,
+  input  [2:0]  io_in_4_bits_param,
+  input  [3:0]  io_in_4_bits_size,
+  input  [2:0]  io_in_4_bits_source,
+  input  [31:0] io_in_4_bits_address,
+  input  [63:0] io_in_4_bits_data,
+  input         io_in_4_bits_corrupt,
+  input  [7:0]  io_in_4_bits_union,
+  input         io_in_4_bits_last,
+  input         io_out_ready,
+  output        io_out_valid,
+  output [2:0]  io_out_bits_chanId,
+  output [2:0]  io_out_bits_opcode,
+  output [2:0]  io_out_bits_param,
+  output [3:0]  io_out_bits_size,
+  output [2:0]  io_out_bits_source,
+  output [31:0] io_out_bits_address,
+  output [63:0] io_out_bits_data,
+  output        io_out_bits_corrupt,
+  output [7:0]  io_out_bits_union,
+  output        io_out_bits_last
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+  reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+  reg [2:0] lockIdx; // @[Arbiters.scala 25:20]
+  reg  locked; // @[Arbiters.scala 26:19]
+  wire [2:0] choice = io_in_1_valid ? 3'h1 : 3'h4; // @[Mux.scala 47:70]
+  wire [2:0] chosen = locked ? lockIdx : choice; // @[Arbiters.scala 36:19]
+  wire  _GEN_60 = 3'h1 == chosen; // @[Arbiters.scala 42:{16,16}]
+  wire  _GEN_2 = 3'h2 == chosen ? 1'h0 : 3'h1 == chosen & io_in_1_valid; // @[Arbiters.scala 42:{16,16}]
+  wire  _GEN_3 = 3'h3 == chosen ? 1'h0 : _GEN_2; // @[Arbiters.scala 42:{16,16}]
+  wire [2:0] _GEN_6 = 3'h1 == chosen ? 3'h3 : 3'h4; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_7 = 3'h2 == chosen ? 3'h2 : _GEN_6; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_8 = 3'h3 == chosen ? 3'h1 : _GEN_7; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_11 = 3'h1 == chosen ? io_in_1_bits_opcode : 3'h0; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_12 = 3'h2 == chosen ? 3'h0 : _GEN_11; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_13 = 3'h3 == chosen ? 3'h0 : _GEN_12; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_16 = 3'h1 == chosen ? io_in_1_bits_param : 3'h0; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_17 = 3'h2 == chosen ? 3'h0 : _GEN_16; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_18 = 3'h3 == chosen ? 3'h0 : _GEN_17; // @[Arbiters.scala 43:{15,15}]
+  wire [3:0] _GEN_21 = 3'h1 == chosen ? io_in_1_bits_size : 4'h0; // @[Arbiters.scala 43:{15,15}]
+  wire [3:0] _GEN_22 = 3'h2 == chosen ? 4'h0 : _GEN_21; // @[Arbiters.scala 43:{15,15}]
+  wire [3:0] _GEN_23 = 3'h3 == chosen ? 4'h0 : _GEN_22; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_26 = 3'h1 == chosen ? io_in_1_bits_source : 3'h0; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_27 = 3'h2 == chosen ? 3'h0 : _GEN_26; // @[Arbiters.scala 43:{15,15}]
+  wire [2:0] _GEN_28 = 3'h3 == chosen ? 3'h0 : _GEN_27; // @[Arbiters.scala 43:{15,15}]
+  wire [63:0] _GEN_36 = 3'h1 == chosen ? io_in_1_bits_data : 64'h0; // @[Arbiters.scala 43:{15,15}]
+  wire [63:0] _GEN_37 = 3'h2 == chosen ? 64'h0 : _GEN_36; // @[Arbiters.scala 43:{15,15}]
+  wire [63:0] _GEN_38 = 3'h3 == chosen ? 64'h0 : _GEN_37; // @[Arbiters.scala 43:{15,15}]
+  wire  _GEN_42 = 3'h2 == chosen ? 1'h0 : _GEN_60 & io_in_1_bits_corrupt; // @[Arbiters.scala 43:{15,15}]
+  wire  _GEN_43 = 3'h3 == chosen ? 1'h0 : _GEN_42; // @[Arbiters.scala 43:{15,15}]
+  wire [7:0] _GEN_46 = 3'h1 == chosen ? io_in_1_bits_union : 8'h0; // @[Arbiters.scala 43:{15,15}]
+  wire [7:0] _GEN_47 = 3'h2 == chosen ? 8'h0 : _GEN_46; // @[Arbiters.scala 43:{15,15}]
+  wire [7:0] _GEN_48 = 3'h3 == chosen ? 8'h0 : _GEN_47; // @[Arbiters.scala 43:{15,15}]
+  wire  _GEN_51 = 3'h1 == chosen ? io_in_1_bits_last : 1'h1; // @[Arbiters.scala 43:{15,15}]
+  wire  _T = io_out_ready & io_out_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_56 = ~locked | locked; // @[Arbiters.scala 59:50 61:14 26:19]
+  assign io_in_1_ready = io_out_ready & chosen == 3'h1; // @[Arbiters.scala 39:36]
+  assign io_in_4_ready = io_out_ready & chosen == 3'h4; // @[Arbiters.scala 39:36]
+  assign io_out_valid = 3'h4 == chosen ? io_in_4_valid : _GEN_3; // @[Arbiters.scala 42:{16,16}]
+  assign io_out_bits_chanId = 3'h4 == chosen ? 3'h0 : _GEN_8; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_opcode = 3'h4 == chosen ? io_in_4_bits_opcode : _GEN_13; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_param = 3'h4 == chosen ? io_in_4_bits_param : _GEN_18; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_size = 3'h4 == chosen ? io_in_4_bits_size : _GEN_23; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_source = 3'h4 == chosen ? io_in_4_bits_source : _GEN_28; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_address = 3'h4 == chosen ? io_in_4_bits_address : 32'h0; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_data = 3'h4 == chosen ? io_in_4_bits_data : _GEN_38; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_corrupt = 3'h4 == chosen ? io_in_4_bits_corrupt : _GEN_43; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_union = 3'h4 == chosen ? io_in_4_bits_union : _GEN_48; // @[Arbiters.scala 43:{15,15}]
+  assign io_out_bits_last = 3'h4 == chosen ? io_in_4_bits_last : 3'h3 == chosen | (3'h2 == chosen | _GEN_51); // @[Arbiters.scala 43:{15,15}]
+  always @(posedge clock) begin
+    if (reset) begin // @[Arbiters.scala 25:20]
+      lockIdx <= 3'h0; // @[Arbiters.scala 25:20]
+    end else if (_T) begin // @[Arbiters.scala 58:24]
+      if (~locked) begin // @[Arbiters.scala 59:50]
+        if (io_in_1_valid) begin // @[Mux.scala 47:70]
+          lockIdx <= 3'h1;
+        end else begin
+          lockIdx <= 3'h4;
+        end
+      end
+    end
+    if (reset) begin // @[Arbiters.scala 26:19]
+      locked <= 1'h0; // @[Arbiters.scala 26:19]
+    end else if (_T) begin // @[Arbiters.scala 58:24]
+      if (io_out_bits_last) begin // @[Arbiters.scala 64:35]
+        locked <= 1'h0; // @[Arbiters.scala 65:14]
+      end else begin
+        locked <= _GEN_56;
+      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}};
+  lockIdx = _RAND_0[2:0];
+  _RAND_1 = {1{`RANDOM}};
+  locked = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module GenericSerializer(
+  input         clock,
+  input         reset,
+  output        io_in_ready,
+  input         io_in_valid,
+  input  [2:0]  io_in_bits_chanId,
+  input  [2:0]  io_in_bits_opcode,
+  input  [2:0]  io_in_bits_param,
+  input  [3:0]  io_in_bits_size,
+  input  [2:0]  io_in_bits_source,
+  input  [31:0] io_in_bits_address,
+  input  [63:0] io_in_bits_data,
+  input         io_in_bits_corrupt,
+  input  [7:0]  io_in_bits_union,
+  input         io_in_bits_last,
+  input         io_out_ready,
+  output        io_out_valid,
+  output [31:0] io_out_bits
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [127:0] _RAND_0;
+  reg [31:0] _RAND_1;
+  reg [31:0] _RAND_2;
+`endif // RANDOMIZE_REG_INIT
+  reg [121:0] data; // @[Serdes.scala 173:17]
+  reg  sending; // @[Serdes.scala 175:24]
+  wire  _T = io_out_ready & io_out_valid; // @[Decoupled.scala 50:35]
+  reg [1:0] sendCount; // @[Counter.scala 62:40]
+  wire  wrap_wrap = sendCount == 2'h3; // @[Counter.scala 74:24]
+  wire [1:0] _wrap_value_T_1 = sendCount + 2'h1; // @[Counter.scala 78:24]
+  wire  sendDone = _T & wrap_wrap; // @[Counter.scala 120:{16,23}]
+  wire  _T_1 = io_in_ready & io_in_valid; // @[Decoupled.scala 50:35]
+  wire [121:0] _data_T = {io_in_bits_chanId,io_in_bits_opcode,io_in_bits_param,io_in_bits_size,io_in_bits_source,
+    io_in_bits_address,io_in_bits_data,io_in_bits_corrupt,io_in_bits_union,io_in_bits_last}; // @[Serdes.scala 183:24]
+  wire  _GEN_3 = _T_1 | sending; // @[Serdes.scala 182:21 184:13 175:24]
+  wire [121:0] _data_T_1 = {{32'd0}, data[121:32]}; // @[Serdes.scala 187:37]
+  assign io_in_ready = ~sending; // @[Serdes.scala 178:18]
+  assign io_out_valid = sending; // @[Serdes.scala 179:16]
+  assign io_out_bits = data[31:0]; // @[Serdes.scala 180:22]
+  always @(posedge clock) begin
+    if (_T) begin // @[Serdes.scala 187:22]
+      data <= _data_T_1; // @[Serdes.scala 187:29]
+    end else if (_T_1) begin // @[Serdes.scala 182:21]
+      data <= _data_T; // @[Serdes.scala 183:10]
+    end
+    if (reset) begin // @[Serdes.scala 175:24]
+      sending <= 1'h0; // @[Serdes.scala 175:24]
+    end else if (sendDone) begin // @[Serdes.scala 189:19]
+      sending <= 1'h0; // @[Serdes.scala 189:29]
+    end else begin
+      sending <= _GEN_3;
+    end
+    if (reset) begin // @[Counter.scala 62:40]
+      sendCount <= 2'h0; // @[Counter.scala 62:40]
+    end else if (_T) begin // @[Counter.scala 120:16]
+      sendCount <= _wrap_value_T_1; // @[Counter.scala 78:15]
+    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 = {4{`RANDOM}};
+  data = _RAND_0[121:0];
+  _RAND_1 = {1{`RANDOM}};
+  sending = _RAND_1[0:0];
+  _RAND_2 = {1{`RANDOM}};
+  sendCount = _RAND_2[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module GenericDeserializer(
+  input         clock,
+  input         reset,
+  output        io_in_ready,
+  input         io_in_valid,
+  input  [31:0] io_in_bits,
+  input         io_out_ready,
+  output        io_out_valid,
+  output [2:0]  io_out_bits_chanId,
+  output [2:0]  io_out_bits_opcode,
+  output [2:0]  io_out_bits_param,
+  output [3:0]  io_out_bits_size,
+  output [2:0]  io_out_bits_source,
+  output [31:0] io_out_bits_address,
+  output [63:0] io_out_bits_data,
+  output        io_out_bits_corrupt,
+  output [7:0]  io_out_bits_union
+);
+`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
+  reg [31:0] data_0; // @[Serdes.scala 200:17]
+  reg [31:0] data_1; // @[Serdes.scala 200:17]
+  reg [31:0] data_2; // @[Serdes.scala 200:17]
+  reg [31:0] data_3; // @[Serdes.scala 200:17]
+  reg  receiving; // @[Serdes.scala 202:26]
+  wire  _T = io_in_ready & io_in_valid; // @[Decoupled.scala 50:35]
+  reg [1:0] recvCount; // @[Counter.scala 62:40]
+  wire  wrap_wrap = recvCount == 2'h3; // @[Counter.scala 74:24]
+  wire [1:0] _wrap_value_T_1 = recvCount + 2'h1; // @[Counter.scala 78:24]
+  wire  recvDone = _T & wrap_wrap; // @[Counter.scala 120:{16,23}]
+  wire [127:0] _io_out_bits_T = {data_3,data_2,data_1,data_0}; // @[Serdes.scala 207:23]
+  wire  _GEN_10 = recvDone ? 1'h0 : receiving; // @[Serdes.scala 213:19 202:26 213:31]
+  wire  _T_2 = io_out_ready & io_out_valid; // @[Decoupled.scala 50:35]
+  wire  _GEN_11 = _T_2 | _GEN_10; // @[Serdes.scala 215:{22,34}]
+  assign io_in_ready = receiving; // @[Serdes.scala 205:15]
+  assign io_out_valid = ~receiving; // @[Serdes.scala 206:19]
+  assign io_out_bits_chanId = _io_out_bits_T[121:119]; // @[Serdes.scala 207:38]
+  assign io_out_bits_opcode = _io_out_bits_T[118:116]; // @[Serdes.scala 207:38]
+  assign io_out_bits_param = _io_out_bits_T[115:113]; // @[Serdes.scala 207:38]
+  assign io_out_bits_size = _io_out_bits_T[112:109]; // @[Serdes.scala 207:38]
+  assign io_out_bits_source = _io_out_bits_T[108:106]; // @[Serdes.scala 207:38]
+  assign io_out_bits_address = _io_out_bits_T[105:74]; // @[Serdes.scala 207:38]
+  assign io_out_bits_data = _io_out_bits_T[73:10]; // @[Serdes.scala 207:38]
+  assign io_out_bits_corrupt = _io_out_bits_T[9]; // @[Serdes.scala 207:38]
+  assign io_out_bits_union = _io_out_bits_T[8:1]; // @[Serdes.scala 207:38]
+  always @(posedge clock) begin
+    if (_T) begin // @[Serdes.scala 209:21]
+      if (2'h0 == recvCount) begin // @[Serdes.scala 210:21]
+        data_0 <= io_in_bits; // @[Serdes.scala 210:21]
+      end
+    end
+    if (_T) begin // @[Serdes.scala 209:21]
+      if (2'h1 == recvCount) begin // @[Serdes.scala 210:21]
+        data_1 <= io_in_bits; // @[Serdes.scala 210:21]
+      end
+    end
+    if (_T) begin // @[Serdes.scala 209:21]
+      if (2'h2 == recvCount) begin // @[Serdes.scala 210:21]
+        data_2 <= io_in_bits; // @[Serdes.scala 210:21]
+      end
+    end
+    if (_T) begin // @[Serdes.scala 209:21]
+      if (2'h3 == recvCount) begin // @[Serdes.scala 210:21]
+        data_3 <= io_in_bits; // @[Serdes.scala 210:21]
+      end
+    end
+    receiving <= reset | _GEN_11; // @[Serdes.scala 202:{26,26}]
+    if (reset) begin // @[Counter.scala 62:40]
+      recvCount <= 2'h0; // @[Counter.scala 62:40]
+    end else if (_T) begin // @[Counter.scala 120:16]
+      recvCount <= _wrap_value_T_1; // @[Counter.scala 78:15]
+    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}};
+  data_0 = _RAND_0[31:0];
+  _RAND_1 = {1{`RANDOM}};
+  data_1 = _RAND_1[31:0];
+  _RAND_2 = {1{`RANDOM}};
+  data_2 = _RAND_2[31:0];
+  _RAND_3 = {1{`RANDOM}};
+  data_3 = _RAND_3[31:0];
+  _RAND_4 = {1{`RANDOM}};
+  receiving = _RAND_4[0:0];
+  _RAND_5 = {1{`RANDOM}};
+  recvCount = _RAND_5[1:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TLSerdesser(
+  input         clock,
+  input         reset,
+  output        auto_manager_in_a_ready,
+  input         auto_manager_in_a_valid,
+  input  [2:0]  auto_manager_in_a_bits_opcode,
+  input  [2:0]  auto_manager_in_a_bits_param,
+  input  [2:0]  auto_manager_in_a_bits_size,
+  input  [2:0]  auto_manager_in_a_bits_source,
+  input  [28:0] auto_manager_in_a_bits_address,
+  input  [7:0]  auto_manager_in_a_bits_mask,
+  input  [63:0] auto_manager_in_a_bits_data,
+  input         auto_manager_in_a_bits_corrupt,
+  input         auto_manager_in_d_ready,
+  output        auto_manager_in_d_valid,
+  output [2:0]  auto_manager_in_d_bits_opcode,
+  output [1:0]  auto_manager_in_d_bits_param,
+  output [2:0]  auto_manager_in_d_bits_size,
+  output [2:0]  auto_manager_in_d_bits_source,
+  output        auto_manager_in_d_bits_sink,
+  output        auto_manager_in_d_bits_denied,
+  output [63:0] auto_manager_in_d_bits_data,
+  output        auto_manager_in_d_bits_corrupt,
+  input         auto_client_out_a_ready,
+  output        auto_client_out_a_valid,
+  output [2:0]  auto_client_out_a_bits_opcode,
+  output [2:0]  auto_client_out_a_bits_param,
+  output [3:0]  auto_client_out_a_bits_size,
+  output        auto_client_out_a_bits_source,
+  output [31:0] auto_client_out_a_bits_address,
+  output [7:0]  auto_client_out_a_bits_mask,
+  output [63:0] auto_client_out_a_bits_data,
+  output        auto_client_out_a_bits_corrupt,
+  output        auto_client_out_d_ready,
+  input         auto_client_out_d_valid,
+  input  [2:0]  auto_client_out_d_bits_opcode,
+  input  [1:0]  auto_client_out_d_bits_param,
+  input  [3:0]  auto_client_out_d_bits_size,
+  input         auto_client_out_d_bits_source,
+  input         auto_client_out_d_bits_sink,
+  input         auto_client_out_d_bits_denied,
+  input  [63:0] auto_client_out_d_bits_data,
+  input         auto_client_out_d_bits_corrupt,
+  output        io_ser_in_ready,
+  input         io_ser_in_valid,
+  input  [31:0] io_ser_in_bits,
+  input         io_ser_out_ready,
+  output        io_ser_out_valid,
+  output [31:0] io_ser_out_bits
+);
+`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 [2:0] monitor_io_in_a_bits_size; // @[Nodes.scala 24:25]
+  wire [2: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 [7: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 [2: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  outArb_clock; // @[Serdes.scala 619:24]
+  wire  outArb_reset; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_1_ready; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_1_valid; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_in_1_bits_opcode; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_in_1_bits_param; // @[Serdes.scala 619:24]
+  wire [3:0] outArb_io_in_1_bits_size; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_in_1_bits_source; // @[Serdes.scala 619:24]
+  wire [63:0] outArb_io_in_1_bits_data; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_1_bits_corrupt; // @[Serdes.scala 619:24]
+  wire [7:0] outArb_io_in_1_bits_union; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_1_bits_last; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_4_ready; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_4_valid; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_in_4_bits_opcode; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_in_4_bits_param; // @[Serdes.scala 619:24]
+  wire [3:0] outArb_io_in_4_bits_size; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_in_4_bits_source; // @[Serdes.scala 619:24]
+  wire [31:0] outArb_io_in_4_bits_address; // @[Serdes.scala 619:24]
+  wire [63:0] outArb_io_in_4_bits_data; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_4_bits_corrupt; // @[Serdes.scala 619:24]
+  wire [7:0] outArb_io_in_4_bits_union; // @[Serdes.scala 619:24]
+  wire  outArb_io_in_4_bits_last; // @[Serdes.scala 619:24]
+  wire  outArb_io_out_ready; // @[Serdes.scala 619:24]
+  wire  outArb_io_out_valid; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_out_bits_chanId; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_out_bits_opcode; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_out_bits_param; // @[Serdes.scala 619:24]
+  wire [3:0] outArb_io_out_bits_size; // @[Serdes.scala 619:24]
+  wire [2:0] outArb_io_out_bits_source; // @[Serdes.scala 619:24]
+  wire [31:0] outArb_io_out_bits_address; // @[Serdes.scala 619:24]
+  wire [63:0] outArb_io_out_bits_data; // @[Serdes.scala 619:24]
+  wire  outArb_io_out_bits_corrupt; // @[Serdes.scala 619:24]
+  wire [7:0] outArb_io_out_bits_union; // @[Serdes.scala 619:24]
+  wire  outArb_io_out_bits_last; // @[Serdes.scala 619:24]
+  wire  outSer_clock; // @[Serdes.scala 621:24]
+  wire  outSer_reset; // @[Serdes.scala 621:24]
+  wire  outSer_io_in_ready; // @[Serdes.scala 621:24]
+  wire  outSer_io_in_valid; // @[Serdes.scala 621:24]
+  wire [2:0] outSer_io_in_bits_chanId; // @[Serdes.scala 621:24]
+  wire [2:0] outSer_io_in_bits_opcode; // @[Serdes.scala 621:24]
+  wire [2:0] outSer_io_in_bits_param; // @[Serdes.scala 621:24]
+  wire [3:0] outSer_io_in_bits_size; // @[Serdes.scala 621:24]
+  wire [2:0] outSer_io_in_bits_source; // @[Serdes.scala 621:24]
+  wire [31:0] outSer_io_in_bits_address; // @[Serdes.scala 621:24]
+  wire [63:0] outSer_io_in_bits_data; // @[Serdes.scala 621:24]
+  wire  outSer_io_in_bits_corrupt; // @[Serdes.scala 621:24]
+  wire [7:0] outSer_io_in_bits_union; // @[Serdes.scala 621:24]
+  wire  outSer_io_in_bits_last; // @[Serdes.scala 621:24]
+  wire  outSer_io_out_ready; // @[Serdes.scala 621:24]
+  wire  outSer_io_out_valid; // @[Serdes.scala 621:24]
+  wire [31:0] outSer_io_out_bits; // @[Serdes.scala 621:24]
+  wire  inDes_clock; // @[Serdes.scala 626:23]
+  wire  inDes_reset; // @[Serdes.scala 626:23]
+  wire  inDes_io_in_ready; // @[Serdes.scala 626:23]
+  wire  inDes_io_in_valid; // @[Serdes.scala 626:23]
+  wire [31:0] inDes_io_in_bits; // @[Serdes.scala 626:23]
+  wire  inDes_io_out_ready; // @[Serdes.scala 626:23]
+  wire  inDes_io_out_valid; // @[Serdes.scala 626:23]
+  wire [2:0] inDes_io_out_bits_chanId; // @[Serdes.scala 626:23]
+  wire [2:0] inDes_io_out_bits_opcode; // @[Serdes.scala 626:23]
+  wire [2:0] inDes_io_out_bits_param; // @[Serdes.scala 626:23]
+  wire [3:0] inDes_io_out_bits_size; // @[Serdes.scala 626:23]
+  wire [2:0] inDes_io_out_bits_source; // @[Serdes.scala 626:23]
+  wire [31:0] inDes_io_out_bits_address; // @[Serdes.scala 626:23]
+  wire [63:0] inDes_io_out_bits_data; // @[Serdes.scala 626:23]
+  wire  inDes_io_out_bits_corrupt; // @[Serdes.scala 626:23]
+  wire [7:0] inDes_io_out_bits_union; // @[Serdes.scala 626:23]
+  wire [1:0] _merged_bits_merged_union_T_1 = {auto_client_out_d_bits_sink,auto_client_out_d_bits_denied}; // @[Cat.scala 31:58]
+  wire  merged_1_ready = outArb_io_in_1_ready; // @[Serdes.scala 354:22 622:18]
+  wire  _merged_bits_last_T_1 = merged_1_ready & auto_client_out_d_valid; // @[Decoupled.scala 50:35]
+  wire [26:0] _merged_bits_last_beats1_decode_T_1 = 27'hfff << auto_client_out_d_bits_size; // @[package.scala 234:77]
+  wire [11:0] _merged_bits_last_beats1_decode_T_3 = ~_merged_bits_last_beats1_decode_T_1[11:0]; // @[package.scala 234:46]
+  wire [8:0] merged_bits_last_beats1_decode = _merged_bits_last_beats1_decode_T_3[11:3]; // @[Edges.scala 219:59]
+  wire  merged_bits_last_beats1_opdata = auto_client_out_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  wire [8:0] merged_bits_last_beats1 = merged_bits_last_beats1_opdata ? merged_bits_last_beats1_decode : 9'h0; // @[Edges.scala 220:14]
+  reg [8:0] merged_bits_last_counter_1; // @[Edges.scala 228:27]
+  wire [8:0] merged_bits_last_counter1_1 = merged_bits_last_counter_1 - 9'h1; // @[Edges.scala 229:28]
+  wire  merged_bits_last_first_1 = merged_bits_last_counter_1 == 9'h0; // @[Edges.scala 230:25]
+  wire  merged_4_ready = outArb_io_in_4_ready; // @[Serdes.scala 354:22 622:18]
+  wire  _merged_bits_last_T_4 = merged_4_ready & auto_manager_in_a_valid; // @[Decoupled.scala 50:35]
+  wire [18:0] _merged_bits_last_beats1_decode_T_13 = 19'hfff << auto_manager_in_a_bits_size; // @[package.scala 234:77]
+  wire [11:0] _merged_bits_last_beats1_decode_T_15 = ~_merged_bits_last_beats1_decode_T_13[11:0]; // @[package.scala 234:46]
+  wire [8:0] merged_bits_last_beats1_decode_3 = _merged_bits_last_beats1_decode_T_15[11:3]; // @[Edges.scala 219:59]
+  wire  merged_bits_last_beats1_opdata_3 = ~auto_manager_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  wire [8:0] merged_bits_last_beats1_3 = merged_bits_last_beats1_opdata_3 ? merged_bits_last_beats1_decode_3 : 9'h0; // @[Edges.scala 220:14]
+  reg [8:0] merged_bits_last_counter_4; // @[Edges.scala 228:27]
+  wire [8:0] merged_bits_last_counter1_4 = merged_bits_last_counter_4 - 9'h1; // @[Edges.scala 229:28]
+  wire  merged_bits_last_first_4 = merged_bits_last_counter_4 == 9'h0; // @[Edges.scala 230:25]
+  wire  _bundleOut_0_a_valid_T = inDes_io_out_bits_chanId == 3'h0; // @[Serdes.scala 234:37]
+  wire  _bundleIn_0_d_valid_T = inDes_io_out_bits_chanId == 3'h3; // @[Serdes.scala 237:37]
+  wire [7:0] _bundleIn_0_d_bits_d_sink_T = {{1'd0}, inDes_io_out_bits_union[7:1]}; // @[Serdes.scala 465:31]
+  wire  _inDes_io_out_ready_T_3 = 3'h1 == inDes_io_out_bits_chanId ? 1'h0 : 3'h0 == inDes_io_out_bits_chanId &
+    auto_client_out_a_ready; // @[Mux.scala 81:58]
+  wire  _inDes_io_out_ready_T_5 = 3'h2 == inDes_io_out_bits_chanId ? 1'h0 : _inDes_io_out_ready_T_3; // @[Mux.scala 81:58]
+  wire  _inDes_io_out_ready_T_7 = 3'h3 == inDes_io_out_bits_chanId ? auto_manager_in_d_ready : _inDes_io_out_ready_T_5; // @[Mux.scala 81:58]
+  TLMonitor_53 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)
+  );
+  HellaPeekingArbiter outArb ( // @[Serdes.scala 619:24]
+    .clock(outArb_clock),
+    .reset(outArb_reset),
+    .io_in_1_ready(outArb_io_in_1_ready),
+    .io_in_1_valid(outArb_io_in_1_valid),
+    .io_in_1_bits_opcode(outArb_io_in_1_bits_opcode),
+    .io_in_1_bits_param(outArb_io_in_1_bits_param),
+    .io_in_1_bits_size(outArb_io_in_1_bits_size),
+    .io_in_1_bits_source(outArb_io_in_1_bits_source),
+    .io_in_1_bits_data(outArb_io_in_1_bits_data),
+    .io_in_1_bits_corrupt(outArb_io_in_1_bits_corrupt),
+    .io_in_1_bits_union(outArb_io_in_1_bits_union),
+    .io_in_1_bits_last(outArb_io_in_1_bits_last),
+    .io_in_4_ready(outArb_io_in_4_ready),
+    .io_in_4_valid(outArb_io_in_4_valid),
+    .io_in_4_bits_opcode(outArb_io_in_4_bits_opcode),
+    .io_in_4_bits_param(outArb_io_in_4_bits_param),
+    .io_in_4_bits_size(outArb_io_in_4_bits_size),
+    .io_in_4_bits_source(outArb_io_in_4_bits_source),
+    .io_in_4_bits_address(outArb_io_in_4_bits_address),
+    .io_in_4_bits_data(outArb_io_in_4_bits_data),
+    .io_in_4_bits_corrupt(outArb_io_in_4_bits_corrupt),
+    .io_in_4_bits_union(outArb_io_in_4_bits_union),
+    .io_in_4_bits_last(outArb_io_in_4_bits_last),
+    .io_out_ready(outArb_io_out_ready),
+    .io_out_valid(outArb_io_out_valid),
+    .io_out_bits_chanId(outArb_io_out_bits_chanId),
+    .io_out_bits_opcode(outArb_io_out_bits_opcode),
+    .io_out_bits_param(outArb_io_out_bits_param),
+    .io_out_bits_size(outArb_io_out_bits_size),
+    .io_out_bits_source(outArb_io_out_bits_source),
+    .io_out_bits_address(outArb_io_out_bits_address),
+    .io_out_bits_data(outArb_io_out_bits_data),
+    .io_out_bits_corrupt(outArb_io_out_bits_corrupt),
+    .io_out_bits_union(outArb_io_out_bits_union),
+    .io_out_bits_last(outArb_io_out_bits_last)
+  );
+  GenericSerializer outSer ( // @[Serdes.scala 621:24]
+    .clock(outSer_clock),
+    .reset(outSer_reset),
+    .io_in_ready(outSer_io_in_ready),
+    .io_in_valid(outSer_io_in_valid),
+    .io_in_bits_chanId(outSer_io_in_bits_chanId),
+    .io_in_bits_opcode(outSer_io_in_bits_opcode),
+    .io_in_bits_param(outSer_io_in_bits_param),
+    .io_in_bits_size(outSer_io_in_bits_size),
+    .io_in_bits_source(outSer_io_in_bits_source),
+    .io_in_bits_address(outSer_io_in_bits_address),
+    .io_in_bits_data(outSer_io_in_bits_data),
+    .io_in_bits_corrupt(outSer_io_in_bits_corrupt),
+    .io_in_bits_union(outSer_io_in_bits_union),
+    .io_in_bits_last(outSer_io_in_bits_last),
+    .io_out_ready(outSer_io_out_ready),
+    .io_out_valid(outSer_io_out_valid),
+    .io_out_bits(outSer_io_out_bits)
+  );
+  GenericDeserializer inDes ( // @[Serdes.scala 626:23]
+    .clock(inDes_clock),
+    .reset(inDes_reset),
+    .io_in_ready(inDes_io_in_ready),
+    .io_in_valid(inDes_io_in_valid),
+    .io_in_bits(inDes_io_in_bits),
+    .io_out_ready(inDes_io_out_ready),
+    .io_out_valid(inDes_io_out_valid),
+    .io_out_bits_chanId(inDes_io_out_bits_chanId),
+    .io_out_bits_opcode(inDes_io_out_bits_opcode),
+    .io_out_bits_param(inDes_io_out_bits_param),
+    .io_out_bits_size(inDes_io_out_bits_size),
+    .io_out_bits_source(inDes_io_out_bits_source),
+    .io_out_bits_address(inDes_io_out_bits_address),
+    .io_out_bits_data(inDes_io_out_bits_data),
+    .io_out_bits_corrupt(inDes_io_out_bits_corrupt),
+    .io_out_bits_union(inDes_io_out_bits_union)
+  );
+  assign auto_manager_in_a_ready = outArb_io_in_4_ready; // @[Serdes.scala 354:22 622:18]
+  assign auto_manager_in_d_valid = inDes_io_out_valid & _bundleIn_0_d_valid_T; // @[Serdes.scala 634:46]
+  assign auto_manager_in_d_bits_opcode = inDes_io_out_bits_opcode; // @[Serdes.scala 457:17 458:15]
+  assign auto_manager_in_d_bits_param = inDes_io_out_bits_param[1:0]; // @[Serdes.scala 457:17 459:15]
+  assign auto_manager_in_d_bits_size = inDes_io_out_bits_size[2:0]; // @[Serdes.scala 457:17 460:15]
+  assign auto_manager_in_d_bits_source = inDes_io_out_bits_source; // @[Serdes.scala 457:17 461:15]
+  assign auto_manager_in_d_bits_sink = _bundleIn_0_d_bits_d_sink_T[0]; // @[Serdes.scala 457:17 465:17]
+  assign auto_manager_in_d_bits_denied = inDes_io_out_bits_union[0]; // @[Serdes.scala 466:30]
+  assign auto_manager_in_d_bits_data = inDes_io_out_bits_data; // @[Serdes.scala 457:17 462:15]
+  assign auto_manager_in_d_bits_corrupt = inDes_io_out_bits_corrupt; // @[Serdes.scala 457:17 464:17]
+  assign auto_client_out_a_valid = inDes_io_out_valid & _bundleOut_0_a_valid_T; // @[Serdes.scala 628:45]
+  assign auto_client_out_a_bits_opcode = inDes_io_out_bits_opcode; // @[Serdes.scala 371:17 372:15]
+  assign auto_client_out_a_bits_param = inDes_io_out_bits_param; // @[Serdes.scala 371:17 373:15]
+  assign auto_client_out_a_bits_size = inDes_io_out_bits_size; // @[Serdes.scala 371:17 374:15]
+  assign auto_client_out_a_bits_source = inDes_io_out_bits_source[0]; // @[Serdes.scala 371:17 375:15]
+  assign auto_client_out_a_bits_address = inDes_io_out_bits_address; // @[Serdes.scala 371:17 376:15]
+  assign auto_client_out_a_bits_mask = inDes_io_out_bits_union; // @[Serdes.scala 371:17 382:15]
+  assign auto_client_out_a_bits_data = inDes_io_out_bits_data; // @[Serdes.scala 371:17 377:15]
+  assign auto_client_out_a_bits_corrupt = inDes_io_out_bits_corrupt; // @[Serdes.scala 371:17 379:17]
+  assign auto_client_out_d_ready = outArb_io_in_1_ready; // @[Serdes.scala 354:22 622:18]
+  assign io_ser_in_ready = inDes_io_in_ready; // @[Serdes.scala 627:17]
+  assign io_ser_out_valid = outSer_io_out_valid; // @[Serdes.scala 624:16]
+  assign io_ser_out_bits = outSer_io_out_bits; // @[Serdes.scala 624:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = outArb_io_in_4_ready; // @[Serdes.scala 354:22 622:18]
+  assign monitor_io_in_a_valid = auto_manager_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_manager_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_manager_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_manager_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_manager_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_manager_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_manager_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_manager_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_manager_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = inDes_io_out_valid & _bundleIn_0_d_valid_T; // @[Serdes.scala 634:46]
+  assign monitor_io_in_d_bits_opcode = inDes_io_out_bits_opcode; // @[Serdes.scala 457:17 458:15]
+  assign monitor_io_in_d_bits_param = inDes_io_out_bits_param[1:0]; // @[Serdes.scala 457:17 459:15]
+  assign monitor_io_in_d_bits_size = inDes_io_out_bits_size[2:0]; // @[Serdes.scala 457:17 460:15]
+  assign monitor_io_in_d_bits_source = inDes_io_out_bits_source; // @[Serdes.scala 457:17 461:15]
+  assign monitor_io_in_d_bits_sink = _bundleIn_0_d_bits_d_sink_T[0]; // @[Serdes.scala 457:17 465:17]
+  assign monitor_io_in_d_bits_denied = inDes_io_out_bits_union[0]; // @[Serdes.scala 466:30]
+  assign monitor_io_in_d_bits_corrupt = inDes_io_out_bits_corrupt; // @[Serdes.scala 457:17 464:17]
+  assign outArb_clock = clock;
+  assign outArb_reset = reset;
+  assign outArb_io_in_1_valid = auto_client_out_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign outArb_io_in_1_bits_opcode = auto_client_out_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign outArb_io_in_1_bits_param = {{1'd0}, auto_client_out_d_bits_param}; // @[Serdes.scala 309:22 312:20]
+  assign outArb_io_in_1_bits_size = auto_client_out_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign outArb_io_in_1_bits_source = {{2'd0}, auto_client_out_d_bits_source}; // @[Serdes.scala 309:22 314:20]
+  assign outArb_io_in_1_bits_data = auto_client_out_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign outArb_io_in_1_bits_corrupt = auto_client_out_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 311:12]
+  assign outArb_io_in_1_bits_union = {{6'd0}, _merged_bits_merged_union_T_1}; // @[Serdes.scala 309:22 319:22]
+  assign outArb_io_in_1_bits_last = merged_bits_last_counter_1 == 9'h1 | merged_bits_last_beats1 == 9'h0; // @[Edges.scala 231:37]
+  assign outArb_io_in_4_valid = auto_manager_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_opcode = auto_manager_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_param = auto_manager_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_size = {{1'd0}, auto_manager_in_a_bits_size}; // @[Serdes.scala 252:22 256:20]
+  assign outArb_io_in_4_bits_source = auto_manager_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_address = {{3'd0}, auto_manager_in_a_bits_address}; // @[Serdes.scala 252:22 258:20]
+  assign outArb_io_in_4_bits_data = auto_manager_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_corrupt = auto_manager_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_union = auto_manager_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign outArb_io_in_4_bits_last = merged_bits_last_counter_4 == 9'h1 | merged_bits_last_beats1_3 == 9'h0; // @[Edges.scala 231:37]
+  assign outArb_io_out_ready = outSer_io_in_ready; // @[Serdes.scala 623:18]
+  assign outSer_clock = clock;
+  assign outSer_reset = reset;
+  assign outSer_io_in_valid = outArb_io_out_valid; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_chanId = outArb_io_out_bits_chanId; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_opcode = outArb_io_out_bits_opcode; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_param = outArb_io_out_bits_param; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_size = outArb_io_out_bits_size; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_source = outArb_io_out_bits_source; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_address = outArb_io_out_bits_address; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_data = outArb_io_out_bits_data; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_corrupt = outArb_io_out_bits_corrupt; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_union = outArb_io_out_bits_union; // @[Serdes.scala 623:18]
+  assign outSer_io_in_bits_last = outArb_io_out_bits_last; // @[Serdes.scala 623:18]
+  assign outSer_io_out_ready = io_ser_out_ready; // @[Serdes.scala 624:16]
+  assign inDes_clock = clock;
+  assign inDes_reset = reset;
+  assign inDes_io_in_valid = io_ser_in_valid; // @[Serdes.scala 627:17]
+  assign inDes_io_in_bits = io_ser_in_bits; // @[Serdes.scala 627:17]
+  assign inDes_io_out_ready = 3'h4 == inDes_io_out_bits_chanId ? 1'h0 : _inDes_io_out_ready_T_7; // @[Mux.scala 81:58]
+  always @(posedge clock) begin
+    if (reset) begin // @[Edges.scala 228:27]
+      merged_bits_last_counter_1 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (_merged_bits_last_T_1) begin // @[Edges.scala 234:17]
+      if (merged_bits_last_first_1) begin // @[Edges.scala 235:21]
+        if (merged_bits_last_beats1_opdata) begin // @[Edges.scala 220:14]
+          merged_bits_last_counter_1 <= merged_bits_last_beats1_decode;
+        end else begin
+          merged_bits_last_counter_1 <= 9'h0;
+        end
+      end else begin
+        merged_bits_last_counter_1 <= merged_bits_last_counter1_1;
+      end
+    end
+    if (reset) begin // @[Edges.scala 228:27]
+      merged_bits_last_counter_4 <= 9'h0; // @[Edges.scala 228:27]
+    end else if (_merged_bits_last_T_4) begin // @[Edges.scala 234:17]
+      if (merged_bits_last_first_4) begin // @[Edges.scala 235:21]
+        if (merged_bits_last_beats1_opdata_3) begin // @[Edges.scala 220:14]
+          merged_bits_last_counter_4 <= merged_bits_last_beats1_decode_3;
+        end else begin
+          merged_bits_last_counter_4 <= 9'h0;
+        end
+      end else begin
+        merged_bits_last_counter_4 <= merged_bits_last_counter1_4;
+      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}};
+  merged_bits_last_counter_1 = _RAND_0[8:0];
+  _RAND_1 = {1{`RANDOM}};
+  merged_bits_last_counter_4 = _RAND_1[8: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         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  [2:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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  [2: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 == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_1 = io_in_a_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_2 = io_in_a_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_3 = io_in_a_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok = _source_ok_T | _source_ok_T_1 | _source_ok_T_2 | _source_ok_T_3; // @[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 [1:0] mask_sizeOH_shiftAmount = io_in_a_bits_size[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 3'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[Cat.scala 31:58]
+  wire  _T_42 = io_in_a_bits_opcode == 3'h6; // @[Monitor.scala 81:25]
+  wire [28:0] _T_56 = io_in_a_bits_address ^ 29'h20000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_57 = {1'b0,$signed(_T_56)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_59 = $signed(_T_57) & -30'sh10000; // @[Parameters.scala 137:52]
+  wire  _T_60 = $signed(_T_59) == 30'sh0; // @[Parameters.scala 137:67]
+  wire [28:0] _T_61 = io_in_a_bits_address ^ 29'h10000000; // @[Parameters.scala 137:31]
+  wire [29:0] _T_62 = {1'b0,$signed(_T_61)}; // @[Parameters.scala 137:49]
+  wire [29:0] _T_64 = $signed(_T_62) & -30'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_65 = $signed(_T_64) == 30'sh0; // @[Parameters.scala 137:67]
+  wire  _T_66 = _T_60 | _T_65; // @[Parameters.scala 671:42]
+  wire  _T_104 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_108 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_109 = _T_108 == 8'h0; // @[Monitor.scala 88:31]
+  wire  _T_113 = ~io_in_a_bits_corrupt; // @[Monitor.scala 89:18]
+  wire  _T_117 = io_in_a_bits_opcode == 3'h7; // @[Monitor.scala 92:25]
+  wire  _T_183 = io_in_a_bits_param != 3'h0; // @[Monitor.scala 99:31]
+  wire  _T_196 = io_in_a_bits_opcode == 3'h4; // @[Monitor.scala 104:25]
+  wire  _T_213 = io_in_a_bits_size <= 3'h6; // @[Parameters.scala 92:42]
+  wire  _T_227 = _T_213 & _T_66; // @[Parameters.scala 670:56]
+  wire  _T_238 = io_in_a_bits_param == 3'h0; // @[Monitor.scala 109:31]
+  wire  _T_242 = io_in_a_bits_mask == mask; // @[Monitor.scala 110:30]
+  wire  _T_250 = io_in_a_bits_opcode == 3'h0; // @[Monitor.scala 114:25]
+  wire  _T_272 = _T_213 & _T_65; // @[Parameters.scala 670:56]
+  wire  _T_282 = source_ok & _T_272; // @[Monitor.scala 115:71]
+  wire  _T_300 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_346 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_347 = io_in_a_bits_mask & _T_346; // @[Monitor.scala 127:31]
+  wire  _T_348 = _T_347 == 8'h0; // @[Monitor.scala 127:40]
+  wire  _T_352 = io_in_a_bits_opcode == 3'h2; // @[Monitor.scala 130:25]
+  wire  _T_389 = io_in_a_bits_param <= 3'h4; // @[Bundles.scala 138:33]
+  wire  _T_397 = io_in_a_bits_opcode == 3'h3; // @[Monitor.scala 138:25]
+  wire  _T_434 = io_in_a_bits_param <= 3'h3; // @[Bundles.scala 145:30]
+  wire  _T_442 = io_in_a_bits_opcode == 3'h5; // @[Monitor.scala 146:25]
+  wire  _T_479 = io_in_a_bits_param <= 3'h1; // @[Bundles.scala 158:28]
+  wire  _T_491 = io_in_d_bits_opcode <= 3'h6; // @[Bundles.scala 42:24]
+  wire  _source_ok_T_6 = io_in_d_bits_source == 3'h2; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_7 = io_in_d_bits_source == 3'h1; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_8 = io_in_d_bits_source == 3'h0; // @[Parameters.scala 46:9]
+  wire  _source_ok_T_9 = io_in_d_bits_source == 3'h4; // @[Parameters.scala 46:9]
+  wire  source_ok_1 = _source_ok_T_6 | _source_ok_T_7 | _source_ok_T_8 | _source_ok_T_9; // @[Parameters.scala 1125:46]
+  wire  _T_495 = io_in_d_bits_opcode == 3'h6; // @[Monitor.scala 310:25]
+  wire  _T_499 = io_in_d_bits_size >= 3'h3; // @[Monitor.scala 312:27]
+  wire  _T_503 = io_in_d_bits_param == 2'h0; // @[Monitor.scala 313:28]
+  wire  _T_507 = ~io_in_d_bits_corrupt; // @[Monitor.scala 314:15]
+  wire  _T_511 = ~io_in_d_bits_denied; // @[Monitor.scala 315:15]
+  wire  _T_515 = io_in_d_bits_opcode == 3'h4; // @[Monitor.scala 318:25]
+  wire  _T_526 = io_in_d_bits_param <= 2'h2; // @[Bundles.scala 102:26]
+  wire  _T_530 = io_in_d_bits_param != 2'h2; // @[Monitor.scala 323:28]
+  wire  _T_543 = io_in_d_bits_opcode == 3'h5; // @[Monitor.scala 328:25]
+  wire  _T_563 = _T_511 | io_in_d_bits_corrupt; // @[Monitor.scala 334:30]
+  wire  _T_572 = io_in_d_bits_opcode == 3'h0; // @[Monitor.scala 338:25]
+  wire  _T_589 = io_in_d_bits_opcode == 3'h1; // @[Monitor.scala 346:25]
+  wire  _T_607 = 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 [2:0] a_first_beats1_decode = is_aligned_mask[5:3]; // @[Edges.scala 219:59]
+  wire  a_first_beats1_opdata = ~io_in_a_bits_opcode[2]; // @[Edges.scala 91:28]
+  reg [2:0] a_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1 = a_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first = a_first_counter == 3'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 [2:0] source; // @[Monitor.scala 387:22]
+  reg [28:0] address; // @[Monitor.scala 388:22]
+  wire  _T_637 = io_in_a_valid & ~a_first; // @[Monitor.scala 389:19]
+  wire  _T_638 = io_in_a_bits_opcode == opcode; // @[Monitor.scala 390:32]
+  wire  _T_642 = io_in_a_bits_param == param; // @[Monitor.scala 391:32]
+  wire  _T_646 = io_in_a_bits_size == size; // @[Monitor.scala 392:32]
+  wire  _T_650 = io_in_a_bits_source == source; // @[Monitor.scala 393:32]
+  wire  _T_654 = 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 [2:0] d_first_beats1_decode = _d_first_beats1_decode_T_3[5:3]; // @[Edges.scala 219:59]
+  wire  d_first_beats1_opdata = io_in_d_bits_opcode[0]; // @[Edges.scala 105:36]
+  reg [2:0] d_first_counter; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1 = d_first_counter - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first = d_first_counter == 3'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 [2:0] source_1; // @[Monitor.scala 538:22]
+  reg  sink; // @[Monitor.scala 539:22]
+  reg  denied; // @[Monitor.scala 540:22]
+  wire  _T_661 = io_in_d_valid & ~d_first; // @[Monitor.scala 541:19]
+  wire  _T_662 = io_in_d_bits_opcode == opcode_1; // @[Monitor.scala 542:29]
+  wire  _T_666 = io_in_d_bits_param == param_1; // @[Monitor.scala 543:29]
+  wire  _T_670 = io_in_d_bits_size == size_1; // @[Monitor.scala 544:29]
+  wire  _T_674 = io_in_d_bits_source == source_1; // @[Monitor.scala 545:29]
+  wire  _T_678 = io_in_d_bits_sink == sink; // @[Monitor.scala 546:29]
+  wire  _T_682 = io_in_d_bits_denied == denied; // @[Monitor.scala 547:29]
+  reg [4:0] inflight; // @[Monitor.scala 611:27]
+  reg [19:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [19:0] inflight_sizes; // @[Monitor.scala 615:33]
+  reg [2:0] a_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] a_first_counter1_1 = a_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  a_first_1 = a_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  reg [2:0] d_first_counter_1; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_1 = d_first_counter_1 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_1 = d_first_counter_1 == 3'h0; // @[Edges.scala 230:25]
+  wire [4:0] _GEN_72 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [5:0] _a_opcode_lookup_T = {{1'd0}, _GEN_72}; // @[Monitor.scala 634:69]
+  wire [19: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 [19:0] _GEN_73 = {{4'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [19:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[19:1]}; // @[Monitor.scala 634:152]
+  wire [19:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [19:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [19:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[19:1]}; // @[Monitor.scala 638:144]
+  wire  _T_688 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [7:0] _a_set_wo_ready_T = 8'h1 << io_in_a_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_15 = io_in_a_valid & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 648:71 649:22]
+  wire  _T_691 = _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 [4:0] _GEN_78 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [5: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 [66:0] _GEN_1 = {{63'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [66: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 [66:0] _GEN_2 = {{63'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [66:0] _a_sizes_set_T_1 = _GEN_2 << _a_opcodes_set_T; // @[Monitor.scala 657:52]
+  wire [4:0] _T_693 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_695 = ~_T_693[0]; // @[Monitor.scala 658:17]
+  wire [7:0] _GEN_16 = _a_first_T & a_first_1 ? _a_set_wo_ready_T : 8'h0; // @[Monitor.scala 652:72 653:28]
+  wire [66:0] _GEN_19 = _a_first_T & a_first_1 ? _a_opcodes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 656:28]
+  wire [66:0] _GEN_20 = _a_first_T & a_first_1 ? _a_sizes_set_T_1 : 67'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_699 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire  _T_701 = ~_T_495; // @[Monitor.scala 671:74]
+  wire  _T_702 = io_in_d_valid & d_first_1 & ~_T_495; // @[Monitor.scala 671:71]
+  wire [7:0] _d_clr_wo_ready_T = 8'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [7:0] _GEN_21 = io_in_d_valid & d_first_1 & ~_T_495 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 671:90 672:22]
+  wire [78:0] _GEN_3 = {{63'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [78:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [7:0] _GEN_22 = _d_first_T & d_first_1 & _T_701 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 675:91 676:21]
+  wire [78:0] _GEN_23 = _d_first_T & d_first_1 & _T_701 ? _d_opcodes_clr_T_5 : 79'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_688 & io_in_a_bits_source == io_in_d_bits_source; // @[Monitor.scala 681:88]
+  wire [4:0] _T_712 = inflight >> io_in_d_bits_source; // @[Monitor.scala 682:25]
+  wire  _T_714 = _T_712[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_719 = io_in_d_bits_opcode == _GEN_40; // @[Monitor.scala 686:39]
+  wire  _T_720 = io_in_d_bits_opcode == _GEN_32 | _T_719; // @[Monitor.scala 685:77]
+  wire  _T_724 = 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_731 = io_in_d_bits_opcode == _GEN_56; // @[Monitor.scala 690:38]
+  wire  _T_732 = io_in_d_bits_opcode == _GEN_48 | _T_731; // @[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_736 = _GEN_82 == a_size_lookup; // @[Monitor.scala 691:36]
+  wire  _T_746 = _T_699 & a_first_1 & io_in_a_valid & _same_cycle_resp_T_2 & _T_701; // @[Monitor.scala 694:116]
+  wire  _T_748 = ~io_in_d_ready | io_in_a_ready; // @[Monitor.scala 695:32]
+  wire [4:0] a_set_wo_ready = _GEN_15[4:0];
+  wire [4:0] d_clr_wo_ready = _GEN_21[4:0];
+  wire  _T_755 = a_set_wo_ready != d_clr_wo_ready | ~(|a_set_wo_ready); // @[Monitor.scala 699:48]
+  wire [4:0] a_set = _GEN_16[4:0];
+  wire [4:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [4:0] d_clr = _GEN_22[4:0];
+  wire [4:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [4:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [19:0] a_opcodes_set = _GEN_19[19:0];
+  wire [19:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [19:0] d_opcodes_clr = _GEN_23[19:0];
+  wire [19:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [19:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [19:0] a_sizes_set = _GEN_20[19:0];
+  wire [19:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [19: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_764 = ~(|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 [4:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [19:0] inflight_sizes_1; // @[Monitor.scala 725:35]
+  reg [2:0] d_first_counter_2; // @[Edges.scala 228:27]
+  wire [2:0] d_first_counter1_2 = d_first_counter_2 - 3'h1; // @[Edges.scala 229:28]
+  wire  d_first_2 = d_first_counter_2 == 3'h0; // @[Edges.scala 230:25]
+  wire [19:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [19:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [19:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[19:1]}; // @[Monitor.scala 747:146]
+  wire  _T_790 = io_in_d_valid & d_first_2 & _T_495; // @[Monitor.scala 779:71]
+  wire [7:0] _GEN_67 = _d_first_T & d_first_2 & _T_495 ? _d_clr_wo_ready_T : 8'h0; // @[Monitor.scala 783:90 784:21]
+  wire [78:0] _GEN_68 = _d_first_T & d_first_2 & _T_495 ? _d_opcodes_clr_T_5 : 79'h0; // @[Monitor.scala 783:90 785:21]
+  wire [4:0] _T_798 = 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_808 = _GEN_82 == c_size_lookup; // @[Monitor.scala 795:36]
+  wire [4:0] d_clr_1 = _GEN_67[4:0];
+  wire [4:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [4:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [19:0] d_opcodes_clr_1 = _GEN_68[19:0];
+  wire [19:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [19: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_833 = ~(|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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 20'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 <= 3'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 <= 3'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 <= 3'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 <= 3'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 <= 5'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 <= 20'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 <= 3'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 <= 3'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_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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 (io_in_a_valid & _T_42 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset) 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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~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_104 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_104) 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_109 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_109) 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_113 & (io_in_a_valid & _T_42 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_42 & ~reset & ~_T_113) 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_117 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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 (io_in_a_valid & _T_117 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset) 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_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~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_104 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_104) 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_183 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_183) 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_109 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_109) 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_113 & (io_in_a_valid & _T_117 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_117 & ~reset & ~_T_113) 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_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~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_227 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_227) 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_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~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_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~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_238 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_238) 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_242 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_242) 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_113 & (io_in_a_valid & _T_196 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_196 & ~reset & ~_T_113) 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_282 & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~_T_282) 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_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~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_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~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_238 & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~_T_238) 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_242 & (io_in_a_valid & _T_250 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_250 & ~reset & ~_T_242) 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_282 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_282) 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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~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_238 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_238) 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_348 & (io_in_a_valid & _T_300 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_300 & ~reset & ~_T_348) 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 (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 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_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 & ~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_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 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_389 & (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_389) 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_242 & (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_242) 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 (io_in_a_valid & _T_397 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset) 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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~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_434 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_434) 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_242 & (io_in_a_valid & _T_397 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_397 & ~reset & ~_T_242) 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_442 & ~reset) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~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_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~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_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~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_479 & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~_T_479) 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_242 & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~_T_242) 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_113 & (io_in_a_valid & _T_442 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_a_valid & _T_442 & ~reset & ~_T_113) 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_491 & (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_491) 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_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_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_499 & (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_499) 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_503 & (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_503) 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_507 & (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_507) 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_511 & (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_511) 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_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _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_515 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _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_499 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_499) 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_526 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_526) 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_530 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_530) 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_507 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_507) 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_511 & (io_in_d_valid & _T_515 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_515 & _T_2 & ~_T_511) 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_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_543 & _T_2) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _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_499 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_499) 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_526 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_526) 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_530 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_530) 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_563 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_563) 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_511 & (io_in_d_valid & _T_543 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_543 & _T_2 & ~_T_511) 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_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _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_503 & (io_in_d_valid & _T_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~_T_503) 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_507 & (io_in_d_valid & _T_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~_T_507) 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_511 & (io_in_d_valid & _T_572 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_572 & _T_2 & ~_T_511) 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_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _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_503 & (io_in_d_valid & _T_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~_T_503) 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_563 & (io_in_d_valid & _T_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~_T_563) 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_511 & (io_in_d_valid & _T_589 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_589 & _T_2 & ~_T_511) 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_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _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_503 & (io_in_d_valid & _T_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~_T_503) 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_507 & (io_in_d_valid & _T_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~_T_507) 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_511 & (io_in_d_valid & _T_607 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (io_in_d_valid & _T_607 & _T_2 & ~_T_511) 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_638 & (_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 (_T_637 & ~reset & ~_T_638) 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_642 & (_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 (_T_637 & ~reset & ~_T_642) 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_646 & (_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 (_T_637 & ~reset & ~_T_646) 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_650 & (_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 (_T_637 & ~reset & ~_T_650) 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_654 & (_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 (_T_637 & ~reset & ~_T_654) 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_662 & (_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_661 & _T_2 & ~_T_662) 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_666 & (_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_661 & _T_2 & ~_T_666) 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_670 & (_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_661 & _T_2 & ~_T_670) 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_674 & (_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_661 & _T_2 & ~_T_674) 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_678 & (_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_661 & _T_2 & ~_T_678) 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_682 & (_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_661 & _T_2 & ~_T_682) 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_695 & (_T_691 & ~reset)) begin
+          $fatal; // @[Monitor.scala 42:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_691 & ~reset & ~_T_695) 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_714 & (_T_702 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & _T_2 & ~_T_714) 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_720 & (_T_702 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & same_cycle_resp & _T_2 & ~_T_720) 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_724 & (_T_702 & same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & same_cycle_resp & _T_2 & ~_T_724) 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_732 & (_T_702 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & ~same_cycle_resp & _T_2 & ~_T_732) 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_736 & (_T_702 & ~same_cycle_resp & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_702 & ~same_cycle_resp & _T_2 & ~_T_736) 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_748 & (_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 (_T_746 & _T_2 & ~_T_748) 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_755 & _T_2) begin
+          $fatal; // @[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_755) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' and 'D' concurrent, despite minlatency 2 (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_764 & ~reset) begin
+          $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_764) 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_798[0] & (_T_790 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_790 & _T_2 & ~_T_798[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_808 & (_T_790 & _T_2)) begin
+          $fatal; // @[Monitor.scala 49:11]
+        end
+    `ifdef STOP_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef PRINTF_COND
+      if (`PRINTF_COND) begin
+    `endif
+        if (_T_790 & _T_2 & ~_T_808) 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_833 & ~reset) begin
+          $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_833) 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[2: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[2:0];
+  _RAND_5 = {1{`RANDOM}};
+  address = _RAND_5[28:0];
+  _RAND_6 = {1{`RANDOM}};
+  d_first_counter = _RAND_6[2: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[2: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[4:0];
+  _RAND_14 = {1{`RANDOM}};
+  inflight_opcodes = _RAND_14[19:0];
+  _RAND_15 = {1{`RANDOM}};
+  inflight_sizes = _RAND_15[19:0];
+  _RAND_16 = {1{`RANDOM}};
+  a_first_counter_1 = _RAND_16[2:0];
+  _RAND_17 = {1{`RANDOM}};
+  d_first_counter_1 = _RAND_17[2:0];
+  _RAND_18 = {1{`RANDOM}};
+  watchdog = _RAND_18[31:0];
+  _RAND_19 = {1{`RANDOM}};
+  inflight_1 = _RAND_19[4:0];
+  _RAND_20 = {1{`RANDOM}};
+  inflight_sizes_1 = _RAND_20[19:0];
+  _RAND_21 = {1{`RANDOM}};
+  d_first_counter_2 = _RAND_21[2: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_24(
+  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  [2:0]  io_enq_bits_source,
+  input  [28:0] io_enq_bits_address,
+  input  [7:0]  io_enq_bits_mask,
+  input  [63: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 [2:0]  io_deq_bits_source,
+  output [28:0] io_deq_bits_address,
+  output [7:0]  io_deq_bits_mask,
+  output [63: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 [63: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 [2: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 [2:0] ram_source_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [2: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 [28: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 [28:0] ram_address_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [28: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 [7: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 [7:0] ram_mask_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [7: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 [63: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 [63:0] ram_data_io_deq_bits_MPORT_data; // @[Decoupled.scala 259:95]
+  wire [63: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[2:0];
+  _RAND_4 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_address[initvar] = _RAND_4[28:0];
+  _RAND_5 = {1{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_mask[initvar] = _RAND_5[7:0];
+  _RAND_6 = {2{`RANDOM}};
+  for (initvar = 0; initvar < 2; initvar = initvar+1)
+    ram_data[initvar] = _RAND_6[63: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_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  [2:0]  auto_in_a_bits_source,
+  input  [28:0] auto_in_a_bits_address,
+  input  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [2:0]  auto_in_d_bits_source,
+  output        auto_in_d_bits_sink,
+  output        auto_in_d_bits_denied,
+  output [63: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 [2:0]  auto_out_a_bits_source,
+  output [28:0] auto_out_a_bits_address,
+  output [7:0]  auto_out_a_bits_mask,
+  output [63: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  [2:0]  auto_out_d_bits_source,
+  input         auto_out_d_bits_sink,
+  input         auto_out_d_bits_denied,
+  input  [63: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 [2: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 [7: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 [2: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 [2:0] bundleOut_0_a_q_io_enq_bits_source; // @[Decoupled.scala 361:21]
+  wire [28:0] bundleOut_0_a_q_io_enq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_enq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2:0] bundleOut_0_a_q_io_deq_bits_source; // @[Decoupled.scala 361:21]
+  wire [28:0] bundleOut_0_a_q_io_deq_bits_address; // @[Decoupled.scala 361:21]
+  wire [7:0] bundleOut_0_a_q_io_deq_bits_mask; // @[Decoupled.scala 361:21]
+  wire [63: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 [2: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 [63: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 [2: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 [63: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_54 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_24 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 ClockSinkDomain_2(
+  input         auto_serdesser_client_out_a_ready,
+  output        auto_serdesser_client_out_a_valid,
+  output [2:0]  auto_serdesser_client_out_a_bits_opcode,
+  output [2:0]  auto_serdesser_client_out_a_bits_param,
+  output [3:0]  auto_serdesser_client_out_a_bits_size,
+  output        auto_serdesser_client_out_a_bits_source,
+  output [31:0] auto_serdesser_client_out_a_bits_address,
+  output [7:0]  auto_serdesser_client_out_a_bits_mask,
+  output [63:0] auto_serdesser_client_out_a_bits_data,
+  output        auto_serdesser_client_out_a_bits_corrupt,
+  output        auto_serdesser_client_out_d_ready,
+  input         auto_serdesser_client_out_d_valid,
+  input  [2:0]  auto_serdesser_client_out_d_bits_opcode,
+  input  [1:0]  auto_serdesser_client_out_d_bits_param,
+  input  [3:0]  auto_serdesser_client_out_d_bits_size,
+  input         auto_serdesser_client_out_d_bits_source,
+  input         auto_serdesser_client_out_d_bits_sink,
+  input         auto_serdesser_client_out_d_bits_denied,
+  input  [63:0] auto_serdesser_client_out_d_bits_data,
+  input         auto_serdesser_client_out_d_bits_corrupt,
+  output        auto_tlserial_manager_crossing_in_a_ready,
+  input         auto_tlserial_manager_crossing_in_a_valid,
+  input  [2:0]  auto_tlserial_manager_crossing_in_a_bits_opcode,
+  input  [2:0]  auto_tlserial_manager_crossing_in_a_bits_param,
+  input  [2:0]  auto_tlserial_manager_crossing_in_a_bits_size,
+  input  [2:0]  auto_tlserial_manager_crossing_in_a_bits_source,
+  input  [28:0] auto_tlserial_manager_crossing_in_a_bits_address,
+  input  [7:0]  auto_tlserial_manager_crossing_in_a_bits_mask,
+  input  [63:0] auto_tlserial_manager_crossing_in_a_bits_data,
+  input         auto_tlserial_manager_crossing_in_a_bits_corrupt,
+  input         auto_tlserial_manager_crossing_in_d_ready,
+  output        auto_tlserial_manager_crossing_in_d_valid,
+  output [2:0]  auto_tlserial_manager_crossing_in_d_bits_opcode,
+  output [1:0]  auto_tlserial_manager_crossing_in_d_bits_param,
+  output [2:0]  auto_tlserial_manager_crossing_in_d_bits_size,
+  output [2:0]  auto_tlserial_manager_crossing_in_d_bits_source,
+  output        auto_tlserial_manager_crossing_in_d_bits_sink,
+  output        auto_tlserial_manager_crossing_in_d_bits_denied,
+  output [63:0] auto_tlserial_manager_crossing_in_d_bits_data,
+  output        auto_tlserial_manager_crossing_in_d_bits_corrupt,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset,
+  output        serial_tl_in_ready,
+  input         serial_tl_in_valid,
+  input  [31:0] serial_tl_in_bits,
+  input         serial_tl_out_ready,
+  output        serial_tl_out_valid,
+  output [31:0] serial_tl_out_bits,
+  output        clock
+);
+  wire  serdesser_clock; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_reset; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_a_ready; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_a_valid; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_a_bits_opcode; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_a_bits_param; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_a_bits_size; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_a_bits_source; // @[SerialAdapter.scala 376:40]
+  wire [28:0] serdesser_auto_manager_in_a_bits_address; // @[SerialAdapter.scala 376:40]
+  wire [7:0] serdesser_auto_manager_in_a_bits_mask; // @[SerialAdapter.scala 376:40]
+  wire [63:0] serdesser_auto_manager_in_a_bits_data; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_a_bits_corrupt; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_d_ready; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_d_valid; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_d_bits_opcode; // @[SerialAdapter.scala 376:40]
+  wire [1:0] serdesser_auto_manager_in_d_bits_param; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_d_bits_size; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_manager_in_d_bits_source; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_d_bits_sink; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_d_bits_denied; // @[SerialAdapter.scala 376:40]
+  wire [63:0] serdesser_auto_manager_in_d_bits_data; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_manager_in_d_bits_corrupt; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_a_ready; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_a_valid; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_client_out_a_bits_opcode; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_client_out_a_bits_param; // @[SerialAdapter.scala 376:40]
+  wire [3:0] serdesser_auto_client_out_a_bits_size; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_a_bits_source; // @[SerialAdapter.scala 376:40]
+  wire [31:0] serdesser_auto_client_out_a_bits_address; // @[SerialAdapter.scala 376:40]
+  wire [7:0] serdesser_auto_client_out_a_bits_mask; // @[SerialAdapter.scala 376:40]
+  wire [63:0] serdesser_auto_client_out_a_bits_data; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_a_bits_corrupt; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_d_ready; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_d_valid; // @[SerialAdapter.scala 376:40]
+  wire [2:0] serdesser_auto_client_out_d_bits_opcode; // @[SerialAdapter.scala 376:40]
+  wire [1:0] serdesser_auto_client_out_d_bits_param; // @[SerialAdapter.scala 376:40]
+  wire [3:0] serdesser_auto_client_out_d_bits_size; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_d_bits_source; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_d_bits_sink; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_d_bits_denied; // @[SerialAdapter.scala 376:40]
+  wire [63:0] serdesser_auto_client_out_d_bits_data; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_auto_client_out_d_bits_corrupt; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_io_ser_in_ready; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_io_ser_in_valid; // @[SerialAdapter.scala 376:40]
+  wire [31:0] serdesser_io_ser_in_bits; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_io_ser_out_ready; // @[SerialAdapter.scala 376:40]
+  wire  serdesser_io_ser_out_valid; // @[SerialAdapter.scala 376:40]
+  wire [31:0] serdesser_io_ser_out_bits; // @[SerialAdapter.scala 376:40]
+  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 [2: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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2: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 [63: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 [2: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [2:0] buffer_auto_out_d_bits_size; // @[Buffer.scala 68:28]
+  wire [2: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 [63:0] buffer_auto_out_d_bits_data; // @[Buffer.scala 68:28]
+  wire  buffer_auto_out_d_bits_corrupt; // @[Buffer.scala 68:28]
+  TLSerdesser serdesser ( // @[SerialAdapter.scala 376:40]
+    .clock(serdesser_clock),
+    .reset(serdesser_reset),
+    .auto_manager_in_a_ready(serdesser_auto_manager_in_a_ready),
+    .auto_manager_in_a_valid(serdesser_auto_manager_in_a_valid),
+    .auto_manager_in_a_bits_opcode(serdesser_auto_manager_in_a_bits_opcode),
+    .auto_manager_in_a_bits_param(serdesser_auto_manager_in_a_bits_param),
+    .auto_manager_in_a_bits_size(serdesser_auto_manager_in_a_bits_size),
+    .auto_manager_in_a_bits_source(serdesser_auto_manager_in_a_bits_source),
+    .auto_manager_in_a_bits_address(serdesser_auto_manager_in_a_bits_address),
+    .auto_manager_in_a_bits_mask(serdesser_auto_manager_in_a_bits_mask),
+    .auto_manager_in_a_bits_data(serdesser_auto_manager_in_a_bits_data),
+    .auto_manager_in_a_bits_corrupt(serdesser_auto_manager_in_a_bits_corrupt),
+    .auto_manager_in_d_ready(serdesser_auto_manager_in_d_ready),
+    .auto_manager_in_d_valid(serdesser_auto_manager_in_d_valid),
+    .auto_manager_in_d_bits_opcode(serdesser_auto_manager_in_d_bits_opcode),
+    .auto_manager_in_d_bits_param(serdesser_auto_manager_in_d_bits_param),
+    .auto_manager_in_d_bits_size(serdesser_auto_manager_in_d_bits_size),
+    .auto_manager_in_d_bits_source(serdesser_auto_manager_in_d_bits_source),
+    .auto_manager_in_d_bits_sink(serdesser_auto_manager_in_d_bits_sink),
+    .auto_manager_in_d_bits_denied(serdesser_auto_manager_in_d_bits_denied),
+    .auto_manager_in_d_bits_data(serdesser_auto_manager_in_d_bits_data),
+    .auto_manager_in_d_bits_corrupt(serdesser_auto_manager_in_d_bits_corrupt),
+    .auto_client_out_a_ready(serdesser_auto_client_out_a_ready),
+    .auto_client_out_a_valid(serdesser_auto_client_out_a_valid),
+    .auto_client_out_a_bits_opcode(serdesser_auto_client_out_a_bits_opcode),
+    .auto_client_out_a_bits_param(serdesser_auto_client_out_a_bits_param),
+    .auto_client_out_a_bits_size(serdesser_auto_client_out_a_bits_size),
+    .auto_client_out_a_bits_source(serdesser_auto_client_out_a_bits_source),
+    .auto_client_out_a_bits_address(serdesser_auto_client_out_a_bits_address),
+    .auto_client_out_a_bits_mask(serdesser_auto_client_out_a_bits_mask),
+    .auto_client_out_a_bits_data(serdesser_auto_client_out_a_bits_data),
+    .auto_client_out_a_bits_corrupt(serdesser_auto_client_out_a_bits_corrupt),
+    .auto_client_out_d_ready(serdesser_auto_client_out_d_ready),
+    .auto_client_out_d_valid(serdesser_auto_client_out_d_valid),
+    .auto_client_out_d_bits_opcode(serdesser_auto_client_out_d_bits_opcode),
+    .auto_client_out_d_bits_param(serdesser_auto_client_out_d_bits_param),
+    .auto_client_out_d_bits_size(serdesser_auto_client_out_d_bits_size),
+    .auto_client_out_d_bits_source(serdesser_auto_client_out_d_bits_source),
+    .auto_client_out_d_bits_sink(serdesser_auto_client_out_d_bits_sink),
+    .auto_client_out_d_bits_denied(serdesser_auto_client_out_d_bits_denied),
+    .auto_client_out_d_bits_data(serdesser_auto_client_out_d_bits_data),
+    .auto_client_out_d_bits_corrupt(serdesser_auto_client_out_d_bits_corrupt),
+    .io_ser_in_ready(serdesser_io_ser_in_ready),
+    .io_ser_in_valid(serdesser_io_ser_in_valid),
+    .io_ser_in_bits(serdesser_io_ser_in_bits),
+    .io_ser_out_ready(serdesser_io_ser_out_ready),
+    .io_ser_out_valid(serdesser_io_ser_out_valid),
+    .io_ser_out_bits(serdesser_io_ser_out_bits)
+  );
+  TLBuffer_19 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)
+  );
+  assign auto_serdesser_client_out_a_valid = serdesser_auto_client_out_a_valid; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_opcode = serdesser_auto_client_out_a_bits_opcode; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_param = serdesser_auto_client_out_a_bits_param; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_size = serdesser_auto_client_out_a_bits_size; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_source = serdesser_auto_client_out_a_bits_source; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_address = serdesser_auto_client_out_a_bits_address; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_mask = serdesser_auto_client_out_a_bits_mask; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_data = serdesser_auto_client_out_a_bits_data; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_a_bits_corrupt = serdesser_auto_client_out_a_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign auto_serdesser_client_out_d_ready = serdesser_auto_client_out_d_ready; // @[LazyModule.scala 311:12]
+  assign auto_tlserial_manager_crossing_in_a_ready = buffer_auto_in_a_ready; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_valid = buffer_auto_in_d_valid; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_opcode = buffer_auto_in_d_bits_opcode; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_param = buffer_auto_in_d_bits_param; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_size = buffer_auto_in_d_bits_size; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_source = buffer_auto_in_d_bits_source; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_sink = buffer_auto_in_d_bits_sink; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_denied = buffer_auto_in_d_bits_denied; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_data = buffer_auto_in_d_bits_data; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign auto_tlserial_manager_crossing_in_d_bits_corrupt = buffer_auto_in_d_bits_corrupt; // @[Nodes.scala 1207:84 LazyModule.scala 298:16]
+  assign serial_tl_in_ready = serdesser_io_ser_in_ready; // @[SerialAdapter.scala 397:34]
+  assign serial_tl_out_valid = serdesser_io_ser_out_valid; // @[SerialAdapter.scala 396:20]
+  assign serial_tl_out_bits = serdesser_io_ser_out_bits; // @[SerialAdapter.scala 396:20]
+  assign clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign serdesser_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign serdesser_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign serdesser_auto_manager_in_a_valid = buffer_auto_out_a_valid; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_opcode = buffer_auto_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_param = buffer_auto_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_size = buffer_auto_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_source = buffer_auto_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_address = buffer_auto_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_mask = buffer_auto_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_data = buffer_auto_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_a_bits_corrupt = buffer_auto_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_manager_in_d_ready = buffer_auto_out_d_ready; // @[LazyModule.scala 296:16]
+  assign serdesser_auto_client_out_a_ready = auto_serdesser_client_out_a_ready; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_valid = auto_serdesser_client_out_d_valid; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_opcode = auto_serdesser_client_out_d_bits_opcode; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_param = auto_serdesser_client_out_d_bits_param; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_size = auto_serdesser_client_out_d_bits_size; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_source = auto_serdesser_client_out_d_bits_source; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_sink = auto_serdesser_client_out_d_bits_sink; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_denied = auto_serdesser_client_out_d_bits_denied; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_data = auto_serdesser_client_out_d_bits_data; // @[LazyModule.scala 311:12]
+  assign serdesser_auto_client_out_d_bits_corrupt = auto_serdesser_client_out_d_bits_corrupt; // @[LazyModule.scala 311:12]
+  assign serdesser_io_ser_in_valid = serial_tl_in_valid; // @[SerialAdapter.scala 397:34]
+  assign serdesser_io_ser_in_bits = serial_tl_in_bits; // @[SerialAdapter.scala 397:34]
+  assign serdesser_io_ser_out_ready = serial_tl_out_ready; // @[SerialAdapter.scala 396:20]
+  assign buffer_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_valid = auto_tlserial_manager_crossing_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_opcode = auto_tlserial_manager_crossing_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_param = auto_tlserial_manager_crossing_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_size = auto_tlserial_manager_crossing_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_source = auto_tlserial_manager_crossing_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_address = auto_tlserial_manager_crossing_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_mask = auto_tlserial_manager_crossing_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_data = auto_tlserial_manager_crossing_in_a_bits_data; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_a_bits_corrupt = auto_tlserial_manager_crossing_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_in_d_ready = auto_tlserial_manager_crossing_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign buffer_auto_out_a_ready = serdesser_auto_manager_in_a_ready; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_valid = serdesser_auto_manager_in_d_valid; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_opcode = serdesser_auto_manager_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_param = serdesser_auto_manager_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_size = serdesser_auto_manager_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_source = serdesser_auto_manager_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_sink = serdesser_auto_manager_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_denied = serdesser_auto_manager_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_data = serdesser_auto_manager_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign buffer_auto_out_d_bits_corrupt = serdesser_auto_manager_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+endmodule
+module TLBuffer_20(
+  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  [7:0]  auto_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0]  auto_out_a_bits_mask,
+  output [63: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  [63: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_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  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{26'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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'h10010000; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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 [8: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:255]; // @[Decoupled.scala 259:95]
+  wire  ram_io_deq_bits_MPORT_en; // @[Decoupled.scala 259:95]
+  wire [7: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 [7: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 [7:0] enq_ptr_value; // @[Counter.scala 62:40]
+  reg [7: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 [7:0] _value_T_1 = enq_ptr_value + 8'h1; // @[Counter.scala 78:24]
+  wire [7:0] _value_T_3 = deq_ptr_value + 8'h1; // @[Counter.scala 78:24]
+  wire [7:0] ptr_diff = enq_ptr_value - deq_ptr_value; // @[Decoupled.scala 312:32]
+  wire [8:0] _io_count_T_1 = maybe_full & ptr_match ? 9'h100 : 9'h0; // @[Decoupled.scala 315:20]
+  wire [8: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 <= 8'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 <= 8'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 < 256; 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[7:0];
+  _RAND_2 = {1{`RANDOM}};
+  deq_ptr_value = _RAND_2[7: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  [7:0]  auto_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7: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 [8: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 [8: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 [8:0] txwm; // @[UART.scala 99:17]
+  reg [8: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 [8:0] in_bits_index = bundleIn_0_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [8:0] out_findex = in_bits_index & 9'h1fc; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7: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_9 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = bundleIn_0_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = bundleIn_0_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = bundleIn_0_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = bundleIn_0_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[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 [1:0] out_oindex = {in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [3:0] _out_frontSel_T = 4'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [63: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[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_0 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  out_wimask_2 = &out_frontMask[32]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_1 = {{30'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire [33:0] out_prepend_2 = {ip_rxwm,ip_txwm,_out_prepend_T_1}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_4 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_4 = out_wivalid_4 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_4 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_3 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_6 = &out_frontMask[24:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_4 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_4 = {{14'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_4 = {txwm,_out_prepend_T_4}; // @[Cat.scala 31:58]
+  wire  out_f_wivalid_7 = out_wivalid_4 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_5 = {{7'd0}, out_prepend_4}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend_5 = {rxen,_out_prepend_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[56:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_4 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire [47:0] _out_prepend_T_6 = {{15'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [56:0] out_prepend_6 = {rxwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_wimask_9 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_10 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_0 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_10 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_10 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_12 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_12 = out_wivalid_10 & out_womask_12; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_12 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire  out_rimask_13 = |out_frontMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire [40:0] out_prepend_10 = {1'h0,rxq_io_deq_bits,_T,31'h0}; // @[Cat.scala 31:58]
+  wire [62:0] _out_T_157 = {{22'd0}, out_prepend_10}; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_11 = {_T_1,_out_T_157}; // @[Cat.scala 31:58]
+  wire  _GEN_25 = 2'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_26 = 2'h2 == out_oindex ? _out_T : _GEN_25; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_27 = 2'h3 == out_oindex ? _out_T : _GEN_26; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_1 = {{7'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_29 = 2'h1 == out_oindex ? _out_out_bits_data_WIRE_1_1 : out_prepend_11; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_2 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_30 = 2'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_29; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_3 = {{48'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_31 = 2'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_30; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_20 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_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)
+  );
+  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_27 ? _GEN_31 : 64'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_10 & ~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_10 & out_rimask_13; // @[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_9) 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_4) 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_7) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[32]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 9'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[24:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 9'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[56:48]; // @[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_5) 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_1) 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) 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[8:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[8: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_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  [7:0]  auto_uart_0_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0] uart_0_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [63: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 [63: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_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  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{26'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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'h10011000; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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  [7:0]  auto_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7: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 [8: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 [8: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 [8:0] txwm; // @[UART.scala 99:17]
+  reg [8: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 [8:0] in_bits_index = bundleIn_0_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [8:0] out_findex = in_bits_index & 9'h1fc; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7: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_9 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = bundleIn_0_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = bundleIn_0_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = bundleIn_0_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = bundleIn_0_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[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 [1:0] out_oindex = {in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [3:0] _out_frontSel_T = 4'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [63: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[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_0 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire  out_wimask_2 = &out_frontMask[32]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_1 = {{30'd0}, out_prepend}; // @[RegisterRouter.scala 83:24]
+  wire [33:0] out_prepend_2 = {ip_rxwm,ip_txwm,_out_prepend_T_1}; // @[Cat.scala 31:58]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_4 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_1 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_4 = out_wivalid_4 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_4 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_3 = {nstop,txen}; // @[Cat.scala 31:58]
+  wire  out_wimask_6 = &out_frontMask[24:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_4 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_4 = {{14'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [24:0] out_prepend_4 = {txwm,_out_prepend_T_4}; // @[Cat.scala 31:58]
+  wire  out_f_wivalid_7 = out_wivalid_4 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_5 = {{7'd0}, out_prepend_4}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend_5 = {rxen,_out_prepend_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask_8 = &out_frontMask[56:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_4 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire [47:0] _out_prepend_T_6 = {{15'd0}, out_prepend_5}; // @[RegisterRouter.scala 83:24]
+  wire [56:0] out_prepend_6 = {rxwm,_out_prepend_T_6}; // @[Cat.scala 31:58]
+  wire  out_wimask_9 = &out_frontMask[15:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_10 = bundleIn_0_a_valid & bundleIn_0_d_ready & in_bits_read & out_frontSel_0 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_10 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_10 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_12 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_12 = out_wivalid_10 & out_womask_12; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_12 & bundleIn_0_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire  out_rimask_13 = |out_frontMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire [40:0] out_prepend_10 = {1'h0,rxq_io_deq_bits,_T,31'h0}; // @[Cat.scala 31:58]
+  wire [62:0] _out_T_157 = {{22'd0}, out_prepend_10}; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_11 = {_T_1,_out_T_157}; // @[Cat.scala 31:58]
+  wire  _GEN_25 = 2'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_26 = 2'h2 == out_oindex ? _out_T : _GEN_25; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_27 = 2'h3 == out_oindex ? _out_T : _GEN_26; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_1 = {{7'd0}, out_prepend_6}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_29 = 2'h1 == out_oindex ? _out_out_bits_data_WIRE_1_1 : out_prepend_11; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_2 = {{30'd0}, out_prepend_2}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_30 = 2'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_29; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_3 = {{48'd0}, div}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_31 = 2'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_30; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_20 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_27 ? _GEN_31 : 64'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_10 & ~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_10 & out_rimask_13; // @[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_9) 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_4) 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_7) begin // @[RegField.scala 74:88]
+      rxen <= bundleIn_0_a_bits_data[32]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 99:17]
+      txwm <= 9'h0; // @[UART.scala 99:17]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      txwm <= bundleIn_0_a_bits_data[24:16]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[UART.scala 100:17]
+      rxwm <= 9'h0; // @[UART.scala 100:17]
+    end else if (out_f_wivalid_8) begin // @[RegField.scala 74:88]
+      rxwm <= bundleIn_0_a_bits_data[56:48]; // @[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_5) 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_1) 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) 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[8:0];
+  _RAND_4 = {1{`RANDOM}};
+  rxwm = _RAND_4[8: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_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  [7:0]  auto_uart_1_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0] uart_1_auto_control_xing_in_a_bits_mask; // @[UART.scala 243:51]
+  wire [63: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 [63: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 AsyncResetRegVec_w4_i0(
+  input        clock,
+  input        reset,
+  input  [3:0] io_d,
+  output [3:0] io_q,
+  input        io_en
+);
+`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 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[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_9(
+  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  reg__io_en; // @[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),
+    .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 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_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  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{26'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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_w4_d3(
+  input        clock,
+  input  [3:0] io_d,
+  output [3: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_1 = output_chain_1_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  output_0 = output_chain_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [1:0] io_q_lo = {output_1,output_0}; // @[Cat.scala 31:58]
+  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 [1:0] io_q_hi = {output_3,output_2}; // @[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)
+  );
+  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]
+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_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  [7:0]  auto_control_xing_in_a_bits_mask,
+  input  [63: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 [63:0] auto_control_xing_in_d_bits_data,
+  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
+);
+`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;
+`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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7: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 [3:0] oeReg_io_d; // @[GPIO.scala 79:22]
+  wire [3: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 [3:0] pueReg_io_d; // @[GPIO.scala 80:22]
+  wire [3: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 [3:0] ieReg_io_d; // @[GPIO.scala 82:22]
+  wire [3: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 [3:0] poeReg_io_d; // @[GPIO.scala 84:22]
+  wire [3: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 [3:0] inSyncReg_inSyncReg_io_d; // @[ShiftReg.scala 45:23]
+  wire [3:0] inSyncReg_inSyncReg_io_q; // @[ShiftReg.scala 45:23]
+  wire  iofEnReg_clock; // @[GPIO.scala 105:25]
+  wire  iofEnReg_reset; // @[GPIO.scala 105:25]
+  wire [3:0] iofEnReg_io_d; // @[GPIO.scala 105:25]
+  wire [3:0] iofEnReg_io_q; // @[GPIO.scala 105:25]
+  wire  iofEnReg_io_en; // @[GPIO.scala 105:25]
+  reg [3:0] portReg; // @[GPIO.scala 77:20]
+  reg [3:0] dsReg_0; // @[GPIO.scala 81:23]
+  wire [1:0] inVal_lo = {auto_io_out_pins_1_i_ival,auto_io_out_pins_0_i_ival}; // @[GPIO.scala 88:41]
+  wire [1:0] inVal_hi = {auto_io_out_pins_3_i_ival,auto_io_out_pins_2_i_ival}; // @[GPIO.scala 88:41]
+  reg [3:0] valueReg; // @[GPIO.scala 90:23]
+  reg [3:0] highIeReg; // @[GPIO.scala 93:22]
+  reg [3:0] lowIeReg; // @[GPIO.scala 94:22]
+  reg [3:0] riseIeReg; // @[GPIO.scala 95:22]
+  reg [3:0] fallIeReg; // @[GPIO.scala 96:22]
+  reg [3:0] highIpReg; // @[GPIO.scala 97:22]
+  reg [3:0] lowIpReg; // @[GPIO.scala 98:22]
+  reg [3:0] riseIpReg; // @[GPIO.scala 99:22]
+  reg [3:0] fallIpReg; // @[GPIO.scala 100:22]
+  reg [3:0] passthruHighIeReg; // @[GPIO.scala 101:30]
+  reg [3:0] passthruLowIeReg; // @[GPIO.scala 102:30]
+  reg [3:0] xorReg; // @[GPIO.scala 109:22]
+  wire [3:0] _rise_T = ~valueReg; // @[GPIO.scala 115:14]
+  wire [3:0] inSyncReg = inSyncReg_inSyncReg_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire [3:0] rise = _rise_T & inSyncReg; // @[GPIO.scala 115:24]
+  wire [3:0] _fall_T = ~inSyncReg; // @[GPIO.scala 116:25]
+  wire [3: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 [8:0] in_bits_index = bundleIn_0_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [8:0] out_findex = in_bits_index & 9'h1f0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7: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_9 = bundleIn_0_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = bundleIn_0_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = bundleIn_0_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = bundleIn_0_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = bundleIn_0_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = bundleIn_0_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = bundleIn_0_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[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 == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [63: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[35:32]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T = {{28'd0}, valueReg}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend = {ieReg_io_q,_out_prepend_T}; // @[Cat.scala 31:58]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_2 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_2 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_3 = out_wivalid_2 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_highIpReg_T = ~highIpReg; // @[RegField.scala 128:61]
+  wire [3:0] _out_highIpReg_T_1 = out_f_wivalid_3 ? bundleIn_0_a_bits_data[35:32] : 4'h0; // @[RegField.scala 128:71]
+  wire [3:0] _out_highIpReg_T_2 = _out_highIpReg_T | _out_highIpReg_T_1; // @[RegField.scala 128:66]
+  wire [3:0] _out_highIpReg_T_3 = ~_out_highIpReg_T_2; // @[RegField.scala 128:59]
+  wire [3:0] _out_highIpReg_T_4 = _out_highIpReg_T_3 | valueReg; // @[RegField.scala 128:95]
+  wire [31:0] _out_prepend_T_1 = {{28'd0}, highIeReg}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_1 = {highIpReg,_out_prepend_T_1}; // @[Cat.scala 31:58]
+  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 == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_T_82 = oeReg_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_5 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_2 = {{28'd0}, _out_T_82}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_2 = {portReg,_out_prepend_T_2}; // @[Cat.scala 31:58]
+  wire  out_frontSel_6 = _out_frontSel_T[6]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_7 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_6 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_7 = out_wivalid_7 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_7 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_lowIpReg_T = ~lowIpReg; // @[RegField.scala 128:61]
+  wire [3:0] _out_lowIpReg_T_1 = out_f_wivalid_8 ? bundleIn_0_a_bits_data[35:32] : 4'h0; // @[RegField.scala 128:71]
+  wire [3:0] _out_lowIpReg_T_2 = _out_lowIpReg_T | _out_lowIpReg_T_1; // @[RegField.scala 128:66]
+  wire [3:0] _out_lowIpReg_T_3 = ~_out_lowIpReg_T_2; // @[RegField.scala 128:59]
+  wire [3:0] _out_lowIpReg_T_4 = _out_lowIpReg_T_3 | _rise_T; // @[RegField.scala 128:95]
+  wire [31:0] _out_prepend_T_3 = {{28'd0}, lowIeReg}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_3 = {lowIpReg,_out_prepend_T_3}; // @[Cat.scala 31:58]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_4 = {{28'd0}, passthruLowIeReg}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend_4 = {1'h0,_out_prepend_T_4}; // @[Cat.scala 31:58]
+  wire [35:0] _out_T_135 = {{3'd0}, out_prepend_4}; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_11 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_T_146 = pueReg_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_12 = out_wivalid_11 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_5 = {{28'd0}, _out_T_146}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_5 = {dsReg_0,_out_prepend_T_5}; // @[Cat.scala 31:58]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_15 = bundleIn_0_a_valid & bundleIn_0_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_15 = out_wivalid_15 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_16 = out_wivalid_15 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_riseIpReg_T = ~riseIpReg; // @[RegField.scala 128:61]
+  wire [3:0] _out_riseIpReg_T_1 = out_f_wivalid_16 ? bundleIn_0_a_bits_data[35:32] : 4'h0; // @[RegField.scala 128:71]
+  wire [3:0] _out_riseIpReg_T_2 = _out_riseIpReg_T | _out_riseIpReg_T_1; // @[RegField.scala 128:66]
+  wire [3:0] _out_riseIpReg_T_3 = ~_out_riseIpReg_T_2; // @[RegField.scala 128:59]
+  wire [3:0] _out_riseIpReg_T_4 = _out_riseIpReg_T_3 | rise; // @[RegField.scala 128:95]
+  wire [31:0] _out_prepend_T_7 = {{28'd0}, riseIeReg}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_7 = {riseIpReg,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  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 == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_17 = out_wivalid_17 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_18 = out_wivalid_17 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_8 = {{28'd0}, xorReg}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_8 = {passthruHighIeReg,_out_prepend_T_8}; // @[Cat.scala 31:58]
+  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 == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_19 = out_wivalid_19 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_19 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [3:0] _out_fallIpReg_T = ~fallIpReg; // @[RegField.scala 128:61]
+  wire [3:0] _out_fallIpReg_T_1 = out_f_wivalid_20 ? bundleIn_0_a_bits_data[35:32] : 4'h0; // @[RegField.scala 128:71]
+  wire [3:0] _out_fallIpReg_T_2 = _out_fallIpReg_T | _out_fallIpReg_T_1; // @[RegField.scala 128:66]
+  wire [3:0] _out_fallIpReg_T_3 = ~_out_fallIpReg_T_2; // @[RegField.scala 128:59]
+  wire [3:0] _out_fallIpReg_T_4 = _out_fallIpReg_T_3 | fall; // @[RegField.scala 128:95]
+  wire [31:0] _out_prepend_T_9 = {{28'd0}, fallIeReg}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_9 = {fallIpReg,_out_prepend_T_9}; // @[Cat.scala 31:58]
+  wire  _GEN_74 = 4'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_75 = 4'h2 == out_oindex ? _out_T : _GEN_74; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_76 = 4'h3 == out_oindex ? _out_T : _GEN_75; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_77 = 4'h4 == out_oindex ? _out_T : _GEN_76; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_78 = 4'h5 == out_oindex ? _out_T : _GEN_77; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_79 = 4'h6 == out_oindex ? _out_T : _GEN_78; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_80 = 4'h7 == out_oindex ? _out_T : _GEN_79; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_81 = 4'h8 == out_oindex ? _out_T : _GEN_80; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_82 = 4'h9 == out_oindex ? _out_T : _GEN_81; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_83 = 4'ha == out_oindex ? _out_T : _GEN_82; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_88 = 4'hf == out_oindex | (4'he == out_oindex | (4'hd == out_oindex | (4'hc == out_oindex | (4'hb ==
+    out_oindex | _GEN_83)))); // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_90 = 4'h1 == out_oindex ? out_prepend_2 : out_prepend; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_91 = 4'h2 == out_oindex ? out_prepend_5 : _GEN_90; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_92 = 4'h3 == out_oindex ? out_prepend_7 : _GEN_91; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_93 = 4'h4 == out_oindex ? out_prepend_9 : _GEN_92; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_94 = 4'h5 == out_oindex ? out_prepend_1 : _GEN_93; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_95 = 4'h6 == out_oindex ? out_prepend_3 : _GEN_94; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_96 = 4'h7 == out_oindex ? 36'h0 : _GEN_95; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_97 = 4'h8 == out_oindex ? out_prepend_8 : _GEN_96; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_98 = 4'h9 == out_oindex ? _out_T_135 : _GEN_97; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_99 = 4'ha == out_oindex ? 36'h0 : _GEN_98; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_100 = 4'hb == out_oindex ? 36'h0 : _GEN_99; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_101 = 4'hc == out_oindex ? 36'h0 : _GEN_100; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_102 = 4'hd == out_oindex ? 36'h0 : _GEN_101; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_103 = 4'he == out_oindex ? 36'h0 : _GEN_102; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _GEN_104 = 4'hf == out_oindex ? 36'h0 : _GEN_103; // @[MuxLiteral.scala 48:{10,10}]
+  wire [35:0] _out_out_bits_data_T_4 = _GEN_88 ? _GEN_104 : 36'h0; // @[RegisterRouter.scala 83:24]
+  wire  swPinCtrl_0_oval = portReg[0]; // @[GPIO.scala 199:37]
+  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  _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  _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  _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]
+  TLBuffer_20 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_9 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_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)
+  );
+  AsyncResetRegVec_w4_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_w4_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_w4_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_w4_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_w4_d3 inSyncReg_inSyncReg ( // @[ShiftReg.scala 45:23]
+    .clock(inSyncReg_inSyncReg_clock),
+    .io_d(inSyncReg_inSyncReg_io_d),
+    .io_q(inSyncReg_inSyncReg_io_q)
+  );
+  AsyncResetRegVec_w4_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_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_pins_0_o_oval = swPinCtrl_0_oval ^ xorReg[0]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_0_o_oe = oeReg_io_q[0]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_0_o_ie = ieReg_io_q[0]; // @[GPIO.scala 202:40]
+  assign auto_io_out_pins_1_o_oval = swPinCtrl_1_oval ^ xorReg[1]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_1_o_oe = oeReg_io_q[1]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_1_o_ie = ieReg_io_q[1]; // @[GPIO.scala 202:40]
+  assign auto_io_out_pins_2_o_oval = swPinCtrl_2_oval ^ xorReg[2]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_2_o_oe = oeReg_io_q[2]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_2_o_ie = ieReg_io_q[2]; // @[GPIO.scala 202:40]
+  assign auto_io_out_pins_3_o_oval = swPinCtrl_3_oval ^ xorReg[3]; // @[GPIO.scala 235:43]
+  assign auto_io_out_pins_3_o_oe = oeReg_io_q[3]; // @[GPIO.scala 200:40]
+  assign auto_io_out_pins_3_o_ie = ieReg_io_q[3]; // @[GPIO.scala 202: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 = {{28'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 = _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 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 = bundleIn_0_a_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign oeReg_io_en = out_wivalid_5 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign pueReg_clock = clock;
+  assign pueReg_reset = reset;
+  assign pueReg_io_d = bundleIn_0_a_bits_data[3:0]; // @[RegisterRouter.scala 83:24]
+  assign pueReg_io_en = out_wivalid_11 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign ieReg_clock = clock;
+  assign ieReg_reset = reset;
+  assign ieReg_io_d = bundleIn_0_a_bits_data[35:32]; // @[RegisterRouter.scala 83:24]
+  assign ieReg_io_en = out_wivalid_0 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  assign poeReg_clock = clock;
+  assign poeReg_reset = reset;
+  assign poeReg_io_d = 4'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 = 4'h0;
+  assign iofEnReg_io_en = 1'h0;
+  always @(posedge clock) begin
+    if (reset) begin // @[GPIO.scala 77:20]
+      portReg <= 4'h0; // @[GPIO.scala 77:20]
+    end else if (out_f_wivalid_6) begin // @[RegField.scala 74:88]
+      portReg <= bundleIn_0_a_bits_data[35:32]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 81:23]
+      dsReg_0 <= 4'h0; // @[GPIO.scala 81:23]
+    end else if (out_f_wivalid_12) begin // @[RegField.scala 74:88]
+      dsReg_0 <= bundleIn_0_a_bits_data[35:32]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 90:23]
+      valueReg <= 4'h0; // @[GPIO.scala 90:23]
+    end else begin
+      valueReg <= inSyncReg; // @[GPIO.scala 90:23]
+    end
+    if (reset) begin // @[GPIO.scala 93:22]
+      highIeReg <= 4'h0; // @[GPIO.scala 93:22]
+    end else if (out_f_wivalid_2) begin // @[RegField.scala 74:88]
+      highIeReg <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 94:22]
+      lowIeReg <= 4'h0; // @[GPIO.scala 94:22]
+    end else if (out_f_wivalid_7) begin // @[RegField.scala 74:88]
+      lowIeReg <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 95:22]
+      riseIeReg <= 4'h0; // @[GPIO.scala 95:22]
+    end else if (out_f_wivalid_15) begin // @[RegField.scala 74:88]
+      riseIeReg <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 96:22]
+      fallIeReg <= 4'h0; // @[GPIO.scala 96:22]
+    end else if (out_f_wivalid_19) begin // @[RegField.scala 74:88]
+      fallIeReg <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 97:22]
+      highIpReg <= 4'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 <= 4'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 <= 4'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 <= 4'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 <= 4'h0; // @[GPIO.scala 101:30]
+    end else if (out_f_wivalid_18) begin // @[RegField.scala 74:88]
+      passthruHighIeReg <= bundleIn_0_a_bits_data[35:32]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 102:30]
+      passthruLowIeReg <= 4'h0; // @[GPIO.scala 102:30]
+    end else if (out_f_wivalid_9) begin // @[RegField.scala 74:88]
+      passthruLowIeReg <= bundleIn_0_a_bits_data[3:0]; // @[RegField.scala 74:92]
+    end
+    if (reset) begin // @[GPIO.scala 109:22]
+      xorReg <= 4'h0; // @[GPIO.scala 109:22]
+    end else if (out_f_wivalid_17) begin // @[RegField.scala 74:88]
+      xorReg <= bundleIn_0_a_bits_data[3: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}};
+  portReg = _RAND_0[3:0];
+  _RAND_1 = {1{`RANDOM}};
+  dsReg_0 = _RAND_1[3:0];
+  _RAND_2 = {1{`RANDOM}};
+  valueReg = _RAND_2[3:0];
+  _RAND_3 = {1{`RANDOM}};
+  highIeReg = _RAND_3[3:0];
+  _RAND_4 = {1{`RANDOM}};
+  lowIeReg = _RAND_4[3:0];
+  _RAND_5 = {1{`RANDOM}};
+  riseIeReg = _RAND_5[3:0];
+  _RAND_6 = {1{`RANDOM}};
+  fallIeReg = _RAND_6[3:0];
+  _RAND_7 = {1{`RANDOM}};
+  highIpReg = _RAND_7[3:0];
+  _RAND_8 = {1{`RANDOM}};
+  lowIpReg = _RAND_8[3:0];
+  _RAND_9 = {1{`RANDOM}};
+  riseIpReg = _RAND_9[3:0];
+  _RAND_10 = {1{`RANDOM}};
+  fallIpReg = _RAND_10[3:0];
+  _RAND_11 = {1{`RANDOM}};
+  passthruHighIeReg = _RAND_11[3:0];
+  _RAND_12 = {1{`RANDOM}};
+  passthruLowIeReg = _RAND_12[3:0];
+  _RAND_13 = {1{`RANDOM}};
+  xorReg = _RAND_13[3: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_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_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  [7:0]  auto_gpio_0_control_xing_in_a_bits_mask,
+  input  [63: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 [63:0] auto_gpio_0_control_xing_in_d_bits_data,
+  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_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_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 [7:0] gpio_0_auto_control_xing_in_a_bits_mask; // @[GPIO.scala 282:51]
+  wire [63: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 [63:0] gpio_0_auto_control_xing_in_d_bits_data; // @[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]
+  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_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_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)
+  );
+  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_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_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 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_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]
+endmodule
+module IntSyncSyncCrossingSink_8(
+  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 TLBuffer_24(
+  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  [9: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 [9: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 [9: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  [9: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_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         io_in_a_bits_size,
+  input  [9: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  [9: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 [639:0] _RAND_9;
+  reg [2559:0] _RAND_10;
+  reg [1279: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 <= 10'h27f; // @[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'sh10000000; // @[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 <= 10'h27f; // @[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 [9: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 [9: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 [639:0] inflight; // @[Monitor.scala 611:27]
+  reg [2559:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [1279: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 [11:0] _GEN_71 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [12:0] _a_opcode_lookup_T = {{1'd0}, _GEN_71}; // @[Monitor.scala 634:69]
+  wire [2559: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 [2559:0] _GEN_72 = {{2544'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [2559:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_72; // @[Monitor.scala 634:97]
+  wire [2559:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[2559:1]}; // @[Monitor.scala 634:152]
+  wire [10:0] _a_size_lookup_T = {io_in_d_bits_source, 1'h0}; // @[Monitor.scala 638:65]
+  wire [1279: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 [1279:0] _GEN_74 = {{1276'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [1279:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_74; // @[Monitor.scala 638:91]
+  wire [1279:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[1279:1]}; // @[Monitor.scala 638:144]
+  wire  _T_586 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [1023:0] _a_set_wo_ready_T = 1024'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 [11:0] _GEN_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [12: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 [8194:0] _GEN_1 = {{8191'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [8194:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [10: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 [2048:0] _GEN_2 = {{2047'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [2048:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [639:0] _T_591 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_593 = ~_T_591[0]; // @[Monitor.scala 658:17]
+  wire [1023:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 1024'h0; // @[Monitor.scala 652:72 653:28]
+  wire [8194:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 8195'h0; // @[Monitor.scala 652:72 656:28]
+  wire [2048:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 2049'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_597 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [1023:0] _d_clr_wo_ready_T = 1024'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [8206:0] _GEN_3 = {{8191'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [8206:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [2050:0] _GEN_4 = {{2047'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [2050:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [1023:0] _GEN_22 = d_first_done & d_first_1 ? _d_clr_wo_ready_T : 1024'h0; // @[Monitor.scala 675:91 676:21]
+  wire [8206:0] _GEN_23 = d_first_done & d_first_1 ? _d_opcodes_clr_T_5 : 8207'h0; // @[Monitor.scala 675:91 677:21]
+  wire [2050:0] _GEN_24 = d_first_done & d_first_1 ? _d_sizes_clr_T_5 : 2051'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 [639: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 [639:0] a_set = _GEN_16[639:0];
+  wire [639:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [639:0] d_clr = _GEN_22[639:0];
+  wire [639:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [639:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [2559:0] a_opcodes_set = _GEN_19[2559:0];
+  wire [2559:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [2559:0] d_opcodes_clr = _GEN_23[2559:0];
+  wire [2559:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [2559:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [1279:0] a_sizes_set = _GEN_20[1279:0];
+  wire [1279:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [1279:0] d_sizes_clr = _GEN_24[1279:0];
+  wire [1279:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [1279: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 <= 640'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 <= 2560'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 <= 1280'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[9: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[9:0];
+  _RAND_9 = {20{`RANDOM}};
+  inflight = _RAND_9[639:0];
+  _RAND_10 = {80{`RANDOM}};
+  inflight_opcodes = _RAND_10[2559:0];
+  _RAND_11 = {40{`RANDOM}};
+  inflight_sizes = _RAND_11[1279: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_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  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{26'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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 QueueCompatibility_4(
+  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 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_4 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_4 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  [9: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 [9: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  [7:0]  auto_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [9: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 [9: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 [9: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 [9: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 [9: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 [9: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 [7: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 [9: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 [9: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 [8:0] in_bits_index = bundleIn_0_1_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [8:0] out_findex = in_bits_index & 9'h1f0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7: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_9 = bundleIn_0_1_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_1_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = bundleIn_0_1_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = bundleIn_0_1_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = bundleIn_0_1_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = bundleIn_0_1_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = bundleIn_0_1_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = bundleIn_0_1_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[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 [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_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [63: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[32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_0 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T = {{20'd0}, ctrl_sck_div}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[33]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_0 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire [33:0] out_prepend_1 = {ctrl_sck_pol,ctrl_sck_pha,_out_prepend_T}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_3 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 9'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_2 = {{8'd0}, ctrl_dla_cssck}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_2 = {ctrl_dla_sckcs,_out_prepend_T_2}; // @[Cat.scala 31:58]
+  wire  out_rimask_5 = |out_frontMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_5 = &out_frontMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_3 & out_wimask_5; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_3 = {{8'd0}, out_prepend_2}; // @[RegisterRouter.scala 83:24]
+  wire [39:0] out_prepend_3 = {ctrl_dla_intercs,_out_prepend_T_3}; // @[Cat.scala 31:58]
+  wire  out_wimask_6 = &out_frontMask[55:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_3 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire [47:0] _out_prepend_T_4 = {{8'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [55:0] out_prepend_4 = {ctrl_dla_interxfr,_out_prepend_T_4}; // @[Cat.scala 31:58]
+  wire  out_wimask_7 = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_7 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_7 = out_wivalid_7 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_8 = &out_frontMask[35:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_7 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_5 = {{28'd0}, ctrl_wm_tx}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_5 = {ctrl_wm_rx,_out_prepend_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask_9 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_14 = _out_frontSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_14 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_6 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire [31:0] _out_prepend_T_7 = {{30'd0}, out_prepend_6}; // @[RegisterRouter.scala 83:24]
+  wire [33:0] out_prepend_8 = {fifo_io_ip_rxwm,fifo_io_ip_txwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_13 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & in_bits_read & out_frontSel_9 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_13 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_13 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_15 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_15 = out_wivalid_13 & out_womask_15; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_15 & bundleIn_0_1_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [40:0] out_prepend_12 = {1'h0,fifo_io_rx_bits,_T,31'h0}; // @[Cat.scala 31:58]
+  wire [62:0] _out_T_202 = {{22'd0}, out_prepend_12}; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_13 = {_T_1,_out_T_202}; // @[Cat.scala 31:58]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_19 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_19 = out_wivalid_19 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_19 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_20 = out_f_wivalid_20 ? bundleIn_0_1_a_bits_data[32] : ctrl_cs_dflt_0; // @[RegField.scala 74:{88,92} TLSPI.scala 68:17]
+  wire [31:0] _out_prepend_T_14 = {{31'd0}, ctrl_cs_id}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend_14 = {ctrl_cs_dflt_0,_out_prepend_T_14}; // @[Cat.scala 31:58]
+  wire  out_frontSel_12 = _out_frontSel_T[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_21 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_12 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_21 = out_wivalid_21 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_21 = out_f_wivalid_21 ? bundleIn_0_1_a_bits_data[0] : flash_en; // @[RegField.scala 74:{88,92} TLSPIFlash.scala 83:21]
+  wire  out_f_wivalid_22 = out_wivalid_21 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_22 = out_f_wivalid_22 ? bundleIn_0_1_a_bits_data[32] : insn_cmd_en; // @[RegField.scala 74:{88,92} TLSPIFlash.scala 82:17]
+  wire [31:0] _out_prepend_T_15 = {{31'd0}, flash_en}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_23 = &out_frontMask[35:33]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_23 = out_wivalid_21 & out_wimask_23; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_24 = &out_frontMask[39:36]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_24 = out_wivalid_21 & out_wimask_24; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_25 = &out_frontMask[41:40]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_25 = out_wivalid_21 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_26 = &out_frontMask[43:42]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_26 = out_wivalid_21 & out_wimask_26; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_27 = &out_frontMask[45:44]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_27 = out_wivalid_21 & out_wimask_27; // @[RegisterRouter.scala 83:24]
+  wire [45:0] out_prepend_20 = {insn_data_proto,insn_addr_proto,insn_cmd_proto,insn_pad_cnt,insn_addr_len,insn_cmd_en,
+    _out_prepend_T_15}; // @[Cat.scala 31:58]
+  wire  out_f_wivalid_28 = out_wivalid_21 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire [47:0] _out_prepend_T_21 = {{2'd0}, out_prepend_20}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_29 = &out_frontMask[63:56]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_29 = out_wivalid_21 & out_wimask_29; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_22 = {insn_pad_code,insn_cmd_code,_out_prepend_T_21}; // @[Cat.scala 31:58]
+  wire  out_frontSel_7 = _out_frontSel_T[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_30 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_7 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_30 = out_wivalid_30 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_31 = &out_frontMask[36:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_31 = out_wivalid_30 & out_wimask_31; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_23 = {{20'd0}, ctrl_extradel_coarse}; // @[RegisterRouter.scala 83:24]
+  wire [36:0] out_prepend_23 = {ctrl_sampledel_sd,_out_prepend_T_23}; // @[Cat.scala 31:58]
+  wire  out_wimask_32 = &out_frontMask[1:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_32 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_32 = out_wivalid_32 & out_wimask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_8 = _out_frontSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_33 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_8 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_33 = out_wivalid_33 & out_wimask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_34 = &out_frontMask[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_34 = out_wivalid_33 & out_wimask_34; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_35 = &out_frontMask[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_35 = out_wivalid_33 & out_wimask_35; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_25 = {ctrl_fmt_iodir,ctrl_fmt_endian,ctrl_fmt_proto}; // @[Cat.scala 31:58]
+  wire  out_wimask_36 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_36 = out_wivalid_33 & out_wimask_36; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_26 = {{12'd0}, out_prepend_25}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_26 = {ctrl_fmt_len,_out_prepend_T_26}; // @[Cat.scala 31:58]
+  wire  _GEN_103 = 4'h2 == out_oindex ? _out_T : 4'h1 == out_oindex | _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_104 = 4'h3 == out_oindex ? _out_T : _GEN_103; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_106 = 4'h5 == out_oindex ? _out_T : 4'h4 == out_oindex | _GEN_104; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_108 = 4'h7 == out_oindex ? _out_T : 4'h6 == out_oindex | _GEN_106; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_109 = 4'h8 == out_oindex ? _out_T : _GEN_108; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_110 = 4'h9 == out_oindex ? _out_T : _GEN_109; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_111 = 4'ha == out_oindex ? _out_T : _GEN_110; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_113 = 4'hc == out_oindex ? _out_T : 4'hb == out_oindex | _GEN_111; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_115 = 4'he == out_oindex ? _out_T : 4'hd == out_oindex | _GEN_113; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_116 = 4'hf == out_oindex | _GEN_115; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_0 = {{30'd0}, out_prepend_1}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_118 = 4'h1 == out_oindex ? 64'h0 : _out_out_bits_data_WIRE_1_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_2 = {{31'd0}, out_prepend_14}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_119 = 4'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_118; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_3 = {{62'd0}, ctrl_cs_mode}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_120 = 4'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_119; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_121 = 4'h4 == out_oindex ? 64'h0 : _GEN_120; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_5 = {{8'd0}, out_prepend_4}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_122 = 4'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_121; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_123 = 4'h6 == out_oindex ? 64'h0 : _GEN_122; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_7 = {{27'd0}, out_prepend_23}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_124 = 4'h7 == out_oindex ? _out_out_bits_data_WIRE_1_7 : _GEN_123; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_8 = {{44'd0}, out_prepend_26}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_125 = 4'h8 == out_oindex ? _out_out_bits_data_WIRE_1_8 : _GEN_124; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_126 = 4'h9 == out_oindex ? out_prepend_13 : _GEN_125; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_10 = {{28'd0}, out_prepend_5}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_127 = 4'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_126; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_128 = 4'hb == out_oindex ? 64'h0 : _GEN_127; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_129 = 4'hc == out_oindex ? out_prepend_22 : _GEN_128; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_130 = 4'hd == out_oindex ? 64'h0 : _GEN_129; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_14 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_131 = 4'he == out_oindex ? _out_out_bits_data_WIRE_1_14 : _GEN_130; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_132 = 4'hf == out_oindex ? 64'h0 : _GEN_131; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_20 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_24 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_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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  TLMonitor_59 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_116 ? _GEN_132 : 64'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_13 & ~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_13 & out_rimask_5; // @[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 = {{4'd0}, bundleIn_0_a_bits_address[27:0]}; // @[TLSPIFlash.scala 73:27]
+  assign flash_io_addr_bits_hold = {{4'd0}, a_address[27: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_33) 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_34) 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_35) 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_36) 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_2) begin // @[RegField.scala 74:88]
+      ctrl_sck_pol <= bundleIn_0_1_a_bits_data[33]; // @[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_1) begin // @[RegField.scala 74:88]
+      ctrl_sck_pha <= bundleIn_0_1_a_bits_data[32]; // @[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_19) 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_20; // @[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_32) 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_3) 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_4) 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_5) begin // @[RegField.scala 74:88]
+      ctrl_dla_intercs <= bundleIn_0_1_a_bits_data[39:32]; // @[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_6) begin // @[RegField.scala 74:88]
+      ctrl_dla_interxfr <= bundleIn_0_1_a_bits_data[55:48]; // @[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_7) 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_8) begin // @[RegField.scala 74:88]
+      ctrl_wm_rx <= bundleIn_0_1_a_bits_data[35:32]; // @[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_30) 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_31) begin // @[RegField.scala 74:88]
+      ctrl_sampledel_sd <= bundleIn_0_1_a_bits_data[36:32]; // @[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_9) 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_10) 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_25) begin // @[RegField.scala 74:88]
+      insn_cmd_proto <= bundleIn_0_1_a_bits_data[41:40]; // @[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_28) begin // @[RegField.scala 74:88]
+      insn_cmd_code <= bundleIn_0_1_a_bits_data[55:48]; // @[RegField.scala 74:92]
+    end
+    insn_cmd_en <= reset | _GEN_22; // @[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_26) begin // @[RegField.scala 74:88]
+      insn_addr_proto <= bundleIn_0_1_a_bits_data[43:42]; // @[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_23) begin // @[RegField.scala 74:88]
+      insn_addr_len <= bundleIn_0_1_a_bits_data[35:33]; // @[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_29) begin // @[RegField.scala 74:88]
+      insn_pad_code <= bundleIn_0_1_a_bits_data[63:56]; // @[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_24) begin // @[RegField.scala 74:88]
+      insn_pad_cnt <= bundleIn_0_1_a_bits_data[39:36]; // @[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_27) begin // @[RegField.scala 74:88]
+      insn_data_proto <= bundleIn_0_1_a_bits_data[45:44]; // @[RegField.scala 74:92]
+    end
+    flash_en <= reset | _GEN_21; // @[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[9: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  [9: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 [9: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  [7:0]  auto_qspi_0_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [9: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 [9: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 [7:0] qspi_0_auto_control_xing_in_a_bits_mask; // @[SPI.scala 93:51]
+  wire [63: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 [63: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 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         io_in_a_bits_size,
+  input  [9: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  [9: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 [639:0] _RAND_9;
+  reg [2559:0] _RAND_10;
+  reg [1279: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 <= 10'h27f; // @[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'h30000000; // @[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'sh10000000; // @[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 <= 10'h27f; // @[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 [9: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 [9: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 [639:0] inflight; // @[Monitor.scala 611:27]
+  reg [2559:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [1279: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 [11:0] _GEN_71 = {io_in_d_bits_source, 2'h0}; // @[Monitor.scala 634:69]
+  wire [12:0] _a_opcode_lookup_T = {{1'd0}, _GEN_71}; // @[Monitor.scala 634:69]
+  wire [2559: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 [2559:0] _GEN_72 = {{2544'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [2559:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_72; // @[Monitor.scala 634:97]
+  wire [2559:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[2559:1]}; // @[Monitor.scala 634:152]
+  wire [10:0] _a_size_lookup_T = {io_in_d_bits_source, 1'h0}; // @[Monitor.scala 638:65]
+  wire [1279: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 [1279:0] _GEN_74 = {{1276'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 638:91]
+  wire [1279:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_74; // @[Monitor.scala 638:91]
+  wire [1279:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[1279:1]}; // @[Monitor.scala 638:144]
+  wire  _T_586 = io_in_a_valid & a_first_1; // @[Monitor.scala 648:26]
+  wire [1023:0] _a_set_wo_ready_T = 1024'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 [11:0] _GEN_76 = {io_in_a_bits_source, 2'h0}; // @[Monitor.scala 656:79]
+  wire [12: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 [8194:0] _GEN_1 = {{8191'd0}, a_opcodes_set_interm}; // @[Monitor.scala 656:54]
+  wire [8194:0] _a_opcodes_set_T_1 = _GEN_1 << _a_opcodes_set_T; // @[Monitor.scala 656:54]
+  wire [10: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 [2048:0] _GEN_2 = {{2047'd0}, a_sizes_set_interm}; // @[Monitor.scala 657:52]
+  wire [2048:0] _a_sizes_set_T_1 = _GEN_2 << _a_sizes_set_T; // @[Monitor.scala 657:52]
+  wire [639:0] _T_591 = inflight >> io_in_a_bits_source; // @[Monitor.scala 658:26]
+  wire  _T_593 = ~_T_591[0]; // @[Monitor.scala 658:17]
+  wire [1023:0] _GEN_16 = a_first_done & a_first_1 ? _a_set_wo_ready_T : 1024'h0; // @[Monitor.scala 652:72 653:28]
+  wire [8194:0] _GEN_19 = a_first_done & a_first_1 ? _a_opcodes_set_T_1 : 8195'h0; // @[Monitor.scala 652:72 656:28]
+  wire [2048:0] _GEN_20 = a_first_done & a_first_1 ? _a_sizes_set_T_1 : 2049'h0; // @[Monitor.scala 652:72 657:28]
+  wire  _T_597 = io_in_d_valid & d_first_1; // @[Monitor.scala 671:26]
+  wire [1023:0] _d_clr_wo_ready_T = 1024'h1 << io_in_d_bits_source; // @[OneHot.scala 57:35]
+  wire [8206:0] _GEN_3 = {{8191'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 677:76]
+  wire [8206:0] _d_opcodes_clr_T_5 = _GEN_3 << _a_opcode_lookup_T; // @[Monitor.scala 677:76]
+  wire [2050:0] _GEN_4 = {{2047'd0}, _a_size_lookup_T_5}; // @[Monitor.scala 678:74]
+  wire [2050:0] _d_sizes_clr_T_5 = _GEN_4 << _a_size_lookup_T; // @[Monitor.scala 678:74]
+  wire [1023:0] _GEN_22 = d_first_done & d_first_1 ? _d_clr_wo_ready_T : 1024'h0; // @[Monitor.scala 675:91 676:21]
+  wire [8206:0] _GEN_23 = d_first_done & d_first_1 ? _d_opcodes_clr_T_5 : 8207'h0; // @[Monitor.scala 675:91 677:21]
+  wire [2050:0] _GEN_24 = d_first_done & d_first_1 ? _d_sizes_clr_T_5 : 2051'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 [639: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 [639:0] a_set = _GEN_16[639:0];
+  wire [639:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [639:0] d_clr = _GEN_22[639:0];
+  wire [639:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [639:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [2559:0] a_opcodes_set = _GEN_19[2559:0];
+  wire [2559:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [2559:0] d_opcodes_clr = _GEN_23[2559:0];
+  wire [2559:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [2559:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [1279:0] a_sizes_set = _GEN_20[1279:0];
+  wire [1279:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [1279:0] d_sizes_clr = _GEN_24[1279:0];
+  wire [1279:0] _inflight_sizes_T_1 = ~d_sizes_clr; // @[Monitor.scala 704:56]
+  wire [1279: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 <= 640'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 <= 2560'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 <= 1280'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[9: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[9:0];
+  _RAND_9 = {20{`RANDOM}};
+  inflight = _RAND_9[639:0];
+  _RAND_10 = {80{`RANDOM}};
+  inflight_opcodes = _RAND_10[2559:0];
+  _RAND_11 = {40{`RANDOM}};
+  inflight_sizes = _RAND_11[1279: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_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  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [28:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [28:0] _GEN_71 = {{26'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 [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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_37 & (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_37) 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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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 TLSPIFlash_1(
+  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  [9: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 [9: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  [7:0]  auto_control_xing_in_a_bits_mask,
+  input  [63: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 [63: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 [7:0] buffer_auto_in_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [7:0] buffer_auto_out_a_bits_mask; // @[Buffer.scala 68:28]
+  wire [63: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 [63: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 [9: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 [9: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 [9: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 [9: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 [9: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 [9: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 [7: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 [9: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 [9: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 [8:0] in_bits_index = bundleIn_0_1_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [8:0] out_findex = in_bits_index & 9'h1f0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7: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_9 = bundleIn_0_1_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = bundleIn_0_1_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = bundleIn_0_1_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = bundleIn_0_1_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = bundleIn_0_1_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = bundleIn_0_1_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = bundleIn_0_1_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = bundleIn_0_1_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[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 [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_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_0 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire [63: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[32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_1 = out_wivalid_0 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T = {{20'd0}, ctrl_sck_div}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[33]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_2 = out_wivalid_0 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  wire [33:0] out_prepend_1 = {ctrl_sck_pol,ctrl_sck_pha,_out_prepend_T}; // @[Cat.scala 31:58]
+  wire  out_wimask_3 = &out_frontMask[7:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_5 = _out_frontSel_T[5]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_3 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_5 & out_findex == 9'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_2 = {{8'd0}, ctrl_dla_cssck}; // @[RegisterRouter.scala 83:24]
+  wire [23:0] out_prepend_2 = {ctrl_dla_sckcs,_out_prepend_T_2}; // @[Cat.scala 31:58]
+  wire  out_rimask_5 = |out_frontMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_5 = &out_frontMask[39:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_5 = out_wivalid_3 & out_wimask_5; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_3 = {{8'd0}, out_prepend_2}; // @[RegisterRouter.scala 83:24]
+  wire [39:0] out_prepend_3 = {ctrl_dla_intercs,_out_prepend_T_3}; // @[Cat.scala 31:58]
+  wire  out_wimask_6 = &out_frontMask[55:48]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_6 = out_wivalid_3 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire [47:0] _out_prepend_T_4 = {{8'd0}, out_prepend_3}; // @[RegisterRouter.scala 83:24]
+  wire [55:0] out_prepend_4 = {ctrl_dla_interxfr,_out_prepend_T_4}; // @[Cat.scala 31:58]
+  wire  out_wimask_7 = &out_frontMask[3:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_10 = _out_frontSel_T[10]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_7 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_10 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_7 = out_wivalid_7 & out_wimask_7; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_8 = &out_frontMask[35:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_8 = out_wivalid_7 & out_wimask_8; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_5 = {{28'd0}, ctrl_wm_tx}; // @[RegisterRouter.scala 83:24]
+  wire [35:0] out_prepend_5 = {ctrl_wm_rx,_out_prepend_T_5}; // @[Cat.scala 31:58]
+  wire  out_wimask_9 = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_14 = _out_frontSel_T[14]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_9 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_14 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_9 = out_wivalid_9 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_10 = &out_frontMask[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_10 = out_wivalid_9 & out_wimask_10; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_prepend_6 = {ie_rxwm,ie_txwm}; // @[Cat.scala 31:58]
+  wire [31:0] _out_prepend_T_7 = {{30'd0}, out_prepend_6}; // @[RegisterRouter.scala 83:24]
+  wire [33:0] out_prepend_8 = {fifo_io_ip_rxwm,fifo_io_ip_txwm,_out_prepend_T_7}; // @[Cat.scala 31:58]
+  wire  out_frontSel_9 = _out_frontSel_T[9]; // @[RegisterRouter.scala 83:24]
+  wire  out_rivalid_13 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & in_bits_read & out_frontSel_9 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_13 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_9 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_13 = out_wivalid_13 & out_wimask_3; // @[RegisterRouter.scala 83:24]
+  wire  out_womask_15 = &out_frontMask[31]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_woready_15 = out_wivalid_13 & out_womask_15; // @[RegisterRouter.scala 83:24]
+  wire  quash = out_f_woready_15 & bundleIn_0_1_a_bits_data[31]; // @[RegMapFIFO.scala 27:26]
+  wire [40:0] out_prepend_12 = {1'h0,fifo_io_rx_bits,_T,31'h0}; // @[Cat.scala 31:58]
+  wire [62:0] _out_T_202 = {{22'd0}, out_prepend_12}; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_13 = {_T_1,_out_T_202}; // @[Cat.scala 31:58]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_19 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_2 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_19 = out_wivalid_19 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_20 = out_wivalid_19 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_20 = out_f_wivalid_20 ? bundleIn_0_1_a_bits_data[32] : ctrl_cs_dflt_0; // @[RegField.scala 74:{88,92} TLSPI.scala 68:17]
+  wire [31:0] _out_prepend_T_14 = {{31'd0}, ctrl_cs_id}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend_14 = {ctrl_cs_dflt_0,_out_prepend_T_14}; // @[Cat.scala 31:58]
+  wire  out_frontSel_12 = _out_frontSel_T[12]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_21 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_12 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_21 = out_wivalid_21 & out_wimask_9; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_21 = out_f_wivalid_21 ? bundleIn_0_1_a_bits_data[0] : flash_en; // @[RegField.scala 74:{88,92} TLSPIFlash.scala 83:21]
+  wire  out_f_wivalid_22 = out_wivalid_21 & out_wimask_1; // @[RegisterRouter.scala 83:24]
+  wire  _GEN_22 = out_f_wivalid_22 ? bundleIn_0_1_a_bits_data[32] : insn_cmd_en; // @[RegField.scala 74:{88,92} TLSPIFlash.scala 82:17]
+  wire [31:0] _out_prepend_T_15 = {{31'd0}, flash_en}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_23 = &out_frontMask[35:33]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_23 = out_wivalid_21 & out_wimask_23; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_24 = &out_frontMask[39:36]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_24 = out_wivalid_21 & out_wimask_24; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_25 = &out_frontMask[41:40]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_25 = out_wivalid_21 & out_wimask_25; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_26 = &out_frontMask[43:42]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_26 = out_wivalid_21 & out_wimask_26; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_27 = &out_frontMask[45:44]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_27 = out_wivalid_21 & out_wimask_27; // @[RegisterRouter.scala 83:24]
+  wire [45:0] out_prepend_20 = {insn_data_proto,insn_addr_proto,insn_cmd_proto,insn_pad_cnt,insn_addr_len,insn_cmd_en,
+    _out_prepend_T_15}; // @[Cat.scala 31:58]
+  wire  out_f_wivalid_28 = out_wivalid_21 & out_wimask_6; // @[RegisterRouter.scala 83:24]
+  wire [47:0] _out_prepend_T_21 = {{2'd0}, out_prepend_20}; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_29 = &out_frontMask[63:56]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_29 = out_wivalid_21 & out_wimask_29; // @[RegisterRouter.scala 83:24]
+  wire [63:0] out_prepend_22 = {insn_pad_code,insn_cmd_code,_out_prepend_T_21}; // @[Cat.scala 31:58]
+  wire  out_frontSel_7 = _out_frontSel_T[7]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_30 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_7 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_30 = out_wivalid_30 & out_wimask; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_31 = &out_frontMask[36:32]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_31 = out_wivalid_30 & out_wimask_31; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_23 = {{20'd0}, ctrl_extradel_coarse}; // @[RegisterRouter.scala 83:24]
+  wire [36:0] out_prepend_23 = {ctrl_sampledel_sd,_out_prepend_T_23}; // @[Cat.scala 31:58]
+  wire  out_wimask_32 = &out_frontMask[1:0]; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_3 = _out_frontSel_T[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_32 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_3 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_32 = out_wivalid_32 & out_wimask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_8 = _out_frontSel_T[8]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_33 = bundleIn_0_1_a_valid & bundleIn_0_1_d_ready & ~in_bits_read & out_frontSel_8 & out_findex == 9'h0
+    ; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_33 = out_wivalid_33 & out_wimask_32; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_34 = &out_frontMask[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_34 = out_wivalid_33 & out_wimask_34; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_35 = &out_frontMask[3]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_35 = out_wivalid_33 & out_wimask_35; // @[RegisterRouter.scala 83:24]
+  wire [3:0] out_prepend_25 = {ctrl_fmt_iodir,ctrl_fmt_endian,ctrl_fmt_proto}; // @[Cat.scala 31:58]
+  wire  out_wimask_36 = &out_frontMask[19:16]; // @[RegisterRouter.scala 83:24]
+  wire  out_f_wivalid_36 = out_wivalid_33 & out_wimask_36; // @[RegisterRouter.scala 83:24]
+  wire [15:0] _out_prepend_T_26 = {{12'd0}, out_prepend_25}; // @[RegisterRouter.scala 83:24]
+  wire [19:0] out_prepend_26 = {ctrl_fmt_len,_out_prepend_T_26}; // @[Cat.scala 31:58]
+  wire  _GEN_103 = 4'h2 == out_oindex ? _out_T : 4'h1 == out_oindex | _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_104 = 4'h3 == out_oindex ? _out_T : _GEN_103; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_106 = 4'h5 == out_oindex ? _out_T : 4'h4 == out_oindex | _GEN_104; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_108 = 4'h7 == out_oindex ? _out_T : 4'h6 == out_oindex | _GEN_106; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_109 = 4'h8 == out_oindex ? _out_T : _GEN_108; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_110 = 4'h9 == out_oindex ? _out_T : _GEN_109; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_111 = 4'ha == out_oindex ? _out_T : _GEN_110; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_113 = 4'hc == out_oindex ? _out_T : 4'hb == out_oindex | _GEN_111; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_115 = 4'he == out_oindex ? _out_T : 4'hd == out_oindex | _GEN_113; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_116 = 4'hf == out_oindex | _GEN_115; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_0 = {{30'd0}, out_prepend_1}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_118 = 4'h1 == out_oindex ? 64'h0 : _out_out_bits_data_WIRE_1_0; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_2 = {{31'd0}, out_prepend_14}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_119 = 4'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_118; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_3 = {{62'd0}, ctrl_cs_mode}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_120 = 4'h3 == out_oindex ? _out_out_bits_data_WIRE_1_3 : _GEN_119; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_121 = 4'h4 == out_oindex ? 64'h0 : _GEN_120; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_5 = {{8'd0}, out_prepend_4}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_122 = 4'h5 == out_oindex ? _out_out_bits_data_WIRE_1_5 : _GEN_121; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_123 = 4'h6 == out_oindex ? 64'h0 : _GEN_122; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_7 = {{27'd0}, out_prepend_23}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_124 = 4'h7 == out_oindex ? _out_out_bits_data_WIRE_1_7 : _GEN_123; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_8 = {{44'd0}, out_prepend_26}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_125 = 4'h8 == out_oindex ? _out_out_bits_data_WIRE_1_8 : _GEN_124; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_126 = 4'h9 == out_oindex ? out_prepend_13 : _GEN_125; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_10 = {{28'd0}, out_prepend_5}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_127 = 4'ha == out_oindex ? _out_out_bits_data_WIRE_1_10 : _GEN_126; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_128 = 4'hb == out_oindex ? 64'h0 : _GEN_127; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_129 = 4'hc == out_oindex ? out_prepend_22 : _GEN_128; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_130 = 4'hd == out_oindex ? 64'h0 : _GEN_129; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _out_out_bits_data_WIRE_1_14 = {{30'd0}, out_prepend_8}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [63:0] _GEN_131 = 4'he == out_oindex ? _out_out_bits_data_WIRE_1_14 : _GEN_130; // @[MuxLiteral.scala 48:{10,10}]
+  wire [63:0] _GEN_132 = 4'hf == out_oindex ? 64'h0 : _GEN_131; // @[MuxLiteral.scala 48:{10,10}]
+  TLBuffer_20 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_24 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_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_size(monitor_io_in_d_bits_size),
+    .io_in_d_bits_source(monitor_io_in_d_bits_source)
+  );
+  TLMonitor_61 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_116 ? _GEN_132 : 64'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_13 & ~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_13 & out_rimask_5; // @[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 = {{4'd0}, bundleIn_0_a_bits_address[27:0]}; // @[TLSPIFlash.scala 73:27]
+  assign flash_io_addr_bits_hold = {{4'd0}, a_address[27: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_33) 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_34) 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_35) 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_36) 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_2) begin // @[RegField.scala 74:88]
+      ctrl_sck_pol <= bundleIn_0_1_a_bits_data[33]; // @[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_1) begin // @[RegField.scala 74:88]
+      ctrl_sck_pha <= bundleIn_0_1_a_bits_data[32]; // @[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_19) 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_20; // @[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_32) 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_3) 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_4) 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_5) begin // @[RegField.scala 74:88]
+      ctrl_dla_intercs <= bundleIn_0_1_a_bits_data[39:32]; // @[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_6) begin // @[RegField.scala 74:88]
+      ctrl_dla_interxfr <= bundleIn_0_1_a_bits_data[55:48]; // @[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_7) 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_8) begin // @[RegField.scala 74:88]
+      ctrl_wm_rx <= bundleIn_0_1_a_bits_data[35:32]; // @[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_30) 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_31) begin // @[RegField.scala 74:88]
+      ctrl_sampledel_sd <= bundleIn_0_1_a_bits_data[36:32]; // @[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_9) 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_10) 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_25) begin // @[RegField.scala 74:88]
+      insn_cmd_proto <= bundleIn_0_1_a_bits_data[41:40]; // @[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_28) begin // @[RegField.scala 74:88]
+      insn_cmd_code <= bundleIn_0_1_a_bits_data[55:48]; // @[RegField.scala 74:92]
+    end
+    insn_cmd_en <= reset | _GEN_22; // @[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_26) begin // @[RegField.scala 74:88]
+      insn_addr_proto <= bundleIn_0_1_a_bits_data[43:42]; // @[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_23) begin // @[RegField.scala 74:88]
+      insn_addr_len <= bundleIn_0_1_a_bits_data[35:33]; // @[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_29) begin // @[RegField.scala 74:88]
+      insn_pad_code <= bundleIn_0_1_a_bits_data[63:56]; // @[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_24) begin // @[RegField.scala 74:88]
+      insn_pad_cnt <= bundleIn_0_1_a_bits_data[39:36]; // @[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_27) begin // @[RegField.scala 74:88]
+      insn_data_proto <= bundleIn_0_1_a_bits_data[45:44]; // @[RegField.scala 74:92]
+    end
+    flash_en <= reset | _GEN_21; // @[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[9: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_7(
+  output        auto_qspi_1_int_xing_out_sync_0,
+  output        auto_qspi_1_mem_xing_in_a_ready,
+  input         auto_qspi_1_mem_xing_in_a_valid,
+  input  [2:0]  auto_qspi_1_mem_xing_in_a_bits_opcode,
+  input  [2:0]  auto_qspi_1_mem_xing_in_a_bits_param,
+  input         auto_qspi_1_mem_xing_in_a_bits_size,
+  input  [9:0]  auto_qspi_1_mem_xing_in_a_bits_source,
+  input  [29:0] auto_qspi_1_mem_xing_in_a_bits_address,
+  input         auto_qspi_1_mem_xing_in_a_bits_mask,
+  input         auto_qspi_1_mem_xing_in_a_bits_corrupt,
+  input         auto_qspi_1_mem_xing_in_d_ready,
+  output        auto_qspi_1_mem_xing_in_d_valid,
+  output        auto_qspi_1_mem_xing_in_d_bits_size,
+  output [9:0]  auto_qspi_1_mem_xing_in_d_bits_source,
+  output [7:0]  auto_qspi_1_mem_xing_in_d_bits_data,
+  output        auto_qspi_1_control_xing_in_a_ready,
+  input         auto_qspi_1_control_xing_in_a_valid,
+  input  [2:0]  auto_qspi_1_control_xing_in_a_bits_opcode,
+  input  [2:0]  auto_qspi_1_control_xing_in_a_bits_param,
+  input  [1:0]  auto_qspi_1_control_xing_in_a_bits_size,
+  input  [6:0]  auto_qspi_1_control_xing_in_a_bits_source,
+  input  [28:0] auto_qspi_1_control_xing_in_a_bits_address,
+  input  [7:0]  auto_qspi_1_control_xing_in_a_bits_mask,
+  input  [63:0] auto_qspi_1_control_xing_in_a_bits_data,
+  input         auto_qspi_1_control_xing_in_a_bits_corrupt,
+  input         auto_qspi_1_control_xing_in_d_ready,
+  output        auto_qspi_1_control_xing_in_d_valid,
+  output [2:0]  auto_qspi_1_control_xing_in_d_bits_opcode,
+  output [1:0]  auto_qspi_1_control_xing_in_d_bits_size,
+  output [6:0]  auto_qspi_1_control_xing_in_d_bits_source,
+  output [63:0] auto_qspi_1_control_xing_in_d_bits_data,
+  output        auto_qspi_1_io_out_sck,
+  input         auto_qspi_1_io_out_dq_0_i,
+  output        auto_qspi_1_io_out_dq_0_o,
+  output        auto_qspi_1_io_out_dq_0_oe,
+  input         auto_qspi_1_io_out_dq_1_i,
+  output        auto_qspi_1_io_out_dq_1_o,
+  output        auto_qspi_1_io_out_dq_1_oe,
+  input         auto_qspi_1_io_out_dq_2_i,
+  output        auto_qspi_1_io_out_dq_2_o,
+  output        auto_qspi_1_io_out_dq_2_oe,
+  input         auto_qspi_1_io_out_dq_3_i,
+  output        auto_qspi_1_io_out_dq_3_o,
+  output        auto_qspi_1_io_out_dq_3_oe,
+  output        auto_qspi_1_io_out_cs_0,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  qspi_1_clock; // @[SPI.scala 93:51]
+  wire  qspi_1_reset; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_int_xing_out_sync_0; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_a_ready; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_a_valid; // @[SPI.scala 93:51]
+  wire [2:0] qspi_1_auto_mem_xing_in_a_bits_opcode; // @[SPI.scala 93:51]
+  wire [2:0] qspi_1_auto_mem_xing_in_a_bits_param; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_a_bits_size; // @[SPI.scala 93:51]
+  wire [9:0] qspi_1_auto_mem_xing_in_a_bits_source; // @[SPI.scala 93:51]
+  wire [29:0] qspi_1_auto_mem_xing_in_a_bits_address; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_a_bits_mask; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_a_bits_corrupt; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_d_ready; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_d_valid; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_mem_xing_in_d_bits_size; // @[SPI.scala 93:51]
+  wire [9:0] qspi_1_auto_mem_xing_in_d_bits_source; // @[SPI.scala 93:51]
+  wire [7:0] qspi_1_auto_mem_xing_in_d_bits_data; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_control_xing_in_a_ready; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_control_xing_in_a_valid; // @[SPI.scala 93:51]
+  wire [2:0] qspi_1_auto_control_xing_in_a_bits_opcode; // @[SPI.scala 93:51]
+  wire [2:0] qspi_1_auto_control_xing_in_a_bits_param; // @[SPI.scala 93:51]
+  wire [1:0] qspi_1_auto_control_xing_in_a_bits_size; // @[SPI.scala 93:51]
+  wire [6:0] qspi_1_auto_control_xing_in_a_bits_source; // @[SPI.scala 93:51]
+  wire [28:0] qspi_1_auto_control_xing_in_a_bits_address; // @[SPI.scala 93:51]
+  wire [7:0] qspi_1_auto_control_xing_in_a_bits_mask; // @[SPI.scala 93:51]
+  wire [63:0] qspi_1_auto_control_xing_in_a_bits_data; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_control_xing_in_a_bits_corrupt; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_control_xing_in_d_ready; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_control_xing_in_d_valid; // @[SPI.scala 93:51]
+  wire [2:0] qspi_1_auto_control_xing_in_d_bits_opcode; // @[SPI.scala 93:51]
+  wire [1:0] qspi_1_auto_control_xing_in_d_bits_size; // @[SPI.scala 93:51]
+  wire [6:0] qspi_1_auto_control_xing_in_d_bits_source; // @[SPI.scala 93:51]
+  wire [63:0] qspi_1_auto_control_xing_in_d_bits_data; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_sck; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_0_i; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_0_o; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_0_oe; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_1_i; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_1_o; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_1_oe; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_2_i; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_2_o; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_2_oe; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_3_i; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_3_o; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_dq_3_oe; // @[SPI.scala 93:51]
+  wire  qspi_1_auto_io_out_cs_0; // @[SPI.scala 93:51]
+  TLSPIFlash_1 qspi_1 ( // @[SPI.scala 93:51]
+    .clock(qspi_1_clock),
+    .reset(qspi_1_reset),
+    .auto_int_xing_out_sync_0(qspi_1_auto_int_xing_out_sync_0),
+    .auto_mem_xing_in_a_ready(qspi_1_auto_mem_xing_in_a_ready),
+    .auto_mem_xing_in_a_valid(qspi_1_auto_mem_xing_in_a_valid),
+    .auto_mem_xing_in_a_bits_opcode(qspi_1_auto_mem_xing_in_a_bits_opcode),
+    .auto_mem_xing_in_a_bits_param(qspi_1_auto_mem_xing_in_a_bits_param),
+    .auto_mem_xing_in_a_bits_size(qspi_1_auto_mem_xing_in_a_bits_size),
+    .auto_mem_xing_in_a_bits_source(qspi_1_auto_mem_xing_in_a_bits_source),
+    .auto_mem_xing_in_a_bits_address(qspi_1_auto_mem_xing_in_a_bits_address),
+    .auto_mem_xing_in_a_bits_mask(qspi_1_auto_mem_xing_in_a_bits_mask),
+    .auto_mem_xing_in_a_bits_corrupt(qspi_1_auto_mem_xing_in_a_bits_corrupt),
+    .auto_mem_xing_in_d_ready(qspi_1_auto_mem_xing_in_d_ready),
+    .auto_mem_xing_in_d_valid(qspi_1_auto_mem_xing_in_d_valid),
+    .auto_mem_xing_in_d_bits_size(qspi_1_auto_mem_xing_in_d_bits_size),
+    .auto_mem_xing_in_d_bits_source(qspi_1_auto_mem_xing_in_d_bits_source),
+    .auto_mem_xing_in_d_bits_data(qspi_1_auto_mem_xing_in_d_bits_data),
+    .auto_control_xing_in_a_ready(qspi_1_auto_control_xing_in_a_ready),
+    .auto_control_xing_in_a_valid(qspi_1_auto_control_xing_in_a_valid),
+    .auto_control_xing_in_a_bits_opcode(qspi_1_auto_control_xing_in_a_bits_opcode),
+    .auto_control_xing_in_a_bits_param(qspi_1_auto_control_xing_in_a_bits_param),
+    .auto_control_xing_in_a_bits_size(qspi_1_auto_control_xing_in_a_bits_size),
+    .auto_control_xing_in_a_bits_source(qspi_1_auto_control_xing_in_a_bits_source),
+    .auto_control_xing_in_a_bits_address(qspi_1_auto_control_xing_in_a_bits_address),
+    .auto_control_xing_in_a_bits_mask(qspi_1_auto_control_xing_in_a_bits_mask),
+    .auto_control_xing_in_a_bits_data(qspi_1_auto_control_xing_in_a_bits_data),
+    .auto_control_xing_in_a_bits_corrupt(qspi_1_auto_control_xing_in_a_bits_corrupt),
+    .auto_control_xing_in_d_ready(qspi_1_auto_control_xing_in_d_ready),
+    .auto_control_xing_in_d_valid(qspi_1_auto_control_xing_in_d_valid),
+    .auto_control_xing_in_d_bits_opcode(qspi_1_auto_control_xing_in_d_bits_opcode),
+    .auto_control_xing_in_d_bits_size(qspi_1_auto_control_xing_in_d_bits_size),
+    .auto_control_xing_in_d_bits_source(qspi_1_auto_control_xing_in_d_bits_source),
+    .auto_control_xing_in_d_bits_data(qspi_1_auto_control_xing_in_d_bits_data),
+    .auto_io_out_sck(qspi_1_auto_io_out_sck),
+    .auto_io_out_dq_0_i(qspi_1_auto_io_out_dq_0_i),
+    .auto_io_out_dq_0_o(qspi_1_auto_io_out_dq_0_o),
+    .auto_io_out_dq_0_oe(qspi_1_auto_io_out_dq_0_oe),
+    .auto_io_out_dq_1_i(qspi_1_auto_io_out_dq_1_i),
+    .auto_io_out_dq_1_o(qspi_1_auto_io_out_dq_1_o),
+    .auto_io_out_dq_1_oe(qspi_1_auto_io_out_dq_1_oe),
+    .auto_io_out_dq_2_i(qspi_1_auto_io_out_dq_2_i),
+    .auto_io_out_dq_2_o(qspi_1_auto_io_out_dq_2_o),
+    .auto_io_out_dq_2_oe(qspi_1_auto_io_out_dq_2_oe),
+    .auto_io_out_dq_3_i(qspi_1_auto_io_out_dq_3_i),
+    .auto_io_out_dq_3_o(qspi_1_auto_io_out_dq_3_o),
+    .auto_io_out_dq_3_oe(qspi_1_auto_io_out_dq_3_oe),
+    .auto_io_out_cs_0(qspi_1_auto_io_out_cs_0)
+  );
+  assign auto_qspi_1_int_xing_out_sync_0 = qspi_1_auto_int_xing_out_sync_0; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_mem_xing_in_a_ready = qspi_1_auto_mem_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_mem_xing_in_d_valid = qspi_1_auto_mem_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_mem_xing_in_d_bits_size = qspi_1_auto_mem_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_mem_xing_in_d_bits_source = qspi_1_auto_mem_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_mem_xing_in_d_bits_data = qspi_1_auto_mem_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_control_xing_in_a_ready = qspi_1_auto_control_xing_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_control_xing_in_d_valid = qspi_1_auto_control_xing_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_control_xing_in_d_bits_opcode = qspi_1_auto_control_xing_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_control_xing_in_d_bits_size = qspi_1_auto_control_xing_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_control_xing_in_d_bits_source = qspi_1_auto_control_xing_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_control_xing_in_d_bits_data = qspi_1_auto_control_xing_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_qspi_1_io_out_sck = qspi_1_auto_io_out_sck; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_0_o = qspi_1_auto_io_out_dq_0_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_0_oe = qspi_1_auto_io_out_dq_0_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_1_o = qspi_1_auto_io_out_dq_1_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_1_oe = qspi_1_auto_io_out_dq_1_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_2_o = qspi_1_auto_io_out_dq_2_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_2_oe = qspi_1_auto_io_out_dq_2_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_3_o = qspi_1_auto_io_out_dq_3_o; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_dq_3_oe = qspi_1_auto_io_out_dq_3_oe; // @[LazyModule.scala 311:12]
+  assign auto_qspi_1_io_out_cs_0 = qspi_1_auto_io_out_cs_0; // @[LazyModule.scala 311:12]
+  assign qspi_1_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign qspi_1_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_valid = auto_qspi_1_mem_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_opcode = auto_qspi_1_mem_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_param = auto_qspi_1_mem_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_size = auto_qspi_1_mem_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_source = auto_qspi_1_mem_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_address = auto_qspi_1_mem_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_mask = auto_qspi_1_mem_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_a_bits_corrupt = auto_qspi_1_mem_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_mem_xing_in_d_ready = auto_qspi_1_mem_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_valid = auto_qspi_1_control_xing_in_a_valid; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_opcode = auto_qspi_1_control_xing_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_param = auto_qspi_1_control_xing_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_size = auto_qspi_1_control_xing_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_source = auto_qspi_1_control_xing_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_address = auto_qspi_1_control_xing_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_mask = auto_qspi_1_control_xing_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_data = auto_qspi_1_control_xing_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_a_bits_corrupt = auto_qspi_1_control_xing_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_control_xing_in_d_ready = auto_qspi_1_control_xing_in_d_ready; // @[LazyModule.scala 309:16]
+  assign qspi_1_auto_io_out_dq_0_i = auto_qspi_1_io_out_dq_0_i; // @[LazyModule.scala 311:12]
+  assign qspi_1_auto_io_out_dq_1_i = auto_qspi_1_io_out_dq_1_i; // @[LazyModule.scala 311:12]
+  assign qspi_1_auto_io_out_dq_2_i = auto_qspi_1_io_out_dq_2_i; // @[LazyModule.scala 311:12]
+  assign qspi_1_auto_io_out_dq_3_i = auto_qspi_1_io_out_dq_3_i; // @[LazyModule.scala 311:12]
+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  [20:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [20:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [20:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 21'h0; // @[Edges.scala 20:24]
+  wire [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [20:0] _T_33 = io_in_a_bits_address ^ 21'h100000; // @[Parameters.scala 137:31]
+  wire [21:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [21:0] _T_36 = $signed(_T_34) & -22'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 22'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [20: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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_37 & (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_37) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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 (~_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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 (~_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 TileClockGater.scala:52: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 (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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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 (~_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 TileClockGater.scala:52: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 (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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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 (~_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 TileClockGater.scala:52: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 (~_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 TileClockGater.scala:52: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 (~_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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_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 TileClockGater.scala:52: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[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[20: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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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 AsyncResetRegVec_w1_i1(
+  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'h1; // @[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'h1;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module TileClockGater(
+  input         clock,
+  input         reset,
+  output        auto_chipyard_prci_in_1_a_ready,
+  input         auto_chipyard_prci_in_1_a_valid,
+  input  [2:0]  auto_chipyard_prci_in_1_a_bits_opcode,
+  input  [2:0]  auto_chipyard_prci_in_1_a_bits_param,
+  input  [1:0]  auto_chipyard_prci_in_1_a_bits_size,
+  input  [6:0]  auto_chipyard_prci_in_1_a_bits_source,
+  input  [20:0] auto_chipyard_prci_in_1_a_bits_address,
+  input  [7:0]  auto_chipyard_prci_in_1_a_bits_mask,
+  input  [63:0] auto_chipyard_prci_in_1_a_bits_data,
+  input         auto_chipyard_prci_in_1_a_bits_corrupt,
+  input         auto_chipyard_prci_in_1_d_ready,
+  output        auto_chipyard_prci_in_1_d_valid,
+  output [2:0]  auto_chipyard_prci_in_1_d_bits_opcode,
+  output [1:0]  auto_chipyard_prci_in_1_d_bits_size,
+  output [6:0]  auto_chipyard_prci_in_1_d_bits_source,
+  output [63:0] auto_chipyard_prci_in_1_d_bits_data,
+  input         auto_chipyard_prci_in_0_member_allClocks_implicit_clock_clock,
+  input         auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_clock,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_clock,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_clock,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_clock,
+  input         auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset,
+  output        auto_chipyard_prci_out_member_allClocks_implicit_clock_clock,
+  output        auto_chipyard_prci_out_member_allClocks_implicit_clock_reset,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock,
+  output        auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset
+);
+  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 [20:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  regs_0_clock; // @[TileClockGater.scala 33:53]
+  wire  regs_0_reset; // @[TileClockGater.scala 33:53]
+  wire  regs_0_io_d; // @[TileClockGater.scala 33:53]
+  wire  regs_0_io_q; // @[TileClockGater.scala 33:53]
+  wire  regs_0_io_en; // @[TileClockGater.scala 33:53]
+  wire  regs_1_clock; // @[TileClockGater.scala 33:53]
+  wire  regs_1_reset; // @[TileClockGater.scala 33:53]
+  wire  regs_1_io_d; // @[TileClockGater.scala 33:53]
+  wire  regs_1_io_q; // @[TileClockGater.scala 33:53]
+  wire  regs_1_io_en; // @[TileClockGater.scala 33:53]
+  wire  regs_2_clock; // @[TileClockGater.scala 33:53]
+  wire  regs_2_reset; // @[TileClockGater.scala 33:53]
+  wire  regs_2_io_d; // @[TileClockGater.scala 33:53]
+  wire  regs_2_io_q; // @[TileClockGater.scala 33:53]
+  wire  regs_2_io_en; // @[TileClockGater.scala 33:53]
+  wire  regs_3_clock; // @[TileClockGater.scala 33:53]
+  wire  regs_3_reset; // @[TileClockGater.scala 33:53]
+  wire  regs_3_io_d; // @[TileClockGater.scala 33:53]
+  wire  regs_3_io_q; // @[TileClockGater.scala 33:53]
+  wire  regs_3_io_en; // @[TileClockGater.scala 33:53]
+  wire  regs_4_clock; // @[TileClockGater.scala 33:53]
+  wire  regs_4_reset; // @[TileClockGater.scala 33:53]
+  wire  regs_4_io_d; // @[TileClockGater.scala 33:53]
+  wire  regs_4_io_q; // @[TileClockGater.scala 33:53]
+  wire  regs_4_io_en; // @[TileClockGater.scala 33:53]
+  wire  in_bits_read = auto_chipyard_prci_in_1_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [8:0] in_bits_index = auto_chipyard_prci_in_1_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [8:0] out_findex = in_bits_index & 9'h1fc; // @[RegisterRouter.scala 83:24]
+  wire  _out_T = out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire [7:0] _out_frontMask_T_9 = auto_chipyard_prci_in_1_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = auto_chipyard_prci_in_1_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = auto_chipyard_prci_in_1_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = auto_chipyard_prci_in_1_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = auto_chipyard_prci_in_1_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = auto_chipyard_prci_in_1_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = auto_chipyard_prci_in_1_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = auto_chipyard_prci_in_1_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire [1:0] out_oindex = {in_bits_index[1],in_bits_index[0]}; // @[Cat.scala 31:58]
+  wire [3:0] _out_frontSel_T = 4'h1 << out_oindex; // @[OneHot.scala 57:35]
+  wire  out_frontSel_2 = _out_frontSel_T[2]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = auto_chipyard_prci_in_1_a_valid & auto_chipyard_prci_in_1_d_ready & ~in_bits_read &
+    out_frontSel_2 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_11 = regs_4_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_frontSel_1 = _out_frontSel_T[1]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_1 = auto_chipyard_prci_in_1_a_valid & auto_chipyard_prci_in_1_d_ready & ~in_bits_read &
+    out_frontSel_1 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_18 = regs_2_io_q; // @[RegisterRouter.scala 83:24]
+  wire  out_wimask_2 = &out_frontMask[32]; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T = {{31'd0}, _out_T_18}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend = {regs_3_io_q,_out_prepend_T}; // @[Cat.scala 31:58]
+  wire  out_frontSel_0 = _out_frontSel_T[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_3 = auto_chipyard_prci_in_1_a_valid & auto_chipyard_prci_in_1_d_ready & ~in_bits_read &
+    out_frontSel_0 & out_findex == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_T_32 = regs_0_io_q; // @[RegisterRouter.scala 83:24]
+  wire [31:0] _out_prepend_T_1 = {{31'd0}, _out_T_32}; // @[RegisterRouter.scala 83:24]
+  wire [32:0] out_prepend_1 = {regs_1_io_q,_out_prepend_T_1}; // @[Cat.scala 31:58]
+  wire  _GEN_17 = 2'h1 == out_oindex ? _out_T : _out_T; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_18 = 2'h2 == out_oindex ? _out_T : _GEN_17; // @[MuxLiteral.scala 48:{10,10}]
+  wire  _GEN_19 = 2'h3 == out_oindex | _GEN_18; // @[MuxLiteral.scala 48:{10,10}]
+  wire [32:0] _GEN_21 = 2'h1 == out_oindex ? out_prepend : out_prepend_1; // @[MuxLiteral.scala 48:{10,10}]
+  wire [32:0] _out_out_bits_data_WIRE_1_2 = {{32'd0}, _out_T_11}; // @[MuxLiteral.scala 48:{48,48}]
+  wire [32:0] _GEN_22 = 2'h2 == out_oindex ? _out_out_bits_data_WIRE_1_2 : _GEN_21; // @[MuxLiteral.scala 48:{10,10}]
+  wire [32:0] _GEN_23 = 2'h3 == out_oindex ? 33'h0 : _GEN_22; // @[MuxLiteral.scala 48:{10,10}]
+  wire [32:0] _out_out_bits_data_T_4 = _GEN_19 ? _GEN_23 : 33'h0; // @[RegisterRouter.scala 83:24]
+  TLMonitor_62 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_w1_i1 regs_0 ( // @[TileClockGater.scala 33:53]
+    .clock(regs_0_clock),
+    .reset(regs_0_reset),
+    .io_d(regs_0_io_d),
+    .io_q(regs_0_io_q),
+    .io_en(regs_0_io_en)
+  );
+  AsyncResetRegVec_w1_i1 regs_1 ( // @[TileClockGater.scala 33:53]
+    .clock(regs_1_clock),
+    .reset(regs_1_reset),
+    .io_d(regs_1_io_d),
+    .io_q(regs_1_io_q),
+    .io_en(regs_1_io_en)
+  );
+  AsyncResetRegVec_w1_i1 regs_2 ( // @[TileClockGater.scala 33:53]
+    .clock(regs_2_clock),
+    .reset(regs_2_reset),
+    .io_d(regs_2_io_d),
+    .io_q(regs_2_io_q),
+    .io_en(regs_2_io_en)
+  );
+  AsyncResetRegVec_w1_i1 regs_3 ( // @[TileClockGater.scala 33:53]
+    .clock(regs_3_clock),
+    .reset(regs_3_reset),
+    .io_d(regs_3_io_d),
+    .io_q(regs_3_io_q),
+    .io_en(regs_3_io_en)
+  );
+  AsyncResetRegVec_w1_i1 regs_4 ( // @[TileClockGater.scala 33:53]
+    .clock(regs_4_clock),
+    .reset(regs_4_reset),
+    .io_d(regs_4_io_d),
+    .io_q(regs_4_io_q),
+    .io_en(regs_4_io_en)
+  );
+  assign auto_chipyard_prci_in_1_a_ready = auto_chipyard_prci_in_1_d_ready; // @[RegisterRouter.scala 83:24]
+  assign auto_chipyard_prci_in_1_d_valid = auto_chipyard_prci_in_1_a_valid; // @[RegisterRouter.scala 83:24]
+  assign auto_chipyard_prci_in_1_d_bits_opcode = {{2'd0}, in_bits_read}; // @[Nodes.scala 1210:84 RegisterRouter.scala 98:19]
+  assign auto_chipyard_prci_in_1_d_bits_size = auto_chipyard_prci_in_1_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_in_1_d_bits_source = auto_chipyard_prci_in_1_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_in_1_d_bits_data = {{31'd0}, _out_out_bits_data_T_4}; // @[RegisterRouter.scala 83:{24,24}]
+  assign auto_chipyard_prci_out_member_allClocks_implicit_clock_clock =
+    auto_chipyard_prci_in_0_member_allClocks_implicit_clock_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_implicit_clock_reset =
+    auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset =
+    auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_chipyard_prci_in_1_d_ready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_chipyard_prci_in_1_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_chipyard_prci_in_1_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_chipyard_prci_in_1_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_chipyard_prci_in_1_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_chipyard_prci_in_1_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_chipyard_prci_in_1_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_chipyard_prci_in_1_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_chipyard_prci_in_1_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_chipyard_prci_in_1_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_chipyard_prci_in_1_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_chipyard_prci_in_1_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_bits_source = auto_chipyard_prci_in_1_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign regs_0_clock = clock;
+  assign regs_0_reset = auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign regs_0_io_d = auto_chipyard_prci_in_1_a_bits_data[0]; // @[RegisterRouter.scala 83:24]
+  assign regs_0_io_en = out_wivalid_3 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign regs_1_clock = clock;
+  assign regs_1_reset = auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign regs_1_io_d = auto_chipyard_prci_in_1_a_bits_data[32]; // @[RegisterRouter.scala 83:24]
+  assign regs_1_io_en = out_wivalid_3 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  assign regs_2_clock = clock;
+  assign regs_2_reset = auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign regs_2_io_d = auto_chipyard_prci_in_1_a_bits_data[0]; // @[RegisterRouter.scala 83:24]
+  assign regs_2_io_en = out_wivalid_1 & out_wimask; // @[RegisterRouter.scala 83:24]
+  assign regs_3_clock = clock;
+  assign regs_3_reset = auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign regs_3_io_d = auto_chipyard_prci_in_1_a_bits_data[32]; // @[RegisterRouter.scala 83:24]
+  assign regs_3_io_en = out_wivalid_1 & out_wimask_2; // @[RegisterRouter.scala 83:24]
+  assign regs_4_clock = clock;
+  assign regs_4_reset = auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign regs_4_io_d = auto_chipyard_prci_in_1_a_bits_data[0]; // @[RegisterRouter.scala 83:24]
+  assign regs_4_io_en = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+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  [1:0]  io_in_a_bits_size,
+  input  [6:0]  io_in_a_bits_source,
+  input  [20:0] io_in_a_bits_address,
+  input  [7: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 [319:0] _RAND_11;
+  reg [319:0] _RAND_12;
+  reg [31:0] _RAND_13;
+  reg [31:0] _RAND_14;
+  reg [31:0] _RAND_15;
+  reg [95:0] _RAND_16;
+  reg [319: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'h4f; // @[Parameters.scala 57:20]
+  wire [5:0] _is_aligned_mask_T_1 = 6'h7 << io_in_a_bits_size; // @[package.scala 234:77]
+  wire [2:0] is_aligned_mask = ~_is_aligned_mask_T_1[2:0]; // @[package.scala 234:46]
+  wire [20:0] _GEN_71 = {{18'd0}, is_aligned_mask}; // @[Edges.scala 20:16]
+  wire [20:0] _is_aligned_T = io_in_a_bits_address & _GEN_71; // @[Edges.scala 20:16]
+  wire  is_aligned = _is_aligned_T == 21'h0; // @[Edges.scala 20:24]
+  wire [2:0] _mask_sizeOH_T = {{1'd0}, io_in_a_bits_size}; // @[Misc.scala 201:34]
+  wire [1:0] mask_sizeOH_shiftAmount = _mask_sizeOH_T[1:0]; // @[OneHot.scala 63:49]
+  wire [3:0] _mask_sizeOH_T_1 = 4'h1 << mask_sizeOH_shiftAmount; // @[OneHot.scala 64:12]
+  wire [2:0] mask_sizeOH = _mask_sizeOH_T_1[2:0] | 3'h1; // @[Misc.scala 201:81]
+  wire  _mask_T = io_in_a_bits_size >= 2'h3; // @[Misc.scala 205:21]
+  wire  mask_size = mask_sizeOH[2]; // @[Misc.scala 208:26]
+  wire  mask_bit = io_in_a_bits_address[2]; // @[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[1]; // @[Misc.scala 208:26]
+  wire  mask_bit_1 = io_in_a_bits_address[1]; // @[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  mask_size_2 = mask_sizeOH[0]; // @[Misc.scala 208:26]
+  wire  mask_bit_2 = io_in_a_bits_address[0]; // @[Misc.scala 209:26]
+  wire  mask_nbit_2 = ~mask_bit_2; // @[Misc.scala 210:20]
+  wire  mask_eq_6 = mask_eq_2 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_6 = mask_acc_2 | mask_size_2 & mask_eq_6; // @[Misc.scala 214:29]
+  wire  mask_eq_7 = mask_eq_2 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_7 = mask_acc_2 | mask_size_2 & mask_eq_7; // @[Misc.scala 214:29]
+  wire  mask_eq_8 = mask_eq_3 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_8 = mask_acc_3 | mask_size_2 & mask_eq_8; // @[Misc.scala 214:29]
+  wire  mask_eq_9 = mask_eq_3 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_9 = mask_acc_3 | mask_size_2 & mask_eq_9; // @[Misc.scala 214:29]
+  wire  mask_eq_10 = mask_eq_4 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_10 = mask_acc_4 | mask_size_2 & mask_eq_10; // @[Misc.scala 214:29]
+  wire  mask_eq_11 = mask_eq_4 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_11 = mask_acc_4 | mask_size_2 & mask_eq_11; // @[Misc.scala 214:29]
+  wire  mask_eq_12 = mask_eq_5 & mask_nbit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_12 = mask_acc_5 | mask_size_2 & mask_eq_12; // @[Misc.scala 214:29]
+  wire  mask_eq_13 = mask_eq_5 & mask_bit_2; // @[Misc.scala 213:27]
+  wire  mask_acc_13 = mask_acc_5 | mask_size_2 & mask_eq_13; // @[Misc.scala 214:29]
+  wire [7:0] mask = {mask_acc_13,mask_acc_12,mask_acc_11,mask_acc_10,mask_acc_9,mask_acc_8,mask_acc_7,mask_acc_6}; // @[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 [20:0] _T_33 = io_in_a_bits_address ^ 21'h110000; // @[Parameters.scala 137:31]
+  wire [21:0] _T_34 = {1'b0,$signed(_T_33)}; // @[Parameters.scala 137:49]
+  wire [21:0] _T_36 = $signed(_T_34) & -22'sh1000; // @[Parameters.scala 137:52]
+  wire  _T_37 = $signed(_T_36) == 22'sh0; // @[Parameters.scala 137:67]
+  wire  _T_69 = io_in_a_bits_param <= 3'h2; // @[Bundles.scala 108:27]
+  wire [7:0] _T_73 = ~io_in_a_bits_mask; // @[Monitor.scala 88:18]
+  wire  _T_74 = _T_73 == 8'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_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_37; // @[Monitor.scala 115:71]
+  wire  _T_236 = io_in_a_bits_opcode == 3'h1; // @[Monitor.scala 122:25]
+  wire [7:0] _T_273 = ~mask; // @[Monitor.scala 127:33]
+  wire [7:0] _T_274 = io_in_a_bits_mask & _T_273; // @[Monitor.scala 127:31]
+  wire  _T_275 = _T_274 == 8'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'h4f; // @[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'h3; // @[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 [20: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 [79:0] inflight; // @[Monitor.scala 611:27]
+  reg [319:0] inflight_opcodes; // @[Monitor.scala 613:35]
+  reg [319: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 [319: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 [319:0] _GEN_73 = {{304'd0}, _a_opcode_lookup_T_5}; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_6 = _a_opcode_lookup_T_1 & _GEN_73; // @[Monitor.scala 634:97]
+  wire [319:0] _a_opcode_lookup_T_7 = {{1'd0}, _a_opcode_lookup_T_6[319:1]}; // @[Monitor.scala 634:152]
+  wire [319:0] _a_size_lookup_T_1 = inflight_sizes >> _a_opcode_lookup_T; // @[Monitor.scala 638:40]
+  wire [319:0] _a_size_lookup_T_6 = _a_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 638:91]
+  wire [319:0] _a_size_lookup_T_7 = {{1'd0}, _a_size_lookup_T_6[319: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 [79: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 [79: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 [79:0] a_set = _GEN_16[79:0];
+  wire [79:0] _inflight_T = inflight | a_set; // @[Monitor.scala 702:27]
+  wire [79:0] d_clr = _GEN_22[79:0];
+  wire [79:0] _inflight_T_1 = ~d_clr; // @[Monitor.scala 702:38]
+  wire [79:0] _inflight_T_2 = _inflight_T & _inflight_T_1; // @[Monitor.scala 702:36]
+  wire [319:0] a_opcodes_set = _GEN_19[319:0];
+  wire [319:0] _inflight_opcodes_T = inflight_opcodes | a_opcodes_set; // @[Monitor.scala 703:43]
+  wire [319:0] d_opcodes_clr = _GEN_23[319:0];
+  wire [319:0] _inflight_opcodes_T_1 = ~d_opcodes_clr; // @[Monitor.scala 703:62]
+  wire [319:0] _inflight_opcodes_T_2 = _inflight_opcodes_T & _inflight_opcodes_T_1; // @[Monitor.scala 703:60]
+  wire [319:0] a_sizes_set = _GEN_20[319:0];
+  wire [319:0] _inflight_sizes_T = inflight_sizes | a_sizes_set; // @[Monitor.scala 704:39]
+  wire [319: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 [79:0] inflight_1; // @[Monitor.scala 723:35]
+  reg [319: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 [319:0] _c_size_lookup_T_1 = inflight_sizes_1 >> _a_opcode_lookup_T; // @[Monitor.scala 747:42]
+  wire [319:0] _c_size_lookup_T_6 = _c_size_lookup_T_1 & _GEN_73; // @[Monitor.scala 747:93]
+  wire [319:0] _c_size_lookup_T_7 = {{1'd0}, _c_size_lookup_T_6[319: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 [79: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 [79:0] d_clr_1 = _GEN_67[79:0];
+  wire [79:0] _inflight_T_4 = ~d_clr_1; // @[Monitor.scala 809:46]
+  wire [79:0] _inflight_T_5 = inflight_1 & _inflight_T_4; // @[Monitor.scala 809:44]
+  wire [319:0] d_opcodes_clr_1 = _GEN_68[319:0];
+  wire [319:0] _inflight_opcodes_T_4 = ~d_opcodes_clr_1; // @[Monitor.scala 810:62]
+  wire [319: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 <= 80'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 <= 320'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 <= 320'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 <= 80'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 <= 320'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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef PRINTF_COND
+      end
+    `endif
+    `endif // SYNTHESIS
+    `ifndef SYNTHESIS
+    `ifdef STOP_COND
+      if (`STOP_COND) begin
+    `endif
+        if (~_T_37 & (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_37) begin
+          $fwrite(32'h80000002,
+            "Assertion failed: 'A' channel carries Get type which slave claims it can't support (connected at TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[Monitor.scala 42:11]
+        end
+    `ifdef 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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[Monitor.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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:42 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\n    at Monitor.scala:49 assert(cond, message)\n"
+            ); // @[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 TileResetSetter.scala:69:75)\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[20: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[79:0];
+  _RAND_11 = {10{`RANDOM}};
+  inflight_opcodes = _RAND_11[319:0];
+  _RAND_12 = {10{`RANDOM}};
+  inflight_sizes = _RAND_12[319: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[79:0];
+  _RAND_17 = {10{`RANDOM}};
+  inflight_sizes_1 = _RAND_17[319: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 AsyncResetRegVec_w1_i0_8(
+  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 TileResetSetter(
+  input         clock,
+  input         reset,
+  input         auto_clock_in_member_allClocks_implicit_clock_clock,
+  input         auto_clock_in_member_allClocks_implicit_clock_reset,
+  input         auto_clock_in_member_allClocks_subsystem_cbus_0_clock,
+  input         auto_clock_in_member_allClocks_subsystem_cbus_0_reset,
+  input         auto_clock_in_member_allClocks_subsystem_fbus_0_clock,
+  input         auto_clock_in_member_allClocks_subsystem_fbus_0_reset,
+  input         auto_clock_in_member_allClocks_subsystem_pbus_0_clock,
+  input         auto_clock_in_member_allClocks_subsystem_pbus_0_reset,
+  input         auto_clock_in_member_allClocks_subsystem_sbus_0_clock,
+  input         auto_clock_in_member_allClocks_subsystem_sbus_0_reset,
+  output        auto_clock_out_member_allClocks_implicit_clock_clock,
+  output        auto_clock_out_member_allClocks_implicit_clock_reset,
+  output        auto_clock_out_member_allClocks_subsystem_cbus_0_clock,
+  output        auto_clock_out_member_allClocks_subsystem_cbus_0_reset,
+  output        auto_clock_out_member_allClocks_subsystem_fbus_0_clock,
+  output        auto_clock_out_member_allClocks_subsystem_fbus_0_reset,
+  output        auto_clock_out_member_allClocks_subsystem_pbus_0_clock,
+  output        auto_clock_out_member_allClocks_subsystem_pbus_0_reset,
+  output        auto_clock_out_member_allClocks_subsystem_sbus_0_clock,
+  output        auto_clock_out_member_allClocks_subsystem_sbus_0_reset,
+  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  [20:0] auto_tl_in_a_bits_address,
+  input  [7:0]  auto_tl_in_a_bits_mask,
+  input  [63: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 [63:0] auto_tl_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 [20:0] monitor_io_in_a_bits_address; // @[Nodes.scala 24:25]
+  wire [7: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  r_tile_resets_0_clock; // @[TileResetSetter.scala 33:15]
+  wire  r_tile_resets_0_reset; // @[TileResetSetter.scala 33:15]
+  wire  r_tile_resets_0_io_d; // @[TileResetSetter.scala 33:15]
+  wire  r_tile_resets_0_io_q; // @[TileResetSetter.scala 33:15]
+  wire  r_tile_resets_0_io_en; // @[TileResetSetter.scala 33:15]
+  wire  in_bits_read = auto_tl_in_a_bits_opcode == 3'h4; // @[RegisterRouter.scala 72:36]
+  wire [8:0] in_bits_index = auto_tl_in_a_bits_address[11:3]; // @[RegisterRouter.scala 71:18 73:19]
+  wire [7:0] _out_frontMask_T_9 = auto_tl_in_a_bits_mask[0] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_11 = auto_tl_in_a_bits_mask[1] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_13 = auto_tl_in_a_bits_mask[2] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_15 = auto_tl_in_a_bits_mask[3] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_17 = auto_tl_in_a_bits_mask[4] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_19 = auto_tl_in_a_bits_mask[5] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_21 = auto_tl_in_a_bits_mask[6] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [7:0] _out_frontMask_T_23 = auto_tl_in_a_bits_mask[7] ? 8'hff : 8'h0; // @[Bitwise.scala 74:12]
+  wire [63:0] out_frontMask = {_out_frontMask_T_23,_out_frontMask_T_21,_out_frontMask_T_19,_out_frontMask_T_17,
+    _out_frontMask_T_15,_out_frontMask_T_13,_out_frontMask_T_11,_out_frontMask_T_9}; // @[Cat.scala 31:58]
+  wire  out_wimask = &out_frontMask[0]; // @[RegisterRouter.scala 83:24]
+  wire  out_wivalid_0 = auto_tl_in_a_valid & auto_tl_in_d_ready & ~in_bits_read & in_bits_index == 9'h0; // @[RegisterRouter.scala 83:24]
+  wire  _out_out_bits_data_T_4 = in_bits_index == 9'h0 & r_tile_resets_0_io_q; // @[RegisterRouter.scala 83:24]
+  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)
+  );
+  AsyncResetRegVec_w1_i0_8 r_tile_resets_0 ( // @[TileResetSetter.scala 33:15]
+    .clock(r_tile_resets_0_clock),
+    .reset(r_tile_resets_0_reset),
+    .io_d(r_tile_resets_0_io_d),
+    .io_q(r_tile_resets_0_io_q),
+    .io_en(r_tile_resets_0_io_en)
+  );
+  assign auto_clock_out_member_allClocks_implicit_clock_clock = auto_clock_in_member_allClocks_implicit_clock_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_implicit_clock_reset = auto_clock_in_member_allClocks_implicit_clock_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_cbus_0_clock = auto_clock_in_member_allClocks_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_cbus_0_reset = auto_clock_in_member_allClocks_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_fbus_0_clock = auto_clock_in_member_allClocks_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_fbus_0_reset = auto_clock_in_member_allClocks_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_pbus_0_clock = auto_clock_in_member_allClocks_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_pbus_0_reset = auto_clock_in_member_allClocks_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_sbus_0_clock = auto_clock_in_member_allClocks_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_clock_out_member_allClocks_subsystem_sbus_0_reset = auto_clock_in_member_allClocks_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  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_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 = {{63'd0}, _out_out_bits_data_T_4}; // @[RegisterRouter.scala 83:{24,24}]
+  assign monitor_clock = clock;
+  assign monitor_reset = reset;
+  assign monitor_io_in_a_ready = auto_tl_in_d_ready; // @[RegisterRouter.scala 83:24]
+  assign monitor_io_in_a_valid = auto_tl_in_a_valid; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_opcode = auto_tl_in_a_bits_opcode; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_param = auto_tl_in_a_bits_param; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_size = auto_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_address = auto_tl_in_a_bits_address; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_mask = auto_tl_in_a_bits_mask; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_a_bits_corrupt = auto_tl_in_a_bits_corrupt; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_ready = auto_tl_in_d_ready; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_valid = auto_tl_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_tl_in_a_bits_size; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign monitor_io_in_d_bits_source = auto_tl_in_a_bits_source; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign r_tile_resets_0_clock = clock;
+  assign r_tile_resets_0_reset = 1'h1; // @[TileResetSetter.scala 31:38]
+  assign r_tile_resets_0_io_d = auto_tl_in_a_bits_data[0]; // @[RegisterRouter.scala 83:24]
+  assign r_tile_resets_0_io_en = out_wivalid_0 & out_wimask; // @[RegisterRouter.scala 83:24]
+endmodule
+module ClockSinkDomain_8(
+  input         auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock,
+  input         auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset,
+  output        auto_chipyardPRCI_tl_in_a_ready,
+  input         auto_chipyardPRCI_tl_in_a_valid,
+  input  [2:0]  auto_chipyardPRCI_tl_in_a_bits_opcode,
+  input  [2:0]  auto_chipyardPRCI_tl_in_a_bits_param,
+  input  [1:0]  auto_chipyardPRCI_tl_in_a_bits_size,
+  input  [6:0]  auto_chipyardPRCI_tl_in_a_bits_source,
+  input  [20:0] auto_chipyardPRCI_tl_in_a_bits_address,
+  input  [7:0]  auto_chipyardPRCI_tl_in_a_bits_mask,
+  input  [63:0] auto_chipyardPRCI_tl_in_a_bits_data,
+  input         auto_chipyardPRCI_tl_in_a_bits_corrupt,
+  input         auto_chipyardPRCI_tl_in_d_ready,
+  output        auto_chipyardPRCI_tl_in_d_valid,
+  output [2:0]  auto_chipyardPRCI_tl_in_d_bits_opcode,
+  output [1:0]  auto_chipyardPRCI_tl_in_d_bits_size,
+  output [6:0]  auto_chipyardPRCI_tl_in_d_bits_source,
+  output [63:0] auto_chipyardPRCI_tl_in_d_bits_data,
+  output        auto_chipyardPRCI_chipyard_prci_in_a_ready,
+  input         auto_chipyardPRCI_chipyard_prci_in_a_valid,
+  input  [2:0]  auto_chipyardPRCI_chipyard_prci_in_a_bits_opcode,
+  input  [2:0]  auto_chipyardPRCI_chipyard_prci_in_a_bits_param,
+  input  [1:0]  auto_chipyardPRCI_chipyard_prci_in_a_bits_size,
+  input  [6:0]  auto_chipyardPRCI_chipyard_prci_in_a_bits_source,
+  input  [20:0] auto_chipyardPRCI_chipyard_prci_in_a_bits_address,
+  input  [7:0]  auto_chipyardPRCI_chipyard_prci_in_a_bits_mask,
+  input  [63:0] auto_chipyardPRCI_chipyard_prci_in_a_bits_data,
+  input         auto_chipyardPRCI_chipyard_prci_in_a_bits_corrupt,
+  input         auto_chipyardPRCI_chipyard_prci_in_d_ready,
+  output        auto_chipyardPRCI_chipyard_prci_in_d_valid,
+  output [2:0]  auto_chipyardPRCI_chipyard_prci_in_d_bits_opcode,
+  output [1:0]  auto_chipyardPRCI_chipyard_prci_in_d_bits_size,
+  output [6:0]  auto_chipyardPRCI_chipyard_prci_in_d_bits_source,
+  output [63:0] auto_chipyardPRCI_chipyard_prci_in_d_bits_data,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_clock,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_reset,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock,
+  output        auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset,
+  input         auto_clock_in_clock,
+  input         auto_clock_in_reset
+);
+  wire  chipyardPRCI_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_1_a_ready; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_1_a_valid; // @[TileClockGater.scala 51:27]
+  wire [2:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_opcode; // @[TileClockGater.scala 51:27]
+  wire [2:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_param; // @[TileClockGater.scala 51:27]
+  wire [1:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_size; // @[TileClockGater.scala 51:27]
+  wire [6:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_source; // @[TileClockGater.scala 51:27]
+  wire [20:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_address; // @[TileClockGater.scala 51:27]
+  wire [7:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_mask; // @[TileClockGater.scala 51:27]
+  wire [63:0] chipyardPRCI_auto_chipyard_prci_in_1_a_bits_data; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_1_a_bits_corrupt; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_1_d_ready; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_1_d_valid; // @[TileClockGater.scala 51:27]
+  wire [2:0] chipyardPRCI_auto_chipyard_prci_in_1_d_bits_opcode; // @[TileClockGater.scala 51:27]
+  wire [1:0] chipyardPRCI_auto_chipyard_prci_in_1_d_bits_size; // @[TileClockGater.scala 51:27]
+  wire [6:0] chipyardPRCI_auto_chipyard_prci_in_1_d_bits_source; // @[TileClockGater.scala 51:27]
+  wire [63:0] chipyardPRCI_auto_chipyard_prci_in_1_d_bits_data; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_implicit_clock_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[TileClockGater.scala 51:27]
+  wire  chipyardPRCI_1_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_implicit_clock_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_implicit_clock_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_cbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_cbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_fbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_fbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_pbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_pbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_sbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_sbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_implicit_clock_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_implicit_clock_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_cbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_cbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_fbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_fbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_pbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_pbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_sbus_0_clock; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_sbus_0_reset; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_tl_in_a_ready; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_tl_in_a_valid; // @[TileResetSetter.scala 68:28]
+  wire [2:0] chipyardPRCI_1_auto_tl_in_a_bits_opcode; // @[TileResetSetter.scala 68:28]
+  wire [2:0] chipyardPRCI_1_auto_tl_in_a_bits_param; // @[TileResetSetter.scala 68:28]
+  wire [1:0] chipyardPRCI_1_auto_tl_in_a_bits_size; // @[TileResetSetter.scala 68:28]
+  wire [6:0] chipyardPRCI_1_auto_tl_in_a_bits_source; // @[TileResetSetter.scala 68:28]
+  wire [20:0] chipyardPRCI_1_auto_tl_in_a_bits_address; // @[TileResetSetter.scala 68:28]
+  wire [7:0] chipyardPRCI_1_auto_tl_in_a_bits_mask; // @[TileResetSetter.scala 68:28]
+  wire [63:0] chipyardPRCI_1_auto_tl_in_a_bits_data; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_tl_in_a_bits_corrupt; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_tl_in_d_ready; // @[TileResetSetter.scala 68:28]
+  wire  chipyardPRCI_1_auto_tl_in_d_valid; // @[TileResetSetter.scala 68:28]
+  wire [2:0] chipyardPRCI_1_auto_tl_in_d_bits_opcode; // @[TileResetSetter.scala 68:28]
+  wire [1:0] chipyardPRCI_1_auto_tl_in_d_bits_size; // @[TileResetSetter.scala 68:28]
+  wire [6:0] chipyardPRCI_1_auto_tl_in_d_bits_source; // @[TileResetSetter.scala 68:28]
+  wire [63:0] chipyardPRCI_1_auto_tl_in_d_bits_data; // @[TileResetSetter.scala 68:28]
+  TileClockGater chipyardPRCI ( // @[TileClockGater.scala 51:27]
+    .clock(chipyardPRCI_clock),
+    .reset(chipyardPRCI_reset),
+    .auto_chipyard_prci_in_1_a_ready(chipyardPRCI_auto_chipyard_prci_in_1_a_ready),
+    .auto_chipyard_prci_in_1_a_valid(chipyardPRCI_auto_chipyard_prci_in_1_a_valid),
+    .auto_chipyard_prci_in_1_a_bits_opcode(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_opcode),
+    .auto_chipyard_prci_in_1_a_bits_param(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_param),
+    .auto_chipyard_prci_in_1_a_bits_size(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_size),
+    .auto_chipyard_prci_in_1_a_bits_source(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_source),
+    .auto_chipyard_prci_in_1_a_bits_address(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_address),
+    .auto_chipyard_prci_in_1_a_bits_mask(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_mask),
+    .auto_chipyard_prci_in_1_a_bits_data(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_data),
+    .auto_chipyard_prci_in_1_a_bits_corrupt(chipyardPRCI_auto_chipyard_prci_in_1_a_bits_corrupt),
+    .auto_chipyard_prci_in_1_d_ready(chipyardPRCI_auto_chipyard_prci_in_1_d_ready),
+    .auto_chipyard_prci_in_1_d_valid(chipyardPRCI_auto_chipyard_prci_in_1_d_valid),
+    .auto_chipyard_prci_in_1_d_bits_opcode(chipyardPRCI_auto_chipyard_prci_in_1_d_bits_opcode),
+    .auto_chipyard_prci_in_1_d_bits_size(chipyardPRCI_auto_chipyard_prci_in_1_d_bits_size),
+    .auto_chipyard_prci_in_1_d_bits_source(chipyardPRCI_auto_chipyard_prci_in_1_d_bits_source),
+    .auto_chipyard_prci_in_1_d_bits_data(chipyardPRCI_auto_chipyard_prci_in_1_d_bits_data),
+    .auto_chipyard_prci_in_0_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_implicit_clock_clock),
+    .auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock),
+    .auto_chipyard_prci_out_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset)
+  );
+  TileResetSetter chipyardPRCI_1 ( // @[TileResetSetter.scala 68:28]
+    .clock(chipyardPRCI_1_clock),
+    .reset(chipyardPRCI_1_reset),
+    .auto_clock_in_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_implicit_clock_clock),
+    .auto_clock_in_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_implicit_clock_reset),
+    .auto_clock_in_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_clock_in_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_clock_in_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_clock_in_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_clock_in_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_clock_in_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_clock_in_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_clock_in_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_clock_out_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_implicit_clock_clock),
+    .auto_clock_out_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_implicit_clock_reset),
+    .auto_clock_out_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_clock_out_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_clock_out_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_clock_out_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_clock_out_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_clock_out_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_clock_out_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_clock_out_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_sbus_0_reset),
+    .auto_tl_in_a_ready(chipyardPRCI_1_auto_tl_in_a_ready),
+    .auto_tl_in_a_valid(chipyardPRCI_1_auto_tl_in_a_valid),
+    .auto_tl_in_a_bits_opcode(chipyardPRCI_1_auto_tl_in_a_bits_opcode),
+    .auto_tl_in_a_bits_param(chipyardPRCI_1_auto_tl_in_a_bits_param),
+    .auto_tl_in_a_bits_size(chipyardPRCI_1_auto_tl_in_a_bits_size),
+    .auto_tl_in_a_bits_source(chipyardPRCI_1_auto_tl_in_a_bits_source),
+    .auto_tl_in_a_bits_address(chipyardPRCI_1_auto_tl_in_a_bits_address),
+    .auto_tl_in_a_bits_mask(chipyardPRCI_1_auto_tl_in_a_bits_mask),
+    .auto_tl_in_a_bits_data(chipyardPRCI_1_auto_tl_in_a_bits_data),
+    .auto_tl_in_a_bits_corrupt(chipyardPRCI_1_auto_tl_in_a_bits_corrupt),
+    .auto_tl_in_d_ready(chipyardPRCI_1_auto_tl_in_d_ready),
+    .auto_tl_in_d_valid(chipyardPRCI_1_auto_tl_in_d_valid),
+    .auto_tl_in_d_bits_opcode(chipyardPRCI_1_auto_tl_in_d_bits_opcode),
+    .auto_tl_in_d_bits_size(chipyardPRCI_1_auto_tl_in_d_bits_size),
+    .auto_tl_in_d_bits_source(chipyardPRCI_1_auto_tl_in_d_bits_source),
+    .auto_tl_in_d_bits_data(chipyardPRCI_1_auto_tl_in_d_bits_data)
+  );
+  assign auto_chipyardPRCI_tl_in_a_ready = chipyardPRCI_1_auto_tl_in_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_tl_in_d_valid = chipyardPRCI_1_auto_tl_in_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_tl_in_d_bits_opcode = chipyardPRCI_1_auto_tl_in_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_tl_in_d_bits_size = chipyardPRCI_1_auto_tl_in_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_tl_in_d_bits_source = chipyardPRCI_1_auto_tl_in_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_tl_in_d_bits_data = chipyardPRCI_1_auto_tl_in_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_in_a_ready = chipyardPRCI_auto_chipyard_prci_in_1_a_ready; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_in_d_valid = chipyardPRCI_auto_chipyard_prci_in_1_d_valid; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_in_d_bits_opcode = chipyardPRCI_auto_chipyard_prci_in_1_d_bits_opcode; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_in_d_bits_size = chipyardPRCI_auto_chipyard_prci_in_1_d_bits_size; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_in_d_bits_source = chipyardPRCI_auto_chipyard_prci_in_1_d_bits_source; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_in_d_bits_data = chipyardPRCI_auto_chipyard_prci_in_1_d_bits_data; // @[LazyModule.scala 309:16]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_clock =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_reset =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset =
+    chipyardPRCI_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 311:12]
+  assign chipyardPRCI_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign chipyardPRCI_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_valid = auto_chipyardPRCI_chipyard_prci_in_a_valid; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_opcode = auto_chipyardPRCI_chipyard_prci_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_param = auto_chipyardPRCI_chipyard_prci_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_size = auto_chipyardPRCI_chipyard_prci_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_source = auto_chipyardPRCI_chipyard_prci_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_address = auto_chipyardPRCI_chipyard_prci_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_mask = auto_chipyardPRCI_chipyard_prci_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_data = auto_chipyardPRCI_chipyard_prci_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_a_bits_corrupt = auto_chipyardPRCI_chipyard_prci_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_1_d_ready = auto_chipyardPRCI_chipyard_prci_in_d_ready; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_implicit_clock_clock =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_implicit_clock_reset =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_clock =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_cbus_0_reset =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_clock =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_fbus_0_reset =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_clock =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_pbus_0_reset =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_clock =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyard_prci_in_0_member_allClocks_subsystem_sbus_0_reset =
+    chipyardPRCI_1_auto_clock_out_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_clock = auto_clock_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign chipyardPRCI_1_reset = auto_clock_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_implicit_clock_clock =
+    auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_implicit_clock_reset =
+    auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_cbus_0_clock =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_cbus_0_reset =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_fbus_0_clock =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_fbus_0_reset =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_pbus_0_clock =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_pbus_0_reset =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_sbus_0_clock =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_clock_in_member_allClocks_subsystem_sbus_0_reset =
+    auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_valid = auto_chipyardPRCI_tl_in_a_valid; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_opcode = auto_chipyardPRCI_tl_in_a_bits_opcode; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_param = auto_chipyardPRCI_tl_in_a_bits_param; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_size = auto_chipyardPRCI_tl_in_a_bits_size; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_source = auto_chipyardPRCI_tl_in_a_bits_source; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_address = auto_chipyardPRCI_tl_in_a_bits_address; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_mask = auto_chipyardPRCI_tl_in_a_bits_mask; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_data = auto_chipyardPRCI_tl_in_a_bits_data; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_a_bits_corrupt = auto_chipyardPRCI_tl_in_a_bits_corrupt; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_1_auto_tl_in_d_ready = auto_chipyardPRCI_tl_in_d_ready; // @[LazyModule.scala 309:16]
+endmodule
+module ClockGroupAggregator_4(
+  input   auto_in_member_allClocks_implicit_clock_clock,
+  input   auto_in_member_allClocks_implicit_clock_reset,
+  input   auto_in_member_allClocks_subsystem_cbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_cbus_0_reset,
+  input   auto_in_member_allClocks_subsystem_fbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_fbus_0_reset,
+  input   auto_in_member_allClocks_subsystem_pbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_pbus_0_reset,
+  input   auto_in_member_allClocks_subsystem_sbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_sbus_0_reset,
+  output  auto_out_4_member_chipyardPRCI_implicit_clock_clock,
+  output  auto_out_4_member_chipyardPRCI_implicit_clock_reset,
+  output  auto_out_3_member_subsystem_cbus_subsystem_cbus_0_clock,
+  output  auto_out_3_member_subsystem_cbus_subsystem_cbus_0_reset,
+  output  auto_out_2_member_subsystem_fbus_subsystem_fbus_0_clock,
+  output  auto_out_2_member_subsystem_fbus_subsystem_fbus_0_reset,
+  output  auto_out_1_member_subsystem_pbus_subsystem_pbus_0_clock,
+  output  auto_out_1_member_subsystem_pbus_subsystem_pbus_0_reset,
+  output  auto_out_0_member_subsystem_sbus_subsystem_sbus_0_clock,
+  output  auto_out_0_member_subsystem_sbus_subsystem_sbus_0_reset
+);
+  assign auto_out_4_member_chipyardPRCI_implicit_clock_clock = auto_in_member_allClocks_implicit_clock_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_4_member_chipyardPRCI_implicit_clock_reset = auto_in_member_allClocks_implicit_clock_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_member_subsystem_cbus_subsystem_cbus_0_clock = auto_in_member_allClocks_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_3_member_subsystem_cbus_subsystem_cbus_0_reset = auto_in_member_allClocks_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_member_subsystem_fbus_subsystem_fbus_0_clock = auto_in_member_allClocks_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_2_member_subsystem_fbus_subsystem_fbus_0_reset = auto_in_member_allClocks_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_pbus_subsystem_pbus_0_clock = auto_in_member_allClocks_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_1_member_subsystem_pbus_subsystem_pbus_0_reset = auto_in_member_allClocks_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_sbus_subsystem_sbus_0_clock = auto_in_member_allClocks_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_0_member_subsystem_sbus_subsystem_sbus_0_reset = auto_in_member_allClocks_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroupParameterModifier(
+  input   auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_clock,
+  input   auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_reset,
+  input   auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_clock,
+  input   auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_reset,
+  input   auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_clock,
+  input   auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_reset,
+  input   auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_clock,
+  input   auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_reset,
+  output  auto_chipyard_prci_out_3_member_subsystem_cbus_0_clock,
+  output  auto_chipyard_prci_out_3_member_subsystem_cbus_0_reset,
+  output  auto_chipyard_prci_out_2_member_subsystem_fbus_0_clock,
+  output  auto_chipyard_prci_out_2_member_subsystem_fbus_0_reset,
+  output  auto_chipyard_prci_out_1_member_subsystem_pbus_0_clock,
+  output  auto_chipyard_prci_out_1_member_subsystem_pbus_0_reset,
+  output  auto_chipyard_prci_out_0_member_subsystem_sbus_0_clock,
+  output  auto_chipyard_prci_out_0_member_subsystem_sbus_0_reset
+);
+  assign auto_chipyard_prci_out_3_member_subsystem_cbus_0_clock =
+    auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_3_member_subsystem_cbus_0_reset =
+    auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_2_member_subsystem_fbus_0_clock =
+    auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_2_member_subsystem_fbus_0_reset =
+    auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_1_member_subsystem_pbus_0_clock =
+    auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_1_member_subsystem_pbus_0_reset =
+    auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_0_member_subsystem_sbus_0_clock =
+    auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_0_member_subsystem_sbus_0_reset =
+    auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ClockGroupParameterModifier_1(
+  input   auto_chipyard_prci_in_member_allClocks_implicit_clock_clock,
+  input   auto_chipyard_prci_in_member_allClocks_implicit_clock_reset,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock,
+  input   auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset,
+  output  auto_chipyard_prci_out_member_allClocks_implicit_clock_clock,
+  output  auto_chipyard_prci_out_member_allClocks_implicit_clock_reset,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock,
+  output  auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset
+);
+  assign auto_chipyard_prci_out_member_allClocks_implicit_clock_clock =
+    auto_chipyard_prci_in_member_allClocks_implicit_clock_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_implicit_clock_reset =
+    auto_chipyard_prci_in_member_allClocks_implicit_clock_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock =
+    auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset =
+    auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock =
+    auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset =
+    auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock =
+    auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset =
+    auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock =
+    auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset =
+    auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset; // @[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 ClockGroupResetSynchronizer(
+  input   auto_in_member_allClocks_implicit_clock_clock,
+  input   auto_in_member_allClocks_implicit_clock_reset,
+  input   auto_in_member_allClocks_subsystem_cbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_cbus_0_reset,
+  input   auto_in_member_allClocks_subsystem_fbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_fbus_0_reset,
+  input   auto_in_member_allClocks_subsystem_pbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_pbus_0_reset,
+  input   auto_in_member_allClocks_subsystem_sbus_0_clock,
+  input   auto_in_member_allClocks_subsystem_sbus_0_reset,
+  output  auto_out_member_allClocks_implicit_clock_clock,
+  output  auto_out_member_allClocks_implicit_clock_reset,
+  output  auto_out_member_allClocks_subsystem_cbus_0_clock,
+  output  auto_out_member_allClocks_subsystem_cbus_0_reset,
+  output  auto_out_member_allClocks_subsystem_fbus_0_clock,
+  output  auto_out_member_allClocks_subsystem_fbus_0_reset,
+  output  auto_out_member_allClocks_subsystem_pbus_0_clock,
+  output  auto_out_member_allClocks_subsystem_pbus_0_reset,
+  output  auto_out_member_allClocks_subsystem_sbus_0_clock,
+  output  auto_out_member_allClocks_subsystem_sbus_0_reset
+);
+  wire  bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_implicit_clock_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_implicit_clock_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  bundleOut_0_member_allClocks_implicit_clock_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  ResetCatchAndSync_d3 bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_clock),
+    .reset(bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_reset),
+    .io_sync_reset(bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_io_sync_reset)
+  );
+  ResetCatchAndSync_d3 bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_clock),
+    .reset(bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_reset),
+    .io_sync_reset(bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_io_sync_reset)
+  );
+  ResetCatchAndSync_d3 bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_clock),
+    .reset(bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_reset),
+    .io_sync_reset(bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_io_sync_reset)
+  );
+  ResetCatchAndSync_d3 bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_clock),
+    .reset(bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_reset),
+    .io_sync_reset(bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_io_sync_reset)
+  );
+  ResetCatchAndSync_d3 bundleOut_0_member_allClocks_implicit_clock_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(bundleOut_0_member_allClocks_implicit_clock_reset_catcher_clock),
+    .reset(bundleOut_0_member_allClocks_implicit_clock_reset_catcher_reset),
+    .io_sync_reset(bundleOut_0_member_allClocks_implicit_clock_reset_catcher_io_sync_reset)
+  );
+  assign auto_out_member_allClocks_implicit_clock_clock = auto_in_member_allClocks_implicit_clock_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_allClocks_implicit_clock_reset =
+    bundleOut_0_member_allClocks_implicit_clock_reset_catcher_io_sync_reset; // @[Nodes.scala 1207:84 ResetSynchronizer.scala 35:17]
+  assign auto_out_member_allClocks_subsystem_cbus_0_clock = auto_in_member_allClocks_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_allClocks_subsystem_cbus_0_reset =
+    bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_io_sync_reset; // @[Nodes.scala 1207:84 ResetSynchronizer.scala 35:17]
+  assign auto_out_member_allClocks_subsystem_fbus_0_clock = auto_in_member_allClocks_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_allClocks_subsystem_fbus_0_reset =
+    bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_io_sync_reset; // @[Nodes.scala 1207:84 ResetSynchronizer.scala 35:17]
+  assign auto_out_member_allClocks_subsystem_pbus_0_clock = auto_in_member_allClocks_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_allClocks_subsystem_pbus_0_reset =
+    bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_io_sync_reset; // @[Nodes.scala 1207:84 ResetSynchronizer.scala 35:17]
+  assign auto_out_member_allClocks_subsystem_sbus_0_clock = auto_in_member_allClocks_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_member_allClocks_subsystem_sbus_0_reset =
+    bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_io_sync_reset; // @[Nodes.scala 1207:84 ResetSynchronizer.scala 35:17]
+  assign bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_clock =
+    auto_in_member_allClocks_subsystem_sbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_member_allClocks_subsystem_sbus_0_reset_catcher_reset =
+    auto_in_member_allClocks_subsystem_sbus_0_reset; // @[ResetSynchronizer.scala 35:55]
+  assign bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_clock =
+    auto_in_member_allClocks_subsystem_pbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_member_allClocks_subsystem_pbus_0_reset_catcher_reset =
+    auto_in_member_allClocks_subsystem_pbus_0_reset; // @[ResetSynchronizer.scala 35:55]
+  assign bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_clock =
+    auto_in_member_allClocks_subsystem_fbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_member_allClocks_subsystem_fbus_0_reset_catcher_reset =
+    auto_in_member_allClocks_subsystem_fbus_0_reset; // @[ResetSynchronizer.scala 35:55]
+  assign bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_clock =
+    auto_in_member_allClocks_subsystem_cbus_0_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_member_allClocks_subsystem_cbus_0_reset_catcher_reset =
+    auto_in_member_allClocks_subsystem_cbus_0_reset; // @[ResetSynchronizer.scala 35:55]
+  assign bundleOut_0_member_allClocks_implicit_clock_reset_catcher_clock = auto_in_member_allClocks_implicit_clock_clock
+    ; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_member_allClocks_implicit_clock_reset_catcher_reset = auto_in_member_allClocks_implicit_clock_reset
+    ; // @[ResetSynchronizer.scala 35:55]
+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  _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]
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_1 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_1 <= regs_2; // @[JtagShifter.scala 112:37]
+    end
+    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
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_4 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_4 <= regs_5; // @[JtagShifter.scala 112:37]
+    end
+    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
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_8 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_8 <= regs_9; // @[JtagShifter.scala 112:37]
+    end
+    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
+    if (io_chainIn_capture) begin // @[JtagShifter.scala 107:29]
+      regs_11 <= 1'h0; // @[JtagShifter.scala 108:35]
+    end else if (io_chainIn_shift) begin // @[JtagShifter.scala 110:34]
+      regs_11 <= regs_12; // @[JtagShifter.scala 112:37]
+    end
+    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,
+  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;
+`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]
+  wire [3:0] currState = stateMachine_io_currState; // @[JtagTap.scala 75:23 85:15]
+  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_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 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}};
+  activeInstruction = _RAND_1[4:0];
+`endif // RANDOMIZE_REG_INIT
+  if (io_control_jtag_reset) begin
+    tdoReg = 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
+);
+`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_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'h1 % 32'h2; // @[JtagTap.scala 184:18]
+  wire [1:0] _tapIO_T = _GEN_1[1:0]; // @[JtagTap.scala 184:18]
+  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_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 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
+  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 DigitalTop(
+  input         clock,
+  input         reset,
+  output        auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_clock,
+  output        auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_reset,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock,
+  input         auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset,
+  output        auto_subsystem_cbus_fixedClockNode_out_clock,
+  output        auto_subsystem_cbus_fixedClockNode_out_reset,
+  input         custom_boot,
+  output        serial_tl_clock,
+  output        serial_tl_bits_in_ready,
+  input         serial_tl_bits_in_valid,
+  input  [31:0] serial_tl_bits_in_bits,
+  input         serial_tl_bits_out_ready,
+  output        serial_tl_bits_out_valid,
+  output [31:0] serial_tl_bits_out_bits,
+  input         resetctrl_hartIsInReset_0,
+  input         debug_clock,
+  input         debug_reset,
+  input         debug_systemjtag_jtag_TCK,
+  input         debug_systemjtag_jtag_TMS,
+  input         debug_systemjtag_jtag_TDI,
+  output        debug_systemjtag_jtag_TDO_data,
+  input         debug_systemjtag_reset,
+  output        debug_dmactive,
+  input         debug_dmactiveAck,
+  output        uart_0_txd,
+  input         uart_0_rxd,
+  output        uart_1_txd,
+  input         uart_1_rxd,
+  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,
+  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_1_sck,
+  input         qspi_1_dq_0_i,
+  output        qspi_1_dq_0_o,
+  output        qspi_1_dq_0_oe,
+  input         qspi_1_dq_1_i,
+  output        qspi_1_dq_1_o,
+  output        qspi_1_dq_1_oe,
+  input         qspi_1_dq_2_i,
+  output        qspi_1_dq_2_o,
+  output        qspi_1_dq_2_oe,
+  input         qspi_1_dq_3_i,
+  output        qspi_1_dq_3_o,
+  output        qspi_1_dq_3_oe,
+  output        qspi_1_cs_0
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  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_2_1; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_2_2; // @[BaseSubsystem.scala 50:24]
+  wire  ibus_auto_int_bus_int_in_2_3; // @[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_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  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  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_source; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_address; // @[SystemBus.scala 24:26]
+  wire [7:0] subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_a_bits_mask; // @[SystemBus.scala 24:26]
+  wire [63: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_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  subsystem_sbus_auto_coupler_from_tile_tl_master_clock_xing_in_d_bits_source; // @[SystemBus.scala 24:26]
+  wire  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 [63: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_bus_named_subsystem_fbus_bus_xing_in_a_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_size; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_source; // @[SystemBus.scala 24:26]
+  wire [31:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_address; // @[SystemBus.scala 24:26]
+  wire [7:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_mask; // @[SystemBus.scala 24:26]
+  wire [63:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_corrupt; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_ready; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_valid; // @[SystemBus.scala 24:26]
+  wire [2:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_opcode; // @[SystemBus.scala 24:26]
+  wire [1:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_param; // @[SystemBus.scala 24:26]
+  wire [3:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_size; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_sink; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_denied; // @[SystemBus.scala 24:26]
+  wire [63:0] subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_data; // @[SystemBus.scala 24:26]
+  wire  subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_corrupt; // @[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 [31:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_address; // @[SystemBus.scala 24:26]
+  wire [7:0] subsystem_sbus_auto_coupler_to_bus_named_subsystem_cbus_bus_xing_out_a_bits_mask; // @[SystemBus.scala 24:26]
+  wire [63: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 [63: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_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_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [9:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [29:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [9:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_pbus_auto_coupler_to_device_named_qspi_1_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 [9: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 [9: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 [7:0] subsystem_pbus_auto_coupler_to_device_named_qspi_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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_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 [7:0] subsystem_pbus_auto_coupler_to_device_named_gpio_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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_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 [7:0] subsystem_pbus_auto_coupler_to_device_named_uart_1_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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 [7:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63:0] subsystem_pbus_auto_coupler_to_device_named_uart_0_control_xing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [28:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_sink; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_denied; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_corrupt; // @[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 [2: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 [7:0] subsystem_pbus_auto_bus_xing_in_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [2: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 [63: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_pbus_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_pbus_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_ready; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_valid; // @[FrontBus.scala 22:26]
+  wire [2:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_opcode; // @[FrontBus.scala 22:26]
+  wire [2:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_param; // @[FrontBus.scala 22:26]
+  wire [3:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_size; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_source; // @[FrontBus.scala 22:26]
+  wire [31:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_address; // @[FrontBus.scala 22:26]
+  wire [7:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_mask; // @[FrontBus.scala 22:26]
+  wire [63:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_data; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_corrupt; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_ready; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_valid; // @[FrontBus.scala 22:26]
+  wire [2:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_opcode; // @[FrontBus.scala 22:26]
+  wire [1:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_param; // @[FrontBus.scala 22:26]
+  wire [3:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_size; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_source; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_sink; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_denied; // @[FrontBus.scala 22:26]
+  wire [63:0] subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_data; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_corrupt; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_fixedClockNode_out_clock; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_fixedClockNode_out_reset; // @[FrontBus.scala 22: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_fbus_auto_bus_xing_out_a_ready; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_a_valid; // @[FrontBus.scala 22:26]
+  wire [2:0] subsystem_fbus_auto_bus_xing_out_a_bits_opcode; // @[FrontBus.scala 22:26]
+  wire [2:0] subsystem_fbus_auto_bus_xing_out_a_bits_param; // @[FrontBus.scala 22:26]
+  wire [3:0] subsystem_fbus_auto_bus_xing_out_a_bits_size; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_a_bits_source; // @[FrontBus.scala 22:26]
+  wire [31:0] subsystem_fbus_auto_bus_xing_out_a_bits_address; // @[FrontBus.scala 22:26]
+  wire [7:0] subsystem_fbus_auto_bus_xing_out_a_bits_mask; // @[FrontBus.scala 22:26]
+  wire [63:0] subsystem_fbus_auto_bus_xing_out_a_bits_data; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_a_bits_corrupt; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_d_ready; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_d_valid; // @[FrontBus.scala 22:26]
+  wire [2:0] subsystem_fbus_auto_bus_xing_out_d_bits_opcode; // @[FrontBus.scala 22:26]
+  wire [1:0] subsystem_fbus_auto_bus_xing_out_d_bits_param; // @[FrontBus.scala 22:26]
+  wire [3:0] subsystem_fbus_auto_bus_xing_out_d_bits_size; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_d_bits_sink; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_d_bits_denied; // @[FrontBus.scala 22:26]
+  wire [63:0] subsystem_fbus_auto_bus_xing_out_d_bits_data; // @[FrontBus.scala 22:26]
+  wire  subsystem_fbus_auto_bus_xing_out_d_bits_corrupt; // @[FrontBus.scala 22:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [20:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_param; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [20:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_data; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_corrupt; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_ready; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_valid; // @[PeripheryBus.scala 31:26]
+  wire [2:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_opcode; // @[PeripheryBus.scala 31:26]
+  wire [1:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_size; // @[PeripheryBus.scala 31:26]
+  wire [6:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [63:0] subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_data; // @[PeripheryBus.scala 31: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 [7: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 [63:0] subsystem_cbus_auto_coupler_to_bootrom_fragmenter_out_d_bits_data; // @[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 [2:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_source; // @[PeripheryBus.scala 31:26]
+  wire [31:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_cbus_auto_coupler_to_tile_tl_slave_clock_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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_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 [2: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 [63: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 [7:0] subsystem_cbus_auto_coupler_to_debug_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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 [7:0] subsystem_cbus_auto_coupler_to_clint_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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 [7:0] subsystem_cbus_auto_coupler_to_plic_fragmenter_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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 [2: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 [7:0] subsystem_cbus_auto_coupler_to_bus_named_subsystem_pbus_bus_xing_out_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [2: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 [63: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_4_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_4_reset; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_3_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_auto_fixedClockNode_out_3_reset; // @[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_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_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 [31:0] subsystem_cbus_auto_bus_xing_in_a_bits_address; // @[PeripheryBus.scala 31:26]
+  wire [7:0] subsystem_cbus_auto_bus_xing_in_a_bits_mask; // @[PeripheryBus.scala 31:26]
+  wire [63: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 [63: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_custom_boot; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_clock; // @[PeripheryBus.scala 31:26]
+  wire  subsystem_cbus_reset; // @[PeripheryBus.scala 31:26]
+  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_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 [2:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_source; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_address; // @[HasTiles.scala 252:38]
+  wire [7:0] tile_prci_domain_auto_tl_slave_clock_xing_in_a_bits_mask; // @[HasTiles.scala 252:38]
+  wire [63: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_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 [2: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 [63: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  tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_source; // @[HasTiles.scala 252:38]
+  wire [31:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_address; // @[HasTiles.scala 252:38]
+  wire [7:0] tile_prci_domain_auto_tl_master_clock_xing_out_a_bits_mask; // @[HasTiles.scala 252:38]
+  wire [63: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_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  tile_prci_domain_auto_tl_master_clock_xing_out_d_bits_source; // @[HasTiles.scala 252:38]
+  wire  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 [63: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_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_out_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 [7:0] plicDomainWrapper_auto_plic_in_a_bits_mask; // @[Plic.scala 359:39]
+  wire [63: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 [63: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 [7:0] clint_auto_in_a_bits_mask; // @[CLINT.scala 109:27]
+  wire [63: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 [63: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 [7:0] debug_1_auto_dmInner_dmInner_tl_in_a_bits_mask; // @[Periphery.scala 84:27]
+  wire [63: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 [63: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_debug_reset; // @[Periphery.scala 84:27]
+  wire  debug_1_io_ctrl_dmactive; // @[Periphery.scala 84:27]
+  wire  debug_1_io_ctrl_dmactiveAck; // @[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  debug_1_io_hartIsInReset_0; // @[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  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  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 [7: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 [63: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  domain_auto_serdesser_client_out_a_ready; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_a_valid; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_serdesser_client_out_a_bits_opcode; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_serdesser_client_out_a_bits_param; // @[SerialAdapter.scala 373:28]
+  wire [3:0] domain_auto_serdesser_client_out_a_bits_size; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_a_bits_source; // @[SerialAdapter.scala 373:28]
+  wire [31:0] domain_auto_serdesser_client_out_a_bits_address; // @[SerialAdapter.scala 373:28]
+  wire [7:0] domain_auto_serdesser_client_out_a_bits_mask; // @[SerialAdapter.scala 373:28]
+  wire [63:0] domain_auto_serdesser_client_out_a_bits_data; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_a_bits_corrupt; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_d_ready; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_d_valid; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_serdesser_client_out_d_bits_opcode; // @[SerialAdapter.scala 373:28]
+  wire [1:0] domain_auto_serdesser_client_out_d_bits_param; // @[SerialAdapter.scala 373:28]
+  wire [3:0] domain_auto_serdesser_client_out_d_bits_size; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_d_bits_source; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_d_bits_sink; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_d_bits_denied; // @[SerialAdapter.scala 373:28]
+  wire [63:0] domain_auto_serdesser_client_out_d_bits_data; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_serdesser_client_out_d_bits_corrupt; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_a_ready; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_a_valid; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_a_bits_opcode; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_a_bits_param; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_a_bits_size; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_a_bits_source; // @[SerialAdapter.scala 373:28]
+  wire [28:0] domain_auto_tlserial_manager_crossing_in_a_bits_address; // @[SerialAdapter.scala 373:28]
+  wire [7:0] domain_auto_tlserial_manager_crossing_in_a_bits_mask; // @[SerialAdapter.scala 373:28]
+  wire [63:0] domain_auto_tlserial_manager_crossing_in_a_bits_data; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_a_bits_corrupt; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_d_ready; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_d_valid; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_d_bits_opcode; // @[SerialAdapter.scala 373:28]
+  wire [1:0] domain_auto_tlserial_manager_crossing_in_d_bits_param; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_d_bits_size; // @[SerialAdapter.scala 373:28]
+  wire [2:0] domain_auto_tlserial_manager_crossing_in_d_bits_source; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_d_bits_sink; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_d_bits_denied; // @[SerialAdapter.scala 373:28]
+  wire [63:0] domain_auto_tlserial_manager_crossing_in_d_bits_data; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_tlserial_manager_crossing_in_d_bits_corrupt; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_clock_in_clock; // @[SerialAdapter.scala 373:28]
+  wire  domain_auto_clock_in_reset; // @[SerialAdapter.scala 373:28]
+  wire  domain_serial_tl_in_ready; // @[SerialAdapter.scala 373:28]
+  wire  domain_serial_tl_in_valid; // @[SerialAdapter.scala 373:28]
+  wire [31:0] domain_serial_tl_in_bits; // @[SerialAdapter.scala 373:28]
+  wire  domain_serial_tl_out_ready; // @[SerialAdapter.scala 373:28]
+  wire  domain_serial_tl_out_valid; // @[SerialAdapter.scala 373:28]
+  wire [31:0] domain_serial_tl_out_bits; // @[SerialAdapter.scala 373:28]
+  wire  domain_clock; // @[SerialAdapter.scala 373:28]
+  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 [7:0] uartClockDomainWrapper_auto_uart_0_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [63: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 [63: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_4_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_4_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 [7:0] uartClockDomainWrapper_1_auto_uart_1_control_xing_in_a_bits_mask; // @[UART.scala 242:44]
+  wire [63: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 [63: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_5_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_5_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_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 [7:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_a_bits_mask; // @[GPIO.scala 281:44]
+  wire [63: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 [63:0] gpioClockDomainWrapper_auto_gpio_0_control_xing_in_d_bits_data; // @[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_clock_in_clock; // @[GPIO.scala 281:44]
+  wire  gpioClockDomainWrapper_auto_clock_in_reset; // @[GPIO.scala 281:44]
+  wire  intsink_6_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_in_sync_1; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_in_sync_2; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_in_sync_3; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_out_0; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_out_1; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_out_2; // @[Crossing.scala 94:29]
+  wire  intsink_6_auto_out_3; // @[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 [9: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 [9: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 [7:0] qspiClockDomainWrapper_auto_qspi_0_control_xing_in_a_bits_mask; // @[SPI.scala 92:44]
+  wire [63: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 [63: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_7_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_7_auto_out_0; // @[Crossing.scala 94:29]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_int_xing_out_sync_0; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_valid; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_opcode; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_param; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_size; // @[SPI.scala 92:44]
+  wire [9:0] qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_source; // @[SPI.scala 92:44]
+  wire [29:0] qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_address; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_mask; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_corrupt; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_valid; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_size; // @[SPI.scala 92:44]
+  wire [9:0] qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_source; // @[SPI.scala 92:44]
+  wire [7:0] qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_data; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_valid; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_opcode; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_param; // @[SPI.scala 92:44]
+  wire [1:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_size; // @[SPI.scala 92:44]
+  wire [6:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_source; // @[SPI.scala 92:44]
+  wire [28:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_address; // @[SPI.scala 92:44]
+  wire [7:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_mask; // @[SPI.scala 92:44]
+  wire [63:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_data; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_corrupt; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_ready; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_valid; // @[SPI.scala 92:44]
+  wire [2:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_opcode; // @[SPI.scala 92:44]
+  wire [1:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_size; // @[SPI.scala 92:44]
+  wire [6:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_source; // @[SPI.scala 92:44]
+  wire [63:0] qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_data; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_sck; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_i; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_o; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_oe; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_qspi_1_io_out_cs_0; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_clock_in_clock; // @[SPI.scala 92:44]
+  wire  qspiClockDomainWrapper_1_auto_clock_in_reset; // @[SPI.scala 92:44]
+  wire  intsink_8_auto_in_sync_0; // @[Crossing.scala 94:29]
+  wire  intsink_8_auto_out_0; // @[Crossing.scala 94:29]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_tl_in_a_ready; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_tl_in_a_valid; // @[HasChipyardPRCI.scala 38:36]
+  wire [2:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_opcode; // @[HasChipyardPRCI.scala 38:36]
+  wire [2:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_param; // @[HasChipyardPRCI.scala 38:36]
+  wire [1:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_size; // @[HasChipyardPRCI.scala 38:36]
+  wire [6:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_source; // @[HasChipyardPRCI.scala 38:36]
+  wire [20:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_address; // @[HasChipyardPRCI.scala 38:36]
+  wire [7:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_mask; // @[HasChipyardPRCI.scala 38:36]
+  wire [63:0] chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_data; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_corrupt; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_tl_in_d_ready; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_tl_in_d_valid; // @[HasChipyardPRCI.scala 38:36]
+  wire [2:0] chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_opcode; // @[HasChipyardPRCI.scala 38:36]
+  wire [1:0] chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_size; // @[HasChipyardPRCI.scala 38:36]
+  wire [6:0] chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_source; // @[HasChipyardPRCI.scala 38:36]
+  wire [63:0] chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_data; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_ready; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_valid; // @[HasChipyardPRCI.scala 38:36]
+  wire [2:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_opcode; // @[HasChipyardPRCI.scala 38:36]
+  wire [2:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_param; // @[HasChipyardPRCI.scala 38:36]
+  wire [1:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_size; // @[HasChipyardPRCI.scala 38:36]
+  wire [6:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_source; // @[HasChipyardPRCI.scala 38:36]
+  wire [20:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_address; // @[HasChipyardPRCI.scala 38:36]
+  wire [7:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_mask; // @[HasChipyardPRCI.scala 38:36]
+  wire [63:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_data; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_corrupt; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_ready; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_valid; // @[HasChipyardPRCI.scala 38:36]
+  wire [2:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_opcode; // @[HasChipyardPRCI.scala 38:36]
+  wire [1:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_size; // @[HasChipyardPRCI.scala 38:36]
+  wire [6:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_source; // @[HasChipyardPRCI.scala 38:36]
+  wire [63:0] chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_data; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_clock_in_clock; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_auto_clock_in_reset; // @[HasChipyardPRCI.scala 38:36]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_implicit_clock_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_implicit_clock_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_cbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_cbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_fbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_fbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_pbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_pbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_sbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_in_member_allClocks_subsystem_sbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_4_member_chipyardPRCI_implicit_clock_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_4_member_chipyardPRCI_implicit_clock_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_3_member_subsystem_cbus_subsystem_cbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_3_member_subsystem_cbus_subsystem_cbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_2_member_subsystem_fbus_subsystem_fbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_2_member_subsystem_fbus_subsystem_fbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_1_member_subsystem_pbus_subsystem_pbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_1_member_subsystem_pbus_subsystem_pbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_0_member_subsystem_sbus_subsystem_sbus_0_clock; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_1_auto_out_0_member_subsystem_sbus_subsystem_sbus_0_reset; // @[HasChipyardPRCI.scala 42:30]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_3_member_subsystem_cbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_3_member_subsystem_cbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_2_member_subsystem_fbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_2_member_subsystem_fbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_1_member_subsystem_pbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_1_member_subsystem_pbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_0_member_subsystem_sbus_0_clock; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_2_auto_chipyard_prci_out_0_member_subsystem_sbus_0_reset; // @[ClockGroupNamePrefixer.scala 45:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_implicit_clock_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_implicit_clock_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[ClockGroupNamePrefixer.scala 81:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_implicit_clock_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_implicit_clock_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[ClockGroupCombiner.scala 19:15]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_implicit_clock_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_implicit_clock_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_cbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_cbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_fbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_fbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_pbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_pbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_sbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_in_member_allClocks_subsystem_sbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_implicit_clock_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_implicit_clock_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_cbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_cbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_fbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_fbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_pbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_pbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_sbus_0_clock; // @[ResetSynchronizer.scala 42:69]
+  wire  chipyardPRCI_5_auto_out_member_allClocks_subsystem_sbus_0_reset; // @[ResetSynchronizer.scala 42:69]
+  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]
+  reg [6:0] int_rtc_tick_value; // @[Counter.scala 62:40]
+  wire  int_rtc_tick_wrap_wrap = int_rtc_tick_value == 7'h63; // @[Counter.scala 74:24]
+  wire [6:0] _int_rtc_tick_wrap_value_T_1 = int_rtc_tick_value + 7'h1; // @[Counter.scala 78:24]
+  InterruptBusWrapper ibus ( // @[BaseSubsystem.scala 50:24]
+    .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_2_1(ibus_auto_int_bus_int_in_2_1),
+    .auto_int_bus_int_in_2_2(ibus_auto_int_bus_int_in_2_2),
+    .auto_int_bus_int_in_2_3(ibus_auto_int_bus_int_in_2_3),
+    .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_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)
+  );
+  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_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_bus_named_subsystem_fbus_bus_xing_in_a_ready(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_ready),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_valid(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_valid),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_opcode(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_opcode),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_param(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_param),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_size(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_size),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_source(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_source),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_address(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_address),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_mask(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_mask),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_data(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_data),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_corrupt(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_corrupt),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_ready(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_ready),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_valid(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_valid),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_opcode(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_opcode),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_param(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_param),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_size(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_size),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_sink(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_sink),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_denied(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_denied),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_data(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_data),
+    .auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_corrupt(
+      subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_corrupt),
+    .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_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)
+  );
+  PeripheryBus subsystem_pbus ( // @[PeripheryBus.scala 31:26]
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_ready),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_valid),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_ready),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_valid),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_data),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_ready),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_valid),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_opcode),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_param),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_size),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_source),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_address),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_mask),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_data),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_corrupt),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_ready),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_valid),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_opcode),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_size),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_source),
+    .auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_device_named_qspi_1_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_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_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_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_ready(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_ready),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_valid(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_valid),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_opcode(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_opcode),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_param(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_param),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_size(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_size),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_source(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_source),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_address(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_address),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_mask(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_mask),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_data(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_data),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_corrupt),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_ready(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_ready),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_valid(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_valid),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_opcode(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_opcode),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_param(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_param),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_size(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_size),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_source(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_source),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_sink(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_sink),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_denied(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_denied),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_data(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_data),
+    .auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_corrupt(
+      subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_corrupt),
+    .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),
+    .clock(subsystem_pbus_clock),
+    .reset(subsystem_pbus_reset)
+  );
+  FrontBus subsystem_fbus ( // @[FrontBus.scala 22:26]
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_ready(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_ready),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_valid(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_valid),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_opcode(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_opcode),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_param(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_param),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_size(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_size),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_source(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_source),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_address(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_address),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_mask(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_mask),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_data(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_data),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_corrupt(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_corrupt),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_ready(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_ready),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_valid(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_valid),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_opcode(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_opcode),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_param(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_param),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_size(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_size),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_source(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_source),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_sink(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_sink),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_denied(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_denied),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_data(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_data),
+    .auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_corrupt(
+      subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_corrupt),
+    .auto_fixedClockNode_out_clock(subsystem_fbus_auto_fixedClockNode_out_clock),
+    .auto_fixedClockNode_out_reset(subsystem_fbus_auto_fixedClockNode_out_reset),
+    .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),
+    .auto_bus_xing_out_a_ready(subsystem_fbus_auto_bus_xing_out_a_ready),
+    .auto_bus_xing_out_a_valid(subsystem_fbus_auto_bus_xing_out_a_valid),
+    .auto_bus_xing_out_a_bits_opcode(subsystem_fbus_auto_bus_xing_out_a_bits_opcode),
+    .auto_bus_xing_out_a_bits_param(subsystem_fbus_auto_bus_xing_out_a_bits_param),
+    .auto_bus_xing_out_a_bits_size(subsystem_fbus_auto_bus_xing_out_a_bits_size),
+    .auto_bus_xing_out_a_bits_source(subsystem_fbus_auto_bus_xing_out_a_bits_source),
+    .auto_bus_xing_out_a_bits_address(subsystem_fbus_auto_bus_xing_out_a_bits_address),
+    .auto_bus_xing_out_a_bits_mask(subsystem_fbus_auto_bus_xing_out_a_bits_mask),
+    .auto_bus_xing_out_a_bits_data(subsystem_fbus_auto_bus_xing_out_a_bits_data),
+    .auto_bus_xing_out_a_bits_corrupt(subsystem_fbus_auto_bus_xing_out_a_bits_corrupt),
+    .auto_bus_xing_out_d_ready(subsystem_fbus_auto_bus_xing_out_d_ready),
+    .auto_bus_xing_out_d_valid(subsystem_fbus_auto_bus_xing_out_d_valid),
+    .auto_bus_xing_out_d_bits_opcode(subsystem_fbus_auto_bus_xing_out_d_bits_opcode),
+    .auto_bus_xing_out_d_bits_param(subsystem_fbus_auto_bus_xing_out_d_bits_param),
+    .auto_bus_xing_out_d_bits_size(subsystem_fbus_auto_bus_xing_out_d_bits_size),
+    .auto_bus_xing_out_d_bits_sink(subsystem_fbus_auto_bus_xing_out_d_bits_sink),
+    .auto_bus_xing_out_d_bits_denied(subsystem_fbus_auto_bus_xing_out_d_bits_denied),
+    .auto_bus_xing_out_d_bits_data(subsystem_fbus_auto_bus_xing_out_d_bits_data),
+    .auto_bus_xing_out_d_bits_corrupt(subsystem_fbus_auto_bus_xing_out_d_bits_corrupt)
+  );
+  PeripheryBus_1 subsystem_cbus ( // @[PeripheryBus.scala 31:26]
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_ready(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_ready),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_valid(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_valid),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_opcode),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_param(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_param),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_size(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_size),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_source),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_address),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_mask(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_mask),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_data(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_data),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_corrupt),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_ready(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_ready),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_valid(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_valid),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_opcode(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_opcode),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_size(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_size),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_source),
+    .auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_data(
+      subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_data),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_ready(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_ready),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_valid(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_valid),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_opcode(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_opcode),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_param(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_param),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_size(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_size),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_source(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_source),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_address(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_address),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_mask(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_mask),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_data(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_data),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_corrupt(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_corrupt),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_d_ready(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_ready),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_d_valid(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_valid),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_opcode(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_opcode),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_size(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_size),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_source(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_source),
+    .auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_data(
+      subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_data),
+    .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_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_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_4_clock(subsystem_cbus_auto_fixedClockNode_out_4_clock),
+    .auto_fixedClockNode_out_4_reset(subsystem_cbus_auto_fixedClockNode_out_4_reset),
+    .auto_fixedClockNode_out_3_clock(subsystem_cbus_auto_fixedClockNode_out_3_clock),
+    .auto_fixedClockNode_out_3_reset(subsystem_cbus_auto_fixedClockNode_out_3_reset),
+    .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_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_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),
+    .custom_boot(subsystem_cbus_custom_boot),
+    .clock(subsystem_cbus_clock),
+    .reset(subsystem_cbus_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_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_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_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_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)
+  );
+  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_out_0(plicDomainWrapper_auto_plic_int_out_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_debug_reset(debug_1_io_debug_reset),
+    .io_ctrl_dmactive(debug_1_io_ctrl_dmactive),
+    .io_ctrl_dmactiveAck(debug_1_io_ctrl_dmactiveAck),
+    .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),
+    .io_hartIsInReset_0(debug_1_io_hartIsInReset_0)
+  );
+  BundleBridgeNexus_13 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)
+  );
+  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)
+  );
+  ClockSinkDomain_1 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)
+  );
+  ClockSinkDomain_2 domain ( // @[SerialAdapter.scala 373:28]
+    .auto_serdesser_client_out_a_ready(domain_auto_serdesser_client_out_a_ready),
+    .auto_serdesser_client_out_a_valid(domain_auto_serdesser_client_out_a_valid),
+    .auto_serdesser_client_out_a_bits_opcode(domain_auto_serdesser_client_out_a_bits_opcode),
+    .auto_serdesser_client_out_a_bits_param(domain_auto_serdesser_client_out_a_bits_param),
+    .auto_serdesser_client_out_a_bits_size(domain_auto_serdesser_client_out_a_bits_size),
+    .auto_serdesser_client_out_a_bits_source(domain_auto_serdesser_client_out_a_bits_source),
+    .auto_serdesser_client_out_a_bits_address(domain_auto_serdesser_client_out_a_bits_address),
+    .auto_serdesser_client_out_a_bits_mask(domain_auto_serdesser_client_out_a_bits_mask),
+    .auto_serdesser_client_out_a_bits_data(domain_auto_serdesser_client_out_a_bits_data),
+    .auto_serdesser_client_out_a_bits_corrupt(domain_auto_serdesser_client_out_a_bits_corrupt),
+    .auto_serdesser_client_out_d_ready(domain_auto_serdesser_client_out_d_ready),
+    .auto_serdesser_client_out_d_valid(domain_auto_serdesser_client_out_d_valid),
+    .auto_serdesser_client_out_d_bits_opcode(domain_auto_serdesser_client_out_d_bits_opcode),
+    .auto_serdesser_client_out_d_bits_param(domain_auto_serdesser_client_out_d_bits_param),
+    .auto_serdesser_client_out_d_bits_size(domain_auto_serdesser_client_out_d_bits_size),
+    .auto_serdesser_client_out_d_bits_source(domain_auto_serdesser_client_out_d_bits_source),
+    .auto_serdesser_client_out_d_bits_sink(domain_auto_serdesser_client_out_d_bits_sink),
+    .auto_serdesser_client_out_d_bits_denied(domain_auto_serdesser_client_out_d_bits_denied),
+    .auto_serdesser_client_out_d_bits_data(domain_auto_serdesser_client_out_d_bits_data),
+    .auto_serdesser_client_out_d_bits_corrupt(domain_auto_serdesser_client_out_d_bits_corrupt),
+    .auto_tlserial_manager_crossing_in_a_ready(domain_auto_tlserial_manager_crossing_in_a_ready),
+    .auto_tlserial_manager_crossing_in_a_valid(domain_auto_tlserial_manager_crossing_in_a_valid),
+    .auto_tlserial_manager_crossing_in_a_bits_opcode(domain_auto_tlserial_manager_crossing_in_a_bits_opcode),
+    .auto_tlserial_manager_crossing_in_a_bits_param(domain_auto_tlserial_manager_crossing_in_a_bits_param),
+    .auto_tlserial_manager_crossing_in_a_bits_size(domain_auto_tlserial_manager_crossing_in_a_bits_size),
+    .auto_tlserial_manager_crossing_in_a_bits_source(domain_auto_tlserial_manager_crossing_in_a_bits_source),
+    .auto_tlserial_manager_crossing_in_a_bits_address(domain_auto_tlserial_manager_crossing_in_a_bits_address),
+    .auto_tlserial_manager_crossing_in_a_bits_mask(domain_auto_tlserial_manager_crossing_in_a_bits_mask),
+    .auto_tlserial_manager_crossing_in_a_bits_data(domain_auto_tlserial_manager_crossing_in_a_bits_data),
+    .auto_tlserial_manager_crossing_in_a_bits_corrupt(domain_auto_tlserial_manager_crossing_in_a_bits_corrupt),
+    .auto_tlserial_manager_crossing_in_d_ready(domain_auto_tlserial_manager_crossing_in_d_ready),
+    .auto_tlserial_manager_crossing_in_d_valid(domain_auto_tlserial_manager_crossing_in_d_valid),
+    .auto_tlserial_manager_crossing_in_d_bits_opcode(domain_auto_tlserial_manager_crossing_in_d_bits_opcode),
+    .auto_tlserial_manager_crossing_in_d_bits_param(domain_auto_tlserial_manager_crossing_in_d_bits_param),
+    .auto_tlserial_manager_crossing_in_d_bits_size(domain_auto_tlserial_manager_crossing_in_d_bits_size),
+    .auto_tlserial_manager_crossing_in_d_bits_source(domain_auto_tlserial_manager_crossing_in_d_bits_source),
+    .auto_tlserial_manager_crossing_in_d_bits_sink(domain_auto_tlserial_manager_crossing_in_d_bits_sink),
+    .auto_tlserial_manager_crossing_in_d_bits_denied(domain_auto_tlserial_manager_crossing_in_d_bits_denied),
+    .auto_tlserial_manager_crossing_in_d_bits_data(domain_auto_tlserial_manager_crossing_in_d_bits_data),
+    .auto_tlserial_manager_crossing_in_d_bits_corrupt(domain_auto_tlserial_manager_crossing_in_d_bits_corrupt),
+    .auto_clock_in_clock(domain_auto_clock_in_clock),
+    .auto_clock_in_reset(domain_auto_clock_in_reset),
+    .serial_tl_in_ready(domain_serial_tl_in_ready),
+    .serial_tl_in_valid(domain_serial_tl_in_valid),
+    .serial_tl_in_bits(domain_serial_tl_in_bits),
+    .serial_tl_out_ready(domain_serial_tl_out_ready),
+    .serial_tl_out_valid(domain_serial_tl_out_valid),
+    .serial_tl_out_bits(domain_serial_tl_out_bits),
+    .clock(domain_clock)
+  );
+  ClockSinkDomain_3 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_4 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_4_auto_in_sync_0),
+    .auto_out_0(intsink_4_auto_out_0)
+  );
+  ClockSinkDomain_4 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_5 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_5_auto_in_sync_0),
+    .auto_out_0(intsink_5_auto_out_0)
+  );
+  ClockSinkDomain_5 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_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_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_clock_in_clock(gpioClockDomainWrapper_auto_clock_in_clock),
+    .auto_clock_in_reset(gpioClockDomainWrapper_auto_clock_in_reset)
+  );
+  IntSyncSyncCrossingSink_8 intsink_6 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_6_auto_in_sync_0),
+    .auto_in_sync_1(intsink_6_auto_in_sync_1),
+    .auto_in_sync_2(intsink_6_auto_in_sync_2),
+    .auto_in_sync_3(intsink_6_auto_in_sync_3),
+    .auto_out_0(intsink_6_auto_out_0),
+    .auto_out_1(intsink_6_auto_out_1),
+    .auto_out_2(intsink_6_auto_out_2),
+    .auto_out_3(intsink_6_auto_out_3)
+  );
+  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_7 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_7_auto_in_sync_0),
+    .auto_out_0(intsink_7_auto_out_0)
+  );
+  ClockSinkDomain_7 qspiClockDomainWrapper_1 ( // @[SPI.scala 92:44]
+    .auto_qspi_1_int_xing_out_sync_0(qspiClockDomainWrapper_1_auto_qspi_1_int_xing_out_sync_0),
+    .auto_qspi_1_mem_xing_in_a_ready(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_ready),
+    .auto_qspi_1_mem_xing_in_a_valid(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_valid),
+    .auto_qspi_1_mem_xing_in_a_bits_opcode(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_opcode),
+    .auto_qspi_1_mem_xing_in_a_bits_param(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_param),
+    .auto_qspi_1_mem_xing_in_a_bits_size(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_size),
+    .auto_qspi_1_mem_xing_in_a_bits_source(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_source),
+    .auto_qspi_1_mem_xing_in_a_bits_address(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_address),
+    .auto_qspi_1_mem_xing_in_a_bits_mask(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_mask),
+    .auto_qspi_1_mem_xing_in_a_bits_corrupt(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_corrupt),
+    .auto_qspi_1_mem_xing_in_d_ready(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_ready),
+    .auto_qspi_1_mem_xing_in_d_valid(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_valid),
+    .auto_qspi_1_mem_xing_in_d_bits_size(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_size),
+    .auto_qspi_1_mem_xing_in_d_bits_source(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_source),
+    .auto_qspi_1_mem_xing_in_d_bits_data(qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_data),
+    .auto_qspi_1_control_xing_in_a_ready(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_ready),
+    .auto_qspi_1_control_xing_in_a_valid(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_valid),
+    .auto_qspi_1_control_xing_in_a_bits_opcode(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_opcode),
+    .auto_qspi_1_control_xing_in_a_bits_param(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_param),
+    .auto_qspi_1_control_xing_in_a_bits_size(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_size),
+    .auto_qspi_1_control_xing_in_a_bits_source(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_source),
+    .auto_qspi_1_control_xing_in_a_bits_address(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_address),
+    .auto_qspi_1_control_xing_in_a_bits_mask(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_mask),
+    .auto_qspi_1_control_xing_in_a_bits_data(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_data),
+    .auto_qspi_1_control_xing_in_a_bits_corrupt(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_corrupt),
+    .auto_qspi_1_control_xing_in_d_ready(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_ready),
+    .auto_qspi_1_control_xing_in_d_valid(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_valid),
+    .auto_qspi_1_control_xing_in_d_bits_opcode(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_opcode),
+    .auto_qspi_1_control_xing_in_d_bits_size(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_size),
+    .auto_qspi_1_control_xing_in_d_bits_source(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_source),
+    .auto_qspi_1_control_xing_in_d_bits_data(qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_data),
+    .auto_qspi_1_io_out_sck(qspiClockDomainWrapper_1_auto_qspi_1_io_out_sck),
+    .auto_qspi_1_io_out_dq_0_i(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_i),
+    .auto_qspi_1_io_out_dq_0_o(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_o),
+    .auto_qspi_1_io_out_dq_0_oe(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_oe),
+    .auto_qspi_1_io_out_dq_1_i(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_i),
+    .auto_qspi_1_io_out_dq_1_o(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_o),
+    .auto_qspi_1_io_out_dq_1_oe(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_oe),
+    .auto_qspi_1_io_out_dq_2_i(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_i),
+    .auto_qspi_1_io_out_dq_2_o(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_o),
+    .auto_qspi_1_io_out_dq_2_oe(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_oe),
+    .auto_qspi_1_io_out_dq_3_i(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_i),
+    .auto_qspi_1_io_out_dq_3_o(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_o),
+    .auto_qspi_1_io_out_dq_3_oe(qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_oe),
+    .auto_qspi_1_io_out_cs_0(qspiClockDomainWrapper_1_auto_qspi_1_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_8 ( // @[Crossing.scala 94:29]
+    .auto_in_sync_0(intsink_8_auto_in_sync_0),
+    .auto_out_0(intsink_8_auto_out_0)
+  );
+  ClockSinkDomain_8 chipyardPRCI ( // @[HasChipyardPRCI.scala 38:36]
+    .auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock),
+    .auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_chipyardPRCI_tl_in_a_ready(chipyardPRCI_auto_chipyardPRCI_tl_in_a_ready),
+    .auto_chipyardPRCI_tl_in_a_valid(chipyardPRCI_auto_chipyardPRCI_tl_in_a_valid),
+    .auto_chipyardPRCI_tl_in_a_bits_opcode(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_opcode),
+    .auto_chipyardPRCI_tl_in_a_bits_param(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_param),
+    .auto_chipyardPRCI_tl_in_a_bits_size(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_size),
+    .auto_chipyardPRCI_tl_in_a_bits_source(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_source),
+    .auto_chipyardPRCI_tl_in_a_bits_address(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_address),
+    .auto_chipyardPRCI_tl_in_a_bits_mask(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_mask),
+    .auto_chipyardPRCI_tl_in_a_bits_data(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_data),
+    .auto_chipyardPRCI_tl_in_a_bits_corrupt(chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_corrupt),
+    .auto_chipyardPRCI_tl_in_d_ready(chipyardPRCI_auto_chipyardPRCI_tl_in_d_ready),
+    .auto_chipyardPRCI_tl_in_d_valid(chipyardPRCI_auto_chipyardPRCI_tl_in_d_valid),
+    .auto_chipyardPRCI_tl_in_d_bits_opcode(chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_opcode),
+    .auto_chipyardPRCI_tl_in_d_bits_size(chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_size),
+    .auto_chipyardPRCI_tl_in_d_bits_source(chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_source),
+    .auto_chipyardPRCI_tl_in_d_bits_data(chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_data),
+    .auto_chipyardPRCI_chipyard_prci_in_a_ready(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_ready),
+    .auto_chipyardPRCI_chipyard_prci_in_a_valid(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_valid),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_opcode(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_opcode),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_param(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_param),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_size(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_size),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_source(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_source),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_address(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_address),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_mask(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_mask),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_data(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_data),
+    .auto_chipyardPRCI_chipyard_prci_in_a_bits_corrupt(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_corrupt),
+    .auto_chipyardPRCI_chipyard_prci_in_d_ready(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_ready),
+    .auto_chipyardPRCI_chipyard_prci_in_d_valid(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_valid),
+    .auto_chipyardPRCI_chipyard_prci_in_d_bits_opcode(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_opcode),
+    .auto_chipyardPRCI_chipyard_prci_in_d_bits_size(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_size),
+    .auto_chipyardPRCI_chipyard_prci_in_d_bits_source(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_source),
+    .auto_chipyardPRCI_chipyard_prci_in_d_bits_data(chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_data),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_clock),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_reset),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset),
+    .auto_clock_in_clock(chipyardPRCI_auto_clock_in_clock),
+    .auto_clock_in_reset(chipyardPRCI_auto_clock_in_reset)
+  );
+  ClockGroupAggregator_4 chipyardPRCI_1 ( // @[HasChipyardPRCI.scala 42:30]
+    .auto_in_member_allClocks_implicit_clock_clock(chipyardPRCI_1_auto_in_member_allClocks_implicit_clock_clock),
+    .auto_in_member_allClocks_implicit_clock_reset(chipyardPRCI_1_auto_in_member_allClocks_implicit_clock_reset),
+    .auto_in_member_allClocks_subsystem_cbus_0_clock(chipyardPRCI_1_auto_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_in_member_allClocks_subsystem_cbus_0_reset(chipyardPRCI_1_auto_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_in_member_allClocks_subsystem_fbus_0_clock(chipyardPRCI_1_auto_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_in_member_allClocks_subsystem_fbus_0_reset(chipyardPRCI_1_auto_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_in_member_allClocks_subsystem_pbus_0_clock(chipyardPRCI_1_auto_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_in_member_allClocks_subsystem_pbus_0_reset(chipyardPRCI_1_auto_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_in_member_allClocks_subsystem_sbus_0_clock(chipyardPRCI_1_auto_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_in_member_allClocks_subsystem_sbus_0_reset(chipyardPRCI_1_auto_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_out_4_member_chipyardPRCI_implicit_clock_clock(
+      chipyardPRCI_1_auto_out_4_member_chipyardPRCI_implicit_clock_clock),
+    .auto_out_4_member_chipyardPRCI_implicit_clock_reset(
+      chipyardPRCI_1_auto_out_4_member_chipyardPRCI_implicit_clock_reset),
+    .auto_out_3_member_subsystem_cbus_subsystem_cbus_0_clock(
+      chipyardPRCI_1_auto_out_3_member_subsystem_cbus_subsystem_cbus_0_clock),
+    .auto_out_3_member_subsystem_cbus_subsystem_cbus_0_reset(
+      chipyardPRCI_1_auto_out_3_member_subsystem_cbus_subsystem_cbus_0_reset),
+    .auto_out_2_member_subsystem_fbus_subsystem_fbus_0_clock(
+      chipyardPRCI_1_auto_out_2_member_subsystem_fbus_subsystem_fbus_0_clock),
+    .auto_out_2_member_subsystem_fbus_subsystem_fbus_0_reset(
+      chipyardPRCI_1_auto_out_2_member_subsystem_fbus_subsystem_fbus_0_reset),
+    .auto_out_1_member_subsystem_pbus_subsystem_pbus_0_clock(
+      chipyardPRCI_1_auto_out_1_member_subsystem_pbus_subsystem_pbus_0_clock),
+    .auto_out_1_member_subsystem_pbus_subsystem_pbus_0_reset(
+      chipyardPRCI_1_auto_out_1_member_subsystem_pbus_subsystem_pbus_0_reset),
+    .auto_out_0_member_subsystem_sbus_subsystem_sbus_0_clock(
+      chipyardPRCI_1_auto_out_0_member_subsystem_sbus_subsystem_sbus_0_clock),
+    .auto_out_0_member_subsystem_sbus_subsystem_sbus_0_reset(
+      chipyardPRCI_1_auto_out_0_member_subsystem_sbus_subsystem_sbus_0_reset)
+  );
+  ClockGroupParameterModifier chipyardPRCI_2 ( // @[ClockGroupNamePrefixer.scala 45:15]
+    .auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_reset),
+    .auto_chipyard_prci_out_3_member_subsystem_cbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_out_3_member_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_out_3_member_subsystem_cbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_out_3_member_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_out_2_member_subsystem_fbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_out_2_member_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_out_2_member_subsystem_fbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_out_2_member_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_out_1_member_subsystem_pbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_out_1_member_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_out_1_member_subsystem_pbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_out_1_member_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_out_0_member_subsystem_sbus_0_clock(
+      chipyardPRCI_2_auto_chipyard_prci_out_0_member_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_out_0_member_subsystem_sbus_0_reset(
+      chipyardPRCI_2_auto_chipyard_prci_out_0_member_subsystem_sbus_0_reset)
+  );
+  ClockGroupParameterModifier_1 chipyardPRCI_3 ( // @[ClockGroupNamePrefixer.scala 81:15]
+    .auto_chipyard_prci_in_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_implicit_clock_clock),
+    .auto_chipyard_prci_in_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_implicit_clock_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock),
+    .auto_chipyard_prci_out_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset)
+  );
+  ClockGroupParameterModifier_1 chipyardPRCI_4 ( // @[ClockGroupCombiner.scala 19:15]
+    .auto_chipyard_prci_in_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_implicit_clock_clock),
+    .auto_chipyard_prci_in_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_implicit_clock_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_implicit_clock_clock(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock),
+    .auto_chipyard_prci_out_member_allClocks_implicit_clock_reset(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset(
+      chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset)
+  );
+  ClockGroupResetSynchronizer chipyardPRCI_5 ( // @[ResetSynchronizer.scala 42:69]
+    .auto_in_member_allClocks_implicit_clock_clock(chipyardPRCI_5_auto_in_member_allClocks_implicit_clock_clock),
+    .auto_in_member_allClocks_implicit_clock_reset(chipyardPRCI_5_auto_in_member_allClocks_implicit_clock_reset),
+    .auto_in_member_allClocks_subsystem_cbus_0_clock(chipyardPRCI_5_auto_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_in_member_allClocks_subsystem_cbus_0_reset(chipyardPRCI_5_auto_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_in_member_allClocks_subsystem_fbus_0_clock(chipyardPRCI_5_auto_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_in_member_allClocks_subsystem_fbus_0_reset(chipyardPRCI_5_auto_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_in_member_allClocks_subsystem_pbus_0_clock(chipyardPRCI_5_auto_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_in_member_allClocks_subsystem_pbus_0_reset(chipyardPRCI_5_auto_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_in_member_allClocks_subsystem_sbus_0_clock(chipyardPRCI_5_auto_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_in_member_allClocks_subsystem_sbus_0_reset(chipyardPRCI_5_auto_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_out_member_allClocks_implicit_clock_clock(chipyardPRCI_5_auto_out_member_allClocks_implicit_clock_clock),
+    .auto_out_member_allClocks_implicit_clock_reset(chipyardPRCI_5_auto_out_member_allClocks_implicit_clock_reset),
+    .auto_out_member_allClocks_subsystem_cbus_0_clock(chipyardPRCI_5_auto_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_out_member_allClocks_subsystem_cbus_0_reset(chipyardPRCI_5_auto_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_out_member_allClocks_subsystem_fbus_0_clock(chipyardPRCI_5_auto_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_out_member_allClocks_subsystem_fbus_0_reset(chipyardPRCI_5_auto_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_out_member_allClocks_subsystem_pbus_0_clock(chipyardPRCI_5_auto_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_out_member_allClocks_subsystem_pbus_0_reset(chipyardPRCI_5_auto_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_out_member_allClocks_subsystem_sbus_0_clock(chipyardPRCI_5_auto_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_out_member_allClocks_subsystem_sbus_0_reset(chipyardPRCI_5_auto_out_member_allClocks_subsystem_sbus_0_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)
+  );
+  assign auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_clock =
+    chipyardPRCI_1_auto_out_4_member_chipyardPRCI_implicit_clock_clock; // @[LazyModule.scala 311:12]
+  assign auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_reset =
+    chipyardPRCI_1_auto_out_4_member_chipyardPRCI_implicit_clock_reset; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_cbus_fixedClockNode_out_clock = subsystem_cbus_auto_fixedClockNode_out_4_clock; // @[LazyModule.scala 311:12]
+  assign auto_subsystem_cbus_fixedClockNode_out_reset = subsystem_cbus_auto_fixedClockNode_out_4_reset; // @[LazyModule.scala 311:12]
+  assign serial_tl_clock = domain_clock; // @[SerialAdapter.scala 408:22]
+  assign serial_tl_bits_in_ready = domain_serial_tl_in_ready; // @[SerialAdapter.scala 407:21]
+  assign serial_tl_bits_out_valid = domain_serial_tl_out_valid; // @[SerialAdapter.scala 407:21]
+  assign serial_tl_bits_out_bits = domain_serial_tl_out_bits; // @[SerialAdapter.scala 407:21]
+  assign debug_systemjtag_jtag_TDO_data = dtm_io_jtag_TDO_data; // @[Periphery.scala 162:17]
+  assign debug_dmactive = debug_1_io_ctrl_dmactive; // @[Periphery.scala 147:20]
+  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 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 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_1_sck = qspiClockDomainWrapper_1_auto_qspi_1_io_out_sck; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_0_o = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_0_oe = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_1_o = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_1_oe = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_2_o = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_2_oe = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_3_o = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_o; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_dq_3_oe = qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_oe; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign qspi_1_cs_0 = qspiClockDomainWrapper_1_auto_qspi_1_io_out_cs_0; // @[Nodes.scala 1210:84 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_2_1 = intsink_6_auto_out_1; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_2_2 = intsink_6_auto_out_2; // @[LazyModule.scala 296:16]
+  assign ibus_auto_int_bus_int_in_2_3 = intsink_6_auto_out_3; // @[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 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_d_ready =
+    tile_prci_domain_auto_tl_master_clock_xing_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_valid =
+    subsystem_fbus_auto_bus_xing_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_opcode =
+    subsystem_fbus_auto_bus_xing_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_param =
+    subsystem_fbus_auto_bus_xing_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_size =
+    subsystem_fbus_auto_bus_xing_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_source =
+    subsystem_fbus_auto_bus_xing_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_address =
+    subsystem_fbus_auto_bus_xing_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_mask =
+    subsystem_fbus_auto_bus_xing_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_data =
+    subsystem_fbus_auto_bus_xing_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_bits_corrupt =
+    subsystem_fbus_auto_bus_xing_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_ready =
+    subsystem_fbus_auto_bus_xing_out_d_ready; // @[LazyModule.scala 296: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_0_clock =
+    chipyardPRCI_2_auto_chipyard_prci_out_0_member_subsystem_sbus_0_clock; // @[LazyModule.scala 296:16]
+  assign subsystem_sbus_auto_subsystem_sbus_clock_groups_in_member_subsystem_sbus_0_reset =
+    chipyardPRCI_2_auto_chipyard_prci_out_0_member_subsystem_sbus_0_reset; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_ready =
+    qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_valid =
+    qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_size =
+    qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_source =
+    qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_bits_data =
+    qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_ready =
+    qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_valid =
+    qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_opcode =
+    qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_size =
+    qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_source =
+    qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_bits_data =
+    qspiClockDomainWrapper_1_auto_qspi_1_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_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_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_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_ready =
+    domain_auto_tlserial_manager_crossing_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_valid =
+    domain_auto_tlserial_manager_crossing_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_opcode =
+    domain_auto_tlserial_manager_crossing_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_param =
+    domain_auto_tlserial_manager_crossing_in_d_bits_param; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_size =
+    domain_auto_tlserial_manager_crossing_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_source =
+    domain_auto_tlserial_manager_crossing_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_sink =
+    domain_auto_tlserial_manager_crossing_in_d_bits_sink; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_denied =
+    domain_auto_tlserial_manager_crossing_in_d_bits_denied; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_data =
+    domain_auto_tlserial_manager_crossing_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_bits_corrupt =
+    domain_auto_tlserial_manager_crossing_in_d_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_clock =
+    chipyardPRCI_2_auto_chipyard_prci_out_1_member_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign subsystem_pbus_auto_subsystem_pbus_clock_groups_in_member_subsystem_pbus_0_reset =
+    chipyardPRCI_2_auto_chipyard_prci_out_1_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_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_valid =
+    domain_auto_serdesser_client_out_a_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_opcode =
+    domain_auto_serdesser_client_out_a_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_param =
+    domain_auto_serdesser_client_out_a_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_size =
+    domain_auto_serdesser_client_out_a_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_source =
+    domain_auto_serdesser_client_out_a_bits_source; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_address =
+    domain_auto_serdesser_client_out_a_bits_address; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_mask =
+    domain_auto_serdesser_client_out_a_bits_mask; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_data =
+    domain_auto_serdesser_client_out_a_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_bits_corrupt =
+    domain_auto_serdesser_client_out_a_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_ready =
+    domain_auto_serdesser_client_out_d_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_clock =
+    chipyardPRCI_2_auto_chipyard_prci_out_2_member_subsystem_fbus_0_clock; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_subsystem_fbus_clock_groups_in_member_subsystem_fbus_0_reset =
+    chipyardPRCI_2_auto_chipyard_prci_out_2_member_subsystem_fbus_0_reset; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_a_ready =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_a_ready; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_valid =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_valid; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_opcode =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_param =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_size =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_sink =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_denied =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_data =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign subsystem_fbus_auto_bus_xing_out_d_bits_corrupt =
+    subsystem_sbus_auto_coupler_from_bus_named_subsystem_fbus_bus_xing_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_ready =
+    chipyardPRCI_auto_chipyardPRCI_tl_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_valid =
+    chipyardPRCI_auto_chipyardPRCI_tl_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_opcode =
+    chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_size =
+    chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_source =
+    chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_bits_data =
+    chipyardPRCI_auto_chipyardPRCI_tl_in_d_bits_data; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_ready =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_ready; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_valid =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_valid; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_opcode =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_opcode; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_size =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_size; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_source =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_source; // @[LazyModule.scala 298:16]
+  assign subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_bits_data =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_bits_data; // @[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_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_0_clock =
+    chipyardPRCI_2_auto_chipyard_prci_out_3_member_subsystem_cbus_0_clock; // @[LazyModule.scala 296:16]
+  assign subsystem_cbus_auto_subsystem_cbus_clock_groups_in_member_subsystem_cbus_0_reset =
+    chipyardPRCI_2_auto_chipyard_prci_out_3_member_subsystem_cbus_0_reset; // @[LazyModule.scala 296: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_cbus_custom_boot = custom_boot; // @[CustomBootPin.scala 81: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_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_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_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_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 = int_rtc_tick_value == 7'h63; // @[Counter.scala 74:24]
+  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_debug_reset = debug_reset; // @[Periphery.scala 143:38]
+  assign debug_1_io_ctrl_dmactiveAck = debug_dmactiveAck; // @[Periphery.scala 148:43]
+  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 debug_1_io_hartIsInReset_0 = resetctrl_hartIsInReset_0; // @[Periphery.scala 113:40]
+  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; // @[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 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 domain_auto_serdesser_client_out_a_ready =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_a_ready; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_valid =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_valid; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_opcode =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_opcode; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_param =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_param; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_size =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_size; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_source =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_source; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_sink =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_sink; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_denied =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_denied; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_data =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_data; // @[LazyModule.scala 296:16]
+  assign domain_auto_serdesser_client_out_d_bits_corrupt =
+    subsystem_fbus_auto_coupler_from_port_named_serial_tl_ctrl_buffer_in_d_bits_corrupt; // @[LazyModule.scala 296:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign domain_auto_tlserial_manager_crossing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_port_named_serial_tl_mem_tlserial_manager_crossing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign domain_auto_clock_in_clock = subsystem_fbus_auto_fixedClockNode_out_clock; // @[LazyModule.scala 298:16]
+  assign domain_auto_clock_in_reset = subsystem_fbus_auto_fixedClockNode_out_reset; // @[LazyModule.scala 298:16]
+  assign domain_serial_tl_in_valid = serial_tl_bits_in_valid; // @[SerialAdapter.scala 407:21]
+  assign domain_serial_tl_in_bits = serial_tl_bits_in_bits; // @[SerialAdapter.scala 407:21]
+  assign domain_serial_tl_out_ready = serial_tl_bits_out_ready; // @[SerialAdapter.scala 407:21]
+  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_4_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_5_auto_in_sync_0 = uartClockDomainWrapper_1_auto_uart_1_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_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_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_2_clock; // @[LazyModule.scala 298:16]
+  assign gpioClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_2_reset; // @[LazyModule.scala 298:16]
+  assign intsink_6_auto_in_sync_0 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_6_auto_in_sync_1 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_1; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_6_auto_in_sync_2 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_2; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign intsink_6_auto_in_sync_3 = gpioClockDomainWrapper_auto_gpio_0_int_xing_out_sync_3; // @[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_3_clock; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_3_reset; // @[LazyModule.scala 298:16]
+  assign intsink_7_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_1_mem_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_mem_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_mem_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_valid =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_valid; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_opcode =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_param =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_size =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_source =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_address =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_mask =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_data =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_a_bits_corrupt =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_control_xing_in_d_ready =
+    subsystem_pbus_auto_coupler_to_device_named_qspi_1_control_xing_out_d_ready; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_0_i = qspi_1_dq_0_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_1_i = qspi_1_dq_1_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_2_i = qspi_1_dq_2_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_qspi_1_io_out_dq_3_i = qspi_1_dq_3_i; // @[Nodes.scala 1210:84 BundleBridge.scala 54:8]
+  assign qspiClockDomainWrapper_1_auto_clock_in_clock = subsystem_pbus_auto_fixedClockNode_out_4_clock; // @[LazyModule.scala 298:16]
+  assign qspiClockDomainWrapper_1_auto_clock_in_reset = subsystem_pbus_auto_fixedClockNode_out_4_reset; // @[LazyModule.scala 298:16]
+  assign intsink_8_auto_in_sync_0 = qspiClockDomainWrapper_1_auto_qspi_1_int_xing_out_sync_0; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset =
+    auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 309:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_valid =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_valid; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_opcode =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_param =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_size =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_source =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_mask =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_data =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_tl_in_d_ready =
+    subsystem_cbus_auto_coupler_to_slave_named_tileresetsetter_buffer_out_d_ready; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_valid =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_valid; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_opcode =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_opcode; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_param =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_param; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_size =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_size; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_source =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_source; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_address =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_address; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_mask =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_mask; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_data =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_data; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_a_bits_corrupt =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_a_bits_corrupt; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_chipyardPRCI_chipyard_prci_in_d_ready =
+    subsystem_cbus_auto_coupler_to_slave_named_clockgater_buffer_out_d_ready; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_clock_in_clock = subsystem_cbus_auto_fixedClockNode_out_3_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_clock_in_reset = subsystem_cbus_auto_fixedClockNode_out_3_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_implicit_clock_clock =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_implicit_clock_reset =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_cbus_0_clock =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_cbus_0_reset =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_fbus_0_clock =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_fbus_0_reset =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_pbus_0_clock =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_pbus_0_reset =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_sbus_0_clock =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_1_auto_in_member_allClocks_subsystem_sbus_0_reset =
+    chipyardPRCI_3_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_clock =
+    chipyardPRCI_1_auto_out_3_member_subsystem_cbus_subsystem_cbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_3_member_subsystem_cbus_subsystem_cbus_0_reset =
+    chipyardPRCI_1_auto_out_3_member_subsystem_cbus_subsystem_cbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_clock =
+    chipyardPRCI_1_auto_out_2_member_subsystem_fbus_subsystem_fbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_2_member_subsystem_fbus_subsystem_fbus_0_reset =
+    chipyardPRCI_1_auto_out_2_member_subsystem_fbus_subsystem_fbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_clock =
+    chipyardPRCI_1_auto_out_1_member_subsystem_pbus_subsystem_pbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_1_member_subsystem_pbus_subsystem_pbus_0_reset =
+    chipyardPRCI_1_auto_out_1_member_subsystem_pbus_subsystem_pbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_clock =
+    chipyardPRCI_1_auto_out_0_member_subsystem_sbus_subsystem_sbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_2_auto_chipyard_prci_in_0_member_subsystem_sbus_subsystem_sbus_0_reset =
+    chipyardPRCI_1_auto_out_0_member_subsystem_sbus_subsystem_sbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_implicit_clock_clock =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_implicit_clock_reset =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_3_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset =
+    chipyardPRCI_4_auto_chipyard_prci_out_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_implicit_clock_clock =
+    chipyardPRCI_5_auto_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_implicit_clock_reset =
+    chipyardPRCI_5_auto_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_clock =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_cbus_0_reset =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_clock =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_fbus_0_reset =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_clock =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_pbus_0_reset =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_clock =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_4_auto_chipyard_prci_in_member_allClocks_subsystem_sbus_0_reset =
+    chipyardPRCI_5_auto_out_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 296:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_implicit_clock_clock =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_implicit_clock_reset =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_cbus_0_clock =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_cbus_0_reset =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_fbus_0_clock =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_fbus_0_reset =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_pbus_0_clock =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_pbus_0_reset =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_sbus_0_clock =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_5_auto_in_member_allClocks_subsystem_sbus_0_reset =
+    chipyardPRCI_auto_chipyardPRCI_chipyard_prci_out_member_allClocks_subsystem_sbus_0_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]
+  always @(posedge subsystem_pbus_clock) begin
+    if (subsystem_pbus_reset) begin // @[Counter.scala 62:40]
+      int_rtc_tick_value <= 7'h0; // @[Counter.scala 62:40]
+    end else if (int_rtc_tick_wrap_wrap) begin // @[Counter.scala 88:20]
+      int_rtc_tick_value <= 7'h0; // @[Counter.scala 88:28]
+    end else begin
+      int_rtc_tick_value <= _int_rtc_tick_wrap_value_T_1; // @[Counter.scala 78:15]
+    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}};
+  int_rtc_tick_value = _RAND_0[6:0];
+`endif // RANDOMIZE_REG_INIT
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module ClockGroup_4(
+  input   auto_in_member_chipyardPRCI_implicit_clock_clock,
+  input   auto_in_member_chipyardPRCI_implicit_clock_reset,
+  output  auto_out_clock,
+  output  auto_out_reset
+);
+  assign auto_out_clock = auto_in_member_chipyardPRCI_implicit_clock_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_out_reset = auto_in_member_chipyardPRCI_implicit_clock_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module DividerOnlyClockGenerator(
+  input   auto_divider_only_clock_gen_in_clock,
+  input   auto_divider_only_clock_gen_in_reset,
+  output  auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_clock,
+  output  auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_reset,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_clock,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_reset,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_clock,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_reset,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_clock,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_reset,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_clock,
+  output  auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_reset
+);
+  wire  bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out; // @[DividerOnlyClockGenerator.scala 133:27]
+  wire  bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_in; // @[DividerOnlyClockGenerator.scala 133:27]
+  ClockDividerN #(.DIV(1)) bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1 ( // @[DividerOnlyClockGenerator.scala 133:27]
+    .clk_out(bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out),
+    .clk_in(bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_in)
+  );
+  assign auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_clock =
+    bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out; // @[Nodes.scala 1207:84 DividerOnlyClockGenerator.scala 142:19]
+  assign auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_reset = auto_divider_only_clock_gen_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_clock =
+    bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out; // @[Nodes.scala 1207:84 DividerOnlyClockGenerator.scala 142:19]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_reset = auto_divider_only_clock_gen_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_clock =
+    bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out; // @[Nodes.scala 1207:84 DividerOnlyClockGenerator.scala 142:19]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_reset = auto_divider_only_clock_gen_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_clock =
+    bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out; // @[Nodes.scala 1207:84 DividerOnlyClockGenerator.scala 142:19]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_reset = auto_divider_only_clock_gen_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_clock =
+    bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_out; // @[Nodes.scala 1207:84 DividerOnlyClockGenerator.scala 142:19]
+  assign auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_reset = auto_divider_only_clock_gen_in_reset; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+  assign bundleOut_0_member_allClocks_subsystem_sbus_0_clock_ClockDivideBy1_clk_in =
+    auto_divider_only_clock_gen_in_clock; // @[Nodes.scala 1210:84 LazyModule.scala 309:16]
+endmodule
+module ResetSynchronizerShiftReg_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;
+  assign output_chain_io_d = io_d; // @[SynchronizerReg.scala 147:39]
+endmodule
+module ChipTop(
+`ifdef USE_POWER_PINS //added for Openlane check
+  inout	vccd1,	// User area 1 1.8V power
+  inout	vssd1,	// User area 1 digital ground
+`endif
+  output [37:0] io_oeb, // Caravel OEB pins
+  input         jtag_TCK,
+  input         jtag_TMS,
+  input         jtag_TDI,
+  output        jtag_TDO,
+  output        serial_tl_clock,
+  output        serial_tl_bits_in_ready,
+  input         serial_tl_bits_in_valid,
+  input  [31:0] serial_tl_bits_in_bits,
+  input         serial_tl_bits_out_ready,
+  output        serial_tl_bits_out_valid,
+  output [31:0] serial_tl_bits_out_bits,
+  input         custom_boot,
+  input         clock_clock,
+  input         reset,
+  inout         gpio_0_0,
+  inout         gpio_0_1,
+  inout         gpio_0_2,
+  inout         gpio_0_3,
+  output        spi_0_sck,
+  output        spi_0_cs_0,
+  inout         spi_0_dq_0,
+  inout         spi_0_dq_1,
+  inout         spi_0_dq_2,
+  inout         spi_0_dq_3,
+  output        spi_1_sck,
+  output        spi_1_cs_0,
+  inout         spi_1_dq_0,
+  inout         spi_1_dq_1,
+  inout         spi_1_dq_2,
+  inout         spi_1_dq_3,
+  output        uart_0_txd,
+  input         uart_0_rxd,
+  output        uart_1_txd,
+  input         uart_1_rxd
+);
+`ifdef RANDOMIZE_REG_INIT
+  reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+  wire  system_clock; // @[ChipTop.scala 28:35]
+  wire  system_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset; // @[ChipTop.scala 28:35]
+  wire  system_auto_subsystem_cbus_fixedClockNode_out_clock; // @[ChipTop.scala 28:35]
+  wire  system_auto_subsystem_cbus_fixedClockNode_out_reset; // @[ChipTop.scala 28:35]
+  wire  system_custom_boot; // @[ChipTop.scala 28:35]
+  wire  system_serial_tl_clock; // @[ChipTop.scala 28:35]
+  wire  system_serial_tl_bits_in_ready; // @[ChipTop.scala 28:35]
+  wire  system_serial_tl_bits_in_valid; // @[ChipTop.scala 28:35]
+  wire [31:0] system_serial_tl_bits_in_bits; // @[ChipTop.scala 28:35]
+  wire  system_serial_tl_bits_out_ready; // @[ChipTop.scala 28:35]
+  wire  system_serial_tl_bits_out_valid; // @[ChipTop.scala 28:35]
+  wire [31:0] system_serial_tl_bits_out_bits; // @[ChipTop.scala 28:35]
+  wire  system_resetctrl_hartIsInReset_0; // @[ChipTop.scala 28:35]
+  wire  system_debug_clock; // @[ChipTop.scala 28:35]
+  wire  system_debug_reset; // @[ChipTop.scala 28:35]
+  wire  system_debug_systemjtag_jtag_TCK; // @[ChipTop.scala 28:35]
+  wire  system_debug_systemjtag_jtag_TMS; // @[ChipTop.scala 28:35]
+  wire  system_debug_systemjtag_jtag_TDI; // @[ChipTop.scala 28:35]
+  wire  system_debug_systemjtag_jtag_TDO_data; // @[ChipTop.scala 28:35]
+  wire  system_debug_systemjtag_reset; // @[ChipTop.scala 28:35]
+  wire  system_debug_dmactive; // @[ChipTop.scala 28:35]
+  wire  system_debug_dmactiveAck; // @[ChipTop.scala 28:35]
+  wire  system_uart_0_txd; // @[ChipTop.scala 28:35]
+  wire  system_uart_0_rxd; // @[ChipTop.scala 28:35]
+  wire  system_uart_1_txd; // @[ChipTop.scala 28:35]
+  wire  system_uart_1_rxd; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_0_i_ival; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_0_o_oval; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_0_o_oe; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_0_o_ie; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_1_i_ival; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_1_o_oval; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_1_o_oe; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_1_o_ie; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_2_i_ival; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_2_o_oval; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_2_o_oe; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_2_o_ie; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_3_i_ival; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_3_o_oval; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_3_o_oe; // @[ChipTop.scala 28:35]
+  wire  system_gpio_0_pins_3_o_ie; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_sck; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_0_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_0_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_0_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_1_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_1_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_1_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_2_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_2_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_2_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_3_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_3_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_dq_3_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_0_cs_0; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_sck; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_0_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_0_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_0_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_1_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_1_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_1_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_2_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_2_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_2_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_3_i; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_3_o; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_dq_3_oe; // @[ChipTop.scala 28:35]
+  wire  system_qspi_1_cs_0; // @[ChipTop.scala 28:35]
+  wire  chipyardPRCI_auto_in_member_chipyardPRCI_implicit_clock_clock; // @[ClockGroup.scala 32:69]
+  wire  chipyardPRCI_auto_in_member_chipyardPRCI_implicit_clock_reset; // @[ClockGroup.scala 32:69]
+  wire  chipyardPRCI_auto_out_clock; // @[ClockGroup.scala 32:69]
+  wire  chipyardPRCI_auto_out_reset; // @[ClockGroup.scala 32:69]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_in_clock; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_in_reset; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_clock; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_reset; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_clock; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_reset; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_clock; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_reset; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_clock; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_reset; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_clock; // @[IOBinders.scala 409:41]
+  wire  dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_reset; // @[IOBinders.scala 409:41]
+  wire  system_debug_systemjtag_reset_catcher_clock; // @[ResetCatchAndSync.scala 39:28]
+  wire  system_debug_systemjtag_reset_catcher_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  system_debug_systemjtag_reset_catcher_io_sync_reset; // @[ResetCatchAndSync.scala 39:28]
+  wire  debug_reset_syncd_debug_reset_sync_clock; // @[ShiftReg.scala 45:23]
+  wire  debug_reset_syncd_debug_reset_sync_reset; // @[ShiftReg.scala 45:23]
+  wire  debug_reset_syncd_debug_reset_sync_io_d; // @[ShiftReg.scala 45:23]
+  wire  debug_reset_syncd_debug_reset_sync_io_q; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAck_clock; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAck_reset; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAck_io_d; // @[ShiftReg.scala 45:23]
+  wire  dmactiveAck_dmactiveAck_io_q; // @[ShiftReg.scala 45:23]
+  wire  gated_clock_debug_clock_gate_in; // @[ClockGate.scala 24:20]
+  wire  gated_clock_debug_clock_gate_test_en; // @[ClockGate.scala 24:20]
+  wire  gated_clock_debug_clock_gate_en; // @[ClockGate.scala 24:20]
+  wire  gated_clock_debug_clock_gate_out; // @[ClockGate.scala 24:20]
+  wire  iocell_jtag_TDO_pad; // @[IOCell.scala 112:24]
+  wire  iocell_jtag_TDO_o; // @[IOCell.scala 112:24]
+  wire  iocell_jtag_TDO_oe; // @[IOCell.scala 112:24]
+  wire  iocell_jtag_TDI_pad; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TDI_i; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TDI_ie; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TMS_pad; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TMS_i; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TMS_ie; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TCK_pad; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TCK_i; // @[IOCell.scala 111:23]
+  wire  iocell_jtag_TCK_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_out_bits_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_1_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_1_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_1_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_2_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_2_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_2_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_3_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_3_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_3_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_4_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_4_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_4_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_5_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_5_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_5_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_6_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_6_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_6_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_7_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_7_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_7_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_8_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_8_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_8_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_9_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_9_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_9_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_10_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_10_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_10_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_11_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_11_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_11_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_12_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_12_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_12_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_13_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_13_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_13_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_14_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_14_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_14_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_15_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_15_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_15_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_16_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_16_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_16_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_17_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_17_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_17_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_18_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_18_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_18_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_19_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_19_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_19_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_20_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_20_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_20_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_21_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_21_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_21_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_22_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_22_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_22_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_23_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_23_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_23_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_24_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_24_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_24_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_25_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_25_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_25_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_26_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_26_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_26_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_27_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_27_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_27_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_28_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_28_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_28_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_29_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_29_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_29_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_30_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_30_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_30_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_31_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_31_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_bits_31_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_valid_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_valid_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_valid_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_out_ready_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_out_ready_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_out_ready_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_1_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_1_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_1_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_2_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_2_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_2_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_3_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_3_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_3_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_4_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_4_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_4_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_5_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_5_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_5_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_6_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_6_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_6_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_7_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_7_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_7_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_8_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_8_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_8_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_9_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_9_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_9_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_10_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_10_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_10_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_11_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_11_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_11_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_12_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_12_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_12_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_13_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_13_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_13_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_14_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_14_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_14_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_15_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_15_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_15_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_16_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_16_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_16_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_17_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_17_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_17_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_18_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_18_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_18_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_19_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_19_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_19_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_20_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_20_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_20_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_21_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_21_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_21_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_22_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_22_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_22_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_23_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_23_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_23_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_24_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_24_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_24_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_25_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_25_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_25_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_26_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_26_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_26_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_27_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_27_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_27_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_28_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_28_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_28_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_29_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_29_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_29_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_30_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_30_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_30_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_31_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_31_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_bits_31_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_valid_pad; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_valid_i; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_valid_ie; // @[IOCell.scala 111:23]
+  wire  iocell_serial_tl_bits_in_ready_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_in_ready_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_bits_in_ready_oe; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_clock_pad; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_clock_o; // @[IOCell.scala 112:24]
+  wire  iocell_serial_tl_clock_oe; // @[IOCell.scala 112:24]
+  wire  iocell_custom_boot_pad; // @[IOCell.scala 111:23]
+  wire  iocell_custom_boot_i; // @[IOCell.scala 111:23]
+  wire  iocell_custom_boot_ie; // @[IOCell.scala 111:23]
+  wire  iocell_clock_clock_pad; // @[IOCell.scala 111:23]
+  wire  iocell_clock_clock_i; // @[IOCell.scala 111:23]
+  wire  iocell_clock_clock_ie; // @[IOCell.scala 111:23]
+  wire  iocell_reset_pad; // @[IOCell.scala 111:23]
+  wire  iocell_reset_i; // @[IOCell.scala 111:23]
+  wire  iocell_reset_ie; // @[IOCell.scala 111:23]
+  wire  iocell_gpio_0_0_i; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_0_ie; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_0_o; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_0_oe; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_1_i; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_1_ie; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_1_o; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_1_oe; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_2_i; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_2_ie; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_2_o; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_2_oe; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_3_i; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_3_ie; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_3_o; // @[IOCell.scala 110:22]
+  wire  iocell_gpio_0_3_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_sck_pad; // @[IOCell.scala 112:24]
+  wire  iocell_spi_0_sck_o; // @[IOCell.scala 112:24]
+  wire  iocell_spi_0_sck_oe; // @[IOCell.scala 112:24]
+  wire  iocell_spi_0_cs_0_pad; // @[IOCell.scala 112:24]
+  wire  iocell_spi_0_cs_0_o; // @[IOCell.scala 112:24]
+  wire  iocell_spi_0_cs_0_oe; // @[IOCell.scala 112:24]
+  wire  iocell_spi_0_dq_0_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_0_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_0_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_0_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_1_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_1_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_1_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_1_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_2_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_2_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_2_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_2_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_3_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_3_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_3_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_0_dq_3_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_sck_pad; // @[IOCell.scala 112:24]
+  wire  iocell_spi_1_sck_o; // @[IOCell.scala 112:24]
+  wire  iocell_spi_1_sck_oe; // @[IOCell.scala 112:24]
+  wire  iocell_spi_1_cs_0_pad; // @[IOCell.scala 112:24]
+  wire  iocell_spi_1_cs_0_o; // @[IOCell.scala 112:24]
+  wire  iocell_spi_1_cs_0_oe; // @[IOCell.scala 112:24]
+  wire  iocell_spi_1_dq_0_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_0_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_0_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_0_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_1_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_1_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_1_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_1_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_2_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_2_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_2_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_2_oe; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_3_i; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_3_ie; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_3_o; // @[IOCell.scala 110:22]
+  wire  iocell_spi_1_dq_3_oe; // @[IOCell.scala 110:22]
+  wire  iocell_uart_0_rxd_pad; // @[IOCell.scala 111:23]
+  wire  iocell_uart_0_rxd_i; // @[IOCell.scala 111:23]
+  wire  iocell_uart_0_rxd_ie; // @[IOCell.scala 111:23]
+  wire  iocell_uart_0_txd_pad; // @[IOCell.scala 112:24]
+  wire  iocell_uart_0_txd_o; // @[IOCell.scala 112:24]
+  wire  iocell_uart_0_txd_oe; // @[IOCell.scala 112:24]
+  wire  iocell_uart_1_rxd_pad; // @[IOCell.scala 111:23]
+  wire  iocell_uart_1_rxd_i; // @[IOCell.scala 111:23]
+  wire  iocell_uart_1_rxd_ie; // @[IOCell.scala 111:23]
+  wire  iocell_uart_1_txd_pad; // @[IOCell.scala 112:24]
+  wire  iocell_uart_1_txd_o; // @[IOCell.scala 112:24]
+  wire  iocell_uart_1_txd_oe; // @[IOCell.scala 112:24]
+  wire  _debug_reset_syncd_WIRE = debug_reset_syncd_debug_reset_sync_io_q; // @[ShiftReg.scala 48:{24,24}]
+  wire  _T = ~_debug_reset_syncd_WIRE; // @[Periphery.scala 297:38]
+  wire  bundleIn_0_clock = system_auto_subsystem_cbus_fixedClockNode_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  reg  clock_en; // @[Periphery.scala 299:29]
+  wire [7:0] serial_tl_bits_out_bits_lo_lo = {iocell_serial_tl_bits_out_bits_7_pad,iocell_serial_tl_bits_out_bits_6_pad,
+    iocell_serial_tl_bits_out_bits_5_pad,iocell_serial_tl_bits_out_bits_4_pad,iocell_serial_tl_bits_out_bits_3_pad,
+    iocell_serial_tl_bits_out_bits_2_pad,iocell_serial_tl_bits_out_bits_1_pad,iocell_serial_tl_bits_out_bits_pad}; // @[Cat.scala 31:58]
+  wire [15:0] serial_tl_bits_out_bits_lo = {iocell_serial_tl_bits_out_bits_15_pad,iocell_serial_tl_bits_out_bits_14_pad,
+    iocell_serial_tl_bits_out_bits_13_pad,iocell_serial_tl_bits_out_bits_12_pad,iocell_serial_tl_bits_out_bits_11_pad,
+    iocell_serial_tl_bits_out_bits_10_pad,iocell_serial_tl_bits_out_bits_9_pad,iocell_serial_tl_bits_out_bits_8_pad,
+    serial_tl_bits_out_bits_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] serial_tl_bits_out_bits_hi_lo = {iocell_serial_tl_bits_out_bits_23_pad,
+    iocell_serial_tl_bits_out_bits_22_pad,iocell_serial_tl_bits_out_bits_21_pad,iocell_serial_tl_bits_out_bits_20_pad,
+    iocell_serial_tl_bits_out_bits_19_pad,iocell_serial_tl_bits_out_bits_18_pad,iocell_serial_tl_bits_out_bits_17_pad,
+    iocell_serial_tl_bits_out_bits_16_pad}; // @[Cat.scala 31:58]
+  wire [15:0] serial_tl_bits_out_bits_hi = {iocell_serial_tl_bits_out_bits_31_pad,iocell_serial_tl_bits_out_bits_30_pad,
+    iocell_serial_tl_bits_out_bits_29_pad,iocell_serial_tl_bits_out_bits_28_pad,iocell_serial_tl_bits_out_bits_27_pad,
+    iocell_serial_tl_bits_out_bits_26_pad,iocell_serial_tl_bits_out_bits_25_pad,iocell_serial_tl_bits_out_bits_24_pad,
+    serial_tl_bits_out_bits_hi_lo}; // @[Cat.scala 31:58]
+  wire [7:0] system_serial_tl_bits_in_bits_lo_lo = {iocell_serial_tl_bits_in_bits_7_i,iocell_serial_tl_bits_in_bits_6_i,
+    iocell_serial_tl_bits_in_bits_5_i,iocell_serial_tl_bits_in_bits_4_i,iocell_serial_tl_bits_in_bits_3_i,
+    iocell_serial_tl_bits_in_bits_2_i,iocell_serial_tl_bits_in_bits_1_i,iocell_serial_tl_bits_in_bits_i}; // @[Cat.scala 31:58]
+  wire [15:0] system_serial_tl_bits_in_bits_lo = {iocell_serial_tl_bits_in_bits_15_i,iocell_serial_tl_bits_in_bits_14_i,
+    iocell_serial_tl_bits_in_bits_13_i,iocell_serial_tl_bits_in_bits_12_i,iocell_serial_tl_bits_in_bits_11_i,
+    iocell_serial_tl_bits_in_bits_10_i,iocell_serial_tl_bits_in_bits_9_i,iocell_serial_tl_bits_in_bits_8_i,
+    system_serial_tl_bits_in_bits_lo_lo}; // @[Cat.scala 31:58]
+  wire [7:0] system_serial_tl_bits_in_bits_hi_lo = {iocell_serial_tl_bits_in_bits_23_i,
+    iocell_serial_tl_bits_in_bits_22_i,iocell_serial_tl_bits_in_bits_21_i,iocell_serial_tl_bits_in_bits_20_i,
+    iocell_serial_tl_bits_in_bits_19_i,iocell_serial_tl_bits_in_bits_18_i,iocell_serial_tl_bits_in_bits_17_i,
+    iocell_serial_tl_bits_in_bits_16_i}; // @[Cat.scala 31:58]
+  wire [15:0] system_serial_tl_bits_in_bits_hi = {iocell_serial_tl_bits_in_bits_31_i,iocell_serial_tl_bits_in_bits_30_i,
+    iocell_serial_tl_bits_in_bits_29_i,iocell_serial_tl_bits_in_bits_28_i,iocell_serial_tl_bits_in_bits_27_i,
+    iocell_serial_tl_bits_in_bits_26_i,iocell_serial_tl_bits_in_bits_25_i,iocell_serial_tl_bits_in_bits_24_i,
+    system_serial_tl_bits_in_bits_hi_lo}; // @[Cat.scala 31:58]
+
+  // for input and output only pins is safe to have output enabled
+  
+     assign io_oeb[18:15] = 1'b0;	// JTAG
+     assign io_oeb[12:11] = 1'b0;	// custom_boot and reset
+     assign io_oeb[20:19] = 1'b0;	// SPI0
+     assign io_oeb[26:25] = 1'b0;	// SPI1
+     assign io_oeb[14:13] = 1'b0;	// UART0
+     assign io_oeb[33:32] = 1'b0;	// UART1
+  
+     // for bidirectional pins assign OEB from IOCELL signal
+     assign io_oeb[34] = !iocell_gpio_0_0_oe;
+     assign io_oeb[35] = !iocell_gpio_0_1_oe;
+     assign io_oeb[36] = !iocell_gpio_0_2_oe;
+     assign io_oeb[37] = !iocell_gpio_0_3_oe;
+  
+     assign io_oeb[21] = !iocell_spi_0_dq_0_oe;
+     assign io_oeb[22] = !iocell_spi_0_dq_1_oe;
+     assign io_oeb[23] = !iocell_spi_0_dq_2_oe;
+     assign io_oeb[24] = !iocell_spi_0_dq_3_oe;
+  
+     assign io_oeb[27] = !iocell_spi_1_dq_0_oe;
+     assign io_oeb[28] = !iocell_spi_1_dq_1_oe;
+     assign io_oeb[29] = !iocell_spi_1_dq_2_oe;
+     assign io_oeb[30] = !iocell_spi_1_dq_3_oe;
+
+  DigitalTop system ( // @[ChipTop.scala 28:35]
+    .clock(system_clock),
+    .reset(system_reset),
+    .auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_clock(
+      system_auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_clock),
+    .auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_reset(
+      system_auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_reset),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock),
+    .auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset(
+      system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset),
+    .auto_subsystem_cbus_fixedClockNode_out_clock(system_auto_subsystem_cbus_fixedClockNode_out_clock),
+    .auto_subsystem_cbus_fixedClockNode_out_reset(system_auto_subsystem_cbus_fixedClockNode_out_reset),
+    .custom_boot(system_custom_boot),
+    .serial_tl_clock(system_serial_tl_clock),
+    .serial_tl_bits_in_ready(system_serial_tl_bits_in_ready),
+    .serial_tl_bits_in_valid(system_serial_tl_bits_in_valid),
+    .serial_tl_bits_in_bits(system_serial_tl_bits_in_bits),
+    .serial_tl_bits_out_ready(system_serial_tl_bits_out_ready),
+    .serial_tl_bits_out_valid(system_serial_tl_bits_out_valid),
+    .serial_tl_bits_out_bits(system_serial_tl_bits_out_bits),
+    .resetctrl_hartIsInReset_0(system_resetctrl_hartIsInReset_0),
+    .debug_clock(system_debug_clock),
+    .debug_reset(system_debug_reset),
+    .debug_systemjtag_jtag_TCK(system_debug_systemjtag_jtag_TCK),
+    .debug_systemjtag_jtag_TMS(system_debug_systemjtag_jtag_TMS),
+    .debug_systemjtag_jtag_TDI(system_debug_systemjtag_jtag_TDI),
+    .debug_systemjtag_jtag_TDO_data(system_debug_systemjtag_jtag_TDO_data),
+    .debug_systemjtag_reset(system_debug_systemjtag_reset),
+    .debug_dmactive(system_debug_dmactive),
+    .debug_dmactiveAck(system_debug_dmactiveAck),
+    .uart_0_txd(system_uart_0_txd),
+    .uart_0_rxd(system_uart_0_rxd),
+    .uart_1_txd(system_uart_1_txd),
+    .uart_1_rxd(system_uart_1_rxd),
+    .gpio_0_pins_0_i_ival(system_gpio_0_pins_0_i_ival),
+    .gpio_0_pins_0_o_oval(system_gpio_0_pins_0_o_oval),
+    .gpio_0_pins_0_o_oe(system_gpio_0_pins_0_o_oe),
+    .gpio_0_pins_0_o_ie(system_gpio_0_pins_0_o_ie),
+    .gpio_0_pins_1_i_ival(system_gpio_0_pins_1_i_ival),
+    .gpio_0_pins_1_o_oval(system_gpio_0_pins_1_o_oval),
+    .gpio_0_pins_1_o_oe(system_gpio_0_pins_1_o_oe),
+    .gpio_0_pins_1_o_ie(system_gpio_0_pins_1_o_ie),
+    .gpio_0_pins_2_i_ival(system_gpio_0_pins_2_i_ival),
+    .gpio_0_pins_2_o_oval(system_gpio_0_pins_2_o_oval),
+    .gpio_0_pins_2_o_oe(system_gpio_0_pins_2_o_oe),
+    .gpio_0_pins_2_o_ie(system_gpio_0_pins_2_o_ie),
+    .gpio_0_pins_3_i_ival(system_gpio_0_pins_3_i_ival),
+    .gpio_0_pins_3_o_oval(system_gpio_0_pins_3_o_oval),
+    .gpio_0_pins_3_o_oe(system_gpio_0_pins_3_o_oe),
+    .gpio_0_pins_3_o_ie(system_gpio_0_pins_3_o_ie),
+    .qspi_0_sck(system_qspi_0_sck),
+    .qspi_0_dq_0_i(system_qspi_0_dq_0_i),
+    .qspi_0_dq_0_o(system_qspi_0_dq_0_o),
+    .qspi_0_dq_0_oe(system_qspi_0_dq_0_oe),
+    .qspi_0_dq_1_i(system_qspi_0_dq_1_i),
+    .qspi_0_dq_1_o(system_qspi_0_dq_1_o),
+    .qspi_0_dq_1_oe(system_qspi_0_dq_1_oe),
+    .qspi_0_dq_2_i(system_qspi_0_dq_2_i),
+    .qspi_0_dq_2_o(system_qspi_0_dq_2_o),
+    .qspi_0_dq_2_oe(system_qspi_0_dq_2_oe),
+    .qspi_0_dq_3_i(system_qspi_0_dq_3_i),
+    .qspi_0_dq_3_o(system_qspi_0_dq_3_o),
+    .qspi_0_dq_3_oe(system_qspi_0_dq_3_oe),
+    .qspi_0_cs_0(system_qspi_0_cs_0),
+    .qspi_1_sck(system_qspi_1_sck),
+    .qspi_1_dq_0_i(system_qspi_1_dq_0_i),
+    .qspi_1_dq_0_o(system_qspi_1_dq_0_o),
+    .qspi_1_dq_0_oe(system_qspi_1_dq_0_oe),
+    .qspi_1_dq_1_i(system_qspi_1_dq_1_i),
+    .qspi_1_dq_1_o(system_qspi_1_dq_1_o),
+    .qspi_1_dq_1_oe(system_qspi_1_dq_1_oe),
+    .qspi_1_dq_2_i(system_qspi_1_dq_2_i),
+    .qspi_1_dq_2_o(system_qspi_1_dq_2_o),
+    .qspi_1_dq_2_oe(system_qspi_1_dq_2_oe),
+    .qspi_1_dq_3_i(system_qspi_1_dq_3_i),
+    .qspi_1_dq_3_o(system_qspi_1_dq_3_o),
+    .qspi_1_dq_3_oe(system_qspi_1_dq_3_oe),
+    .qspi_1_cs_0(system_qspi_1_cs_0)
+  );
+  ClockGroup_4 chipyardPRCI ( // @[ClockGroup.scala 32:69]
+    .auto_in_member_chipyardPRCI_implicit_clock_clock(chipyardPRCI_auto_in_member_chipyardPRCI_implicit_clock_clock),
+    .auto_in_member_chipyardPRCI_implicit_clock_reset(chipyardPRCI_auto_in_member_chipyardPRCI_implicit_clock_reset),
+    .auto_out_clock(chipyardPRCI_auto_out_clock),
+    .auto_out_reset(chipyardPRCI_auto_out_reset)
+  );
+  DividerOnlyClockGenerator dividerOnlyClockGen ( // @[IOBinders.scala 409:41]
+    .auto_divider_only_clock_gen_in_clock(dividerOnlyClockGen_auto_divider_only_clock_gen_in_clock),
+    .auto_divider_only_clock_gen_in_reset(dividerOnlyClockGen_auto_divider_only_clock_gen_in_reset),
+    .auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_clock(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_clock),
+    .auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_reset(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_reset),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_clock(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_clock),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_reset(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_reset),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_clock(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_clock),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_reset(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_reset),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_clock(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_clock),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_reset(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_reset),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_clock(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_clock),
+    .auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_reset(
+      dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_reset)
+  );
+  ResetCatchAndSync_d3 system_debug_systemjtag_reset_catcher ( // @[ResetCatchAndSync.scala 39:28]
+    .clock(system_debug_systemjtag_reset_catcher_clock),
+    .reset(system_debug_systemjtag_reset_catcher_reset),
+    .io_sync_reset(system_debug_systemjtag_reset_catcher_io_sync_reset)
+  );
+  AsyncResetSynchronizerShiftReg_w1_d3_i0 debug_reset_syncd_debug_reset_sync ( // @[ShiftReg.scala 45:23]
+    .clock(debug_reset_syncd_debug_reset_sync_clock),
+    .reset(debug_reset_syncd_debug_reset_sync_reset),
+    .io_d(debug_reset_syncd_debug_reset_sync_io_d),
+    .io_q(debug_reset_syncd_debug_reset_sync_io_q)
+  );
+  ResetSynchronizerShiftReg_w1_d3_i0 dmactiveAck_dmactiveAck ( // @[ShiftReg.scala 45:23]
+    .clock(dmactiveAck_dmactiveAck_clock),
+    .reset(dmactiveAck_dmactiveAck_reset),
+    .io_d(dmactiveAck_dmactiveAck_io_d),
+    .io_q(dmactiveAck_dmactiveAck_io_q)
+  );
+  EICG_wrapper gated_clock_debug_clock_gate ( // @[ClockGate.scala 24:20]
+    .in(gated_clock_debug_clock_gate_in),
+    .test_en(gated_clock_debug_clock_gate_test_en),
+    .en(gated_clock_debug_clock_gate_en),
+    .out(gated_clock_debug_clock_gate_out)
+  );
+  GenericDigitalOutIOCell iocell_jtag_TDO ( // @[IOCell.scala 112:24]
+    .pad(iocell_jtag_TDO_pad),
+    .o(iocell_jtag_TDO_o),
+    .oe(iocell_jtag_TDO_oe)
+  );
+  GenericDigitalInIOCell iocell_jtag_TDI ( // @[IOCell.scala 111:23]
+    .pad(iocell_jtag_TDI_pad),
+    .i(iocell_jtag_TDI_i),
+    .ie(iocell_jtag_TDI_ie)
+  );
+  GenericDigitalInIOCell iocell_jtag_TMS ( // @[IOCell.scala 111:23]
+    .pad(iocell_jtag_TMS_pad),
+    .i(iocell_jtag_TMS_i),
+    .ie(iocell_jtag_TMS_ie)
+  );
+  GenericDigitalInIOCell iocell_jtag_TCK ( // @[IOCell.scala 111:23]
+    .pad(iocell_jtag_TCK_pad),
+    .i(iocell_jtag_TCK_i),
+    .ie(iocell_jtag_TCK_ie)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_pad),
+    .o(iocell_serial_tl_bits_out_bits_o),
+    .oe(iocell_serial_tl_bits_out_bits_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_1 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_1_pad),
+    .o(iocell_serial_tl_bits_out_bits_1_o),
+    .oe(iocell_serial_tl_bits_out_bits_1_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_2 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_2_pad),
+    .o(iocell_serial_tl_bits_out_bits_2_o),
+    .oe(iocell_serial_tl_bits_out_bits_2_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_3 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_3_pad),
+    .o(iocell_serial_tl_bits_out_bits_3_o),
+    .oe(iocell_serial_tl_bits_out_bits_3_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_4 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_4_pad),
+    .o(iocell_serial_tl_bits_out_bits_4_o),
+    .oe(iocell_serial_tl_bits_out_bits_4_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_5 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_5_pad),
+    .o(iocell_serial_tl_bits_out_bits_5_o),
+    .oe(iocell_serial_tl_bits_out_bits_5_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_6 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_6_pad),
+    .o(iocell_serial_tl_bits_out_bits_6_o),
+    .oe(iocell_serial_tl_bits_out_bits_6_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_7 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_7_pad),
+    .o(iocell_serial_tl_bits_out_bits_7_o),
+    .oe(iocell_serial_tl_bits_out_bits_7_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_8 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_8_pad),
+    .o(iocell_serial_tl_bits_out_bits_8_o),
+    .oe(iocell_serial_tl_bits_out_bits_8_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_9 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_9_pad),
+    .o(iocell_serial_tl_bits_out_bits_9_o),
+    .oe(iocell_serial_tl_bits_out_bits_9_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_10 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_10_pad),
+    .o(iocell_serial_tl_bits_out_bits_10_o),
+    .oe(iocell_serial_tl_bits_out_bits_10_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_11 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_11_pad),
+    .o(iocell_serial_tl_bits_out_bits_11_o),
+    .oe(iocell_serial_tl_bits_out_bits_11_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_12 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_12_pad),
+    .o(iocell_serial_tl_bits_out_bits_12_o),
+    .oe(iocell_serial_tl_bits_out_bits_12_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_13 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_13_pad),
+    .o(iocell_serial_tl_bits_out_bits_13_o),
+    .oe(iocell_serial_tl_bits_out_bits_13_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_14 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_14_pad),
+    .o(iocell_serial_tl_bits_out_bits_14_o),
+    .oe(iocell_serial_tl_bits_out_bits_14_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_15 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_15_pad),
+    .o(iocell_serial_tl_bits_out_bits_15_o),
+    .oe(iocell_serial_tl_bits_out_bits_15_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_16 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_16_pad),
+    .o(iocell_serial_tl_bits_out_bits_16_o),
+    .oe(iocell_serial_tl_bits_out_bits_16_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_17 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_17_pad),
+    .o(iocell_serial_tl_bits_out_bits_17_o),
+    .oe(iocell_serial_tl_bits_out_bits_17_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_18 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_18_pad),
+    .o(iocell_serial_tl_bits_out_bits_18_o),
+    .oe(iocell_serial_tl_bits_out_bits_18_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_19 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_19_pad),
+    .o(iocell_serial_tl_bits_out_bits_19_o),
+    .oe(iocell_serial_tl_bits_out_bits_19_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_20 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_20_pad),
+    .o(iocell_serial_tl_bits_out_bits_20_o),
+    .oe(iocell_serial_tl_bits_out_bits_20_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_21 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_21_pad),
+    .o(iocell_serial_tl_bits_out_bits_21_o),
+    .oe(iocell_serial_tl_bits_out_bits_21_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_22 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_22_pad),
+    .o(iocell_serial_tl_bits_out_bits_22_o),
+    .oe(iocell_serial_tl_bits_out_bits_22_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_23 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_23_pad),
+    .o(iocell_serial_tl_bits_out_bits_23_o),
+    .oe(iocell_serial_tl_bits_out_bits_23_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_24 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_24_pad),
+    .o(iocell_serial_tl_bits_out_bits_24_o),
+    .oe(iocell_serial_tl_bits_out_bits_24_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_25 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_25_pad),
+    .o(iocell_serial_tl_bits_out_bits_25_o),
+    .oe(iocell_serial_tl_bits_out_bits_25_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_26 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_26_pad),
+    .o(iocell_serial_tl_bits_out_bits_26_o),
+    .oe(iocell_serial_tl_bits_out_bits_26_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_27 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_27_pad),
+    .o(iocell_serial_tl_bits_out_bits_27_o),
+    .oe(iocell_serial_tl_bits_out_bits_27_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_28 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_28_pad),
+    .o(iocell_serial_tl_bits_out_bits_28_o),
+    .oe(iocell_serial_tl_bits_out_bits_28_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_29 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_29_pad),
+    .o(iocell_serial_tl_bits_out_bits_29_o),
+    .oe(iocell_serial_tl_bits_out_bits_29_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_30 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_30_pad),
+    .o(iocell_serial_tl_bits_out_bits_30_o),
+    .oe(iocell_serial_tl_bits_out_bits_30_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_bits_31 ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_bits_31_pad),
+    .o(iocell_serial_tl_bits_out_bits_31_o),
+    .oe(iocell_serial_tl_bits_out_bits_31_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_out_valid ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_out_valid_pad),
+    .o(iocell_serial_tl_bits_out_valid_o),
+    .oe(iocell_serial_tl_bits_out_valid_oe)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_out_ready ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_out_ready_pad),
+    .i(iocell_serial_tl_bits_out_ready_i),
+    .ie(iocell_serial_tl_bits_out_ready_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_pad),
+    .i(iocell_serial_tl_bits_in_bits_i),
+    .ie(iocell_serial_tl_bits_in_bits_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_1 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_1_pad),
+    .i(iocell_serial_tl_bits_in_bits_1_i),
+    .ie(iocell_serial_tl_bits_in_bits_1_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_2 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_2_pad),
+    .i(iocell_serial_tl_bits_in_bits_2_i),
+    .ie(iocell_serial_tl_bits_in_bits_2_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_3 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_3_pad),
+    .i(iocell_serial_tl_bits_in_bits_3_i),
+    .ie(iocell_serial_tl_bits_in_bits_3_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_4 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_4_pad),
+    .i(iocell_serial_tl_bits_in_bits_4_i),
+    .ie(iocell_serial_tl_bits_in_bits_4_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_5 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_5_pad),
+    .i(iocell_serial_tl_bits_in_bits_5_i),
+    .ie(iocell_serial_tl_bits_in_bits_5_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_6 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_6_pad),
+    .i(iocell_serial_tl_bits_in_bits_6_i),
+    .ie(iocell_serial_tl_bits_in_bits_6_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_7 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_7_pad),
+    .i(iocell_serial_tl_bits_in_bits_7_i),
+    .ie(iocell_serial_tl_bits_in_bits_7_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_8 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_8_pad),
+    .i(iocell_serial_tl_bits_in_bits_8_i),
+    .ie(iocell_serial_tl_bits_in_bits_8_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_9 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_9_pad),
+    .i(iocell_serial_tl_bits_in_bits_9_i),
+    .ie(iocell_serial_tl_bits_in_bits_9_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_10 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_10_pad),
+    .i(iocell_serial_tl_bits_in_bits_10_i),
+    .ie(iocell_serial_tl_bits_in_bits_10_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_11 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_11_pad),
+    .i(iocell_serial_tl_bits_in_bits_11_i),
+    .ie(iocell_serial_tl_bits_in_bits_11_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_12 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_12_pad),
+    .i(iocell_serial_tl_bits_in_bits_12_i),
+    .ie(iocell_serial_tl_bits_in_bits_12_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_13 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_13_pad),
+    .i(iocell_serial_tl_bits_in_bits_13_i),
+    .ie(iocell_serial_tl_bits_in_bits_13_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_14 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_14_pad),
+    .i(iocell_serial_tl_bits_in_bits_14_i),
+    .ie(iocell_serial_tl_bits_in_bits_14_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_15 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_15_pad),
+    .i(iocell_serial_tl_bits_in_bits_15_i),
+    .ie(iocell_serial_tl_bits_in_bits_15_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_16 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_16_pad),
+    .i(iocell_serial_tl_bits_in_bits_16_i),
+    .ie(iocell_serial_tl_bits_in_bits_16_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_17 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_17_pad),
+    .i(iocell_serial_tl_bits_in_bits_17_i),
+    .ie(iocell_serial_tl_bits_in_bits_17_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_18 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_18_pad),
+    .i(iocell_serial_tl_bits_in_bits_18_i),
+    .ie(iocell_serial_tl_bits_in_bits_18_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_19 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_19_pad),
+    .i(iocell_serial_tl_bits_in_bits_19_i),
+    .ie(iocell_serial_tl_bits_in_bits_19_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_20 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_20_pad),
+    .i(iocell_serial_tl_bits_in_bits_20_i),
+    .ie(iocell_serial_tl_bits_in_bits_20_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_21 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_21_pad),
+    .i(iocell_serial_tl_bits_in_bits_21_i),
+    .ie(iocell_serial_tl_bits_in_bits_21_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_22 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_22_pad),
+    .i(iocell_serial_tl_bits_in_bits_22_i),
+    .ie(iocell_serial_tl_bits_in_bits_22_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_23 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_23_pad),
+    .i(iocell_serial_tl_bits_in_bits_23_i),
+    .ie(iocell_serial_tl_bits_in_bits_23_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_24 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_24_pad),
+    .i(iocell_serial_tl_bits_in_bits_24_i),
+    .ie(iocell_serial_tl_bits_in_bits_24_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_25 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_25_pad),
+    .i(iocell_serial_tl_bits_in_bits_25_i),
+    .ie(iocell_serial_tl_bits_in_bits_25_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_26 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_26_pad),
+    .i(iocell_serial_tl_bits_in_bits_26_i),
+    .ie(iocell_serial_tl_bits_in_bits_26_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_27 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_27_pad),
+    .i(iocell_serial_tl_bits_in_bits_27_i),
+    .ie(iocell_serial_tl_bits_in_bits_27_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_28 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_28_pad),
+    .i(iocell_serial_tl_bits_in_bits_28_i),
+    .ie(iocell_serial_tl_bits_in_bits_28_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_29 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_29_pad),
+    .i(iocell_serial_tl_bits_in_bits_29_i),
+    .ie(iocell_serial_tl_bits_in_bits_29_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_30 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_30_pad),
+    .i(iocell_serial_tl_bits_in_bits_30_i),
+    .ie(iocell_serial_tl_bits_in_bits_30_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_bits_31 ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_bits_31_pad),
+    .i(iocell_serial_tl_bits_in_bits_31_i),
+    .ie(iocell_serial_tl_bits_in_bits_31_ie)
+  );
+  GenericDigitalInIOCell iocell_serial_tl_bits_in_valid ( // @[IOCell.scala 111:23]
+    .pad(iocell_serial_tl_bits_in_valid_pad),
+    .i(iocell_serial_tl_bits_in_valid_i),
+    .ie(iocell_serial_tl_bits_in_valid_ie)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_bits_in_ready ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_bits_in_ready_pad),
+    .o(iocell_serial_tl_bits_in_ready_o),
+    .oe(iocell_serial_tl_bits_in_ready_oe)
+  );
+  GenericDigitalOutIOCell iocell_serial_tl_clock ( // @[IOCell.scala 112:24]
+    .pad(iocell_serial_tl_clock_pad),
+    .o(iocell_serial_tl_clock_o),
+    .oe(iocell_serial_tl_clock_oe)
+  );
+  GenericDigitalInIOCell iocell_custom_boot ( // @[IOCell.scala 111:23]
+    .pad(iocell_custom_boot_pad),
+    .i(iocell_custom_boot_i),
+    .ie(iocell_custom_boot_ie)
+  );
+  GenericDigitalInIOCell iocell_clock_clock ( // @[IOCell.scala 111:23]
+    .pad(iocell_clock_clock_pad),
+    .i(iocell_clock_clock_i),
+    .ie(iocell_clock_clock_ie)
+  );
+  GenericDigitalInIOCell iocell_reset ( // @[IOCell.scala 111:23]
+    .pad(iocell_reset_pad),
+    .i(iocell_reset_i),
+    .ie(iocell_reset_ie)
+  );
+  GenericDigitalGPIOCell iocell_gpio_0_0 ( // @[IOCell.scala 110:22]
+    .pad(gpio_0_0),
+    .i(iocell_gpio_0_0_i),
+    .ie(iocell_gpio_0_0_ie),
+    .o(iocell_gpio_0_0_o),
+    .oe(iocell_gpio_0_0_oe)
+  );
+  GenericDigitalGPIOCell iocell_gpio_0_1 ( // @[IOCell.scala 110:22]
+    .pad(gpio_0_1),
+    .i(iocell_gpio_0_1_i),
+    .ie(iocell_gpio_0_1_ie),
+    .o(iocell_gpio_0_1_o),
+    .oe(iocell_gpio_0_1_oe)
+  );
+  GenericDigitalGPIOCell iocell_gpio_0_2 ( // @[IOCell.scala 110:22]
+    .pad(gpio_0_2),
+    .i(iocell_gpio_0_2_i),
+    .ie(iocell_gpio_0_2_ie),
+    .o(iocell_gpio_0_2_o),
+    .oe(iocell_gpio_0_2_oe)
+  );
+  GenericDigitalGPIOCell iocell_gpio_0_3 ( // @[IOCell.scala 110:22]
+    .pad(gpio_0_3),
+    .i(iocell_gpio_0_3_i),
+    .ie(iocell_gpio_0_3_ie),
+    .o(iocell_gpio_0_3_o),
+    .oe(iocell_gpio_0_3_oe)
+  );
+  GenericDigitalOutIOCell iocell_spi_0_sck ( // @[IOCell.scala 112:24]
+    .pad(iocell_spi_0_sck_pad),
+    .o(iocell_spi_0_sck_o),
+    .oe(iocell_spi_0_sck_oe)
+  );
+  GenericDigitalOutIOCell iocell_spi_0_cs_0 ( // @[IOCell.scala 112:24]
+    .pad(iocell_spi_0_cs_0_pad),
+    .o(iocell_spi_0_cs_0_o),
+    .oe(iocell_spi_0_cs_0_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_0_dq_0 ( // @[IOCell.scala 110:22]
+    .pad(spi_0_dq_0),
+    .i(iocell_spi_0_dq_0_i),
+    .ie(iocell_spi_0_dq_0_ie),
+    .o(iocell_spi_0_dq_0_o),
+    .oe(iocell_spi_0_dq_0_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_0_dq_1 ( // @[IOCell.scala 110:22]
+    .pad(spi_0_dq_1),
+    .i(iocell_spi_0_dq_1_i),
+    .ie(iocell_spi_0_dq_1_ie),
+    .o(iocell_spi_0_dq_1_o),
+    .oe(iocell_spi_0_dq_1_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_0_dq_2 ( // @[IOCell.scala 110:22]
+    .pad(spi_0_dq_2),
+    .i(iocell_spi_0_dq_2_i),
+    .ie(iocell_spi_0_dq_2_ie),
+    .o(iocell_spi_0_dq_2_o),
+    .oe(iocell_spi_0_dq_2_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_0_dq_3 ( // @[IOCell.scala 110:22]
+    .pad(spi_0_dq_3),
+    .i(iocell_spi_0_dq_3_i),
+    .ie(iocell_spi_0_dq_3_ie),
+    .o(iocell_spi_0_dq_3_o),
+    .oe(iocell_spi_0_dq_3_oe)
+  );
+  GenericDigitalOutIOCell iocell_spi_1_sck ( // @[IOCell.scala 112:24]
+    .pad(iocell_spi_1_sck_pad),
+    .o(iocell_spi_1_sck_o),
+    .oe(iocell_spi_1_sck_oe)
+  );
+  GenericDigitalOutIOCell iocell_spi_1_cs_0 ( // @[IOCell.scala 112:24]
+    .pad(iocell_spi_1_cs_0_pad),
+    .o(iocell_spi_1_cs_0_o),
+    .oe(iocell_spi_1_cs_0_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_1_dq_0 ( // @[IOCell.scala 110:22]
+    .pad(spi_1_dq_0),
+    .i(iocell_spi_1_dq_0_i),
+    .ie(iocell_spi_1_dq_0_ie),
+    .o(iocell_spi_1_dq_0_o),
+    .oe(iocell_spi_1_dq_0_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_1_dq_1 ( // @[IOCell.scala 110:22]
+    .pad(spi_1_dq_1),
+    .i(iocell_spi_1_dq_1_i),
+    .ie(iocell_spi_1_dq_1_ie),
+    .o(iocell_spi_1_dq_1_o),
+    .oe(iocell_spi_1_dq_1_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_1_dq_2 ( // @[IOCell.scala 110:22]
+    .pad(spi_1_dq_2),
+    .i(iocell_spi_1_dq_2_i),
+    .ie(iocell_spi_1_dq_2_ie),
+    .o(iocell_spi_1_dq_2_o),
+    .oe(iocell_spi_1_dq_2_oe)
+  );
+  GenericDigitalGPIOCell iocell_spi_1_dq_3 ( // @[IOCell.scala 110:22]
+    .pad(spi_1_dq_3),
+    .i(iocell_spi_1_dq_3_i),
+    .ie(iocell_spi_1_dq_3_ie),
+    .o(iocell_spi_1_dq_3_o),
+    .oe(iocell_spi_1_dq_3_oe)
+  );
+  GenericDigitalInIOCell iocell_uart_0_rxd ( // @[IOCell.scala 111:23]
+    .pad(iocell_uart_0_rxd_pad),
+    .i(iocell_uart_0_rxd_i),
+    .ie(iocell_uart_0_rxd_ie)
+  );
+  GenericDigitalOutIOCell iocell_uart_0_txd ( // @[IOCell.scala 112:24]
+    .pad(iocell_uart_0_txd_pad),
+    .o(iocell_uart_0_txd_o),
+    .oe(iocell_uart_0_txd_oe)
+  );
+  GenericDigitalInIOCell iocell_uart_1_rxd ( // @[IOCell.scala 111:23]
+    .pad(iocell_uart_1_rxd_pad),
+    .i(iocell_uart_1_rxd_i),
+    .ie(iocell_uart_1_rxd_ie)
+  );
+  GenericDigitalOutIOCell iocell_uart_1_txd ( // @[IOCell.scala 112:24]
+    .pad(iocell_uart_1_txd_pad),
+    .o(iocell_uart_1_txd_o),
+    .oe(iocell_uart_1_txd_oe)
+  );
+  assign jtag_TDO = iocell_jtag_TDO_pad; // @[IOCell.scala 239:25]
+  assign serial_tl_clock = iocell_serial_tl_clock_pad; // @[IOCell.scala 179:61]
+  assign serial_tl_bits_in_ready = iocell_serial_tl_bits_in_ready_pad; // @[IOCell.scala 239:25]
+  assign serial_tl_bits_out_valid = iocell_serial_tl_bits_out_valid_pad; // @[IOCell.scala 239:25]
+  assign serial_tl_bits_out_bits = {serial_tl_bits_out_bits_hi,serial_tl_bits_out_bits_lo}; // @[Cat.scala 31:58]
+  assign spi_0_sck = iocell_spi_0_sck_pad; // @[IOCell.scala 239:25]
+  assign spi_0_cs_0 = iocell_spi_0_cs_0_pad; // @[IOCell.scala 239:25]
+  assign spi_1_sck = iocell_spi_1_sck_pad; // @[IOCell.scala 239:25]
+  assign spi_1_cs_0 = iocell_spi_1_cs_0_pad; // @[IOCell.scala 239:25]
+  assign uart_0_txd = iocell_uart_0_txd_pad; // @[IOCell.scala 239:25]
+  assign uart_1_txd = iocell_uart_1_txd_pad; // @[IOCell.scala 239:25]
+  assign system_clock = chipyardPRCI_auto_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign system_reset = chipyardPRCI_auto_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_clock =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_clock; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_implicit_clock_reset =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_implicit_clock_reset; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_clock =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_clock; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_cbus_0_reset =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_cbus_0_reset; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_clock =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_clock; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_fbus_0_reset =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_fbus_0_reset; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_clock =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_clock; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_pbus_0_reset =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_pbus_0_reset; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_clock =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_clock; // @[LazyModule.scala 296:16]
+  assign system_auto_chipyardPRCI_chipyardPRCI_clock_in_member_allClocks_subsystem_sbus_0_reset =
+    dividerOnlyClockGen_auto_divider_only_clock_gen_out_member_allClocks_subsystem_sbus_0_reset; // @[LazyModule.scala 296:16]
+  assign system_custom_boot = iocell_custom_boot_i; // @[IOCell.scala 224:26]
+  assign system_serial_tl_bits_in_valid = iocell_serial_tl_bits_in_valid_i; // @[IOCell.scala 224:26]
+  assign system_serial_tl_bits_in_bits = {system_serial_tl_bits_in_bits_hi,system_serial_tl_bits_in_bits_lo}; // @[Cat.scala 31:58]
+  assign system_serial_tl_bits_out_ready = iocell_serial_tl_bits_out_ready_i; // @[IOCell.scala 224:26]
+  assign system_resetctrl_hartIsInReset_0 = system_auto_subsystem_cbus_fixedClockNode_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign system_debug_clock = gated_clock_debug_clock_gate_out; // @[Periphery.scala 303:19]
+  assign system_debug_reset = ~_debug_reset_syncd_WIRE; // @[Periphery.scala 291:40]
+  assign system_debug_systemjtag_jtag_TCK = iocell_jtag_TCK_i; // @[IOCell.scala 179:61]
+  assign system_debug_systemjtag_jtag_TMS = iocell_jtag_TMS_i; // @[IOBinders.scala 249:31 IOCell.scala 224:26]
+  assign system_debug_systemjtag_jtag_TDI = iocell_jtag_TDI_i; // @[IOBinders.scala 249:31 IOCell.scala 224:26]
+  assign system_debug_systemjtag_reset = system_debug_systemjtag_reset_catcher_io_sync_reset; // @[IOBinders.scala 235:21]
+  assign system_debug_dmactiveAck = dmactiveAck_dmactiveAck_io_q; // @[ShiftReg.scala 48:{24,24}]
+  assign system_uart_0_rxd = iocell_uart_0_rxd_i; // @[IOCell.scala 224:26]
+  assign system_uart_1_rxd = iocell_uart_1_rxd_i; // @[IOCell.scala 224:26]
+  assign system_gpio_0_pins_0_i_ival = iocell_gpio_0_0_i; // @[IOBinders.scala 142:20]
+  assign system_gpio_0_pins_1_i_ival = iocell_gpio_0_1_i; // @[IOBinders.scala 142:20]
+  assign system_gpio_0_pins_2_i_ival = iocell_gpio_0_2_i; // @[IOBinders.scala 142:20]
+  assign system_gpio_0_pins_3_i_ival = iocell_gpio_0_3_i; // @[IOBinders.scala 142:20]
+  assign system_qspi_0_dq_0_i = iocell_spi_0_dq_0_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_0_dq_1_i = iocell_spi_0_dq_1_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_0_dq_2_i = iocell_spi_0_dq_2_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_0_dq_3_i = iocell_spi_0_dq_3_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_1_dq_0_i = iocell_spi_1_dq_0_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_1_dq_1_i = iocell_spi_1_dq_1_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_1_dq_2_i = iocell_spi_1_dq_2_i; // @[IOBinders.scala 181:15]
+  assign system_qspi_1_dq_3_i = iocell_spi_1_dq_3_i; // @[IOBinders.scala 181:15]
+  assign chipyardPRCI_auto_in_member_chipyardPRCI_implicit_clock_clock =
+    system_auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_clock; // @[LazyModule.scala 298:16]
+  assign chipyardPRCI_auto_in_member_chipyardPRCI_implicit_clock_reset =
+    system_auto_chipyardPRCI_out_member_chipyardPRCI_implicit_clock_reset; // @[LazyModule.scala 298:16]
+  assign dividerOnlyClockGen_auto_divider_only_clock_gen_in_clock = iocell_clock_clock_i; // @[IOCell.scala 179:61]
+  assign dividerOnlyClockGen_auto_divider_only_clock_gen_in_reset = iocell_reset_i; // @[IOCell.scala 180:64]
+  assign system_debug_systemjtag_reset_catcher_clock = system_debug_systemjtag_jtag_TCK;
+  assign system_debug_systemjtag_reset_catcher_reset = system_auto_subsystem_cbus_fixedClockNode_out_reset; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign debug_reset_syncd_debug_reset_sync_clock = system_auto_subsystem_cbus_fixedClockNode_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign debug_reset_syncd_debug_reset_sync_reset = system_debug_systemjtag_reset; // @[Periphery.scala 282:38]
+  assign debug_reset_syncd_debug_reset_sync_io_d = 1'h1; // @[ShiftReg.scala 47:16]
+  assign dmactiveAck_dmactiveAck_clock = system_auto_subsystem_cbus_fixedClockNode_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign dmactiveAck_dmactiveAck_reset = ~_debug_reset_syncd_WIRE; // @[Periphery.scala 297:38]
+  assign dmactiveAck_dmactiveAck_io_d = system_debug_dmactive; // @[ShiftReg.scala 47:16]
+  assign gated_clock_debug_clock_gate_in = system_auto_subsystem_cbus_fixedClockNode_out_clock; // @[Nodes.scala 1210:84 LazyModule.scala 296:16]
+  assign gated_clock_debug_clock_gate_test_en = 1'h0; // @[ClockGate.scala 27:19]
+  assign gated_clock_debug_clock_gate_en = clock_en; // @[ClockGate.scala 28:14]
+  assign iocell_jtag_TDO_o = system_debug_systemjtag_jtag_TDO_data; // @[IOBinders.scala 249:31 253:25]
+  assign iocell_jtag_TDO_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_jtag_TDI_pad = jtag_TDI; // @[IOCell.scala 213:39]
+  assign iocell_jtag_TDI_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_jtag_TMS_pad = jtag_TMS; // @[IOCell.scala 213:39]
+  assign iocell_jtag_TMS_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_jtag_TCK_pad = jtag_TCK; // @[IOCell.scala 179:44]
+  assign iocell_jtag_TCK_ie = 1'h1; // @[IOCell.scala 164:24]
+  assign iocell_serial_tl_bits_out_bits_o = system_serial_tl_bits_out_bits[0]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_1_o = system_serial_tl_bits_out_bits[1]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_1_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_2_o = system_serial_tl_bits_out_bits[2]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_2_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_3_o = system_serial_tl_bits_out_bits[3]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_3_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_4_o = system_serial_tl_bits_out_bits[4]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_4_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_5_o = system_serial_tl_bits_out_bits[5]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_5_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_6_o = system_serial_tl_bits_out_bits[6]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_6_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_7_o = system_serial_tl_bits_out_bits[7]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_7_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_8_o = system_serial_tl_bits_out_bits[8]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_8_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_9_o = system_serial_tl_bits_out_bits[9]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_9_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_10_o = system_serial_tl_bits_out_bits[10]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_10_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_11_o = system_serial_tl_bits_out_bits[11]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_11_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_12_o = system_serial_tl_bits_out_bits[12]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_12_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_13_o = system_serial_tl_bits_out_bits[13]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_13_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_14_o = system_serial_tl_bits_out_bits[14]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_14_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_15_o = system_serial_tl_bits_out_bits[15]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_15_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_16_o = system_serial_tl_bits_out_bits[16]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_16_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_17_o = system_serial_tl_bits_out_bits[17]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_17_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_18_o = system_serial_tl_bits_out_bits[18]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_18_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_19_o = system_serial_tl_bits_out_bits[19]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_19_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_20_o = system_serial_tl_bits_out_bits[20]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_20_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_21_o = system_serial_tl_bits_out_bits[21]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_21_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_22_o = system_serial_tl_bits_out_bits[22]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_22_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_23_o = system_serial_tl_bits_out_bits[23]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_23_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_24_o = system_serial_tl_bits_out_bits[24]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_24_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_25_o = system_serial_tl_bits_out_bits[25]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_25_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_26_o = system_serial_tl_bits_out_bits[26]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_26_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_27_o = system_serial_tl_bits_out_bits[27]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_27_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_28_o = system_serial_tl_bits_out_bits[28]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_28_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_29_o = system_serial_tl_bits_out_bits[29]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_29_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_30_o = system_serial_tl_bits_out_bits[30]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_30_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_bits_31_o = system_serial_tl_bits_out_bits[31]; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_bits_31_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_valid_o = system_serial_tl_bits_out_valid; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_out_valid_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_bits_out_ready_pad = serial_tl_bits_out_ready; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_out_ready_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_pad = serial_tl_bits_in_bits[0]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_1_pad = serial_tl_bits_in_bits[1]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_1_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_2_pad = serial_tl_bits_in_bits[2]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_2_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_3_pad = serial_tl_bits_in_bits[3]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_3_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_4_pad = serial_tl_bits_in_bits[4]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_4_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_5_pad = serial_tl_bits_in_bits[5]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_5_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_6_pad = serial_tl_bits_in_bits[6]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_6_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_7_pad = serial_tl_bits_in_bits[7]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_7_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_8_pad = serial_tl_bits_in_bits[8]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_8_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_9_pad = serial_tl_bits_in_bits[9]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_9_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_10_pad = serial_tl_bits_in_bits[10]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_10_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_11_pad = serial_tl_bits_in_bits[11]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_11_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_12_pad = serial_tl_bits_in_bits[12]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_12_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_13_pad = serial_tl_bits_in_bits[13]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_13_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_14_pad = serial_tl_bits_in_bits[14]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_14_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_15_pad = serial_tl_bits_in_bits[15]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_15_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_16_pad = serial_tl_bits_in_bits[16]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_16_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_17_pad = serial_tl_bits_in_bits[17]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_17_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_18_pad = serial_tl_bits_in_bits[18]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_18_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_19_pad = serial_tl_bits_in_bits[19]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_19_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_20_pad = serial_tl_bits_in_bits[20]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_20_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_21_pad = serial_tl_bits_in_bits[21]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_21_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_22_pad = serial_tl_bits_in_bits[22]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_22_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_23_pad = serial_tl_bits_in_bits[23]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_23_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_24_pad = serial_tl_bits_in_bits[24]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_24_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_25_pad = serial_tl_bits_in_bits[25]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_25_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_26_pad = serial_tl_bits_in_bits[26]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_26_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_27_pad = serial_tl_bits_in_bits[27]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_27_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_28_pad = serial_tl_bits_in_bits[28]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_28_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_29_pad = serial_tl_bits_in_bits[29]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_29_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_30_pad = serial_tl_bits_in_bits[30]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_30_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_bits_31_pad = serial_tl_bits_in_bits[31]; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_bits_31_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_valid_pad = serial_tl_bits_in_valid; // @[IOCell.scala 213:39]
+  assign iocell_serial_tl_bits_in_valid_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_serial_tl_bits_in_ready_o = system_serial_tl_bits_in_ready; // @[IOCell.scala 228:40]
+  assign iocell_serial_tl_bits_in_ready_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_serial_tl_clock_o = system_serial_tl_clock; // @[IOCell.scala 179:44]
+  assign iocell_serial_tl_clock_oe = 1'h1; // @[IOCell.scala 172:24]
+  assign iocell_custom_boot_pad = custom_boot; // @[IOCell.scala 213:39]
+  assign iocell_custom_boot_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_clock_clock_pad = clock_clock; // @[IOCell.scala 179:44]
+  assign iocell_clock_clock_ie = 1'h1; // @[IOCell.scala 164:24]
+  assign iocell_reset_pad = reset; // @[IOCell.scala 180:54]
+  assign iocell_reset_ie = 1'h1; // @[IOCell.scala 164:24]
+  assign iocell_gpio_0_0_ie = system_gpio_0_pins_0_o_ie; // @[IOBinders.scala 141:22]
+  assign iocell_gpio_0_0_o = system_gpio_0_pins_0_o_oval; // @[IOBinders.scala 139:21]
+  assign iocell_gpio_0_0_oe = system_gpio_0_pins_0_o_oe; // @[IOBinders.scala 140:22]
+  assign iocell_gpio_0_1_ie = system_gpio_0_pins_1_o_ie; // @[IOBinders.scala 141:22]
+  assign iocell_gpio_0_1_o = system_gpio_0_pins_1_o_oval; // @[IOBinders.scala 139:21]
+  assign iocell_gpio_0_1_oe = system_gpio_0_pins_1_o_oe; // @[IOBinders.scala 140:22]
+  assign iocell_gpio_0_2_ie = system_gpio_0_pins_2_o_ie; // @[IOBinders.scala 141:22]
+  assign iocell_gpio_0_2_o = system_gpio_0_pins_2_o_oval; // @[IOBinders.scala 139:21]
+  assign iocell_gpio_0_2_oe = system_gpio_0_pins_2_o_oe; // @[IOBinders.scala 140:22]
+  assign iocell_gpio_0_3_ie = system_gpio_0_pins_3_o_ie; // @[IOBinders.scala 141:22]
+  assign iocell_gpio_0_3_o = system_gpio_0_pins_3_o_oval; // @[IOBinders.scala 139:21]
+  assign iocell_gpio_0_3_oe = system_gpio_0_pins_3_o_oe; // @[IOBinders.scala 140:22]
+  assign iocell_spi_0_sck_o = system_qspi_0_sck; // @[IOCell.scala 228:40]
+  assign iocell_spi_0_sck_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_spi_0_cs_0_o = system_qspi_0_cs_0; // @[IOCell.scala 228:40]
+  assign iocell_spi_0_cs_0_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_spi_0_dq_0_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_0_dq_0_o = system_qspi_0_dq_0_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_0_dq_0_oe = system_qspi_0_dq_0_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_0_dq_1_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_0_dq_1_o = system_qspi_0_dq_1_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_0_dq_1_oe = system_qspi_0_dq_1_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_0_dq_2_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_0_dq_2_o = system_qspi_0_dq_2_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_0_dq_2_oe = system_qspi_0_dq_2_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_0_dq_3_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_0_dq_3_o = system_qspi_0_dq_3_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_0_dq_3_oe = system_qspi_0_dq_3_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_1_sck_o = system_qspi_1_sck; // @[IOCell.scala 228:40]
+  assign iocell_spi_1_sck_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_spi_1_cs_0_o = system_qspi_1_cs_0; // @[IOCell.scala 228:40]
+  assign iocell_spi_1_cs_0_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_spi_1_dq_0_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_1_dq_0_o = system_qspi_1_dq_0_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_1_dq_0_oe = system_qspi_1_dq_0_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_1_dq_1_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_1_dq_1_o = system_qspi_1_dq_1_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_1_dq_1_oe = system_qspi_1_dq_1_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_1_dq_2_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_1_dq_2_o = system_qspi_1_dq_2_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_1_dq_2_oe = system_qspi_1_dq_2_oe; // @[IOBinders.scala 179:22]
+  assign iocell_spi_1_dq_3_ie = 1'h1; // @[IOBinders.scala 180:22]
+  assign iocell_spi_1_dq_3_o = system_qspi_1_dq_3_o; // @[IOBinders.scala 178:21]
+  assign iocell_spi_1_dq_3_oe = system_qspi_1_dq_3_oe; // @[IOBinders.scala 179:22]
+  assign iocell_uart_0_rxd_pad = uart_0_rxd; // @[IOCell.scala 213:39]
+  assign iocell_uart_0_rxd_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_uart_0_txd_o = system_uart_0_txd; // @[IOCell.scala 228:40]
+  assign iocell_uart_0_txd_oe = 1'h1; // @[IOCell.scala 235:30]
+  assign iocell_uart_1_rxd_pad = uart_1_rxd; // @[IOCell.scala 213:39]
+  assign iocell_uart_1_rxd_ie = 1'h1; // @[IOCell.scala 220:30]
+  assign iocell_uart_1_txd_o = system_uart_1_txd; // @[IOCell.scala 228:40]
+  assign iocell_uart_1_txd_oe = 1'h1; // @[IOCell.scala 235:30]
+  always @(posedge bundleIn_0_clock or posedge _T) begin
+    if (_T) begin // @[ShiftReg.scala 48:{24,24}]
+      clock_en <= 1'h1;
+    end else begin
+      clock_en <= dmactiveAck_dmactiveAck_io_q;
+    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}};
+  clock_en = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+  if (_T) begin
+    clock_en = 1'h1;
+  end
+  `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+endmodule
+module data_arrays_0(
+  input  [10: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,
+  input  [7:0]  RW0_wdata_4,
+  input  [7:0]  RW0_wdata_5,
+  input  [7:0]  RW0_wdata_6,
+  input  [7:0]  RW0_wdata_7,
+  output [7:0]  RW0_rdata_0,
+  output [7:0]  RW0_rdata_1,
+  output [7:0]  RW0_rdata_2,
+  output [7:0]  RW0_rdata_3,
+  output [7:0]  RW0_rdata_4,
+  output [7:0]  RW0_rdata_5,
+  output [7:0]  RW0_rdata_6,
+  output [7:0]  RW0_rdata_7,
+  input         RW0_wmask_0,
+  input         RW0_wmask_1,
+  input         RW0_wmask_2,
+  input         RW0_wmask_3,
+  input         RW0_wmask_4,
+  input         RW0_wmask_5,
+  input         RW0_wmask_6,
+  input         RW0_wmask_7
+);
+  wire [10: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 [63:0] data_arrays_0_ext_RW0_wdata;
+  wire [63:0] data_arrays_0_ext_RW0_rdata;
+  wire [7:0] data_arrays_0_ext_RW0_wmask;
+  wire [31:0] _GEN_4 = {RW0_wdata_7,RW0_wdata_6,RW0_wdata_5,RW0_wdata_4};
+  wire [31:0] _GEN_5 = {RW0_wdata_3,RW0_wdata_2,RW0_wdata_1,RW0_wdata_0};
+  wire [3:0] _GEN_10 = {RW0_wmask_7,RW0_wmask_6,RW0_wmask_5,RW0_wmask_4};
+  wire [3:0] _GEN_11 = {RW0_wmask_3,RW0_wmask_2,RW0_wmask_1,RW0_wmask_0};
+  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)
+  );
+  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 RW0_rdata_4 = data_arrays_0_ext_RW0_rdata[39:32];
+  assign RW0_rdata_5 = data_arrays_0_ext_RW0_rdata[47:40];
+  assign RW0_rdata_6 = data_arrays_0_ext_RW0_rdata[55:48];
+  assign RW0_rdata_7 = data_arrays_0_ext_RW0_rdata[63:56];
+  assign data_arrays_0_ext_RW0_wmode = RW0_wmode;
+  assign data_arrays_0_ext_RW0_wdata = {_GEN_4,_GEN_5};
+  assign data_arrays_0_ext_RW0_wmask = {_GEN_10,_GEN_11};
+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
+);
+  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  tag_array_ext_RW0_wmask;
+  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),
+    .RW0_wmask(tag_array_ext_RW0_wmask)
+  );
+  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;
+  assign tag_array_ext_RW0_wmask = 1'h1;
+endmodule
+module data_arrays_0_0(
+  input  [8:0]  RW0_addr,
+  input         RW0_en,
+  input         RW0_clk,
+  input         RW0_wmode,
+  input  [31:0] RW0_wdata_0,
+  output [31:0] RW0_rdata_0
+);
+  wire [8: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 [31:0] data_arrays_0_0_ext_RW0_wdata;
+  wire [31:0] data_arrays_0_0_ext_RW0_rdata;
+  wire  data_arrays_0_0_ext_RW0_wmask;
+  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)
+  );
+  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;
+  assign data_arrays_0_0_ext_RW0_wmode = RW0_wmode;
+  assign data_arrays_0_0_ext_RW0_wdata = RW0_wdata_0;
+  assign data_arrays_0_0_ext_RW0_wmask = 1'h1;
+endmodule
diff --git a/verilog/rtl/rocketAlpha/plusarg_reader.v b/verilog/rtl/rocketAlpha/plusarg_reader.v
new file mode 100644
index 0000000..c1e0311
--- /dev/null
+++ b/verilog/rtl/rocketAlpha/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/user_project_wrapper.v b/verilog/rtl/user_project_wrapper.v
index 5ee1cee..78a23cc 100644
--- a/verilog/rtl/user_project_wrapper.v
+++ b/verilog/rtl/user_project_wrapper.v
@@ -81,43 +81,42 @@
 /*--------------------------------------*/
 /* User project is instantiated  here   */
 /*--------------------------------------*/
-
-user_proj_example mprj (
+user_project_wrapper1 Inst_user_project_wrapper1 (
 `ifdef USE_POWER_PINS
-	.vccd1(vccd1),	// User area 1 1.8V power
-	.vssd1(vssd1),	// User area 1 digital ground
+    .vdda1(vdda1), 	// User area 1 3.3V supply
+    .vdda2(vdda2), 	// User area 2 3.3V supply
+    .vssa1(vssa1), 	// User area 1 analog ground
+    .vssa2(vssa2), 	// User area 2 analog ground
+    .vccd1(vccd1), 	// User area 1 1.8V supply
+    .vccd2(vccd2), 	// User area 2 1.8v supply
+    .vssd1(vssd1), 	// User area 1 digital ground
+    .vssd2(vssd2), 	// User area 2 digital ground
 `endif
-
     .wb_clk_i(wb_clk_i),
     .wb_rst_i(wb_rst_i),
-
-    // MGMT SoC Wishbone Slave
-
-    .wbs_cyc_i(wbs_cyc_i),
     .wbs_stb_i(wbs_stb_i),
+    .wbs_cyc_i(wbs_cyc_i),
     .wbs_we_i(wbs_we_i),
     .wbs_sel_i(wbs_sel_i),
-    .wbs_adr_i(wbs_adr_i),
     .wbs_dat_i(wbs_dat_i),
+    .wbs_adr_i(wbs_adr_i),
     .wbs_ack_o(wbs_ack_o),
     .wbs_dat_o(wbs_dat_o),
-
-    // Logic Analyzer
-
     .la_data_in(la_data_in),
     .la_data_out(la_data_out),
-    .la_oenb (la_oenb),
-
-    // IO Pads
-
-    .io_in (io_in),
+    .la_oenb(la_oenb),
+    .io_in(io_in),
     .io_out(io_out),
     .io_oeb(io_oeb),
-
-    // IRQ
-    .irq(user_irq)
+    .analog_io(analog_io),
+    .user_clock2(user_clock2),
+    .user_irq(user_irq)
 );
 
+`ifndef VERBOSE
+  `define VERBOSE 0
+`endif
+
 endmodule	// user_project_wrapper
 
 `default_nettype wire
diff --git a/verilog/rtl/user_project_wrapper1.v b/verilog/rtl/user_project_wrapper1.v
new file mode 100644
index 0000000..542c451
--- /dev/null
+++ b/verilog/rtl/user_project_wrapper1.v
@@ -0,0 +1,182 @@
+// 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
+/*
+ *-------------------------------------------------------------
+ *
+ * user_project_wrapper
+ *
+ * This wrapper enumerates all of the pins available to the
+ * user for the user project.
+ *
+ * An example user project is provided in this wrapper.  The
+ * example should be removed and replaced with the actual
+ * user project.
+ *
+ *-------------------------------------------------------------
+ */
+
+module user_project_wrapper1 #(
+    parameter BITS = 32
+) (
+`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
+);
+    wire gpio_0_0;
+    wire gpio_0_1;
+    wire gpio_0_2;
+    wire gpio_0_3;
+
+    wire spi_0_dq_0;
+    wire spi_0_dq_1;
+    wire spi_0_dq_2;
+    wire spi_0_dq_3;
+
+    wire spi_1_dq_0;
+    wire spi_1_dq_1;
+    wire spi_1_dq_2;
+    wire spi_1_dq_3;
+
+    assign io_in[34]  = gpio_0_0;
+    assign io_out[34] = gpio_0_0;
+    assign io_in[35]  = gpio_0_1;
+    assign io_out[35] = gpio_0_1;
+    assign io_in[36]  = gpio_0_2;
+    assign io_out[36] = gpio_0_2;
+    assign io_in[37]  = gpio_0_3;
+    assign io_out[37] = gpio_0_3;
+    
+    assign io_in[21]  = spi_0_dq_0;
+    assign io_out[21] = spi_0_dq_0;
+    assign io_in[22]  = spi_0_dq_1;
+    assign io_out[22] = spi_0_dq_1;
+    assign io_in[23]  = spi_0_dq_2;
+    assign io_out[23] = spi_0_dq_2;
+    assign io_in[24]  = spi_0_dq_3;
+    assign io_out[24] = spi_0_dq_3;
+
+    assign io_in[27]  = spi_1_dq_0;
+    assign io_out[27] = spi_1_dq_0;
+    assign io_in[28]  = spi_1_dq_1;
+    assign io_out[28] = spi_1_dq_1;
+    assign io_in[29]  = spi_1_dq_2;
+    assign io_out[29] = spi_1_dq_2;
+    assign io_in[30]  = spi_1_dq_3;
+    assign io_out[30] = spi_1_dq_3;
+/*--------------------------------------*/
+/* User project is instantiated  here   */
+/*--------------------------------------*/
+ChipTop Inst_ChipTop (
+`ifdef USE_POWER_PINS
+	.vccd1(vccd1),	// User area 1 1.8V power
+	.vssd1(vssd1),	// User area 1 digital ground
+`endif
+  .io_oeb(io_oeb),
+  .jtag_TCK(io_in[15]),              // In
+  .jtag_TMS(io_in[16]),             // In
+  .jtag_TDI(io_in[17]),             // In
+  .jtag_TDO(io_out[18]),            // Out
+
+  // Unconnected or connect to LA pins
+  .serial_tl_clock(la_data_out[1]),            // Out
+  .serial_tl_bits_in_ready(la_data_out[2]),    // Out
+  .serial_tl_bits_in_valid(la_data_in[2]),     // In
+  .serial_tl_bits_in_bits(la_data_in[41:10]),  // In 32bits
+  .serial_tl_bits_out_ready(la_data_in[3]),    // In
+  .serial_tl_bits_out_valid(la_data_out[3]),   // Out
+  .serial_tl_bits_out_bits(la_data_out[81:50]), // Out 32bits
+
+  .custom_boot(io_in[11]),      // In
+  .clock_clock(wb_clk_i),       // In
+  .reset(io_in[12]),            // In
+
+  .gpio_0_0(gpio_0_0),         // InOut
+  .gpio_0_1(gpio_0_1),         // InOut
+  .gpio_0_2(gpio_0_2),         // InOut
+  .gpio_0_3(gpio_0_3),         // InOut
+
+  // SPI 0 - FLASH
+  .spi_0_sck(io_out[19]),       // Out
+  .spi_0_cs_0(io_out[20]),      // Out
+  .spi_0_dq_0(spi_0_dq_0),      // InOut
+  .spi_0_dq_1(spi_0_dq_1),      // InOut
+  .spi_0_dq_2(spi_0_dq_2),      // InOut
+  .spi_0_dq_3(spi_0_dq_3),      // InOut
+
+   // SPI 1 - FLASH
+  .spi_1_sck(io_out[25]),       // Out
+  .spi_1_cs_0(io_out[26]),      // Out
+  .spi_1_dq_0(spi_1_dq_0),      // InOut
+  .spi_1_dq_1(spi_1_dq_1),      // InOut
+  .spi_1_dq_2(spi_1_dq_2),      // InOut
+  .spi_1_dq_3(spi_1_dq_3),      // InOut
+
+  .uart_0_txd(io_out[13]),      // Out
+  .uart_0_rxd(io_in[14]),        // In
+
+  .uart_1_txd(io_out[32]),      // Out
+  .uart_1_rxd(io_in[33])        // In
+);
+
+`ifndef VERBOSE
+  `define VERBOSE 0
+`endif
+
+endmodule	// user_project_wrapper
+
+`default_nettype wire
