From cfa7e2d2abb62da5a69955befe90296d834b6e7a Mon Sep 17 00:00:00 2001 From: "TOKISAKIX\\21168" <2116884726@qq.com> Date: Mon, 11 Dec 2023 23:21:26 +0800 Subject: [PATCH] update lab4 --- lab4/.gitignore | 1 - lab4/verilog/z710/Top.anno.json | 435 + lab4/verilog/z710/Top.fir | 3692 +++++++++ lab4/verilog/z710/Top.v | 6985 +++++++++++++++++ lab4/vivado/z710/riscv-z710.tcl | 1267 --- .../z710/riscv-z710/design_1_wrapper.xsa | Bin 0 -> 346664 bytes .../sources_1/bd/design_1/design_1.bd | 459 ++ .../bd/design_1/hdl/design_1_wrapper.v | 116 + lab4/vivado/z710/riscv-z710/riscv-z710.xpr | 376 + 9 files changed, 12063 insertions(+), 1268 deletions(-) create mode 100644 lab4/verilog/z710/Top.anno.json create mode 100644 lab4/verilog/z710/Top.fir create mode 100644 lab4/verilog/z710/Top.v delete mode 100644 lab4/vivado/z710/riscv-z710.tcl create mode 100644 lab4/vivado/z710/riscv-z710/design_1_wrapper.xsa create mode 100644 lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/design_1.bd create mode 100644 lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v create mode 100644 lab4/vivado/z710/riscv-z710/riscv-z710.xpr diff --git a/lab4/.gitignore b/lab4/.gitignore index cc5fac1..946816b 100644 --- a/lab4/.gitignore +++ b/lab4/.gitignore @@ -354,6 +354,5 @@ verilog/verilator/* vivado/basys3/riscv-basys3 vivado/pynq/riscv-pynq vivado/pynq/NA -vivado/z710/riscv-z710 .vscode .metals diff --git a/lab4/verilog/z710/Top.anno.json b/lab4/verilog/z710/Top.anno.json new file mode 100644 index 0000000..f626f67 --- /dev/null +++ b/lab4/verilog/z710/Top.anno.json @@ -0,0 +1,435 @@ +[ + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteSlave", + "duplicate":"~Top|Top/uart:Uart/slave:AXI4LiteSlave", + "index":0.0 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/if2id:IF2ID/instruction:PipelineRegister", + "index":0.12 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_1", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/if2id:IF2ID/instruction_address:PipelineRegister_1", + "index":0.13333333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_2", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/if2id:IF2ID/interrupt_flag:PipelineRegister_2", + "index":0.14666666666666667 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_3", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/instruction:PipelineRegister", + "index":0.18666666666666668 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_4", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/instruction_address:PipelineRegister_1", + "index":0.2 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_5", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/regs_write_enable:PipelineRegister_5", + "index":0.21333333333333335 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_6", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/regs_write_address:PipelineRegister_6", + "index":0.22666666666666666 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_7", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/regs_write_source:PipelineRegister_7", + "index":0.24 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_8", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/reg1_data:PipelineRegister_2", + "index":0.25333333333333335 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_9", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/reg2_data:PipelineRegister_2", + "index":0.26666666666666666 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_10", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/immediate:PipelineRegister_2", + "index":0.28 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_11", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/aluop1_source:PipelineRegister_5", + "index":0.29333333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_12", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/aluop2_source:PipelineRegister_5", + "index":0.30666666666666664 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_13", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/csr_write_enable:PipelineRegister_5", + "index":0.32 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_15", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/memory_read_enable:PipelineRegister_5", + "index":0.3466666666666667 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_16", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/memory_write_enable:PipelineRegister_5", + "index":0.36 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_17", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/id2ex:ID2EX/csr_read_data:PipelineRegister_2", + "index":0.37333333333333335 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_18", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/regs_write_enable:PipelineRegister_5", + "index":0.44 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_19", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/regs_write_source:PipelineRegister_7", + "index":0.4533333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_20", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/regs_write_address:PipelineRegister_6", + "index":0.4666666666666667 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_21", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/instruction_address:PipelineRegister_2", + "index":0.48 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_22", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/instruction:PipelineRegister_2", + "index":0.49333333333333335 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_23", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/reg1_data:PipelineRegister_2", + "index":0.5066666666666667 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_24", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/reg2_data:PipelineRegister_2", + "index":0.52 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_25", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/alu_result:PipelineRegister_2", + "index":0.5333333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_26", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/memory_read_enable:PipelineRegister_5", + "index":0.5466666666666666 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_27", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/memory_write_enable:PipelineRegister_5", + "index":0.56 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_28", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/ex2mem:EX2MEM/csr_read_data:PipelineRegister_2", + "index":0.5733333333333334 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_29", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/alu_result:PipelineRegister_2", + "index":0.6133333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_30", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/memory_read_data:PipelineRegister_2", + "index":0.6266666666666667 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_31", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/regs_write_enable:PipelineRegister_5", + "index":0.64 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_32", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/regs_write_source:PipelineRegister_7", + "index":0.6533333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_33", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/regs_write_address:PipelineRegister_6", + "index":0.6666666666666666 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_34", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/instruction_address:PipelineRegister_2", + "index":0.68 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|PipelineRegister_35", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/mem2wb:MEM2WB/csr_read_data:PipelineRegister_2", + "index":0.6933333333333334 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteMaster", + "duplicate":"~Top|Top/cpu:CPU_1/cpu:CPU/axi4_master:AXI4LiteMaster", + "index":0.7733333333333333 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteSlave_1", + "duplicate":"~Top|Top/mem:Memory/slave:AXI4LiteSlave_1", + "index":0.8266666666666667 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteSlave_2", + "duplicate":"~Top|Top/timer:Timer/slave:AXI4LiteSlave", + "index":0.8533333333333334 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteSlave_3", + "duplicate":"~Top|Top/dummy:DummySlave/slave:AXI4LiteSlave_1", + "index":0.88 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteMaster_1", + "duplicate":"~Top|Top/bus_switch:BusSwitch/dummy:DummyMaster/master:AXI4LiteMaster", + "index":0.92 + }, + { + "class":"firrtl.transforms.DedupedResult", + "original":"~Top|AXI4LiteMaster_2", + "duplicate":"~Top|Top/rom_loader:ROMLoader/master:AXI4LiteMaster", + "index":0.9733333333333334 + }, + { + "class":"firrtl.EmitCircuitAnnotation", + "emitter":"firrtl.VerilogEmitter" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.AXI4LiteMaster.state", + "enumTypeName":"bus.AXI4LiteStates" + }, + { + "class":"firrtl.annotations.MemorySynthInit$" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.AXI4LiteSlave_1.state", + "enumTypeName":"bus.AXI4LiteStates" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.AXI4LiteSlave.state", + "enumTypeName":"bus.AXI4LiteStates" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumDefAnnotation", + "typeName":"riscv.core.fivestage.MemoryAccessStates", + "definition":{ + "Idle":0, + "Read":1, + "Write":2, + "ReadWrite":3 + } + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.MemoryAccess.mem_access_state", + "enumTypeName":"riscv.core.fivestage.MemoryAccessStates" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_33", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_31", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_29", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_27", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_25", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_23", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_21", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_17", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_15", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_13", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_11", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_9", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_7", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_5", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_3", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl._io_alu_funct_T_1", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALUControl.io_alu_funct", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumDefAnnotation", + "typeName":"riscv.core.fivestage.ALUFunctions", + "definition":{ + "sll":3, + "sra":9, + "or":6, + "xor":5, + "slt":4, + "sub":2, + "add":1, + "sltu":10, + "and":7, + "srl":8, + "zero":0 + } + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.ALU.io_func", + "enumTypeName":"riscv.core.fivestage.ALUFunctions" + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumDefAnnotation", + "typeName":"bus.AXI4LiteStates", + "definition":{ + "ReadData":2, + "WriteAddr":3, + "WriteResp":5, + "Idle":0, + "WriteData":4, + "ReadAddr":1 + } + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumDefAnnotation", + "typeName":"board.z710.BootStates", + "definition":{ + "Init":0, + "Loading":1, + "BusWait":2, + "Finished":3 + } + }, + { + "class":"chisel3.experimental.EnumAnnotations$EnumComponentAnnotation", + "target":"Top.Top.boot_state", + "enumTypeName":"board.z710.BootStates" + }, + { + "class":"firrtl.transforms.BlackBoxTargetDirAnno", + "targetDir":"verilog/z710" + }, + { + "class":"firrtl.annotations.MemoryFileInlineAnnotation", + "target":"~Top|InstructionROM>mem", + "filename":"/root/yatcpu/lab4/verilog/say_goodbye.asmbin.txt", + "hexOrBinary":"h" + } +] \ No newline at end of file diff --git a/lab4/verilog/z710/Top.fir b/lab4/verilog/z710/Top.fir new file mode 100644 index 0000000..16f8585 --- /dev/null +++ b/lab4/verilog/z710/Top.fir @@ -0,0 +1,3692 @@ +FIRRTL version 1.2.0 +circuit Top : + module AXI4LiteSlave : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<8>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<8>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { read : UInt<1>, write : UInt<1>, flip read_data : UInt<32>, flip read_valid : UInt<1>, write_data : UInt<32>, write_strobe : UInt<1>[4], address : UInt<8>}} @[src/main/scala/bus/AXI4Lite.scala 121:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 125:22] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 126:21] + io.bundle.address <= addr @[src/main/scala/bus/AXI4Lite.scala 127:21] + reg read : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 128:21] + io.bundle.read <= read @[src/main/scala/bus/AXI4Lite.scala 129:18] + reg write : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 130:22] + io.bundle.write <= write @[src/main/scala/bus/AXI4Lite.scala 131:19] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 132:27] + io.bundle.write_data <= write_data @[src/main/scala/bus/AXI4Lite.scala 133:24] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 134:29] + io.bundle.write_strobe <= write_strobe @[src/main/scala/bus/AXI4Lite.scala 135:26] + reg ARREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 137:24] + io.channels.read_address_channel.ARREADY <= ARREADY @[src/main/scala/bus/AXI4Lite.scala 138:44] + reg RVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 139:23] + io.channels.read_data_channel.RVALID <= RVALID @[src/main/scala/bus/AXI4Lite.scala 140:40] + reg RRESP : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 141:22] + io.channels.read_data_channel.RRESP <= RRESP @[src/main/scala/bus/AXI4Lite.scala 142:39] + io.channels.read_data_channel.RDATA <= io.bundle.read_data @[src/main/scala/bus/AXI4Lite.scala 144:39] + reg AWREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 146:24] + io.channels.write_address_channel.AWREADY <= AWREADY @[src/main/scala/bus/AXI4Lite.scala 147:45] + reg WREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 148:23] + io.channels.write_data_channel.WREADY <= WREADY @[src/main/scala/bus/AXI4Lite.scala 149:41] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 150:14] + reg BVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 151:23] + io.channels.write_response_channel.BVALID <= BVALID @[src/main/scala/bus/AXI4Lite.scala 152:45] + wire BRESP : UInt<1> @[src/main/scala/bus/AXI4Lite.scala 153:23] + BRESP <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 153:23] + io.channels.write_response_channel.BRESP <= BRESP @[src/main/scala/bus/AXI4Lite.scala 154:44] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + read <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 158:12] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 159:13] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 160:14] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 161:14] + when io.channels.write_address_channel.AWVALID : @[src/main/scala/bus/AXI4Lite.scala 162:55] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 163:15] + else : + when io.channels.read_address_channel.ARVALID : @[src/main/scala/bus/AXI4Lite.scala 164:60] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 165:15] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + ARREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 169:15] + node _T_6 = and(io.channels.read_address_channel.ARVALID, ARREADY) @[src/main/scala/bus/AXI4Lite.scala 170:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 170:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 171:15] + addr <= io.channels.read_address_channel.ARADDR @[src/main/scala/bus/AXI4Lite.scala 172:14] + read <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 173:14] + ARREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 174:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= io.bundle.read_valid @[src/main/scala/bus/AXI4Lite.scala 178:14] + node _T_10 = and(io.channels.read_data_channel.RREADY, RVALID) @[src/main/scala/bus/AXI4Lite.scala 179:49] + when _T_10 : @[src/main/scala/bus/AXI4Lite.scala 179:60] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 180:15] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 181:16] + else : + node _T_11 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_12 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_13 = eq(_T_11, _T_12) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_13 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + AWREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 185:15] + node _T_14 = and(io.channels.write_address_channel.AWVALID, AWREADY) @[src/main/scala/bus/AXI4Lite.scala 186:54] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 186:66] + addr <= io.channels.write_address_channel.AWADDR @[src/main/scala/bus/AXI4Lite.scala 187:14] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 188:15] + AWREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 189:17] + else : + node _T_15 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_16 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_17 = eq(_T_15, _T_16) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_17 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 193:14] + node _T_18 = and(io.channels.write_data_channel.WVALID, WREADY) @[src/main/scala/bus/AXI4Lite.scala 194:50] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 194:61] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 195:15] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 196:20] + node _T_19 = bits(io.channels.write_data_channel.WSTRB, 0, 0) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_20 = bits(io.channels.write_data_channel.WSTRB, 1, 1) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_21 = bits(io.channels.write_data_channel.WSTRB, 2, 2) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_22 = bits(io.channels.write_data_channel.WSTRB, 3, 3) @[src/main/scala/bus/AXI4Lite.scala 197:62] + write_strobe[0] <= _T_19 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[1] <= _T_20 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[2] <= _T_21 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[3] <= _T_22 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 198:15] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 199:16] + else : + node _T_23 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_24 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_25 = eq(_T_23, _T_24) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_25 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 203:14] + BVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 204:14] + node _T_26 = and(io.channels.write_response_channel.BREADY, BVALID) @[src/main/scala/bus/AXI4Lite.scala 205:54] + when _T_26 : @[src/main/scala/bus/AXI4Lite.scala 205:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 206:15] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 207:15] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 208:16] + + + module Tx : + input clock : Clock + input reset : Reset + output io : { txd : UInt<1>, flip channel : { flip ready : UInt<1>, valid : UInt<1>, bits : UInt<8>}} @[src/main/scala/peripheral/UART.scala 32:14] + + reg shiftReg : UInt, clock with : + reset => (reset, UInt<11>("h7ff")) @[src/main/scala/peripheral/UART.scala 40:25] + reg cntReg : UInt<20>, clock with : + reset => (reset, UInt<20>("h0")) @[src/main/scala/peripheral/UART.scala 41:23] + reg bitsReg : UInt<4>, clock with : + reset => (reset, UInt<4>("h0")) @[src/main/scala/peripheral/UART.scala 42:24] + node _io_channel_ready_T = eq(cntReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 44:31] + node _io_channel_ready_T_1 = eq(bitsReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 44:52] + node _io_channel_ready_T_2 = and(_io_channel_ready_T, _io_channel_ready_T_1) @[src/main/scala/peripheral/UART.scala 44:40] + io.channel.ready <= _io_channel_ready_T_2 @[src/main/scala/peripheral/UART.scala 44:20] + node _io_txd_T = bits(shiftReg, 0, 0) @[src/main/scala/peripheral/UART.scala 45:21] + io.txd <= _io_txd_T @[src/main/scala/peripheral/UART.scala 45:10] + node _T = eq(cntReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 47:15] + when _T : @[src/main/scala/peripheral/UART.scala 47:24] + cntReg <= UInt<11>("h43c") @[src/main/scala/peripheral/UART.scala 49:12] + node _T_1 = neq(bitsReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 50:18] + when _T_1 : @[src/main/scala/peripheral/UART.scala 50:27] + node shift = shr(shiftReg, 1) @[src/main/scala/peripheral/UART.scala 51:28] + node _shiftReg_T = bits(shift, 9, 0) @[src/main/scala/peripheral/UART.scala 52:33] + node _shiftReg_T_1 = cat(UInt<1>("h1"), _shiftReg_T) @[src/main/scala/peripheral/UART.scala 52:22] + shiftReg <= _shiftReg_T_1 @[src/main/scala/peripheral/UART.scala 52:16] + node _bitsReg_T = sub(bitsReg, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 53:26] + node _bitsReg_T_1 = tail(_bitsReg_T, 1) @[src/main/scala/peripheral/UART.scala 53:26] + bitsReg <= _bitsReg_T_1 @[src/main/scala/peripheral/UART.scala 53:15] + else : + when io.channel.valid : @[src/main/scala/peripheral/UART.scala 55:30] + node _shiftReg_T_2 = cat(UInt<2>("h3"), io.channel.bits) @[src/main/scala/peripheral/UART.scala 56:28] + node _shiftReg_T_3 = cat(_shiftReg_T_2, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 56:24] + shiftReg <= _shiftReg_T_3 @[src/main/scala/peripheral/UART.scala 56:18] + bitsReg <= UInt<4>("hb") @[src/main/scala/peripheral/UART.scala 57:17] + else : + shiftReg <= UInt<11>("h7ff") @[src/main/scala/peripheral/UART.scala 59:18] + else : + node _cntReg_T = sub(cntReg, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 64:22] + node _cntReg_T_1 = tail(_cntReg_T, 1) @[src/main/scala/peripheral/UART.scala 64:22] + cntReg <= _cntReg_T_1 @[src/main/scala/peripheral/UART.scala 64:12] + + + module Buffer : + input clock : Clock + input reset : Reset + output io : { flip in : { flip ready : UInt<1>, valid : UInt<1>, bits : UInt<8>}, out : { flip ready : UInt<1>, valid : UInt<1>, bits : UInt<8>}} @[src/main/scala/peripheral/UART.scala 121:14] + + reg stateReg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 127:25] + reg dataReg : UInt<8>, clock with : + reset => (reset, UInt<8>("h0")) @[src/main/scala/peripheral/UART.scala 128:24] + node _io_in_ready_T = eq(stateReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 130:27] + io.in.ready <= _io_in_ready_T @[src/main/scala/peripheral/UART.scala 130:15] + node _io_out_valid_T = eq(stateReg, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 131:28] + io.out.valid <= _io_out_valid_T @[src/main/scala/peripheral/UART.scala 131:16] + node _T = eq(stateReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 133:17] + when _T : @[src/main/scala/peripheral/UART.scala 133:28] + when io.in.valid : @[src/main/scala/peripheral/UART.scala 134:23] + dataReg <= io.in.bits @[src/main/scala/peripheral/UART.scala 135:15] + stateReg <= UInt<1>("h1") @[src/main/scala/peripheral/UART.scala 136:16] + else : + when io.out.ready : @[src/main/scala/peripheral/UART.scala 139:24] + stateReg <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 140:16] + io.out.bits <= dataReg @[src/main/scala/peripheral/UART.scala 143:15] + + module BufferedTx : + input clock : Clock + input reset : Reset + output io : { txd : UInt<1>, flip channel : { flip ready : UInt<1>, valid : UInt<1>, bits : UInt<8>}} @[src/main/scala/peripheral/UART.scala 150:14] + + inst tx of Tx @[src/main/scala/peripheral/UART.scala 155:18] + tx.clock <= clock + tx.reset <= reset + inst buf of Buffer @[src/main/scala/peripheral/UART.scala 156:19] + buf.clock <= clock + buf.reset <= reset + buf.io.in <= io.channel @[src/main/scala/peripheral/UART.scala 158:13] + tx.io.channel <= buf.io.out @[src/main/scala/peripheral/UART.scala 159:17] + io.txd <= tx.io.txd @[src/main/scala/peripheral/UART.scala 160:10] + + module Rx : + input clock : Clock + input reset : Reset + output io : { flip rxd : UInt<1>, channel : { flip ready : UInt<1>, valid : UInt<1>, bits : UInt<8>}} @[src/main/scala/peripheral/UART.scala 77:14] + + reg rxReg_REG : UInt, clock with : + reset => (reset, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 87:30] + rxReg_REG <= io.rxd @[src/main/scala/peripheral/UART.scala 87:30] + reg rxReg : UInt, clock with : + reset => (reset, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 87:22] + rxReg <= rxReg_REG @[src/main/scala/peripheral/UART.scala 87:22] + reg shiftReg : UInt<8>, clock with : + reset => (reset, UInt<8>("h0")) @[src/main/scala/peripheral/UART.scala 89:25] + reg cntReg : UInt<20>, clock with : + reset => (reset, UInt<20>("h0")) @[src/main/scala/peripheral/UART.scala 90:23] + reg bitsReg : UInt<4>, clock with : + reset => (reset, UInt<4>("h0")) @[src/main/scala/peripheral/UART.scala 91:24] + reg valReg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 92:23] + node _T = neq(cntReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 94:15] + when _T : @[src/main/scala/peripheral/UART.scala 94:24] + node _cntReg_T = sub(cntReg, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 95:22] + node _cntReg_T_1 = tail(_cntReg_T, 1) @[src/main/scala/peripheral/UART.scala 95:22] + cntReg <= _cntReg_T_1 @[src/main/scala/peripheral/UART.scala 95:12] + else : + node _T_1 = neq(bitsReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 96:22] + when _T_1 : @[src/main/scala/peripheral/UART.scala 96:31] + cntReg <= UInt<11>("h43c") @[src/main/scala/peripheral/UART.scala 97:12] + node _shiftReg_T = shr(shiftReg, 1) @[src/main/scala/peripheral/UART.scala 98:37] + node _shiftReg_T_1 = cat(rxReg, _shiftReg_T) @[src/main/scala/peripheral/UART.scala 98:20] + shiftReg <= _shiftReg_T_1 @[src/main/scala/peripheral/UART.scala 98:14] + node _bitsReg_T = sub(bitsReg, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 99:24] + node _bitsReg_T_1 = tail(_bitsReg_T, 1) @[src/main/scala/peripheral/UART.scala 99:24] + bitsReg <= _bitsReg_T_1 @[src/main/scala/peripheral/UART.scala 99:13] + node _T_2 = eq(bitsReg, UInt<1>("h1")) @[src/main/scala/peripheral/UART.scala 101:18] + when _T_2 : @[src/main/scala/peripheral/UART.scala 101:27] + valReg <= UInt<1>("h1") @[src/main/scala/peripheral/UART.scala 102:14] + else : + node _T_3 = eq(rxReg, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 104:20] + when _T_3 : @[src/main/scala/peripheral/UART.scala 104:29] + cntReg <= UInt<11>("h65b") @[src/main/scala/peripheral/UART.scala 105:12] + bitsReg <= UInt<4>("h8") @[src/main/scala/peripheral/UART.scala 106:13] + node _T_4 = and(valReg, io.channel.ready) @[src/main/scala/peripheral/UART.scala 109:15] + when _T_4 : @[src/main/scala/peripheral/UART.scala 109:36] + valReg <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 110:12] + io.channel.bits <= shiftReg @[src/main/scala/peripheral/UART.scala 113:19] + io.channel.valid <= valReg @[src/main/scala/peripheral/UART.scala 114:20] + + module Uart : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<8>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<8>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, flip rxd : UInt<1>, txd : UInt<1>, signal_interrupt : UInt<1>} @[src/main/scala/peripheral/UART.scala 164:14] + + reg interrupt : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 171:26] + reg rxData : UInt, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 172:23] + inst slave of AXI4LiteSlave @[src/main/scala/peripheral/UART.scala 173:21] + slave.clock <= clock + slave.reset <= reset + slave.io.channels <= io.channels @[src/main/scala/peripheral/UART.scala 174:21] + inst tx of BufferedTx @[src/main/scala/peripheral/UART.scala 176:18] + tx.clock <= clock + tx.reset <= reset + inst rx of Rx @[src/main/scala/peripheral/UART.scala 177:18] + rx.clock <= clock + rx.reset <= reset + slave.io.bundle.read_data <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 179:29] + slave.io.bundle.read_valid <= UInt<1>("h1") @[src/main/scala/peripheral/UART.scala 180:30] + when slave.io.bundle.read : @[src/main/scala/peripheral/UART.scala 181:30] + node _T = eq(slave.io.bundle.address, UInt<3>("h4")) @[src/main/scala/peripheral/UART.scala 182:34] + when _T : @[src/main/scala/peripheral/UART.scala 182:45] + slave.io.bundle.read_data <= UInt<17>("h1c200") @[src/main/scala/peripheral/UART.scala 183:33] + else : + node _T_1 = eq(slave.io.bundle.address, UInt<4>("hc")) @[src/main/scala/peripheral/UART.scala 184:40] + when _T_1 : @[src/main/scala/peripheral/UART.scala 184:51] + slave.io.bundle.read_data <= rxData @[src/main/scala/peripheral/UART.scala 185:33] + interrupt <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 186:17] + tx.io.channel.valid <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 190:23] + tx.io.channel.bits <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 191:22] + when slave.io.bundle.write : @[src/main/scala/peripheral/UART.scala 192:31] + node _T_2 = eq(slave.io.bundle.address, UInt<4>("h8")) @[src/main/scala/peripheral/UART.scala 193:34] + when _T_2 : @[src/main/scala/peripheral/UART.scala 193:45] + node _interrupt_T = neq(slave.io.bundle.write_data, UInt<1>("h0")) @[src/main/scala/peripheral/UART.scala 194:47] + interrupt <= _interrupt_T @[src/main/scala/peripheral/UART.scala 194:17] + else : + node _T_3 = eq(slave.io.bundle.address, UInt<5>("h10")) @[src/main/scala/peripheral/UART.scala 195:40] + when _T_3 : @[src/main/scala/peripheral/UART.scala 195:52] + tx.io.channel.valid <= UInt<1>("h1") @[src/main/scala/peripheral/UART.scala 196:27] + tx.io.channel.bits <= slave.io.bundle.write_data @[src/main/scala/peripheral/UART.scala 197:26] + io.txd <= tx.io.txd @[src/main/scala/peripheral/UART.scala 201:10] + rx.io.rxd <= io.rxd @[src/main/scala/peripheral/UART.scala 202:13] + io.signal_interrupt <= interrupt @[src/main/scala/peripheral/UART.scala 204:23] + rx.io.channel.ready <= UInt<1>("h0") @[src/main/scala/peripheral/UART.scala 205:23] + when rx.io.channel.valid : @[src/main/scala/peripheral/UART.scala 206:29] + rx.io.channel.ready <= UInt<1>("h1") @[src/main/scala/peripheral/UART.scala 207:25] + rxData <= rx.io.channel.bits @[src/main/scala/peripheral/UART.scala 208:12] + interrupt <= UInt<1>("h1") @[src/main/scala/peripheral/UART.scala 209:15] + + + module Control : + input clock : Clock + input reset : Reset + output io : { flip jump_flag : UInt<1>, flip stall_flag_if : UInt<1>, flip stall_flag_mem : UInt<1>, flip stall_flag_clint : UInt<1>, flip stall_flag_bus : UInt<1>, flip rs1_id : UInt<5>, flip rs2_id : UInt<5>, flip memory_read_enable_ex : UInt<1>, flip rd_ex : UInt<5>, if_flush : UInt<1>, id_flush : UInt<1>, pc_stall : UInt<1>, if_stall : UInt<1>, id_stall : UInt<1>, ex_stall : UInt<1>} @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + + node _id_hazard_T = eq(io.rd_ex, io.rs1_id) @[src/main/scala/riscv/core/fivestage/Control.scala 40:57] + node _id_hazard_T_1 = eq(io.rd_ex, io.rs2_id) @[src/main/scala/riscv/core/fivestage/Control.scala 40:83] + node _id_hazard_T_2 = or(_id_hazard_T, _id_hazard_T_1) @[src/main/scala/riscv/core/fivestage/Control.scala 40:71] + node id_hazard = and(io.memory_read_enable_ex, _id_hazard_T_2) @[src/main/scala/riscv/core/fivestage/Control.scala 40:44] + io.if_flush <= io.jump_flag @[src/main/scala/riscv/core/fivestage/Control.scala 41:15] + io.id_flush <= id_hazard @[src/main/scala/riscv/core/fivestage/Control.scala 42:15] + node _io_pc_stall_T = or(io.stall_flag_mem, io.stall_flag_clint) @[src/main/scala/riscv/core/fivestage/Control.scala 44:36] + node _io_pc_stall_T_1 = or(_io_pc_stall_T, id_hazard) @[src/main/scala/riscv/core/fivestage/Control.scala 44:59] + node _io_pc_stall_T_2 = or(_io_pc_stall_T_1, io.stall_flag_bus) @[src/main/scala/riscv/core/fivestage/Control.scala 44:72] + node _io_pc_stall_T_3 = or(_io_pc_stall_T_2, io.stall_flag_if) @[src/main/scala/riscv/core/fivestage/Control.scala 44:93] + io.pc_stall <= _io_pc_stall_T_3 @[src/main/scala/riscv/core/fivestage/Control.scala 44:15] + node _io_if_stall_T = or(io.stall_flag_mem, io.stall_flag_clint) @[src/main/scala/riscv/core/fivestage/Control.scala 45:36] + node _io_if_stall_T_1 = or(_io_if_stall_T, id_hazard) @[src/main/scala/riscv/core/fivestage/Control.scala 45:59] + io.if_stall <= _io_if_stall_T_1 @[src/main/scala/riscv/core/fivestage/Control.scala 45:15] + node _io_id_stall_T = or(io.stall_flag_mem, io.stall_flag_clint) @[src/main/scala/riscv/core/fivestage/Control.scala 46:36] + io.id_stall <= _io_id_stall_T @[src/main/scala/riscv/core/fivestage/Control.scala 46:15] + node _io_ex_stall_T = or(io.stall_flag_mem, io.stall_flag_clint) @[src/main/scala/riscv/core/fivestage/Control.scala 47:36] + io.ex_stall <= _io_ex_stall_T @[src/main/scala/riscv/core/fivestage/Control.scala 47:15] + + module RegisterFile : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip write_address : UInt<5>, flip write_data : UInt<32>, flip read_address1 : UInt<5>, flip read_address2 : UInt<5>, read_data1 : UInt<32>, read_data2 : UInt<32>, flip debug_read_address : UInt<5>, debug_read_data : UInt<32>} @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + + reg registers : UInt<32>[32], clock with : + reset => (UInt<1>("h0"), registers) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + node _T = asUInt(reset) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:15] + node _T_1 = eq(_T, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:8] + when _T_1 : @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + node _T_2 = neq(io.write_address, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:46] + node _T_3 = and(io.write_enable, _T_2) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:26] + when _T_3 : @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + registers[io.write_address] <= io.write_data @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + node _io_read_data1_T = eq(io.read_address1, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 57:25] + node _io_read_data1_T_1 = eq(io.read_address1, io.write_address) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 58:25] + node _io_read_data1_T_2 = and(_io_read_data1_T_1, io.write_enable) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 58:46] + node _io_read_data1_T_3 = mux(_io_read_data1_T_2, io.write_data, registers[io.read_address1]) @[src/main/scala/chisel3/util/Mux.scala 141:16] + node _io_read_data1_T_4 = mux(_io_read_data1_T, UInt<1>("h0"), _io_read_data1_T_3) @[src/main/scala/chisel3/util/Mux.scala 141:16] + io.read_data1 <= _io_read_data1_T_4 @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 54:17] + node _io_read_data2_T = eq(io.read_address2, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 65:25] + node _io_read_data2_T_1 = eq(io.read_address2, io.write_address) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 66:25] + node _io_read_data2_T_2 = and(_io_read_data2_T_1, io.write_enable) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 66:46] + node _io_read_data2_T_3 = mux(_io_read_data2_T_2, io.write_data, registers[io.read_address2]) @[src/main/scala/chisel3/util/Mux.scala 141:16] + node _io_read_data2_T_4 = mux(_io_read_data2_T, UInt<1>("h0"), _io_read_data2_T_3) @[src/main/scala/chisel3/util/Mux.scala 141:16] + io.read_data2 <= _io_read_data2_T_4 @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 62:17] + node _io_debug_read_data_T = eq(io.debug_read_address, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 73:30] + node _io_debug_read_data_T_1 = eq(io.debug_read_address, io.write_address) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 74:30] + node _io_debug_read_data_T_2 = and(_io_debug_read_data_T_1, io.write_enable) @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 74:51] + node _io_debug_read_data_T_3 = mux(_io_debug_read_data_T_2, io.write_data, registers[io.debug_read_address]) @[src/main/scala/chisel3/util/Mux.scala 141:16] + node _io_debug_read_data_T_4 = mux(_io_debug_read_data_T, UInt<1>("h0"), _io_debug_read_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 141:16] + io.debug_read_data <= _io_debug_read_data_T_4 @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 70:22] + + module InstructionFetch : + input clock : Clock + input reset : Reset + output io : { flip stall_flag_ctrl : UInt<1>, flip jump_flag_id : UInt<1>, flip jump_address_id : UInt<32>, flip instruction_valid : UInt<1>, bus_request : UInt<1>, bus_address : UInt<32>, flip bus_data : UInt<32>, bus_read : UInt<1>, ctrl_stall_flag : UInt<1>, id_instruction_address : UInt<32>, id_instruction : UInt<32>} @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + + reg pending_jump : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 41:29] + reg pc : UInt<32>, clock with : + reset => (reset, UInt<32>("h1000")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 42:19] + io.bus_read <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 43:15] + io.bus_request <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 44:18] + node _pc_T = add(pc, UInt<3>("h4")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 47:8] + node _pc_T_1 = tail(_pc_T, 1) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 47:8] + node _pc_T_2 = mux(io.stall_flag_ctrl, pc, _pc_T_1) @[src/main/scala/chisel3/util/Mux.scala 141:16] + node _pc_T_3 = mux(io.jump_flag_id, io.jump_address_id, _pc_T_2) @[src/main/scala/chisel3/util/Mux.scala 141:16] + pc <= _pc_T_3 @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 46:6] + node _T = eq(io.instruction_valid, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 53:8] + when _T : @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 53:31] + when io.jump_flag_id : @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 54:27] + pending_jump <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 55:20] + when io.instruction_valid : @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 58:30] + when pending_jump : @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 59:24] + pending_jump <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 60:20] + node _io_id_instruction_T = eq(io.jump_flag_id, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:52] + node _io_id_instruction_T_1 = and(io.instruction_valid, _io_id_instruction_T) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:49] + node _io_id_instruction_T_2 = eq(pending_jump, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:72] + node _io_id_instruction_T_3 = and(_io_id_instruction_T_1, _io_id_instruction_T_2) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:69] + node _io_id_instruction_T_4 = mux(_io_id_instruction_T_3, io.bus_data, UInt<32>("h13")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:27] + io.id_instruction <= _io_id_instruction_T_4 @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:21] + node _io_ctrl_stall_flag_T = eq(io.instruction_valid, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 65:25] + node _io_ctrl_stall_flag_T_1 = or(_io_ctrl_stall_flag_T, pending_jump) @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 65:47] + io.ctrl_stall_flag <= _io_ctrl_stall_flag_T_1 @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 65:22] + io.id_instruction_address <= pc @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 66:29] + io.bus_address <= pc @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 67:18] + + module PipelineRegister : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<32>("h13")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<32>("h13") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_1 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<32>("h1000")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<32>("h1000") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_2 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module IF2ID : + input clock : Clock + input reset : Reset + output io : { flip stall_flag : UInt<1>, flip flush_enable : UInt<1>, flip instruction : UInt<32>, flip instruction_address : UInt<32>, flip interrupt_flag : UInt<32>, output_instruction : UInt<32>, output_instruction_address : UInt<32>, output_interrupt_flag : UInt<32>} @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + + node write_enable = eq(io.stall_flag, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/IF2ID.scala 33:22] + inst instruction of PipelineRegister @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + instruction.clock <= clock + instruction.reset <= reset + instruction.io.in <= io.instruction @[src/main/scala/riscv/core/fivestage/IF2ID.scala 36:21] + instruction.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/IF2ID.scala 37:31] + instruction.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/IF2ID.scala 38:31] + io.output_instruction <= instruction.io.out @[src/main/scala/riscv/core/fivestage/IF2ID.scala 39:25] + inst instruction_address of PipelineRegister_1 @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + instruction_address.clock <= clock + instruction_address.reset <= reset + instruction_address.io.in <= io.instruction_address @[src/main/scala/riscv/core/fivestage/IF2ID.scala 42:29] + instruction_address.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/IF2ID.scala 43:39] + instruction_address.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/IF2ID.scala 44:39] + io.output_instruction_address <= instruction_address.io.out @[src/main/scala/riscv/core/fivestage/IF2ID.scala 45:33] + inst interrupt_flag of PipelineRegister_2 @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + interrupt_flag.clock <= clock + interrupt_flag.reset <= reset + interrupt_flag.io.in <= io.interrupt_flag @[src/main/scala/riscv/core/fivestage/IF2ID.scala 48:24] + interrupt_flag.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/IF2ID.scala 49:34] + interrupt_flag.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/IF2ID.scala 50:34] + io.output_interrupt_flag <= interrupt_flag.io.out @[src/main/scala/riscv/core/fivestage/IF2ID.scala 51:28] + + module InstructionDecode : + input clock : Clock + input reset : Reset + output io : { flip instruction : UInt<32>, flip instruction_address : UInt<32>, flip reg1_data : UInt<32>, flip reg2_data : UInt<32>, flip interrupt_assert : UInt<1>, flip interrupt_handler_address : UInt<32>, regs_reg1_read_address : UInt<5>, regs_reg2_read_address : UInt<5>, ex_reg1_data : UInt<32>, ex_reg2_data : UInt<32>, ex_immediate : UInt<32>, ex_aluop1_source : UInt<1>, ex_aluop2_source : UInt<1>, ex_memory_read_enable : UInt<1>, ex_memory_write_enable : UInt<1>, ex_reg_write_source : UInt<2>, ex_reg_write_enable : UInt<1>, ex_reg_write_address : UInt<5>, ex_csr_address : UInt<12>, ex_csr_write_enable : UInt<1>, if_jump_flag : UInt<1>, if_jump_address : UInt<32>} @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + + node opcode = bits(io.instruction, 6, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 161:30] + node funct3 = bits(io.instruction, 14, 12) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 162:30] + node funct7 = bits(io.instruction, 31, 25) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 163:30] + node rd = bits(io.instruction, 11, 7) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 164:26] + node rs1 = bits(io.instruction, 19, 15) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 165:27] + node rs2 = bits(io.instruction, 24, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 166:27] + node _io_regs_reg1_read_address_T = eq(opcode, UInt<6>("h37")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 168:43] + node _io_regs_reg1_read_address_T_1 = mux(_io_regs_reg1_read_address_T, UInt<5>("h0"), rs1) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 168:35] + io.regs_reg1_read_address <= _io_regs_reg1_read_address_T_1 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 168:29] + io.regs_reg2_read_address <= rs2 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 169:29] + io.ex_reg1_data <= io.reg1_data @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 170:19] + io.ex_reg2_data <= io.reg2_data @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 171:19] + node _immediate_T = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:32] + node _immediate_T_1 = bits(_immediate_T, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:13] + node _immediate_T_2 = mux(_immediate_T_1, UInt<20>("hfffff"), UInt<20>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:13] + node _immediate_T_3 = bits(io.instruction, 31, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:53] + node _immediate_T_4 = cat(_immediate_T_2, _immediate_T_3) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:8] + node _immediate_T_5 = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:56] + node _immediate_T_6 = bits(_immediate_T_5, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:37] + node _immediate_T_7 = mux(_immediate_T_6, UInt<21>("h1fffff"), UInt<21>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:37] + node _immediate_T_8 = bits(io.instruction, 30, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:77] + node _immediate_T_9 = cat(_immediate_T_7, _immediate_T_8) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:32] + node _immediate_T_10 = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 177:56] + node _immediate_T_11 = bits(_immediate_T_10, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 177:37] + node _immediate_T_12 = mux(_immediate_T_11, UInt<21>("h1fffff"), UInt<21>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 177:37] + node _immediate_T_13 = bits(io.instruction, 30, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 177:77] + node _immediate_T_14 = cat(_immediate_T_12, _immediate_T_13) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 177:32] + node _immediate_T_15 = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 178:55] + node _immediate_T_16 = bits(_immediate_T_15, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 178:36] + node _immediate_T_17 = mux(_immediate_T_16, UInt<21>("h1fffff"), UInt<21>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 178:36] + node _immediate_T_18 = bits(io.instruction, 30, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 178:76] + node _immediate_T_19 = cat(_immediate_T_17, _immediate_T_18) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 178:31] + node _immediate_T_20 = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:56] + node _immediate_T_21 = bits(_immediate_T_20, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:37] + node _immediate_T_22 = mux(_immediate_T_21, UInt<21>("h1fffff"), UInt<21>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:37] + node _immediate_T_23 = bits(io.instruction, 30, 25) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:77] + node _immediate_T_24 = bits(io.instruction, 11, 7) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:101] + node immediate_hi = cat(_immediate_T_22, _immediate_T_23) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:32] + node _immediate_T_25 = cat(immediate_hi, _immediate_T_24) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:32] + node _immediate_T_26 = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:56] + node _immediate_T_27 = bits(_immediate_T_26, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:37] + node _immediate_T_28 = mux(_immediate_T_27, UInt<20>("hfffff"), UInt<20>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:37] + node _immediate_T_29 = bits(io.instruction, 7, 7) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:77] + node _immediate_T_30 = bits(io.instruction, 30, 25) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:96] + node _immediate_T_31 = bits(io.instruction, 11, 8) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:120] + node immediate_lo = cat(_immediate_T_31, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:32] + node immediate_hi_hi = cat(_immediate_T_28, _immediate_T_29) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:32] + node immediate_hi_1 = cat(immediate_hi_hi, _immediate_T_30) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:32] + node _immediate_T_32 = cat(immediate_hi_1, immediate_lo) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:32] + node _immediate_T_33 = bits(io.instruction, 31, 12) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 181:45] + node _immediate_T_34 = cat(_immediate_T_33, UInt<12>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 181:30] + node _immediate_T_35 = bits(io.instruction, 31, 12) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 182:47] + node _immediate_T_36 = cat(_immediate_T_35, UInt<12>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 182:32] + node _immediate_T_37 = bits(io.instruction, 31, 31) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:54] + node _immediate_T_38 = bits(_immediate_T_37, 0, 0) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:35] + node _immediate_T_39 = mux(_immediate_T_38, UInt<12>("hfff"), UInt<12>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:35] + node _immediate_T_40 = bits(io.instruction, 19, 12) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:75] + node _immediate_T_41 = bits(io.instruction, 20, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:99] + node _immediate_T_42 = bits(io.instruction, 30, 21) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:119] + node immediate_lo_1 = cat(_immediate_T_42, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:30] + node immediate_hi_hi_1 = cat(_immediate_T_39, _immediate_T_40) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:30] + node immediate_hi_2 = cat(immediate_hi_hi_1, _immediate_T_41) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:30] + node _immediate_T_43 = cat(immediate_hi_2, immediate_lo_1) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:30] + node _immediate_T_44 = eq(UInt<5>("h13"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_45 = mux(_immediate_T_44, _immediate_T_9, _immediate_T_4) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_46 = eq(UInt<2>("h3"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_47 = mux(_immediate_T_46, _immediate_T_14, _immediate_T_45) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_48 = eq(UInt<7>("h67"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_49 = mux(_immediate_T_48, _immediate_T_19, _immediate_T_47) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_50 = eq(UInt<6>("h23"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_51 = mux(_immediate_T_50, _immediate_T_25, _immediate_T_49) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_52 = eq(UInt<7>("h63"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_53 = mux(_immediate_T_52, _immediate_T_32, _immediate_T_51) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_54 = eq(UInt<6>("h37"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_55 = mux(_immediate_T_54, _immediate_T_34, _immediate_T_53) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_56 = eq(UInt<5>("h17"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_57 = mux(_immediate_T_56, _immediate_T_36, _immediate_T_55) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _immediate_T_58 = eq(UInt<7>("h6f"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node immediate = mux(_immediate_T_58, _immediate_T_43, _immediate_T_57) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.ex_immediate <= immediate @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 186:19] + node _io_ex_aluop1_source_T = eq(opcode, UInt<5>("h17")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:12] + node _io_ex_aluop1_source_T_1 = eq(opcode, UInt<7>("h63")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:45] + node _io_ex_aluop1_source_T_2 = or(_io_ex_aluop1_source_T, _io_ex_aluop1_source_T_1) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:35] + node _io_ex_aluop1_source_T_3 = eq(opcode, UInt<7>("h6f")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:78] + node _io_ex_aluop1_source_T_4 = or(_io_ex_aluop1_source_T_2, _io_ex_aluop1_source_T_3) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:68] + node _io_ex_aluop1_source_T_5 = mux(_io_ex_aluop1_source_T_4, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 187:29] + io.ex_aluop1_source <= _io_ex_aluop1_source_T_5 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 187:23] + node _io_ex_aluop2_source_T = eq(opcode, UInt<6>("h33")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 193:12] + node _io_ex_aluop2_source_T_1 = mux(_io_ex_aluop2_source_T, UInt<1>("h0"), UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 192:29] + io.ex_aluop2_source <= _io_ex_aluop2_source_T_1 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 192:23] + node _io_ex_memory_read_enable_T = eq(opcode, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 197:38] + io.ex_memory_read_enable <= _io_ex_memory_read_enable_T @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 197:28] + node _io_ex_memory_write_enable_T = eq(opcode, UInt<6>("h23")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 198:39] + io.ex_memory_write_enable <= _io_ex_memory_write_enable_T @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 198:29] + node _io_ex_reg_write_source_T = eq(UInt<2>("h3"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_1 = mux(_io_ex_reg_write_source_T, UInt<2>("h1"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_2 = eq(UInt<7>("h73"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_3 = mux(_io_ex_reg_write_source_T_2, UInt<2>("h2"), _io_ex_reg_write_source_T_1) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_4 = eq(UInt<7>("h6f"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_5 = mux(_io_ex_reg_write_source_T_4, UInt<2>("h3"), _io_ex_reg_write_source_T_3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_6 = eq(UInt<7>("h67"), opcode) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_ex_reg_write_source_T_7 = mux(_io_ex_reg_write_source_T_6, UInt<2>("h3"), _io_ex_reg_write_source_T_5) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.ex_reg_write_source <= _io_ex_reg_write_source_T_7 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 199:26] + node _io_ex_reg_write_enable_T = eq(opcode, UInt<6>("h33")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 209:37] + node _io_ex_reg_write_enable_T_1 = eq(opcode, UInt<5>("h13")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 209:73] + node _io_ex_reg_write_enable_T_2 = or(_io_ex_reg_write_enable_T, _io_ex_reg_write_enable_T_1) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 209:62] + node _io_ex_reg_write_enable_T_3 = eq(opcode, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:13] + node _io_ex_reg_write_enable_T_4 = or(_io_ex_reg_write_enable_T_2, _io_ex_reg_write_enable_T_3) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 209:97] + node _io_ex_reg_write_enable_T_5 = eq(opcode, UInt<5>("h17")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:48] + node _io_ex_reg_write_enable_T_6 = or(_io_ex_reg_write_enable_T_4, _io_ex_reg_write_enable_T_5) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:37] + node _io_ex_reg_write_enable_T_7 = eq(opcode, UInt<6>("h37")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:83] + node _io_ex_reg_write_enable_T_8 = or(_io_ex_reg_write_enable_T_6, _io_ex_reg_write_enable_T_7) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:72] + node _io_ex_reg_write_enable_T_9 = eq(opcode, UInt<7>("h6f")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:13] + node _io_ex_reg_write_enable_T_10 = or(_io_ex_reg_write_enable_T_8, _io_ex_reg_write_enable_T_9) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:105] + node _io_ex_reg_write_enable_T_11 = eq(opcode, UInt<7>("h67")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:46] + node _io_ex_reg_write_enable_T_12 = or(_io_ex_reg_write_enable_T_10, _io_ex_reg_write_enable_T_11) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:35] + node _io_ex_reg_write_enable_T_13 = eq(opcode, UInt<7>("h73")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:80] + node _io_ex_reg_write_enable_T_14 = or(_io_ex_reg_write_enable_T_12, _io_ex_reg_write_enable_T_13) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:69] + io.ex_reg_write_enable <= _io_ex_reg_write_enable_T_14 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 209:26] + node _io_ex_reg_write_address_T = bits(io.instruction, 11, 7) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 212:44] + io.ex_reg_write_address <= _io_ex_reg_write_address_T @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 212:27] + node _io_ex_csr_address_T = bits(io.instruction, 31, 20) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 213:38] + io.ex_csr_address <= _io_ex_csr_address_T @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 213:21] + node _io_ex_csr_write_enable_T = eq(opcode, UInt<7>("h73")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 214:37] + node _io_ex_csr_write_enable_T_1 = eq(funct3, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 215:12] + node _io_ex_csr_write_enable_T_2 = eq(funct3, UInt<3>("h5")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 215:52] + node _io_ex_csr_write_enable_T_3 = or(_io_ex_csr_write_enable_T_1, _io_ex_csr_write_enable_T_2) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 215:42] + node _io_ex_csr_write_enable_T_4 = eq(funct3, UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 216:14] + node _io_ex_csr_write_enable_T_5 = or(_io_ex_csr_write_enable_T_3, _io_ex_csr_write_enable_T_4) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 215:83] + node _io_ex_csr_write_enable_T_6 = eq(funct3, UInt<3>("h6")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 216:54] + node _io_ex_csr_write_enable_T_7 = or(_io_ex_csr_write_enable_T_5, _io_ex_csr_write_enable_T_6) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 216:44] + node _io_ex_csr_write_enable_T_8 = eq(funct3, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 217:14] + node _io_ex_csr_write_enable_T_9 = or(_io_ex_csr_write_enable_T_7, _io_ex_csr_write_enable_T_8) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 216:85] + node _io_ex_csr_write_enable_T_10 = eq(funct3, UInt<3>("h7")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 217:54] + node _io_ex_csr_write_enable_T_11 = or(_io_ex_csr_write_enable_T_9, _io_ex_csr_write_enable_T_10) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 217:44] + node _io_ex_csr_write_enable_T_12 = and(_io_ex_csr_write_enable_T, _io_ex_csr_write_enable_T_11) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 214:59] + io.ex_csr_write_enable <= _io_ex_csr_write_enable_T_12 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 214:26] + node _io_if_jump_flag_T = eq(opcode, UInt<7>("h6f")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 220:13] + node _io_if_jump_flag_T_1 = or(io.interrupt_assert, _io_if_jump_flag_T) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 219:42] + node _io_if_jump_flag_T_2 = eq(opcode, UInt<7>("h67")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 221:13] + node _io_if_jump_flag_T_3 = or(_io_if_jump_flag_T_1, _io_if_jump_flag_T_2) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 220:35] + node _io_if_jump_flag_T_4 = eq(opcode, UInt<7>("h63")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 222:13] + node _io_if_jump_flag_T_5 = eq(io.reg1_data, io.reg2_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 226:48] + node _io_if_jump_flag_T_6 = neq(io.reg1_data, io.reg2_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 227:48] + node _io_if_jump_flag_T_7 = asSInt(io.reg1_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 228:48] + node _io_if_jump_flag_T_8 = asSInt(io.reg2_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 228:70] + node _io_if_jump_flag_T_9 = lt(_io_if_jump_flag_T_7, _io_if_jump_flag_T_8) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 228:55] + node _io_if_jump_flag_T_10 = asSInt(io.reg1_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 229:48] + node _io_if_jump_flag_T_11 = asSInt(io.reg2_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 229:71] + node _io_if_jump_flag_T_12 = geq(_io_if_jump_flag_T_10, _io_if_jump_flag_T_11) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 229:55] + node _io_if_jump_flag_T_13 = lt(io.reg1_data, io.reg2_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 230:56] + node _io_if_jump_flag_T_14 = geq(io.reg1_data, io.reg2_data) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 231:56] + node _io_if_jump_flag_T_15 = eq(UInt<1>("h0"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_16 = mux(_io_if_jump_flag_T_15, _io_if_jump_flag_T_5, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_17 = eq(UInt<1>("h1"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_18 = mux(_io_if_jump_flag_T_17, _io_if_jump_flag_T_6, _io_if_jump_flag_T_16) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_19 = eq(UInt<3>("h4"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_20 = mux(_io_if_jump_flag_T_19, _io_if_jump_flag_T_9, _io_if_jump_flag_T_18) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_21 = eq(UInt<3>("h5"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_22 = mux(_io_if_jump_flag_T_21, _io_if_jump_flag_T_12, _io_if_jump_flag_T_20) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_23 = eq(UInt<3>("h6"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_24 = mux(_io_if_jump_flag_T_23, _io_if_jump_flag_T_13, _io_if_jump_flag_T_22) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_25 = eq(UInt<3>("h7"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_26 = mux(_io_if_jump_flag_T_25, _io_if_jump_flag_T_14, _io_if_jump_flag_T_24) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_if_jump_flag_T_27 = and(_io_if_jump_flag_T_4, _io_if_jump_flag_T_26) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 222:37] + node _io_if_jump_flag_T_28 = or(_io_if_jump_flag_T_3, _io_if_jump_flag_T_27) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 221:36] + io.if_jump_flag <= _io_if_jump_flag_T_28 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 219:19] + node _io_if_jump_address_T = eq(opcode, UInt<7>("h67")) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 236:34] + node _io_if_jump_address_T_1 = mux(_io_if_jump_address_T, io.reg1_data, io.instruction_address) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 236:26] + node _io_if_jump_address_T_2 = add(io.ex_immediate, _io_if_jump_address_T_1) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 236:21] + node _io_if_jump_address_T_3 = tail(_io_if_jump_address_T_2, 1) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 236:21] + node _io_if_jump_address_T_4 = mux(io.interrupt_assert, io.interrupt_handler_address, _io_if_jump_address_T_3) @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 234:28] + io.if_jump_address <= _io_if_jump_address_T_4 @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 234:22] + + module PipelineRegister_3 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<32>("h13")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<32>("h13") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_4 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<32>("h1000")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<32>("h1000") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_5 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_6 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<5>, out : UInt<5>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<5>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_7 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<2>, out : UInt<2>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<2>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_8 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_9 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_10 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_11 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_12 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_13 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_14 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<12>, out : UInt<12>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<12>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_15 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_16 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_17 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module ID2EX : + input clock : Clock + input reset : Reset + output io : { flip stall_flag : UInt<1>, flip flush_enable : UInt<1>, flip instruction : UInt<32>, flip instruction_address : UInt<32>, flip regs_write_enable : UInt<1>, flip regs_write_address : UInt<5>, flip regs_write_source : UInt<2>, flip reg1_data : UInt<32>, flip reg2_data : UInt<32>, flip immediate : UInt<32>, flip aluop1_source : UInt<1>, flip aluop2_source : UInt<1>, flip csr_write_enable : UInt<1>, flip csr_address : UInt<12>, flip memory_read_enable : UInt<1>, flip memory_write_enable : UInt<1>, flip csr_read_data : UInt<32>, output_instruction : UInt<32>, output_instruction_address : UInt<32>, output_regs_write_enable : UInt<1>, output_regs_write_address : UInt<5>, output_regs_write_source : UInt<2>, output_reg1_data : UInt<32>, output_reg2_data : UInt<32>, output_immediate : UInt<32>, output_aluop1_source : UInt<1>, output_aluop2_source : UInt<1>, output_csr_write_enable : UInt<1>, output_csr_address : UInt<12>, output_memory_read_enable : UInt<1>, output_memory_write_enable : UInt<1>, output_csr_read_data : UInt<32>} @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + + node write_enable = eq(io.stall_flag, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + inst instruction of PipelineRegister_3 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + instruction.clock <= clock + instruction.reset <= reset + instruction.io.in <= io.instruction @[src/main/scala/riscv/core/fivestage/ID2EX.scala 59:21] + instruction.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 60:31] + instruction.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 61:31] + io.output_instruction <= instruction.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 62:25] + inst instruction_address of PipelineRegister_4 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + instruction_address.clock <= clock + instruction_address.reset <= reset + instruction_address.io.in <= io.instruction_address @[src/main/scala/riscv/core/fivestage/ID2EX.scala 65:29] + instruction_address.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 66:39] + instruction_address.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 67:39] + io.output_instruction_address <= instruction_address.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 68:33] + inst regs_write_enable of PipelineRegister_5 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + regs_write_enable.clock <= clock + regs_write_enable.reset <= reset + regs_write_enable.io.in <= io.regs_write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 71:27] + regs_write_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 72:37] + regs_write_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 73:37] + io.output_regs_write_enable <= regs_write_enable.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 74:31] + inst regs_write_address of PipelineRegister_6 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + regs_write_address.clock <= clock + regs_write_address.reset <= reset + regs_write_address.io.in <= io.regs_write_address @[src/main/scala/riscv/core/fivestage/ID2EX.scala 77:28] + regs_write_address.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 78:38] + regs_write_address.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 79:38] + io.output_regs_write_address <= regs_write_address.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 80:32] + inst regs_write_source of PipelineRegister_7 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + regs_write_source.clock <= clock + regs_write_source.reset <= reset + regs_write_source.io.in <= io.regs_write_source @[src/main/scala/riscv/core/fivestage/ID2EX.scala 83:27] + regs_write_source.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 84:37] + regs_write_source.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 85:37] + io.output_regs_write_source <= regs_write_source.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 86:31] + inst reg1_data of PipelineRegister_8 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + reg1_data.clock <= clock + reg1_data.reset <= reset + reg1_data.io.in <= io.reg1_data @[src/main/scala/riscv/core/fivestage/ID2EX.scala 89:19] + reg1_data.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 90:29] + reg1_data.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 91:29] + io.output_reg1_data <= reg1_data.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 92:23] + inst reg2_data of PipelineRegister_9 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + reg2_data.clock <= clock + reg2_data.reset <= reset + reg2_data.io.in <= io.reg2_data @[src/main/scala/riscv/core/fivestage/ID2EX.scala 95:19] + reg2_data.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 96:29] + reg2_data.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 97:29] + io.output_reg2_data <= reg2_data.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 98:23] + inst immediate of PipelineRegister_10 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + immediate.clock <= clock + immediate.reset <= reset + immediate.io.in <= io.immediate @[src/main/scala/riscv/core/fivestage/ID2EX.scala 101:19] + immediate.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 102:29] + immediate.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 103:29] + io.output_immediate <= immediate.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 104:23] + inst aluop1_source of PipelineRegister_11 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + aluop1_source.clock <= clock + aluop1_source.reset <= reset + aluop1_source.io.in <= io.aluop1_source @[src/main/scala/riscv/core/fivestage/ID2EX.scala 107:23] + aluop1_source.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 108:33] + aluop1_source.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 109:33] + io.output_aluop1_source <= aluop1_source.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 110:27] + inst aluop2_source of PipelineRegister_12 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + aluop2_source.clock <= clock + aluop2_source.reset <= reset + aluop2_source.io.in <= io.aluop2_source @[src/main/scala/riscv/core/fivestage/ID2EX.scala 113:23] + aluop2_source.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 114:33] + aluop2_source.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 115:33] + io.output_aluop2_source <= aluop2_source.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 116:27] + inst csr_write_enable of PipelineRegister_13 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + csr_write_enable.clock <= clock + csr_write_enable.reset <= reset + csr_write_enable.io.in <= io.csr_write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 119:26] + csr_write_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 120:36] + csr_write_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 121:36] + io.output_csr_write_enable <= csr_write_enable.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 122:30] + inst csr_address of PipelineRegister_14 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + csr_address.clock <= clock + csr_address.reset <= reset + csr_address.io.in <= io.csr_address @[src/main/scala/riscv/core/fivestage/ID2EX.scala 125:21] + csr_address.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 126:31] + csr_address.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 127:31] + io.output_csr_address <= csr_address.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 128:25] + inst memory_read_enable of PipelineRegister_15 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + memory_read_enable.clock <= clock + memory_read_enable.reset <= reset + memory_read_enable.io.in <= io.memory_read_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 131:28] + memory_read_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 132:38] + memory_read_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 133:38] + io.output_memory_read_enable <= memory_read_enable.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 134:32] + inst memory_write_enable of PipelineRegister_16 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + memory_write_enable.clock <= clock + memory_write_enable.reset <= reset + memory_write_enable.io.in <= io.memory_write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 137:29] + memory_write_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 138:39] + memory_write_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 139:39] + io.output_memory_write_enable <= memory_write_enable.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 140:33] + inst csr_read_data of PipelineRegister_17 @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + csr_read_data.clock <= clock + csr_read_data.reset <= reset + csr_read_data.io.in <= io.csr_read_data @[src/main/scala/riscv/core/fivestage/ID2EX.scala 143:23] + csr_read_data.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 144:33] + csr_read_data.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/ID2EX.scala 145:33] + io.output_csr_read_data <= csr_read_data.io.out @[src/main/scala/riscv/core/fivestage/ID2EX.scala 146:27] + + module ALU : + input clock : Clock + input reset : Reset + output io : { flip func : UInt<4>, flip op1 : UInt<32>, flip op2 : UInt<32>, result : UInt<32>} @[src/main/scala/riscv/core/fivestage/ALU.scala 27:14] + + io.result <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/ALU.scala 36:13] + node _T = asUInt(UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_1 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_2 = eq(_T, _T_1) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_2 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T = add(io.op1, io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 39:27] + node _io_result_T_1 = tail(_io_result_T, 1) @[src/main/scala/riscv/core/fivestage/ALU.scala 39:27] + io.result <= _io_result_T_1 @[src/main/scala/riscv/core/fivestage/ALU.scala 39:17] + else : + node _T_3 = asUInt(UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_4 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_5 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_2 = sub(io.op1, io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 42:27] + node _io_result_T_3 = tail(_io_result_T_2, 1) @[src/main/scala/riscv/core/fivestage/ALU.scala 42:27] + io.result <= _io_result_T_3 @[src/main/scala/riscv/core/fivestage/ALU.scala 42:17] + else : + node _T_6 = asUInt(UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_7 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_8 = eq(_T_6, _T_7) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_8 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_4 = bits(io.op2, 4, 0) @[src/main/scala/riscv/core/fivestage/ALU.scala 45:36] + node _io_result_T_5 = dshl(io.op1, _io_result_T_4) @[src/main/scala/riscv/core/fivestage/ALU.scala 45:27] + io.result <= _io_result_T_5 @[src/main/scala/riscv/core/fivestage/ALU.scala 45:17] + else : + node _T_9 = asUInt(UInt<3>("h4")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_10 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_11 = eq(_T_9, _T_10) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_11 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_6 = asSInt(io.op1) @[src/main/scala/riscv/core/fivestage/ALU.scala 48:27] + node _io_result_T_7 = asSInt(io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 48:43] + node _io_result_T_8 = lt(_io_result_T_6, _io_result_T_7) @[src/main/scala/riscv/core/fivestage/ALU.scala 48:34] + io.result <= _io_result_T_8 @[src/main/scala/riscv/core/fivestage/ALU.scala 48:17] + else : + node _T_12 = asUInt(UInt<3>("h5")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_13 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_14 = eq(_T_12, _T_13) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_14 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_9 = xor(io.op1, io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 51:27] + io.result <= _io_result_T_9 @[src/main/scala/riscv/core/fivestage/ALU.scala 51:17] + else : + node _T_15 = asUInt(UInt<3>("h6")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_16 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_17 = eq(_T_15, _T_16) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_17 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_10 = or(io.op1, io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 54:27] + io.result <= _io_result_T_10 @[src/main/scala/riscv/core/fivestage/ALU.scala 54:17] + else : + node _T_18 = asUInt(UInt<3>("h7")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_19 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_20 = eq(_T_18, _T_19) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_20 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_11 = and(io.op1, io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 57:27] + io.result <= _io_result_T_11 @[src/main/scala/riscv/core/fivestage/ALU.scala 57:17] + else : + node _T_21 = asUInt(UInt<4>("h8")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_22 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_23 = eq(_T_21, _T_22) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_23 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_12 = bits(io.op2, 4, 0) @[src/main/scala/riscv/core/fivestage/ALU.scala 60:36] + node _io_result_T_13 = dshr(io.op1, _io_result_T_12) @[src/main/scala/riscv/core/fivestage/ALU.scala 60:27] + io.result <= _io_result_T_13 @[src/main/scala/riscv/core/fivestage/ALU.scala 60:17] + else : + node _T_24 = asUInt(UInt<4>("h9")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_25 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_26 = eq(_T_24, _T_25) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_26 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_14 = asSInt(io.op1) @[src/main/scala/riscv/core/fivestage/ALU.scala 63:28] + node _io_result_T_15 = bits(io.op2, 4, 0) @[src/main/scala/riscv/core/fivestage/ALU.scala 63:44] + node _io_result_T_16 = dshr(_io_result_T_14, _io_result_T_15) @[src/main/scala/riscv/core/fivestage/ALU.scala 63:35] + node _io_result_T_17 = asUInt(_io_result_T_16) @[src/main/scala/riscv/core/fivestage/ALU.scala 63:52] + io.result <= _io_result_T_17 @[src/main/scala/riscv/core/fivestage/ALU.scala 63:17] + else : + node _T_27 = asUInt(UInt<4>("ha")) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_28 = asUInt(io.func) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _T_29 = eq(_T_27, _T_28) @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + when _T_29 : @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19] + node _io_result_T_18 = lt(io.op1, io.op2) @[src/main/scala/riscv/core/fivestage/ALU.scala 66:27] + io.result <= _io_result_T_18 @[src/main/scala/riscv/core/fivestage/ALU.scala 66:17] + + + module ALUControl : + input clock : Clock + input reset : Reset + output io : { flip opcode : UInt<7>, flip funct3 : UInt<3>, flip funct7 : UInt<7>, alu_funct : UInt<4>} @[src/main/scala/riscv/core/fivestage/ALUControl.scala 21:14] + + io.alu_funct <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 29:16] + node _T = eq(UInt<5>("h13"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + node _io_alu_funct_T = bits(io.funct7, 5, 5) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 44:49] + node _io_alu_funct_T_1 = mux(_io_alu_funct_T, UInt<4>("h9"), UInt<4>("h8")) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 44:39] + node _io_alu_funct_T_2 = eq(UInt<1>("h1"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_3 = mux(_io_alu_funct_T_2, UInt<2>("h3"), UInt<1>("h1")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_4 = eq(UInt<2>("h2"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_5 = mux(_io_alu_funct_T_4, UInt<3>("h4"), _io_alu_funct_T_3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_6 = eq(UInt<2>("h3"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_7 = mux(_io_alu_funct_T_6, UInt<4>("ha"), _io_alu_funct_T_5) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_8 = eq(UInt<3>("h4"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_9 = mux(_io_alu_funct_T_8, UInt<3>("h5"), _io_alu_funct_T_7) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_10 = eq(UInt<3>("h6"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_11 = mux(_io_alu_funct_T_10, UInt<3>("h6"), _io_alu_funct_T_9) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_12 = eq(UInt<3>("h7"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_13 = mux(_io_alu_funct_T_12, UInt<3>("h7"), _io_alu_funct_T_11) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_14 = eq(UInt<3>("h5"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_15 = mux(_io_alu_funct_T_14, _io_alu_funct_T_1, _io_alu_funct_T_13) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.alu_funct <= _io_alu_funct_T_15 @[src/main/scala/riscv/core/fivestage/ALUControl.scala 33:20] + else : + node _T_1 = eq(UInt<6>("h33"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_1 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + node _io_alu_funct_T_16 = bits(io.funct7, 5, 5) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 53:53] + node _io_alu_funct_T_17 = mux(_io_alu_funct_T_16, UInt<2>("h2"), UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 53:43] + node _io_alu_funct_T_18 = bits(io.funct7, 5, 5) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 60:48] + node _io_alu_funct_T_19 = mux(_io_alu_funct_T_18, UInt<4>("h9"), UInt<4>("h8")) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 60:38] + node _io_alu_funct_T_20 = eq(UInt<1>("h1"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_21 = mux(_io_alu_funct_T_20, UInt<2>("h3"), _io_alu_funct_T_17) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_22 = eq(UInt<2>("h2"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_23 = mux(_io_alu_funct_T_22, UInt<3>("h4"), _io_alu_funct_T_21) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_24 = eq(UInt<2>("h3"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_25 = mux(_io_alu_funct_T_24, UInt<4>("ha"), _io_alu_funct_T_23) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_26 = eq(UInt<3>("h4"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_27 = mux(_io_alu_funct_T_26, UInt<3>("h5"), _io_alu_funct_T_25) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_28 = eq(UInt<3>("h6"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_29 = mux(_io_alu_funct_T_28, UInt<3>("h6"), _io_alu_funct_T_27) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_30 = eq(UInt<3>("h7"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_31 = mux(_io_alu_funct_T_30, UInt<3>("h7"), _io_alu_funct_T_29) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_32 = eq(UInt<3>("h5"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_alu_funct_T_33 = mux(_io_alu_funct_T_32, _io_alu_funct_T_19, _io_alu_funct_T_31) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.alu_funct <= _io_alu_funct_T_33 @[src/main/scala/riscv/core/fivestage/ALUControl.scala 49:20] + else : + node _T_2 = eq(UInt<7>("h63"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_2 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 65:20] + else : + node _T_3 = eq(UInt<2>("h3"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_3 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 68:20] + else : + node _T_4 = eq(UInt<6>("h23"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_4 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 71:20] + else : + node _T_5 = eq(UInt<7>("h6f"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_5 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 74:20] + else : + node _T_6 = eq(UInt<7>("h67"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_6 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 77:20] + else : + node _T_7 = eq(UInt<6>("h37"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_7 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 80:20] + else : + node _T_8 = eq(UInt<5>("h17"), io.opcode) @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + when _T_8 : @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21] + io.alu_funct <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/ALUControl.scala 83:20] + + + module Execute : + input clock : Clock + input reset : Reset + output io : { flip instruction : UInt<32>, flip instruction_address : UInt<32>, flip reg1_data : UInt<32>, flip reg2_data : UInt<32>, flip immediate : UInt<32>, flip aluop1_source : UInt<1>, flip aluop2_source : UInt<1>, flip csr_read_data : UInt<32>, flip forward_from_mem : UInt<32>, flip forward_from_wb : UInt<32>, flip aluop1_forward : UInt<2>, flip aluop2_forward : UInt<2>, mem_alu_result : UInt<32>, csr_write_data : UInt<32>} @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + + node opcode = bits(io.instruction, 6, 0) @[src/main/scala/riscv/core/fivestage/Execute.scala 45:30] + node funct3 = bits(io.instruction, 14, 12) @[src/main/scala/riscv/core/fivestage/Execute.scala 46:30] + node funct7 = bits(io.instruction, 31, 25) @[src/main/scala/riscv/core/fivestage/Execute.scala 47:30] + node rd = bits(io.instruction, 11, 7) @[src/main/scala/riscv/core/fivestage/Execute.scala 48:26] + node uimm = bits(io.instruction, 19, 15) @[src/main/scala/riscv/core/fivestage/Execute.scala 49:28] + inst alu of ALU @[src/main/scala/riscv/core/fivestage/Execute.scala 51:19] + alu.clock <= clock + alu.reset <= reset + inst alu_ctrl of ALUControl @[src/main/scala/riscv/core/fivestage/Execute.scala 52:24] + alu_ctrl.clock <= clock + alu_ctrl.reset <= reset + alu_ctrl.io.opcode <= opcode @[src/main/scala/riscv/core/fivestage/Execute.scala 54:22] + alu_ctrl.io.funct3 <= funct3 @[src/main/scala/riscv/core/fivestage/Execute.scala 55:22] + alu_ctrl.io.funct7 <= funct7 @[src/main/scala/riscv/core/fivestage/Execute.scala 56:22] + alu.io.func <= alu_ctrl.io.alu_funct @[src/main/scala/riscv/core/fivestage/Execute.scala 57:15] + node _alu_io_op1_T = eq(io.aluop1_source, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/Execute.scala 59:22] + node _alu_io_op1_T_1 = eq(UInt<2>("h1"), io.aluop1_forward) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op1_T_2 = mux(_alu_io_op1_T_1, io.forward_from_mem, io.reg1_data) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op1_T_3 = eq(UInt<2>("h2"), io.aluop1_forward) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op1_T_4 = mux(_alu_io_op1_T_3, io.forward_from_wb, _alu_io_op1_T_2) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op1_T_5 = mux(_alu_io_op1_T, io.instruction_address, _alu_io_op1_T_4) @[src/main/scala/riscv/core/fivestage/Execute.scala 58:20] + alu.io.op1 <= _alu_io_op1_T_5 @[src/main/scala/riscv/core/fivestage/Execute.scala 58:14] + node _alu_io_op2_T = eq(io.aluop2_source, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/Execute.scala 71:22] + node _alu_io_op2_T_1 = eq(UInt<2>("h1"), io.aluop2_forward) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op2_T_2 = mux(_alu_io_op2_T_1, io.forward_from_mem, io.reg2_data) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op2_T_3 = eq(UInt<2>("h2"), io.aluop2_forward) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op2_T_4 = mux(_alu_io_op2_T_3, io.forward_from_wb, _alu_io_op2_T_2) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _alu_io_op2_T_5 = mux(_alu_io_op2_T, io.immediate, _alu_io_op2_T_4) @[src/main/scala/riscv/core/fivestage/Execute.scala 70:20] + alu.io.op2 <= _alu_io_op2_T_5 @[src/main/scala/riscv/core/fivestage/Execute.scala 70:14] + io.mem_alu_result <= alu.io.result @[src/main/scala/riscv/core/fivestage/Execute.scala 82:21] + node _io_csr_write_data_T = not(io.reg1_data) @[src/main/scala/riscv/core/fivestage/Execute.scala 85:54] + node _io_csr_write_data_T_1 = and(io.csr_read_data, _io_csr_write_data_T) @[src/main/scala/riscv/core/fivestage/Execute.scala 85:52] + node _io_csr_write_data_T_2 = or(io.csr_read_data, io.reg1_data) @[src/main/scala/riscv/core/fivestage/Execute.scala 86:52] + node _io_csr_write_data_T_3 = cat(UInt<27>("h0"), uimm) @[src/main/scala/riscv/core/fivestage/Execute.scala 87:38] + node _io_csr_write_data_T_4 = cat(UInt<27>("h0"), uimm) @[src/main/scala/riscv/core/fivestage/Execute.scala 88:59] + node _io_csr_write_data_T_5 = not(_io_csr_write_data_T_4) @[src/main/scala/riscv/core/fivestage/Execute.scala 88:55] + node _io_csr_write_data_T_6 = and(io.csr_read_data, _io_csr_write_data_T_5) @[src/main/scala/riscv/core/fivestage/Execute.scala 88:53] + node _io_csr_write_data_T_7 = cat(UInt<27>("h0"), uimm) @[src/main/scala/riscv/core/fivestage/Execute.scala 89:57] + node _io_csr_write_data_T_8 = or(io.csr_read_data, _io_csr_write_data_T_7) @[src/main/scala/riscv/core/fivestage/Execute.scala 89:53] + node _io_csr_write_data_T_9 = eq(UInt<1>("h1"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_10 = mux(_io_csr_write_data_T_9, io.reg1_data, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_11 = eq(UInt<2>("h3"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_12 = mux(_io_csr_write_data_T_11, _io_csr_write_data_T_1, _io_csr_write_data_T_10) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_13 = eq(UInt<2>("h2"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_14 = mux(_io_csr_write_data_T_13, _io_csr_write_data_T_2, _io_csr_write_data_T_12) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_15 = eq(UInt<3>("h5"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_16 = mux(_io_csr_write_data_T_15, _io_csr_write_data_T_3, _io_csr_write_data_T_14) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_17 = eq(UInt<3>("h7"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_18 = mux(_io_csr_write_data_T_17, _io_csr_write_data_T_6, _io_csr_write_data_T_16) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_19 = eq(UInt<3>("h6"), funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_csr_write_data_T_20 = mux(_io_csr_write_data_T_19, _io_csr_write_data_T_8, _io_csr_write_data_T_18) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.csr_write_data <= _io_csr_write_data_T_20 @[src/main/scala/riscv/core/fivestage/Execute.scala 83:21] + + module PipelineRegister_18 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_19 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<2>, out : UInt<2>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<2>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_20 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<5>, out : UInt<5>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<5>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_21 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_22 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_23 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_24 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_25 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_26 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_27 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_28 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module EX2MEM : + input clock : Clock + input reset : Reset + output io : { flip stall_flag : UInt<1>, flip flush_enable : UInt<1>, flip regs_write_enable : UInt<1>, flip regs_write_source : UInt<2>, flip regs_write_address : UInt<32>, flip instruction_address : UInt<32>, flip instruction : UInt<32>, flip reg1_data : UInt<32>, flip reg2_data : UInt<32>, flip memory_read_enable : UInt<1>, flip memory_write_enable : UInt<1>, flip alu_result : UInt<32>, flip csr_read_data : UInt<32>, output_regs_write_enable : UInt<1>, output_regs_write_source : UInt<2>, output_regs_write_address : UInt<32>, output_instruction_address : UInt<32>, output_instruction : UInt<32>, output_reg1_data : UInt<32>, output_reg2_data : UInt<32>, output_memory_read_enable : UInt<1>, output_memory_write_enable : UInt<1>, output_alu_result : UInt<32>, output_csr_read_data : UInt<32>} @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + + node write_enable = eq(io.stall_flag, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + inst regs_write_enable of PipelineRegister_18 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + regs_write_enable.clock <= clock + regs_write_enable.reset <= reset + regs_write_enable.io.in <= io.regs_write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 51:27] + regs_write_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 52:37] + regs_write_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 53:37] + io.output_regs_write_enable <= regs_write_enable.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 54:31] + inst regs_write_source of PipelineRegister_19 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + regs_write_source.clock <= clock + regs_write_source.reset <= reset + regs_write_source.io.in <= io.regs_write_source @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 57:27] + regs_write_source.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 58:37] + regs_write_source.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 59:37] + io.output_regs_write_source <= regs_write_source.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 60:31] + inst regs_write_address of PipelineRegister_20 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + regs_write_address.clock <= clock + regs_write_address.reset <= reset + regs_write_address.io.in <= io.regs_write_address @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 63:28] + regs_write_address.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 64:38] + regs_write_address.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 65:38] + io.output_regs_write_address <= regs_write_address.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 66:32] + inst instruction_address of PipelineRegister_21 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + instruction_address.clock <= clock + instruction_address.reset <= reset + instruction_address.io.in <= io.instruction_address @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 69:29] + instruction_address.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 70:39] + instruction_address.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 71:39] + io.output_instruction_address <= instruction_address.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 72:33] + inst instruction of PipelineRegister_22 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + instruction.clock <= clock + instruction.reset <= reset + instruction.io.in <= io.instruction @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 75:21] + instruction.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 76:31] + instruction.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 77:31] + io.output_instruction <= instruction.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 78:25] + inst reg1_data of PipelineRegister_23 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + reg1_data.clock <= clock + reg1_data.reset <= reset + reg1_data.io.in <= io.reg1_data @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 81:19] + reg1_data.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 82:29] + reg1_data.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 83:29] + io.output_reg1_data <= reg1_data.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 84:23] + inst reg2_data of PipelineRegister_24 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + reg2_data.clock <= clock + reg2_data.reset <= reset + reg2_data.io.in <= io.reg2_data @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 87:19] + reg2_data.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 88:29] + reg2_data.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 89:29] + io.output_reg2_data <= reg2_data.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 90:23] + inst alu_result of PipelineRegister_25 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + alu_result.clock <= clock + alu_result.reset <= reset + alu_result.io.in <= io.alu_result @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 93:20] + alu_result.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 94:30] + alu_result.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 95:30] + io.output_alu_result <= alu_result.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 96:24] + inst memory_read_enable of PipelineRegister_26 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + memory_read_enable.clock <= clock + memory_read_enable.reset <= reset + memory_read_enable.io.in <= io.memory_read_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 99:28] + memory_read_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 100:38] + memory_read_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 101:38] + io.output_memory_read_enable <= memory_read_enable.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 102:32] + inst memory_write_enable of PipelineRegister_27 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + memory_write_enable.clock <= clock + memory_write_enable.reset <= reset + memory_write_enable.io.in <= io.memory_write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 105:29] + memory_write_enable.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 106:39] + memory_write_enable.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 107:39] + io.output_memory_write_enable <= memory_write_enable.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 108:33] + inst csr_read_data of PipelineRegister_28 @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + csr_read_data.clock <= clock + csr_read_data.reset <= reset + csr_read_data.io.in <= io.csr_read_data @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 111:23] + csr_read_data.io.write_enable <= write_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 112:33] + csr_read_data.io.flush_enable <= io.flush_enable @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 113:33] + io.output_csr_read_data <= csr_read_data.io.out @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 114:27] + + module MemoryAccess : + input clock : Clock + input reset : Reset + output io : { flip alu_result : UInt<32>, flip reg2_data : UInt<32>, flip memory_read_enable : UInt<1>, flip memory_write_enable : UInt<1>, flip funct3 : UInt<3>, flip regs_write_source : UInt<2>, flip csr_read_data : UInt<32>, wb_memory_read_data : UInt<32>, ctrl_stall_flag : UInt<1>, forward_to_ex : UInt<32>, bus : { read : UInt<1>, address : UInt<32>, flip read_data : UInt<32>, flip read_valid : UInt<1>, write : UInt<1>, write_data : UInt<32>, write_strobe : UInt<1>[4], flip write_valid : UInt<1>, flip busy : UInt<1>, request : UInt<1>, flip granted : UInt<1>}} @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + + node mem_address_index = bits(io.alu_result, 1, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 38:40] + reg mem_access_state : UInt<2>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 39:33] + io.bus.request <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 46:18] + io.bus.read <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 47:15] + node _io_bus_address_T = bits(io.alu_result, 31, 2) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 48:34] + node _io_bus_address_T_1 = cat(_io_bus_address_T, UInt<2>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 48:89] + io.bus.address <= _io_bus_address_T_1 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 48:18] + io.bus.write_data <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 49:21] + wire _WIRE : UInt<1>[4] @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:33] + _WIRE[0] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:33] + _WIRE[1] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:33] + _WIRE[2] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:33] + _WIRE[3] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:33] + io.bus.write_strobe <= _WIRE @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:23] + io.bus.write <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 51:16] + io.wb_memory_read_data <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 52:26] + io.ctrl_stall_flag <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 53:22] + when io.memory_read_enable : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 55:31] + node _T = eq(mem_access_state, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 56:27] + when _T : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 56:56] + io.ctrl_stall_flag <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 58:26] + io.bus.read <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 59:19] + io.bus.request <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 60:22] + when io.bus.granted : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 61:28] + mem_access_state <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 62:26] + else : + node _T_1 = eq(mem_access_state, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 64:33] + when _T_1 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 64:62] + io.bus.request <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 65:22] + io.bus.read <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 66:19] + io.ctrl_stall_flag <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 67:26] + when io.bus.read_valid : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 68:31] + node _io_wb_memory_read_data_T = bits(io.bus.read_data, 31, 31) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:32] + node _io_wb_memory_read_data_T_1 = bits(_io_wb_memory_read_data_T, 0, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:23] + node _io_wb_memory_read_data_T_2 = mux(_io_wb_memory_read_data_T_1, UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:23] + node _io_wb_memory_read_data_T_3 = bits(io.bus.read_data, 31, 24) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:43] + node _io_wb_memory_read_data_T_4 = cat(_io_wb_memory_read_data_T_2, _io_wb_memory_read_data_T_3) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:18] + node _io_wb_memory_read_data_T_5 = bits(io.bus.read_data, 7, 7) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:41] + node _io_wb_memory_read_data_T_6 = bits(_io_wb_memory_read_data_T_5, 0, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:32] + node _io_wb_memory_read_data_T_7 = mux(_io_wb_memory_read_data_T_6, UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:32] + node _io_wb_memory_read_data_T_8 = bits(io.bus.read_data, 7, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:51] + node _io_wb_memory_read_data_T_9 = cat(_io_wb_memory_read_data_T_7, _io_wb_memory_read_data_T_8) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:27] + node _io_wb_memory_read_data_T_10 = bits(io.bus.read_data, 15, 15) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:41] + node _io_wb_memory_read_data_T_11 = bits(_io_wb_memory_read_data_T_10, 0, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:32] + node _io_wb_memory_read_data_T_12 = mux(_io_wb_memory_read_data_T_11, UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:32] + node _io_wb_memory_read_data_T_13 = bits(io.bus.read_data, 15, 8) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:52] + node _io_wb_memory_read_data_T_14 = cat(_io_wb_memory_read_data_T_12, _io_wb_memory_read_data_T_13) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:27] + node _io_wb_memory_read_data_T_15 = bits(io.bus.read_data, 23, 23) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:41] + node _io_wb_memory_read_data_T_16 = bits(_io_wb_memory_read_data_T_15, 0, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:32] + node _io_wb_memory_read_data_T_17 = mux(_io_wb_memory_read_data_T_16, UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:32] + node _io_wb_memory_read_data_T_18 = bits(io.bus.read_data, 23, 16) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:52] + node _io_wb_memory_read_data_T_19 = cat(_io_wb_memory_read_data_T_17, _io_wb_memory_read_data_T_18) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:27] + node _io_wb_memory_read_data_T_20 = eq(UInt<1>("h0"), mem_address_index) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_21 = mux(_io_wb_memory_read_data_T_20, _io_wb_memory_read_data_T_9, _io_wb_memory_read_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_22 = eq(UInt<1>("h1"), mem_address_index) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_23 = mux(_io_wb_memory_read_data_T_22, _io_wb_memory_read_data_T_14, _io_wb_memory_read_data_T_21) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_24 = eq(UInt<2>("h2"), mem_address_index) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_25 = mux(_io_wb_memory_read_data_T_24, _io_wb_memory_read_data_T_19, _io_wb_memory_read_data_T_23) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_26 = mux(UInt<1>("h0"), UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 85:23] + node _io_wb_memory_read_data_T_27 = bits(io.bus.read_data, 31, 24) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 85:38] + node _io_wb_memory_read_data_T_28 = cat(_io_wb_memory_read_data_T_26, _io_wb_memory_read_data_T_27) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 85:18] + node _io_wb_memory_read_data_T_29 = mux(UInt<1>("h0"), UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 87:32] + node _io_wb_memory_read_data_T_30 = bits(io.bus.read_data, 7, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 87:47] + node _io_wb_memory_read_data_T_31 = cat(_io_wb_memory_read_data_T_29, _io_wb_memory_read_data_T_30) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 87:27] + node _io_wb_memory_read_data_T_32 = mux(UInt<1>("h0"), UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 88:32] + node _io_wb_memory_read_data_T_33 = bits(io.bus.read_data, 15, 8) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 88:47] + node _io_wb_memory_read_data_T_34 = cat(_io_wb_memory_read_data_T_32, _io_wb_memory_read_data_T_33) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 88:27] + node _io_wb_memory_read_data_T_35 = mux(UInt<1>("h0"), UInt<24>("hffffff"), UInt<24>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 89:32] + node _io_wb_memory_read_data_T_36 = bits(io.bus.read_data, 23, 16) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 89:47] + node _io_wb_memory_read_data_T_37 = cat(_io_wb_memory_read_data_T_35, _io_wb_memory_read_data_T_36) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 89:27] + node _io_wb_memory_read_data_T_38 = eq(UInt<1>("h0"), mem_address_index) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_39 = mux(_io_wb_memory_read_data_T_38, _io_wb_memory_read_data_T_31, _io_wb_memory_read_data_T_28) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_40 = eq(UInt<1>("h1"), mem_address_index) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_41 = mux(_io_wb_memory_read_data_T_40, _io_wb_memory_read_data_T_34, _io_wb_memory_read_data_T_39) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_42 = eq(UInt<2>("h2"), mem_address_index) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_43 = mux(_io_wb_memory_read_data_T_42, _io_wb_memory_read_data_T_37, _io_wb_memory_read_data_T_41) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_44 = eq(mem_address_index, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 93:33] + node _io_wb_memory_read_data_T_45 = bits(io.bus.read_data, 15, 15) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:32] + node _io_wb_memory_read_data_T_46 = bits(_io_wb_memory_read_data_T_45, 0, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:23] + node _io_wb_memory_read_data_T_47 = mux(_io_wb_memory_read_data_T_46, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:23] + node _io_wb_memory_read_data_T_48 = bits(io.bus.read_data, 15, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:43] + node _io_wb_memory_read_data_T_49 = cat(_io_wb_memory_read_data_T_47, _io_wb_memory_read_data_T_48) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:18] + node _io_wb_memory_read_data_T_50 = bits(io.bus.read_data, 31, 31) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:32] + node _io_wb_memory_read_data_T_51 = bits(_io_wb_memory_read_data_T_50, 0, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:23] + node _io_wb_memory_read_data_T_52 = mux(_io_wb_memory_read_data_T_51, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:23] + node _io_wb_memory_read_data_T_53 = bits(io.bus.read_data, 31, 16) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:43] + node _io_wb_memory_read_data_T_54 = cat(_io_wb_memory_read_data_T_52, _io_wb_memory_read_data_T_53) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:18] + node _io_wb_memory_read_data_T_55 = mux(_io_wb_memory_read_data_T_44, _io_wb_memory_read_data_T_49, _io_wb_memory_read_data_T_54) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 92:40] + node _io_wb_memory_read_data_T_56 = eq(mem_address_index, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 98:33] + node _io_wb_memory_read_data_T_57 = mux(UInt<1>("h0"), UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 99:23] + node _io_wb_memory_read_data_T_58 = bits(io.bus.read_data, 15, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 99:38] + node _io_wb_memory_read_data_T_59 = cat(_io_wb_memory_read_data_T_57, _io_wb_memory_read_data_T_58) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 99:18] + node _io_wb_memory_read_data_T_60 = mux(UInt<1>("h0"), UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 100:23] + node _io_wb_memory_read_data_T_61 = bits(io.bus.read_data, 31, 16) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 100:38] + node _io_wb_memory_read_data_T_62 = cat(_io_wb_memory_read_data_T_60, _io_wb_memory_read_data_T_61) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 100:18] + node _io_wb_memory_read_data_T_63 = mux(_io_wb_memory_read_data_T_56, _io_wb_memory_read_data_T_59, _io_wb_memory_read_data_T_62) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 97:41] + node _io_wb_memory_read_data_T_64 = eq(UInt<1>("h0"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_65 = mux(_io_wb_memory_read_data_T_64, _io_wb_memory_read_data_T_25, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_66 = eq(UInt<3>("h4"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_67 = mux(_io_wb_memory_read_data_T_66, _io_wb_memory_read_data_T_43, _io_wb_memory_read_data_T_65) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_68 = eq(UInt<1>("h1"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_69 = mux(_io_wb_memory_read_data_T_68, _io_wb_memory_read_data_T_55, _io_wb_memory_read_data_T_67) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_70 = eq(UInt<3>("h5"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_71 = mux(_io_wb_memory_read_data_T_70, _io_wb_memory_read_data_T_63, _io_wb_memory_read_data_T_69) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_72 = eq(UInt<2>("h2"), io.funct3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_wb_memory_read_data_T_73 = mux(_io_wb_memory_read_data_T_72, io.bus.read_data, _io_wb_memory_read_data_T_71) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.wb_memory_read_data <= _io_wb_memory_read_data_T_73 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 70:32] + mem_access_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 42:22] + io.ctrl_stall_flag <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 43:24] + else : + when io.memory_write_enable : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38] + node _T_2 = eq(mem_access_state, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:27] + when _T_2 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56] + io.ctrl_stall_flag <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 111:26] + io.bus.write_data <= io.reg2_data @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 112:25] + io.bus.write <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 113:20] + wire _WIRE_1 : UInt<1>[4] @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:37] + _WIRE_1[0] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:37] + _WIRE_1[1] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:37] + _WIRE_1[2] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:37] + _WIRE_1[3] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:37] + io.bus.write_strobe <= _WIRE_1 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:27] + node _T_3 = eq(io.funct3, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:22] + when _T_3 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:48] + io.bus.write_strobe[mem_address_index] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 116:48] + node _io_bus_write_data_T = bits(io.reg2_data, 8, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:42] + node _io_bus_write_data_T_1 = dshl(mem_address_index, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:89] + node _io_bus_write_data_T_2 = dshl(_io_bus_write_data_T, _io_bus_write_data_T_1) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:67] + io.bus.write_data <= _io_bus_write_data_T_2 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:27] + else : + node _T_4 = eq(io.funct3, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 118:28] + when _T_4 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 118:54] + node _T_5 = eq(mem_address_index, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 119:32] + when _T_5 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 119:41] + io.bus.write_strobe[0] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 121:36] + io.bus.write_strobe[1] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 121:36] + node _io_bus_write_data_T_3 = bits(io.reg2_data, 16, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 123:44] + io.bus.write_data <= _io_bus_write_data_T_3 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 123:29] + else : + io.bus.write_strobe[2] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 126:36] + io.bus.write_strobe[3] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 126:36] + node _io_bus_write_data_T_4 = bits(io.reg2_data, 16, 0) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 128:44] + node _io_bus_write_data_T_5 = shl(_io_bus_write_data_T_4, 16) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 128:95] + io.bus.write_data <= _io_bus_write_data_T_5 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 128:29] + else : + node _T_6 = eq(io.funct3, UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 131:28] + when _T_6 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 131:54] + io.bus.write_strobe[0] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 133:34] + io.bus.write_strobe[1] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 133:34] + io.bus.write_strobe[2] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 133:34] + io.bus.write_strobe[3] <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 133:34] + io.bus.request <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 136:22] + when io.bus.granted : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 137:28] + mem_access_state <= UInt<2>("h2") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 138:26] + else : + node _T_7 = eq(mem_access_state, UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 140:33] + when _T_7 : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 140:63] + io.bus.request <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 141:22] + io.ctrl_stall_flag <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 142:26] + io.bus.write <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 143:20] + when io.bus.write_valid : @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 144:32] + mem_access_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 42:22] + io.ctrl_stall_flag <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 43:24] + node _io_forward_to_ex_T = eq(io.regs_write_source, UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 150:48] + node _io_forward_to_ex_T_1 = mux(_io_forward_to_ex_T, io.csr_read_data, io.alu_result) @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 150:26] + io.forward_to_ex <= _io_forward_to_ex_T_1 @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 150:20] + + module PipelineRegister_29 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_30 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_31 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<1>, out : UInt<1>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_32 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<2>, out : UInt<2>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<2>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_33 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<5>, out : UInt<5>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<5>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_34 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module PipelineRegister_35 : + input clock : Clock + input reset : Reset + output io : { flip write_enable : UInt<1>, flip flush_enable : UInt<1>, flip in : UInt<32>, out : UInt<32>} @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + + reg reg : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + when io.write_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg <= io.in @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + else : + when io.flush_enable : @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32:9] + io.out <= reg @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + + module MEM2WB : + input clock : Clock + input reset : Reset + output io : { flip instruction_address : UInt<32>, flip alu_result : UInt<32>, flip regs_write_enable : UInt<1>, flip regs_write_source : UInt<2>, flip regs_write_address : UInt<32>, flip memory_read_data : UInt<32>, flip csr_read_data : UInt<32>, output_instruction_address : UInt<32>, output_alu_result : UInt<32>, output_regs_write_enable : UInt<1>, output_regs_write_source : UInt<2>, output_regs_write_address : UInt<32>, output_memory_read_data : UInt<32>, output_csr_read_data : UInt<32>} @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + + inst alu_result of PipelineRegister_29 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + alu_result.clock <= clock + alu_result.reset <= reset + alu_result.io.in <= io.alu_result @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 42:20] + alu_result.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 43:30] + alu_result.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 44:30] + io.output_alu_result <= alu_result.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 45:24] + inst memory_read_data of PipelineRegister_30 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + memory_read_data.clock <= clock + memory_read_data.reset <= reset + memory_read_data.io.in <= io.memory_read_data @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 48:26] + memory_read_data.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 49:36] + memory_read_data.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 50:36] + io.output_memory_read_data <= memory_read_data.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 51:30] + inst regs_write_enable of PipelineRegister_31 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + regs_write_enable.clock <= clock + regs_write_enable.reset <= reset + regs_write_enable.io.in <= io.regs_write_enable @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 54:27] + regs_write_enable.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 55:37] + regs_write_enable.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 56:37] + io.output_regs_write_enable <= regs_write_enable.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 57:31] + inst regs_write_source of PipelineRegister_32 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + regs_write_source.clock <= clock + regs_write_source.reset <= reset + regs_write_source.io.in <= io.regs_write_source @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 60:27] + regs_write_source.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 61:37] + regs_write_source.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 62:37] + io.output_regs_write_source <= regs_write_source.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 63:31] + inst regs_write_address of PipelineRegister_33 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + regs_write_address.clock <= clock + regs_write_address.reset <= reset + regs_write_address.io.in <= io.regs_write_address @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 66:28] + regs_write_address.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 67:38] + regs_write_address.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 68:38] + io.output_regs_write_address <= regs_write_address.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 69:32] + inst instruction_address of PipelineRegister_34 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + instruction_address.clock <= clock + instruction_address.reset <= reset + instruction_address.io.in <= io.instruction_address @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 72:29] + instruction_address.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 73:39] + instruction_address.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 74:39] + io.output_instruction_address <= instruction_address.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 75:33] + inst csr_read_data of PipelineRegister_35 @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + csr_read_data.clock <= clock + csr_read_data.reset <= reset + csr_read_data.io.in <= io.csr_read_data @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 78:23] + csr_read_data.io.write_enable <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 79:33] + csr_read_data.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 80:33] + io.output_csr_read_data <= csr_read_data.io.out @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 81:27] + + module WriteBack : + input clock : Clock + input reset : Reset + output io : { flip instruction_address : UInt<32>, flip alu_result : UInt<32>, flip memory_read_data : UInt<32>, flip regs_write_source : UInt<2>, flip csr_read_data : UInt<32>, regs_write_data : UInt<32>} @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] + + node _io_regs_write_data_T = add(io.instruction_address, UInt<3>("h4")) @[src/main/scala/riscv/core/fivestage/WriteBack.scala 37:72] + node _io_regs_write_data_T_1 = tail(_io_regs_write_data_T, 1) @[src/main/scala/riscv/core/fivestage/WriteBack.scala 37:72] + node _io_regs_write_data_T_2 = eq(UInt<2>("h1"), io.regs_write_source) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_regs_write_data_T_3 = mux(_io_regs_write_data_T_2, io.memory_read_data, io.alu_result) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_regs_write_data_T_4 = eq(UInt<2>("h2"), io.regs_write_source) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_regs_write_data_T_5 = mux(_io_regs_write_data_T_4, io.csr_read_data, _io_regs_write_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_regs_write_data_T_6 = eq(UInt<2>("h3"), io.regs_write_source) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_regs_write_data_T_7 = mux(_io_regs_write_data_T_6, _io_regs_write_data_T_1, _io_regs_write_data_T_5) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.regs_write_data <= _io_regs_write_data_T_7 @[src/main/scala/riscv/core/fivestage/WriteBack.scala 31:22] + + module Forwarding : + input clock : Clock + input reset : Reset + output io : { flip rs1_ex : UInt<5>, flip rs2_ex : UInt<5>, flip rd_mem : UInt<5>, flip reg_write_enable_mem : UInt<1>, flip rd_wb : UInt<5>, flip reg_write_enable_wb : UInt<1>, aluop1_forward_ex : UInt<2>, aluop2_forward_ex : UInt<2>} @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + + node _T = neq(io.rd_mem, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:45] + node _T_1 = and(io.reg_write_enable_mem, _T) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:32] + node _T_2 = eq(io.rd_mem, io.rs1_ex) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:66] + node _T_3 = and(_T_1, _T_2) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:53] + when _T_3 : @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:81] + io.aluop1_forward_ex <= UInt<2>("h1") @[src/main/scala/riscv/core/fivestage/Forwarding.scala 39:26] + else : + node _T_4 = neq(io.rd_wb, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:49] + node _T_5 = and(io.reg_write_enable_wb, _T_4) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:37] + node _T_6 = eq(io.rd_wb, io.rs1_ex) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:69] + node _T_7 = and(_T_5, _T_6) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:57] + when _T_7 : @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:84] + io.aluop1_forward_ex <= UInt<2>("h2") @[src/main/scala/riscv/core/fivestage/Forwarding.scala 41:26] + else : + io.aluop1_forward_ex <= UInt<2>("h0") @[src/main/scala/riscv/core/fivestage/Forwarding.scala 43:26] + node _T_8 = neq(io.rd_mem, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 46:45] + node _T_9 = and(io.reg_write_enable_mem, _T_8) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 46:32] + node _T_10 = eq(io.rd_mem, io.rs2_ex) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 46:66] + node _T_11 = and(_T_9, _T_10) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 46:53] + when _T_11 : @[src/main/scala/riscv/core/fivestage/Forwarding.scala 46:81] + io.aluop2_forward_ex <= UInt<2>("h1") @[src/main/scala/riscv/core/fivestage/Forwarding.scala 47:26] + else : + node _T_12 = neq(io.rd_wb, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 48:49] + node _T_13 = and(io.reg_write_enable_wb, _T_12) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 48:37] + node _T_14 = eq(io.rd_wb, io.rs2_ex) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 48:69] + node _T_15 = and(_T_13, _T_14) @[src/main/scala/riscv/core/fivestage/Forwarding.scala 48:57] + when _T_15 : @[src/main/scala/riscv/core/fivestage/Forwarding.scala 48:84] + io.aluop2_forward_ex <= UInt<2>("h2") @[src/main/scala/riscv/core/fivestage/Forwarding.scala 49:26] + else : + io.aluop2_forward_ex <= UInt<2>("h0") @[src/main/scala/riscv/core/fivestage/Forwarding.scala 51:26] + + + module CLINT : + input clock : Clock + input reset : Reset + output io : { flip interrupt_flag : UInt<32>, flip instruction : UInt<32>, flip instruction_address_if : UInt<32>, flip jump_flag : UInt<1>, flip jump_address : UInt<32>, flip csr_mtvec : UInt<32>, flip csr_mepc : UInt<32>, flip csr_mstatus : UInt<32>, flip interrupt_enable : UInt<1>, ctrl_stall_flag : UInt<1>, csr_reg_write_enable : UInt<1>, csr_reg_write_address : UInt<12>, csr_reg_write_data : UInt<32>, id_interrupt_handler_address : UInt<32>, id_interrupt_assert : UInt<1>} @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + + wire interrupt_state : UInt @[src/main/scala/riscv/core/fivestage/CLINT.scala 76:33] + interrupt_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CLINT.scala 76:33] + reg csr_state : UInt, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 77:26] + reg instruction_address : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 78:36] + reg cause : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 79:22] + reg interrupt_assert : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 80:33] + reg interrupt_handler_address : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 81:42] + reg csr_reg_write_enable : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 82:37] + reg csr_reg_write_address : UInt<12>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 83:38] + reg csr_reg_write_data : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 84:35] + node _io_ctrl_stall_flag_T = neq(interrupt_state, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 86:41] + node _io_ctrl_stall_flag_T_1 = neq(csr_state, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 86:78] + node _io_ctrl_stall_flag_T_2 = or(_io_ctrl_stall_flag_T, _io_ctrl_stall_flag_T_1) @[src/main/scala/riscv/core/fivestage/CLINT.scala 86:65] + io.ctrl_stall_flag <= _io_ctrl_stall_flag_T_2 @[src/main/scala/riscv/core/fivestage/CLINT.scala 86:22] + node _T = eq(io.instruction, UInt<32>("h73")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 89:23] + node _T_1 = eq(io.instruction, UInt<32>("h100073")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 89:67] + node _T_2 = or(_T, _T_1) @[src/main/scala/riscv/core/fivestage/CLINT.scala 89:49] + when _T_2 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 89:95] + interrupt_state <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/CLINT.scala 90:21] + else : + node _T_3 = neq(io.interrupt_flag, UInt<8>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 91:32] + node _T_4 = and(_T_3, io.interrupt_enable) @[src/main/scala/riscv/core/fivestage/CLINT.scala 91:57] + when _T_4 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 91:81] + interrupt_state <= UInt<2>("h2") @[src/main/scala/riscv/core/fivestage/CLINT.scala 92:21] + else : + node _T_5 = eq(io.instruction, UInt<32>("h30200073")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 93:29] + when _T_5 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 93:55] + interrupt_state <= UInt<2>("h3") @[src/main/scala/riscv/core/fivestage/CLINT.scala 94:21] + else : + interrupt_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CLINT.scala 96:21] + node _T_6 = eq(csr_state, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 100:18] + when _T_6 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 100:37] + node _T_7 = eq(interrupt_state, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 101:26] + when _T_7 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 101:57] + csr_state <= UInt<2>("h2") @[src/main/scala/riscv/core/fivestage/CLINT.scala 103:17] + node _instruction_address_T = sub(io.jump_address, UInt<3>("h4")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 106:25] + node _instruction_address_T_1 = tail(_instruction_address_T, 1) @[src/main/scala/riscv/core/fivestage/CLINT.scala 106:25] + node _instruction_address_T_2 = mux(io.jump_flag, _instruction_address_T_1, io.instruction_address_if) @[src/main/scala/riscv/core/fivestage/CLINT.scala 104:33] + instruction_address <= _instruction_address_T_2 @[src/main/scala/riscv/core/fivestage/CLINT.scala 104:27] + node _cause_T = eq(UInt<32>("h73"), io.instruction) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _cause_T_1 = mux(_cause_T, UInt<4>("hb"), UInt<4>("ha")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _cause_T_2 = eq(UInt<32>("h100073"), io.instruction) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _cause_T_3 = mux(_cause_T_2, UInt<2>("h3"), _cause_T_1) @[src/main/scala/chisel3/util/Mux.scala 77:13] + cause <= _cause_T_3 @[src/main/scala/riscv/core/fivestage/CLINT.scala 110:13] + else : + node _T_8 = eq(interrupt_state, UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 118:32] + when _T_8 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 118:64] + cause <= UInt<32>("h8000000b") @[src/main/scala/riscv/core/fivestage/CLINT.scala 120:13] + node _T_9 = bits(io.interrupt_flag, 0, 0) @[src/main/scala/riscv/core/fivestage/CLINT.scala 121:29] + when _T_9 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 121:34] + cause <= UInt<32>("h80000007") @[src/main/scala/riscv/core/fivestage/CLINT.scala 122:15] + csr_state <= UInt<2>("h2") @[src/main/scala/riscv/core/fivestage/CLINT.scala 124:17] + node _instruction_address_T_3 = mux(io.jump_flag, io.jump_address, io.instruction_address_if) @[src/main/scala/riscv/core/fivestage/CLINT.scala 125:33] + instruction_address <= _instruction_address_T_3 @[src/main/scala/riscv/core/fivestage/CLINT.scala 125:27] + else : + node _T_10 = eq(interrupt_state, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 130:32] + when _T_10 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 130:57] + csr_state <= UInt<2>("h3") @[src/main/scala/riscv/core/fivestage/CLINT.scala 132:17] + else : + node _T_11 = eq(csr_state, UInt<2>("h2")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 134:24] + when _T_11 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 134:43] + csr_state <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/CLINT.scala 135:15] + else : + node _T_12 = eq(csr_state, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 136:24] + when _T_12 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 136:46] + csr_state <= UInt<3>("h4") @[src/main/scala/riscv/core/fivestage/CLINT.scala 137:15] + else : + node _T_13 = eq(csr_state, UInt<3>("h4")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 138:24] + when _T_13 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 138:45] + csr_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CLINT.scala 139:15] + else : + node _T_14 = eq(csr_state, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 140:24] + when _T_14 : @[src/main/scala/riscv/core/fivestage/CLINT.scala 140:43] + csr_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CLINT.scala 141:15] + else : + csr_state <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CLINT.scala 143:15] + node _csr_reg_write_enable_T = neq(csr_state, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 146:37] + csr_reg_write_enable <= _csr_reg_write_enable_T @[src/main/scala/riscv/core/fivestage/CLINT.scala 146:24] + node _csr_reg_write_address_T = mux(UInt<1>("h0"), UInt<20>("hfffff"), UInt<20>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 147:36] + node _csr_reg_write_address_T_1 = eq(UInt<2>("h2"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_2 = mux(_csr_reg_write_address_T_1, UInt<12>("h341"), UInt<12>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_3 = eq(UInt<3>("h4"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_4 = mux(_csr_reg_write_address_T_3, UInt<12>("h342"), _csr_reg_write_address_T_2) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_5 = eq(UInt<1>("h1"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_6 = mux(_csr_reg_write_address_T_5, UInt<12>("h300"), _csr_reg_write_address_T_4) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_7 = eq(UInt<2>("h3"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_8 = mux(_csr_reg_write_address_T_7, UInt<12>("h300"), _csr_reg_write_address_T_6) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_address_T_9 = cat(_csr_reg_write_address_T, _csr_reg_write_address_T_8) @[src/main/scala/riscv/core/fivestage/CLINT.scala 147:31] + csr_reg_write_address <= _csr_reg_write_address_T_9 @[src/main/scala/riscv/core/fivestage/CLINT.scala 147:25] + node _csr_reg_write_data_T = bits(io.csr_mstatus, 31, 4) @[src/main/scala/riscv/core/fivestage/CLINT.scala 163:45] + node _csr_reg_write_data_T_1 = bits(io.csr_mstatus, 2, 0) @[src/main/scala/riscv/core/fivestage/CLINT.scala 163:78] + node csr_reg_write_data_hi = cat(_csr_reg_write_data_T, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 163:30] + node _csr_reg_write_data_T_2 = cat(csr_reg_write_data_hi, _csr_reg_write_data_T_1) @[src/main/scala/riscv/core/fivestage/CLINT.scala 163:30] + node _csr_reg_write_data_T_3 = bits(io.csr_mstatus, 31, 4) @[src/main/scala/riscv/core/fivestage/CLINT.scala 164:42] + node _csr_reg_write_data_T_4 = bits(io.csr_mstatus, 7, 7) @[src/main/scala/riscv/core/fivestage/CLINT.scala 164:65] + node _csr_reg_write_data_T_5 = bits(io.csr_mstatus, 2, 0) @[src/main/scala/riscv/core/fivestage/CLINT.scala 164:84] + node csr_reg_write_data_hi_1 = cat(_csr_reg_write_data_T_3, _csr_reg_write_data_T_4) @[src/main/scala/riscv/core/fivestage/CLINT.scala 164:27] + node _csr_reg_write_data_T_6 = cat(csr_reg_write_data_hi_1, _csr_reg_write_data_T_5) @[src/main/scala/riscv/core/fivestage/CLINT.scala 164:27] + node _csr_reg_write_data_T_7 = eq(UInt<2>("h2"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_8 = mux(_csr_reg_write_data_T_7, instruction_address, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_9 = eq(UInt<3>("h4"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_10 = mux(_csr_reg_write_data_T_9, cause, _csr_reg_write_data_T_8) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_11 = eq(UInt<1>("h1"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_12 = mux(_csr_reg_write_data_T_11, _csr_reg_write_data_T_2, _csr_reg_write_data_T_10) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_13 = eq(UInt<2>("h3"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _csr_reg_write_data_T_14 = mux(_csr_reg_write_data_T_13, _csr_reg_write_data_T_6, _csr_reg_write_data_T_12) @[src/main/scala/chisel3/util/Mux.scala 77:13] + csr_reg_write_data <= _csr_reg_write_data_T_14 @[src/main/scala/riscv/core/fivestage/CLINT.scala 157:22] + io.csr_reg_write_enable <= csr_reg_write_enable @[src/main/scala/riscv/core/fivestage/CLINT.scala 167:27] + io.csr_reg_write_address <= csr_reg_write_address @[src/main/scala/riscv/core/fivestage/CLINT.scala 168:28] + io.csr_reg_write_data <= csr_reg_write_data @[src/main/scala/riscv/core/fivestage/CLINT.scala 169:25] + node _interrupt_assert_T = eq(csr_state, UInt<3>("h4")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 171:33] + node _interrupt_assert_T_1 = eq(csr_state, UInt<2>("h3")) @[src/main/scala/riscv/core/fivestage/CLINT.scala 171:66] + node _interrupt_assert_T_2 = or(_interrupt_assert_T, _interrupt_assert_T_1) @[src/main/scala/riscv/core/fivestage/CLINT.scala 171:53] + interrupt_assert <= _interrupt_assert_T_2 @[src/main/scala/riscv/core/fivestage/CLINT.scala 171:20] + node _interrupt_handler_address_T = eq(UInt<3>("h4"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _interrupt_handler_address_T_1 = mux(_interrupt_handler_address_T, io.csr_mtvec, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _interrupt_handler_address_T_2 = eq(UInt<2>("h3"), csr_state) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _interrupt_handler_address_T_3 = mux(_interrupt_handler_address_T_2, io.csr_mepc, _interrupt_handler_address_T_1) @[src/main/scala/chisel3/util/Mux.scala 77:13] + interrupt_handler_address <= _interrupt_handler_address_T_3 @[src/main/scala/riscv/core/fivestage/CLINT.scala 172:29] + io.id_interrupt_assert <= interrupt_assert @[src/main/scala/riscv/core/fivestage/CLINT.scala 181:26] + io.id_interrupt_handler_address <= interrupt_handler_address @[src/main/scala/riscv/core/fivestage/CLINT.scala 182:35] + + module CSR : + input clock : Clock + input reset : Reset + output io : { flip reg_write_enable_ex : UInt<1>, flip reg_read_address_id : UInt<12>, flip reg_write_address_ex : UInt<12>, flip reg_write_data_ex : UInt<32>, flip reg_write_enable_clint : UInt<1>, flip reg_read_address_clint : UInt<12>, flip reg_write_address_clint : UInt<12>, flip reg_write_data_clint : UInt<32>, interrupt_enable : UInt<1>, id_reg_data : UInt<32>, clint_reg_data : UInt<32>, clint_csr_mtvec : UInt<32>, clint_csr_mepc : UInt<32>, clint_csr_mstatus : UInt<32>} @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + + reg cycles : UInt<64>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 57:23] + reg mtvec : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 58:22] + reg mcause : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 59:23] + reg mepc : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 60:21] + reg mie : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 61:20] + reg mstatus : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 62:24] + reg mscratch : UInt<32>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CSR.scala 63:25] + node _cycles_T = add(cycles, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/CSR.scala 65:20] + node _cycles_T_1 = tail(_cycles_T, 1) @[src/main/scala/riscv/core/fivestage/CSR.scala 65:20] + cycles <= _cycles_T_1 @[src/main/scala/riscv/core/fivestage/CSR.scala 65:10] + io.clint_csr_mtvec <= mtvec @[src/main/scala/riscv/core/fivestage/CSR.scala 66:22] + io.clint_csr_mepc <= mepc @[src/main/scala/riscv/core/fivestage/CSR.scala 67:21] + io.clint_csr_mstatus <= mstatus @[src/main/scala/riscv/core/fivestage/CSR.scala 68:24] + node _io_interrupt_enable_T = bits(mstatus, 3, 3) @[src/main/scala/riscv/core/fivestage/CSR.scala 69:33] + node _io_interrupt_enable_T_1 = eq(_io_interrupt_enable_T, UInt<1>("h1")) @[src/main/scala/riscv/core/fivestage/CSR.scala 69:37] + io.interrupt_enable <= _io_interrupt_enable_T_1 @[src/main/scala/riscv/core/fivestage/CSR.scala 69:23] + wire reg_write_address : UInt<12> @[src/main/scala/riscv/core/fivestage/CSR.scala 71:31] + wire reg_write_data : UInt<32> @[src/main/scala/riscv/core/fivestage/CSR.scala 72:28] + reg_write_address <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CSR.scala 73:21] + reg_write_data <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CSR.scala 74:18] + wire reg_read_address : UInt<12> @[src/main/scala/riscv/core/fivestage/CSR.scala 76:30] + wire reg_read_data : UInt<32> @[src/main/scala/riscv/core/fivestage/CSR.scala 77:27] + reg_read_address <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CSR.scala 78:20] + reg_read_data <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CSR.scala 79:17] + when io.reg_write_enable_ex : @[src/main/scala/riscv/core/fivestage/CSR.scala 81:32] + node _reg_write_address_T = bits(io.reg_write_address_ex, 11, 0) @[src/main/scala/riscv/core/fivestage/CSR.scala 82:49] + reg_write_address <= _reg_write_address_T @[src/main/scala/riscv/core/fivestage/CSR.scala 82:23] + reg_write_data <= io.reg_write_data_ex @[src/main/scala/riscv/core/fivestage/CSR.scala 83:20] + else : + when io.reg_write_enable_clint : @[src/main/scala/riscv/core/fivestage/CSR.scala 84:41] + node _reg_write_address_T_1 = bits(io.reg_write_address_clint, 11, 0) @[src/main/scala/riscv/core/fivestage/CSR.scala 85:52] + reg_write_address <= _reg_write_address_T_1 @[src/main/scala/riscv/core/fivestage/CSR.scala 85:23] + reg_write_data <= io.reg_write_data_clint @[src/main/scala/riscv/core/fivestage/CSR.scala 86:20] + node _T = eq(reg_write_address, UInt<12>("h305")) @[src/main/scala/riscv/core/fivestage/CSR.scala 89:26] + when _T : @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + mtvec <= reg_write_data @[src/main/scala/riscv/core/fivestage/CSR.scala 90:11] + else : + node _T_1 = eq(reg_write_address, UInt<12>("h342")) @[src/main/scala/riscv/core/fivestage/CSR.scala 91:32] + when _T_1 : @[src/main/scala/riscv/core/fivestage/CSR.scala 91:56] + mcause <= reg_write_data @[src/main/scala/riscv/core/fivestage/CSR.scala 92:12] + else : + node _T_2 = eq(reg_write_address, UInt<12>("h341")) @[src/main/scala/riscv/core/fivestage/CSR.scala 93:32] + when _T_2 : @[src/main/scala/riscv/core/fivestage/CSR.scala 93:54] + mepc <= reg_write_data @[src/main/scala/riscv/core/fivestage/CSR.scala 94:10] + else : + node _T_3 = eq(reg_write_address, UInt<12>("h304")) @[src/main/scala/riscv/core/fivestage/CSR.scala 95:32] + when _T_3 : @[src/main/scala/riscv/core/fivestage/CSR.scala 95:53] + mie <= reg_write_data @[src/main/scala/riscv/core/fivestage/CSR.scala 96:9] + else : + node _T_4 = eq(reg_write_address, UInt<12>("h300")) @[src/main/scala/riscv/core/fivestage/CSR.scala 97:32] + when _T_4 : @[src/main/scala/riscv/core/fivestage/CSR.scala 97:57] + mstatus <= reg_write_data @[src/main/scala/riscv/core/fivestage/CSR.scala 98:13] + else : + node _T_5 = eq(reg_write_address, UInt<12>("h340")) @[src/main/scala/riscv/core/fivestage/CSR.scala 99:32] + when _T_5 : @[src/main/scala/riscv/core/fivestage/CSR.scala 99:58] + mscratch <= reg_write_data @[src/main/scala/riscv/core/fivestage/CSR.scala 100:14] + node _T_6 = bits(cycles, 31, 0) @[src/main/scala/riscv/core/fivestage/CSR.scala 105:35] + node _T_7 = bits(cycles, 63, 32) @[src/main/scala/riscv/core/fivestage/CSR.scala 106:35] + node _io_id_reg_data_T = eq(UInt<12>("hc00"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_1 = mux(_io_id_reg_data_T, _T_6, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_2 = eq(UInt<12>("hc80"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_3 = mux(_io_id_reg_data_T_2, _T_7, _io_id_reg_data_T_1) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_4 = eq(UInt<12>("h305"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_5 = mux(_io_id_reg_data_T_4, mtvec, _io_id_reg_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_6 = eq(UInt<12>("h342"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_7 = mux(_io_id_reg_data_T_6, mcause, _io_id_reg_data_T_5) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_8 = eq(UInt<12>("h341"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_9 = mux(_io_id_reg_data_T_8, mepc, _io_id_reg_data_T_7) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_10 = eq(UInt<12>("h304"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_11 = mux(_io_id_reg_data_T_10, mie, _io_id_reg_data_T_9) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_12 = eq(UInt<12>("h300"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_13 = mux(_io_id_reg_data_T_12, mstatus, _io_id_reg_data_T_11) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_14 = eq(UInt<12>("h340"), io.reg_read_address_id) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_id_reg_data_T_15 = mux(_io_id_reg_data_T_14, mscratch, _io_id_reg_data_T_13) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.id_reg_data <= _io_id_reg_data_T_15 @[src/main/scala/riscv/core/fivestage/CSR.scala 115:18] + node _io_clint_reg_data_T = eq(UInt<12>("hc00"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_1 = mux(_io_clint_reg_data_T, _T_6, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_2 = eq(UInt<12>("hc80"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_3 = mux(_io_clint_reg_data_T_2, _T_7, _io_clint_reg_data_T_1) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_4 = eq(UInt<12>("h305"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_5 = mux(_io_clint_reg_data_T_4, mtvec, _io_clint_reg_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_6 = eq(UInt<12>("h342"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_7 = mux(_io_clint_reg_data_T_6, mcause, _io_clint_reg_data_T_5) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_8 = eq(UInt<12>("h341"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_9 = mux(_io_clint_reg_data_T_8, mepc, _io_clint_reg_data_T_7) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_10 = eq(UInt<12>("h304"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_11 = mux(_io_clint_reg_data_T_10, mie, _io_clint_reg_data_T_9) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_12 = eq(UInt<12>("h300"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_13 = mux(_io_clint_reg_data_T_12, mstatus, _io_clint_reg_data_T_11) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_14 = eq(UInt<12>("h340"), io.reg_read_address_clint) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _io_clint_reg_data_T_15 = mux(_io_clint_reg_data_T_14, mscratch, _io_clint_reg_data_T_13) @[src/main/scala/chisel3/util/Mux.scala 77:13] + io.clint_reg_data <= _io_clint_reg_data_T_15 @[src/main/scala/riscv/core/fivestage/CSR.scala 121:21] + + module AXI4LiteMaster : + input clock : Clock + input reset : Reset + output io : { channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { flip read : UInt<1>, flip write : UInt<1>, read_data : UInt<32>, flip write_data : UInt<32>, flip write_strobe : UInt<1>[4], flip address : UInt<32>, busy : UInt<1>, read_valid : UInt<1>, write_valid : UInt<1>}} @[src/main/scala/bus/AXI4Lite.scala 215:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 219:22] + node _io_bundle_busy_T = neq(state, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 220:27] + io.bundle.busy <= _io_bundle_busy_T @[src/main/scala/bus/AXI4Lite.scala 220:18] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 222:21] + reg read_valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 223:27] + io.bundle.read_valid <= read_valid @[src/main/scala/bus/AXI4Lite.scala 224:24] + reg write_valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 225:28] + io.bundle.write_valid <= write_valid @[src/main/scala/bus/AXI4Lite.scala 226:25] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 227:27] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg read_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 229:26] + io.channels.read_address_channel.ARADDR <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 231:43] + reg ARVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 232:24] + io.channels.read_address_channel.ARVALID <= ARVALID @[src/main/scala/bus/AXI4Lite.scala 233:44] + io.channels.read_address_channel.ARPROT <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 234:43] + reg RREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 235:23] + io.channels.read_data_channel.RREADY <= RREADY @[src/main/scala/bus/AXI4Lite.scala 236:40] + io.bundle.read_data <= io.channels.read_data_channel.RDATA @[src/main/scala/bus/AXI4Lite.scala 238:23] + reg AWVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 239:24] + io.channels.write_address_channel.AWADDR <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 240:44] + io.channels.write_address_channel.AWVALID <= AWVALID @[src/main/scala/bus/AXI4Lite.scala 241:45] + reg WVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 242:23] + io.channels.write_data_channel.WVALID <= WVALID @[src/main/scala/bus/AXI4Lite.scala 243:41] + io.channels.write_data_channel.WDATA <= write_data @[src/main/scala/bus/AXI4Lite.scala 244:40] + io.channels.write_address_channel.AWPROT <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 245:44] + node io_channels_write_data_channel_WSTRB_lo = cat(write_strobe[1], write_strobe[0]) @[src/main/scala/bus/AXI4Lite.scala 246:56] + node io_channels_write_data_channel_WSTRB_hi = cat(write_strobe[3], write_strobe[2]) @[src/main/scala/bus/AXI4Lite.scala 246:56] + node _io_channels_write_data_channel_WSTRB_T = cat(io_channels_write_data_channel_WSTRB_hi, io_channels_write_data_channel_WSTRB_lo) @[src/main/scala/bus/AXI4Lite.scala 246:56] + io.channels.write_data_channel.WSTRB <= _io_channels_write_data_channel_WSTRB_T @[src/main/scala/bus/AXI4Lite.scala 246:40] + reg BREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 247:23] + io.channels.write_response_channel.BREADY <= BREADY @[src/main/scala/bus/AXI4Lite.scala 248:45] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 252:14] + AWVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 253:15] + ARVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 254:15] + RREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 255:14] + read_valid <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 256:18] + write_valid <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 257:19] + when io.bundle.write : @[src/main/scala/bus/AXI4Lite.scala 258:29] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 259:15] + addr <= io.bundle.address @[src/main/scala/bus/AXI4Lite.scala 260:14] + write_data <= io.bundle.write_data @[src/main/scala/bus/AXI4Lite.scala 261:20] + write_strobe <= io.bundle.write_strobe @[src/main/scala/bus/AXI4Lite.scala 262:22] + else : + when io.bundle.read : @[src/main/scala/bus/AXI4Lite.scala 263:34] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 264:15] + addr <= io.bundle.address @[src/main/scala/bus/AXI4Lite.scala 265:14] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + ARVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 269:15] + io.channels.read_address_channel.ARADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 270:47] + node _T_6 = and(io.channels.read_address_channel.ARREADY, ARVALID) @[src/main/scala/bus/AXI4Lite.scala 271:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 271:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 272:15] + io.channels.read_address_channel.ARADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 273:49] + ARVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 274:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_10 = eq(io.channels.read_data_channel.RRESP, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 278:88] + node _T_11 = and(io.channels.read_data_channel.RVALID, _T_10) @[src/main/scala/bus/AXI4Lite.scala 278:49] + when _T_11 : @[src/main/scala/bus/AXI4Lite.scala 278:97] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 279:15] + read_valid <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 280:20] + RREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 281:16] + read_data <= io.channels.read_data_channel.RDATA @[src/main/scala/bus/AXI4Lite.scala 282:19] + else : + node _T_12 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_13 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_14 = eq(_T_12, _T_13) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + AWVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 286:15] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 287:48] + node _T_15 = and(io.channels.write_address_channel.AWREADY, AWVALID) @[src/main/scala/bus/AXI4Lite.scala 288:54] + when _T_15 : @[src/main/scala/bus/AXI4Lite.scala 288:66] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 289:15] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 290:50] + AWVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 291:17] + else : + node _T_16 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_17 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_18 = eq(_T_16, _T_17) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 295:14] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 296:48] + node _T_19 = and(io.channels.write_data_channel.WREADY, WVALID) @[src/main/scala/bus/AXI4Lite.scala 297:50] + when _T_19 : @[src/main/scala/bus/AXI4Lite.scala 297:61] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 298:50] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 299:15] + WVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 300:16] + else : + node _T_20 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_21 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_22 = eq(_T_20, _T_21) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_22 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + BREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 304:14] + node _T_23 = and(io.channels.write_response_channel.BVALID, BREADY) @[src/main/scala/bus/AXI4Lite.scala 305:54] + when _T_23 : @[src/main/scala/bus/AXI4Lite.scala 305:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 306:15] + write_valid <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 307:21] + BREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 308:16] + + + module CPU : + input clock : Clock + input reset : Reset + output io : { axi4_channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bus_address : UInt<32>, flip interrupt_flag : UInt<32>, flip stall_flag_bus : UInt<1>, flip debug_read_address : UInt<5>, debug_read_data : UInt<32>, flip instruction_valid : UInt<1>, bus_busy : UInt<1>, debug : UInt<32>[6]} @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + + inst ctrl of Control @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + ctrl.clock <= clock + ctrl.reset <= reset + inst regs of RegisterFile @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + regs.clock <= clock + regs.reset <= reset + inst inst_fetch of InstructionFetch @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + inst_fetch.clock <= clock + inst_fetch.reset <= reset + inst if2id of IF2ID @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + if2id.clock <= clock + if2id.reset <= reset + inst id of InstructionDecode @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + id.clock <= clock + id.reset <= reset + inst id2ex of ID2EX @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + id2ex.clock <= clock + id2ex.reset <= reset + inst ex of Execute @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + ex.clock <= clock + ex.reset <= reset + inst ex2mem of EX2MEM @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + ex2mem.clock <= clock + ex2mem.reset <= reset + inst mem of MemoryAccess @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + mem.clock <= clock + mem.reset <= reset + inst mem2wb of MEM2WB @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + mem2wb.clock <= clock + mem2wb.reset <= reset + inst wb of WriteBack @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wb.clock <= clock + wb.reset <= reset + inst forwarding of Forwarding @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + forwarding.clock <= clock + forwarding.reset <= reset + inst clint of CLINT @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + clint.clock <= clock + clint.reset <= reset + inst csr_regs of CSR @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + csr_regs.clock <= clock + csr_regs.reset <= reset + inst axi4_master of AXI4LiteMaster @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + axi4_master.clock <= clock + axi4_master.reset <= reset + axi4_master.io.channels.read_data_channel.RRESP <= io.axi4_channels.read_data_channel.RRESP @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.read_data_channel.RDATA <= io.axi4_channels.read_data_channel.RDATA @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.read_data_channel.RREADY <= axi4_master.io.channels.read_data_channel.RREADY @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.read_data_channel.RVALID <= io.axi4_channels.read_data_channel.RVALID @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.read_address_channel.ARPROT <= axi4_master.io.channels.read_address_channel.ARPROT @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.read_address_channel.ARADDR <= axi4_master.io.channels.read_address_channel.ARADDR @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.read_address_channel.ARREADY <= io.axi4_channels.read_address_channel.ARREADY @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.read_address_channel.ARVALID <= axi4_master.io.channels.read_address_channel.ARVALID @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.write_response_channel.BRESP <= io.axi4_channels.write_response_channel.BRESP @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_response_channel.BREADY <= axi4_master.io.channels.write_response_channel.BREADY @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.write_response_channel.BVALID <= io.axi4_channels.write_response_channel.BVALID @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_data_channel.WSTRB <= axi4_master.io.channels.write_data_channel.WSTRB @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_data_channel.WDATA <= axi4_master.io.channels.write_data_channel.WDATA @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.write_data_channel.WREADY <= io.axi4_channels.write_data_channel.WREADY @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_data_channel.WVALID <= axi4_master.io.channels.write_data_channel.WVALID @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_address_channel.AWPROT <= axi4_master.io.channels.write_address_channel.AWPROT @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_address_channel.AWADDR <= axi4_master.io.channels.write_address_channel.AWADDR @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + axi4_master.io.channels.write_address_channel.AWREADY <= io.axi4_channels.write_address_channel.AWREADY @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.axi4_channels.write_address_channel.AWVALID <= axi4_master.io.channels.write_address_channel.AWVALID @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + io.debug[0] <= ex.io.reg1_data @[src/main/scala/riscv/core/fivestage/CPU.scala 42:15] + io.debug[1] <= ex.io.reg2_data @[src/main/scala/riscv/core/fivestage/CPU.scala 43:15] + io.debug[2] <= ex.io.instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 44:15] + io.debug[3] <= ex.io.instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 45:15] + io.debug[4] <= inst_fetch.io.jump_address_id @[src/main/scala/riscv/core/fivestage/CPU.scala 46:15] + io.debug[5] <= inst_fetch.io.jump_flag_id @[src/main/scala/riscv/core/fivestage/CPU.scala 47:15] + io.bus_busy <= axi4_master.io.bundle.busy @[src/main/scala/riscv/core/fivestage/CPU.scala 48:15] + reg mem_granted : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 51:28] + when mem_granted : @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21] + inst_fetch.io.instruction_valid <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 53:37] + io.bus_address <= mem.io.bus.address @[src/main/scala/riscv/core/fivestage/CPU.scala 54:20] + axi4_master.io.bundle.read <= mem.io.bus.read @[src/main/scala/riscv/core/fivestage/CPU.scala 55:32] + axi4_master.io.bundle.address <= mem.io.bus.address @[src/main/scala/riscv/core/fivestage/CPU.scala 56:35] + axi4_master.io.bundle.write <= mem.io.bus.write @[src/main/scala/riscv/core/fivestage/CPU.scala 57:33] + axi4_master.io.bundle.write_data <= mem.io.bus.write_data @[src/main/scala/riscv/core/fivestage/CPU.scala 58:38] + axi4_master.io.bundle.write_strobe[0] <= mem.io.bus.write_strobe[0] @[src/main/scala/riscv/core/fivestage/CPU.scala 59:40] + axi4_master.io.bundle.write_strobe[1] <= mem.io.bus.write_strobe[1] @[src/main/scala/riscv/core/fivestage/CPU.scala 59:40] + axi4_master.io.bundle.write_strobe[2] <= mem.io.bus.write_strobe[2] @[src/main/scala/riscv/core/fivestage/CPU.scala 59:40] + axi4_master.io.bundle.write_strobe[3] <= mem.io.bus.write_strobe[3] @[src/main/scala/riscv/core/fivestage/CPU.scala 59:40] + node _T = eq(mem.io.bus.request, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 60:10] + when _T : @[src/main/scala/riscv/core/fivestage/CPU.scala 60:31] + mem_granted <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 61:19] + else : + mem_granted <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 65:17] + node _axi4_master_io_bundle_read_T = eq(axi4_master.io.bundle.busy, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 66:35] + node _axi4_master_io_bundle_read_T_1 = eq(axi4_master.io.bundle.read_valid, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 66:66] + node _axi4_master_io_bundle_read_T_2 = and(_axi4_master_io_bundle_read_T, _axi4_master_io_bundle_read_T_1) @[src/main/scala/riscv/core/fivestage/CPU.scala 66:63] + node _axi4_master_io_bundle_read_T_3 = eq(mem.io.bus.request, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 66:103] + node _axi4_master_io_bundle_read_T_4 = and(_axi4_master_io_bundle_read_T_2, _axi4_master_io_bundle_read_T_3) @[src/main/scala/riscv/core/fivestage/CPU.scala 66:100] + axi4_master.io.bundle.read <= _axi4_master_io_bundle_read_T_4 @[src/main/scala/riscv/core/fivestage/CPU.scala 66:32] + axi4_master.io.bundle.address <= inst_fetch.io.bus_address @[src/main/scala/riscv/core/fivestage/CPU.scala 67:35] + io.bus_address <= inst_fetch.io.bus_address @[src/main/scala/riscv/core/fivestage/CPU.scala 68:20] + axi4_master.io.bundle.write <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 69:33] + axi4_master.io.bundle.write_data <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 70:38] + wire _WIRE : UInt<1>[4] @[src/main/scala/riscv/core/fivestage/CPU.scala 71:50] + _WIRE[0] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 71:50] + _WIRE[1] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 71:50] + _WIRE[2] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 71:50] + _WIRE[3] <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 71:50] + axi4_master.io.bundle.write_strobe[0] <= _WIRE[0] @[src/main/scala/riscv/core/fivestage/CPU.scala 71:40] + axi4_master.io.bundle.write_strobe[1] <= _WIRE[1] @[src/main/scala/riscv/core/fivestage/CPU.scala 71:40] + axi4_master.io.bundle.write_strobe[2] <= _WIRE[2] @[src/main/scala/riscv/core/fivestage/CPU.scala 71:40] + axi4_master.io.bundle.write_strobe[3] <= _WIRE[3] @[src/main/scala/riscv/core/fivestage/CPU.scala 71:40] + when mem.io.bus.request : @[src/main/scala/riscv/core/fivestage/CPU.scala 74:28] + node _T_1 = eq(axi4_master.io.bundle.busy, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 75:10] + node _T_2 = eq(axi4_master.io.bundle.read_valid, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 75:41] + node _T_3 = and(_T_1, _T_2) @[src/main/scala/riscv/core/fivestage/CPU.scala 75:38] + when _T_3 : @[src/main/scala/riscv/core/fivestage/CPU.scala 75:76] + mem_granted <= UInt<1>("h1") @[src/main/scala/riscv/core/fivestage/CPU.scala 76:19] + node _inst_fetch_io_instruction_valid_T = and(io.instruction_valid, axi4_master.io.bundle.read_valid) @[src/main/scala/riscv/core/fivestage/CPU.scala 80:59] + node _inst_fetch_io_instruction_valid_T_1 = eq(mem_granted, UInt<1>("h0")) @[src/main/scala/riscv/core/fivestage/CPU.scala 80:98] + node _inst_fetch_io_instruction_valid_T_2 = and(_inst_fetch_io_instruction_valid_T, _inst_fetch_io_instruction_valid_T_1) @[src/main/scala/riscv/core/fivestage/CPU.scala 80:95] + inst_fetch.io.instruction_valid <= _inst_fetch_io_instruction_valid_T_2 @[src/main/scala/riscv/core/fivestage/CPU.scala 80:35] + inst_fetch.io.bus_data <= axi4_master.io.bundle.read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 81:26] + mem.io.bus.read_data <= axi4_master.io.bundle.read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 83:24] + mem.io.bus.read_valid <= axi4_master.io.bundle.read_valid @[src/main/scala/riscv/core/fivestage/CPU.scala 84:25] + mem.io.bus.write_valid <= axi4_master.io.bundle.write_valid @[src/main/scala/riscv/core/fivestage/CPU.scala 85:26] + mem.io.bus.busy <= axi4_master.io.bundle.busy @[src/main/scala/riscv/core/fivestage/CPU.scala 86:19] + mem.io.bus.granted <= mem_granted @[src/main/scala/riscv/core/fivestage/CPU.scala 87:22] + ctrl.io.jump_flag <= id.io.if_jump_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 89:21] + ctrl.io.stall_flag_if <= inst_fetch.io.ctrl_stall_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 90:25] + ctrl.io.stall_flag_mem <= mem.io.ctrl_stall_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 91:26] + ctrl.io.stall_flag_clint <= clint.io.ctrl_stall_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 92:28] + ctrl.io.stall_flag_bus <= io.stall_flag_bus @[src/main/scala/riscv/core/fivestage/CPU.scala 93:26] + ctrl.io.rs1_id <= id.io.regs_reg1_read_address @[src/main/scala/riscv/core/fivestage/CPU.scala 94:18] + ctrl.io.rs2_id <= id.io.regs_reg2_read_address @[src/main/scala/riscv/core/fivestage/CPU.scala 95:18] + ctrl.io.memory_read_enable_ex <= ex2mem.io.memory_read_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 96:33] + ctrl.io.rd_ex <= ex2mem.io.regs_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 97:17] + regs.io.write_enable <= mem2wb.io.output_regs_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 99:24] + regs.io.write_address <= mem2wb.io.output_regs_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 100:25] + regs.io.write_data <= wb.io.regs_write_data @[src/main/scala/riscv/core/fivestage/CPU.scala 101:22] + regs.io.read_address1 <= id.io.regs_reg1_read_address @[src/main/scala/riscv/core/fivestage/CPU.scala 102:25] + regs.io.read_address2 <= id.io.regs_reg2_read_address @[src/main/scala/riscv/core/fivestage/CPU.scala 103:25] + regs.io.debug_read_address <= io.debug_read_address @[src/main/scala/riscv/core/fivestage/CPU.scala 105:30] + io.debug_read_data <= regs.io.debug_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 106:22] + inst_fetch.io.stall_flag_ctrl <= ctrl.io.pc_stall @[src/main/scala/riscv/core/fivestage/CPU.scala 108:33] + inst_fetch.io.jump_flag_id <= id.io.if_jump_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 109:30] + inst_fetch.io.jump_address_id <= id.io.if_jump_address @[src/main/scala/riscv/core/fivestage/CPU.scala 110:33] + if2id.io.stall_flag <= ctrl.io.if_stall @[src/main/scala/riscv/core/fivestage/CPU.scala 112:23] + if2id.io.flush_enable <= ctrl.io.if_flush @[src/main/scala/riscv/core/fivestage/CPU.scala 113:25] + if2id.io.instruction <= inst_fetch.io.id_instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 114:24] + if2id.io.instruction_address <= inst_fetch.io.id_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 115:32] + if2id.io.interrupt_flag <= io.interrupt_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 116:27] + id.io.reg1_data <= regs.io.read_data1 @[src/main/scala/riscv/core/fivestage/CPU.scala 118:19] + id.io.reg2_data <= regs.io.read_data2 @[src/main/scala/riscv/core/fivestage/CPU.scala 119:19] + id.io.instruction <= if2id.io.output_instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 120:21] + id.io.instruction_address <= if2id.io.output_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 121:29] + id.io.interrupt_assert <= clint.io.id_interrupt_assert @[src/main/scala/riscv/core/fivestage/CPU.scala 122:26] + id.io.interrupt_handler_address <= clint.io.id_interrupt_handler_address @[src/main/scala/riscv/core/fivestage/CPU.scala 123:35] + id2ex.io.stall_flag <= ctrl.io.id_stall @[src/main/scala/riscv/core/fivestage/CPU.scala 125:23] + id2ex.io.flush_enable <= ctrl.io.id_flush @[src/main/scala/riscv/core/fivestage/CPU.scala 126:25] + id2ex.io.instruction <= if2id.io.output_instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 127:24] + id2ex.io.instruction_address <= if2id.io.output_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 128:32] + id2ex.io.regs_write_enable <= id.io.ex_reg_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 129:30] + id2ex.io.regs_write_address <= id.io.ex_reg_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 130:31] + id2ex.io.regs_write_source <= id.io.ex_reg_write_source @[src/main/scala/riscv/core/fivestage/CPU.scala 131:30] + id2ex.io.reg1_data <= regs.io.read_data1 @[src/main/scala/riscv/core/fivestage/CPU.scala 132:22] + id2ex.io.reg2_data <= regs.io.read_data2 @[src/main/scala/riscv/core/fivestage/CPU.scala 133:22] + id2ex.io.immediate <= id.io.ex_immediate @[src/main/scala/riscv/core/fivestage/CPU.scala 134:22] + id2ex.io.aluop1_source <= id.io.ex_aluop1_source @[src/main/scala/riscv/core/fivestage/CPU.scala 135:26] + id2ex.io.aluop2_source <= id.io.ex_aluop2_source @[src/main/scala/riscv/core/fivestage/CPU.scala 136:26] + id2ex.io.csr_write_enable <= id.io.ex_csr_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 137:29] + id2ex.io.csr_address <= id.io.ex_csr_address @[src/main/scala/riscv/core/fivestage/CPU.scala 138:24] + id2ex.io.memory_read_enable <= id.io.ex_memory_read_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 139:31] + id2ex.io.memory_write_enable <= id.io.ex_memory_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 140:32] + id2ex.io.csr_read_data <= csr_regs.io.id_reg_data @[src/main/scala/riscv/core/fivestage/CPU.scala 141:26] + ex.io.instruction <= id2ex.io.output_instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 143:21] + ex.io.instruction_address <= id2ex.io.output_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 144:29] + ex.io.reg1_data <= id2ex.io.output_reg1_data @[src/main/scala/riscv/core/fivestage/CPU.scala 145:19] + ex.io.reg2_data <= id2ex.io.output_reg2_data @[src/main/scala/riscv/core/fivestage/CPU.scala 146:19] + ex.io.immediate <= id2ex.io.output_immediate @[src/main/scala/riscv/core/fivestage/CPU.scala 147:19] + ex.io.aluop1_source <= id2ex.io.output_aluop1_source @[src/main/scala/riscv/core/fivestage/CPU.scala 148:23] + ex.io.aluop2_source <= id2ex.io.output_aluop2_source @[src/main/scala/riscv/core/fivestage/CPU.scala 149:23] + ex.io.csr_read_data <= id2ex.io.output_csr_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 150:23] + ex.io.forward_from_mem <= mem.io.forward_to_ex @[src/main/scala/riscv/core/fivestage/CPU.scala 151:26] + ex.io.forward_from_wb <= wb.io.regs_write_data @[src/main/scala/riscv/core/fivestage/CPU.scala 152:25] + ex.io.aluop1_forward <= forwarding.io.aluop1_forward_ex @[src/main/scala/riscv/core/fivestage/CPU.scala 153:24] + ex.io.aluop2_forward <= forwarding.io.aluop2_forward_ex @[src/main/scala/riscv/core/fivestage/CPU.scala 154:24] + ex2mem.io.stall_flag <= ctrl.io.ex_stall @[src/main/scala/riscv/core/fivestage/CPU.scala 156:24] + ex2mem.io.flush_enable <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 157:26] + ex2mem.io.regs_write_enable <= id2ex.io.output_regs_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 158:31] + ex2mem.io.regs_write_source <= id2ex.io.output_regs_write_source @[src/main/scala/riscv/core/fivestage/CPU.scala 159:31] + ex2mem.io.regs_write_address <= id2ex.io.output_regs_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 160:32] + ex2mem.io.instruction_address <= id2ex.io.output_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 161:33] + ex2mem.io.instruction <= id2ex.io.output_instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 162:25] + ex2mem.io.reg1_data <= id2ex.io.output_reg1_data @[src/main/scala/riscv/core/fivestage/CPU.scala 163:23] + ex2mem.io.reg2_data <= id2ex.io.output_reg2_data @[src/main/scala/riscv/core/fivestage/CPU.scala 164:23] + ex2mem.io.memory_read_enable <= id2ex.io.output_memory_read_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 165:32] + ex2mem.io.memory_write_enable <= id2ex.io.output_memory_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 166:33] + ex2mem.io.alu_result <= ex.io.mem_alu_result @[src/main/scala/riscv/core/fivestage/CPU.scala 167:24] + ex2mem.io.csr_read_data <= id2ex.io.output_csr_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 168:27] + mem.io.alu_result <= ex2mem.io.output_alu_result @[src/main/scala/riscv/core/fivestage/CPU.scala 170:21] + mem.io.reg2_data <= ex2mem.io.output_reg2_data @[src/main/scala/riscv/core/fivestage/CPU.scala 171:20] + mem.io.memory_read_enable <= ex2mem.io.output_memory_read_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 172:29] + mem.io.memory_write_enable <= ex2mem.io.output_memory_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 173:30] + node _mem_io_funct3_T = bits(ex2mem.io.output_instruction, 14, 12) @[src/main/scala/riscv/core/fivestage/CPU.scala 174:48] + mem.io.funct3 <= _mem_io_funct3_T @[src/main/scala/riscv/core/fivestage/CPU.scala 174:17] + mem.io.regs_write_source <= ex2mem.io.output_regs_write_source @[src/main/scala/riscv/core/fivestage/CPU.scala 175:28] + mem.io.csr_read_data <= ex2mem.io.output_csr_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 176:24] + mem2wb.io.instruction_address <= ex2mem.io.output_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 178:33] + mem2wb.io.alu_result <= ex2mem.io.output_alu_result @[src/main/scala/riscv/core/fivestage/CPU.scala 179:24] + mem2wb.io.regs_write_enable <= ex2mem.io.output_regs_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 180:31] + mem2wb.io.regs_write_source <= ex2mem.io.output_regs_write_source @[src/main/scala/riscv/core/fivestage/CPU.scala 181:31] + mem2wb.io.regs_write_address <= ex2mem.io.output_regs_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 182:32] + mem2wb.io.memory_read_data <= mem.io.wb_memory_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 183:30] + mem2wb.io.csr_read_data <= ex2mem.io.output_csr_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 184:27] + wb.io.instruction_address <= mem2wb.io.output_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 186:29] + wb.io.alu_result <= mem2wb.io.output_alu_result @[src/main/scala/riscv/core/fivestage/CPU.scala 187:20] + wb.io.memory_read_data <= mem2wb.io.output_memory_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 188:26] + wb.io.regs_write_source <= mem2wb.io.output_regs_write_source @[src/main/scala/riscv/core/fivestage/CPU.scala 189:27] + wb.io.csr_read_data <= mem2wb.io.output_csr_read_data @[src/main/scala/riscv/core/fivestage/CPU.scala 190:23] + node _forwarding_io_rs1_ex_T = bits(id2ex.io.output_instruction, 19, 15) @[src/main/scala/riscv/core/fivestage/CPU.scala 192:54] + forwarding.io.rs1_ex <= _forwarding_io_rs1_ex_T @[src/main/scala/riscv/core/fivestage/CPU.scala 192:24] + node _forwarding_io_rs2_ex_T = bits(id2ex.io.output_instruction, 24, 20) @[src/main/scala/riscv/core/fivestage/CPU.scala 193:54] + forwarding.io.rs2_ex <= _forwarding_io_rs2_ex_T @[src/main/scala/riscv/core/fivestage/CPU.scala 193:24] + forwarding.io.rd_mem <= ex2mem.io.output_regs_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 194:24] + forwarding.io.reg_write_enable_mem <= ex2mem.io.output_regs_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 195:38] + forwarding.io.rd_wb <= mem2wb.io.output_regs_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 196:23] + forwarding.io.reg_write_enable_wb <= mem2wb.io.output_regs_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 197:37] + clint.io.instruction <= if2id.io.output_instruction @[src/main/scala/riscv/core/fivestage/CPU.scala 199:24] + clint.io.instruction_address_if <= inst_fetch.io.id_instruction_address @[src/main/scala/riscv/core/fivestage/CPU.scala 200:35] + clint.io.jump_flag <= id.io.if_jump_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 201:22] + clint.io.jump_address <= ex2mem.io.output_alu_result @[src/main/scala/riscv/core/fivestage/CPU.scala 202:25] + clint.io.csr_mepc <= csr_regs.io.clint_csr_mepc @[src/main/scala/riscv/core/fivestage/CPU.scala 203:21] + clint.io.csr_mtvec <= csr_regs.io.clint_csr_mtvec @[src/main/scala/riscv/core/fivestage/CPU.scala 204:22] + clint.io.csr_mstatus <= csr_regs.io.clint_csr_mstatus @[src/main/scala/riscv/core/fivestage/CPU.scala 205:24] + clint.io.interrupt_enable <= csr_regs.io.interrupt_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 206:29] + clint.io.interrupt_flag <= if2id.io.output_interrupt_flag @[src/main/scala/riscv/core/fivestage/CPU.scala 207:27] + csr_regs.io.reg_write_enable_ex <= id2ex.io.output_csr_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 209:35] + csr_regs.io.reg_write_address_ex <= id2ex.io.output_csr_address @[src/main/scala/riscv/core/fivestage/CPU.scala 210:36] + csr_regs.io.reg_write_data_ex <= ex.io.csr_write_data @[src/main/scala/riscv/core/fivestage/CPU.scala 211:33] + csr_regs.io.reg_read_address_id <= id.io.ex_csr_address @[src/main/scala/riscv/core/fivestage/CPU.scala 212:35] + csr_regs.io.reg_write_enable_clint <= clint.io.csr_reg_write_enable @[src/main/scala/riscv/core/fivestage/CPU.scala 213:38] + csr_regs.io.reg_write_address_clint <= clint.io.csr_reg_write_address @[src/main/scala/riscv/core/fivestage/CPU.scala 214:39] + csr_regs.io.reg_write_data_clint <= clint.io.csr_reg_write_data @[src/main/scala/riscv/core/fivestage/CPU.scala 215:36] + csr_regs.io.reg_read_address_clint <= UInt<1>("h0") @[src/main/scala/riscv/core/fivestage/CPU.scala 216:38] + + module CPU_1 : + input clock : Clock + input reset : Reset + output io : { axi4_channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bus_address : UInt<32>, flip interrupt_flag : UInt<32>, flip stall_flag_bus : UInt<1>, flip debug_read_address : UInt<5>, debug_read_data : UInt<32>, flip instruction_valid : UInt<1>, bus_busy : UInt<1>, debug : UInt<32>[6]} @[src/main/scala/riscv/core/CPU.scala 23:14] + + inst cpu of CPU @[src/main/scala/riscv/core/CPU.scala 29:23] + cpu.clock <= clock + cpu.reset <= reset + io.debug[0] <= cpu.io.debug[0] @[src/main/scala/riscv/core/CPU.scala 30:14] + io.debug[1] <= cpu.io.debug[1] @[src/main/scala/riscv/core/CPU.scala 30:14] + io.debug[2] <= cpu.io.debug[2] @[src/main/scala/riscv/core/CPU.scala 30:14] + io.debug[3] <= cpu.io.debug[3] @[src/main/scala/riscv/core/CPU.scala 30:14] + io.debug[4] <= cpu.io.debug[4] @[src/main/scala/riscv/core/CPU.scala 30:14] + io.debug[5] <= cpu.io.debug[5] @[src/main/scala/riscv/core/CPU.scala 30:14] + io.bus_busy <= cpu.io.bus_busy @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.instruction_valid <= io.instruction_valid @[src/main/scala/riscv/core/CPU.scala 30:14] + io.debug_read_data <= cpu.io.debug_read_data @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.debug_read_address <= io.debug_read_address @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.stall_flag_bus <= io.stall_flag_bus @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.interrupt_flag <= io.interrupt_flag @[src/main/scala/riscv/core/CPU.scala 30:14] + io.bus_address <= cpu.io.bus_address @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.read_data_channel.RRESP <= io.axi4_channels.read_data_channel.RRESP @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.read_data_channel.RDATA <= io.axi4_channels.read_data_channel.RDATA @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.read_data_channel.RREADY <= cpu.io.axi4_channels.read_data_channel.RREADY @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.read_data_channel.RVALID <= io.axi4_channels.read_data_channel.RVALID @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.read_address_channel.ARPROT <= cpu.io.axi4_channels.read_address_channel.ARPROT @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.read_address_channel.ARADDR <= cpu.io.axi4_channels.read_address_channel.ARADDR @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.read_address_channel.ARREADY <= io.axi4_channels.read_address_channel.ARREADY @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.read_address_channel.ARVALID <= cpu.io.axi4_channels.read_address_channel.ARVALID @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.write_response_channel.BRESP <= io.axi4_channels.write_response_channel.BRESP @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_response_channel.BREADY <= cpu.io.axi4_channels.write_response_channel.BREADY @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.write_response_channel.BVALID <= io.axi4_channels.write_response_channel.BVALID @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_data_channel.WSTRB <= cpu.io.axi4_channels.write_data_channel.WSTRB @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_data_channel.WDATA <= cpu.io.axi4_channels.write_data_channel.WDATA @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.write_data_channel.WREADY <= io.axi4_channels.write_data_channel.WREADY @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_data_channel.WVALID <= cpu.io.axi4_channels.write_data_channel.WVALID @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_address_channel.AWPROT <= cpu.io.axi4_channels.write_address_channel.AWPROT @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_address_channel.AWADDR <= cpu.io.axi4_channels.write_address_channel.AWADDR @[src/main/scala/riscv/core/CPU.scala 30:14] + cpu.io.axi4_channels.write_address_channel.AWREADY <= io.axi4_channels.write_address_channel.AWREADY @[src/main/scala/riscv/core/CPU.scala 30:14] + io.axi4_channels.write_address_channel.AWVALID <= cpu.io.axi4_channels.write_address_channel.AWVALID @[src/main/scala/riscv/core/CPU.scala 30:14] + + module BlockRAM : + input clock : Clock + input reset : Reset + output io : { flip read_address : UInt<32>, flip write_address : UInt<32>, flip write_data : UInt<32>, flip write_enable : UInt<1>, flip write_strobe : UInt<1>[4], flip debug_read_address : UInt<32>, read_data : UInt<32>, debug_read_data : UInt<32>} @[src/main/scala/peripheral/Memory.scala 24:14] + + smem mem : UInt<8>[4] [8192] @[src/main/scala/peripheral/Memory.scala 36:24] + when io.write_enable : @[src/main/scala/peripheral/Memory.scala 37:25] + wire write_data_vec : UInt<8>[4] @[src/main/scala/peripheral/Memory.scala 38:30] + node _write_data_vec_0_T = bits(io.write_data, 7, 0) @[src/main/scala/peripheral/Memory.scala 40:41] + write_data_vec[0] <= _write_data_vec_0_T @[src/main/scala/peripheral/Memory.scala 40:25] + node _write_data_vec_1_T = bits(io.write_data, 15, 8) @[src/main/scala/peripheral/Memory.scala 40:41] + write_data_vec[1] <= _write_data_vec_1_T @[src/main/scala/peripheral/Memory.scala 40:25] + node _write_data_vec_2_T = bits(io.write_data, 23, 16) @[src/main/scala/peripheral/Memory.scala 40:41] + write_data_vec[2] <= _write_data_vec_2_T @[src/main/scala/peripheral/Memory.scala 40:25] + node _write_data_vec_3_T = bits(io.write_data, 31, 24) @[src/main/scala/peripheral/Memory.scala 40:41] + write_data_vec[3] <= _write_data_vec_3_T @[src/main/scala/peripheral/Memory.scala 40:25] + node _T = dshr(io.write_address, UInt<2>("h2")) @[src/main/scala/peripheral/Memory.scala 42:33] + node _T_1 = bits(_T, 12, 0) + write mport MPORT = mem[_T_1], clock + when io.write_strobe[0] : + MPORT[0] <= write_data_vec[0] + when io.write_strobe[1] : + MPORT[1] <= write_data_vec[1] + when io.write_strobe[2] : + MPORT[2] <= write_data_vec[2] + when io.write_strobe[3] : + MPORT[3] <= write_data_vec[3] + node _io_read_data_T = dshr(io.read_address, UInt<2>("h2")) @[src/main/scala/peripheral/Memory.scala 44:45] + wire _io_read_data_WIRE : UInt @[src/main/scala/peripheral/Memory.scala 44:27] + _io_read_data_WIRE is invalid @[src/main/scala/peripheral/Memory.scala 44:27] + when UInt<1>("h1") : @[src/main/scala/peripheral/Memory.scala 44:27] + _io_read_data_WIRE <= _io_read_data_T @[src/main/scala/peripheral/Memory.scala 44:27] + node _io_read_data_T_1 = or(_io_read_data_WIRE, UInt<13>("h0")) @[src/main/scala/peripheral/Memory.scala 44:27] + node _io_read_data_T_2 = bits(_io_read_data_T_1, 12, 0) @[src/main/scala/peripheral/Memory.scala 44:27] + read mport io_read_data_MPORT = mem[_io_read_data_T_2], clock @[src/main/scala/peripheral/Memory.scala 44:27] + node io_read_data_lo = cat(io_read_data_MPORT[1], io_read_data_MPORT[0]) @[src/main/scala/peripheral/Memory.scala 44:69] + node io_read_data_hi = cat(io_read_data_MPORT[3], io_read_data_MPORT[2]) @[src/main/scala/peripheral/Memory.scala 44:69] + node _io_read_data_T_3 = cat(io_read_data_hi, io_read_data_lo) @[src/main/scala/peripheral/Memory.scala 44:69] + io.read_data <= _io_read_data_T_3 @[src/main/scala/peripheral/Memory.scala 44:16] + node _io_debug_read_data_T = dshr(io.debug_read_address, UInt<2>("h2")) @[src/main/scala/peripheral/Memory.scala 45:57] + wire _io_debug_read_data_WIRE : UInt @[src/main/scala/peripheral/Memory.scala 45:33] + _io_debug_read_data_WIRE is invalid @[src/main/scala/peripheral/Memory.scala 45:33] + when UInt<1>("h1") : @[src/main/scala/peripheral/Memory.scala 45:33] + _io_debug_read_data_WIRE <= _io_debug_read_data_T @[src/main/scala/peripheral/Memory.scala 45:33] + node _io_debug_read_data_T_1 = or(_io_debug_read_data_WIRE, UInt<13>("h0")) @[src/main/scala/peripheral/Memory.scala 45:33] + node _io_debug_read_data_T_2 = bits(_io_debug_read_data_T_1, 12, 0) @[src/main/scala/peripheral/Memory.scala 45:33] + read mport io_debug_read_data_MPORT = mem[_io_debug_read_data_T_2], clock @[src/main/scala/peripheral/Memory.scala 45:33] + node io_debug_read_data_lo = cat(io_debug_read_data_MPORT[1], io_debug_read_data_MPORT[0]) @[src/main/scala/peripheral/Memory.scala 45:81] + node io_debug_read_data_hi = cat(io_debug_read_data_MPORT[3], io_debug_read_data_MPORT[2]) @[src/main/scala/peripheral/Memory.scala 45:81] + node _io_debug_read_data_T_3 = cat(io_debug_read_data_hi, io_debug_read_data_lo) @[src/main/scala/peripheral/Memory.scala 45:81] + io.debug_read_data <= _io_debug_read_data_T_3 @[src/main/scala/peripheral/Memory.scala 45:22] + + module AXI4LiteSlave_1 : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { read : UInt<1>, write : UInt<1>, flip read_data : UInt<32>, flip read_valid : UInt<1>, write_data : UInt<32>, write_strobe : UInt<1>[4], address : UInt<32>}} @[src/main/scala/bus/AXI4Lite.scala 121:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 125:22] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 126:21] + io.bundle.address <= addr @[src/main/scala/bus/AXI4Lite.scala 127:21] + reg read : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 128:21] + io.bundle.read <= read @[src/main/scala/bus/AXI4Lite.scala 129:18] + reg write : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 130:22] + io.bundle.write <= write @[src/main/scala/bus/AXI4Lite.scala 131:19] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 132:27] + io.bundle.write_data <= write_data @[src/main/scala/bus/AXI4Lite.scala 133:24] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 134:29] + io.bundle.write_strobe <= write_strobe @[src/main/scala/bus/AXI4Lite.scala 135:26] + reg ARREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 137:24] + io.channels.read_address_channel.ARREADY <= ARREADY @[src/main/scala/bus/AXI4Lite.scala 138:44] + reg RVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 139:23] + io.channels.read_data_channel.RVALID <= RVALID @[src/main/scala/bus/AXI4Lite.scala 140:40] + reg RRESP : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 141:22] + io.channels.read_data_channel.RRESP <= RRESP @[src/main/scala/bus/AXI4Lite.scala 142:39] + io.channels.read_data_channel.RDATA <= io.bundle.read_data @[src/main/scala/bus/AXI4Lite.scala 144:39] + reg AWREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 146:24] + io.channels.write_address_channel.AWREADY <= AWREADY @[src/main/scala/bus/AXI4Lite.scala 147:45] + reg WREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 148:23] + io.channels.write_data_channel.WREADY <= WREADY @[src/main/scala/bus/AXI4Lite.scala 149:41] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 150:14] + reg BVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 151:23] + io.channels.write_response_channel.BVALID <= BVALID @[src/main/scala/bus/AXI4Lite.scala 152:45] + wire BRESP : UInt<1> @[src/main/scala/bus/AXI4Lite.scala 153:23] + BRESP <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 153:23] + io.channels.write_response_channel.BRESP <= BRESP @[src/main/scala/bus/AXI4Lite.scala 154:44] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + read <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 158:12] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 159:13] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 160:14] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 161:14] + when io.channels.write_address_channel.AWVALID : @[src/main/scala/bus/AXI4Lite.scala 162:55] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 163:15] + else : + when io.channels.read_address_channel.ARVALID : @[src/main/scala/bus/AXI4Lite.scala 164:60] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 165:15] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + ARREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 169:15] + node _T_6 = and(io.channels.read_address_channel.ARVALID, ARREADY) @[src/main/scala/bus/AXI4Lite.scala 170:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 170:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 171:15] + addr <= io.channels.read_address_channel.ARADDR @[src/main/scala/bus/AXI4Lite.scala 172:14] + read <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 173:14] + ARREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 174:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= io.bundle.read_valid @[src/main/scala/bus/AXI4Lite.scala 178:14] + node _T_10 = and(io.channels.read_data_channel.RREADY, RVALID) @[src/main/scala/bus/AXI4Lite.scala 179:49] + when _T_10 : @[src/main/scala/bus/AXI4Lite.scala 179:60] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 180:15] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 181:16] + else : + node _T_11 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_12 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_13 = eq(_T_11, _T_12) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_13 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + AWREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 185:15] + node _T_14 = and(io.channels.write_address_channel.AWVALID, AWREADY) @[src/main/scala/bus/AXI4Lite.scala 186:54] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 186:66] + addr <= io.channels.write_address_channel.AWADDR @[src/main/scala/bus/AXI4Lite.scala 187:14] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 188:15] + AWREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 189:17] + else : + node _T_15 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_16 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_17 = eq(_T_15, _T_16) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_17 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 193:14] + node _T_18 = and(io.channels.write_data_channel.WVALID, WREADY) @[src/main/scala/bus/AXI4Lite.scala 194:50] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 194:61] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 195:15] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 196:20] + node _T_19 = bits(io.channels.write_data_channel.WSTRB, 0, 0) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_20 = bits(io.channels.write_data_channel.WSTRB, 1, 1) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_21 = bits(io.channels.write_data_channel.WSTRB, 2, 2) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_22 = bits(io.channels.write_data_channel.WSTRB, 3, 3) @[src/main/scala/bus/AXI4Lite.scala 197:62] + write_strobe[0] <= _T_19 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[1] <= _T_20 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[2] <= _T_21 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[3] <= _T_22 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 198:15] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 199:16] + else : + node _T_23 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_24 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_25 = eq(_T_23, _T_24) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_25 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 203:14] + BVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 204:14] + node _T_26 = and(io.channels.write_response_channel.BREADY, BVALID) @[src/main/scala/bus/AXI4Lite.scala 205:54] + when _T_26 : @[src/main/scala/bus/AXI4Lite.scala 205:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 206:15] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 207:15] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 208:16] + + + module Memory : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, flip debug_read_address : UInt<32>, debug_read_data : UInt<32>} @[src/main/scala/peripheral/Memory.scala 50:14] + + inst mem of BlockRAM @[src/main/scala/peripheral/Memory.scala 57:19] + mem.clock <= clock + mem.reset <= reset + inst slave of AXI4LiteSlave_1 @[src/main/scala/peripheral/Memory.scala 58:21] + slave.clock <= clock + slave.reset <= reset + slave.io.channels <= io.channels @[src/main/scala/peripheral/Memory.scala 59:21] + slave.io.bundle.read_valid <= UInt<1>("h1") @[src/main/scala/peripheral/Memory.scala 60:30] + mem.io.write_enable <= slave.io.bundle.write @[src/main/scala/peripheral/Memory.scala 62:23] + mem.io.write_data <= slave.io.bundle.write_data @[src/main/scala/peripheral/Memory.scala 63:21] + mem.io.write_address <= slave.io.bundle.address @[src/main/scala/peripheral/Memory.scala 64:24] + mem.io.write_strobe[0] <= slave.io.bundle.write_strobe[0] @[src/main/scala/peripheral/Memory.scala 65:23] + mem.io.write_strobe[1] <= slave.io.bundle.write_strobe[1] @[src/main/scala/peripheral/Memory.scala 65:23] + mem.io.write_strobe[2] <= slave.io.bundle.write_strobe[2] @[src/main/scala/peripheral/Memory.scala 65:23] + mem.io.write_strobe[3] <= slave.io.bundle.write_strobe[3] @[src/main/scala/peripheral/Memory.scala 65:23] + mem.io.read_address <= slave.io.bundle.address @[src/main/scala/peripheral/Memory.scala 67:23] + slave.io.bundle.read_data <= mem.io.read_data @[src/main/scala/peripheral/Memory.scala 68:29] + mem.io.debug_read_address <= io.debug_read_address @[src/main/scala/peripheral/Memory.scala 70:29] + io.debug_read_data <= mem.io.debug_read_data @[src/main/scala/peripheral/Memory.scala 71:22] + + module AXI4LiteSlave_2 : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<8>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<8>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { read : UInt<1>, write : UInt<1>, flip read_data : UInt<32>, flip read_valid : UInt<1>, write_data : UInt<32>, write_strobe : UInt<1>[4], address : UInt<8>}} @[src/main/scala/bus/AXI4Lite.scala 121:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 125:22] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 126:21] + io.bundle.address <= addr @[src/main/scala/bus/AXI4Lite.scala 127:21] + reg read : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 128:21] + io.bundle.read <= read @[src/main/scala/bus/AXI4Lite.scala 129:18] + reg write : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 130:22] + io.bundle.write <= write @[src/main/scala/bus/AXI4Lite.scala 131:19] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 132:27] + io.bundle.write_data <= write_data @[src/main/scala/bus/AXI4Lite.scala 133:24] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 134:29] + io.bundle.write_strobe <= write_strobe @[src/main/scala/bus/AXI4Lite.scala 135:26] + reg ARREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 137:24] + io.channels.read_address_channel.ARREADY <= ARREADY @[src/main/scala/bus/AXI4Lite.scala 138:44] + reg RVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 139:23] + io.channels.read_data_channel.RVALID <= RVALID @[src/main/scala/bus/AXI4Lite.scala 140:40] + reg RRESP : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 141:22] + io.channels.read_data_channel.RRESP <= RRESP @[src/main/scala/bus/AXI4Lite.scala 142:39] + io.channels.read_data_channel.RDATA <= io.bundle.read_data @[src/main/scala/bus/AXI4Lite.scala 144:39] + reg AWREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 146:24] + io.channels.write_address_channel.AWREADY <= AWREADY @[src/main/scala/bus/AXI4Lite.scala 147:45] + reg WREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 148:23] + io.channels.write_data_channel.WREADY <= WREADY @[src/main/scala/bus/AXI4Lite.scala 149:41] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 150:14] + reg BVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 151:23] + io.channels.write_response_channel.BVALID <= BVALID @[src/main/scala/bus/AXI4Lite.scala 152:45] + wire BRESP : UInt<1> @[src/main/scala/bus/AXI4Lite.scala 153:23] + BRESP <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 153:23] + io.channels.write_response_channel.BRESP <= BRESP @[src/main/scala/bus/AXI4Lite.scala 154:44] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + read <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 158:12] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 159:13] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 160:14] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 161:14] + when io.channels.write_address_channel.AWVALID : @[src/main/scala/bus/AXI4Lite.scala 162:55] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 163:15] + else : + when io.channels.read_address_channel.ARVALID : @[src/main/scala/bus/AXI4Lite.scala 164:60] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 165:15] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + ARREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 169:15] + node _T_6 = and(io.channels.read_address_channel.ARVALID, ARREADY) @[src/main/scala/bus/AXI4Lite.scala 170:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 170:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 171:15] + addr <= io.channels.read_address_channel.ARADDR @[src/main/scala/bus/AXI4Lite.scala 172:14] + read <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 173:14] + ARREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 174:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= io.bundle.read_valid @[src/main/scala/bus/AXI4Lite.scala 178:14] + node _T_10 = and(io.channels.read_data_channel.RREADY, RVALID) @[src/main/scala/bus/AXI4Lite.scala 179:49] + when _T_10 : @[src/main/scala/bus/AXI4Lite.scala 179:60] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 180:15] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 181:16] + else : + node _T_11 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_12 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_13 = eq(_T_11, _T_12) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_13 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + AWREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 185:15] + node _T_14 = and(io.channels.write_address_channel.AWVALID, AWREADY) @[src/main/scala/bus/AXI4Lite.scala 186:54] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 186:66] + addr <= io.channels.write_address_channel.AWADDR @[src/main/scala/bus/AXI4Lite.scala 187:14] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 188:15] + AWREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 189:17] + else : + node _T_15 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_16 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_17 = eq(_T_15, _T_16) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_17 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 193:14] + node _T_18 = and(io.channels.write_data_channel.WVALID, WREADY) @[src/main/scala/bus/AXI4Lite.scala 194:50] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 194:61] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 195:15] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 196:20] + node _T_19 = bits(io.channels.write_data_channel.WSTRB, 0, 0) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_20 = bits(io.channels.write_data_channel.WSTRB, 1, 1) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_21 = bits(io.channels.write_data_channel.WSTRB, 2, 2) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_22 = bits(io.channels.write_data_channel.WSTRB, 3, 3) @[src/main/scala/bus/AXI4Lite.scala 197:62] + write_strobe[0] <= _T_19 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[1] <= _T_20 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[2] <= _T_21 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[3] <= _T_22 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 198:15] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 199:16] + else : + node _T_23 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_24 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_25 = eq(_T_23, _T_24) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_25 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 203:14] + BVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 204:14] + node _T_26 = and(io.channels.write_response_channel.BREADY, BVALID) @[src/main/scala/bus/AXI4Lite.scala 205:54] + when _T_26 : @[src/main/scala/bus/AXI4Lite.scala 205:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 206:15] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 207:15] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 208:16] + + + module Timer : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<8>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<8>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, signal_interrupt : UInt<1>, debug_limit : UInt<32>, debug_enabled : UInt<1>} @[src/main/scala/peripheral/Timer.scala 23:14] + + inst slave of AXI4LiteSlave_2 @[src/main/scala/peripheral/Timer.scala 30:21] + slave.clock <= clock + slave.reset <= reset + slave.io.channels <= io.channels @[src/main/scala/peripheral/Timer.scala 31:21] + reg count : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/peripheral/Timer.scala 33:22] + reg limit : UInt<32>, clock with : + reset => (reset, UInt<32>("h5f5e100")) @[src/main/scala/peripheral/Timer.scala 34:22] + io.debug_limit <= limit @[src/main/scala/peripheral/Timer.scala 35:18] + reg enabled : UInt<1>, clock with : + reset => (reset, UInt<1>("h1")) @[src/main/scala/peripheral/Timer.scala 36:24] + io.debug_enabled <= enabled @[src/main/scala/peripheral/Timer.scala 37:20] + slave.io.bundle.read_data <= UInt<1>("h0") @[src/main/scala/peripheral/Timer.scala 39:29] + slave.io.bundle.read_valid <= UInt<1>("h1") @[src/main/scala/peripheral/Timer.scala 40:30] + when slave.io.bundle.read : @[src/main/scala/peripheral/Timer.scala 41:30] + node _slave_io_bundle_read_data_T = eq(UInt<3>("h4"), slave.io.bundle.address) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _slave_io_bundle_read_data_T_1 = mux(_slave_io_bundle_read_data_T, limit, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _slave_io_bundle_read_data_T_2 = eq(UInt<4>("h8"), slave.io.bundle.address) @[src/main/scala/chisel3/util/Mux.scala 77:13] + node _slave_io_bundle_read_data_T_3 = mux(_slave_io_bundle_read_data_T_2, enabled, _slave_io_bundle_read_data_T_1) @[src/main/scala/chisel3/util/Mux.scala 77:13] + slave.io.bundle.read_data <= _slave_io_bundle_read_data_T_3 @[src/main/scala/peripheral/Timer.scala 42:31] + when slave.io.bundle.write : @[src/main/scala/peripheral/Timer.scala 51:31] + node _T = eq(slave.io.bundle.address, UInt<3>("h4")) @[src/main/scala/peripheral/Timer.scala 52:34] + when _T : @[src/main/scala/peripheral/Timer.scala 52:45] + limit <= slave.io.bundle.write_data @[src/main/scala/peripheral/Timer.scala 53:13] + count <= UInt<1>("h0") @[src/main/scala/peripheral/Timer.scala 54:13] + else : + node _T_1 = eq(slave.io.bundle.address, UInt<4>("h8")) @[src/main/scala/peripheral/Timer.scala 55:40] + when _T_1 : @[src/main/scala/peripheral/Timer.scala 55:51] + node _enabled_T = neq(slave.io.bundle.write_data, UInt<1>("h0")) @[src/main/scala/peripheral/Timer.scala 56:45] + enabled <= _enabled_T @[src/main/scala/peripheral/Timer.scala 56:15] + node _io_signal_interrupt_T = sub(limit, UInt<4>("ha")) @[src/main/scala/peripheral/Timer.scala 60:54] + node _io_signal_interrupt_T_1 = tail(_io_signal_interrupt_T, 1) @[src/main/scala/peripheral/Timer.scala 60:54] + node _io_signal_interrupt_T_2 = geq(count, _io_signal_interrupt_T_1) @[src/main/scala/peripheral/Timer.scala 60:44] + node _io_signal_interrupt_T_3 = and(enabled, _io_signal_interrupt_T_2) @[src/main/scala/peripheral/Timer.scala 60:34] + io.signal_interrupt <= _io_signal_interrupt_T_3 @[src/main/scala/peripheral/Timer.scala 60:23] + node _T_2 = geq(count, limit) @[src/main/scala/peripheral/Timer.scala 62:14] + when _T_2 : @[src/main/scala/peripheral/Timer.scala 62:24] + count <= UInt<1>("h0") @[src/main/scala/peripheral/Timer.scala 63:11] + else : + node _count_T = add(count, UInt<1>("h1")) @[src/main/scala/peripheral/Timer.scala 65:20] + node _count_T_1 = tail(_count_T, 1) @[src/main/scala/peripheral/Timer.scala 65:20] + count <= _count_T_1 @[src/main/scala/peripheral/Timer.scala 65:11] + + + module AXI4LiteSlave_3 : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { read : UInt<1>, write : UInt<1>, flip read_data : UInt<32>, flip read_valid : UInt<1>, write_data : UInt<32>, write_strobe : UInt<1>[4], address : UInt<32>}} @[src/main/scala/bus/AXI4Lite.scala 121:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 125:22] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 126:21] + io.bundle.address <= addr @[src/main/scala/bus/AXI4Lite.scala 127:21] + reg read : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 128:21] + io.bundle.read <= read @[src/main/scala/bus/AXI4Lite.scala 129:18] + reg write : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 130:22] + io.bundle.write <= write @[src/main/scala/bus/AXI4Lite.scala 131:19] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 132:27] + io.bundle.write_data <= write_data @[src/main/scala/bus/AXI4Lite.scala 133:24] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 134:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 134:29] + io.bundle.write_strobe <= write_strobe @[src/main/scala/bus/AXI4Lite.scala 135:26] + reg ARREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 137:24] + io.channels.read_address_channel.ARREADY <= ARREADY @[src/main/scala/bus/AXI4Lite.scala 138:44] + reg RVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 139:23] + io.channels.read_data_channel.RVALID <= RVALID @[src/main/scala/bus/AXI4Lite.scala 140:40] + reg RRESP : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 141:22] + io.channels.read_data_channel.RRESP <= RRESP @[src/main/scala/bus/AXI4Lite.scala 142:39] + io.channels.read_data_channel.RDATA <= io.bundle.read_data @[src/main/scala/bus/AXI4Lite.scala 144:39] + reg AWREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 146:24] + io.channels.write_address_channel.AWREADY <= AWREADY @[src/main/scala/bus/AXI4Lite.scala 147:45] + reg WREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 148:23] + io.channels.write_data_channel.WREADY <= WREADY @[src/main/scala/bus/AXI4Lite.scala 149:41] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 150:14] + reg BVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 151:23] + io.channels.write_response_channel.BVALID <= BVALID @[src/main/scala/bus/AXI4Lite.scala 152:45] + wire BRESP : UInt<1> @[src/main/scala/bus/AXI4Lite.scala 153:23] + BRESP <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 153:23] + io.channels.write_response_channel.BRESP <= BRESP @[src/main/scala/bus/AXI4Lite.scala 154:44] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + read <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 158:12] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 159:13] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 160:14] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 161:14] + when io.channels.write_address_channel.AWVALID : @[src/main/scala/bus/AXI4Lite.scala 162:55] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 163:15] + else : + when io.channels.read_address_channel.ARVALID : @[src/main/scala/bus/AXI4Lite.scala 164:60] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 165:15] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + ARREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 169:15] + node _T_6 = and(io.channels.read_address_channel.ARVALID, ARREADY) @[src/main/scala/bus/AXI4Lite.scala 170:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 170:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 171:15] + addr <= io.channels.read_address_channel.ARADDR @[src/main/scala/bus/AXI4Lite.scala 172:14] + read <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 173:14] + ARREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 174:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= io.bundle.read_valid @[src/main/scala/bus/AXI4Lite.scala 178:14] + node _T_10 = and(io.channels.read_data_channel.RREADY, RVALID) @[src/main/scala/bus/AXI4Lite.scala 179:49] + when _T_10 : @[src/main/scala/bus/AXI4Lite.scala 179:60] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 180:15] + RVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 181:16] + else : + node _T_11 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_12 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_13 = eq(_T_11, _T_12) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_13 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + AWREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 185:15] + node _T_14 = and(io.channels.write_address_channel.AWVALID, AWREADY) @[src/main/scala/bus/AXI4Lite.scala 186:54] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 186:66] + addr <= io.channels.write_address_channel.AWADDR @[src/main/scala/bus/AXI4Lite.scala 187:14] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 188:15] + AWREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 189:17] + else : + node _T_15 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_16 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_17 = eq(_T_15, _T_16) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_17 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 193:14] + node _T_18 = and(io.channels.write_data_channel.WVALID, WREADY) @[src/main/scala/bus/AXI4Lite.scala 194:50] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 194:61] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 195:15] + write_data <= io.channels.write_data_channel.WDATA @[src/main/scala/bus/AXI4Lite.scala 196:20] + node _T_19 = bits(io.channels.write_data_channel.WSTRB, 0, 0) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_20 = bits(io.channels.write_data_channel.WSTRB, 1, 1) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_21 = bits(io.channels.write_data_channel.WSTRB, 2, 2) @[src/main/scala/bus/AXI4Lite.scala 197:62] + node _T_22 = bits(io.channels.write_data_channel.WSTRB, 3, 3) @[src/main/scala/bus/AXI4Lite.scala 197:62] + write_strobe[0] <= _T_19 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[1] <= _T_20 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[2] <= _T_21 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write_strobe[3] <= _T_22 @[src/main/scala/bus/AXI4Lite.scala 197:22] + write <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 198:15] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 199:16] + else : + node _T_23 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_24 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 156:17] + node _T_25 = eq(_T_23, _T_24) @[src/main/scala/bus/AXI4Lite.scala 156:17] + when _T_25 : @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 203:14] + BVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 204:14] + node _T_26 = and(io.channels.write_response_channel.BREADY, BVALID) @[src/main/scala/bus/AXI4Lite.scala 205:54] + when _T_26 : @[src/main/scala/bus/AXI4Lite.scala 205:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 206:15] + write <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 207:15] + BVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 208:16] + + + module DummySlave : + input clock : Clock + input reset : Reset + output io : { flip channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<4>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<4>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}} @[src/main/scala/peripheral/DummySlave.scala 24:14] + + inst slave of AXI4LiteSlave_3 @[src/main/scala/peripheral/DummySlave.scala 28:21] + slave.clock <= clock + slave.reset <= reset + slave.io.channels <= io.channels @[src/main/scala/peripheral/DummySlave.scala 29:21] + slave.io.bundle.read_valid <= UInt<1>("h1") @[src/main/scala/peripheral/DummySlave.scala 30:30] + slave.io.bundle.read_data <= UInt<32>("hdeadbeef") @[src/main/scala/peripheral/DummySlave.scala 31:29] + + module BusArbiter : + input clock : Clock + input reset : Reset + output io : { flip bus_request : UInt<1>[1], bus_granted : UInt<1>[1], ctrl_stall_flag : UInt<1>} @[src/main/scala/bus/BusArbiter.scala 21:14] + + wire granted : UInt @[src/main/scala/bus/BusArbiter.scala 27:21] + granted <= UInt<1>("h0") @[src/main/scala/bus/BusArbiter.scala 30:11] + when io.bus_request[UInt<1>("h0")] : @[src/main/scala/bus/BusArbiter.scala 32:31] + granted <= UInt<1>("h0") @[src/main/scala/bus/BusArbiter.scala 33:15] + node _io_bus_granted_0_T = eq(UInt<1>("h0"), granted) @[src/main/scala/bus/BusArbiter.scala 37:32] + io.bus_granted[UInt<1>("h0")] <= _io_bus_granted_0_T @[src/main/scala/bus/BusArbiter.scala 37:25] + node _io_ctrl_stall_flag_T = eq(io.bus_granted[UInt<1>("h0")], UInt<1>("h0")) @[src/main/scala/bus/BusArbiter.scala 39:25] + io.ctrl_stall_flag <= _io_ctrl_stall_flag_T @[src/main/scala/bus/BusArbiter.scala 39:22] + + module AXI4LiteMaster_1 : + input clock : Clock + input reset : Reset + output io : { channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { flip read : UInt<1>, flip write : UInt<1>, read_data : UInt<32>, flip write_data : UInt<32>, flip write_strobe : UInt<1>[4], flip address : UInt<32>, busy : UInt<1>, read_valid : UInt<1>, write_valid : UInt<1>}} @[src/main/scala/bus/AXI4Lite.scala 215:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 219:22] + node _io_bundle_busy_T = neq(state, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 220:27] + io.bundle.busy <= _io_bundle_busy_T @[src/main/scala/bus/AXI4Lite.scala 220:18] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 222:21] + reg read_valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 223:27] + io.bundle.read_valid <= read_valid @[src/main/scala/bus/AXI4Lite.scala 224:24] + reg write_valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 225:28] + io.bundle.write_valid <= write_valid @[src/main/scala/bus/AXI4Lite.scala 226:25] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 227:27] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg read_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 229:26] + io.channels.read_address_channel.ARADDR <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 231:43] + reg ARVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 232:24] + io.channels.read_address_channel.ARVALID <= ARVALID @[src/main/scala/bus/AXI4Lite.scala 233:44] + io.channels.read_address_channel.ARPROT <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 234:43] + reg RREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 235:23] + io.channels.read_data_channel.RREADY <= RREADY @[src/main/scala/bus/AXI4Lite.scala 236:40] + io.bundle.read_data <= io.channels.read_data_channel.RDATA @[src/main/scala/bus/AXI4Lite.scala 238:23] + reg AWVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 239:24] + io.channels.write_address_channel.AWADDR <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 240:44] + io.channels.write_address_channel.AWVALID <= AWVALID @[src/main/scala/bus/AXI4Lite.scala 241:45] + reg WVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 242:23] + io.channels.write_data_channel.WVALID <= WVALID @[src/main/scala/bus/AXI4Lite.scala 243:41] + io.channels.write_data_channel.WDATA <= write_data @[src/main/scala/bus/AXI4Lite.scala 244:40] + io.channels.write_address_channel.AWPROT <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 245:44] + node io_channels_write_data_channel_WSTRB_lo = cat(write_strobe[1], write_strobe[0]) @[src/main/scala/bus/AXI4Lite.scala 246:56] + node io_channels_write_data_channel_WSTRB_hi = cat(write_strobe[3], write_strobe[2]) @[src/main/scala/bus/AXI4Lite.scala 246:56] + node _io_channels_write_data_channel_WSTRB_T = cat(io_channels_write_data_channel_WSTRB_hi, io_channels_write_data_channel_WSTRB_lo) @[src/main/scala/bus/AXI4Lite.scala 246:56] + io.channels.write_data_channel.WSTRB <= _io_channels_write_data_channel_WSTRB_T @[src/main/scala/bus/AXI4Lite.scala 246:40] + reg BREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 247:23] + io.channels.write_response_channel.BREADY <= BREADY @[src/main/scala/bus/AXI4Lite.scala 248:45] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 252:14] + AWVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 253:15] + ARVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 254:15] + RREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 255:14] + read_valid <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 256:18] + write_valid <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 257:19] + when io.bundle.write : @[src/main/scala/bus/AXI4Lite.scala 258:29] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 259:15] + addr <= io.bundle.address @[src/main/scala/bus/AXI4Lite.scala 260:14] + write_data <= io.bundle.write_data @[src/main/scala/bus/AXI4Lite.scala 261:20] + write_strobe <= io.bundle.write_strobe @[src/main/scala/bus/AXI4Lite.scala 262:22] + else : + when io.bundle.read : @[src/main/scala/bus/AXI4Lite.scala 263:34] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 264:15] + addr <= io.bundle.address @[src/main/scala/bus/AXI4Lite.scala 265:14] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + ARVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 269:15] + io.channels.read_address_channel.ARADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 270:47] + node _T_6 = and(io.channels.read_address_channel.ARREADY, ARVALID) @[src/main/scala/bus/AXI4Lite.scala 271:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 271:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 272:15] + io.channels.read_address_channel.ARADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 273:49] + ARVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 274:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_10 = eq(io.channels.read_data_channel.RRESP, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 278:88] + node _T_11 = and(io.channels.read_data_channel.RVALID, _T_10) @[src/main/scala/bus/AXI4Lite.scala 278:49] + when _T_11 : @[src/main/scala/bus/AXI4Lite.scala 278:97] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 279:15] + read_valid <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 280:20] + RREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 281:16] + read_data <= io.channels.read_data_channel.RDATA @[src/main/scala/bus/AXI4Lite.scala 282:19] + else : + node _T_12 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_13 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_14 = eq(_T_12, _T_13) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + AWVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 286:15] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 287:48] + node _T_15 = and(io.channels.write_address_channel.AWREADY, AWVALID) @[src/main/scala/bus/AXI4Lite.scala 288:54] + when _T_15 : @[src/main/scala/bus/AXI4Lite.scala 288:66] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 289:15] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 290:50] + AWVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 291:17] + else : + node _T_16 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_17 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_18 = eq(_T_16, _T_17) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 295:14] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 296:48] + node _T_19 = and(io.channels.write_data_channel.WREADY, WVALID) @[src/main/scala/bus/AXI4Lite.scala 297:50] + when _T_19 : @[src/main/scala/bus/AXI4Lite.scala 297:61] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 298:50] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 299:15] + WVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 300:16] + else : + node _T_20 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_21 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_22 = eq(_T_20, _T_21) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_22 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + BREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 304:14] + node _T_23 = and(io.channels.write_response_channel.BVALID, BREADY) @[src/main/scala/bus/AXI4Lite.scala 305:54] + when _T_23 : @[src/main/scala/bus/AXI4Lite.scala 305:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 306:15] + write_valid <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 307:21] + BREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 308:16] + + + module DummyMaster : + input clock : Clock + input reset : Reset + output io : { channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}} @[src/main/scala/peripheral/DummyMaster.scala 23:14] + + inst master of AXI4LiteMaster_1 @[src/main/scala/peripheral/DummyMaster.scala 26:22] + master.clock <= clock + master.reset <= reset + master.io.channels.read_data_channel.RRESP <= io.channels.read_data_channel.RRESP @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.read_data_channel.RDATA <= io.channels.read_data_channel.RDATA @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.read_data_channel.RREADY <= master.io.channels.read_data_channel.RREADY @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.read_data_channel.RVALID <= io.channels.read_data_channel.RVALID @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.read_address_channel.ARPROT <= master.io.channels.read_address_channel.ARPROT @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.read_address_channel.ARADDR <= master.io.channels.read_address_channel.ARADDR @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.read_address_channel.ARREADY <= io.channels.read_address_channel.ARREADY @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.read_address_channel.ARVALID <= master.io.channels.read_address_channel.ARVALID @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.write_response_channel.BRESP <= io.channels.write_response_channel.BRESP @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_response_channel.BREADY <= master.io.channels.write_response_channel.BREADY @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.write_response_channel.BVALID <= io.channels.write_response_channel.BVALID @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_data_channel.WSTRB <= master.io.channels.write_data_channel.WSTRB @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_data_channel.WDATA <= master.io.channels.write_data_channel.WDATA @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.write_data_channel.WREADY <= io.channels.write_data_channel.WREADY @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_data_channel.WVALID <= master.io.channels.write_data_channel.WVALID @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_address_channel.AWPROT <= master.io.channels.write_address_channel.AWPROT @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_address_channel.AWADDR <= master.io.channels.write_address_channel.AWADDR @[src/main/scala/peripheral/DummyMaster.scala 27:22] + master.io.channels.write_address_channel.AWREADY <= io.channels.write_address_channel.AWREADY @[src/main/scala/peripheral/DummyMaster.scala 27:22] + io.channels.write_address_channel.AWVALID <= master.io.channels.write_address_channel.AWVALID @[src/main/scala/peripheral/DummyMaster.scala 27:22] + wire _WIRE : UInt<1>[4] @[src/main/scala/peripheral/DummyMaster.scala 28:43] + _WIRE[0] <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 28:43] + _WIRE[1] <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 28:43] + _WIRE[2] <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 28:43] + _WIRE[3] <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 28:43] + master.io.bundle.write_strobe[0] <= _WIRE[0] @[src/main/scala/peripheral/DummyMaster.scala 28:33] + master.io.bundle.write_strobe[1] <= _WIRE[1] @[src/main/scala/peripheral/DummyMaster.scala 28:33] + master.io.bundle.write_strobe[2] <= _WIRE[2] @[src/main/scala/peripheral/DummyMaster.scala 28:33] + master.io.bundle.write_strobe[3] <= _WIRE[3] @[src/main/scala/peripheral/DummyMaster.scala 28:33] + master.io.bundle.write_data <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 29:31] + master.io.bundle.write <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 30:26] + master.io.bundle.read <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 31:25] + master.io.bundle.address <= UInt<1>("h0") @[src/main/scala/peripheral/DummyMaster.scala 32:28] + + module BusSwitch : + input clock : Clock + input reset : Reset + output io : { flip address : UInt<32>, slaves : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}[8], flip master : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}} @[src/main/scala/bus/BusSwitch.scala 22:14] + + inst dummy of DummyMaster @[src/main/scala/bus/BusSwitch.scala 27:21] + dummy.clock <= clock + dummy.reset <= reset + node index = bits(io.address, 31, 29) @[src/main/scala/bus/BusSwitch.scala 28:25] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[0].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[0].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[0].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[0].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[0].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[0].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[0].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[0].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[0].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[1].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[1].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[1].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[1].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[1].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[1].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[1].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[1].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[1].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[2].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[2].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[2].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[2].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[2].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[2].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[2].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[2].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[2].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[3].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[3].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[3].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[3].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[3].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[3].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[3].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[3].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[3].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[4].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[4].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[4].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[4].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[4].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[4].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[4].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[4].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[4].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[5].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[5].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[5].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[5].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[5].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[5].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[5].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[5].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[5].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[6].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[6].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[6].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[6].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[6].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[6].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[6].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[6].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[6].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RRESP <= io.slaves[7].read_data_channel.RRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RDATA <= io.slaves[7].read_data_channel.RDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].read_data_channel.RREADY <= dummy.io.channels.read_data_channel.RREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_data_channel.RVALID <= io.slaves[7].read_data_channel.RVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].read_address_channel.ARPROT <= dummy.io.channels.read_address_channel.ARPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].read_address_channel.ARADDR <= dummy.io.channels.read_address_channel.ARADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.read_address_channel.ARREADY <= io.slaves[7].read_address_channel.ARREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].read_address_channel.ARVALID <= dummy.io.channels.read_address_channel.ARVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BRESP <= io.slaves[7].write_response_channel.BRESP @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_response_channel.BREADY <= dummy.io.channels.write_response_channel.BREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_response_channel.BVALID <= io.slaves[7].write_response_channel.BVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_data_channel.WSTRB <= dummy.io.channels.write_data_channel.WSTRB @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_data_channel.WDATA <= dummy.io.channels.write_data_channel.WDATA @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_data_channel.WREADY <= io.slaves[7].write_data_channel.WREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_data_channel.WVALID <= dummy.io.channels.write_data_channel.WVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_address_channel.AWPROT <= dummy.io.channels.write_address_channel.AWPROT @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_address_channel.AWADDR <= dummy.io.channels.write_address_channel.AWADDR @[src/main/scala/bus/BusSwitch.scala 30:18] + dummy.io.channels.write_address_channel.AWREADY <= io.slaves[7].write_address_channel.AWREADY @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[7].write_address_channel.AWVALID <= dummy.io.channels.write_address_channel.AWVALID @[src/main/scala/bus/BusSwitch.scala 30:18] + io.slaves[index] <= io.master @[src/main/scala/bus/BusSwitch.scala 32:13] + + module InstructionROM : + input clock : Clock + input reset : Reset + output io : { flip address : UInt<32>, data : UInt<32>} @[src/main/scala/peripheral/InstructionROM.scala 28:14] + + smem mem : UInt<32> [1051] @[src/main/scala/peripheral/InstructionROM.scala 34:24] + wire _io_data_WIRE : UInt @[src/main/scala/peripheral/InstructionROM.scala 40:22] + _io_data_WIRE is invalid @[src/main/scala/peripheral/InstructionROM.scala 40:22] + when UInt<1>("h1") : @[src/main/scala/peripheral/InstructionROM.scala 40:22] + _io_data_WIRE <= io.address @[src/main/scala/peripheral/InstructionROM.scala 40:22] + node _io_data_T = or(_io_data_WIRE, UInt<11>("h0")) @[src/main/scala/peripheral/InstructionROM.scala 40:22] + node _io_data_T_1 = bits(_io_data_T, 10, 0) @[src/main/scala/peripheral/InstructionROM.scala 40:22] + read mport io_data_MPORT = mem[_io_data_T_1], clock @[src/main/scala/peripheral/InstructionROM.scala 40:22] + io.data <= io_data_MPORT @[src/main/scala/peripheral/InstructionROM.scala 40:11] + + module AXI4LiteMaster_2 : + input clock : Clock + input reset : Reset + output io : { channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, bundle : { flip read : UInt<1>, flip write : UInt<1>, read_data : UInt<32>, flip write_data : UInt<32>, flip write_strobe : UInt<1>[4], flip address : UInt<32>, busy : UInt<1>, read_valid : UInt<1>, write_valid : UInt<1>}} @[src/main/scala/bus/AXI4Lite.scala 215:14] + + reg state : UInt<3>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 219:22] + node _io_bundle_busy_T = neq(state, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 220:27] + io.bundle.busy <= _io_bundle_busy_T @[src/main/scala/bus/AXI4Lite.scala 220:18] + reg addr : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 222:21] + reg read_valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 223:27] + io.bundle.read_valid <= read_valid @[src/main/scala/bus/AXI4Lite.scala 224:24] + reg write_valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 225:28] + io.bundle.write_valid <= write_valid @[src/main/scala/bus/AXI4Lite.scala 226:25] + reg write_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 227:27] + wire _write_strobe_WIRE : UInt<1>[4] @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[0] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[1] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[2] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + _write_strobe_WIRE[3] <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 228:37] + reg write_strobe : UInt<1>[4], clock with : + reset => (reset, _write_strobe_WIRE) @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg read_data : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/bus/AXI4Lite.scala 229:26] + io.channels.read_address_channel.ARADDR <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 231:43] + reg ARVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 232:24] + io.channels.read_address_channel.ARVALID <= ARVALID @[src/main/scala/bus/AXI4Lite.scala 233:44] + io.channels.read_address_channel.ARPROT <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 234:43] + reg RREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 235:23] + io.channels.read_data_channel.RREADY <= RREADY @[src/main/scala/bus/AXI4Lite.scala 236:40] + io.bundle.read_data <= io.channels.read_data_channel.RDATA @[src/main/scala/bus/AXI4Lite.scala 238:23] + reg AWVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 239:24] + io.channels.write_address_channel.AWADDR <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 240:44] + io.channels.write_address_channel.AWVALID <= AWVALID @[src/main/scala/bus/AXI4Lite.scala 241:45] + reg WVALID : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 242:23] + io.channels.write_data_channel.WVALID <= WVALID @[src/main/scala/bus/AXI4Lite.scala 243:41] + io.channels.write_data_channel.WDATA <= write_data @[src/main/scala/bus/AXI4Lite.scala 244:40] + io.channels.write_address_channel.AWPROT <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 245:44] + node io_channels_write_data_channel_WSTRB_lo = cat(write_strobe[1], write_strobe[0]) @[src/main/scala/bus/AXI4Lite.scala 246:56] + node io_channels_write_data_channel_WSTRB_hi = cat(write_strobe[3], write_strobe[2]) @[src/main/scala/bus/AXI4Lite.scala 246:56] + node _io_channels_write_data_channel_WSTRB_T = cat(io_channels_write_data_channel_WSTRB_hi, io_channels_write_data_channel_WSTRB_lo) @[src/main/scala/bus/AXI4Lite.scala 246:56] + io.channels.write_data_channel.WSTRB <= _io_channels_write_data_channel_WSTRB_T @[src/main/scala/bus/AXI4Lite.scala 246:40] + reg BREADY : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 247:23] + io.channels.write_response_channel.BREADY <= BREADY @[src/main/scala/bus/AXI4Lite.scala 248:45] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_1 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_2 = eq(_T, _T_1) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_2 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 252:14] + AWVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 253:15] + ARVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 254:15] + RREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 255:14] + read_valid <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 256:18] + write_valid <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 257:19] + when io.bundle.write : @[src/main/scala/bus/AXI4Lite.scala 258:29] + state <= UInt<2>("h3") @[src/main/scala/bus/AXI4Lite.scala 259:15] + addr <= io.bundle.address @[src/main/scala/bus/AXI4Lite.scala 260:14] + write_data <= io.bundle.write_data @[src/main/scala/bus/AXI4Lite.scala 261:20] + write_strobe <= io.bundle.write_strobe @[src/main/scala/bus/AXI4Lite.scala 262:22] + else : + when io.bundle.read : @[src/main/scala/bus/AXI4Lite.scala 263:34] + state <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 264:15] + addr <= io.bundle.address @[src/main/scala/bus/AXI4Lite.scala 265:14] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_4 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_5 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + ARVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 269:15] + io.channels.read_address_channel.ARADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 270:47] + node _T_6 = and(io.channels.read_address_channel.ARREADY, ARVALID) @[src/main/scala/bus/AXI4Lite.scala 271:53] + when _T_6 : @[src/main/scala/bus/AXI4Lite.scala 271:65] + state <= UInt<2>("h2") @[src/main/scala/bus/AXI4Lite.scala 272:15] + io.channels.read_address_channel.ARADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 273:49] + ARVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 274:17] + else : + node _T_7 = asUInt(UInt<2>("h2")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_8 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_9 = eq(_T_7, _T_8) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_9 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_10 = eq(io.channels.read_data_channel.RRESP, UInt<1>("h0")) @[src/main/scala/bus/AXI4Lite.scala 278:88] + node _T_11 = and(io.channels.read_data_channel.RVALID, _T_10) @[src/main/scala/bus/AXI4Lite.scala 278:49] + when _T_11 : @[src/main/scala/bus/AXI4Lite.scala 278:97] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 279:15] + read_valid <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 280:20] + RREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 281:16] + read_data <= io.channels.read_data_channel.RDATA @[src/main/scala/bus/AXI4Lite.scala 282:19] + else : + node _T_12 = asUInt(UInt<2>("h3")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_13 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_14 = eq(_T_12, _T_13) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_14 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + AWVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 286:15] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 287:48] + node _T_15 = and(io.channels.write_address_channel.AWREADY, AWVALID) @[src/main/scala/bus/AXI4Lite.scala 288:54] + when _T_15 : @[src/main/scala/bus/AXI4Lite.scala 288:66] + state <= UInt<3>("h4") @[src/main/scala/bus/AXI4Lite.scala 289:15] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 290:50] + AWVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 291:17] + else : + node _T_16 = asUInt(UInt<3>("h4")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_17 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_18 = eq(_T_16, _T_17) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_18 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 295:14] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 296:48] + node _T_19 = and(io.channels.write_data_channel.WREADY, WVALID) @[src/main/scala/bus/AXI4Lite.scala 297:50] + when _T_19 : @[src/main/scala/bus/AXI4Lite.scala 297:61] + io.channels.write_address_channel.AWADDR <= addr @[src/main/scala/bus/AXI4Lite.scala 298:50] + state <= UInt<3>("h5") @[src/main/scala/bus/AXI4Lite.scala 299:15] + WVALID <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 300:16] + else : + node _T_20 = asUInt(UInt<3>("h5")) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_21 = asUInt(state) @[src/main/scala/bus/AXI4Lite.scala 250:17] + node _T_22 = eq(_T_20, _T_21) @[src/main/scala/bus/AXI4Lite.scala 250:17] + when _T_22 : @[src/main/scala/bus/AXI4Lite.scala 250:17] + BREADY <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 304:14] + node _T_23 = and(io.channels.write_response_channel.BVALID, BREADY) @[src/main/scala/bus/AXI4Lite.scala 305:54] + when _T_23 : @[src/main/scala/bus/AXI4Lite.scala 305:65] + state <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 306:15] + write_valid <= UInt<1>("h1") @[src/main/scala/bus/AXI4Lite.scala 307:21] + BREADY <= UInt<1>("h0") @[src/main/scala/bus/AXI4Lite.scala 308:16] + + + module ROMLoader : + input clock : Clock + input reset : Reset + output io : { channels : { write_address_channel : { AWVALID : UInt<1>, flip AWREADY : UInt<1>, AWADDR : UInt<32>, AWPROT : UInt<3>}, write_data_channel : { WVALID : UInt<1>, flip WREADY : UInt<1>, WDATA : UInt<32>, WSTRB : UInt<4>}, write_response_channel : { flip BVALID : UInt<1>, BREADY : UInt<1>, flip BRESP : UInt<2>}, read_address_channel : { ARVALID : UInt<1>, flip ARREADY : UInt<1>, ARADDR : UInt<32>, ARPROT : UInt<3>}, read_data_channel : { flip RVALID : UInt<1>, RREADY : UInt<1>, flip RDATA : UInt<32>, flip RRESP : UInt<2>}}, rom_address : UInt<32>, flip rom_data : UInt<32>, flip load_start : UInt<1>, flip load_address : UInt<32>, load_finished : UInt<1>} @[src/main/scala/peripheral/ROMLoader.scala 23:14] + + inst master of AXI4LiteMaster_2 @[src/main/scala/peripheral/ROMLoader.scala 33:22] + master.clock <= clock + master.reset <= reset + master.io.channels.read_data_channel.RRESP <= io.channels.read_data_channel.RRESP @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.read_data_channel.RDATA <= io.channels.read_data_channel.RDATA @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.read_data_channel.RREADY <= master.io.channels.read_data_channel.RREADY @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.read_data_channel.RVALID <= io.channels.read_data_channel.RVALID @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.read_address_channel.ARPROT <= master.io.channels.read_address_channel.ARPROT @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.read_address_channel.ARADDR <= master.io.channels.read_address_channel.ARADDR @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.read_address_channel.ARREADY <= io.channels.read_address_channel.ARREADY @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.read_address_channel.ARVALID <= master.io.channels.read_address_channel.ARVALID @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.write_response_channel.BRESP <= io.channels.write_response_channel.BRESP @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_response_channel.BREADY <= master.io.channels.write_response_channel.BREADY @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.write_response_channel.BVALID <= io.channels.write_response_channel.BVALID @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_data_channel.WSTRB <= master.io.channels.write_data_channel.WSTRB @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_data_channel.WDATA <= master.io.channels.write_data_channel.WDATA @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.write_data_channel.WREADY <= io.channels.write_data_channel.WREADY @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_data_channel.WVALID <= master.io.channels.write_data_channel.WVALID @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_address_channel.AWPROT <= master.io.channels.write_address_channel.AWPROT @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_address_channel.AWADDR <= master.io.channels.write_address_channel.AWADDR @[src/main/scala/peripheral/ROMLoader.scala 34:22] + master.io.channels.write_address_channel.AWREADY <= io.channels.write_address_channel.AWREADY @[src/main/scala/peripheral/ROMLoader.scala 34:22] + io.channels.write_address_channel.AWVALID <= master.io.channels.write_address_channel.AWVALID @[src/main/scala/peripheral/ROMLoader.scala 34:22] + reg address : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 36:24] + reg valid : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 37:22] + reg loading : UInt<1>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 38:24] + master.io.bundle.read <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 40:25] + io.load_finished <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 41:20] + when io.load_start : @[src/main/scala/peripheral/ROMLoader.scala 43:23] + valid <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 44:11] + loading <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 45:13] + address <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 46:13] + master.io.bundle.write <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 49:26] + master.io.bundle.write_data <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 50:31] + wire _WIRE : UInt<1>[4] @[src/main/scala/peripheral/ROMLoader.scala 51:43] + _WIRE[0] <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 51:43] + _WIRE[1] <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 51:43] + _WIRE[2] <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 51:43] + _WIRE[3] <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 51:43] + master.io.bundle.write_strobe[0] <= _WIRE[0] @[src/main/scala/peripheral/ROMLoader.scala 51:33] + master.io.bundle.write_strobe[1] <= _WIRE[1] @[src/main/scala/peripheral/ROMLoader.scala 51:33] + master.io.bundle.write_strobe[2] <= _WIRE[2] @[src/main/scala/peripheral/ROMLoader.scala 51:33] + master.io.bundle.write_strobe[3] <= _WIRE[3] @[src/main/scala/peripheral/ROMLoader.scala 51:33] + master.io.bundle.address <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 52:28] + node _T = eq(loading, UInt<1>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 54:8] + node _T_1 = eq(master.io.bundle.busy, UInt<1>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 54:20] + node _T_2 = and(_T, _T_1) @[src/main/scala/peripheral/ROMLoader.scala 54:17] + node _T_3 = geq(address, UInt<11>("h41a")) @[src/main/scala/peripheral/ROMLoader.scala 54:54] + node _T_4 = and(_T_2, _T_3) @[src/main/scala/peripheral/ROMLoader.scala 54:43] + when _T_4 : @[src/main/scala/peripheral/ROMLoader.scala 54:75] + io.load_finished <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 55:22] + when loading : @[src/main/scala/peripheral/ROMLoader.scala 57:17] + valid <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 58:11] + node _T_5 = eq(master.io.bundle.busy, UInt<1>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 59:10] + node _T_6 = eq(master.io.bundle.write_valid, UInt<1>("h0")) @[src/main/scala/peripheral/ROMLoader.scala 59:36] + node _T_7 = and(_T_5, _T_6) @[src/main/scala/peripheral/ROMLoader.scala 59:33] + when _T_7 : @[src/main/scala/peripheral/ROMLoader.scala 59:67] + when valid : @[src/main/scala/peripheral/ROMLoader.scala 60:19] + master.io.bundle.write <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 61:32] + master.io.bundle.write_data <= io.rom_data @[src/main/scala/peripheral/ROMLoader.scala 62:37] + wire _WIRE_1 : UInt<1>[4] @[src/main/scala/peripheral/ROMLoader.scala 63:49] + _WIRE_1[0] <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 63:49] + _WIRE_1[1] <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 63:49] + _WIRE_1[2] <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 63:49] + _WIRE_1[3] <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 63:49] + master.io.bundle.write_strobe[0] <= _WIRE_1[0] @[src/main/scala/peripheral/ROMLoader.scala 63:39] + master.io.bundle.write_strobe[1] <= _WIRE_1[1] @[src/main/scala/peripheral/ROMLoader.scala 63:39] + master.io.bundle.write_strobe[2] <= _WIRE_1[2] @[src/main/scala/peripheral/ROMLoader.scala 63:39] + master.io.bundle.write_strobe[3] <= _WIRE_1[3] @[src/main/scala/peripheral/ROMLoader.scala 63:39] + node _master_io_bundle_address_T = dshl(address, UInt<2>("h2")) @[src/main/scala/peripheral/ROMLoader.scala 64:46] + node _master_io_bundle_address_T_1 = add(_master_io_bundle_address_T, io.load_address) @[src/main/scala/peripheral/ROMLoader.scala 64:61] + node _master_io_bundle_address_T_2 = tail(_master_io_bundle_address_T_1, 1) @[src/main/scala/peripheral/ROMLoader.scala 64:61] + master.io.bundle.address <= _master_io_bundle_address_T_2 @[src/main/scala/peripheral/ROMLoader.scala 64:34] + when master.io.bundle.write_valid : @[src/main/scala/peripheral/ROMLoader.scala 67:40] + node _T_8 = geq(address, UInt<11>("h41a")) @[src/main/scala/peripheral/ROMLoader.scala 68:20] + when _T_8 : @[src/main/scala/peripheral/ROMLoader.scala 68:41] + loading <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 69:17] + else : + loading <= UInt<1>("h1") @[src/main/scala/peripheral/ROMLoader.scala 71:17] + node _address_T = add(address, UInt<1>("h1")) @[src/main/scala/peripheral/ROMLoader.scala 72:28] + node _address_T_1 = tail(_address_T, 1) @[src/main/scala/peripheral/ROMLoader.scala 72:28] + address <= _address_T_1 @[src/main/scala/peripheral/ROMLoader.scala 72:17] + valid <= UInt<1>("h0") @[src/main/scala/peripheral/ROMLoader.scala 73:15] + else : + address <= address @[src/main/scala/peripheral/ROMLoader.scala 76:15] + io.rom_address <= address @[src/main/scala/peripheral/ROMLoader.scala 79:18] + + module Top : + input clock : Clock + input reset : UInt<1> + output io : { led : UInt<1>, tx : UInt<1>, flip rx : UInt<1>} @[src/main/scala/board/z710/z710/Top.scala 26:14] + + reg boot_state : UInt<2>, clock with : + reset => (reset, UInt<1>("h0")) @[src/main/scala/board/z710/z710/Top.scala 37:27] + inst uart of Uart @[src/main/scala/board/z710/z710/Top.scala 39:20] + uart.clock <= clock + uart.reset <= reset + io.tx <= uart.io.txd @[src/main/scala/board/z710/z710/Top.scala 40:9] + uart.io.rxd <= io.rx @[src/main/scala/board/z710/z710/Top.scala 41:15] + inst cpu of CPU_1 @[src/main/scala/board/z710/z710/Top.scala 43:19] + cpu.clock <= clock + cpu.reset <= reset + inst mem of Memory @[src/main/scala/board/z710/z710/Top.scala 44:19] + mem.clock <= clock + mem.reset <= reset + inst timer of Timer @[src/main/scala/board/z710/z710/Top.scala 45:21] + timer.clock <= clock + timer.reset <= reset + inst dummy of DummySlave @[src/main/scala/board/z710/z710/Top.scala 46:21] + dummy.clock <= clock + dummy.reset <= reset + inst bus_arbiter of BusArbiter @[src/main/scala/board/z710/z710/Top.scala 47:27] + bus_arbiter.clock <= clock + bus_arbiter.reset <= reset + inst bus_switch of BusSwitch @[src/main/scala/board/z710/z710/Top.scala 48:26] + bus_switch.clock <= clock + bus_switch.reset <= reset + inst instruction_rom of InstructionROM @[src/main/scala/board/z710/z710/Top.scala 50:31] + instruction_rom.clock <= clock + instruction_rom.reset <= reset + inst rom_loader of ROMLoader @[src/main/scala/board/z710/z710/Top.scala 51:26] + rom_loader.clock <= clock + rom_loader.reset <= reset + bus_arbiter.io.bus_request[0] <= UInt<1>("h1") @[src/main/scala/board/z710/z710/Top.scala 53:33] + bus_switch.io.master <= cpu.io.axi4_channels @[src/main/scala/board/z710/z710/Top.scala 55:24] + bus_switch.io.address <= cpu.io.bus_address @[src/main/scala/board/z710/z710/Top.scala 56:25] + dummy.io.channels <= bus_switch.io.slaves[0] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[1] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[2] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[3] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[4] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[5] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[6] @[src/main/scala/board/z710/z710/Top.scala 58:29] + dummy.io.channels <= bus_switch.io.slaves[7] @[src/main/scala/board/z710/z710/Top.scala 58:29] + rom_loader.io.load_address <= UInt<32>("h1000") @[src/main/scala/board/z710/z710/Top.scala 60:30] + rom_loader.io.load_start <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 61:28] + rom_loader.io.rom_data <= instruction_rom.io.data @[src/main/scala/board/z710/z710/Top.scala 62:26] + instruction_rom.io.address <= rom_loader.io.rom_address @[src/main/scala/board/z710/z710/Top.scala 63:30] + cpu.io.stall_flag_bus <= UInt<1>("h1") @[src/main/scala/board/z710/z710/Top.scala 64:25] + cpu.io.instruction_valid <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 65:28] + mem.io.channels <= bus_switch.io.slaves[0] @[src/main/scala/board/z710/z710/Top.scala 66:27] + dummy.io.channels <= rom_loader.io.channels @[src/main/scala/board/z710/z710/Top.scala 67:26] + node _T = asUInt(UInt<1>("h0")) @[src/main/scala/board/z710/z710/Top.scala 68:22] + node _T_1 = asUInt(boot_state) @[src/main/scala/board/z710/z710/Top.scala 68:22] + node _T_2 = eq(_T, _T_1) @[src/main/scala/board/z710/z710/Top.scala 68:22] + when _T_2 : @[src/main/scala/board/z710/z710/Top.scala 68:22] + rom_loader.io.load_start <= UInt<1>("h1") @[src/main/scala/board/z710/z710/Top.scala 70:32] + boot_state <= UInt<1>("h1") @[src/main/scala/board/z710/z710/Top.scala 71:18] + mem.io.channels <= rom_loader.io.channels @[src/main/scala/board/z710/z710/Top.scala 72:30] + else : + node _T_3 = asUInt(UInt<1>("h1")) @[src/main/scala/board/z710/z710/Top.scala 68:22] + node _T_4 = asUInt(boot_state) @[src/main/scala/board/z710/z710/Top.scala 68:22] + node _T_5 = eq(_T_3, _T_4) @[src/main/scala/board/z710/z710/Top.scala 68:22] + when _T_5 : @[src/main/scala/board/z710/z710/Top.scala 68:22] + rom_loader.io.load_start <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 75:32] + mem.io.channels <= rom_loader.io.channels @[src/main/scala/board/z710/z710/Top.scala 76:30] + when rom_loader.io.load_finished : @[src/main/scala/board/z710/z710/Top.scala 77:41] + boot_state <= UInt<2>("h3") @[src/main/scala/board/z710/z710/Top.scala 78:20] + else : + node _T_6 = asUInt(UInt<2>("h3")) @[src/main/scala/board/z710/z710/Top.scala 68:22] + node _T_7 = asUInt(boot_state) @[src/main/scala/board/z710/z710/Top.scala 68:22] + node _T_8 = eq(_T_6, _T_7) @[src/main/scala/board/z710/z710/Top.scala 68:22] + when _T_8 : @[src/main/scala/board/z710/z710/Top.scala 68:22] + cpu.io.stall_flag_bus <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 82:29] + cpu.io.instruction_valid <= UInt<1>("h1") @[src/main/scala/board/z710/z710/Top.scala 83:32] + uart.io.channels <= bus_switch.io.slaves[2] @[src/main/scala/board/z710/z710/Top.scala 87:27] + timer.io.channels <= bus_switch.io.slaves[4] @[src/main/scala/board/z710/z710/Top.scala 88:27] + node _cpu_io_interrupt_flag_T = cat(uart.io.signal_interrupt, timer.io.signal_interrupt) @[src/main/scala/board/z710/z710/Top.scala 90:31] + cpu.io.interrupt_flag <= _cpu_io_interrupt_flag_T @[src/main/scala/board/z710/z710/Top.scala 90:25] + cpu.io.debug_read_address <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 92:29] + mem.io.debug_read_address <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 93:29] + reg led_count : UInt<32>, clock with : + reset => (reset, UInt<32>("h0")) @[src/main/scala/board/z710/z710/Top.scala 99:26] + node _T_9 = geq(led_count, UInt<27>("h5f5e100")) @[src/main/scala/board/z710/z710/Top.scala 100:19] + when _T_9 : @[src/main/scala/board/z710/z710/Top.scala 100:34] + led_count <= UInt<1>("h0") @[src/main/scala/board/z710/z710/Top.scala 101:15] + else : + node _led_count_T = add(led_count, UInt<1>("h1")) @[src/main/scala/board/z710/z710/Top.scala 103:28] + node _led_count_T_1 = tail(_led_count_T, 1) @[src/main/scala/board/z710/z710/Top.scala 103:28] + led_count <= _led_count_T_1 @[src/main/scala/board/z710/z710/Top.scala 103:15] + node _io_led_T = shr(UInt<27>("h5f5e100"), 1) @[src/main/scala/board/z710/z710/Top.scala 106:39] + node _io_led_T_1 = geq(led_count, _io_led_T) @[src/main/scala/board/z710/z710/Top.scala 106:24] + io.led <= _io_led_T_1 @[src/main/scala/board/z710/z710/Top.scala 106:10] + diff --git a/lab4/verilog/z710/Top.v b/lab4/verilog/z710/Top.v new file mode 100644 index 0000000..db34b5e --- /dev/null +++ b/lab4/verilog/z710/Top.v @@ -0,0 +1,6985 @@ +module AXI4LiteSlave( + input clock, + input reset, + input io_channels_write_address_channel_AWVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_write_address_channel_AWREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [7:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_write_data_channel_WVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_write_data_channel_WREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_write_response_channel_BVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_write_response_channel_BREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_read_address_channel_ARVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_read_address_channel_ARREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [7:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_read_data_channel_RVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_read_data_channel_RREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output [31:0] io_channels_read_data_channel_RDATA, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_read, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_write, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [31:0] io_bundle_read_data, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output [31:0] io_bundle_write_data, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output [7:0] io_bundle_address // @[src/main/scala/bus/AXI4Lite.scala 121:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; + reg [31:0] _RAND_3; + reg [31:0] _RAND_4; + reg [31:0] _RAND_5; + reg [31:0] _RAND_6; + reg [31:0] _RAND_7; + reg [31:0] _RAND_8; + reg [31:0] _RAND_9; +`endif // RANDOMIZE_REG_INIT + reg [2:0] state; // @[src/main/scala/bus/AXI4Lite.scala 125:22] + reg [31:0] addr; // @[src/main/scala/bus/AXI4Lite.scala 126:21] + reg read; // @[src/main/scala/bus/AXI4Lite.scala 128:21] + reg write; // @[src/main/scala/bus/AXI4Lite.scala 130:22] + reg [31:0] write_data; // @[src/main/scala/bus/AXI4Lite.scala 132:27] + reg ARREADY; // @[src/main/scala/bus/AXI4Lite.scala 137:24] + reg RVALID; // @[src/main/scala/bus/AXI4Lite.scala 139:23] + reg AWREADY; // @[src/main/scala/bus/AXI4Lite.scala 146:24] + reg WREADY; // @[src/main/scala/bus/AXI4Lite.scala 148:23] + reg BVALID; // @[src/main/scala/bus/AXI4Lite.scala 151:23] + wire _GEN_4 = io_channels_read_address_channel_ARVALID & ARREADY | read; // @[src/main/scala/bus/AXI4Lite.scala 170:65 173:14 128:21] + wire [2:0] _GEN_6 = io_channels_read_data_channel_RREADY & RVALID ? 3'h0 : state; // @[src/main/scala/bus/AXI4Lite.scala 179:60 180:15 125:22] + wire _GEN_7 = io_channels_read_data_channel_RREADY & RVALID ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 178:14 179:60 181:16] + wire [31:0] _GEN_8 = io_channels_write_address_channel_AWVALID & AWREADY ? {{24'd0}, + io_channels_write_address_channel_AWADDR} : addr; // @[src/main/scala/bus/AXI4Lite.scala 186:66 187:14 126:21] + wire [2:0] _GEN_9 = io_channels_write_address_channel_AWVALID & AWREADY ? 3'h4 : state; // @[src/main/scala/bus/AXI4Lite.scala 186:66 188:15 125:22] + wire _GEN_10 = io_channels_write_address_channel_AWVALID & AWREADY ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 185:15 186:66 189:17] + wire [2:0] _GEN_11 = io_channels_write_data_channel_WVALID & WREADY ? 3'h5 : state; // @[src/main/scala/bus/AXI4Lite.scala 194:61 195:15 125:22] + wire _GEN_17 = io_channels_write_data_channel_WVALID & WREADY | write; // @[src/main/scala/bus/AXI4Lite.scala 194:61 198:15 130:22] + wire _GEN_18 = io_channels_write_data_channel_WVALID & WREADY ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 193:14 194:61 199:16] + wire [2:0] _GEN_19 = io_channels_write_response_channel_BREADY & BVALID ? 3'h0 : state; // @[src/main/scala/bus/AXI4Lite.scala 205:65 206:15 125:22] + wire _GEN_20 = io_channels_write_response_channel_BREADY & BVALID ? 1'h0 : write; // @[src/main/scala/bus/AXI4Lite.scala 205:65 207:15 130:22] + wire _GEN_21 = io_channels_write_response_channel_BREADY & BVALID ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 204:14 205:65 208:16] + wire _GEN_22 = 3'h5 == state ? 1'h0 : WREADY; // @[src/main/scala/bus/AXI4Lite.scala 156:17 203:14 148:23] + wire _GEN_23 = 3'h5 == state ? _GEN_21 : BVALID; // @[src/main/scala/bus/AXI4Lite.scala 156:17 151:23] + wire [2:0] _GEN_24 = 3'h5 == state ? _GEN_19 : state; // @[src/main/scala/bus/AXI4Lite.scala 156:17 125:22] + wire _GEN_25 = 3'h5 == state ? _GEN_20 : write; // @[src/main/scala/bus/AXI4Lite.scala 156:17 130:22] + wire _GEN_26 = 3'h4 == state ? _GEN_18 : _GEN_22; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire [2:0] _GEN_27 = 3'h4 == state ? _GEN_11 : _GEN_24; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire _GEN_33 = 3'h4 == state ? _GEN_17 : _GEN_25; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire _GEN_34 = 3'h4 == state ? BVALID : _GEN_23; // @[src/main/scala/bus/AXI4Lite.scala 156:17 151:23] + wire _GEN_35 = 3'h3 == state ? _GEN_10 : AWREADY; // @[src/main/scala/bus/AXI4Lite.scala 156:17 146:24] + wire [31:0] _GEN_36 = 3'h3 == state ? _GEN_8 : addr; // @[src/main/scala/bus/AXI4Lite.scala 156:17 126:21] + wire [2:0] _GEN_37 = 3'h3 == state ? _GEN_9 : _GEN_27; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire _GEN_38 = 3'h3 == state ? WREADY : _GEN_26; // @[src/main/scala/bus/AXI4Lite.scala 156:17 148:23] + wire _GEN_44 = 3'h3 == state ? write : _GEN_33; // @[src/main/scala/bus/AXI4Lite.scala 156:17 130:22] + wire _GEN_45 = 3'h3 == state ? BVALID : _GEN_34; // @[src/main/scala/bus/AXI4Lite.scala 156:17 151:23] + assign io_channels_write_address_channel_AWREADY = AWREADY; // @[src/main/scala/bus/AXI4Lite.scala 147:45] + assign io_channels_write_data_channel_WREADY = WREADY; // @[src/main/scala/bus/AXI4Lite.scala 149:41] + assign io_channels_write_response_channel_BVALID = BVALID; // @[src/main/scala/bus/AXI4Lite.scala 152:45] + assign io_channels_read_address_channel_ARREADY = ARREADY; // @[src/main/scala/bus/AXI4Lite.scala 138:44] + assign io_channels_read_data_channel_RVALID = RVALID; // @[src/main/scala/bus/AXI4Lite.scala 140:40] + assign io_channels_read_data_channel_RDATA = io_bundle_read_data; // @[src/main/scala/bus/AXI4Lite.scala 144:39] + assign io_bundle_read = read; // @[src/main/scala/bus/AXI4Lite.scala 129:18] + assign io_bundle_write = write; // @[src/main/scala/bus/AXI4Lite.scala 131:19] + assign io_bundle_write_data = write_data; // @[src/main/scala/bus/AXI4Lite.scala 133:24] + assign io_bundle_address = addr[7:0]; // @[src/main/scala/bus/AXI4Lite.scala 127:21] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 125:22] + state <= 3'h0; // @[src/main/scala/bus/AXI4Lite.scala 125:22] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_write_address_channel_AWVALID) begin // @[src/main/scala/bus/AXI4Lite.scala 162:55] + state <= 3'h3; // @[src/main/scala/bus/AXI4Lite.scala 163:15] + end else if (io_channels_read_address_channel_ARVALID) begin // @[src/main/scala/bus/AXI4Lite.scala 164:60] + state <= 3'h1; // @[src/main/scala/bus/AXI4Lite.scala 165:15] + end + end else if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_read_address_channel_ARVALID & ARREADY) begin // @[src/main/scala/bus/AXI4Lite.scala 170:65] + state <= 3'h2; // @[src/main/scala/bus/AXI4Lite.scala 171:15] + end + end else if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + state <= _GEN_6; + end else begin + state <= _GEN_37; + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 126:21] + addr <= 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 126:21] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_read_address_channel_ARVALID & ARREADY) begin // @[src/main/scala/bus/AXI4Lite.scala 170:65] + addr <= {{24'd0}, io_channels_read_address_channel_ARADDR}; // @[src/main/scala/bus/AXI4Lite.scala 172:14] + end + end else if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + addr <= _GEN_36; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 128:21] + read <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 128:21] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + read <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 158:12] + end else if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + read <= _GEN_4; + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 130:22] + write <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 130:22] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 159:13] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write <= _GEN_44; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 132:27] + write_data <= 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 132:27] + end else begin + write_data <= io_channels_write_data_channel_WDATA; + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 137:24] + ARREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 137:24] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_read_address_channel_ARVALID & ARREADY) begin // @[src/main/scala/bus/AXI4Lite.scala 170:65] + ARREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 174:17] + end else begin + ARREADY <= 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 169:15] + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 139:23] + RVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 139:23] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 160:14] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= _GEN_7; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 146:24] + AWREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 146:24] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + AWREADY <= _GEN_35; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 148:23] + WREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 148:23] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= _GEN_38; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 151:23] + BVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 151:23] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + BVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 161:14] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + BVALID <= _GEN_45; + 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}}; + state = _RAND_0[2:0]; + _RAND_1 = {1{`RANDOM}}; + addr = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + read = _RAND_2[0:0]; + _RAND_3 = {1{`RANDOM}}; + write = _RAND_3[0:0]; + _RAND_4 = {1{`RANDOM}}; + write_data = _RAND_4[31:0]; + _RAND_5 = {1{`RANDOM}}; + ARREADY = _RAND_5[0:0]; + _RAND_6 = {1{`RANDOM}}; + RVALID = _RAND_6[0:0]; + _RAND_7 = {1{`RANDOM}}; + AWREADY = _RAND_7[0:0]; + _RAND_8 = {1{`RANDOM}}; + WREADY = _RAND_8[0:0]; + _RAND_9 = {1{`RANDOM}}; + BVALID = _RAND_9[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module Tx( + input clock, + input reset, + output io_txd, // @[src/main/scala/peripheral/UART.scala 32:14] + output io_channel_ready, // @[src/main/scala/peripheral/UART.scala 32:14] + input io_channel_valid, // @[src/main/scala/peripheral/UART.scala 32:14] + input [7:0] io_channel_bits // @[src/main/scala/peripheral/UART.scala 32:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; +`endif // RANDOMIZE_REG_INIT + reg [10:0] shiftReg; // @[src/main/scala/peripheral/UART.scala 40:25] + reg [19:0] cntReg; // @[src/main/scala/peripheral/UART.scala 41:23] + reg [3:0] bitsReg; // @[src/main/scala/peripheral/UART.scala 42:24] + wire _io_channel_ready_T = cntReg == 20'h0; // @[src/main/scala/peripheral/UART.scala 44:31] + wire [9:0] shift = shiftReg[10:1]; // @[src/main/scala/peripheral/UART.scala 51:28] + wire [10:0] _shiftReg_T_1 = {1'h1,shift}; // @[src/main/scala/peripheral/UART.scala 52:22] + wire [3:0] _bitsReg_T_1 = bitsReg - 4'h1; // @[src/main/scala/peripheral/UART.scala 53:26] + wire [10:0] _shiftReg_T_3 = {2'h3,io_channel_bits,1'h0}; // @[src/main/scala/peripheral/UART.scala 56:24] + wire [19:0] _cntReg_T_1 = cntReg - 20'h1; // @[src/main/scala/peripheral/UART.scala 64:22] + assign io_txd = shiftReg[0]; // @[src/main/scala/peripheral/UART.scala 45:21] + assign io_channel_ready = cntReg == 20'h0 & bitsReg == 4'h0; // @[src/main/scala/peripheral/UART.scala 44:40] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/peripheral/UART.scala 40:25] + shiftReg <= 11'h7ff; // @[src/main/scala/peripheral/UART.scala 40:25] + end else if (_io_channel_ready_T) begin // @[src/main/scala/peripheral/UART.scala 47:24] + if (bitsReg != 4'h0) begin // @[src/main/scala/peripheral/UART.scala 50:27] + shiftReg <= _shiftReg_T_1; // @[src/main/scala/peripheral/UART.scala 52:16] + end else if (io_channel_valid) begin // @[src/main/scala/peripheral/UART.scala 55:30] + shiftReg <= _shiftReg_T_3; // @[src/main/scala/peripheral/UART.scala 56:18] + end else begin + shiftReg <= 11'h7ff; // @[src/main/scala/peripheral/UART.scala 59:18] + end + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 41:23] + cntReg <= 20'h0; // @[src/main/scala/peripheral/UART.scala 41:23] + end else if (_io_channel_ready_T) begin // @[src/main/scala/peripheral/UART.scala 47:24] + cntReg <= 20'h43c; // @[src/main/scala/peripheral/UART.scala 49:12] + end else begin + cntReg <= _cntReg_T_1; // @[src/main/scala/peripheral/UART.scala 64:12] + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 42:24] + bitsReg <= 4'h0; // @[src/main/scala/peripheral/UART.scala 42:24] + end else if (_io_channel_ready_T) begin // @[src/main/scala/peripheral/UART.scala 47:24] + if (bitsReg != 4'h0) begin // @[src/main/scala/peripheral/UART.scala 50:27] + bitsReg <= _bitsReg_T_1; // @[src/main/scala/peripheral/UART.scala 53:15] + end else if (io_channel_valid) begin // @[src/main/scala/peripheral/UART.scala 55:30] + bitsReg <= 4'hb; // @[src/main/scala/peripheral/UART.scala 57:17] + 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}}; + shiftReg = _RAND_0[10:0]; + _RAND_1 = {1{`RANDOM}}; + cntReg = _RAND_1[19:0]; + _RAND_2 = {1{`RANDOM}}; + bitsReg = _RAND_2[3:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module Buffer( + input clock, + input reset, + input io_in_valid, // @[src/main/scala/peripheral/UART.scala 121:14] + input [7:0] io_in_bits, // @[src/main/scala/peripheral/UART.scala 121:14] + input io_out_ready, // @[src/main/scala/peripheral/UART.scala 121:14] + output io_out_valid, // @[src/main/scala/peripheral/UART.scala 121:14] + output [7:0] io_out_bits // @[src/main/scala/peripheral/UART.scala 121:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; +`endif // RANDOMIZE_REG_INIT + reg stateReg; // @[src/main/scala/peripheral/UART.scala 127:25] + reg [7:0] dataReg; // @[src/main/scala/peripheral/UART.scala 128:24] + wire _io_in_ready_T = ~stateReg; // @[src/main/scala/peripheral/UART.scala 130:27] + wire _GEN_1 = io_in_valid | stateReg; // @[src/main/scala/peripheral/UART.scala 134:23 136:16 127:25] + assign io_out_valid = stateReg; // @[src/main/scala/peripheral/UART.scala 131:28] + assign io_out_bits = dataReg; // @[src/main/scala/peripheral/UART.scala 143:15] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/peripheral/UART.scala 127:25] + stateReg <= 1'h0; // @[src/main/scala/peripheral/UART.scala 127:25] + end else if (_io_in_ready_T) begin // @[src/main/scala/peripheral/UART.scala 133:28] + stateReg <= _GEN_1; + end else if (io_out_ready) begin // @[src/main/scala/peripheral/UART.scala 139:24] + stateReg <= 1'h0; // @[src/main/scala/peripheral/UART.scala 140:16] + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 128:24] + dataReg <= 8'h0; // @[src/main/scala/peripheral/UART.scala 128:24] + end else if (_io_in_ready_T) begin // @[src/main/scala/peripheral/UART.scala 133:28] + if (io_in_valid) begin // @[src/main/scala/peripheral/UART.scala 134:23] + dataReg <= io_in_bits; // @[src/main/scala/peripheral/UART.scala 135:15] + 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}}; + stateReg = _RAND_0[0:0]; + _RAND_1 = {1{`RANDOM}}; + dataReg = _RAND_1[7:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module BufferedTx( + input clock, + input reset, + output io_txd, // @[src/main/scala/peripheral/UART.scala 150:14] + input io_channel_valid, // @[src/main/scala/peripheral/UART.scala 150:14] + input [7:0] io_channel_bits // @[src/main/scala/peripheral/UART.scala 150:14] +); + wire tx_clock; // @[src/main/scala/peripheral/UART.scala 155:18] + wire tx_reset; // @[src/main/scala/peripheral/UART.scala 155:18] + wire tx_io_txd; // @[src/main/scala/peripheral/UART.scala 155:18] + wire tx_io_channel_ready; // @[src/main/scala/peripheral/UART.scala 155:18] + wire tx_io_channel_valid; // @[src/main/scala/peripheral/UART.scala 155:18] + wire [7:0] tx_io_channel_bits; // @[src/main/scala/peripheral/UART.scala 155:18] + wire buf__clock; // @[src/main/scala/peripheral/UART.scala 156:19] + wire buf__reset; // @[src/main/scala/peripheral/UART.scala 156:19] + wire buf__io_in_valid; // @[src/main/scala/peripheral/UART.scala 156:19] + wire [7:0] buf__io_in_bits; // @[src/main/scala/peripheral/UART.scala 156:19] + wire buf__io_out_ready; // @[src/main/scala/peripheral/UART.scala 156:19] + wire buf__io_out_valid; // @[src/main/scala/peripheral/UART.scala 156:19] + wire [7:0] buf__io_out_bits; // @[src/main/scala/peripheral/UART.scala 156:19] + Tx tx ( // @[src/main/scala/peripheral/UART.scala 155:18] + .clock(tx_clock), + .reset(tx_reset), + .io_txd(tx_io_txd), + .io_channel_ready(tx_io_channel_ready), + .io_channel_valid(tx_io_channel_valid), + .io_channel_bits(tx_io_channel_bits) + ); + Buffer buf_ ( // @[src/main/scala/peripheral/UART.scala 156:19] + .clock(buf__clock), + .reset(buf__reset), + .io_in_valid(buf__io_in_valid), + .io_in_bits(buf__io_in_bits), + .io_out_ready(buf__io_out_ready), + .io_out_valid(buf__io_out_valid), + .io_out_bits(buf__io_out_bits) + ); + assign io_txd = tx_io_txd; // @[src/main/scala/peripheral/UART.scala 160:10] + assign tx_clock = clock; + assign tx_reset = reset; + assign tx_io_channel_valid = buf__io_out_valid; // @[src/main/scala/peripheral/UART.scala 159:17] + assign tx_io_channel_bits = buf__io_out_bits; // @[src/main/scala/peripheral/UART.scala 159:17] + assign buf__clock = clock; + assign buf__reset = reset; + assign buf__io_in_valid = io_channel_valid; // @[src/main/scala/peripheral/UART.scala 158:13] + assign buf__io_in_bits = io_channel_bits; // @[src/main/scala/peripheral/UART.scala 158:13] + assign buf__io_out_ready = tx_io_channel_ready; // @[src/main/scala/peripheral/UART.scala 159:17] +endmodule +module Rx( + input clock, + input reset, + input io_rxd, // @[src/main/scala/peripheral/UART.scala 77:14] + input io_channel_ready, // @[src/main/scala/peripheral/UART.scala 77:14] + output io_channel_valid, // @[src/main/scala/peripheral/UART.scala 77:14] + output [7:0] io_channel_bits // @[src/main/scala/peripheral/UART.scala 77:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [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 rxReg_REG; // @[src/main/scala/peripheral/UART.scala 87:30] + reg rxReg; // @[src/main/scala/peripheral/UART.scala 87:22] + reg [7:0] shiftReg; // @[src/main/scala/peripheral/UART.scala 89:25] + reg [19:0] cntReg; // @[src/main/scala/peripheral/UART.scala 90:23] + reg [3:0] bitsReg; // @[src/main/scala/peripheral/UART.scala 91:24] + reg valReg; // @[src/main/scala/peripheral/UART.scala 92:23] + wire [19:0] _cntReg_T_1 = cntReg - 20'h1; // @[src/main/scala/peripheral/UART.scala 95:22] + wire [7:0] _shiftReg_T_1 = {rxReg,shiftReg[7:1]}; // @[src/main/scala/peripheral/UART.scala 98:20] + wire [3:0] _bitsReg_T_1 = bitsReg - 4'h1; // @[src/main/scala/peripheral/UART.scala 99:24] + wire _GEN_0 = bitsReg == 4'h1 | valReg; // @[src/main/scala/peripheral/UART.scala 101:27 102:14 92:23] + assign io_channel_valid = valReg; // @[src/main/scala/peripheral/UART.scala 114:20] + assign io_channel_bits = shiftReg; // @[src/main/scala/peripheral/UART.scala 113:19] + always @(posedge clock) begin + rxReg_REG <= reset | io_rxd; // @[src/main/scala/peripheral/UART.scala 87:{30,30,30}] + rxReg <= reset | rxReg_REG; // @[src/main/scala/peripheral/UART.scala 87:{22,22,22}] + if (reset) begin // @[src/main/scala/peripheral/UART.scala 89:25] + shiftReg <= 8'h0; // @[src/main/scala/peripheral/UART.scala 89:25] + end else if (!(cntReg != 20'h0)) begin // @[src/main/scala/peripheral/UART.scala 94:24] + if (bitsReg != 4'h0) begin // @[src/main/scala/peripheral/UART.scala 96:31] + shiftReg <= _shiftReg_T_1; // @[src/main/scala/peripheral/UART.scala 98:14] + end + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 90:23] + cntReg <= 20'h0; // @[src/main/scala/peripheral/UART.scala 90:23] + end else if (cntReg != 20'h0) begin // @[src/main/scala/peripheral/UART.scala 94:24] + cntReg <= _cntReg_T_1; // @[src/main/scala/peripheral/UART.scala 95:12] + end else if (bitsReg != 4'h0) begin // @[src/main/scala/peripheral/UART.scala 96:31] + cntReg <= 20'h43c; // @[src/main/scala/peripheral/UART.scala 97:12] + end else if (~rxReg) begin // @[src/main/scala/peripheral/UART.scala 104:29] + cntReg <= 20'h65b; // @[src/main/scala/peripheral/UART.scala 105:12] + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 91:24] + bitsReg <= 4'h0; // @[src/main/scala/peripheral/UART.scala 91:24] + end else if (!(cntReg != 20'h0)) begin // @[src/main/scala/peripheral/UART.scala 94:24] + if (bitsReg != 4'h0) begin // @[src/main/scala/peripheral/UART.scala 96:31] + bitsReg <= _bitsReg_T_1; // @[src/main/scala/peripheral/UART.scala 99:13] + end else if (~rxReg) begin // @[src/main/scala/peripheral/UART.scala 104:29] + bitsReg <= 4'h8; // @[src/main/scala/peripheral/UART.scala 106:13] + end + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 92:23] + valReg <= 1'h0; // @[src/main/scala/peripheral/UART.scala 92:23] + end else if (valReg & io_channel_ready) begin // @[src/main/scala/peripheral/UART.scala 109:36] + valReg <= 1'h0; // @[src/main/scala/peripheral/UART.scala 110:12] + end else if (!(cntReg != 20'h0)) begin // @[src/main/scala/peripheral/UART.scala 94:24] + if (bitsReg != 4'h0) begin // @[src/main/scala/peripheral/UART.scala 96:31] + valReg <= _GEN_0; + 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}}; + rxReg_REG = _RAND_0[0:0]; + _RAND_1 = {1{`RANDOM}}; + rxReg = _RAND_1[0:0]; + _RAND_2 = {1{`RANDOM}}; + shiftReg = _RAND_2[7:0]; + _RAND_3 = {1{`RANDOM}}; + cntReg = _RAND_3[19:0]; + _RAND_4 = {1{`RANDOM}}; + bitsReg = _RAND_4[3:0]; + _RAND_5 = {1{`RANDOM}}; + valReg = _RAND_5[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module Uart( + input clock, + input reset, + input io_channels_write_address_channel_AWVALID, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_channels_write_address_channel_AWREADY, // @[src/main/scala/peripheral/UART.scala 164:14] + input [7:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/peripheral/UART.scala 164:14] + input io_channels_write_data_channel_WVALID, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_channels_write_data_channel_WREADY, // @[src/main/scala/peripheral/UART.scala 164:14] + input [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_channels_write_response_channel_BVALID, // @[src/main/scala/peripheral/UART.scala 164:14] + input io_channels_write_response_channel_BREADY, // @[src/main/scala/peripheral/UART.scala 164:14] + input io_channels_read_address_channel_ARVALID, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_channels_read_address_channel_ARREADY, // @[src/main/scala/peripheral/UART.scala 164:14] + input [7:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_channels_read_data_channel_RVALID, // @[src/main/scala/peripheral/UART.scala 164:14] + input io_channels_read_data_channel_RREADY, // @[src/main/scala/peripheral/UART.scala 164:14] + output [31:0] io_channels_read_data_channel_RDATA, // @[src/main/scala/peripheral/UART.scala 164:14] + input io_rxd, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_txd, // @[src/main/scala/peripheral/UART.scala 164:14] + output io_signal_interrupt // @[src/main/scala/peripheral/UART.scala 164:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; +`endif // RANDOMIZE_REG_INIT + wire slave_clock; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_reset; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [7:0] slave_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [31:0] slave_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [7:0] slave_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [31:0] slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_bundle_read; // @[src/main/scala/peripheral/UART.scala 173:21] + wire slave_io_bundle_write; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [31:0] slave_io_bundle_read_data; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [31:0] slave_io_bundle_write_data; // @[src/main/scala/peripheral/UART.scala 173:21] + wire [7:0] slave_io_bundle_address; // @[src/main/scala/peripheral/UART.scala 173:21] + wire tx_clock; // @[src/main/scala/peripheral/UART.scala 176:18] + wire tx_reset; // @[src/main/scala/peripheral/UART.scala 176:18] + wire tx_io_txd; // @[src/main/scala/peripheral/UART.scala 176:18] + wire tx_io_channel_valid; // @[src/main/scala/peripheral/UART.scala 176:18] + wire [7:0] tx_io_channel_bits; // @[src/main/scala/peripheral/UART.scala 176:18] + wire rx_clock; // @[src/main/scala/peripheral/UART.scala 177:18] + wire rx_reset; // @[src/main/scala/peripheral/UART.scala 177:18] + wire rx_io_rxd; // @[src/main/scala/peripheral/UART.scala 177:18] + wire rx_io_channel_ready; // @[src/main/scala/peripheral/UART.scala 177:18] + wire rx_io_channel_valid; // @[src/main/scala/peripheral/UART.scala 177:18] + wire [7:0] rx_io_channel_bits; // @[src/main/scala/peripheral/UART.scala 177:18] + reg interrupt; // @[src/main/scala/peripheral/UART.scala 171:26] + reg [7:0] rxData; // @[src/main/scala/peripheral/UART.scala 172:23] + wire [7:0] _GEN_0 = slave_io_bundle_address == 8'hc ? rxData : 8'h0; // @[src/main/scala/peripheral/UART.scala 179:29 184:51 185:33] + wire _GEN_1 = slave_io_bundle_address == 8'hc ? 1'h0 : interrupt; // @[src/main/scala/peripheral/UART.scala 184:51 186:17 171:26] + wire [16:0] _GEN_2 = slave_io_bundle_address == 8'h4 ? 17'h1c200 : {{9'd0}, _GEN_0}; // @[src/main/scala/peripheral/UART.scala 182:45 183:33] + wire _GEN_3 = slave_io_bundle_address == 8'h4 ? interrupt : _GEN_1; // @[src/main/scala/peripheral/UART.scala 171:26 182:45] + wire [16:0] _GEN_4 = slave_io_bundle_read ? _GEN_2 : 17'h0; // @[src/main/scala/peripheral/UART.scala 179:29 181:30] + wire _GEN_5 = slave_io_bundle_read ? _GEN_3 : interrupt; // @[src/main/scala/peripheral/UART.scala 171:26 181:30] + wire _T_3 = slave_io_bundle_address == 8'h10; // @[src/main/scala/peripheral/UART.scala 195:40] + wire [31:0] _GEN_7 = slave_io_bundle_address == 8'h10 ? slave_io_bundle_write_data : 32'h0; // @[src/main/scala/peripheral/UART.scala 191:22 195:52 197:26] + wire _GEN_8 = slave_io_bundle_address == 8'h8 ? slave_io_bundle_write_data != 32'h0 : _GEN_5; // @[src/main/scala/peripheral/UART.scala 193:45 194:17] + wire _GEN_9 = slave_io_bundle_address == 8'h8 ? 1'h0 : _T_3; // @[src/main/scala/peripheral/UART.scala 190:23 193:45] + wire [31:0] _GEN_10 = slave_io_bundle_address == 8'h8 ? 32'h0 : _GEN_7; // @[src/main/scala/peripheral/UART.scala 191:22 193:45] + wire _GEN_11 = slave_io_bundle_write ? _GEN_8 : _GEN_5; // @[src/main/scala/peripheral/UART.scala 192:31] + wire [31:0] _GEN_13 = slave_io_bundle_write ? _GEN_10 : 32'h0; // @[src/main/scala/peripheral/UART.scala 191:22 192:31] + wire _GEN_16 = rx_io_channel_valid | _GEN_11; // @[src/main/scala/peripheral/UART.scala 206:29 209:15] + AXI4LiteSlave slave ( // @[src/main/scala/peripheral/UART.scala 173:21] + .clock(slave_clock), + .reset(slave_reset), + .io_channels_write_address_channel_AWVALID(slave_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(slave_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(slave_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(slave_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(slave_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(slave_io_channels_write_data_channel_WDATA), + .io_channels_write_response_channel_BVALID(slave_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(slave_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(slave_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(slave_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(slave_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(slave_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(slave_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(slave_io_channels_read_data_channel_RDATA), + .io_bundle_read(slave_io_bundle_read), + .io_bundle_write(slave_io_bundle_write), + .io_bundle_read_data(slave_io_bundle_read_data), + .io_bundle_write_data(slave_io_bundle_write_data), + .io_bundle_address(slave_io_bundle_address) + ); + BufferedTx tx ( // @[src/main/scala/peripheral/UART.scala 176:18] + .clock(tx_clock), + .reset(tx_reset), + .io_txd(tx_io_txd), + .io_channel_valid(tx_io_channel_valid), + .io_channel_bits(tx_io_channel_bits) + ); + Rx rx ( // @[src/main/scala/peripheral/UART.scala 177:18] + .clock(rx_clock), + .reset(rx_reset), + .io_rxd(rx_io_rxd), + .io_channel_ready(rx_io_channel_ready), + .io_channel_valid(rx_io_channel_valid), + .io_channel_bits(rx_io_channel_bits) + ); + assign io_channels_write_address_channel_AWREADY = slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/UART.scala 174:21] + assign io_channels_write_data_channel_WREADY = slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/UART.scala 174:21] + assign io_channels_write_response_channel_BVALID = slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/UART.scala 174:21] + assign io_channels_read_address_channel_ARREADY = slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/UART.scala 174:21] + assign io_channels_read_data_channel_RVALID = slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/UART.scala 174:21] + assign io_channels_read_data_channel_RDATA = slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/UART.scala 174:21] + assign io_txd = tx_io_txd; // @[src/main/scala/peripheral/UART.scala 201:10] + assign io_signal_interrupt = interrupt; // @[src/main/scala/peripheral/UART.scala 204:23] + assign slave_clock = clock; + assign slave_reset = reset; + assign slave_io_channels_write_address_channel_AWVALID = io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_write_address_channel_AWADDR = io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_write_data_channel_WVALID = io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_write_data_channel_WDATA = io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_write_response_channel_BREADY = io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_read_address_channel_ARVALID = io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_read_address_channel_ARADDR = io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_channels_read_data_channel_RREADY = io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/UART.scala 174:21] + assign slave_io_bundle_read_data = {{15'd0}, _GEN_4}; + assign tx_clock = clock; + assign tx_reset = reset; + assign tx_io_channel_valid = slave_io_bundle_write & _GEN_9; // @[src/main/scala/peripheral/UART.scala 190:23 192:31] + assign tx_io_channel_bits = _GEN_13[7:0]; + assign rx_clock = clock; + assign rx_reset = reset; + assign rx_io_rxd = io_rxd; // @[src/main/scala/peripheral/UART.scala 202:13] + assign rx_io_channel_ready = rx_io_channel_valid; // @[src/main/scala/peripheral/UART.scala 205:23 206:29 207:25] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/peripheral/UART.scala 171:26] + interrupt <= 1'h0; // @[src/main/scala/peripheral/UART.scala 171:26] + end else begin + interrupt <= _GEN_16; + end + if (reset) begin // @[src/main/scala/peripheral/UART.scala 172:23] + rxData <= 8'h0; // @[src/main/scala/peripheral/UART.scala 172:23] + end else if (rx_io_channel_valid) begin // @[src/main/scala/peripheral/UART.scala 206:29] + rxData <= rx_io_channel_bits; // @[src/main/scala/peripheral/UART.scala 208:12] + 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}}; + interrupt = _RAND_0[0:0]; + _RAND_1 = {1{`RANDOM}}; + rxData = _RAND_1[7:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module Control( + input io_jump_flag, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input io_stall_flag_if, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input io_stall_flag_mem, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input io_stall_flag_clint, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input io_stall_flag_bus, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input [4:0] io_rs1_id, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input [4:0] io_rs2_id, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input io_memory_read_enable_ex, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + input [4:0] io_rd_ex, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + output io_if_flush, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + output io_id_flush, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + output io_pc_stall, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + output io_if_stall, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + output io_id_stall, // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] + output io_ex_stall // @[src/main/scala/riscv/core/fivestage/Control.scala 21:14] +); + wire id_hazard = io_memory_read_enable_ex & (io_rd_ex == io_rs1_id | io_rd_ex == io_rs2_id); // @[src/main/scala/riscv/core/fivestage/Control.scala 40:44] + wire _io_pc_stall_T = io_stall_flag_mem | io_stall_flag_clint; // @[src/main/scala/riscv/core/fivestage/Control.scala 44:36] + assign io_if_flush = io_jump_flag; // @[src/main/scala/riscv/core/fivestage/Control.scala 41:15] + assign io_id_flush = io_memory_read_enable_ex & (io_rd_ex == io_rs1_id | io_rd_ex == io_rs2_id); // @[src/main/scala/riscv/core/fivestage/Control.scala 40:44] + assign io_pc_stall = io_stall_flag_mem | io_stall_flag_clint | id_hazard | io_stall_flag_bus | io_stall_flag_if; // @[src/main/scala/riscv/core/fivestage/Control.scala 44:93] + assign io_if_stall = _io_pc_stall_T | id_hazard; // @[src/main/scala/riscv/core/fivestage/Control.scala 45:59] + assign io_id_stall = io_stall_flag_mem | io_stall_flag_clint; // @[src/main/scala/riscv/core/fivestage/Control.scala 46:36] + assign io_ex_stall = io_stall_flag_mem | io_stall_flag_clint; // @[src/main/scala/riscv/core/fivestage/Control.scala 47:36] +endmodule +module RegisterFile( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + input [4:0] io_write_address, // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + input [31:0] io_write_data, // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + input [4:0] io_read_address1, // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + input [4:0] io_read_address2, // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + output [31:0] io_read_data1, // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] + output [31:0] io_read_data2 // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 33:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [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 [31:0] registers_0; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_1; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_2; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_3; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_4; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_5; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_6; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_7; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_8; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_9; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_10; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_11; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_12; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_13; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_14; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_15; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_16; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_17; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_18; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_19; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_20; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_21; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_22; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_23; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_24; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_25; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_26; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_27; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_28; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_29; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_30; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + reg [31:0] registers_31; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 46:22] + wire _io_read_data1_T = io_read_address1 == 5'h0; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 57:25] + wire _io_read_data1_T_2 = io_read_address1 == io_write_address & io_write_enable; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 58:46] + wire [31:0] _GEN_97 = 5'h1 == io_read_address1 ? registers_1 : registers_0; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_98 = 5'h2 == io_read_address1 ? registers_2 : _GEN_97; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_99 = 5'h3 == io_read_address1 ? registers_3 : _GEN_98; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_100 = 5'h4 == io_read_address1 ? registers_4 : _GEN_99; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_101 = 5'h5 == io_read_address1 ? registers_5 : _GEN_100; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_102 = 5'h6 == io_read_address1 ? registers_6 : _GEN_101; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_103 = 5'h7 == io_read_address1 ? registers_7 : _GEN_102; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_104 = 5'h8 == io_read_address1 ? registers_8 : _GEN_103; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_105 = 5'h9 == io_read_address1 ? registers_9 : _GEN_104; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_106 = 5'ha == io_read_address1 ? registers_10 : _GEN_105; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_107 = 5'hb == io_read_address1 ? registers_11 : _GEN_106; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_108 = 5'hc == io_read_address1 ? registers_12 : _GEN_107; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_109 = 5'hd == io_read_address1 ? registers_13 : _GEN_108; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_110 = 5'he == io_read_address1 ? registers_14 : _GEN_109; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_111 = 5'hf == io_read_address1 ? registers_15 : _GEN_110; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_112 = 5'h10 == io_read_address1 ? registers_16 : _GEN_111; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_113 = 5'h11 == io_read_address1 ? registers_17 : _GEN_112; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_114 = 5'h12 == io_read_address1 ? registers_18 : _GEN_113; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_115 = 5'h13 == io_read_address1 ? registers_19 : _GEN_114; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_116 = 5'h14 == io_read_address1 ? registers_20 : _GEN_115; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_117 = 5'h15 == io_read_address1 ? registers_21 : _GEN_116; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_118 = 5'h16 == io_read_address1 ? registers_22 : _GEN_117; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_119 = 5'h17 == io_read_address1 ? registers_23 : _GEN_118; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_120 = 5'h18 == io_read_address1 ? registers_24 : _GEN_119; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_121 = 5'h19 == io_read_address1 ? registers_25 : _GEN_120; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_122 = 5'h1a == io_read_address1 ? registers_26 : _GEN_121; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_123 = 5'h1b == io_read_address1 ? registers_27 : _GEN_122; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_124 = 5'h1c == io_read_address1 ? registers_28 : _GEN_123; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_125 = 5'h1d == io_read_address1 ? registers_29 : _GEN_124; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_126 = 5'h1e == io_read_address1 ? registers_30 : _GEN_125; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_127 = 5'h1f == io_read_address1 ? registers_31 : _GEN_126; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _io_read_data1_T_3 = _io_read_data1_T_2 ? io_write_data : _GEN_127; // @[src/main/scala/chisel3/util/Mux.scala 141:16] + wire _io_read_data2_T = io_read_address2 == 5'h0; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 65:25] + wire _io_read_data2_T_2 = io_read_address2 == io_write_address & io_write_enable; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 66:46] + wire [31:0] _GEN_129 = 5'h1 == io_read_address2 ? registers_1 : registers_0; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_130 = 5'h2 == io_read_address2 ? registers_2 : _GEN_129; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_131 = 5'h3 == io_read_address2 ? registers_3 : _GEN_130; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_132 = 5'h4 == io_read_address2 ? registers_4 : _GEN_131; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_133 = 5'h5 == io_read_address2 ? registers_5 : _GEN_132; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_134 = 5'h6 == io_read_address2 ? registers_6 : _GEN_133; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_135 = 5'h7 == io_read_address2 ? registers_7 : _GEN_134; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_136 = 5'h8 == io_read_address2 ? registers_8 : _GEN_135; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_137 = 5'h9 == io_read_address2 ? registers_9 : _GEN_136; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_138 = 5'ha == io_read_address2 ? registers_10 : _GEN_137; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_139 = 5'hb == io_read_address2 ? registers_11 : _GEN_138; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_140 = 5'hc == io_read_address2 ? registers_12 : _GEN_139; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_141 = 5'hd == io_read_address2 ? registers_13 : _GEN_140; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_142 = 5'he == io_read_address2 ? registers_14 : _GEN_141; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_143 = 5'hf == io_read_address2 ? registers_15 : _GEN_142; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_144 = 5'h10 == io_read_address2 ? registers_16 : _GEN_143; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_145 = 5'h11 == io_read_address2 ? registers_17 : _GEN_144; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_146 = 5'h12 == io_read_address2 ? registers_18 : _GEN_145; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_147 = 5'h13 == io_read_address2 ? registers_19 : _GEN_146; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_148 = 5'h14 == io_read_address2 ? registers_20 : _GEN_147; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_149 = 5'h15 == io_read_address2 ? registers_21 : _GEN_148; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_150 = 5'h16 == io_read_address2 ? registers_22 : _GEN_149; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_151 = 5'h17 == io_read_address2 ? registers_23 : _GEN_150; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_152 = 5'h18 == io_read_address2 ? registers_24 : _GEN_151; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_153 = 5'h19 == io_read_address2 ? registers_25 : _GEN_152; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_154 = 5'h1a == io_read_address2 ? registers_26 : _GEN_153; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_155 = 5'h1b == io_read_address2 ? registers_27 : _GEN_154; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_156 = 5'h1c == io_read_address2 ? registers_28 : _GEN_155; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_157 = 5'h1d == io_read_address2 ? registers_29 : _GEN_156; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_158 = 5'h1e == io_read_address2 ? registers_30 : _GEN_157; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _GEN_159 = 5'h1f == io_read_address2 ? registers_31 : _GEN_158; // @[src/main/scala/chisel3/util/Mux.scala 141:{16,16}] + wire [31:0] _io_read_data2_T_3 = _io_read_data2_T_2 ? io_write_data : _GEN_159; // @[src/main/scala/chisel3/util/Mux.scala 141:16] + assign io_read_data1 = _io_read_data1_T ? 32'h0 : _io_read_data1_T_3; // @[src/main/scala/chisel3/util/Mux.scala 141:16] + assign io_read_data2 = _io_read_data2_T ? 32'h0 : _io_read_data2_T_3; // @[src/main/scala/chisel3/util/Mux.scala 141:16] + always @(posedge clock) begin + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h0 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_0 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_1 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h2 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_2 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h3 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_3 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h4 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_4 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h5 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_5 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h6 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_6 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h7 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_7 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h8 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_8 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h9 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_9 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'ha == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_10 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'hb == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_11 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'hc == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_12 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'hd == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_13 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'he == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_14 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'hf == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_15 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h10 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_16 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h11 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_17 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h12 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_18 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h13 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_19 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h14 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_20 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h15 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_21 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h16 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_22 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h17 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_23 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h18 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_24 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h19 == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_25 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1a == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_26 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1b == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_27 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1c == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_28 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1d == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_29 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1e == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_30 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + if (~reset) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 48:23] + if (io_write_enable & io_write_address != 5'h0) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 49:55] + if (5'h1f == io_write_address) begin // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + registers_31 <= io_write_data; // @[src/main/scala/riscv/core/fivestage/RegisterFile.scala 50:35] + end + end + end + end +// Register and memory initialization +`ifdef RANDOMIZE_GARBAGE_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_INVALID_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_REG_INIT +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_MEM_INIT +`define RANDOMIZE +`endif +`ifndef RANDOM +`define RANDOM $random +`endif +`ifdef RANDOMIZE_MEM_INIT + integer initvar; +`endif +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `ifdef INIT_RANDOM + `INIT_RANDOM + `endif + `ifndef VERILATOR + `ifdef RANDOMIZE_DELAY + #`RANDOMIZE_DELAY begin end + `else + #0.002 begin end + `endif + `endif +`ifdef RANDOMIZE_REG_INIT + _RAND_0 = {1{`RANDOM}}; + registers_0 = _RAND_0[31:0]; + _RAND_1 = {1{`RANDOM}}; + registers_1 = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + registers_2 = _RAND_2[31:0]; + _RAND_3 = {1{`RANDOM}}; + registers_3 = _RAND_3[31:0]; + _RAND_4 = {1{`RANDOM}}; + registers_4 = _RAND_4[31:0]; + _RAND_5 = {1{`RANDOM}}; + registers_5 = _RAND_5[31:0]; + _RAND_6 = {1{`RANDOM}}; + registers_6 = _RAND_6[31:0]; + _RAND_7 = {1{`RANDOM}}; + registers_7 = _RAND_7[31:0]; + _RAND_8 = {1{`RANDOM}}; + registers_8 = _RAND_8[31:0]; + _RAND_9 = {1{`RANDOM}}; + registers_9 = _RAND_9[31:0]; + _RAND_10 = {1{`RANDOM}}; + registers_10 = _RAND_10[31:0]; + _RAND_11 = {1{`RANDOM}}; + registers_11 = _RAND_11[31:0]; + _RAND_12 = {1{`RANDOM}}; + registers_12 = _RAND_12[31:0]; + _RAND_13 = {1{`RANDOM}}; + registers_13 = _RAND_13[31:0]; + _RAND_14 = {1{`RANDOM}}; + registers_14 = _RAND_14[31:0]; + _RAND_15 = {1{`RANDOM}}; + registers_15 = _RAND_15[31:0]; + _RAND_16 = {1{`RANDOM}}; + registers_16 = _RAND_16[31:0]; + _RAND_17 = {1{`RANDOM}}; + registers_17 = _RAND_17[31:0]; + _RAND_18 = {1{`RANDOM}}; + registers_18 = _RAND_18[31:0]; + _RAND_19 = {1{`RANDOM}}; + registers_19 = _RAND_19[31:0]; + _RAND_20 = {1{`RANDOM}}; + registers_20 = _RAND_20[31:0]; + _RAND_21 = {1{`RANDOM}}; + registers_21 = _RAND_21[31:0]; + _RAND_22 = {1{`RANDOM}}; + registers_22 = _RAND_22[31:0]; + _RAND_23 = {1{`RANDOM}}; + registers_23 = _RAND_23[31:0]; + _RAND_24 = {1{`RANDOM}}; + registers_24 = _RAND_24[31:0]; + _RAND_25 = {1{`RANDOM}}; + registers_25 = _RAND_25[31:0]; + _RAND_26 = {1{`RANDOM}}; + registers_26 = _RAND_26[31:0]; + _RAND_27 = {1{`RANDOM}}; + registers_27 = _RAND_27[31:0]; + _RAND_28 = {1{`RANDOM}}; + registers_28 = _RAND_28[31:0]; + _RAND_29 = {1{`RANDOM}}; + registers_29 = _RAND_29[31:0]; + _RAND_30 = {1{`RANDOM}}; + registers_30 = _RAND_30[31:0]; + _RAND_31 = {1{`RANDOM}}; + registers_31 = _RAND_31[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module InstructionFetch( + input clock, + input reset, + input io_stall_flag_ctrl, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + input io_jump_flag_id, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + input [31:0] io_jump_address_id, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + input io_instruction_valid, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + output [31:0] io_bus_address, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + input [31:0] io_bus_data, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + output io_ctrl_stall_flag, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + output [31:0] io_id_instruction_address, // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] + output [31:0] io_id_instruction // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 26:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; +`endif // RANDOMIZE_REG_INIT + reg pending_jump; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 41:29] + reg [31:0] pc; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 42:19] + wire [31:0] _pc_T_1 = pc + 32'h4; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 47:8] + wire _T = ~io_instruction_valid; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 53:8] + wire _GEN_0 = io_jump_flag_id | pending_jump; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 54:27 55:20 41:29] + wire _GEN_1 = ~io_instruction_valid ? _GEN_0 : pending_jump; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 41:29 53:31] + assign io_bus_address = pc; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 67:18] + assign io_ctrl_stall_flag = _T | pending_jump; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 65:47] + assign io_id_instruction_address = pc; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 66:29] + assign io_id_instruction = io_instruction_valid & ~io_jump_flag_id & ~pending_jump ? io_bus_data : 32'h13; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 63:27] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 41:29] + pending_jump <= 1'h0; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 41:29] + end else if (io_instruction_valid) begin // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 58:30] + if (pending_jump) begin // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 59:24] + pending_jump <= 1'h0; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 60:20] + end else begin + pending_jump <= _GEN_1; + end + end else begin + pending_jump <= _GEN_1; + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 42:19] + pc <= 32'h1000; // @[src/main/scala/riscv/core/fivestage/InstructionFetch.scala 42:19] + end else if (io_jump_flag_id) begin // @[src/main/scala/chisel3/util/Mux.scala 141:16] + pc <= io_jump_address_id; + end else if (!(io_stall_flag_ctrl)) begin // @[src/main/scala/chisel3/util/Mux.scala 141:16] + pc <= _pc_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}}; + pending_jump = _RAND_0[0:0]; + _RAND_1 = {1{`RANDOM}}; + pc = _RAND_1[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module PipelineRegister( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input [31:0] io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output [31:0] io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg [31:0] reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 32'h13; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 32'h13; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + reg_ = _RAND_0[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module PipelineRegister_1( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input [31:0] io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output [31:0] io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg [31:0] reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 32'h1000; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 32'h1000; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + reg_ = _RAND_0[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module PipelineRegister_2( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input [31:0] io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output [31:0] io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg [31:0] reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 32'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 32'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + reg_ = _RAND_0[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module IF2ID( + input clock, + input reset, + input io_stall_flag, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + input [31:0] io_instruction, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + input [31:0] io_interrupt_flag, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + output [31:0] io_output_instruction, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + output [31:0] io_output_instruction_address, // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] + output [31:0] io_output_interrupt_flag // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 21:14] +); + wire instruction_clock; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + wire instruction_reset; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + wire instruction_io_write_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + wire instruction_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + wire [31:0] instruction_io_in; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + wire [31:0] instruction_io_out; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + wire instruction_address_clock; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + wire instruction_address_reset; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + wire instruction_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + wire instruction_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + wire [31:0] instruction_address_io_in; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + wire [31:0] instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + wire interrupt_flag_clock; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + wire interrupt_flag_reset; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + wire interrupt_flag_io_write_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + wire interrupt_flag_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + wire [31:0] interrupt_flag_io_in; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + wire [31:0] interrupt_flag_io_out; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + PipelineRegister instruction ( // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 35:27] + .clock(instruction_clock), + .reset(instruction_reset), + .io_write_enable(instruction_io_write_enable), + .io_flush_enable(instruction_io_flush_enable), + .io_in(instruction_io_in), + .io_out(instruction_io_out) + ); + PipelineRegister_1 instruction_address ( // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 41:35] + .clock(instruction_address_clock), + .reset(instruction_address_reset), + .io_write_enable(instruction_address_io_write_enable), + .io_flush_enable(instruction_address_io_flush_enable), + .io_in(instruction_address_io_in), + .io_out(instruction_address_io_out) + ); + PipelineRegister_2 interrupt_flag ( // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 47:30] + .clock(interrupt_flag_clock), + .reset(interrupt_flag_reset), + .io_write_enable(interrupt_flag_io_write_enable), + .io_flush_enable(interrupt_flag_io_flush_enable), + .io_in(interrupt_flag_io_in), + .io_out(interrupt_flag_io_out) + ); + assign io_output_instruction = instruction_io_out; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 39:25] + assign io_output_instruction_address = instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 45:33] + assign io_output_interrupt_flag = interrupt_flag_io_out; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 51:28] + assign instruction_clock = clock; + assign instruction_reset = reset; + assign instruction_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 33:22] + assign instruction_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 38:31] + assign instruction_io_in = io_instruction; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 36:21] + assign instruction_address_clock = clock; + assign instruction_address_reset = reset; + assign instruction_address_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 33:22] + assign instruction_address_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 44:39] + assign instruction_address_io_in = io_instruction_address; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 42:29] + assign interrupt_flag_clock = clock; + assign interrupt_flag_reset = reset; + assign interrupt_flag_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 33:22] + assign interrupt_flag_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 50:34] + assign interrupt_flag_io_in = io_interrupt_flag; // @[src/main/scala/riscv/core/fivestage/IF2ID.scala 48:24] +endmodule +module InstructionDecode( + input [31:0] io_instruction, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + input [31:0] io_reg1_data, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + input [31:0] io_reg2_data, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + input io_interrupt_assert, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + input [31:0] io_interrupt_handler_address, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [4:0] io_regs_reg1_read_address, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [4:0] io_regs_reg2_read_address, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [31:0] io_ex_immediate, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_ex_aluop1_source, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_ex_aluop2_source, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_ex_memory_read_enable, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_ex_memory_write_enable, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [1:0] io_ex_reg_write_source, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_ex_reg_write_enable, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [4:0] io_ex_reg_write_address, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [11:0] io_ex_csr_address, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_ex_csr_write_enable, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output io_if_jump_flag, // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] + output [31:0] io_if_jump_address // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 136:14] +); + wire [6:0] opcode = io_instruction[6:0]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 161:30] + wire [2:0] funct3 = io_instruction[14:12]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 162:30] + wire [4:0] rd = io_instruction[11:7]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 164:26] + wire [4:0] rs1 = io_instruction[19:15]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 165:27] + wire _io_regs_reg1_read_address_T = opcode == 7'h37; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 168:43] + wire [19:0] _immediate_T_2 = io_instruction[31] ? 20'hfffff : 20'h0; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:13] + wire [31:0] _immediate_T_4 = {_immediate_T_2,io_instruction[31:20]}; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 174:8] + wire [20:0] _immediate_T_7 = io_instruction[31] ? 21'h1fffff : 21'h0; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:37] + wire [31:0] _immediate_T_9 = {_immediate_T_7,io_instruction[30:20]}; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 176:32] + wire [31:0] _immediate_T_25 = {_immediate_T_7,io_instruction[30:25],rd}; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 179:32] + wire [31:0] _immediate_T_32 = {_immediate_T_2,io_instruction[7],io_instruction[30:25],io_instruction[11:8],1'h0}; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 180:32] + wire [31:0] _immediate_T_34 = {io_instruction[31:12],12'h0}; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 181:30] + wire [11:0] _immediate_T_39 = io_instruction[31] ? 12'hfff : 12'h0; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:35] + wire [31:0] _immediate_T_43 = {_immediate_T_39,io_instruction[19:12],io_instruction[20],io_instruction[30:21],1'h0}; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 183:30] + wire [31:0] _immediate_T_45 = 7'h13 == opcode ? _immediate_T_9 : _immediate_T_4; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _immediate_T_47 = 7'h3 == opcode ? _immediate_T_9 : _immediate_T_45; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _immediate_T_49 = 7'h67 == opcode ? _immediate_T_9 : _immediate_T_47; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _immediate_T_51 = 7'h23 == opcode ? _immediate_T_25 : _immediate_T_49; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _immediate_T_53 = 7'h63 == opcode ? _immediate_T_32 : _immediate_T_51; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _immediate_T_55 = 7'h37 == opcode ? _immediate_T_34 : _immediate_T_53; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _immediate_T_57 = 7'h17 == opcode ? _immediate_T_34 : _immediate_T_55; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_ex_aluop1_source_T = opcode == 7'h17; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:12] + wire _io_ex_aluop1_source_T_1 = opcode == 7'h63; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:45] + wire _io_ex_aluop1_source_T_3 = opcode == 7'h6f; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:78] + wire _io_ex_aluop2_source_T = opcode == 7'h33; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 193:12] + wire _io_ex_memory_read_enable_T = opcode == 7'h3; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 197:38] + wire [1:0] _io_ex_reg_write_source_T_1 = 7'h3 == opcode ? 2'h1 : 2'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [1:0] _io_ex_reg_write_source_T_3 = 7'h73 == opcode ? 2'h2 : _io_ex_reg_write_source_T_1; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [1:0] _io_ex_reg_write_source_T_5 = 7'h6f == opcode ? 2'h3 : _io_ex_reg_write_source_T_3; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_ex_reg_write_enable_T_4 = _io_ex_aluop2_source_T | opcode == 7'h13 | _io_ex_memory_read_enable_T; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 209:97] + wire _io_ex_reg_write_enable_T_10 = _io_ex_reg_write_enable_T_4 | _io_ex_aluop1_source_T | + _io_regs_reg1_read_address_T | _io_ex_aluop1_source_T_3; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 210:105] + wire _io_ex_reg_write_enable_T_11 = opcode == 7'h67; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:46] + wire _io_ex_reg_write_enable_T_13 = opcode == 7'h73; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:80] + wire _io_ex_csr_write_enable_T_4 = funct3 == 3'h2; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 216:14] + wire _io_ex_csr_write_enable_T_5 = funct3 == 3'h1 | funct3 == 3'h5 | _io_ex_csr_write_enable_T_4; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 215:83] + wire _io_ex_csr_write_enable_T_8 = funct3 == 3'h3; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 217:14] + wire _io_ex_csr_write_enable_T_9 = _io_ex_csr_write_enable_T_5 | funct3 == 3'h6 | _io_ex_csr_write_enable_T_8; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 216:85] + wire _io_ex_csr_write_enable_T_11 = _io_ex_csr_write_enable_T_9 | funct3 == 3'h7; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 217:44] + wire _io_if_jump_flag_T_1 = io_interrupt_assert | _io_ex_aluop1_source_T_3; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 219:42] + wire _io_if_jump_flag_T_3 = _io_if_jump_flag_T_1 | _io_ex_reg_write_enable_T_11; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 220:35] + wire _io_if_jump_flag_T_5 = io_reg1_data == io_reg2_data; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 226:48] + wire _io_if_jump_flag_T_6 = io_reg1_data != io_reg2_data; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 227:48] + wire _io_if_jump_flag_T_9 = $signed(io_reg1_data) < $signed(io_reg2_data); // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 228:55] + wire _io_if_jump_flag_T_12 = $signed(io_reg1_data) >= $signed(io_reg2_data); // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 229:55] + wire _io_if_jump_flag_T_13 = io_reg1_data < io_reg2_data; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 230:56] + wire _io_if_jump_flag_T_14 = io_reg1_data >= io_reg2_data; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 231:56] + wire _io_if_jump_flag_T_18 = 3'h1 == funct3 ? _io_if_jump_flag_T_6 : 3'h0 == funct3 & _io_if_jump_flag_T_5; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_if_jump_flag_T_20 = 3'h4 == funct3 ? _io_if_jump_flag_T_9 : _io_if_jump_flag_T_18; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_if_jump_flag_T_22 = 3'h5 == funct3 ? _io_if_jump_flag_T_12 : _io_if_jump_flag_T_20; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_if_jump_flag_T_24 = 3'h6 == funct3 ? _io_if_jump_flag_T_13 : _io_if_jump_flag_T_22; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_if_jump_flag_T_26 = 3'h7 == funct3 ? _io_if_jump_flag_T_14 : _io_if_jump_flag_T_24; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_if_jump_flag_T_27 = _io_ex_aluop1_source_T_1 & _io_if_jump_flag_T_26; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 222:37] + wire [31:0] _io_if_jump_address_T_1 = _io_ex_reg_write_enable_T_11 ? io_reg1_data : io_instruction_address; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 236:26] + wire [31:0] _io_if_jump_address_T_3 = io_ex_immediate + _io_if_jump_address_T_1; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 236:21] + assign io_regs_reg1_read_address = opcode == 7'h37 ? 5'h0 : rs1; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 168:35] + assign io_regs_reg2_read_address = io_instruction[24:20]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 166:27] + assign io_ex_immediate = 7'h6f == opcode ? _immediate_T_43 : _immediate_T_57; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + assign io_ex_aluop1_source = opcode == 7'h17 | opcode == 7'h63 | opcode == 7'h6f; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 188:68] + assign io_ex_aluop2_source = _io_ex_aluop2_source_T ? 1'h0 : 1'h1; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 192:29] + assign io_ex_memory_read_enable = opcode == 7'h3; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 197:38] + assign io_ex_memory_write_enable = opcode == 7'h23; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 198:39] + assign io_ex_reg_write_source = 7'h67 == opcode ? 2'h3 : _io_ex_reg_write_source_T_5; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + assign io_ex_reg_write_enable = _io_ex_reg_write_enable_T_10 | opcode == 7'h67 | opcode == 7'h73; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 211:69] + assign io_ex_reg_write_address = io_instruction[11:7]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 212:44] + assign io_ex_csr_address = io_instruction[31:20]; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 213:38] + assign io_ex_csr_write_enable = _io_ex_reg_write_enable_T_13 & _io_ex_csr_write_enable_T_11; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 214:59] + assign io_if_jump_flag = _io_if_jump_flag_T_3 | _io_if_jump_flag_T_27; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 221:36] + assign io_if_jump_address = io_interrupt_assert ? io_interrupt_handler_address : _io_if_jump_address_T_3; // @[src/main/scala/riscv/core/fivestage/InstructionDecode.scala 234:28] +endmodule +module PipelineRegister_5( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 1'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 1'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + 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 PipelineRegister_6( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input [4:0] io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output [4:0] io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg [4:0] reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 5'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 5'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + reg_ = _RAND_0[4:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module PipelineRegister_7( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input [1:0] io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output [1:0] io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg [1:0] reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 2'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 2'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + 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 PipelineRegister_14( + input clock, + input reset, + input io_write_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + input [11:0] io_in, // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] + output [11:0] io_out // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 21:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + reg [11:0] reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + assign io_out = reg_; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 34:10] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + reg_ <= 12'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 28:20] + end else if (io_write_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 29:25] + reg_ <= io_in; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 30:9] + end else if (io_flush_enable) begin // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 31:31] + reg_ <= 12'h0; // @[src/main/scala/riscv/core/fivestage/PipelineRegister.scala 32: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}}; + reg_ = _RAND_0[11:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module ID2EX( + input clock, + input reset, + input io_stall_flag, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_flush_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [31:0] io_instruction, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_regs_write_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [4:0] io_regs_write_address, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [1:0] io_regs_write_source, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [31:0] io_reg1_data, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [31:0] io_reg2_data, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [31:0] io_immediate, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_aluop1_source, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_aluop2_source, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_csr_write_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [11:0] io_csr_address, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_memory_read_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input io_memory_write_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + input [31:0] io_csr_read_data, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [31:0] io_output_instruction, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [31:0] io_output_instruction_address, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output io_output_regs_write_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [4:0] io_output_regs_write_address, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [1:0] io_output_regs_write_source, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [31:0] io_output_reg1_data, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [31:0] io_output_reg2_data, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [31:0] io_output_immediate, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output io_output_aluop1_source, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output io_output_aluop2_source, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output io_output_csr_write_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [11:0] io_output_csr_address, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output io_output_memory_read_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output io_output_memory_write_enable, // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] + output [31:0] io_output_csr_read_data // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 21:14] +); + wire instruction_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + wire instruction_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + wire instruction_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + wire instruction_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + wire [31:0] instruction_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + wire [31:0] instruction_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + wire instruction_address_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + wire instruction_address_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + wire instruction_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + wire instruction_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + wire [31:0] instruction_address_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + wire [31:0] instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + wire regs_write_enable_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + wire regs_write_enable_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + wire regs_write_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + wire regs_write_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + wire regs_write_enable_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + wire regs_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + wire regs_write_address_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + wire regs_write_address_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + wire regs_write_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + wire regs_write_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + wire [4:0] regs_write_address_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + wire [4:0] regs_write_address_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + wire regs_write_source_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + wire regs_write_source_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + wire regs_write_source_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + wire regs_write_source_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + wire [1:0] regs_write_source_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + wire [1:0] regs_write_source_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + wire reg1_data_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + wire reg1_data_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + wire reg1_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + wire reg1_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + wire [31:0] reg1_data_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + wire [31:0] reg1_data_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + wire reg2_data_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + wire reg2_data_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + wire reg2_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + wire reg2_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + wire [31:0] reg2_data_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + wire [31:0] reg2_data_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + wire immediate_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + wire immediate_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + wire immediate_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + wire immediate_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + wire [31:0] immediate_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + wire [31:0] immediate_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + wire aluop1_source_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + wire aluop1_source_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + wire aluop1_source_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + wire aluop1_source_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + wire aluop1_source_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + wire aluop1_source_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + wire aluop2_source_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + wire aluop2_source_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + wire aluop2_source_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + wire aluop2_source_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + wire aluop2_source_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + wire aluop2_source_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + wire csr_write_enable_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + wire csr_write_enable_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + wire csr_write_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + wire csr_write_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + wire csr_write_enable_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + wire csr_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + wire csr_address_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + wire csr_address_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + wire csr_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + wire csr_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + wire [11:0] csr_address_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + wire [11:0] csr_address_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + wire memory_read_enable_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + wire memory_read_enable_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + wire memory_read_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + wire memory_read_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + wire memory_read_enable_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + wire memory_read_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + wire memory_write_enable_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + wire memory_write_enable_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + wire memory_write_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + wire memory_write_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + wire memory_write_enable_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + wire memory_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + wire csr_read_data_clock; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + wire csr_read_data_reset; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + wire csr_read_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + wire csr_read_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + wire [31:0] csr_read_data_io_in; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + wire [31:0] csr_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + PipelineRegister instruction ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 58:27] + .clock(instruction_clock), + .reset(instruction_reset), + .io_write_enable(instruction_io_write_enable), + .io_flush_enable(instruction_io_flush_enable), + .io_in(instruction_io_in), + .io_out(instruction_io_out) + ); + PipelineRegister_1 instruction_address ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 64:35] + .clock(instruction_address_clock), + .reset(instruction_address_reset), + .io_write_enable(instruction_address_io_write_enable), + .io_flush_enable(instruction_address_io_flush_enable), + .io_in(instruction_address_io_in), + .io_out(instruction_address_io_out) + ); + PipelineRegister_5 regs_write_enable ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 70:33] + .clock(regs_write_enable_clock), + .reset(regs_write_enable_reset), + .io_write_enable(regs_write_enable_io_write_enable), + .io_flush_enable(regs_write_enable_io_flush_enable), + .io_in(regs_write_enable_io_in), + .io_out(regs_write_enable_io_out) + ); + PipelineRegister_6 regs_write_address ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 76:34] + .clock(regs_write_address_clock), + .reset(regs_write_address_reset), + .io_write_enable(regs_write_address_io_write_enable), + .io_flush_enable(regs_write_address_io_flush_enable), + .io_in(regs_write_address_io_in), + .io_out(regs_write_address_io_out) + ); + PipelineRegister_7 regs_write_source ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 82:33] + .clock(regs_write_source_clock), + .reset(regs_write_source_reset), + .io_write_enable(regs_write_source_io_write_enable), + .io_flush_enable(regs_write_source_io_flush_enable), + .io_in(regs_write_source_io_in), + .io_out(regs_write_source_io_out) + ); + PipelineRegister_2 reg1_data ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 88:25] + .clock(reg1_data_clock), + .reset(reg1_data_reset), + .io_write_enable(reg1_data_io_write_enable), + .io_flush_enable(reg1_data_io_flush_enable), + .io_in(reg1_data_io_in), + .io_out(reg1_data_io_out) + ); + PipelineRegister_2 reg2_data ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 94:25] + .clock(reg2_data_clock), + .reset(reg2_data_reset), + .io_write_enable(reg2_data_io_write_enable), + .io_flush_enable(reg2_data_io_flush_enable), + .io_in(reg2_data_io_in), + .io_out(reg2_data_io_out) + ); + PipelineRegister_2 immediate ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 100:25] + .clock(immediate_clock), + .reset(immediate_reset), + .io_write_enable(immediate_io_write_enable), + .io_flush_enable(immediate_io_flush_enable), + .io_in(immediate_io_in), + .io_out(immediate_io_out) + ); + PipelineRegister_5 aluop1_source ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 106:29] + .clock(aluop1_source_clock), + .reset(aluop1_source_reset), + .io_write_enable(aluop1_source_io_write_enable), + .io_flush_enable(aluop1_source_io_flush_enable), + .io_in(aluop1_source_io_in), + .io_out(aluop1_source_io_out) + ); + PipelineRegister_5 aluop2_source ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 112:29] + .clock(aluop2_source_clock), + .reset(aluop2_source_reset), + .io_write_enable(aluop2_source_io_write_enable), + .io_flush_enable(aluop2_source_io_flush_enable), + .io_in(aluop2_source_io_in), + .io_out(aluop2_source_io_out) + ); + PipelineRegister_5 csr_write_enable ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 118:32] + .clock(csr_write_enable_clock), + .reset(csr_write_enable_reset), + .io_write_enable(csr_write_enable_io_write_enable), + .io_flush_enable(csr_write_enable_io_flush_enable), + .io_in(csr_write_enable_io_in), + .io_out(csr_write_enable_io_out) + ); + PipelineRegister_14 csr_address ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 124:27] + .clock(csr_address_clock), + .reset(csr_address_reset), + .io_write_enable(csr_address_io_write_enable), + .io_flush_enable(csr_address_io_flush_enable), + .io_in(csr_address_io_in), + .io_out(csr_address_io_out) + ); + PipelineRegister_5 memory_read_enable ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 130:34] + .clock(memory_read_enable_clock), + .reset(memory_read_enable_reset), + .io_write_enable(memory_read_enable_io_write_enable), + .io_flush_enable(memory_read_enable_io_flush_enable), + .io_in(memory_read_enable_io_in), + .io_out(memory_read_enable_io_out) + ); + PipelineRegister_5 memory_write_enable ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 136:35] + .clock(memory_write_enable_clock), + .reset(memory_write_enable_reset), + .io_write_enable(memory_write_enable_io_write_enable), + .io_flush_enable(memory_write_enable_io_flush_enable), + .io_in(memory_write_enable_io_in), + .io_out(memory_write_enable_io_out) + ); + PipelineRegister_2 csr_read_data ( // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 142:29] + .clock(csr_read_data_clock), + .reset(csr_read_data_reset), + .io_write_enable(csr_read_data_io_write_enable), + .io_flush_enable(csr_read_data_io_flush_enable), + .io_in(csr_read_data_io_in), + .io_out(csr_read_data_io_out) + ); + assign io_output_instruction = instruction_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 62:25] + assign io_output_instruction_address = instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 68:33] + assign io_output_regs_write_enable = regs_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 74:31] + assign io_output_regs_write_address = regs_write_address_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 80:32] + assign io_output_regs_write_source = regs_write_source_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 86:31] + assign io_output_reg1_data = reg1_data_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 92:23] + assign io_output_reg2_data = reg2_data_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 98:23] + assign io_output_immediate = immediate_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 104:23] + assign io_output_aluop1_source = aluop1_source_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 110:27] + assign io_output_aluop2_source = aluop2_source_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 116:27] + assign io_output_csr_write_enable = csr_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 122:30] + assign io_output_csr_address = csr_address_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 128:25] + assign io_output_memory_read_enable = memory_read_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 134:32] + assign io_output_memory_write_enable = memory_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 140:33] + assign io_output_csr_read_data = csr_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 146:27] + assign instruction_clock = clock; + assign instruction_reset = reset; + assign instruction_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign instruction_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 61:31] + assign instruction_io_in = io_instruction; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 59:21] + assign instruction_address_clock = clock; + assign instruction_address_reset = reset; + assign instruction_address_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign instruction_address_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 67:39] + assign instruction_address_io_in = io_instruction_address; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 65:29] + assign regs_write_enable_clock = clock; + assign regs_write_enable_reset = reset; + assign regs_write_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign regs_write_enable_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 73:37] + assign regs_write_enable_io_in = io_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 71:27] + assign regs_write_address_clock = clock; + assign regs_write_address_reset = reset; + assign regs_write_address_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign regs_write_address_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 79:38] + assign regs_write_address_io_in = io_regs_write_address; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 77:28] + assign regs_write_source_clock = clock; + assign regs_write_source_reset = reset; + assign regs_write_source_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign regs_write_source_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 85:37] + assign regs_write_source_io_in = io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 83:27] + assign reg1_data_clock = clock; + assign reg1_data_reset = reset; + assign reg1_data_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign reg1_data_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 91:29] + assign reg1_data_io_in = io_reg1_data; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 89:19] + assign reg2_data_clock = clock; + assign reg2_data_reset = reset; + assign reg2_data_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign reg2_data_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 97:29] + assign reg2_data_io_in = io_reg2_data; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 95:19] + assign immediate_clock = clock; + assign immediate_reset = reset; + assign immediate_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign immediate_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 103:29] + assign immediate_io_in = io_immediate; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 101:19] + assign aluop1_source_clock = clock; + assign aluop1_source_reset = reset; + assign aluop1_source_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign aluop1_source_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 109:33] + assign aluop1_source_io_in = io_aluop1_source; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 107:23] + assign aluop2_source_clock = clock; + assign aluop2_source_reset = reset; + assign aluop2_source_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign aluop2_source_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 115:33] + assign aluop2_source_io_in = io_aluop2_source; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 113:23] + assign csr_write_enable_clock = clock; + assign csr_write_enable_reset = reset; + assign csr_write_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign csr_write_enable_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 121:36] + assign csr_write_enable_io_in = io_csr_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 119:26] + assign csr_address_clock = clock; + assign csr_address_reset = reset; + assign csr_address_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign csr_address_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 127:31] + assign csr_address_io_in = io_csr_address; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 125:21] + assign memory_read_enable_clock = clock; + assign memory_read_enable_reset = reset; + assign memory_read_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign memory_read_enable_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 133:38] + assign memory_read_enable_io_in = io_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 131:28] + assign memory_write_enable_clock = clock; + assign memory_write_enable_reset = reset; + assign memory_write_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign memory_write_enable_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 139:39] + assign memory_write_enable_io_in = io_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 137:29] + assign csr_read_data_clock = clock; + assign csr_read_data_reset = reset; + assign csr_read_data_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 56:22] + assign csr_read_data_io_flush_enable = io_flush_enable; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 145:33] + assign csr_read_data_io_in = io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/ID2EX.scala 143:23] +endmodule +module ALU( + input [3:0] io_func, // @[src/main/scala/riscv/core/fivestage/ALU.scala 27:14] + input [31:0] io_op1, // @[src/main/scala/riscv/core/fivestage/ALU.scala 27:14] + input [31:0] io_op2, // @[src/main/scala/riscv/core/fivestage/ALU.scala 27:14] + output [31:0] io_result // @[src/main/scala/riscv/core/fivestage/ALU.scala 27:14] +); + wire [31:0] _io_result_T_1 = io_op1 + io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 39:27] + wire [31:0] _io_result_T_3 = io_op1 - io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 42:27] + wire [62:0] _GEN_10 = {{31'd0}, io_op1}; // @[src/main/scala/riscv/core/fivestage/ALU.scala 45:27] + wire [62:0] _io_result_T_5 = _GEN_10 << io_op2[4:0]; // @[src/main/scala/riscv/core/fivestage/ALU.scala 45:27] + wire [31:0] _io_result_T_6 = io_op1; // @[src/main/scala/riscv/core/fivestage/ALU.scala 48:27] + wire [31:0] _io_result_T_7 = io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 48:43] + wire [31:0] _io_result_T_9 = io_op1 ^ io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 51:27] + wire [31:0] _io_result_T_10 = io_op1 | io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 54:27] + wire [31:0] _io_result_T_11 = io_op1 & io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 57:27] + wire [31:0] _io_result_T_13 = io_op1 >> io_op2[4:0]; // @[src/main/scala/riscv/core/fivestage/ALU.scala 60:27] + wire [31:0] _io_result_T_17 = $signed(io_op1) >>> io_op2[4:0]; // @[src/main/scala/riscv/core/fivestage/ALU.scala 63:52] + wire _GEN_0 = 4'ha == io_func & io_op1 < io_op2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 36:13 37:19 66:17] + wire [31:0] _GEN_1 = 4'h9 == io_func ? _io_result_T_17 : {{31'd0}, _GEN_0}; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 63:17] + wire [31:0] _GEN_2 = 4'h8 == io_func ? _io_result_T_13 : _GEN_1; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 60:17] + wire [31:0] _GEN_3 = 4'h7 == io_func ? _io_result_T_11 : _GEN_2; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 57:17] + wire [31:0] _GEN_4 = 4'h6 == io_func ? _io_result_T_10 : _GEN_3; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 54:17] + wire [31:0] _GEN_5 = 4'h5 == io_func ? _io_result_T_9 : _GEN_4; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 51:17] + wire [31:0] _GEN_6 = 4'h4 == io_func ? {{31'd0}, $signed(_io_result_T_6) < $signed(_io_result_T_7)} : _GEN_5; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 48:17] + wire [62:0] _GEN_7 = 4'h3 == io_func ? _io_result_T_5 : {{31'd0}, _GEN_6}; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 45:17] + wire [62:0] _GEN_8 = 4'h2 == io_func ? {{31'd0}, _io_result_T_3} : _GEN_7; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 42:17] + wire [62:0] _GEN_9 = 4'h1 == io_func ? {{31'd0}, _io_result_T_1} : _GEN_8; // @[src/main/scala/riscv/core/fivestage/ALU.scala 37:19 39:17] + assign io_result = _GEN_9[31:0]; +endmodule +module ALUControl( + input [6:0] io_opcode, // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 21:14] + input [2:0] io_funct3, // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 21:14] + input [6:0] io_funct7, // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 21:14] + output [3:0] io_alu_funct // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 21:14] +); + wire [3:0] _io_alu_funct_T_1 = io_funct7[5] ? 4'h9 : 4'h8; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 44:39] + wire [1:0] _io_alu_funct_T_3 = 3'h1 == io_funct3 ? 2'h3 : 2'h1; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [2:0] _io_alu_funct_T_5 = 3'h2 == io_funct3 ? 3'h4 : {{1'd0}, _io_alu_funct_T_3}; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_7 = 3'h3 == io_funct3 ? 4'ha : {{1'd0}, _io_alu_funct_T_5}; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_9 = 3'h4 == io_funct3 ? 4'h5 : _io_alu_funct_T_7; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_11 = 3'h6 == io_funct3 ? 4'h6 : _io_alu_funct_T_9; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_13 = 3'h7 == io_funct3 ? 4'h7 : _io_alu_funct_T_11; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_15 = 3'h5 == io_funct3 ? _io_alu_funct_T_1 : _io_alu_funct_T_13; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [1:0] _io_alu_funct_T_17 = io_funct7[5] ? 2'h2 : 2'h1; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 53:43] + wire [1:0] _io_alu_funct_T_21 = 3'h1 == io_funct3 ? 2'h3 : _io_alu_funct_T_17; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [2:0] _io_alu_funct_T_23 = 3'h2 == io_funct3 ? 3'h4 : {{1'd0}, _io_alu_funct_T_21}; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_25 = 3'h3 == io_funct3 ? 4'ha : {{1'd0}, _io_alu_funct_T_23}; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_27 = 3'h4 == io_funct3 ? 4'h5 : _io_alu_funct_T_25; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_29 = 3'h6 == io_funct3 ? 4'h6 : _io_alu_funct_T_27; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_31 = 3'h7 == io_funct3 ? 4'h7 : _io_alu_funct_T_29; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _io_alu_funct_T_33 = 3'h5 == io_funct3 ? _io_alu_funct_T_1 : _io_alu_funct_T_31; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _GEN_1 = 7'h37 == io_opcode | 7'h17 == io_opcode; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 80:20] + wire _GEN_2 = 7'h67 == io_opcode | _GEN_1; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 77:20] + wire _GEN_3 = 7'h6f == io_opcode | _GEN_2; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 74:20] + wire _GEN_4 = 7'h23 == io_opcode | _GEN_3; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 71:20] + wire _GEN_5 = 7'h3 == io_opcode | _GEN_4; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 68:20] + wire _GEN_6 = 7'h63 == io_opcode | _GEN_5; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 65:20] + wire [3:0] _GEN_7 = 7'h33 == io_opcode ? _io_alu_funct_T_33 : {{3'd0}, _GEN_6}; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 49:20] + assign io_alu_funct = 7'h13 == io_opcode ? _io_alu_funct_T_15 : _GEN_7; // @[src/main/scala/riscv/core/fivestage/ALUControl.scala 31:21 33:20] +endmodule +module Execute( + input [31:0] io_instruction, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_reg1_data, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_reg2_data, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_immediate, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input io_aluop1_source, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input io_aluop2_source, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_csr_read_data, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_forward_from_mem, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [31:0] io_forward_from_wb, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [1:0] io_aluop1_forward, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + input [1:0] io_aluop2_forward, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + output [31:0] io_mem_alu_result, // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] + output [31:0] io_csr_write_data // @[src/main/scala/riscv/core/fivestage/Execute.scala 27:14] +); + wire [3:0] alu_io_func; // @[src/main/scala/riscv/core/fivestage/Execute.scala 51:19] + wire [31:0] alu_io_op1; // @[src/main/scala/riscv/core/fivestage/Execute.scala 51:19] + wire [31:0] alu_io_op2; // @[src/main/scala/riscv/core/fivestage/Execute.scala 51:19] + wire [31:0] alu_io_result; // @[src/main/scala/riscv/core/fivestage/Execute.scala 51:19] + wire [6:0] alu_ctrl_io_opcode; // @[src/main/scala/riscv/core/fivestage/Execute.scala 52:24] + wire [2:0] alu_ctrl_io_funct3; // @[src/main/scala/riscv/core/fivestage/Execute.scala 52:24] + wire [6:0] alu_ctrl_io_funct7; // @[src/main/scala/riscv/core/fivestage/Execute.scala 52:24] + wire [3:0] alu_ctrl_io_alu_funct; // @[src/main/scala/riscv/core/fivestage/Execute.scala 52:24] + wire [2:0] funct3 = io_instruction[14:12]; // @[src/main/scala/riscv/core/fivestage/Execute.scala 46:30] + wire [4:0] uimm = io_instruction[19:15]; // @[src/main/scala/riscv/core/fivestage/Execute.scala 49:28] + wire [31:0] _alu_io_op1_T_2 = 2'h1 == io_aluop1_forward ? io_forward_from_mem : io_reg1_data; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _alu_io_op1_T_4 = 2'h2 == io_aluop1_forward ? io_forward_from_wb : _alu_io_op1_T_2; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _alu_io_op2_T_2 = 2'h1 == io_aluop2_forward ? io_forward_from_mem : io_reg2_data; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _alu_io_op2_T_4 = 2'h2 == io_aluop2_forward ? io_forward_from_wb : _alu_io_op2_T_2; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_csr_write_data_T = ~io_reg1_data; // @[src/main/scala/riscv/core/fivestage/Execute.scala 85:54] + wire [31:0] _io_csr_write_data_T_1 = io_csr_read_data & _io_csr_write_data_T; // @[src/main/scala/riscv/core/fivestage/Execute.scala 85:52] + wire [31:0] _io_csr_write_data_T_2 = io_csr_read_data | io_reg1_data; // @[src/main/scala/riscv/core/fivestage/Execute.scala 86:52] + wire [31:0] _io_csr_write_data_T_3 = {27'h0,uimm}; // @[src/main/scala/riscv/core/fivestage/Execute.scala 87:38] + wire [31:0] _io_csr_write_data_T_5 = ~_io_csr_write_data_T_3; // @[src/main/scala/riscv/core/fivestage/Execute.scala 88:55] + wire [31:0] _io_csr_write_data_T_6 = io_csr_read_data & _io_csr_write_data_T_5; // @[src/main/scala/riscv/core/fivestage/Execute.scala 88:53] + wire [31:0] _io_csr_write_data_T_8 = io_csr_read_data | _io_csr_write_data_T_3; // @[src/main/scala/riscv/core/fivestage/Execute.scala 89:53] + wire [31:0] _io_csr_write_data_T_10 = 3'h1 == funct3 ? io_reg1_data : 32'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_csr_write_data_T_12 = 3'h3 == funct3 ? _io_csr_write_data_T_1 : _io_csr_write_data_T_10; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_csr_write_data_T_14 = 3'h2 == funct3 ? _io_csr_write_data_T_2 : _io_csr_write_data_T_12; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_csr_write_data_T_16 = 3'h5 == funct3 ? _io_csr_write_data_T_3 : _io_csr_write_data_T_14; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_csr_write_data_T_18 = 3'h7 == funct3 ? _io_csr_write_data_T_6 : _io_csr_write_data_T_16; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + ALU alu ( // @[src/main/scala/riscv/core/fivestage/Execute.scala 51:19] + .io_func(alu_io_func), + .io_op1(alu_io_op1), + .io_op2(alu_io_op2), + .io_result(alu_io_result) + ); + ALUControl alu_ctrl ( // @[src/main/scala/riscv/core/fivestage/Execute.scala 52:24] + .io_opcode(alu_ctrl_io_opcode), + .io_funct3(alu_ctrl_io_funct3), + .io_funct7(alu_ctrl_io_funct7), + .io_alu_funct(alu_ctrl_io_alu_funct) + ); + assign io_mem_alu_result = alu_io_result; // @[src/main/scala/riscv/core/fivestage/Execute.scala 82:21] + assign io_csr_write_data = 3'h6 == funct3 ? _io_csr_write_data_T_8 : _io_csr_write_data_T_18; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + assign alu_io_func = alu_ctrl_io_alu_funct; // @[src/main/scala/riscv/core/fivestage/Execute.scala 57:15] + assign alu_io_op1 = io_aluop1_source ? io_instruction_address : _alu_io_op1_T_4; // @[src/main/scala/riscv/core/fivestage/Execute.scala 58:20] + assign alu_io_op2 = io_aluop2_source ? io_immediate : _alu_io_op2_T_4; // @[src/main/scala/riscv/core/fivestage/Execute.scala 70:20] + assign alu_ctrl_io_opcode = io_instruction[6:0]; // @[src/main/scala/riscv/core/fivestage/Execute.scala 45:30] + assign alu_ctrl_io_funct3 = io_instruction[14:12]; // @[src/main/scala/riscv/core/fivestage/Execute.scala 46:30] + assign alu_ctrl_io_funct7 = io_instruction[31:25]; // @[src/main/scala/riscv/core/fivestage/Execute.scala 47:30] +endmodule +module EX2MEM( + input clock, + input reset, + input io_stall_flag, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input io_regs_write_enable, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [1:0] io_regs_write_source, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_regs_write_address, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_instruction, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_reg1_data, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_reg2_data, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input io_memory_read_enable, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input io_memory_write_enable, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_alu_result, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + input [31:0] io_csr_read_data, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output io_output_regs_write_enable, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [1:0] io_output_regs_write_source, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [31:0] io_output_regs_write_address, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [31:0] io_output_instruction_address, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [31:0] io_output_instruction, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [31:0] io_output_reg2_data, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output io_output_memory_read_enable, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output io_output_memory_write_enable, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [31:0] io_output_alu_result, // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] + output [31:0] io_output_csr_read_data // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 21:14] +); + wire regs_write_enable_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + wire regs_write_enable_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + wire regs_write_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + wire regs_write_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + wire regs_write_enable_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + wire regs_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + wire regs_write_source_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + wire regs_write_source_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + wire regs_write_source_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + wire regs_write_source_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + wire [1:0] regs_write_source_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + wire [1:0] regs_write_source_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + wire regs_write_address_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + wire regs_write_address_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + wire regs_write_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + wire regs_write_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + wire [4:0] regs_write_address_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + wire [4:0] regs_write_address_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + wire instruction_address_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + wire instruction_address_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + wire instruction_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + wire instruction_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + wire [31:0] instruction_address_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + wire [31:0] instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + wire instruction_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + wire instruction_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + wire instruction_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + wire instruction_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + wire [31:0] instruction_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + wire [31:0] instruction_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + wire reg1_data_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + wire reg1_data_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + wire reg1_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + wire reg1_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + wire [31:0] reg1_data_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + wire [31:0] reg1_data_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + wire reg2_data_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + wire reg2_data_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + wire reg2_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + wire reg2_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + wire [31:0] reg2_data_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + wire [31:0] reg2_data_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + wire alu_result_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + wire alu_result_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + wire alu_result_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + wire alu_result_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + wire [31:0] alu_result_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + wire [31:0] alu_result_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + wire memory_read_enable_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + wire memory_read_enable_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + wire memory_read_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + wire memory_read_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + wire memory_read_enable_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + wire memory_read_enable_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + wire memory_write_enable_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + wire memory_write_enable_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + wire memory_write_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + wire memory_write_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + wire memory_write_enable_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + wire memory_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + wire csr_read_data_clock; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + wire csr_read_data_reset; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + wire csr_read_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + wire csr_read_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + wire [31:0] csr_read_data_io_in; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + wire [31:0] csr_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + PipelineRegister_5 regs_write_enable ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 50:33] + .clock(regs_write_enable_clock), + .reset(regs_write_enable_reset), + .io_write_enable(regs_write_enable_io_write_enable), + .io_flush_enable(regs_write_enable_io_flush_enable), + .io_in(regs_write_enable_io_in), + .io_out(regs_write_enable_io_out) + ); + PipelineRegister_7 regs_write_source ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 56:33] + .clock(regs_write_source_clock), + .reset(regs_write_source_reset), + .io_write_enable(regs_write_source_io_write_enable), + .io_flush_enable(regs_write_source_io_flush_enable), + .io_in(regs_write_source_io_in), + .io_out(regs_write_source_io_out) + ); + PipelineRegister_6 regs_write_address ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 62:34] + .clock(regs_write_address_clock), + .reset(regs_write_address_reset), + .io_write_enable(regs_write_address_io_write_enable), + .io_flush_enable(regs_write_address_io_flush_enable), + .io_in(regs_write_address_io_in), + .io_out(regs_write_address_io_out) + ); + PipelineRegister_2 instruction_address ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 68:35] + .clock(instruction_address_clock), + .reset(instruction_address_reset), + .io_write_enable(instruction_address_io_write_enable), + .io_flush_enable(instruction_address_io_flush_enable), + .io_in(instruction_address_io_in), + .io_out(instruction_address_io_out) + ); + PipelineRegister_2 instruction ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 74:27] + .clock(instruction_clock), + .reset(instruction_reset), + .io_write_enable(instruction_io_write_enable), + .io_flush_enable(instruction_io_flush_enable), + .io_in(instruction_io_in), + .io_out(instruction_io_out) + ); + PipelineRegister_2 reg1_data ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 80:25] + .clock(reg1_data_clock), + .reset(reg1_data_reset), + .io_write_enable(reg1_data_io_write_enable), + .io_flush_enable(reg1_data_io_flush_enable), + .io_in(reg1_data_io_in), + .io_out(reg1_data_io_out) + ); + PipelineRegister_2 reg2_data ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 86:25] + .clock(reg2_data_clock), + .reset(reg2_data_reset), + .io_write_enable(reg2_data_io_write_enable), + .io_flush_enable(reg2_data_io_flush_enable), + .io_in(reg2_data_io_in), + .io_out(reg2_data_io_out) + ); + PipelineRegister_2 alu_result ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 92:26] + .clock(alu_result_clock), + .reset(alu_result_reset), + .io_write_enable(alu_result_io_write_enable), + .io_flush_enable(alu_result_io_flush_enable), + .io_in(alu_result_io_in), + .io_out(alu_result_io_out) + ); + PipelineRegister_5 memory_read_enable ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 98:34] + .clock(memory_read_enable_clock), + .reset(memory_read_enable_reset), + .io_write_enable(memory_read_enable_io_write_enable), + .io_flush_enable(memory_read_enable_io_flush_enable), + .io_in(memory_read_enable_io_in), + .io_out(memory_read_enable_io_out) + ); + PipelineRegister_5 memory_write_enable ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 104:35] + .clock(memory_write_enable_clock), + .reset(memory_write_enable_reset), + .io_write_enable(memory_write_enable_io_write_enable), + .io_flush_enable(memory_write_enable_io_flush_enable), + .io_in(memory_write_enable_io_in), + .io_out(memory_write_enable_io_out) + ); + PipelineRegister_2 csr_read_data ( // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 110:29] + .clock(csr_read_data_clock), + .reset(csr_read_data_reset), + .io_write_enable(csr_read_data_io_write_enable), + .io_flush_enable(csr_read_data_io_flush_enable), + .io_in(csr_read_data_io_in), + .io_out(csr_read_data_io_out) + ); + assign io_output_regs_write_enable = regs_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 54:31] + assign io_output_regs_write_source = regs_write_source_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 60:31] + assign io_output_regs_write_address = {{27'd0}, regs_write_address_io_out}; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 66:32] + assign io_output_instruction_address = instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 72:33] + assign io_output_instruction = instruction_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 78:25] + assign io_output_reg2_data = reg2_data_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 90:23] + assign io_output_memory_read_enable = memory_read_enable_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 102:32] + assign io_output_memory_write_enable = memory_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 108:33] + assign io_output_alu_result = alu_result_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 96:24] + assign io_output_csr_read_data = csr_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 114:27] + assign regs_write_enable_clock = clock; + assign regs_write_enable_reset = reset; + assign regs_write_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign regs_write_enable_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 53:37] + assign regs_write_enable_io_in = io_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 51:27] + assign regs_write_source_clock = clock; + assign regs_write_source_reset = reset; + assign regs_write_source_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign regs_write_source_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 59:37] + assign regs_write_source_io_in = io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 57:27] + assign regs_write_address_clock = clock; + assign regs_write_address_reset = reset; + assign regs_write_address_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign regs_write_address_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 65:38] + assign regs_write_address_io_in = io_regs_write_address[4:0]; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 63:28] + assign instruction_address_clock = clock; + assign instruction_address_reset = reset; + assign instruction_address_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign instruction_address_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 71:39] + assign instruction_address_io_in = io_instruction_address; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 69:29] + assign instruction_clock = clock; + assign instruction_reset = reset; + assign instruction_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign instruction_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 77:31] + assign instruction_io_in = io_instruction; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 75:21] + assign reg1_data_clock = clock; + assign reg1_data_reset = reset; + assign reg1_data_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign reg1_data_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 83:29] + assign reg1_data_io_in = io_reg1_data; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 81:19] + assign reg2_data_clock = clock; + assign reg2_data_reset = reset; + assign reg2_data_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign reg2_data_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 89:29] + assign reg2_data_io_in = io_reg2_data; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 87:19] + assign alu_result_clock = clock; + assign alu_result_reset = reset; + assign alu_result_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign alu_result_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 95:30] + assign alu_result_io_in = io_alu_result; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 93:20] + assign memory_read_enable_clock = clock; + assign memory_read_enable_reset = reset; + assign memory_read_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign memory_read_enable_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 101:38] + assign memory_read_enable_io_in = io_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 99:28] + assign memory_write_enable_clock = clock; + assign memory_write_enable_reset = reset; + assign memory_write_enable_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign memory_write_enable_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 107:39] + assign memory_write_enable_io_in = io_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 105:29] + assign csr_read_data_clock = clock; + assign csr_read_data_reset = reset; + assign csr_read_data_io_write_enable = ~io_stall_flag; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 48:22] + assign csr_read_data_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 113:33] + assign csr_read_data_io_in = io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/EX2MEM.scala 111:23] +endmodule +module MemoryAccess( + input clock, + input reset, + input [31:0] io_alu_result, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input [31:0] io_reg2_data, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input io_memory_read_enable, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input io_memory_write_enable, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input [2:0] io_funct3, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input [1:0] io_regs_write_source, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input [31:0] io_csr_read_data, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output [31:0] io_wb_memory_read_data, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_ctrl_stall_flag, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output [31:0] io_forward_to_ex, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_read, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output [31:0] io_bus_address, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input [31:0] io_bus_read_data, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input io_bus_read_valid, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_write, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output [31:0] io_bus_write_data, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_write_strobe_0, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_write_strobe_1, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_write_strobe_2, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_write_strobe_3, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input io_bus_write_valid, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + output io_bus_request, // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] + input io_bus_granted // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 23:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + wire [1:0] mem_address_index = io_alu_result[1:0]; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 38:40] + reg [1:0] mem_access_state; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 39:33] + wire _T = mem_access_state == 2'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 56:27] + wire _T_1 = mem_access_state == 2'h1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 64:33] + wire [23:0] _io_wb_memory_read_data_T_2 = io_bus_read_data[31] ? 24'hffffff : 24'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:23] + wire [31:0] _io_wb_memory_read_data_T_4 = {_io_wb_memory_read_data_T_2,io_bus_read_data[31:24]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 76:18] + wire [23:0] _io_wb_memory_read_data_T_7 = io_bus_read_data[7] ? 24'hffffff : 24'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:32] + wire [31:0] _io_wb_memory_read_data_T_9 = {_io_wb_memory_read_data_T_7,io_bus_read_data[7:0]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 78:27] + wire [23:0] _io_wb_memory_read_data_T_12 = io_bus_read_data[15] ? 24'hffffff : 24'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:32] + wire [31:0] _io_wb_memory_read_data_T_14 = {_io_wb_memory_read_data_T_12,io_bus_read_data[15:8]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 79:27] + wire [23:0] _io_wb_memory_read_data_T_17 = io_bus_read_data[23] ? 24'hffffff : 24'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:32] + wire [31:0] _io_wb_memory_read_data_T_19 = {_io_wb_memory_read_data_T_17,io_bus_read_data[23:16]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 80:27] + wire _io_wb_memory_read_data_T_20 = 2'h0 == mem_address_index; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_21 = 2'h0 == mem_address_index ? _io_wb_memory_read_data_T_9 : + _io_wb_memory_read_data_T_4; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_wb_memory_read_data_T_22 = 2'h1 == mem_address_index; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_23 = 2'h1 == mem_address_index ? _io_wb_memory_read_data_T_14 : + _io_wb_memory_read_data_T_21; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_wb_memory_read_data_T_24 = 2'h2 == mem_address_index; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_25 = 2'h2 == mem_address_index ? _io_wb_memory_read_data_T_19 : + _io_wb_memory_read_data_T_23; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_28 = {24'h0,io_bus_read_data[31:24]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 85:18] + wire [31:0] _io_wb_memory_read_data_T_31 = {24'h0,io_bus_read_data[7:0]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 87:27] + wire [31:0] _io_wb_memory_read_data_T_34 = {24'h0,io_bus_read_data[15:8]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 88:27] + wire [31:0] _io_wb_memory_read_data_T_37 = {24'h0,io_bus_read_data[23:16]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 89:27] + wire [31:0] _io_wb_memory_read_data_T_39 = 2'h0 == mem_address_index ? _io_wb_memory_read_data_T_31 : + _io_wb_memory_read_data_T_28; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_41 = 2'h1 == mem_address_index ? _io_wb_memory_read_data_T_34 : + _io_wb_memory_read_data_T_39; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_43 = 2'h2 == mem_address_index ? _io_wb_memory_read_data_T_37 : + _io_wb_memory_read_data_T_41; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _io_wb_memory_read_data_T_44 = mem_address_index == 2'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 93:33] + wire [15:0] _io_wb_memory_read_data_T_47 = io_bus_read_data[15] ? 16'hffff : 16'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:23] + wire [31:0] _io_wb_memory_read_data_T_49 = {_io_wb_memory_read_data_T_47,io_bus_read_data[15:0]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 94:18] + wire [15:0] _io_wb_memory_read_data_T_52 = io_bus_read_data[31] ? 16'hffff : 16'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:23] + wire [31:0] _io_wb_memory_read_data_T_54 = {_io_wb_memory_read_data_T_52,io_bus_read_data[31:16]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 95:18] + wire [31:0] _io_wb_memory_read_data_T_55 = _io_wb_memory_read_data_T_44 ? _io_wb_memory_read_data_T_49 : + _io_wb_memory_read_data_T_54; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 92:40] + wire [31:0] _io_wb_memory_read_data_T_59 = {16'h0,io_bus_read_data[15:0]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 99:18] + wire [31:0] _io_wb_memory_read_data_T_62 = {16'h0,io_bus_read_data[31:16]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 100:18] + wire [31:0] _io_wb_memory_read_data_T_63 = _io_wb_memory_read_data_T_44 ? _io_wb_memory_read_data_T_59 : + _io_wb_memory_read_data_T_62; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 97:41] + wire [31:0] _io_wb_memory_read_data_T_65 = 3'h0 == io_funct3 ? _io_wb_memory_read_data_T_25 : 32'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_67 = 3'h4 == io_funct3 ? _io_wb_memory_read_data_T_43 : + _io_wb_memory_read_data_T_65; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_69 = 3'h1 == io_funct3 ? _io_wb_memory_read_data_T_55 : + _io_wb_memory_read_data_T_67; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_71 = 3'h5 == io_funct3 ? _io_wb_memory_read_data_T_63 : + _io_wb_memory_read_data_T_69; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_wb_memory_read_data_T_73 = 3'h2 == io_funct3 ? io_bus_read_data : _io_wb_memory_read_data_T_71; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _GEN_1 = io_bus_read_valid ? _io_wb_memory_read_data_T_73 : 32'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 52:26 68:31 70:32] + wire [1:0] _GEN_2 = io_bus_read_valid ? 2'h0 : mem_access_state; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 42:22 68:31 39:33] + wire _GEN_3 = io_bus_read_valid ? 1'h0 : 1'h1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 43:24 67:26 68:31] + wire _GEN_6 = mem_access_state == 2'h1 & _GEN_3; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 53:22 64:62] + wire [31:0] _GEN_7 = mem_access_state == 2'h1 ? _GEN_1 : 32'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 52:26 64:62] + wire _GEN_9 = mem_access_state == 2'h0 | _GEN_6; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 56:56 58:26] + wire _GEN_11 = mem_access_state == 2'h0 | _T_1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 56:56 60:22] + wire [31:0] _GEN_13 = mem_access_state == 2'h0 ? 32'h0 : _GEN_7; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 52:26 56:56] + wire _GEN_17 = 2'h3 == mem_address_index; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:27 116:{48,48}] + wire [4:0] _io_bus_write_data_T_1 = {mem_address_index, 3'h0}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:89] + wire [39:0] _GEN_4 = {{31'd0}, io_reg2_data[8:0]}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:67] + wire [39:0] _io_bus_write_data_T_2 = _GEN_4 << _io_bus_write_data_T_1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 117:67] + wire [32:0] _io_bus_write_data_T_5 = {io_reg2_data[16:0], 16'h0}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 128:95] + wire [32:0] _GEN_20 = _io_wb_memory_read_data_T_44 ? {{16'd0}, io_reg2_data[16:0]} : _io_bus_write_data_T_5; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 119:41 123:29 128:29] + wire _GEN_21 = _io_wb_memory_read_data_T_44 ? 1'h0 : 1'h1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 114:27 119:41 126:36] + wire _T_6 = io_funct3 == 3'h2; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 131:28] + wire _GEN_27 = io_funct3 == 3'h1 ? _io_wb_memory_read_data_T_44 : _T_6; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 118:54] + wire [32:0] _GEN_29 = io_funct3 == 3'h1 ? _GEN_20 : {{1'd0}, io_reg2_data}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 112:25 118:54] + wire _GEN_30 = io_funct3 == 3'h1 ? _GEN_21 : _T_6; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 118:54] + wire _GEN_32 = io_funct3 == 3'h0 ? _io_wb_memory_read_data_T_20 : _GEN_27; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:48] + wire _GEN_33 = io_funct3 == 3'h0 ? _io_wb_memory_read_data_T_22 : _GEN_27; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:48] + wire _GEN_34 = io_funct3 == 3'h0 ? _io_wb_memory_read_data_T_24 : _GEN_30; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:48] + wire _GEN_35 = io_funct3 == 3'h0 ? _GEN_17 : _GEN_30; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:48] + wire [39:0] _GEN_36 = io_funct3 == 3'h0 ? _io_bus_write_data_T_2 : {{7'd0}, _GEN_29}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 115:48 117:27] + wire [1:0] _GEN_37 = io_bus_granted ? 2'h2 : mem_access_state; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 137:28 138:26 39:33] + wire _T_7 = mem_access_state == 2'h2; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 140:33] + wire [1:0] _GEN_38 = io_bus_write_valid ? 2'h0 : mem_access_state; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 144:32 42:22 39:33] + wire _GEN_39 = io_bus_write_valid ? 1'h0 : 1'h1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 144:32 43:24 142:26] + wire _GEN_41 = mem_access_state == 2'h2 & _GEN_39; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 140:63 53:22] + wire [1:0] _GEN_43 = mem_access_state == 2'h2 ? _GEN_38 : mem_access_state; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 140:63 39:33] + wire _GEN_44 = _T | _GEN_41; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 111:26] + wire [39:0] _GEN_45 = _T ? _GEN_36 : 40'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 49:21] + wire _GEN_47 = _T & _GEN_32; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 50:23] + wire _GEN_48 = _T & _GEN_33; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 50:23] + wire _GEN_49 = _T & _GEN_34; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 50:23] + wire _GEN_50 = _T & _GEN_35; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 50:23] + wire _GEN_51 = _T | _T_7; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56 136:22] + wire _GEN_53 = io_memory_write_enable & _GEN_44; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 53:22] + wire [39:0] _GEN_54 = io_memory_write_enable ? _GEN_45 : 40'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 49:21] + wire _GEN_55 = io_memory_write_enable & _T; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 51:16] + wire _GEN_56 = io_memory_write_enable & _GEN_47; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 50:23] + wire _GEN_57 = io_memory_write_enable & _GEN_48; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 50:23] + wire _GEN_58 = io_memory_write_enable & _GEN_49; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 50:23] + wire _GEN_59 = io_memory_write_enable & _GEN_50; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 50:23] + wire _GEN_60 = io_memory_write_enable & _GEN_51; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38 46:18] + wire [39:0] _GEN_67 = io_memory_read_enable ? 40'h0 : _GEN_54; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 49:21 55:31] + assign io_wb_memory_read_data = io_memory_read_enable ? _GEN_13 : 32'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 52:26 55:31] + assign io_ctrl_stall_flag = io_memory_read_enable ? _GEN_9 : _GEN_53; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 55:31] + assign io_forward_to_ex = io_regs_write_source == 2'h2 ? io_csr_read_data : io_alu_result; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 150:26] + assign io_bus_read = io_memory_read_enable & _T; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 47:15 55:31] + assign io_bus_address = {io_alu_result[31:2],2'h0}; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 48:89] + assign io_bus_write = io_memory_read_enable ? 1'h0 : _GEN_55; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 51:16 55:31] + assign io_bus_write_data = _GEN_67[31:0]; + assign io_bus_write_strobe_0 = io_memory_read_enable ? 1'h0 : _GEN_56; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:23 55:31] + assign io_bus_write_strobe_1 = io_memory_read_enable ? 1'h0 : _GEN_57; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:23 55:31] + assign io_bus_write_strobe_2 = io_memory_read_enable ? 1'h0 : _GEN_58; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:23 55:31] + assign io_bus_write_strobe_3 = io_memory_read_enable ? 1'h0 : _GEN_59; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 50:23 55:31] + assign io_bus_request = io_memory_read_enable ? _GEN_11 : _GEN_60; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 55:31] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 39:33] + mem_access_state <= 2'h0; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 39:33] + end else if (io_memory_read_enable) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 55:31] + if (mem_access_state == 2'h0) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 56:56] + if (io_bus_granted) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 61:28] + mem_access_state <= 2'h1; // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 62:26] + end + end else if (mem_access_state == 2'h1) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 64:62] + mem_access_state <= _GEN_2; + end + end else if (io_memory_write_enable) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 108:38] + if (_T) begin // @[src/main/scala/riscv/core/fivestage/MemoryAccess.scala 109:56] + mem_access_state <= _GEN_37; + end else begin + mem_access_state <= _GEN_43; + 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}}; + mem_access_state = _RAND_0[1:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module MEM2WB( + input clock, + input reset, + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + input [31:0] io_alu_result, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + input io_regs_write_enable, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + input [1:0] io_regs_write_source, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + input [31:0] io_regs_write_address, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + input [31:0] io_memory_read_data, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + input [31:0] io_csr_read_data, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output [31:0] io_output_instruction_address, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output [31:0] io_output_alu_result, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output io_output_regs_write_enable, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output [1:0] io_output_regs_write_source, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output [31:0] io_output_regs_write_address, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output [31:0] io_output_memory_read_data, // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] + output [31:0] io_output_csr_read_data // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 21:14] +); + wire alu_result_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + wire alu_result_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + wire alu_result_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + wire alu_result_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + wire [31:0] alu_result_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + wire [31:0] alu_result_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + wire memory_read_data_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + wire memory_read_data_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + wire memory_read_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + wire memory_read_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + wire [31:0] memory_read_data_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + wire [31:0] memory_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + wire regs_write_enable_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + wire regs_write_enable_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + wire regs_write_enable_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + wire regs_write_enable_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + wire regs_write_enable_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + wire regs_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + wire regs_write_source_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + wire regs_write_source_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + wire regs_write_source_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + wire regs_write_source_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + wire [1:0] regs_write_source_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + wire [1:0] regs_write_source_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + wire regs_write_address_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + wire regs_write_address_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + wire regs_write_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + wire regs_write_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + wire [4:0] regs_write_address_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + wire [4:0] regs_write_address_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + wire instruction_address_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + wire instruction_address_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + wire instruction_address_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + wire instruction_address_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + wire [31:0] instruction_address_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + wire [31:0] instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + wire csr_read_data_clock; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + wire csr_read_data_reset; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + wire csr_read_data_io_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + wire csr_read_data_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + wire [31:0] csr_read_data_io_in; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + wire [31:0] csr_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + PipelineRegister_2 alu_result ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 41:26] + .clock(alu_result_clock), + .reset(alu_result_reset), + .io_write_enable(alu_result_io_write_enable), + .io_flush_enable(alu_result_io_flush_enable), + .io_in(alu_result_io_in), + .io_out(alu_result_io_out) + ); + PipelineRegister_2 memory_read_data ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 47:32] + .clock(memory_read_data_clock), + .reset(memory_read_data_reset), + .io_write_enable(memory_read_data_io_write_enable), + .io_flush_enable(memory_read_data_io_flush_enable), + .io_in(memory_read_data_io_in), + .io_out(memory_read_data_io_out) + ); + PipelineRegister_5 regs_write_enable ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 53:33] + .clock(regs_write_enable_clock), + .reset(regs_write_enable_reset), + .io_write_enable(regs_write_enable_io_write_enable), + .io_flush_enable(regs_write_enable_io_flush_enable), + .io_in(regs_write_enable_io_in), + .io_out(regs_write_enable_io_out) + ); + PipelineRegister_7 regs_write_source ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 59:33] + .clock(regs_write_source_clock), + .reset(regs_write_source_reset), + .io_write_enable(regs_write_source_io_write_enable), + .io_flush_enable(regs_write_source_io_flush_enable), + .io_in(regs_write_source_io_in), + .io_out(regs_write_source_io_out) + ); + PipelineRegister_6 regs_write_address ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 65:34] + .clock(regs_write_address_clock), + .reset(regs_write_address_reset), + .io_write_enable(regs_write_address_io_write_enable), + .io_flush_enable(regs_write_address_io_flush_enable), + .io_in(regs_write_address_io_in), + .io_out(regs_write_address_io_out) + ); + PipelineRegister_2 instruction_address ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 71:35] + .clock(instruction_address_clock), + .reset(instruction_address_reset), + .io_write_enable(instruction_address_io_write_enable), + .io_flush_enable(instruction_address_io_flush_enable), + .io_in(instruction_address_io_in), + .io_out(instruction_address_io_out) + ); + PipelineRegister_2 csr_read_data ( // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 77:29] + .clock(csr_read_data_clock), + .reset(csr_read_data_reset), + .io_write_enable(csr_read_data_io_write_enable), + .io_flush_enable(csr_read_data_io_flush_enable), + .io_in(csr_read_data_io_in), + .io_out(csr_read_data_io_out) + ); + assign io_output_instruction_address = instruction_address_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 75:33] + assign io_output_alu_result = alu_result_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 45:24] + assign io_output_regs_write_enable = regs_write_enable_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 57:31] + assign io_output_regs_write_source = regs_write_source_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 63:31] + assign io_output_regs_write_address = {{27'd0}, regs_write_address_io_out}; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 69:32] + assign io_output_memory_read_data = memory_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 51:30] + assign io_output_csr_read_data = csr_read_data_io_out; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 81:27] + assign alu_result_clock = clock; + assign alu_result_reset = reset; + assign alu_result_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 43:30] + assign alu_result_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 44:30] + assign alu_result_io_in = io_alu_result; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 42:20] + assign memory_read_data_clock = clock; + assign memory_read_data_reset = reset; + assign memory_read_data_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 49:36] + assign memory_read_data_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 50:36] + assign memory_read_data_io_in = io_memory_read_data; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 48:26] + assign regs_write_enable_clock = clock; + assign regs_write_enable_reset = reset; + assign regs_write_enable_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 55:37] + assign regs_write_enable_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 56:37] + assign regs_write_enable_io_in = io_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 54:27] + assign regs_write_source_clock = clock; + assign regs_write_source_reset = reset; + assign regs_write_source_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 61:37] + assign regs_write_source_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 62:37] + assign regs_write_source_io_in = io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 60:27] + assign regs_write_address_clock = clock; + assign regs_write_address_reset = reset; + assign regs_write_address_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 67:38] + assign regs_write_address_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 68:38] + assign regs_write_address_io_in = io_regs_write_address[4:0]; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 66:28] + assign instruction_address_clock = clock; + assign instruction_address_reset = reset; + assign instruction_address_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 73:39] + assign instruction_address_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 74:39] + assign instruction_address_io_in = io_instruction_address; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 72:29] + assign csr_read_data_clock = clock; + assign csr_read_data_reset = reset; + assign csr_read_data_io_write_enable = 1'h1; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 79:33] + assign csr_read_data_io_flush_enable = 1'h0; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 80:33] + assign csr_read_data_io_in = io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/MEM2WB.scala 78:23] +endmodule +module WriteBack( + input [31:0] io_instruction_address, // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] + input [31:0] io_alu_result, // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] + input [31:0] io_memory_read_data, // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] + input [1:0] io_regs_write_source, // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] + input [31:0] io_csr_read_data, // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] + output [31:0] io_regs_write_data // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 22:14] +); + wire [31:0] _io_regs_write_data_T_1 = io_instruction_address + 32'h4; // @[src/main/scala/riscv/core/fivestage/WriteBack.scala 37:72] + wire [31:0] _io_regs_write_data_T_3 = 2'h1 == io_regs_write_source ? io_memory_read_data : io_alu_result; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_regs_write_data_T_5 = 2'h2 == io_regs_write_source ? io_csr_read_data : _io_regs_write_data_T_3; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + assign io_regs_write_data = 2'h3 == io_regs_write_source ? _io_regs_write_data_T_1 : _io_regs_write_data_T_5; // @[src/main/scala/chisel3/util/Mux.scala 77:13] +endmodule +module Forwarding( + input [4:0] io_rs1_ex, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + input [4:0] io_rs2_ex, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + input [4:0] io_rd_mem, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + input io_reg_write_enable_mem, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + input [4:0] io_rd_wb, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + input io_reg_write_enable_wb, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + output [1:0] io_aluop1_forward_ex, // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] + output [1:0] io_aluop2_forward_ex // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 27:14] +); + wire _T_1 = io_reg_write_enable_mem & io_rd_mem != 5'h0; // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:32] + wire _T_5 = io_reg_write_enable_wb & io_rd_wb != 5'h0; // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:37] + wire [1:0] _GEN_0 = io_reg_write_enable_wb & io_rd_wb != 5'h0 & io_rd_wb == io_rs1_ex ? 2'h2 : 2'h0; // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 40:84 41:26 43:26] + wire [1:0] _GEN_2 = _T_5 & io_rd_wb == io_rs2_ex ? 2'h2 : 2'h0; // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 48:84 49:26 51:26] + assign io_aluop1_forward_ex = io_reg_write_enable_mem & io_rd_mem != 5'h0 & io_rd_mem == io_rs1_ex ? 2'h1 : _GEN_0; // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 38:81 39:26] + assign io_aluop2_forward_ex = _T_1 & io_rd_mem == io_rs2_ex ? 2'h1 : _GEN_2; // @[src/main/scala/riscv/core/fivestage/Forwarding.scala 46:81 47:26] +endmodule +module CLINT( + input clock, + input reset, + input [31:0] io_interrupt_flag, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input [31:0] io_instruction, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input [31:0] io_instruction_address_if, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input io_jump_flag, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input [31:0] io_jump_address, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input [31:0] io_csr_mtvec, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input [31:0] io_csr_mepc, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input [31:0] io_csr_mstatus, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + input io_interrupt_enable, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + output io_ctrl_stall_flag, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + output io_csr_reg_write_enable, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + output [11:0] io_csr_reg_write_address, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + output [31:0] io_csr_reg_write_data, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + output [31:0] io_id_interrupt_handler_address, // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] + output io_id_interrupt_assert // @[src/main/scala/riscv/core/fivestage/CLINT.scala 48:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [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 [2:0] csr_state; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 77:26] + reg [31:0] instruction_address; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 78:36] + reg [31:0] cause; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 79:22] + reg interrupt_assert; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 80:33] + reg [31:0] interrupt_handler_address; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 81:42] + reg csr_reg_write_enable; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 82:37] + reg [11:0] csr_reg_write_address; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 83:38] + reg [31:0] csr_reg_write_data; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 84:35] + wire [1:0] _GEN_0 = io_instruction == 32'h30200073 ? 2'h3 : 2'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 93:55 94:21 96:21] + wire [1:0] _GEN_1 = io_interrupt_flag != 32'h0 & io_interrupt_enable ? 2'h2 : _GEN_0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 91:81 92:21] + wire [1:0] interrupt_state = io_instruction == 32'h73 | io_instruction == 32'h100073 ? 2'h1 : _GEN_1; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 89:95 90:21] + wire _io_ctrl_stall_flag_T_1 = csr_state != 3'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 86:78] + wire [31:0] _instruction_address_T_1 = io_jump_address - 32'h4; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 106:25] + wire [3:0] _cause_T_1 = 32'h73 == io_instruction ? 4'hb : 4'ha; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [3:0] _cause_T_3 = 32'h100073 == io_instruction ? 4'h3 : _cause_T_1; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _GEN_3 = io_interrupt_flag[0] ? 32'h80000007 : 32'h8000000b; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 120:13 121:34 122:15] + wire [31:0] _instruction_address_T_3 = io_jump_flag ? io_jump_address : io_instruction_address_if; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 125:33] + wire [2:0] _GEN_4 = interrupt_state == 2'h3 ? 3'h3 : csr_state; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 130:57 132:17 77:26] + wire _T_13 = csr_state == 3'h4; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 138:24] + wire _T_14 = csr_state == 3'h3; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 140:24] + wire [11:0] _csr_reg_write_address_T_2 = 3'h2 == csr_state ? 12'h341 : 12'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [11:0] _csr_reg_write_address_T_4 = 3'h4 == csr_state ? 12'h342 : _csr_reg_write_address_T_2; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [11:0] _csr_reg_write_address_T_6 = 3'h1 == csr_state ? 12'h300 : _csr_reg_write_address_T_4; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [11:0] _csr_reg_write_address_T_8 = 3'h3 == csr_state ? 12'h300 : _csr_reg_write_address_T_6; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _csr_reg_write_address_T_9 = {20'h0,_csr_reg_write_address_T_8}; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 147:31] + wire [31:0] _csr_reg_write_data_T_2 = {io_csr_mstatus[31:4],1'h0,io_csr_mstatus[2:0]}; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 163:30] + wire [31:0] _csr_reg_write_data_T_6 = {io_csr_mstatus[31:4],io_csr_mstatus[7],io_csr_mstatus[2:0]}; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 164:27] + wire [31:0] _csr_reg_write_data_T_8 = 3'h2 == csr_state ? instruction_address : 32'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _GEN_18 = reset ? 32'h0 : _csr_reg_write_address_T_9; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 147:25 83:{38,38}] + assign io_ctrl_stall_flag = interrupt_state != 2'h0 | csr_state != 3'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 86:65] + assign io_csr_reg_write_enable = csr_reg_write_enable; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 167:27] + assign io_csr_reg_write_address = csr_reg_write_address; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 168:28] + assign io_csr_reg_write_data = csr_reg_write_data; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 169:25] + assign io_id_interrupt_handler_address = interrupt_handler_address; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 182:35] + assign io_id_interrupt_assert = interrupt_assert; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 181:26] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 77:26] + csr_state <= 3'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 77:26] + end else if (csr_state == 3'h0) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 100:37] + if (interrupt_state == 2'h1) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 101:57] + csr_state <= 3'h2; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 103:17] + end else if (interrupt_state == 2'h2) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 118:64] + csr_state <= 3'h2; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 124:17] + end else begin + csr_state <= _GEN_4; + end + end else if (csr_state == 3'h2) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 134:43] + csr_state <= 3'h1; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 135:15] + end else if (csr_state == 3'h1) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 136:46] + csr_state <= 3'h4; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 137:15] + end else begin + csr_state <= 3'h0; + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 78:36] + instruction_address <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 78:36] + end else if (csr_state == 3'h0) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 100:37] + if (interrupt_state == 2'h1) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 101:57] + if (io_jump_flag) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 104:33] + instruction_address <= _instruction_address_T_1; + end else begin + instruction_address <= io_instruction_address_if; + end + end else if (interrupt_state == 2'h2) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 118:64] + instruction_address <= _instruction_address_T_3; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 125:27] + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 79:22] + cause <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 79:22] + end else if (csr_state == 3'h0) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 100:37] + if (interrupt_state == 2'h1) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 101:57] + cause <= {{28'd0}, _cause_T_3}; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 110:13] + end else if (interrupt_state == 2'h2) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 118:64] + cause <= _GEN_3; + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 80:33] + interrupt_assert <= 1'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 80:33] + end else begin + interrupt_assert <= _T_13 | _T_14; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 171:20] + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 81:42] + interrupt_handler_address <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 81:42] + end else if (3'h3 == csr_state) begin // @[src/main/scala/chisel3/util/Mux.scala 77:13] + interrupt_handler_address <= io_csr_mepc; + end else if (3'h4 == csr_state) begin // @[src/main/scala/chisel3/util/Mux.scala 77:13] + interrupt_handler_address <= io_csr_mtvec; + end else begin + interrupt_handler_address <= 32'h0; + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 82:37] + csr_reg_write_enable <= 1'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 82:37] + end else begin + csr_reg_write_enable <= _io_ctrl_stall_flag_T_1; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 146:24] + end + csr_reg_write_address <= _GEN_18[11:0]; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 147:25 83:{38,38}] + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CLINT.scala 84:35] + csr_reg_write_data <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CLINT.scala 84:35] + end else if (3'h3 == csr_state) begin // @[src/main/scala/chisel3/util/Mux.scala 77:13] + csr_reg_write_data <= _csr_reg_write_data_T_6; + end else if (3'h1 == csr_state) begin // @[src/main/scala/chisel3/util/Mux.scala 77:13] + csr_reg_write_data <= _csr_reg_write_data_T_2; + end else if (3'h4 == csr_state) begin // @[src/main/scala/chisel3/util/Mux.scala 77:13] + csr_reg_write_data <= cause; + end else begin + csr_reg_write_data <= _csr_reg_write_data_T_8; + 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}}; + csr_state = _RAND_0[2:0]; + _RAND_1 = {1{`RANDOM}}; + instruction_address = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + cause = _RAND_2[31:0]; + _RAND_3 = {1{`RANDOM}}; + interrupt_assert = _RAND_3[0:0]; + _RAND_4 = {1{`RANDOM}}; + interrupt_handler_address = _RAND_4[31:0]; + _RAND_5 = {1{`RANDOM}}; + csr_reg_write_enable = _RAND_5[0:0]; + _RAND_6 = {1{`RANDOM}}; + csr_reg_write_address = _RAND_6[11:0]; + _RAND_7 = {1{`RANDOM}}; + csr_reg_write_data = _RAND_7[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module CSR( + input clock, + input reset, + input io_reg_write_enable_ex, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + input [11:0] io_reg_read_address_id, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + input [11:0] io_reg_write_address_ex, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + input [31:0] io_reg_write_data_ex, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + input io_reg_write_enable_clint, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + input [11:0] io_reg_write_address_clint, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + input [31:0] io_reg_write_data_clint, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + output io_interrupt_enable, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + output [31:0] io_id_reg_data, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + output [31:0] io_clint_csr_mtvec, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + output [31:0] io_clint_csr_mepc, // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] + output [31:0] io_clint_csr_mstatus // @[src/main/scala/riscv/core/fivestage/CSR.scala 35:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [63:0] _RAND_0; + reg [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 [63:0] cycles; // @[src/main/scala/riscv/core/fivestage/CSR.scala 57:23] + reg [31:0] mtvec; // @[src/main/scala/riscv/core/fivestage/CSR.scala 58:22] + reg [31:0] mcause; // @[src/main/scala/riscv/core/fivestage/CSR.scala 59:23] + reg [31:0] mepc; // @[src/main/scala/riscv/core/fivestage/CSR.scala 60:21] + reg [31:0] mie; // @[src/main/scala/riscv/core/fivestage/CSR.scala 61:20] + reg [31:0] mstatus; // @[src/main/scala/riscv/core/fivestage/CSR.scala 62:24] + reg [31:0] mscratch; // @[src/main/scala/riscv/core/fivestage/CSR.scala 63:25] + wire [63:0] _cycles_T_1 = cycles + 64'h1; // @[src/main/scala/riscv/core/fivestage/CSR.scala 65:20] + wire [11:0] _GEN_0 = io_reg_write_enable_clint ? io_reg_write_address_clint : 12'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 73:21 84:41 85:23] + wire [31:0] _GEN_1 = io_reg_write_enable_clint ? io_reg_write_data_clint : 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 74:18 84:41 86:20] + wire [11:0] reg_write_address = io_reg_write_enable_ex ? io_reg_write_address_ex : _GEN_0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 81:32 82:23] + wire [31:0] reg_write_data = io_reg_write_enable_ex ? io_reg_write_data_ex : _GEN_1; // @[src/main/scala/riscv/core/fivestage/CSR.scala 81:32 83:20] + wire [31:0] _GEN_4 = reg_write_address == 12'h340 ? reg_write_data : mscratch; // @[src/main/scala/riscv/core/fivestage/CSR.scala 100:14 63:25 99:58] + wire [31:0] _GEN_5 = reg_write_address == 12'h300 ? reg_write_data : mstatus; // @[src/main/scala/riscv/core/fivestage/CSR.scala 97:57 98:13 62:24] + wire [31:0] _GEN_6 = reg_write_address == 12'h300 ? mscratch : _GEN_4; // @[src/main/scala/riscv/core/fivestage/CSR.scala 63:25 97:57] + wire [31:0] _GEN_7 = reg_write_address == 12'h304 ? reg_write_data : mie; // @[src/main/scala/riscv/core/fivestage/CSR.scala 61:20 95:53 96:9] + wire [31:0] _GEN_8 = reg_write_address == 12'h304 ? mstatus : _GEN_5; // @[src/main/scala/riscv/core/fivestage/CSR.scala 62:24 95:53] + wire [31:0] _GEN_9 = reg_write_address == 12'h304 ? mscratch : _GEN_6; // @[src/main/scala/riscv/core/fivestage/CSR.scala 63:25 95:53] + wire [31:0] _io_id_reg_data_T_1 = 12'hc00 == io_reg_read_address_id ? cycles[31:0] : 32'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_id_reg_data_T_3 = 12'hc80 == io_reg_read_address_id ? cycles[63:32] : _io_id_reg_data_T_1; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_id_reg_data_T_5 = 12'h305 == io_reg_read_address_id ? mtvec : _io_id_reg_data_T_3; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_id_reg_data_T_7 = 12'h342 == io_reg_read_address_id ? mcause : _io_id_reg_data_T_5; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_id_reg_data_T_9 = 12'h341 == io_reg_read_address_id ? mepc : _io_id_reg_data_T_7; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_id_reg_data_T_11 = 12'h304 == io_reg_read_address_id ? mie : _io_id_reg_data_T_9; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _io_id_reg_data_T_13 = 12'h300 == io_reg_read_address_id ? mstatus : _io_id_reg_data_T_11; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + assign io_interrupt_enable = mstatus[3]; // @[src/main/scala/riscv/core/fivestage/CSR.scala 69:33] + assign io_id_reg_data = 12'h340 == io_reg_read_address_id ? mscratch : _io_id_reg_data_T_13; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + assign io_clint_csr_mtvec = mtvec; // @[src/main/scala/riscv/core/fivestage/CSR.scala 66:22] + assign io_clint_csr_mepc = mepc; // @[src/main/scala/riscv/core/fivestage/CSR.scala 67:21] + assign io_clint_csr_mstatus = mstatus; // @[src/main/scala/riscv/core/fivestage/CSR.scala 68:24] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 57:23] + cycles <= 64'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 57:23] + end else begin + cycles <= _cycles_T_1; // @[src/main/scala/riscv/core/fivestage/CSR.scala 65:10] + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 58:22] + mtvec <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 58:22] + end else if (reg_write_address == 12'h305) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + if (io_reg_write_enable_ex) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 81:32] + mtvec <= io_reg_write_data_ex; // @[src/main/scala/riscv/core/fivestage/CSR.scala 83:20] + end else if (io_reg_write_enable_clint) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 84:41] + mtvec <= io_reg_write_data_clint; // @[src/main/scala/riscv/core/fivestage/CSR.scala 86:20] + end else begin + mtvec <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 74:18] + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 59:23] + mcause <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 59:23] + end else if (!(reg_write_address == 12'h305)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + if (reg_write_address == 12'h342) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 91:56] + if (io_reg_write_enable_ex) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 81:32] + mcause <= io_reg_write_data_ex; // @[src/main/scala/riscv/core/fivestage/CSR.scala 83:20] + end else begin + mcause <= _GEN_1; + end + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 60:21] + mepc <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 60:21] + end else if (!(reg_write_address == 12'h305)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + if (!(reg_write_address == 12'h342)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 91:56] + if (reg_write_address == 12'h341) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 93:54] + mepc <= reg_write_data; // @[src/main/scala/riscv/core/fivestage/CSR.scala 94:10] + end + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 61:20] + mie <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 61:20] + end else if (!(reg_write_address == 12'h305)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + if (!(reg_write_address == 12'h342)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 91:56] + if (!(reg_write_address == 12'h341)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 93:54] + mie <= _GEN_7; + end + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 62:24] + mstatus <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 62:24] + end else if (!(reg_write_address == 12'h305)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + if (!(reg_write_address == 12'h342)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 91:56] + if (!(reg_write_address == 12'h341)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 93:54] + mstatus <= _GEN_8; + end + end + end + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 63:25] + mscratch <= 32'h0; // @[src/main/scala/riscv/core/fivestage/CSR.scala 63:25] + end else if (!(reg_write_address == 12'h305)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 89:49] + if (!(reg_write_address == 12'h342)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 91:56] + if (!(reg_write_address == 12'h341)) begin // @[src/main/scala/riscv/core/fivestage/CSR.scala 93:54] + mscratch <= _GEN_9; + end + end + end + end +// Register and memory initialization +`ifdef RANDOMIZE_GARBAGE_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_INVALID_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_REG_INIT +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_MEM_INIT +`define RANDOMIZE +`endif +`ifndef RANDOM +`define RANDOM $random +`endif +`ifdef RANDOMIZE_MEM_INIT + integer initvar; +`endif +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `ifdef INIT_RANDOM + `INIT_RANDOM + `endif + `ifndef VERILATOR + `ifdef RANDOMIZE_DELAY + #`RANDOMIZE_DELAY begin end + `else + #0.002 begin end + `endif + `endif +`ifdef RANDOMIZE_REG_INIT + _RAND_0 = {2{`RANDOM}}; + cycles = _RAND_0[63:0]; + _RAND_1 = {1{`RANDOM}}; + mtvec = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + mcause = _RAND_2[31:0]; + _RAND_3 = {1{`RANDOM}}; + mepc = _RAND_3[31:0]; + _RAND_4 = {1{`RANDOM}}; + mie = _RAND_4[31:0]; + _RAND_5 = {1{`RANDOM}}; + mstatus = _RAND_5[31:0]; + _RAND_6 = {1{`RANDOM}}; + mscratch = _RAND_6[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module AXI4LiteMaster( + input clock, + input reset, + output io_channels_write_address_channel_AWVALID, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_channels_write_address_channel_AWREADY, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output [31:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_channels_write_data_channel_WVALID, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_channels_write_data_channel_WREADY, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output [3:0] io_channels_write_data_channel_WSTRB, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_channels_write_response_channel_BVALID, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_channels_write_response_channel_BREADY, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_channels_read_address_channel_ARVALID, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_channels_read_address_channel_ARREADY, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output [31:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_channels_read_data_channel_RVALID, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_channels_read_data_channel_RREADY, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input [31:0] io_channels_read_data_channel_RDATA, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input [1:0] io_channels_read_data_channel_RRESP, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_bundle_read, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_bundle_write, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output [31:0] io_bundle_read_data, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input [31:0] io_bundle_write_data, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_bundle_write_strobe_0, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_bundle_write_strobe_1, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_bundle_write_strobe_2, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input io_bundle_write_strobe_3, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + input [31:0] io_bundle_address, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_bundle_busy, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_bundle_read_valid, // @[src/main/scala/bus/AXI4Lite.scala 215:14] + output io_bundle_write_valid // @[src/main/scala/bus/AXI4Lite.scala 215:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [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 + reg [2:0] state; // @[src/main/scala/bus/AXI4Lite.scala 219:22] + reg [31:0] addr; // @[src/main/scala/bus/AXI4Lite.scala 222:21] + reg read_valid; // @[src/main/scala/bus/AXI4Lite.scala 223:27] + reg write_valid; // @[src/main/scala/bus/AXI4Lite.scala 225:28] + reg [31:0] write_data; // @[src/main/scala/bus/AXI4Lite.scala 227:27] + reg write_strobe_0; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg write_strobe_1; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg write_strobe_2; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg write_strobe_3; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + reg ARVALID; // @[src/main/scala/bus/AXI4Lite.scala 232:24] + reg RREADY; // @[src/main/scala/bus/AXI4Lite.scala 235:23] + reg AWVALID; // @[src/main/scala/bus/AXI4Lite.scala 239:24] + reg WVALID; // @[src/main/scala/bus/AXI4Lite.scala 242:23] + wire [1:0] io_channels_write_data_channel_WSTRB_lo = {write_strobe_1,write_strobe_0}; // @[src/main/scala/bus/AXI4Lite.scala 246:56] + wire [1:0] io_channels_write_data_channel_WSTRB_hi = {write_strobe_3,write_strobe_2}; // @[src/main/scala/bus/AXI4Lite.scala 246:56] + reg BREADY; // @[src/main/scala/bus/AXI4Lite.scala 247:23] + wire [2:0] _GEN_12 = io_channels_read_data_channel_RVALID & io_channels_read_data_channel_RRESP == 2'h0 ? 3'h0 : state + ; // @[src/main/scala/bus/AXI4Lite.scala 278:97 279:15 219:22] + wire _GEN_13 = io_channels_read_data_channel_RVALID & io_channels_read_data_channel_RRESP == 2'h0 | read_valid; // @[src/main/scala/bus/AXI4Lite.scala 278:97 280:20 223:27] + wire _GEN_14 = io_channels_read_data_channel_RVALID & io_channels_read_data_channel_RRESP == 2'h0 | RREADY; // @[src/main/scala/bus/AXI4Lite.scala 278:97 281:16 235:23] + wire [2:0] _GEN_16 = io_channels_write_address_channel_AWREADY & AWVALID ? 3'h4 : state; // @[src/main/scala/bus/AXI4Lite.scala 288:66 289:15 219:22] + wire _GEN_18 = io_channels_write_address_channel_AWREADY & AWVALID ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 286:15 288:66 291:17] + wire [2:0] _GEN_20 = io_channels_write_data_channel_WREADY & WVALID ? 3'h5 : state; // @[src/main/scala/bus/AXI4Lite.scala 297:61 299:15 219:22] + wire _GEN_21 = io_channels_write_data_channel_WREADY & WVALID ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 295:14 297:61 300:16] + wire [2:0] _GEN_22 = io_channels_write_response_channel_BVALID & BREADY ? 3'h0 : state; // @[src/main/scala/bus/AXI4Lite.scala 305:65 306:15 219:22] + wire _GEN_23 = io_channels_write_response_channel_BVALID & BREADY | write_valid; // @[src/main/scala/bus/AXI4Lite.scala 305:65 307:21 225:28] + wire _GEN_24 = io_channels_write_response_channel_BVALID & BREADY ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 304:14 305:65 308:16] + wire _GEN_25 = 3'h5 == state ? _GEN_24 : BREADY; // @[src/main/scala/bus/AXI4Lite.scala 250:17 247:23] + wire [2:0] _GEN_26 = 3'h5 == state ? _GEN_22 : state; // @[src/main/scala/bus/AXI4Lite.scala 250:17 219:22] + wire _GEN_27 = 3'h5 == state ? _GEN_23 : write_valid; // @[src/main/scala/bus/AXI4Lite.scala 250:17 225:28] + wire _GEN_28 = 3'h4 == state ? _GEN_21 : WVALID; // @[src/main/scala/bus/AXI4Lite.scala 250:17 242:23] + wire [31:0] _GEN_29 = 3'h4 == state ? addr : 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 250:17 240:44] + wire [2:0] _GEN_30 = 3'h4 == state ? _GEN_20 : _GEN_26; // @[src/main/scala/bus/AXI4Lite.scala 250:17] + wire _GEN_31 = 3'h4 == state ? BREADY : _GEN_25; // @[src/main/scala/bus/AXI4Lite.scala 250:17 247:23] + wire _GEN_32 = 3'h4 == state ? write_valid : _GEN_27; // @[src/main/scala/bus/AXI4Lite.scala 250:17 225:28] + wire _GEN_33 = 3'h3 == state ? _GEN_18 : AWVALID; // @[src/main/scala/bus/AXI4Lite.scala 250:17 239:24] + wire [31:0] _GEN_34 = 3'h3 == state ? addr : _GEN_29; // @[src/main/scala/bus/AXI4Lite.scala 250:17] + wire [2:0] _GEN_35 = 3'h3 == state ? _GEN_16 : _GEN_30; // @[src/main/scala/bus/AXI4Lite.scala 250:17] + wire _GEN_36 = 3'h3 == state ? WVALID : _GEN_28; // @[src/main/scala/bus/AXI4Lite.scala 250:17 242:23] + wire _GEN_37 = 3'h3 == state ? BREADY : _GEN_31; // @[src/main/scala/bus/AXI4Lite.scala 250:17 247:23] + wire _GEN_38 = 3'h3 == state ? write_valid : _GEN_32; // @[src/main/scala/bus/AXI4Lite.scala 250:17 225:28] + wire [31:0] _GEN_44 = 3'h2 == state ? 32'h0 : _GEN_34; // @[src/main/scala/bus/AXI4Lite.scala 250:17 240:44] + wire [31:0] _GEN_49 = 3'h1 == state ? addr : 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 250:17 231:43] + wire [31:0] _GEN_55 = 3'h1 == state ? 32'h0 : _GEN_44; // @[src/main/scala/bus/AXI4Lite.scala 250:17 240:44] + assign io_channels_write_address_channel_AWVALID = AWVALID; // @[src/main/scala/bus/AXI4Lite.scala 241:45] + assign io_channels_write_address_channel_AWADDR = 3'h0 == state ? 32'h0 : _GEN_55; // @[src/main/scala/bus/AXI4Lite.scala 250:17 240:44] + assign io_channels_write_data_channel_WVALID = WVALID; // @[src/main/scala/bus/AXI4Lite.scala 243:41] + assign io_channels_write_data_channel_WDATA = write_data; // @[src/main/scala/bus/AXI4Lite.scala 244:40] + assign io_channels_write_data_channel_WSTRB = {io_channels_write_data_channel_WSTRB_hi, + io_channels_write_data_channel_WSTRB_lo}; // @[src/main/scala/bus/AXI4Lite.scala 246:56] + assign io_channels_write_response_channel_BREADY = BREADY; // @[src/main/scala/bus/AXI4Lite.scala 248:45] + assign io_channels_read_address_channel_ARVALID = ARVALID; // @[src/main/scala/bus/AXI4Lite.scala 233:44] + assign io_channels_read_address_channel_ARADDR = 3'h0 == state ? 32'h0 : _GEN_49; // @[src/main/scala/bus/AXI4Lite.scala 250:17 231:43] + assign io_channels_read_data_channel_RREADY = RREADY; // @[src/main/scala/bus/AXI4Lite.scala 236:40] + assign io_bundle_read_data = io_channels_read_data_channel_RDATA; // @[src/main/scala/bus/AXI4Lite.scala 238:23] + assign io_bundle_busy = state != 3'h0; // @[src/main/scala/bus/AXI4Lite.scala 220:27] + assign io_bundle_read_valid = read_valid; // @[src/main/scala/bus/AXI4Lite.scala 224:24] + assign io_bundle_write_valid = write_valid; // @[src/main/scala/bus/AXI4Lite.scala 226:25] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 219:22] + state <= 3'h0; // @[src/main/scala/bus/AXI4Lite.scala 219:22] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + state <= 3'h3; // @[src/main/scala/bus/AXI4Lite.scala 259:15] + end else if (io_bundle_read) begin // @[src/main/scala/bus/AXI4Lite.scala 263:34] + state <= 3'h1; // @[src/main/scala/bus/AXI4Lite.scala 264:15] + end + end else if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_channels_read_address_channel_ARREADY & ARVALID) begin // @[src/main/scala/bus/AXI4Lite.scala 271:65] + state <= 3'h2; // @[src/main/scala/bus/AXI4Lite.scala 272:15] + end + end else if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + state <= _GEN_12; + end else begin + state <= _GEN_35; + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 222:21] + addr <= 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 222:21] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + addr <= io_bundle_address; // @[src/main/scala/bus/AXI4Lite.scala 260:14] + end else if (io_bundle_read) begin // @[src/main/scala/bus/AXI4Lite.scala 263:34] + addr <= io_bundle_address; // @[src/main/scala/bus/AXI4Lite.scala 265:14] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 223:27] + read_valid <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 223:27] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + read_valid <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 256:18] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + read_valid <= _GEN_13; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 225:28] + write_valid <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 225:28] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + write_valid <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 257:19] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + write_valid <= _GEN_38; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 227:27] + write_data <= 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 227:27] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + write_data <= io_bundle_write_data; // @[src/main/scala/bus/AXI4Lite.scala 261:20] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 228:29] + write_strobe_0 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + write_strobe_0 <= io_bundle_write_strobe_0; // @[src/main/scala/bus/AXI4Lite.scala 262:22] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 228:29] + write_strobe_1 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + write_strobe_1 <= io_bundle_write_strobe_1; // @[src/main/scala/bus/AXI4Lite.scala 262:22] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 228:29] + write_strobe_2 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + write_strobe_2 <= io_bundle_write_strobe_2; // @[src/main/scala/bus/AXI4Lite.scala 262:22] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 228:29] + write_strobe_3 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 228:29] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_bundle_write) begin // @[src/main/scala/bus/AXI4Lite.scala 258:29] + write_strobe_3 <= io_bundle_write_strobe_3; // @[src/main/scala/bus/AXI4Lite.scala 262:22] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 232:24] + ARVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 232:24] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + ARVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 254:15] + end else if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (io_channels_read_address_channel_ARREADY & ARVALID) begin // @[src/main/scala/bus/AXI4Lite.scala 271:65] + ARVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 274:17] + end else begin + ARVALID <= 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 269:15] + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 235:23] + RREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 235:23] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + RREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 255:14] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + RREADY <= _GEN_14; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 239:24] + AWVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 239:24] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + AWVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 253:15] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + AWVALID <= _GEN_33; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 242:23] + WVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 242:23] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 252:14] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + WVALID <= _GEN_36; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 247:23] + BREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 247:23] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 250:17] + BREADY <= _GEN_37; + end + end + end + end +// Register and memory initialization +`ifdef RANDOMIZE_GARBAGE_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_INVALID_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_REG_INIT +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_MEM_INIT +`define RANDOMIZE +`endif +`ifndef RANDOM +`define RANDOM $random +`endif +`ifdef RANDOMIZE_MEM_INIT + integer initvar; +`endif +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `ifdef INIT_RANDOM + `INIT_RANDOM + `endif + `ifndef VERILATOR + `ifdef RANDOMIZE_DELAY + #`RANDOMIZE_DELAY begin end + `else + #0.002 begin end + `endif + `endif +`ifdef RANDOMIZE_REG_INIT + _RAND_0 = {1{`RANDOM}}; + state = _RAND_0[2:0]; + _RAND_1 = {1{`RANDOM}}; + addr = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + read_valid = _RAND_2[0:0]; + _RAND_3 = {1{`RANDOM}}; + write_valid = _RAND_3[0:0]; + _RAND_4 = {1{`RANDOM}}; + write_data = _RAND_4[31:0]; + _RAND_5 = {1{`RANDOM}}; + write_strobe_0 = _RAND_5[0:0]; + _RAND_6 = {1{`RANDOM}}; + write_strobe_1 = _RAND_6[0:0]; + _RAND_7 = {1{`RANDOM}}; + write_strobe_2 = _RAND_7[0:0]; + _RAND_8 = {1{`RANDOM}}; + write_strobe_3 = _RAND_8[0:0]; + _RAND_9 = {1{`RANDOM}}; + ARVALID = _RAND_9[0:0]; + _RAND_10 = {1{`RANDOM}}; + RREADY = _RAND_10[0:0]; + _RAND_11 = {1{`RANDOM}}; + AWVALID = _RAND_11[0:0]; + _RAND_12 = {1{`RANDOM}}; + WVALID = _RAND_12[0:0]; + _RAND_13 = {1{`RANDOM}}; + BREADY = _RAND_13[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module CPU( + input clock, + input reset, + output io_axi4_channels_write_address_channel_AWVALID, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_axi4_channels_write_address_channel_AWREADY, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output [31:0] io_axi4_channels_write_address_channel_AWADDR, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output io_axi4_channels_write_data_channel_WVALID, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_axi4_channels_write_data_channel_WREADY, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output [31:0] io_axi4_channels_write_data_channel_WDATA, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output [3:0] io_axi4_channels_write_data_channel_WSTRB, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_axi4_channels_write_response_channel_BVALID, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output io_axi4_channels_write_response_channel_BREADY, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output io_axi4_channels_read_address_channel_ARVALID, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_axi4_channels_read_address_channel_ARREADY, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output [31:0] io_axi4_channels_read_address_channel_ARADDR, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_axi4_channels_read_data_channel_RVALID, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output io_axi4_channels_read_data_channel_RREADY, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input [31:0] io_axi4_channels_read_data_channel_RDATA, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + output [31:0] io_bus_address, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input [31:0] io_interrupt_flag, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_stall_flag_bus, // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] + input io_instruction_valid // @[src/main/scala/riscv/core/fivestage/CPU.scala 23:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; +`endif // RANDOMIZE_REG_INIT + wire ctrl_io_jump_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_stall_flag_if; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_stall_flag_mem; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_stall_flag_clint; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_stall_flag_bus; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire [4:0] ctrl_io_rs1_id; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire [4:0] ctrl_io_rs2_id; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_memory_read_enable_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire [4:0] ctrl_io_rd_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_if_flush; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_id_flush; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_pc_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_if_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_id_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire ctrl_io_ex_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + wire regs_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire regs_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire regs_io_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire [4:0] regs_io_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire [31:0] regs_io_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire [4:0] regs_io_read_address1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire [4:0] regs_io_read_address2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire [31:0] regs_io_read_data1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire [31:0] regs_io_read_data2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + wire inst_fetch_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire inst_fetch_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire inst_fetch_io_stall_flag_ctrl; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire inst_fetch_io_jump_flag_id; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire [31:0] inst_fetch_io_jump_address_id; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire inst_fetch_io_instruction_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire [31:0] inst_fetch_io_bus_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire [31:0] inst_fetch_io_bus_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire inst_fetch_io_ctrl_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire [31:0] inst_fetch_io_id_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire [31:0] inst_fetch_io_id_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + wire if2id_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire if2id_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire if2id_io_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire if2id_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] if2id_io_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] if2id_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] if2id_io_interrupt_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] if2id_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] if2id_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] if2id_io_output_interrupt_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + wire [31:0] id_io_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [31:0] id_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [31:0] id_io_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [31:0] id_io_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_interrupt_assert; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [31:0] id_io_interrupt_handler_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [4:0] id_io_regs_reg1_read_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [4:0] id_io_regs_reg2_read_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [31:0] id_io_ex_immediate; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_ex_aluop1_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_ex_aluop2_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_ex_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_ex_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [1:0] id_io_ex_reg_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_ex_reg_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [4:0] id_io_ex_reg_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [11:0] id_io_ex_csr_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_ex_csr_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id_io_if_jump_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire [31:0] id_io_if_jump_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + wire id2ex_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_flush_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [4:0] id2ex_io_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [1:0] id2ex_io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_immediate; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_aluop1_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_aluop2_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_csr_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [11:0] id2ex_io_csr_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [4:0] id2ex_io_output_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [1:0] id2ex_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_output_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_output_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_output_immediate; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_output_aluop1_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_output_aluop2_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_output_csr_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [11:0] id2ex_io_output_csr_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_output_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire id2ex_io_output_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] id2ex_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + wire [31:0] ex_io_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_immediate; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire ex_io_aluop1_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire ex_io_aluop2_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_forward_from_mem; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_forward_from_wb; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [1:0] ex_io_aluop1_forward; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [1:0] ex_io_aluop2_forward; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_mem_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire [31:0] ex_io_csr_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + wire ex2mem_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [1:0] ex2mem_io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [1:0] ex2mem_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_output_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_output_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_output_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire ex2mem_io_output_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_output_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire [31:0] ex2mem_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + wire mem_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [2:0] mem_io_funct3; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [1:0] mem_io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_wb_memory_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_ctrl_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_forward_to_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_read; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_bus_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_bus_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_read_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_write; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire [31:0] mem_io_bus_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_write_strobe_0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_write_strobe_1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_write_strobe_2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_write_strobe_3; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_write_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_request; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem_io_bus_granted; // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + wire mem2wb_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire mem2wb_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire mem2wb_io_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [1:0] mem2wb_io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_memory_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_output_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire mem2wb_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [1:0] mem2wb_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_output_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_output_memory_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] mem2wb_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + wire [31:0] wb_io_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wire [31:0] wb_io_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wire [31:0] wb_io_memory_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wire [1:0] wb_io_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wire [31:0] wb_io_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wire [31:0] wb_io_regs_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + wire [4:0] forwarding_io_rs1_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire [4:0] forwarding_io_rs2_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire [4:0] forwarding_io_rd_mem; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire forwarding_io_reg_write_enable_mem; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire [4:0] forwarding_io_rd_wb; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire forwarding_io_reg_write_enable_wb; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire [1:0] forwarding_io_aluop1_forward_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire [1:0] forwarding_io_aluop2_forward_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + wire clint_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire clint_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_interrupt_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_instruction_address_if; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire clint_io_jump_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_jump_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_csr_mtvec; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_csr_mepc; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_csr_mstatus; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire clint_io_interrupt_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire clint_io_ctrl_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire clint_io_csr_reg_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [11:0] clint_io_csr_reg_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_csr_reg_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire [31:0] clint_io_id_interrupt_handler_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire clint_io_id_interrupt_assert; // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + wire csr_regs_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire csr_regs_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire csr_regs_io_reg_write_enable_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [11:0] csr_regs_io_reg_read_address_id; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [11:0] csr_regs_io_reg_write_address_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [31:0] csr_regs_io_reg_write_data_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire csr_regs_io_reg_write_enable_clint; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [11:0] csr_regs_io_reg_write_address_clint; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [31:0] csr_regs_io_reg_write_data_clint; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire csr_regs_io_interrupt_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [31:0] csr_regs_io_id_reg_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [31:0] csr_regs_io_clint_csr_mtvec; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [31:0] csr_regs_io_clint_csr_mepc; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire [31:0] csr_regs_io_clint_csr_mstatus; // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + wire axi4_master_clock; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_reset; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_write_address_channel_AWVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_write_address_channel_AWREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_channels_write_address_channel_AWADDR; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_write_data_channel_WVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_write_data_channel_WREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_channels_write_data_channel_WDATA; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [3:0] axi4_master_io_channels_write_data_channel_WSTRB; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_write_response_channel_BVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_write_response_channel_BREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_read_address_channel_ARVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_read_address_channel_ARREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_channels_read_address_channel_ARADDR; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_read_data_channel_RVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_channels_read_data_channel_RREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_channels_read_data_channel_RDATA; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [1:0] axi4_master_io_channels_read_data_channel_RRESP; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_read; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_write; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_bundle_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_bundle_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_write_strobe_0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_write_strobe_1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_write_strobe_2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_write_strobe_3; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire [31:0] axi4_master_io_bundle_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_busy; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_read_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + wire axi4_master_io_bundle_write_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + reg mem_granted; // @[src/main/scala/riscv/core/fivestage/CPU.scala 51:28] + wire _T = ~mem_io_bus_request; // @[src/main/scala/riscv/core/fivestage/CPU.scala 60:10] + wire _GEN_0 = ~mem_io_bus_request ? 1'h0 : mem_granted; // @[src/main/scala/riscv/core/fivestage/CPU.scala 60:31 61:19 51:28] + wire _axi4_master_io_bundle_read_T_2 = ~axi4_master_io_bundle_busy & ~axi4_master_io_bundle_read_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 66:63] + wire _GEN_9 = mem_granted & _GEN_0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 65:17] + wire _GEN_10 = _axi4_master_io_bundle_read_T_2 | _GEN_9; // @[src/main/scala/riscv/core/fivestage/CPU.scala 75:76 76:19] + Control ctrl ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 25:20] + .io_jump_flag(ctrl_io_jump_flag), + .io_stall_flag_if(ctrl_io_stall_flag_if), + .io_stall_flag_mem(ctrl_io_stall_flag_mem), + .io_stall_flag_clint(ctrl_io_stall_flag_clint), + .io_stall_flag_bus(ctrl_io_stall_flag_bus), + .io_rs1_id(ctrl_io_rs1_id), + .io_rs2_id(ctrl_io_rs2_id), + .io_memory_read_enable_ex(ctrl_io_memory_read_enable_ex), + .io_rd_ex(ctrl_io_rd_ex), + .io_if_flush(ctrl_io_if_flush), + .io_id_flush(ctrl_io_id_flush), + .io_pc_stall(ctrl_io_pc_stall), + .io_if_stall(ctrl_io_if_stall), + .io_id_stall(ctrl_io_id_stall), + .io_ex_stall(ctrl_io_ex_stall) + ); + RegisterFile regs ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 26:20] + .clock(regs_clock), + .reset(regs_reset), + .io_write_enable(regs_io_write_enable), + .io_write_address(regs_io_write_address), + .io_write_data(regs_io_write_data), + .io_read_address1(regs_io_read_address1), + .io_read_address2(regs_io_read_address2), + .io_read_data1(regs_io_read_data1), + .io_read_data2(regs_io_read_data2) + ); + InstructionFetch inst_fetch ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 27:26] + .clock(inst_fetch_clock), + .reset(inst_fetch_reset), + .io_stall_flag_ctrl(inst_fetch_io_stall_flag_ctrl), + .io_jump_flag_id(inst_fetch_io_jump_flag_id), + .io_jump_address_id(inst_fetch_io_jump_address_id), + .io_instruction_valid(inst_fetch_io_instruction_valid), + .io_bus_address(inst_fetch_io_bus_address), + .io_bus_data(inst_fetch_io_bus_data), + .io_ctrl_stall_flag(inst_fetch_io_ctrl_stall_flag), + .io_id_instruction_address(inst_fetch_io_id_instruction_address), + .io_id_instruction(inst_fetch_io_id_instruction) + ); + IF2ID if2id ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 28:21] + .clock(if2id_clock), + .reset(if2id_reset), + .io_stall_flag(if2id_io_stall_flag), + .io_flush_enable(if2id_io_flush_enable), + .io_instruction(if2id_io_instruction), + .io_instruction_address(if2id_io_instruction_address), + .io_interrupt_flag(if2id_io_interrupt_flag), + .io_output_instruction(if2id_io_output_instruction), + .io_output_instruction_address(if2id_io_output_instruction_address), + .io_output_interrupt_flag(if2id_io_output_interrupt_flag) + ); + InstructionDecode id ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 29:18] + .io_instruction(id_io_instruction), + .io_instruction_address(id_io_instruction_address), + .io_reg1_data(id_io_reg1_data), + .io_reg2_data(id_io_reg2_data), + .io_interrupt_assert(id_io_interrupt_assert), + .io_interrupt_handler_address(id_io_interrupt_handler_address), + .io_regs_reg1_read_address(id_io_regs_reg1_read_address), + .io_regs_reg2_read_address(id_io_regs_reg2_read_address), + .io_ex_immediate(id_io_ex_immediate), + .io_ex_aluop1_source(id_io_ex_aluop1_source), + .io_ex_aluop2_source(id_io_ex_aluop2_source), + .io_ex_memory_read_enable(id_io_ex_memory_read_enable), + .io_ex_memory_write_enable(id_io_ex_memory_write_enable), + .io_ex_reg_write_source(id_io_ex_reg_write_source), + .io_ex_reg_write_enable(id_io_ex_reg_write_enable), + .io_ex_reg_write_address(id_io_ex_reg_write_address), + .io_ex_csr_address(id_io_ex_csr_address), + .io_ex_csr_write_enable(id_io_ex_csr_write_enable), + .io_if_jump_flag(id_io_if_jump_flag), + .io_if_jump_address(id_io_if_jump_address) + ); + ID2EX id2ex ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 30:21] + .clock(id2ex_clock), + .reset(id2ex_reset), + .io_stall_flag(id2ex_io_stall_flag), + .io_flush_enable(id2ex_io_flush_enable), + .io_instruction(id2ex_io_instruction), + .io_instruction_address(id2ex_io_instruction_address), + .io_regs_write_enable(id2ex_io_regs_write_enable), + .io_regs_write_address(id2ex_io_regs_write_address), + .io_regs_write_source(id2ex_io_regs_write_source), + .io_reg1_data(id2ex_io_reg1_data), + .io_reg2_data(id2ex_io_reg2_data), + .io_immediate(id2ex_io_immediate), + .io_aluop1_source(id2ex_io_aluop1_source), + .io_aluop2_source(id2ex_io_aluop2_source), + .io_csr_write_enable(id2ex_io_csr_write_enable), + .io_csr_address(id2ex_io_csr_address), + .io_memory_read_enable(id2ex_io_memory_read_enable), + .io_memory_write_enable(id2ex_io_memory_write_enable), + .io_csr_read_data(id2ex_io_csr_read_data), + .io_output_instruction(id2ex_io_output_instruction), + .io_output_instruction_address(id2ex_io_output_instruction_address), + .io_output_regs_write_enable(id2ex_io_output_regs_write_enable), + .io_output_regs_write_address(id2ex_io_output_regs_write_address), + .io_output_regs_write_source(id2ex_io_output_regs_write_source), + .io_output_reg1_data(id2ex_io_output_reg1_data), + .io_output_reg2_data(id2ex_io_output_reg2_data), + .io_output_immediate(id2ex_io_output_immediate), + .io_output_aluop1_source(id2ex_io_output_aluop1_source), + .io_output_aluop2_source(id2ex_io_output_aluop2_source), + .io_output_csr_write_enable(id2ex_io_output_csr_write_enable), + .io_output_csr_address(id2ex_io_output_csr_address), + .io_output_memory_read_enable(id2ex_io_output_memory_read_enable), + .io_output_memory_write_enable(id2ex_io_output_memory_write_enable), + .io_output_csr_read_data(id2ex_io_output_csr_read_data) + ); + Execute ex ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 31:18] + .io_instruction(ex_io_instruction), + .io_instruction_address(ex_io_instruction_address), + .io_reg1_data(ex_io_reg1_data), + .io_reg2_data(ex_io_reg2_data), + .io_immediate(ex_io_immediate), + .io_aluop1_source(ex_io_aluop1_source), + .io_aluop2_source(ex_io_aluop2_source), + .io_csr_read_data(ex_io_csr_read_data), + .io_forward_from_mem(ex_io_forward_from_mem), + .io_forward_from_wb(ex_io_forward_from_wb), + .io_aluop1_forward(ex_io_aluop1_forward), + .io_aluop2_forward(ex_io_aluop2_forward), + .io_mem_alu_result(ex_io_mem_alu_result), + .io_csr_write_data(ex_io_csr_write_data) + ); + EX2MEM ex2mem ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 32:22] + .clock(ex2mem_clock), + .reset(ex2mem_reset), + .io_stall_flag(ex2mem_io_stall_flag), + .io_regs_write_enable(ex2mem_io_regs_write_enable), + .io_regs_write_source(ex2mem_io_regs_write_source), + .io_regs_write_address(ex2mem_io_regs_write_address), + .io_instruction_address(ex2mem_io_instruction_address), + .io_instruction(ex2mem_io_instruction), + .io_reg1_data(ex2mem_io_reg1_data), + .io_reg2_data(ex2mem_io_reg2_data), + .io_memory_read_enable(ex2mem_io_memory_read_enable), + .io_memory_write_enable(ex2mem_io_memory_write_enable), + .io_alu_result(ex2mem_io_alu_result), + .io_csr_read_data(ex2mem_io_csr_read_data), + .io_output_regs_write_enable(ex2mem_io_output_regs_write_enable), + .io_output_regs_write_source(ex2mem_io_output_regs_write_source), + .io_output_regs_write_address(ex2mem_io_output_regs_write_address), + .io_output_instruction_address(ex2mem_io_output_instruction_address), + .io_output_instruction(ex2mem_io_output_instruction), + .io_output_reg2_data(ex2mem_io_output_reg2_data), + .io_output_memory_read_enable(ex2mem_io_output_memory_read_enable), + .io_output_memory_write_enable(ex2mem_io_output_memory_write_enable), + .io_output_alu_result(ex2mem_io_output_alu_result), + .io_output_csr_read_data(ex2mem_io_output_csr_read_data) + ); + MemoryAccess mem ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 33:19] + .clock(mem_clock), + .reset(mem_reset), + .io_alu_result(mem_io_alu_result), + .io_reg2_data(mem_io_reg2_data), + .io_memory_read_enable(mem_io_memory_read_enable), + .io_memory_write_enable(mem_io_memory_write_enable), + .io_funct3(mem_io_funct3), + .io_regs_write_source(mem_io_regs_write_source), + .io_csr_read_data(mem_io_csr_read_data), + .io_wb_memory_read_data(mem_io_wb_memory_read_data), + .io_ctrl_stall_flag(mem_io_ctrl_stall_flag), + .io_forward_to_ex(mem_io_forward_to_ex), + .io_bus_read(mem_io_bus_read), + .io_bus_address(mem_io_bus_address), + .io_bus_read_data(mem_io_bus_read_data), + .io_bus_read_valid(mem_io_bus_read_valid), + .io_bus_write(mem_io_bus_write), + .io_bus_write_data(mem_io_bus_write_data), + .io_bus_write_strobe_0(mem_io_bus_write_strobe_0), + .io_bus_write_strobe_1(mem_io_bus_write_strobe_1), + .io_bus_write_strobe_2(mem_io_bus_write_strobe_2), + .io_bus_write_strobe_3(mem_io_bus_write_strobe_3), + .io_bus_write_valid(mem_io_bus_write_valid), + .io_bus_request(mem_io_bus_request), + .io_bus_granted(mem_io_bus_granted) + ); + MEM2WB mem2wb ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 34:22] + .clock(mem2wb_clock), + .reset(mem2wb_reset), + .io_instruction_address(mem2wb_io_instruction_address), + .io_alu_result(mem2wb_io_alu_result), + .io_regs_write_enable(mem2wb_io_regs_write_enable), + .io_regs_write_source(mem2wb_io_regs_write_source), + .io_regs_write_address(mem2wb_io_regs_write_address), + .io_memory_read_data(mem2wb_io_memory_read_data), + .io_csr_read_data(mem2wb_io_csr_read_data), + .io_output_instruction_address(mem2wb_io_output_instruction_address), + .io_output_alu_result(mem2wb_io_output_alu_result), + .io_output_regs_write_enable(mem2wb_io_output_regs_write_enable), + .io_output_regs_write_source(mem2wb_io_output_regs_write_source), + .io_output_regs_write_address(mem2wb_io_output_regs_write_address), + .io_output_memory_read_data(mem2wb_io_output_memory_read_data), + .io_output_csr_read_data(mem2wb_io_output_csr_read_data) + ); + WriteBack wb ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 35:18] + .io_instruction_address(wb_io_instruction_address), + .io_alu_result(wb_io_alu_result), + .io_memory_read_data(wb_io_memory_read_data), + .io_regs_write_source(wb_io_regs_write_source), + .io_csr_read_data(wb_io_csr_read_data), + .io_regs_write_data(wb_io_regs_write_data) + ); + Forwarding forwarding ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 36:26] + .io_rs1_ex(forwarding_io_rs1_ex), + .io_rs2_ex(forwarding_io_rs2_ex), + .io_rd_mem(forwarding_io_rd_mem), + .io_reg_write_enable_mem(forwarding_io_reg_write_enable_mem), + .io_rd_wb(forwarding_io_rd_wb), + .io_reg_write_enable_wb(forwarding_io_reg_write_enable_wb), + .io_aluop1_forward_ex(forwarding_io_aluop1_forward_ex), + .io_aluop2_forward_ex(forwarding_io_aluop2_forward_ex) + ); + CLINT clint ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 37:21] + .clock(clint_clock), + .reset(clint_reset), + .io_interrupt_flag(clint_io_interrupt_flag), + .io_instruction(clint_io_instruction), + .io_instruction_address_if(clint_io_instruction_address_if), + .io_jump_flag(clint_io_jump_flag), + .io_jump_address(clint_io_jump_address), + .io_csr_mtvec(clint_io_csr_mtvec), + .io_csr_mepc(clint_io_csr_mepc), + .io_csr_mstatus(clint_io_csr_mstatus), + .io_interrupt_enable(clint_io_interrupt_enable), + .io_ctrl_stall_flag(clint_io_ctrl_stall_flag), + .io_csr_reg_write_enable(clint_io_csr_reg_write_enable), + .io_csr_reg_write_address(clint_io_csr_reg_write_address), + .io_csr_reg_write_data(clint_io_csr_reg_write_data), + .io_id_interrupt_handler_address(clint_io_id_interrupt_handler_address), + .io_id_interrupt_assert(clint_io_id_interrupt_assert) + ); + CSR csr_regs ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 38:24] + .clock(csr_regs_clock), + .reset(csr_regs_reset), + .io_reg_write_enable_ex(csr_regs_io_reg_write_enable_ex), + .io_reg_read_address_id(csr_regs_io_reg_read_address_id), + .io_reg_write_address_ex(csr_regs_io_reg_write_address_ex), + .io_reg_write_data_ex(csr_regs_io_reg_write_data_ex), + .io_reg_write_enable_clint(csr_regs_io_reg_write_enable_clint), + .io_reg_write_address_clint(csr_regs_io_reg_write_address_clint), + .io_reg_write_data_clint(csr_regs_io_reg_write_data_clint), + .io_interrupt_enable(csr_regs_io_interrupt_enable), + .io_id_reg_data(csr_regs_io_id_reg_data), + .io_clint_csr_mtvec(csr_regs_io_clint_csr_mtvec), + .io_clint_csr_mepc(csr_regs_io_clint_csr_mepc), + .io_clint_csr_mstatus(csr_regs_io_clint_csr_mstatus) + ); + AXI4LiteMaster axi4_master ( // @[src/main/scala/riscv/core/fivestage/CPU.scala 39:27] + .clock(axi4_master_clock), + .reset(axi4_master_reset), + .io_channels_write_address_channel_AWVALID(axi4_master_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(axi4_master_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(axi4_master_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(axi4_master_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(axi4_master_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(axi4_master_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(axi4_master_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(axi4_master_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(axi4_master_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(axi4_master_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(axi4_master_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(axi4_master_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(axi4_master_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(axi4_master_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(axi4_master_io_channels_read_data_channel_RDATA), + .io_channels_read_data_channel_RRESP(axi4_master_io_channels_read_data_channel_RRESP), + .io_bundle_read(axi4_master_io_bundle_read), + .io_bundle_write(axi4_master_io_bundle_write), + .io_bundle_read_data(axi4_master_io_bundle_read_data), + .io_bundle_write_data(axi4_master_io_bundle_write_data), + .io_bundle_write_strobe_0(axi4_master_io_bundle_write_strobe_0), + .io_bundle_write_strobe_1(axi4_master_io_bundle_write_strobe_1), + .io_bundle_write_strobe_2(axi4_master_io_bundle_write_strobe_2), + .io_bundle_write_strobe_3(axi4_master_io_bundle_write_strobe_3), + .io_bundle_address(axi4_master_io_bundle_address), + .io_bundle_busy(axi4_master_io_bundle_busy), + .io_bundle_read_valid(axi4_master_io_bundle_read_valid), + .io_bundle_write_valid(axi4_master_io_bundle_write_valid) + ); + assign io_axi4_channels_write_address_channel_AWVALID = axi4_master_io_channels_write_address_channel_AWVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_write_address_channel_AWADDR = axi4_master_io_channels_write_address_channel_AWADDR; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_write_data_channel_WVALID = axi4_master_io_channels_write_data_channel_WVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_write_data_channel_WDATA = axi4_master_io_channels_write_data_channel_WDATA; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_write_data_channel_WSTRB = axi4_master_io_channels_write_data_channel_WSTRB; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_write_response_channel_BREADY = axi4_master_io_channels_write_response_channel_BREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_read_address_channel_ARVALID = axi4_master_io_channels_read_address_channel_ARVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_read_address_channel_ARADDR = axi4_master_io_channels_read_address_channel_ARADDR; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_axi4_channels_read_data_channel_RREADY = axi4_master_io_channels_read_data_channel_RREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign io_bus_address = mem_granted ? mem_io_bus_address : inst_fetch_io_bus_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 54:20 68:20] + assign ctrl_io_jump_flag = id_io_if_jump_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 89:21] + assign ctrl_io_stall_flag_if = inst_fetch_io_ctrl_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 90:25] + assign ctrl_io_stall_flag_mem = mem_io_ctrl_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 91:26] + assign ctrl_io_stall_flag_clint = clint_io_ctrl_stall_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 92:28] + assign ctrl_io_stall_flag_bus = io_stall_flag_bus; // @[src/main/scala/riscv/core/fivestage/CPU.scala 93:26] + assign ctrl_io_rs1_id = id_io_regs_reg1_read_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 94:18] + assign ctrl_io_rs2_id = id_io_regs_reg2_read_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 95:18] + assign ctrl_io_memory_read_enable_ex = ex2mem_io_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 96:33] + assign ctrl_io_rd_ex = ex2mem_io_regs_write_address[4:0]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 97:17] + assign regs_clock = clock; + assign regs_reset = reset; + assign regs_io_write_enable = mem2wb_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 99:24] + assign regs_io_write_address = mem2wb_io_output_regs_write_address[4:0]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 100:25] + assign regs_io_write_data = wb_io_regs_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 101:22] + assign regs_io_read_address1 = id_io_regs_reg1_read_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 102:25] + assign regs_io_read_address2 = id_io_regs_reg2_read_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 103:25] + assign inst_fetch_clock = clock; + assign inst_fetch_reset = reset; + assign inst_fetch_io_stall_flag_ctrl = ctrl_io_pc_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 108:33] + assign inst_fetch_io_jump_flag_id = id_io_if_jump_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 109:30] + assign inst_fetch_io_jump_address_id = id_io_if_jump_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 110:33] + assign inst_fetch_io_instruction_valid = io_instruction_valid & axi4_master_io_bundle_read_valid & ~mem_granted; // @[src/main/scala/riscv/core/fivestage/CPU.scala 80:95] + assign inst_fetch_io_bus_data = axi4_master_io_bundle_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 81:26] + assign if2id_clock = clock; + assign if2id_reset = reset; + assign if2id_io_stall_flag = ctrl_io_if_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 112:23] + assign if2id_io_flush_enable = ctrl_io_if_flush; // @[src/main/scala/riscv/core/fivestage/CPU.scala 113:25] + assign if2id_io_instruction = inst_fetch_io_id_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 114:24] + assign if2id_io_instruction_address = inst_fetch_io_id_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 115:32] + assign if2id_io_interrupt_flag = io_interrupt_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 116:27] + assign id_io_instruction = if2id_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 120:21] + assign id_io_instruction_address = if2id_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 121:29] + assign id_io_reg1_data = regs_io_read_data1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 118:19] + assign id_io_reg2_data = regs_io_read_data2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 119:19] + assign id_io_interrupt_assert = clint_io_id_interrupt_assert; // @[src/main/scala/riscv/core/fivestage/CPU.scala 122:26] + assign id_io_interrupt_handler_address = clint_io_id_interrupt_handler_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 123:35] + assign id2ex_clock = clock; + assign id2ex_reset = reset; + assign id2ex_io_stall_flag = ctrl_io_id_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 125:23] + assign id2ex_io_flush_enable = ctrl_io_id_flush; // @[src/main/scala/riscv/core/fivestage/CPU.scala 126:25] + assign id2ex_io_instruction = if2id_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 127:24] + assign id2ex_io_instruction_address = if2id_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 128:32] + assign id2ex_io_regs_write_enable = id_io_ex_reg_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 129:30] + assign id2ex_io_regs_write_address = id_io_ex_reg_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 130:31] + assign id2ex_io_regs_write_source = id_io_ex_reg_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 131:30] + assign id2ex_io_reg1_data = regs_io_read_data1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 132:22] + assign id2ex_io_reg2_data = regs_io_read_data2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 133:22] + assign id2ex_io_immediate = id_io_ex_immediate; // @[src/main/scala/riscv/core/fivestage/CPU.scala 134:22] + assign id2ex_io_aluop1_source = id_io_ex_aluop1_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 135:26] + assign id2ex_io_aluop2_source = id_io_ex_aluop2_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 136:26] + assign id2ex_io_csr_write_enable = id_io_ex_csr_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 137:29] + assign id2ex_io_csr_address = id_io_ex_csr_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 138:24] + assign id2ex_io_memory_read_enable = id_io_ex_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 139:31] + assign id2ex_io_memory_write_enable = id_io_ex_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 140:32] + assign id2ex_io_csr_read_data = csr_regs_io_id_reg_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 141:26] + assign ex_io_instruction = id2ex_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 143:21] + assign ex_io_instruction_address = id2ex_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 144:29] + assign ex_io_reg1_data = id2ex_io_output_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 145:19] + assign ex_io_reg2_data = id2ex_io_output_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 146:19] + assign ex_io_immediate = id2ex_io_output_immediate; // @[src/main/scala/riscv/core/fivestage/CPU.scala 147:19] + assign ex_io_aluop1_source = id2ex_io_output_aluop1_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 148:23] + assign ex_io_aluop2_source = id2ex_io_output_aluop2_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 149:23] + assign ex_io_csr_read_data = id2ex_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 150:23] + assign ex_io_forward_from_mem = mem_io_forward_to_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 151:26] + assign ex_io_forward_from_wb = wb_io_regs_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 152:25] + assign ex_io_aluop1_forward = forwarding_io_aluop1_forward_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 153:24] + assign ex_io_aluop2_forward = forwarding_io_aluop2_forward_ex; // @[src/main/scala/riscv/core/fivestage/CPU.scala 154:24] + assign ex2mem_clock = clock; + assign ex2mem_reset = reset; + assign ex2mem_io_stall_flag = ctrl_io_ex_stall; // @[src/main/scala/riscv/core/fivestage/CPU.scala 156:24] + assign ex2mem_io_regs_write_enable = id2ex_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 158:31] + assign ex2mem_io_regs_write_source = id2ex_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 159:31] + assign ex2mem_io_regs_write_address = {{27'd0}, id2ex_io_output_regs_write_address}; // @[src/main/scala/riscv/core/fivestage/CPU.scala 160:32] + assign ex2mem_io_instruction_address = id2ex_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 161:33] + assign ex2mem_io_instruction = id2ex_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 162:25] + assign ex2mem_io_reg1_data = id2ex_io_output_reg1_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 163:23] + assign ex2mem_io_reg2_data = id2ex_io_output_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 164:23] + assign ex2mem_io_memory_read_enable = id2ex_io_output_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 165:32] + assign ex2mem_io_memory_write_enable = id2ex_io_output_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 166:33] + assign ex2mem_io_alu_result = ex_io_mem_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 167:24] + assign ex2mem_io_csr_read_data = id2ex_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 168:27] + assign mem_clock = clock; + assign mem_reset = reset; + assign mem_io_alu_result = ex2mem_io_output_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 170:21] + assign mem_io_reg2_data = ex2mem_io_output_reg2_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 171:20] + assign mem_io_memory_read_enable = ex2mem_io_output_memory_read_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 172:29] + assign mem_io_memory_write_enable = ex2mem_io_output_memory_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 173:30] + assign mem_io_funct3 = ex2mem_io_output_instruction[14:12]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 174:48] + assign mem_io_regs_write_source = ex2mem_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 175:28] + assign mem_io_csr_read_data = ex2mem_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 176:24] + assign mem_io_bus_read_data = axi4_master_io_bundle_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 83:24] + assign mem_io_bus_read_valid = axi4_master_io_bundle_read_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 84:25] + assign mem_io_bus_write_valid = axi4_master_io_bundle_write_valid; // @[src/main/scala/riscv/core/fivestage/CPU.scala 85:26] + assign mem_io_bus_granted = mem_granted; // @[src/main/scala/riscv/core/fivestage/CPU.scala 87:22] + assign mem2wb_clock = clock; + assign mem2wb_reset = reset; + assign mem2wb_io_instruction_address = ex2mem_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 178:33] + assign mem2wb_io_alu_result = ex2mem_io_output_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 179:24] + assign mem2wb_io_regs_write_enable = ex2mem_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 180:31] + assign mem2wb_io_regs_write_source = ex2mem_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 181:31] + assign mem2wb_io_regs_write_address = ex2mem_io_output_regs_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 182:32] + assign mem2wb_io_memory_read_data = mem_io_wb_memory_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 183:30] + assign mem2wb_io_csr_read_data = ex2mem_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 184:27] + assign wb_io_instruction_address = mem2wb_io_output_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 186:29] + assign wb_io_alu_result = mem2wb_io_output_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 187:20] + assign wb_io_memory_read_data = mem2wb_io_output_memory_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 188:26] + assign wb_io_regs_write_source = mem2wb_io_output_regs_write_source; // @[src/main/scala/riscv/core/fivestage/CPU.scala 189:27] + assign wb_io_csr_read_data = mem2wb_io_output_csr_read_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 190:23] + assign forwarding_io_rs1_ex = id2ex_io_output_instruction[19:15]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 192:54] + assign forwarding_io_rs2_ex = id2ex_io_output_instruction[24:20]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 193:54] + assign forwarding_io_rd_mem = ex2mem_io_output_regs_write_address[4:0]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 194:24] + assign forwarding_io_reg_write_enable_mem = ex2mem_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 195:38] + assign forwarding_io_rd_wb = mem2wb_io_output_regs_write_address[4:0]; // @[src/main/scala/riscv/core/fivestage/CPU.scala 196:23] + assign forwarding_io_reg_write_enable_wb = mem2wb_io_output_regs_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 197:37] + assign clint_clock = clock; + assign clint_reset = reset; + assign clint_io_interrupt_flag = if2id_io_output_interrupt_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 207:27] + assign clint_io_instruction = if2id_io_output_instruction; // @[src/main/scala/riscv/core/fivestage/CPU.scala 199:24] + assign clint_io_instruction_address_if = inst_fetch_io_id_instruction_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 200:35] + assign clint_io_jump_flag = id_io_if_jump_flag; // @[src/main/scala/riscv/core/fivestage/CPU.scala 201:22] + assign clint_io_jump_address = ex2mem_io_output_alu_result; // @[src/main/scala/riscv/core/fivestage/CPU.scala 202:25] + assign clint_io_csr_mtvec = csr_regs_io_clint_csr_mtvec; // @[src/main/scala/riscv/core/fivestage/CPU.scala 204:22] + assign clint_io_csr_mepc = csr_regs_io_clint_csr_mepc; // @[src/main/scala/riscv/core/fivestage/CPU.scala 203:21] + assign clint_io_csr_mstatus = csr_regs_io_clint_csr_mstatus; // @[src/main/scala/riscv/core/fivestage/CPU.scala 205:24] + assign clint_io_interrupt_enable = csr_regs_io_interrupt_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 206:29] + assign csr_regs_clock = clock; + assign csr_regs_reset = reset; + assign csr_regs_io_reg_write_enable_ex = id2ex_io_output_csr_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 209:35] + assign csr_regs_io_reg_read_address_id = id_io_ex_csr_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 212:35] + assign csr_regs_io_reg_write_address_ex = id2ex_io_output_csr_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 210:36] + assign csr_regs_io_reg_write_data_ex = ex_io_csr_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 211:33] + assign csr_regs_io_reg_write_enable_clint = clint_io_csr_reg_write_enable; // @[src/main/scala/riscv/core/fivestage/CPU.scala 213:38] + assign csr_regs_io_reg_write_address_clint = clint_io_csr_reg_write_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 214:39] + assign csr_regs_io_reg_write_data_clint = clint_io_csr_reg_write_data; // @[src/main/scala/riscv/core/fivestage/CPU.scala 215:36] + assign axi4_master_clock = clock; + assign axi4_master_reset = reset; + assign axi4_master_io_channels_write_address_channel_AWREADY = io_axi4_channels_write_address_channel_AWREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_channels_write_data_channel_WREADY = io_axi4_channels_write_data_channel_WREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_channels_write_response_channel_BVALID = io_axi4_channels_write_response_channel_BVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_channels_read_address_channel_ARREADY = io_axi4_channels_read_address_channel_ARREADY; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_channels_read_data_channel_RVALID = io_axi4_channels_read_data_channel_RVALID; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_channels_read_data_channel_RDATA = io_axi4_channels_read_data_channel_RDATA; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_channels_read_data_channel_RRESP = 2'h0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 41:27] + assign axi4_master_io_bundle_read = mem_granted ? mem_io_bus_read : ~axi4_master_io_bundle_busy & ~ + axi4_master_io_bundle_read_valid & _T; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 55:32 66:32] + assign axi4_master_io_bundle_write = mem_granted & mem_io_bus_write; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 57:33 69:33] + assign axi4_master_io_bundle_write_data = mem_granted ? mem_io_bus_write_data : 32'h0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 58:38 70:38] + assign axi4_master_io_bundle_write_strobe_0 = mem_granted & mem_io_bus_write_strobe_0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 59:40 71:40] + assign axi4_master_io_bundle_write_strobe_1 = mem_granted & mem_io_bus_write_strobe_1; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 59:40 71:40] + assign axi4_master_io_bundle_write_strobe_2 = mem_granted & mem_io_bus_write_strobe_2; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 59:40 71:40] + assign axi4_master_io_bundle_write_strobe_3 = mem_granted & mem_io_bus_write_strobe_3; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 59:40 71:40] + assign axi4_master_io_bundle_address = mem_granted ? mem_io_bus_address : inst_fetch_io_bus_address; // @[src/main/scala/riscv/core/fivestage/CPU.scala 52:21 54:20 68:20] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/riscv/core/fivestage/CPU.scala 51:28] + mem_granted <= 1'h0; // @[src/main/scala/riscv/core/fivestage/CPU.scala 51:28] + end else if (mem_io_bus_request) begin // @[src/main/scala/riscv/core/fivestage/CPU.scala 74:28] + mem_granted <= _GEN_10; + end else begin + mem_granted <= _GEN_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}}; + mem_granted = _RAND_0[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module CPU_1( + input clock, + input reset, + output io_axi4_channels_write_address_channel_AWVALID, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_axi4_channels_write_address_channel_AWREADY, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output [31:0] io_axi4_channels_write_address_channel_AWADDR, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output io_axi4_channels_write_data_channel_WVALID, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_axi4_channels_write_data_channel_WREADY, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output [31:0] io_axi4_channels_write_data_channel_WDATA, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output [3:0] io_axi4_channels_write_data_channel_WSTRB, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_axi4_channels_write_response_channel_BVALID, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output io_axi4_channels_write_response_channel_BREADY, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output io_axi4_channels_read_address_channel_ARVALID, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_axi4_channels_read_address_channel_ARREADY, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output [31:0] io_axi4_channels_read_address_channel_ARADDR, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_axi4_channels_read_data_channel_RVALID, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output io_axi4_channels_read_data_channel_RREADY, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input [31:0] io_axi4_channels_read_data_channel_RDATA, // @[src/main/scala/riscv/core/CPU.scala 23:14] + output [31:0] io_bus_address, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input [31:0] io_interrupt_flag, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_stall_flag_bus, // @[src/main/scala/riscv/core/CPU.scala 23:14] + input io_instruction_valid // @[src/main/scala/riscv/core/CPU.scala 23:14] +); + wire cpu_clock; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_reset; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_write_address_channel_AWVALID; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_write_address_channel_AWREADY; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [31:0] cpu_io_axi4_channels_write_address_channel_AWADDR; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_write_data_channel_WVALID; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_write_data_channel_WREADY; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [31:0] cpu_io_axi4_channels_write_data_channel_WDATA; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [3:0] cpu_io_axi4_channels_write_data_channel_WSTRB; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_write_response_channel_BVALID; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_write_response_channel_BREADY; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_read_address_channel_ARVALID; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_read_address_channel_ARREADY; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [31:0] cpu_io_axi4_channels_read_address_channel_ARADDR; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_read_data_channel_RVALID; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_axi4_channels_read_data_channel_RREADY; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [31:0] cpu_io_axi4_channels_read_data_channel_RDATA; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [31:0] cpu_io_bus_address; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire [31:0] cpu_io_interrupt_flag; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_stall_flag_bus; // @[src/main/scala/riscv/core/CPU.scala 29:23] + wire cpu_io_instruction_valid; // @[src/main/scala/riscv/core/CPU.scala 29:23] + CPU cpu ( // @[src/main/scala/riscv/core/CPU.scala 29:23] + .clock(cpu_clock), + .reset(cpu_reset), + .io_axi4_channels_write_address_channel_AWVALID(cpu_io_axi4_channels_write_address_channel_AWVALID), + .io_axi4_channels_write_address_channel_AWREADY(cpu_io_axi4_channels_write_address_channel_AWREADY), + .io_axi4_channels_write_address_channel_AWADDR(cpu_io_axi4_channels_write_address_channel_AWADDR), + .io_axi4_channels_write_data_channel_WVALID(cpu_io_axi4_channels_write_data_channel_WVALID), + .io_axi4_channels_write_data_channel_WREADY(cpu_io_axi4_channels_write_data_channel_WREADY), + .io_axi4_channels_write_data_channel_WDATA(cpu_io_axi4_channels_write_data_channel_WDATA), + .io_axi4_channels_write_data_channel_WSTRB(cpu_io_axi4_channels_write_data_channel_WSTRB), + .io_axi4_channels_write_response_channel_BVALID(cpu_io_axi4_channels_write_response_channel_BVALID), + .io_axi4_channels_write_response_channel_BREADY(cpu_io_axi4_channels_write_response_channel_BREADY), + .io_axi4_channels_read_address_channel_ARVALID(cpu_io_axi4_channels_read_address_channel_ARVALID), + .io_axi4_channels_read_address_channel_ARREADY(cpu_io_axi4_channels_read_address_channel_ARREADY), + .io_axi4_channels_read_address_channel_ARADDR(cpu_io_axi4_channels_read_address_channel_ARADDR), + .io_axi4_channels_read_data_channel_RVALID(cpu_io_axi4_channels_read_data_channel_RVALID), + .io_axi4_channels_read_data_channel_RREADY(cpu_io_axi4_channels_read_data_channel_RREADY), + .io_axi4_channels_read_data_channel_RDATA(cpu_io_axi4_channels_read_data_channel_RDATA), + .io_bus_address(cpu_io_bus_address), + .io_interrupt_flag(cpu_io_interrupt_flag), + .io_stall_flag_bus(cpu_io_stall_flag_bus), + .io_instruction_valid(cpu_io_instruction_valid) + ); + assign io_axi4_channels_write_address_channel_AWVALID = cpu_io_axi4_channels_write_address_channel_AWVALID; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_write_address_channel_AWADDR = cpu_io_axi4_channels_write_address_channel_AWADDR; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_write_data_channel_WVALID = cpu_io_axi4_channels_write_data_channel_WVALID; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_write_data_channel_WDATA = cpu_io_axi4_channels_write_data_channel_WDATA; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_write_data_channel_WSTRB = cpu_io_axi4_channels_write_data_channel_WSTRB; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_write_response_channel_BREADY = cpu_io_axi4_channels_write_response_channel_BREADY; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_read_address_channel_ARVALID = cpu_io_axi4_channels_read_address_channel_ARVALID; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_read_address_channel_ARADDR = cpu_io_axi4_channels_read_address_channel_ARADDR; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_axi4_channels_read_data_channel_RREADY = cpu_io_axi4_channels_read_data_channel_RREADY; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign io_bus_address = cpu_io_bus_address; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_clock = clock; + assign cpu_reset = reset; + assign cpu_io_axi4_channels_write_address_channel_AWREADY = io_axi4_channels_write_address_channel_AWREADY; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_axi4_channels_write_data_channel_WREADY = io_axi4_channels_write_data_channel_WREADY; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_axi4_channels_write_response_channel_BVALID = io_axi4_channels_write_response_channel_BVALID; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_axi4_channels_read_address_channel_ARREADY = io_axi4_channels_read_address_channel_ARREADY; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_axi4_channels_read_data_channel_RVALID = io_axi4_channels_read_data_channel_RVALID; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_axi4_channels_read_data_channel_RDATA = io_axi4_channels_read_data_channel_RDATA; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_interrupt_flag = io_interrupt_flag; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_stall_flag_bus = io_stall_flag_bus; // @[src/main/scala/riscv/core/CPU.scala 30:14] + assign cpu_io_instruction_valid = io_instruction_valid; // @[src/main/scala/riscv/core/CPU.scala 30:14] +endmodule +module BlockRAM( + input clock, + input [31:0] io_read_address, // @[src/main/scala/peripheral/Memory.scala 24:14] + input [31:0] io_write_address, // @[src/main/scala/peripheral/Memory.scala 24:14] + input [31:0] io_write_data, // @[src/main/scala/peripheral/Memory.scala 24:14] + input io_write_enable, // @[src/main/scala/peripheral/Memory.scala 24:14] + input io_write_strobe_0, // @[src/main/scala/peripheral/Memory.scala 24:14] + input io_write_strobe_1, // @[src/main/scala/peripheral/Memory.scala 24:14] + input io_write_strobe_2, // @[src/main/scala/peripheral/Memory.scala 24:14] + input io_write_strobe_3, // @[src/main/scala/peripheral/Memory.scala 24:14] + output [31:0] io_read_data // @[src/main/scala/peripheral/Memory.scala 24:14] +); +`ifdef RANDOMIZE_MEM_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_5; + reg [31:0] _RAND_10; + reg [31:0] _RAND_15; +`endif // RANDOMIZE_MEM_INIT +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; + reg [31:0] _RAND_3; + reg [31:0] _RAND_4; + reg [31:0] _RAND_6; + reg [31:0] _RAND_7; + reg [31:0] _RAND_8; + reg [31:0] _RAND_9; + reg [31:0] _RAND_11; + reg [31:0] _RAND_12; + reg [31:0] _RAND_13; + reg [31:0] _RAND_14; + reg [31:0] _RAND_16; + reg [31:0] _RAND_17; + reg [31:0] _RAND_18; + reg [31:0] _RAND_19; +`endif // RANDOMIZE_REG_INIT + reg [7:0] mem_0 [0:8191]; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_0_io_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_0_io_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_0_io_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_0_io_debug_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_0_io_debug_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_0_io_debug_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_0_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_0_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_0_MPORT_mask; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_0_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + reg mem_0_io_read_data_MPORT_en_pipe_0; + reg [12:0] mem_0_io_read_data_MPORT_addr_pipe_0; + reg mem_0_io_debug_read_data_MPORT_en_pipe_0; + reg [12:0] mem_0_io_debug_read_data_MPORT_addr_pipe_0; + reg [7:0] mem_1 [0:8191]; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_1_io_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_1_io_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_1_io_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_1_io_debug_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_1_io_debug_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_1_io_debug_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_1_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_1_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_1_MPORT_mask; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_1_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + reg mem_1_io_read_data_MPORT_en_pipe_0; + reg [12:0] mem_1_io_read_data_MPORT_addr_pipe_0; + reg mem_1_io_debug_read_data_MPORT_en_pipe_0; + reg [12:0] mem_1_io_debug_read_data_MPORT_addr_pipe_0; + reg [7:0] mem_2 [0:8191]; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_2_io_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_2_io_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_2_io_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_2_io_debug_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_2_io_debug_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_2_io_debug_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_2_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_2_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_2_MPORT_mask; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_2_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + reg mem_2_io_read_data_MPORT_en_pipe_0; + reg [12:0] mem_2_io_read_data_MPORT_addr_pipe_0; + reg mem_2_io_debug_read_data_MPORT_en_pipe_0; + reg [12:0] mem_2_io_debug_read_data_MPORT_addr_pipe_0; + reg [7:0] mem_3 [0:8191]; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_3_io_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_3_io_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_3_io_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_3_io_debug_read_data_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_3_io_debug_read_data_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_3_io_debug_read_data_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [7:0] mem_3_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire [12:0] mem_3_MPORT_addr; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_3_MPORT_mask; // @[src/main/scala/peripheral/Memory.scala 36:24] + wire mem_3_MPORT_en; // @[src/main/scala/peripheral/Memory.scala 36:24] + reg mem_3_io_read_data_MPORT_en_pipe_0; + reg [12:0] mem_3_io_read_data_MPORT_addr_pipe_0; + reg mem_3_io_debug_read_data_MPORT_en_pipe_0; + reg [12:0] mem_3_io_debug_read_data_MPORT_addr_pipe_0; + wire [31:0] _T = {{2'd0}, io_write_address[31:2]}; // @[src/main/scala/peripheral/Memory.scala 42:33] + wire [31:0] _io_read_data_T = {{2'd0}, io_read_address[31:2]}; // @[src/main/scala/peripheral/Memory.scala 44:45] + wire [15:0] io_read_data_lo = {mem_1_io_read_data_MPORT_data,mem_0_io_read_data_MPORT_data}; // @[src/main/scala/peripheral/Memory.scala 44:69] + wire [15:0] io_read_data_hi = {mem_3_io_read_data_MPORT_data,mem_2_io_read_data_MPORT_data}; // @[src/main/scala/peripheral/Memory.scala 44:69] + assign mem_0_io_read_data_MPORT_en = mem_0_io_read_data_MPORT_en_pipe_0; + assign mem_0_io_read_data_MPORT_addr = mem_0_io_read_data_MPORT_addr_pipe_0; + assign mem_0_io_read_data_MPORT_data = mem_0[mem_0_io_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_0_io_debug_read_data_MPORT_en = mem_0_io_debug_read_data_MPORT_en_pipe_0; + assign mem_0_io_debug_read_data_MPORT_addr = mem_0_io_debug_read_data_MPORT_addr_pipe_0; + assign mem_0_io_debug_read_data_MPORT_data = mem_0[mem_0_io_debug_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_0_MPORT_data = io_write_data[7:0]; + assign mem_0_MPORT_addr = _T[12:0]; + assign mem_0_MPORT_mask = io_write_strobe_0; + assign mem_0_MPORT_en = io_write_enable; + assign mem_1_io_read_data_MPORT_en = mem_1_io_read_data_MPORT_en_pipe_0; + assign mem_1_io_read_data_MPORT_addr = mem_1_io_read_data_MPORT_addr_pipe_0; + assign mem_1_io_read_data_MPORT_data = mem_1[mem_1_io_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_1_io_debug_read_data_MPORT_en = mem_1_io_debug_read_data_MPORT_en_pipe_0; + assign mem_1_io_debug_read_data_MPORT_addr = mem_1_io_debug_read_data_MPORT_addr_pipe_0; + assign mem_1_io_debug_read_data_MPORT_data = mem_1[mem_1_io_debug_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_1_MPORT_data = io_write_data[15:8]; + assign mem_1_MPORT_addr = _T[12:0]; + assign mem_1_MPORT_mask = io_write_strobe_1; + assign mem_1_MPORT_en = io_write_enable; + assign mem_2_io_read_data_MPORT_en = mem_2_io_read_data_MPORT_en_pipe_0; + assign mem_2_io_read_data_MPORT_addr = mem_2_io_read_data_MPORT_addr_pipe_0; + assign mem_2_io_read_data_MPORT_data = mem_2[mem_2_io_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_2_io_debug_read_data_MPORT_en = mem_2_io_debug_read_data_MPORT_en_pipe_0; + assign mem_2_io_debug_read_data_MPORT_addr = mem_2_io_debug_read_data_MPORT_addr_pipe_0; + assign mem_2_io_debug_read_data_MPORT_data = mem_2[mem_2_io_debug_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_2_MPORT_data = io_write_data[23:16]; + assign mem_2_MPORT_addr = _T[12:0]; + assign mem_2_MPORT_mask = io_write_strobe_2; + assign mem_2_MPORT_en = io_write_enable; + assign mem_3_io_read_data_MPORT_en = mem_3_io_read_data_MPORT_en_pipe_0; + assign mem_3_io_read_data_MPORT_addr = mem_3_io_read_data_MPORT_addr_pipe_0; + assign mem_3_io_read_data_MPORT_data = mem_3[mem_3_io_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_3_io_debug_read_data_MPORT_en = mem_3_io_debug_read_data_MPORT_en_pipe_0; + assign mem_3_io_debug_read_data_MPORT_addr = mem_3_io_debug_read_data_MPORT_addr_pipe_0; + assign mem_3_io_debug_read_data_MPORT_data = mem_3[mem_3_io_debug_read_data_MPORT_addr]; // @[src/main/scala/peripheral/Memory.scala 36:24] + assign mem_3_MPORT_data = io_write_data[31:24]; + assign mem_3_MPORT_addr = _T[12:0]; + assign mem_3_MPORT_mask = io_write_strobe_3; + assign mem_3_MPORT_en = io_write_enable; + assign io_read_data = {io_read_data_hi,io_read_data_lo}; // @[src/main/scala/peripheral/Memory.scala 44:69] + always @(posedge clock) begin + if (mem_0_MPORT_en & mem_0_MPORT_mask) begin + mem_0[mem_0_MPORT_addr] <= mem_0_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + end + mem_0_io_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_0_io_read_data_MPORT_addr_pipe_0 <= _io_read_data_T[12:0]; + end + mem_0_io_debug_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_0_io_debug_read_data_MPORT_addr_pipe_0 <= 13'h0; + end + if (mem_1_MPORT_en & mem_1_MPORT_mask) begin + mem_1[mem_1_MPORT_addr] <= mem_1_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + end + mem_1_io_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_1_io_read_data_MPORT_addr_pipe_0 <= _io_read_data_T[12:0]; + end + mem_1_io_debug_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_1_io_debug_read_data_MPORT_addr_pipe_0 <= 13'h0; + end + if (mem_2_MPORT_en & mem_2_MPORT_mask) begin + mem_2[mem_2_MPORT_addr] <= mem_2_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + end + mem_2_io_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_2_io_read_data_MPORT_addr_pipe_0 <= _io_read_data_T[12:0]; + end + mem_2_io_debug_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_2_io_debug_read_data_MPORT_addr_pipe_0 <= 13'h0; + end + if (mem_3_MPORT_en & mem_3_MPORT_mask) begin + mem_3[mem_3_MPORT_addr] <= mem_3_MPORT_data; // @[src/main/scala/peripheral/Memory.scala 36:24] + end + mem_3_io_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_3_io_read_data_MPORT_addr_pipe_0 <= _io_read_data_T[12:0]; + end + mem_3_io_debug_read_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_3_io_debug_read_data_MPORT_addr_pipe_0 <= 13'h0; + 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 < 8192; initvar = initvar+1) + mem_0[initvar] = _RAND_0[7:0]; + _RAND_5 = {1{`RANDOM}}; + for (initvar = 0; initvar < 8192; initvar = initvar+1) + mem_1[initvar] = _RAND_5[7:0]; + _RAND_10 = {1{`RANDOM}}; + for (initvar = 0; initvar < 8192; initvar = initvar+1) + mem_2[initvar] = _RAND_10[7:0]; + _RAND_15 = {1{`RANDOM}}; + for (initvar = 0; initvar < 8192; initvar = initvar+1) + mem_3[initvar] = _RAND_15[7:0]; +`endif // RANDOMIZE_MEM_INIT +`ifdef RANDOMIZE_REG_INIT + _RAND_1 = {1{`RANDOM}}; + mem_0_io_read_data_MPORT_en_pipe_0 = _RAND_1[0:0]; + _RAND_2 = {1{`RANDOM}}; + mem_0_io_read_data_MPORT_addr_pipe_0 = _RAND_2[12:0]; + _RAND_3 = {1{`RANDOM}}; + mem_0_io_debug_read_data_MPORT_en_pipe_0 = _RAND_3[0:0]; + _RAND_4 = {1{`RANDOM}}; + mem_0_io_debug_read_data_MPORT_addr_pipe_0 = _RAND_4[12:0]; + _RAND_6 = {1{`RANDOM}}; + mem_1_io_read_data_MPORT_en_pipe_0 = _RAND_6[0:0]; + _RAND_7 = {1{`RANDOM}}; + mem_1_io_read_data_MPORT_addr_pipe_0 = _RAND_7[12:0]; + _RAND_8 = {1{`RANDOM}}; + mem_1_io_debug_read_data_MPORT_en_pipe_0 = _RAND_8[0:0]; + _RAND_9 = {1{`RANDOM}}; + mem_1_io_debug_read_data_MPORT_addr_pipe_0 = _RAND_9[12:0]; + _RAND_11 = {1{`RANDOM}}; + mem_2_io_read_data_MPORT_en_pipe_0 = _RAND_11[0:0]; + _RAND_12 = {1{`RANDOM}}; + mem_2_io_read_data_MPORT_addr_pipe_0 = _RAND_12[12:0]; + _RAND_13 = {1{`RANDOM}}; + mem_2_io_debug_read_data_MPORT_en_pipe_0 = _RAND_13[0:0]; + _RAND_14 = {1{`RANDOM}}; + mem_2_io_debug_read_data_MPORT_addr_pipe_0 = _RAND_14[12:0]; + _RAND_16 = {1{`RANDOM}}; + mem_3_io_read_data_MPORT_en_pipe_0 = _RAND_16[0:0]; + _RAND_17 = {1{`RANDOM}}; + mem_3_io_read_data_MPORT_addr_pipe_0 = _RAND_17[12:0]; + _RAND_18 = {1{`RANDOM}}; + mem_3_io_debug_read_data_MPORT_en_pipe_0 = _RAND_18[0:0]; + _RAND_19 = {1{`RANDOM}}; + mem_3_io_debug_read_data_MPORT_addr_pipe_0 = _RAND_19[12:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module AXI4LiteSlave_1( + input clock, + input reset, + input io_channels_write_address_channel_AWVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_write_address_channel_AWREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [31:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_write_data_channel_WVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_write_data_channel_WREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [3:0] io_channels_write_data_channel_WSTRB, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_write_response_channel_BVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_write_response_channel_BREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_read_address_channel_ARVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_read_address_channel_ARREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [31:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_channels_read_data_channel_RVALID, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input io_channels_read_data_channel_RREADY, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output [31:0] io_channels_read_data_channel_RDATA, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_write, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + input [31:0] io_bundle_read_data, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output [31:0] io_bundle_write_data, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_write_strobe_0, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_write_strobe_1, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_write_strobe_2, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output io_bundle_write_strobe_3, // @[src/main/scala/bus/AXI4Lite.scala 121:14] + output [31:0] io_bundle_address // @[src/main/scala/bus/AXI4Lite.scala 121:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [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 + reg [2:0] state; // @[src/main/scala/bus/AXI4Lite.scala 125:22] + reg [31:0] addr; // @[src/main/scala/bus/AXI4Lite.scala 126:21] + reg write; // @[src/main/scala/bus/AXI4Lite.scala 130:22] + reg [31:0] write_data; // @[src/main/scala/bus/AXI4Lite.scala 132:27] + reg write_strobe_0; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + reg write_strobe_1; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + reg write_strobe_2; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + reg write_strobe_3; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + reg ARREADY; // @[src/main/scala/bus/AXI4Lite.scala 137:24] + reg RVALID; // @[src/main/scala/bus/AXI4Lite.scala 139:23] + reg AWREADY; // @[src/main/scala/bus/AXI4Lite.scala 146:24] + reg WREADY; // @[src/main/scala/bus/AXI4Lite.scala 148:23] + reg BVALID; // @[src/main/scala/bus/AXI4Lite.scala 151:23] + wire [2:0] _GEN_6 = io_channels_read_data_channel_RREADY & RVALID ? 3'h0 : state; // @[src/main/scala/bus/AXI4Lite.scala 179:60 180:15 125:22] + wire _GEN_7 = io_channels_read_data_channel_RREADY & RVALID ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 178:14 179:60 181:16] + wire [31:0] _GEN_8 = io_channels_write_address_channel_AWVALID & AWREADY ? io_channels_write_address_channel_AWADDR : + addr; // @[src/main/scala/bus/AXI4Lite.scala 186:66 187:14 126:21] + wire [2:0] _GEN_9 = io_channels_write_address_channel_AWVALID & AWREADY ? 3'h4 : state; // @[src/main/scala/bus/AXI4Lite.scala 186:66 188:15 125:22] + wire _GEN_10 = io_channels_write_address_channel_AWVALID & AWREADY ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 185:15 186:66 189:17] + wire [2:0] _GEN_11 = io_channels_write_data_channel_WVALID & WREADY ? 3'h5 : state; // @[src/main/scala/bus/AXI4Lite.scala 194:61 195:15 125:22] + wire _GEN_13 = io_channels_write_data_channel_WVALID & WREADY ? io_channels_write_data_channel_WSTRB[0] : + write_strobe_0; // @[src/main/scala/bus/AXI4Lite.scala 194:61 197:22 134:29] + wire _GEN_14 = io_channels_write_data_channel_WVALID & WREADY ? io_channels_write_data_channel_WSTRB[1] : + write_strobe_1; // @[src/main/scala/bus/AXI4Lite.scala 194:61 197:22 134:29] + wire _GEN_15 = io_channels_write_data_channel_WVALID & WREADY ? io_channels_write_data_channel_WSTRB[2] : + write_strobe_2; // @[src/main/scala/bus/AXI4Lite.scala 194:61 197:22 134:29] + wire _GEN_16 = io_channels_write_data_channel_WVALID & WREADY ? io_channels_write_data_channel_WSTRB[3] : + write_strobe_3; // @[src/main/scala/bus/AXI4Lite.scala 194:61 197:22 134:29] + wire _GEN_17 = io_channels_write_data_channel_WVALID & WREADY | write; // @[src/main/scala/bus/AXI4Lite.scala 194:61 198:15 130:22] + wire _GEN_18 = io_channels_write_data_channel_WVALID & WREADY ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 193:14 194:61 199:16] + wire [2:0] _GEN_19 = io_channels_write_response_channel_BREADY & BVALID ? 3'h0 : state; // @[src/main/scala/bus/AXI4Lite.scala 205:65 206:15 125:22] + wire _GEN_20 = io_channels_write_response_channel_BREADY & BVALID ? 1'h0 : write; // @[src/main/scala/bus/AXI4Lite.scala 205:65 207:15 130:22] + wire _GEN_21 = io_channels_write_response_channel_BREADY & BVALID ? 1'h0 : 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 204:14 205:65 208:16] + wire _GEN_22 = 3'h5 == state ? 1'h0 : WREADY; // @[src/main/scala/bus/AXI4Lite.scala 156:17 203:14 148:23] + wire _GEN_23 = 3'h5 == state ? _GEN_21 : BVALID; // @[src/main/scala/bus/AXI4Lite.scala 156:17 151:23] + wire [2:0] _GEN_24 = 3'h5 == state ? _GEN_19 : state; // @[src/main/scala/bus/AXI4Lite.scala 156:17 125:22] + wire _GEN_25 = 3'h5 == state ? _GEN_20 : write; // @[src/main/scala/bus/AXI4Lite.scala 156:17 130:22] + wire _GEN_26 = 3'h4 == state ? _GEN_18 : _GEN_22; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire [2:0] _GEN_27 = 3'h4 == state ? _GEN_11 : _GEN_24; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire _GEN_29 = 3'h4 == state ? _GEN_13 : write_strobe_0; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_30 = 3'h4 == state ? _GEN_14 : write_strobe_1; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_31 = 3'h4 == state ? _GEN_15 : write_strobe_2; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_32 = 3'h4 == state ? _GEN_16 : write_strobe_3; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_33 = 3'h4 == state ? _GEN_17 : _GEN_25; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire _GEN_34 = 3'h4 == state ? BVALID : _GEN_23; // @[src/main/scala/bus/AXI4Lite.scala 156:17 151:23] + wire _GEN_35 = 3'h3 == state ? _GEN_10 : AWREADY; // @[src/main/scala/bus/AXI4Lite.scala 156:17 146:24] + wire [31:0] _GEN_36 = 3'h3 == state ? _GEN_8 : addr; // @[src/main/scala/bus/AXI4Lite.scala 156:17 126:21] + wire [2:0] _GEN_37 = 3'h3 == state ? _GEN_9 : _GEN_27; // @[src/main/scala/bus/AXI4Lite.scala 156:17] + wire _GEN_38 = 3'h3 == state ? WREADY : _GEN_26; // @[src/main/scala/bus/AXI4Lite.scala 156:17 148:23] + wire _GEN_40 = 3'h3 == state ? write_strobe_0 : _GEN_29; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_41 = 3'h3 == state ? write_strobe_1 : _GEN_30; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_42 = 3'h3 == state ? write_strobe_2 : _GEN_31; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_43 = 3'h3 == state ? write_strobe_3 : _GEN_32; // @[src/main/scala/bus/AXI4Lite.scala 156:17 134:29] + wire _GEN_44 = 3'h3 == state ? write : _GEN_33; // @[src/main/scala/bus/AXI4Lite.scala 156:17 130:22] + wire _GEN_45 = 3'h3 == state ? BVALID : _GEN_34; // @[src/main/scala/bus/AXI4Lite.scala 156:17 151:23] + assign io_channels_write_address_channel_AWREADY = AWREADY; // @[src/main/scala/bus/AXI4Lite.scala 147:45] + assign io_channels_write_data_channel_WREADY = WREADY; // @[src/main/scala/bus/AXI4Lite.scala 149:41] + assign io_channels_write_response_channel_BVALID = BVALID; // @[src/main/scala/bus/AXI4Lite.scala 152:45] + assign io_channels_read_address_channel_ARREADY = ARREADY; // @[src/main/scala/bus/AXI4Lite.scala 138:44] + assign io_channels_read_data_channel_RVALID = RVALID; // @[src/main/scala/bus/AXI4Lite.scala 140:40] + assign io_channels_read_data_channel_RDATA = io_bundle_read_data; // @[src/main/scala/bus/AXI4Lite.scala 144:39] + assign io_bundle_write = write; // @[src/main/scala/bus/AXI4Lite.scala 131:19] + assign io_bundle_write_data = write_data; // @[src/main/scala/bus/AXI4Lite.scala 133:24] + assign io_bundle_write_strobe_0 = write_strobe_0; // @[src/main/scala/bus/AXI4Lite.scala 135:26] + assign io_bundle_write_strobe_1 = write_strobe_1; // @[src/main/scala/bus/AXI4Lite.scala 135:26] + assign io_bundle_write_strobe_2 = write_strobe_2; // @[src/main/scala/bus/AXI4Lite.scala 135:26] + assign io_bundle_write_strobe_3 = write_strobe_3; // @[src/main/scala/bus/AXI4Lite.scala 135:26] + assign io_bundle_address = addr; // @[src/main/scala/bus/AXI4Lite.scala 127:21] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 125:22] + state <= 3'h0; // @[src/main/scala/bus/AXI4Lite.scala 125:22] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_write_address_channel_AWVALID) begin // @[src/main/scala/bus/AXI4Lite.scala 162:55] + state <= 3'h3; // @[src/main/scala/bus/AXI4Lite.scala 163:15] + end else if (io_channels_read_address_channel_ARVALID) begin // @[src/main/scala/bus/AXI4Lite.scala 164:60] + state <= 3'h1; // @[src/main/scala/bus/AXI4Lite.scala 165:15] + end + end else if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_read_address_channel_ARVALID & ARREADY) begin // @[src/main/scala/bus/AXI4Lite.scala 170:65] + state <= 3'h2; // @[src/main/scala/bus/AXI4Lite.scala 171:15] + end + end else if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + state <= _GEN_6; + end else begin + state <= _GEN_37; + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 126:21] + addr <= 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 126:21] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_read_address_channel_ARVALID & ARREADY) begin // @[src/main/scala/bus/AXI4Lite.scala 170:65] + addr <= io_channels_read_address_channel_ARADDR; // @[src/main/scala/bus/AXI4Lite.scala 172:14] + end + end else if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + addr <= _GEN_36; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 130:22] + write <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 130:22] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 159:13] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write <= _GEN_44; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 132:27] + write_data <= 32'h0; // @[src/main/scala/bus/AXI4Lite.scala 132:27] + end else begin + write_data <= io_channels_write_data_channel_WDATA; + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 134:29] + write_strobe_0 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write_strobe_0 <= _GEN_40; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 134:29] + write_strobe_1 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write_strobe_1 <= _GEN_41; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 134:29] + write_strobe_2 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write_strobe_2 <= _GEN_42; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 134:29] + write_strobe_3 <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 134:29] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + write_strobe_3 <= _GEN_43; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 137:24] + ARREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 137:24] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (3'h1 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (io_channels_read_address_channel_ARVALID & ARREADY) begin // @[src/main/scala/bus/AXI4Lite.scala 170:65] + ARREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 174:17] + end else begin + ARREADY <= 1'h1; // @[src/main/scala/bus/AXI4Lite.scala 169:15] + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 139:23] + RVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 139:23] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 160:14] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (3'h2 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + RVALID <= _GEN_7; + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 146:24] + AWREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 146:24] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + AWREADY <= _GEN_35; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 148:23] + WREADY <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 148:23] + end else if (!(3'h0 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + WREADY <= _GEN_38; + end + end + end + if (reset) begin // @[src/main/scala/bus/AXI4Lite.scala 151:23] + BVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 151:23] + end else if (3'h0 == state) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + BVALID <= 1'h0; // @[src/main/scala/bus/AXI4Lite.scala 161:14] + end else if (!(3'h1 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + if (!(3'h2 == state)) begin // @[src/main/scala/bus/AXI4Lite.scala 156:17] + BVALID <= _GEN_45; + 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}}; + state = _RAND_0[2:0]; + _RAND_1 = {1{`RANDOM}}; + addr = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + write = _RAND_2[0:0]; + _RAND_3 = {1{`RANDOM}}; + write_data = _RAND_3[31:0]; + _RAND_4 = {1{`RANDOM}}; + write_strobe_0 = _RAND_4[0:0]; + _RAND_5 = {1{`RANDOM}}; + write_strobe_1 = _RAND_5[0:0]; + _RAND_6 = {1{`RANDOM}}; + write_strobe_2 = _RAND_6[0:0]; + _RAND_7 = {1{`RANDOM}}; + write_strobe_3 = _RAND_7[0:0]; + _RAND_8 = {1{`RANDOM}}; + ARREADY = _RAND_8[0:0]; + _RAND_9 = {1{`RANDOM}}; + RVALID = _RAND_9[0:0]; + _RAND_10 = {1{`RANDOM}}; + AWREADY = _RAND_10[0:0]; + _RAND_11 = {1{`RANDOM}}; + WREADY = _RAND_11[0:0]; + _RAND_12 = {1{`RANDOM}}; + BVALID = _RAND_12[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module Memory( + input clock, + input reset, + input io_channels_write_address_channel_AWVALID, // @[src/main/scala/peripheral/Memory.scala 50:14] + output io_channels_write_address_channel_AWREADY, // @[src/main/scala/peripheral/Memory.scala 50:14] + input [31:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/peripheral/Memory.scala 50:14] + input io_channels_write_data_channel_WVALID, // @[src/main/scala/peripheral/Memory.scala 50:14] + output io_channels_write_data_channel_WREADY, // @[src/main/scala/peripheral/Memory.scala 50:14] + input [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/peripheral/Memory.scala 50:14] + input [3:0] io_channels_write_data_channel_WSTRB, // @[src/main/scala/peripheral/Memory.scala 50:14] + output io_channels_write_response_channel_BVALID, // @[src/main/scala/peripheral/Memory.scala 50:14] + input io_channels_write_response_channel_BREADY, // @[src/main/scala/peripheral/Memory.scala 50:14] + input io_channels_read_address_channel_ARVALID, // @[src/main/scala/peripheral/Memory.scala 50:14] + output io_channels_read_address_channel_ARREADY, // @[src/main/scala/peripheral/Memory.scala 50:14] + input [31:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/peripheral/Memory.scala 50:14] + output io_channels_read_data_channel_RVALID, // @[src/main/scala/peripheral/Memory.scala 50:14] + input io_channels_read_data_channel_RREADY, // @[src/main/scala/peripheral/Memory.scala 50:14] + output [31:0] io_channels_read_data_channel_RDATA // @[src/main/scala/peripheral/Memory.scala 50:14] +); + wire mem_clock; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire [31:0] mem_io_read_address; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire [31:0] mem_io_write_address; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire [31:0] mem_io_write_data; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire mem_io_write_enable; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire mem_io_write_strobe_0; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire mem_io_write_strobe_1; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire mem_io_write_strobe_2; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire mem_io_write_strobe_3; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire [31:0] mem_io_read_data; // @[src/main/scala/peripheral/Memory.scala 57:19] + wire slave_clock; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_reset; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [3:0] slave_io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_bundle_write; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_bundle_read_data; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_bundle_write_data; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_bundle_write_strobe_0; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_bundle_write_strobe_1; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_bundle_write_strobe_2; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire slave_io_bundle_write_strobe_3; // @[src/main/scala/peripheral/Memory.scala 58:21] + wire [31:0] slave_io_bundle_address; // @[src/main/scala/peripheral/Memory.scala 58:21] + BlockRAM mem ( // @[src/main/scala/peripheral/Memory.scala 57:19] + .clock(mem_clock), + .io_read_address(mem_io_read_address), + .io_write_address(mem_io_write_address), + .io_write_data(mem_io_write_data), + .io_write_enable(mem_io_write_enable), + .io_write_strobe_0(mem_io_write_strobe_0), + .io_write_strobe_1(mem_io_write_strobe_1), + .io_write_strobe_2(mem_io_write_strobe_2), + .io_write_strobe_3(mem_io_write_strobe_3), + .io_read_data(mem_io_read_data) + ); + AXI4LiteSlave_1 slave ( // @[src/main/scala/peripheral/Memory.scala 58:21] + .clock(slave_clock), + .reset(slave_reset), + .io_channels_write_address_channel_AWVALID(slave_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(slave_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(slave_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(slave_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(slave_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(slave_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(slave_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(slave_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(slave_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(slave_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(slave_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(slave_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(slave_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(slave_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(slave_io_channels_read_data_channel_RDATA), + .io_bundle_write(slave_io_bundle_write), + .io_bundle_read_data(slave_io_bundle_read_data), + .io_bundle_write_data(slave_io_bundle_write_data), + .io_bundle_write_strobe_0(slave_io_bundle_write_strobe_0), + .io_bundle_write_strobe_1(slave_io_bundle_write_strobe_1), + .io_bundle_write_strobe_2(slave_io_bundle_write_strobe_2), + .io_bundle_write_strobe_3(slave_io_bundle_write_strobe_3), + .io_bundle_address(slave_io_bundle_address) + ); + assign io_channels_write_address_channel_AWREADY = slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign io_channels_write_data_channel_WREADY = slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign io_channels_write_response_channel_BVALID = slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign io_channels_read_address_channel_ARREADY = slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign io_channels_read_data_channel_RVALID = slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign io_channels_read_data_channel_RDATA = slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign mem_clock = clock; + assign mem_io_read_address = slave_io_bundle_address; // @[src/main/scala/peripheral/Memory.scala 67:23] + assign mem_io_write_address = slave_io_bundle_address; // @[src/main/scala/peripheral/Memory.scala 64:24] + assign mem_io_write_data = slave_io_bundle_write_data; // @[src/main/scala/peripheral/Memory.scala 63:21] + assign mem_io_write_enable = slave_io_bundle_write; // @[src/main/scala/peripheral/Memory.scala 62:23] + assign mem_io_write_strobe_0 = slave_io_bundle_write_strobe_0; // @[src/main/scala/peripheral/Memory.scala 65:23] + assign mem_io_write_strobe_1 = slave_io_bundle_write_strobe_1; // @[src/main/scala/peripheral/Memory.scala 65:23] + assign mem_io_write_strobe_2 = slave_io_bundle_write_strobe_2; // @[src/main/scala/peripheral/Memory.scala 65:23] + assign mem_io_write_strobe_3 = slave_io_bundle_write_strobe_3; // @[src/main/scala/peripheral/Memory.scala 65:23] + assign slave_clock = clock; + assign slave_reset = reset; + assign slave_io_channels_write_address_channel_AWVALID = io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_write_address_channel_AWADDR = io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_write_data_channel_WVALID = io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_write_data_channel_WDATA = io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_write_data_channel_WSTRB = io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_write_response_channel_BREADY = io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_read_address_channel_ARVALID = io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_read_address_channel_ARADDR = io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_channels_read_data_channel_RREADY = io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/Memory.scala 59:21] + assign slave_io_bundle_read_data = mem_io_read_data; // @[src/main/scala/peripheral/Memory.scala 68:29] +endmodule +module Timer( + input clock, + input reset, + input io_channels_write_address_channel_AWVALID, // @[src/main/scala/peripheral/Timer.scala 23:14] + output io_channels_write_address_channel_AWREADY, // @[src/main/scala/peripheral/Timer.scala 23:14] + input [7:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/peripheral/Timer.scala 23:14] + input io_channels_write_data_channel_WVALID, // @[src/main/scala/peripheral/Timer.scala 23:14] + output io_channels_write_data_channel_WREADY, // @[src/main/scala/peripheral/Timer.scala 23:14] + input [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/peripheral/Timer.scala 23:14] + output io_channels_write_response_channel_BVALID, // @[src/main/scala/peripheral/Timer.scala 23:14] + input io_channels_write_response_channel_BREADY, // @[src/main/scala/peripheral/Timer.scala 23:14] + input io_channels_read_address_channel_ARVALID, // @[src/main/scala/peripheral/Timer.scala 23:14] + output io_channels_read_address_channel_ARREADY, // @[src/main/scala/peripheral/Timer.scala 23:14] + input [7:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/peripheral/Timer.scala 23:14] + output io_channels_read_data_channel_RVALID, // @[src/main/scala/peripheral/Timer.scala 23:14] + input io_channels_read_data_channel_RREADY, // @[src/main/scala/peripheral/Timer.scala 23:14] + output [31:0] io_channels_read_data_channel_RDATA, // @[src/main/scala/peripheral/Timer.scala 23:14] + output io_signal_interrupt // @[src/main/scala/peripheral/Timer.scala 23:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; +`endif // RANDOMIZE_REG_INIT + wire slave_clock; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_reset; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [7:0] slave_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [31:0] slave_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [7:0] slave_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [31:0] slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_bundle_read; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire slave_io_bundle_write; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [31:0] slave_io_bundle_read_data; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [31:0] slave_io_bundle_write_data; // @[src/main/scala/peripheral/Timer.scala 30:21] + wire [7:0] slave_io_bundle_address; // @[src/main/scala/peripheral/Timer.scala 30:21] + reg [31:0] count; // @[src/main/scala/peripheral/Timer.scala 33:22] + reg [31:0] limit; // @[src/main/scala/peripheral/Timer.scala 34:22] + reg enabled; // @[src/main/scala/peripheral/Timer.scala 36:24] + wire [31:0] _slave_io_bundle_read_data_T_1 = 8'h4 == slave_io_bundle_address ? limit : 32'h0; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire [31:0] _slave_io_bundle_read_data_T_3 = 8'h8 == slave_io_bundle_address ? {{31'd0}, enabled} : + _slave_io_bundle_read_data_T_1; // @[src/main/scala/chisel3/util/Mux.scala 77:13] + wire _GEN_1 = slave_io_bundle_address == 8'h8 ? slave_io_bundle_write_data != 32'h0 : enabled; // @[src/main/scala/peripheral/Timer.scala 55:51 56:15 36:24] + wire _GEN_4 = slave_io_bundle_address == 8'h4 ? enabled : _GEN_1; // @[src/main/scala/peripheral/Timer.scala 36:24 52:45] + wire _GEN_7 = slave_io_bundle_write ? _GEN_4 : enabled; // @[src/main/scala/peripheral/Timer.scala 36:24 51:31] + wire [31:0] _io_signal_interrupt_T_1 = limit - 32'ha; // @[src/main/scala/peripheral/Timer.scala 60:54] + wire [31:0] _count_T_1 = count + 32'h1; // @[src/main/scala/peripheral/Timer.scala 65:20] + AXI4LiteSlave slave ( // @[src/main/scala/peripheral/Timer.scala 30:21] + .clock(slave_clock), + .reset(slave_reset), + .io_channels_write_address_channel_AWVALID(slave_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(slave_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(slave_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(slave_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(slave_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(slave_io_channels_write_data_channel_WDATA), + .io_channels_write_response_channel_BVALID(slave_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(slave_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(slave_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(slave_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(slave_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(slave_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(slave_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(slave_io_channels_read_data_channel_RDATA), + .io_bundle_read(slave_io_bundle_read), + .io_bundle_write(slave_io_bundle_write), + .io_bundle_read_data(slave_io_bundle_read_data), + .io_bundle_write_data(slave_io_bundle_write_data), + .io_bundle_address(slave_io_bundle_address) + ); + assign io_channels_write_address_channel_AWREADY = slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign io_channels_write_data_channel_WREADY = slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign io_channels_write_response_channel_BVALID = slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign io_channels_read_address_channel_ARREADY = slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign io_channels_read_data_channel_RVALID = slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign io_channels_read_data_channel_RDATA = slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign io_signal_interrupt = enabled & count >= _io_signal_interrupt_T_1; // @[src/main/scala/peripheral/Timer.scala 60:34] + assign slave_clock = clock; + assign slave_reset = reset; + assign slave_io_channels_write_address_channel_AWVALID = io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_write_address_channel_AWADDR = io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_write_data_channel_WVALID = io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_write_data_channel_WDATA = io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_write_response_channel_BREADY = io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_read_address_channel_ARVALID = io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_read_address_channel_ARADDR = io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_channels_read_data_channel_RREADY = io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/Timer.scala 31:21] + assign slave_io_bundle_read_data = slave_io_bundle_read ? _slave_io_bundle_read_data_T_3 : 32'h0; // @[src/main/scala/peripheral/Timer.scala 39:29 41:30 42:31] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/peripheral/Timer.scala 33:22] + count <= 32'h0; // @[src/main/scala/peripheral/Timer.scala 33:22] + end else if (count >= limit) begin // @[src/main/scala/peripheral/Timer.scala 62:24] + count <= 32'h0; // @[src/main/scala/peripheral/Timer.scala 63:11] + end else begin + count <= _count_T_1; // @[src/main/scala/peripheral/Timer.scala 65:11] + end + if (reset) begin // @[src/main/scala/peripheral/Timer.scala 34:22] + limit <= 32'h5f5e100; // @[src/main/scala/peripheral/Timer.scala 34:22] + end else if (slave_io_bundle_write) begin // @[src/main/scala/peripheral/Timer.scala 51:31] + if (slave_io_bundle_address == 8'h4) begin // @[src/main/scala/peripheral/Timer.scala 52:45] + limit <= slave_io_bundle_write_data; // @[src/main/scala/peripheral/Timer.scala 53:13] + end + end + enabled <= reset | _GEN_7; // @[src/main/scala/peripheral/Timer.scala 36:{24,24}] + end +// Register and memory initialization +`ifdef RANDOMIZE_GARBAGE_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_INVALID_ASSIGN +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_REG_INIT +`define RANDOMIZE +`endif +`ifdef RANDOMIZE_MEM_INIT +`define RANDOMIZE +`endif +`ifndef RANDOM +`define RANDOM $random +`endif +`ifdef RANDOMIZE_MEM_INIT + integer initvar; +`endif +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `ifdef INIT_RANDOM + `INIT_RANDOM + `endif + `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[31:0]; + _RAND_1 = {1{`RANDOM}}; + limit = _RAND_1[31:0]; + _RAND_2 = {1{`RANDOM}}; + enabled = _RAND_2[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module DummySlave( + input clock, + input reset, + input io_channels_write_address_channel_AWVALID, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + output io_channels_write_address_channel_AWREADY, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input [3:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input io_channels_write_data_channel_WVALID, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + output io_channels_write_data_channel_WREADY, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input [3:0] io_channels_write_data_channel_WSTRB, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + output io_channels_write_response_channel_BVALID, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input io_channels_write_response_channel_BREADY, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input io_channels_read_address_channel_ARVALID, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + output io_channels_read_address_channel_ARREADY, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input [3:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + output io_channels_read_data_channel_RVALID, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + input io_channels_read_data_channel_RREADY, // @[src/main/scala/peripheral/DummySlave.scala 24:14] + output [31:0] io_channels_read_data_channel_RDATA // @[src/main/scala/peripheral/DummySlave.scala 24:14] +); + wire slave_clock; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_reset; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [3:0] slave_io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_bundle_write; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_bundle_read_data; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_bundle_write_data; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_bundle_write_strobe_0; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_bundle_write_strobe_1; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_bundle_write_strobe_2; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire slave_io_bundle_write_strobe_3; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + wire [31:0] slave_io_bundle_address; // @[src/main/scala/peripheral/DummySlave.scala 28:21] + AXI4LiteSlave_1 slave ( // @[src/main/scala/peripheral/DummySlave.scala 28:21] + .clock(slave_clock), + .reset(slave_reset), + .io_channels_write_address_channel_AWVALID(slave_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(slave_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(slave_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(slave_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(slave_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(slave_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(slave_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(slave_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(slave_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(slave_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(slave_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(slave_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(slave_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(slave_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(slave_io_channels_read_data_channel_RDATA), + .io_bundle_write(slave_io_bundle_write), + .io_bundle_read_data(slave_io_bundle_read_data), + .io_bundle_write_data(slave_io_bundle_write_data), + .io_bundle_write_strobe_0(slave_io_bundle_write_strobe_0), + .io_bundle_write_strobe_1(slave_io_bundle_write_strobe_1), + .io_bundle_write_strobe_2(slave_io_bundle_write_strobe_2), + .io_bundle_write_strobe_3(slave_io_bundle_write_strobe_3), + .io_bundle_address(slave_io_bundle_address) + ); + assign io_channels_write_address_channel_AWREADY = slave_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign io_channels_write_data_channel_WREADY = slave_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign io_channels_write_response_channel_BVALID = slave_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign io_channels_read_address_channel_ARREADY = slave_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign io_channels_read_data_channel_RVALID = slave_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign io_channels_read_data_channel_RDATA = slave_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_clock = clock; + assign slave_reset = reset; + assign slave_io_channels_write_address_channel_AWVALID = io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_write_address_channel_AWADDR = {{28'd0}, io_channels_write_address_channel_AWADDR}; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_write_data_channel_WVALID = io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_write_data_channel_WDATA = io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_write_data_channel_WSTRB = io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_write_response_channel_BREADY = io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_read_address_channel_ARVALID = io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_read_address_channel_ARADDR = {{28'd0}, io_channels_read_address_channel_ARADDR}; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_channels_read_data_channel_RREADY = io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/DummySlave.scala 29:21] + assign slave_io_bundle_read_data = 32'hdeadbeef; // @[src/main/scala/peripheral/DummySlave.scala 31:29] +endmodule +module DummyMaster( + input clock, + input reset, + output io_channels_write_address_channel_AWVALID, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + input io_channels_write_address_channel_AWREADY, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output [31:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output io_channels_write_data_channel_WVALID, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + input io_channels_write_data_channel_WREADY, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output [3:0] io_channels_write_data_channel_WSTRB, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + input io_channels_write_response_channel_BVALID, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output io_channels_write_response_channel_BREADY, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output io_channels_read_address_channel_ARVALID, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + input io_channels_read_address_channel_ARREADY, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output [31:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + input io_channels_read_data_channel_RVALID, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + output io_channels_read_data_channel_RREADY, // @[src/main/scala/peripheral/DummyMaster.scala 23:14] + input [31:0] io_channels_read_data_channel_RDATA // @[src/main/scala/peripheral/DummyMaster.scala 23:14] +); + wire master_clock; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_reset; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [3:0] master_io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [1:0] master_io_channels_read_data_channel_RRESP; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_read; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_write; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_bundle_read_data; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_bundle_write_data; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_write_strobe_0; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_write_strobe_1; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_write_strobe_2; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_write_strobe_3; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire [31:0] master_io_bundle_address; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_busy; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_read_valid; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + wire master_io_bundle_write_valid; // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + AXI4LiteMaster master ( // @[src/main/scala/peripheral/DummyMaster.scala 26:22] + .clock(master_clock), + .reset(master_reset), + .io_channels_write_address_channel_AWVALID(master_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(master_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(master_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(master_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(master_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(master_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(master_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(master_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(master_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(master_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(master_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(master_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(master_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(master_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(master_io_channels_read_data_channel_RDATA), + .io_channels_read_data_channel_RRESP(master_io_channels_read_data_channel_RRESP), + .io_bundle_read(master_io_bundle_read), + .io_bundle_write(master_io_bundle_write), + .io_bundle_read_data(master_io_bundle_read_data), + .io_bundle_write_data(master_io_bundle_write_data), + .io_bundle_write_strobe_0(master_io_bundle_write_strobe_0), + .io_bundle_write_strobe_1(master_io_bundle_write_strobe_1), + .io_bundle_write_strobe_2(master_io_bundle_write_strobe_2), + .io_bundle_write_strobe_3(master_io_bundle_write_strobe_3), + .io_bundle_address(master_io_bundle_address), + .io_bundle_busy(master_io_bundle_busy), + .io_bundle_read_valid(master_io_bundle_read_valid), + .io_bundle_write_valid(master_io_bundle_write_valid) + ); + assign io_channels_write_address_channel_AWVALID = master_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_write_address_channel_AWADDR = master_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_write_data_channel_WVALID = master_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_write_data_channel_WDATA = master_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_write_data_channel_WSTRB = master_io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_write_response_channel_BREADY = master_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_read_address_channel_ARVALID = master_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_read_address_channel_ARADDR = master_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign io_channels_read_data_channel_RREADY = master_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_clock = clock; + assign master_reset = reset; + assign master_io_channels_write_address_channel_AWREADY = io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_channels_write_data_channel_WREADY = io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_channels_write_response_channel_BVALID = io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_channels_read_address_channel_ARREADY = io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_channels_read_data_channel_RVALID = io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_channels_read_data_channel_RDATA = io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_channels_read_data_channel_RRESP = 2'h0; // @[src/main/scala/peripheral/DummyMaster.scala 27:22] + assign master_io_bundle_read = 1'h0; // @[src/main/scala/peripheral/DummyMaster.scala 31:25] + assign master_io_bundle_write = 1'h0; // @[src/main/scala/peripheral/DummyMaster.scala 30:26] + assign master_io_bundle_write_data = 32'h0; // @[src/main/scala/peripheral/DummyMaster.scala 29:31] + assign master_io_bundle_write_strobe_0 = 1'h0; // @[src/main/scala/peripheral/DummyMaster.scala 28:{43,43}] + assign master_io_bundle_write_strobe_1 = 1'h0; // @[src/main/scala/peripheral/DummyMaster.scala 28:{43,43}] + assign master_io_bundle_write_strobe_2 = 1'h0; // @[src/main/scala/peripheral/DummyMaster.scala 28:{43,43}] + assign master_io_bundle_write_strobe_3 = 1'h0; // @[src/main/scala/peripheral/DummyMaster.scala 28:{43,43}] + assign master_io_bundle_address = 32'h0; // @[src/main/scala/peripheral/DummyMaster.scala 32:28] +endmodule +module BusSwitch( + input clock, + input reset, + input [31:0] io_address, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_0_write_address_channel_AWVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_0_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_0_write_address_channel_AWADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_0_write_data_channel_WVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_0_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_0_write_data_channel_WDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [3:0] io_slaves_0_write_data_channel_WSTRB, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_0_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_0_write_response_channel_BREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_0_read_address_channel_ARVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_0_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_0_read_address_channel_ARADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_0_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_0_read_data_channel_RREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_0_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_1_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_1_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_1_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_1_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_1_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_1_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_2_write_address_channel_AWVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_2_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_2_write_address_channel_AWADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_2_write_data_channel_WVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_2_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_2_write_data_channel_WDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_2_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_2_write_response_channel_BREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_2_read_address_channel_ARVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_2_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_2_read_address_channel_ARADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_2_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_2_read_data_channel_RREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_2_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_3_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_3_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_3_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_3_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_3_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_3_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_4_write_address_channel_AWVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_4_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_4_write_address_channel_AWADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_4_write_data_channel_WVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_4_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_4_write_data_channel_WDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_4_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_4_write_response_channel_BREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_4_read_address_channel_ARVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_4_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_slaves_4_read_address_channel_ARADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_4_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_slaves_4_read_data_channel_RREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_4_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_5_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_5_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_5_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_5_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_5_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_5_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_6_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_6_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_6_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_6_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_6_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_6_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_7_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_7_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_7_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_7_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_slaves_7_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_slaves_7_read_data_channel_RDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_master_write_address_channel_AWVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_master_write_address_channel_AWREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_master_write_address_channel_AWADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_master_write_data_channel_WVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_master_write_data_channel_WREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_master_write_data_channel_WDATA, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [3:0] io_master_write_data_channel_WSTRB, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_master_write_response_channel_BVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_master_write_response_channel_BREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_master_read_address_channel_ARVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_master_read_address_channel_ARREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input [31:0] io_master_read_address_channel_ARADDR, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output io_master_read_data_channel_RVALID, // @[src/main/scala/bus/BusSwitch.scala 22:14] + input io_master_read_data_channel_RREADY, // @[src/main/scala/bus/BusSwitch.scala 22:14] + output [31:0] io_master_read_data_channel_RDATA // @[src/main/scala/bus/BusSwitch.scala 22:14] +); + wire dummy_clock; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_reset; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_write_address_channel_AWVALID; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire [31:0] dummy_io_channels_write_address_channel_AWADDR; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_write_data_channel_WVALID; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire [31:0] dummy_io_channels_write_data_channel_WDATA; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire [3:0] dummy_io_channels_write_data_channel_WSTRB; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_write_response_channel_BREADY; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_read_address_channel_ARVALID; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire [31:0] dummy_io_channels_read_address_channel_ARADDR; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire dummy_io_channels_read_data_channel_RREADY; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire [31:0] dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/bus/BusSwitch.scala 27:21] + wire [2:0] index = io_address[31:29]; // @[src/main/scala/bus/BusSwitch.scala 28:25] + wire _GEN_9 = 3'h1 == index ? io_slaves_1_write_address_channel_AWREADY : io_slaves_0_write_address_channel_AWREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_10 = 3'h2 == index ? io_slaves_2_write_address_channel_AWREADY : _GEN_9; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_11 = 3'h3 == index ? io_slaves_3_write_address_channel_AWREADY : _GEN_10; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_12 = 3'h4 == index ? io_slaves_4_write_address_channel_AWREADY : _GEN_11; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_13 = 3'h5 == index ? io_slaves_5_write_address_channel_AWREADY : _GEN_12; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_14 = 3'h6 == index ? io_slaves_6_write_address_channel_AWREADY : _GEN_13; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_41 = 3'h1 == index ? io_slaves_1_write_data_channel_WREADY : io_slaves_0_write_data_channel_WREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_42 = 3'h2 == index ? io_slaves_2_write_data_channel_WREADY : _GEN_41; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_43 = 3'h3 == index ? io_slaves_3_write_data_channel_WREADY : _GEN_42; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_44 = 3'h4 == index ? io_slaves_4_write_data_channel_WREADY : _GEN_43; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_45 = 3'h5 == index ? io_slaves_5_write_data_channel_WREADY : _GEN_44; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_46 = 3'h6 == index ? io_slaves_6_write_data_channel_WREADY : _GEN_45; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_65 = 3'h1 == index ? io_slaves_1_write_response_channel_BVALID : io_slaves_0_write_response_channel_BVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_66 = 3'h2 == index ? io_slaves_2_write_response_channel_BVALID : _GEN_65; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_67 = 3'h3 == index ? io_slaves_3_write_response_channel_BVALID : _GEN_66; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_68 = 3'h4 == index ? io_slaves_4_write_response_channel_BVALID : _GEN_67; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_69 = 3'h5 == index ? io_slaves_5_write_response_channel_BVALID : _GEN_68; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_70 = 3'h6 == index ? io_slaves_6_write_response_channel_BVALID : _GEN_69; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_97 = 3'h1 == index ? io_slaves_1_read_address_channel_ARREADY : io_slaves_0_read_address_channel_ARREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_98 = 3'h2 == index ? io_slaves_2_read_address_channel_ARREADY : _GEN_97; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_99 = 3'h3 == index ? io_slaves_3_read_address_channel_ARREADY : _GEN_98; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_100 = 3'h4 == index ? io_slaves_4_read_address_channel_ARREADY : _GEN_99; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_101 = 3'h5 == index ? io_slaves_5_read_address_channel_ARREADY : _GEN_100; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_102 = 3'h6 == index ? io_slaves_6_read_address_channel_ARREADY : _GEN_101; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_121 = 3'h1 == index ? io_slaves_1_read_data_channel_RVALID : io_slaves_0_read_data_channel_RVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_122 = 3'h2 == index ? io_slaves_2_read_data_channel_RVALID : _GEN_121; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_123 = 3'h3 == index ? io_slaves_3_read_data_channel_RVALID : _GEN_122; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_124 = 3'h4 == index ? io_slaves_4_read_data_channel_RVALID : _GEN_123; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_125 = 3'h5 == index ? io_slaves_5_read_data_channel_RVALID : _GEN_124; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire _GEN_126 = 3'h6 == index ? io_slaves_6_read_data_channel_RVALID : _GEN_125; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire [31:0] _GEN_137 = 3'h1 == index ? io_slaves_1_read_data_channel_RDATA : io_slaves_0_read_data_channel_RDATA; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire [31:0] _GEN_138 = 3'h2 == index ? io_slaves_2_read_data_channel_RDATA : _GEN_137; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire [31:0] _GEN_139 = 3'h3 == index ? io_slaves_3_read_data_channel_RDATA : _GEN_138; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire [31:0] _GEN_140 = 3'h4 == index ? io_slaves_4_read_data_channel_RDATA : _GEN_139; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire [31:0] _GEN_141 = 3'h5 == index ? io_slaves_5_read_data_channel_RDATA : _GEN_140; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + wire [31:0] _GEN_142 = 3'h6 == index ? io_slaves_6_read_data_channel_RDATA : _GEN_141; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + DummyMaster dummy ( // @[src/main/scala/bus/BusSwitch.scala 27:21] + .clock(dummy_clock), + .reset(dummy_reset), + .io_channels_write_address_channel_AWVALID(dummy_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(dummy_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(dummy_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(dummy_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(dummy_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(dummy_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(dummy_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(dummy_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(dummy_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(dummy_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(dummy_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(dummy_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(dummy_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(dummy_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(dummy_io_channels_read_data_channel_RDATA) + ); + assign io_slaves_0_write_address_channel_AWVALID = 3'h0 == index ? io_master_write_address_channel_AWVALID : + dummy_io_channels_write_address_channel_AWVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_write_address_channel_AWADDR = 3'h0 == index ? io_master_write_address_channel_AWADDR : + dummy_io_channels_write_address_channel_AWADDR; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_write_data_channel_WVALID = 3'h0 == index ? io_master_write_data_channel_WVALID : + dummy_io_channels_write_data_channel_WVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_write_data_channel_WDATA = 3'h0 == index ? io_master_write_data_channel_WDATA : + dummy_io_channels_write_data_channel_WDATA; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_write_data_channel_WSTRB = 3'h0 == index ? io_master_write_data_channel_WSTRB : + dummy_io_channels_write_data_channel_WSTRB; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_write_response_channel_BREADY = 3'h0 == index ? io_master_write_response_channel_BREADY : + dummy_io_channels_write_response_channel_BREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_read_address_channel_ARVALID = 3'h0 == index ? io_master_read_address_channel_ARVALID : + dummy_io_channels_read_address_channel_ARVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_read_address_channel_ARADDR = 3'h0 == index ? io_master_read_address_channel_ARADDR : + dummy_io_channels_read_address_channel_ARADDR; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_0_read_data_channel_RREADY = 3'h0 == index ? io_master_read_data_channel_RREADY : + dummy_io_channels_read_data_channel_RREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_write_address_channel_AWVALID = 3'h2 == index ? io_master_write_address_channel_AWVALID : + dummy_io_channels_write_address_channel_AWVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_write_address_channel_AWADDR = 3'h2 == index ? io_master_write_address_channel_AWADDR : + dummy_io_channels_write_address_channel_AWADDR; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_write_data_channel_WVALID = 3'h2 == index ? io_master_write_data_channel_WVALID : + dummy_io_channels_write_data_channel_WVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_write_data_channel_WDATA = 3'h2 == index ? io_master_write_data_channel_WDATA : + dummy_io_channels_write_data_channel_WDATA; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_write_response_channel_BREADY = 3'h2 == index ? io_master_write_response_channel_BREADY : + dummy_io_channels_write_response_channel_BREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_read_address_channel_ARVALID = 3'h2 == index ? io_master_read_address_channel_ARVALID : + dummy_io_channels_read_address_channel_ARVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_read_address_channel_ARADDR = 3'h2 == index ? io_master_read_address_channel_ARADDR : + dummy_io_channels_read_address_channel_ARADDR; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_2_read_data_channel_RREADY = 3'h2 == index ? io_master_read_data_channel_RREADY : + dummy_io_channels_read_data_channel_RREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_write_address_channel_AWVALID = 3'h4 == index ? io_master_write_address_channel_AWVALID : + dummy_io_channels_write_address_channel_AWVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_write_address_channel_AWADDR = 3'h4 == index ? io_master_write_address_channel_AWADDR : + dummy_io_channels_write_address_channel_AWADDR; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_write_data_channel_WVALID = 3'h4 == index ? io_master_write_data_channel_WVALID : + dummy_io_channels_write_data_channel_WVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_write_data_channel_WDATA = 3'h4 == index ? io_master_write_data_channel_WDATA : + dummy_io_channels_write_data_channel_WDATA; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_write_response_channel_BREADY = 3'h4 == index ? io_master_write_response_channel_BREADY : + dummy_io_channels_write_response_channel_BREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_read_address_channel_ARVALID = 3'h4 == index ? io_master_read_address_channel_ARVALID : + dummy_io_channels_read_address_channel_ARVALID; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_read_address_channel_ARADDR = 3'h4 == index ? io_master_read_address_channel_ARADDR : + dummy_io_channels_read_address_channel_ARADDR; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_slaves_4_read_data_channel_RREADY = 3'h4 == index ? io_master_read_data_channel_RREADY : + dummy_io_channels_read_data_channel_RREADY; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13} 30:18] + assign io_master_write_address_channel_AWREADY = 3'h7 == index ? io_slaves_7_write_address_channel_AWREADY : _GEN_14; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + assign io_master_write_data_channel_WREADY = 3'h7 == index ? io_slaves_7_write_data_channel_WREADY : _GEN_46; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + assign io_master_write_response_channel_BVALID = 3'h7 == index ? io_slaves_7_write_response_channel_BVALID : _GEN_70; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + assign io_master_read_address_channel_ARREADY = 3'h7 == index ? io_slaves_7_read_address_channel_ARREADY : _GEN_102; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + assign io_master_read_data_channel_RVALID = 3'h7 == index ? io_slaves_7_read_data_channel_RVALID : _GEN_126; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + assign io_master_read_data_channel_RDATA = 3'h7 == index ? io_slaves_7_read_data_channel_RDATA : _GEN_142; // @[src/main/scala/bus/BusSwitch.scala 32:{13,13}] + assign dummy_clock = clock; + assign dummy_reset = reset; + assign dummy_io_channels_write_address_channel_AWREADY = io_slaves_7_write_address_channel_AWREADY; // @[src/main/scala/bus/BusSwitch.scala 30:18] + assign dummy_io_channels_write_data_channel_WREADY = io_slaves_7_write_data_channel_WREADY; // @[src/main/scala/bus/BusSwitch.scala 30:18] + assign dummy_io_channels_write_response_channel_BVALID = io_slaves_7_write_response_channel_BVALID; // @[src/main/scala/bus/BusSwitch.scala 30:18] + assign dummy_io_channels_read_address_channel_ARREADY = io_slaves_7_read_address_channel_ARREADY; // @[src/main/scala/bus/BusSwitch.scala 30:18] + assign dummy_io_channels_read_data_channel_RVALID = io_slaves_7_read_data_channel_RVALID; // @[src/main/scala/bus/BusSwitch.scala 30:18] + assign dummy_io_channels_read_data_channel_RDATA = io_slaves_7_read_data_channel_RDATA; // @[src/main/scala/bus/BusSwitch.scala 30:18] +endmodule +module InstructionROM( + input clock, + input [31:0] io_address, // @[src/main/scala/peripheral/InstructionROM.scala 28:14] + output [31:0] io_data // @[src/main/scala/peripheral/InstructionROM.scala 28:14] +); +`ifdef RANDOMIZE_GARBAGE_ASSIGN + reg [31:0] _RAND_0; +`endif // RANDOMIZE_GARBAGE_ASSIGN +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; +`endif // RANDOMIZE_REG_INIT + reg [31:0] mem [0:1050]; // @[src/main/scala/peripheral/InstructionROM.scala 34:24] + wire mem_io_data_MPORT_en; // @[src/main/scala/peripheral/InstructionROM.scala 34:24] + wire [10:0] mem_io_data_MPORT_addr; // @[src/main/scala/peripheral/InstructionROM.scala 34:24] + wire [31:0] mem_io_data_MPORT_data; // @[src/main/scala/peripheral/InstructionROM.scala 34:24] + reg mem_io_data_MPORT_en_pipe_0; + reg [10:0] mem_io_data_MPORT_addr_pipe_0; + assign mem_io_data_MPORT_en = mem_io_data_MPORT_en_pipe_0; + assign mem_io_data_MPORT_addr = mem_io_data_MPORT_addr_pipe_0; + `ifndef RANDOMIZE_GARBAGE_ASSIGN + assign mem_io_data_MPORT_data = mem[mem_io_data_MPORT_addr]; // @[src/main/scala/peripheral/InstructionROM.scala 34:24] + `else + assign mem_io_data_MPORT_data = mem_io_data_MPORT_addr >= 11'h41b ? _RAND_0[31:0] : mem[mem_io_data_MPORT_addr]; // @[src/main/scala/peripheral/InstructionROM.scala 34:24] + `endif // RANDOMIZE_GARBAGE_ASSIGN + assign io_data = mem_io_data_MPORT_data; // @[src/main/scala/peripheral/InstructionROM.scala 40:11] + always @(posedge clock) begin + mem_io_data_MPORT_en_pipe_0 <= 1'h1; + if (1'h1) begin + mem_io_data_MPORT_addr_pipe_0 <= io_address[10: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 + integer initvar; +`ifndef SYNTHESIS +`ifdef FIRRTL_BEFORE_INITIAL +`FIRRTL_BEFORE_INITIAL +`endif +initial begin + `ifdef RANDOMIZE + `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_0 = {1{`RANDOM}}; +`endif // RANDOMIZE_GARBAGE_ASSIGN +`ifdef RANDOMIZE_REG_INIT + _RAND_1 = {1{`RANDOM}}; + mem_io_data_MPORT_en_pipe_0 = _RAND_1[0:0]; + _RAND_2 = {1{`RANDOM}}; + mem_io_data_MPORT_addr_pipe_0 = _RAND_2[10:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +initial begin + $readmemh("/root/yatcpu/lab4/verilog/say_goodbye.asmbin.txt", mem); +end +endmodule +module ROMLoader( + input clock, + input reset, + output io_channels_write_address_channel_AWVALID, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input io_channels_write_address_channel_AWREADY, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output [31:0] io_channels_write_address_channel_AWADDR, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output io_channels_write_data_channel_WVALID, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input io_channels_write_data_channel_WREADY, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output [31:0] io_channels_write_data_channel_WDATA, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output [3:0] io_channels_write_data_channel_WSTRB, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input io_channels_write_response_channel_BVALID, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output io_channels_write_response_channel_BREADY, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output io_channels_read_address_channel_ARVALID, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input io_channels_read_address_channel_ARREADY, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output [31:0] io_channels_read_address_channel_ARADDR, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input io_channels_read_data_channel_RVALID, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output io_channels_read_data_channel_RREADY, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input [31:0] io_channels_read_data_channel_RDATA, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output [31:0] io_rom_address, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input [31:0] io_rom_data, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + input io_load_start, // @[src/main/scala/peripheral/ROMLoader.scala 23:14] + output io_load_finished // @[src/main/scala/peripheral/ROMLoader.scala 23:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; + reg [31:0] _RAND_2; +`endif // RANDOMIZE_REG_INIT + wire master_clock; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_reset; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [3:0] master_io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [1:0] master_io_channels_read_data_channel_RRESP; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_read; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_write; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_bundle_read_data; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_bundle_write_data; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_write_strobe_0; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_write_strobe_1; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_write_strobe_2; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_write_strobe_3; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire [31:0] master_io_bundle_address; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_busy; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_read_valid; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + wire master_io_bundle_write_valid; // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + reg [31:0] address; // @[src/main/scala/peripheral/ROMLoader.scala 36:24] + reg valid; // @[src/main/scala/peripheral/ROMLoader.scala 37:22] + reg loading; // @[src/main/scala/peripheral/ROMLoader.scala 38:24] + wire _GEN_1 = io_load_start | loading; // @[src/main/scala/peripheral/ROMLoader.scala 43:23 45:13 38:24] + wire [31:0] _GEN_2 = io_load_start ? 32'h0 : address; // @[src/main/scala/peripheral/ROMLoader.scala 43:23 46:13 36:24] + wire _T_1 = ~master_io_bundle_busy; // @[src/main/scala/peripheral/ROMLoader.scala 54:20] + wire _T_3 = address >= 32'h41a; // @[src/main/scala/peripheral/ROMLoader.scala 54:54] + wire [33:0] _GEN_34 = {address, 2'h0}; // @[src/main/scala/peripheral/ROMLoader.scala 64:46] + wire [34:0] _master_io_bundle_address_T = {{1'd0}, _GEN_34}; // @[src/main/scala/peripheral/ROMLoader.scala 64:46] + wire [34:0] _master_io_bundle_address_T_2 = _master_io_bundle_address_T + 35'h1000; // @[src/main/scala/peripheral/ROMLoader.scala 64:61] + wire [31:0] _GEN_5 = valid ? io_rom_data : 32'h0; // @[src/main/scala/peripheral/ROMLoader.scala 60:19 50:31 62:37] + wire [34:0] _GEN_10 = valid ? _master_io_bundle_address_T_2 : 35'h0; // @[src/main/scala/peripheral/ROMLoader.scala 60:19 52:28 64:34] + wire _GEN_11 = _T_1 & ~master_io_bundle_write_valid & valid; // @[src/main/scala/peripheral/ROMLoader.scala 49:26 59:67] + wire [31:0] _GEN_12 = _T_1 & ~master_io_bundle_write_valid ? _GEN_5 : 32'h0; // @[src/main/scala/peripheral/ROMLoader.scala 50:31 59:67] + wire [34:0] _GEN_17 = _T_1 & ~master_io_bundle_write_valid ? _GEN_10 : 35'h0; // @[src/main/scala/peripheral/ROMLoader.scala 52:28 59:67] + wire [31:0] _address_T_1 = address + 32'h1; // @[src/main/scala/peripheral/ROMLoader.scala 72:28] + wire [34:0] _GEN_31 = loading ? _GEN_17 : 35'h0; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 52:28] + AXI4LiteMaster master ( // @[src/main/scala/peripheral/ROMLoader.scala 33:22] + .clock(master_clock), + .reset(master_reset), + .io_channels_write_address_channel_AWVALID(master_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(master_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(master_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(master_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(master_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(master_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(master_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(master_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(master_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(master_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(master_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(master_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(master_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(master_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(master_io_channels_read_data_channel_RDATA), + .io_channels_read_data_channel_RRESP(master_io_channels_read_data_channel_RRESP), + .io_bundle_read(master_io_bundle_read), + .io_bundle_write(master_io_bundle_write), + .io_bundle_read_data(master_io_bundle_read_data), + .io_bundle_write_data(master_io_bundle_write_data), + .io_bundle_write_strobe_0(master_io_bundle_write_strobe_0), + .io_bundle_write_strobe_1(master_io_bundle_write_strobe_1), + .io_bundle_write_strobe_2(master_io_bundle_write_strobe_2), + .io_bundle_write_strobe_3(master_io_bundle_write_strobe_3), + .io_bundle_address(master_io_bundle_address), + .io_bundle_busy(master_io_bundle_busy), + .io_bundle_read_valid(master_io_bundle_read_valid), + .io_bundle_write_valid(master_io_bundle_write_valid) + ); + assign io_channels_write_address_channel_AWVALID = master_io_channels_write_address_channel_AWVALID; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_write_address_channel_AWADDR = master_io_channels_write_address_channel_AWADDR; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_write_data_channel_WVALID = master_io_channels_write_data_channel_WVALID; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_write_data_channel_WDATA = master_io_channels_write_data_channel_WDATA; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_write_data_channel_WSTRB = master_io_channels_write_data_channel_WSTRB; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_write_response_channel_BREADY = master_io_channels_write_response_channel_BREADY; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_read_address_channel_ARVALID = master_io_channels_read_address_channel_ARVALID; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_read_address_channel_ARADDR = master_io_channels_read_address_channel_ARADDR; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_channels_read_data_channel_RREADY = master_io_channels_read_data_channel_RREADY; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign io_rom_address = address; // @[src/main/scala/peripheral/ROMLoader.scala 79:18] + assign io_load_finished = ~loading & ~master_io_bundle_busy & address >= 32'h41a; // @[src/main/scala/peripheral/ROMLoader.scala 54:43] + assign master_clock = clock; + assign master_reset = reset; + assign master_io_channels_write_address_channel_AWREADY = io_channels_write_address_channel_AWREADY; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_channels_write_data_channel_WREADY = io_channels_write_data_channel_WREADY; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_channels_write_response_channel_BVALID = io_channels_write_response_channel_BVALID; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_channels_read_address_channel_ARREADY = io_channels_read_address_channel_ARREADY; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_channels_read_data_channel_RVALID = io_channels_read_data_channel_RVALID; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_channels_read_data_channel_RDATA = io_channels_read_data_channel_RDATA; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_channels_read_data_channel_RRESP = 2'h0; // @[src/main/scala/peripheral/ROMLoader.scala 34:22] + assign master_io_bundle_read = 1'h0; // @[src/main/scala/peripheral/ROMLoader.scala 40:25] + assign master_io_bundle_write = loading & _GEN_11; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 49:26] + assign master_io_bundle_write_data = loading ? _GEN_12 : 32'h0; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 50:31] + assign master_io_bundle_write_strobe_0 = loading & _GEN_11; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 51:33] + assign master_io_bundle_write_strobe_1 = loading & _GEN_11; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 51:33] + assign master_io_bundle_write_strobe_2 = loading & _GEN_11; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 51:33] + assign master_io_bundle_write_strobe_3 = loading & _GEN_11; // @[src/main/scala/peripheral/ROMLoader.scala 57:17 51:33] + assign master_io_bundle_address = _GEN_31[31:0]; + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/peripheral/ROMLoader.scala 36:24] + address <= 32'h0; // @[src/main/scala/peripheral/ROMLoader.scala 36:24] + end else if (loading) begin // @[src/main/scala/peripheral/ROMLoader.scala 57:17] + if (master_io_bundle_write_valid) begin // @[src/main/scala/peripheral/ROMLoader.scala 67:40] + if (_T_3) begin // @[src/main/scala/peripheral/ROMLoader.scala 68:41] + address <= _GEN_2; + end else begin + address <= _address_T_1; // @[src/main/scala/peripheral/ROMLoader.scala 72:17] + end + end + end else begin + address <= _GEN_2; + end + if (reset) begin // @[src/main/scala/peripheral/ROMLoader.scala 37:22] + valid <= 1'h0; // @[src/main/scala/peripheral/ROMLoader.scala 37:22] + end else if (loading) begin // @[src/main/scala/peripheral/ROMLoader.scala 57:17] + if (master_io_bundle_write_valid) begin // @[src/main/scala/peripheral/ROMLoader.scala 67:40] + valid <= _T_3; + end else begin + valid <= 1'h1; // @[src/main/scala/peripheral/ROMLoader.scala 58:11] + end + end else if (io_load_start) begin // @[src/main/scala/peripheral/ROMLoader.scala 43:23] + valid <= 1'h0; // @[src/main/scala/peripheral/ROMLoader.scala 44:11] + end + if (reset) begin // @[src/main/scala/peripheral/ROMLoader.scala 38:24] + loading <= 1'h0; // @[src/main/scala/peripheral/ROMLoader.scala 38:24] + end else if (loading) begin // @[src/main/scala/peripheral/ROMLoader.scala 57:17] + if (master_io_bundle_write_valid) begin // @[src/main/scala/peripheral/ROMLoader.scala 67:40] + if (_T_3) begin // @[src/main/scala/peripheral/ROMLoader.scala 68:41] + loading <= 1'h0; // @[src/main/scala/peripheral/ROMLoader.scala 69:17] + end else begin + loading <= 1'h1; // @[src/main/scala/peripheral/ROMLoader.scala 71:17] + end + end else begin + loading <= _GEN_1; + end + end else begin + loading <= _GEN_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}}; + address = _RAND_0[31:0]; + _RAND_1 = {1{`RANDOM}}; + valid = _RAND_1[0:0]; + _RAND_2 = {1{`RANDOM}}; + loading = _RAND_2[0:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule +module Top( + input clock, + input reset, + output io_led, // @[src/main/scala/board/z710/z710/Top.scala 26:14] + output io_tx, // @[src/main/scala/board/z710/z710/Top.scala 26:14] + input io_rx // @[src/main/scala/board/z710/z710/Top.scala 26:14] +); +`ifdef RANDOMIZE_REG_INIT + reg [31:0] _RAND_0; + reg [31:0] _RAND_1; +`endif // RANDOMIZE_REG_INIT + wire uart_clock; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_reset; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire [7:0] uart_io_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire [31:0] uart_io_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire [7:0] uart_io_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire [31:0] uart_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_rxd; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_txd; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire uart_io_signal_interrupt; // @[src/main/scala/board/z710/z710/Top.scala 39:20] + wire cpu_clock; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_reset; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [31:0] cpu_io_axi4_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [31:0] cpu_io_axi4_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [3:0] cpu_io_axi4_channels_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [31:0] cpu_io_axi4_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_axi4_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [31:0] cpu_io_axi4_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [31:0] cpu_io_bus_address; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire [31:0] cpu_io_interrupt_flag; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_stall_flag_bus; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire cpu_io_instruction_valid; // @[src/main/scala/board/z710/z710/Top.scala 43:19] + wire mem_clock; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_reset; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire [31:0] mem_io_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire [31:0] mem_io_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire [3:0] mem_io_channels_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire [31:0] mem_io_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire mem_io_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire [31:0] mem_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 44:19] + wire timer_clock; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_reset; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire [7:0] timer_io_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire [31:0] timer_io_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire [7:0] timer_io_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire [31:0] timer_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire timer_io_signal_interrupt; // @[src/main/scala/board/z710/z710/Top.scala 45:21] + wire dummy_clock; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_reset; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire [3:0] dummy_io_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire [31:0] dummy_io_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire [3:0] dummy_io_channels_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire [3:0] dummy_io_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire dummy_io_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire [31:0] dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 46:21] + wire bus_switch_clock; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_reset; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_address; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_0_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_0_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [3:0] bus_switch_io_slaves_0_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_0_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_0_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_0_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_1_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_1_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_1_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_1_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_1_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_1_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_2_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_2_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_2_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_2_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_2_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_3_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_3_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_3_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_3_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_3_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_3_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_4_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_4_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_4_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_4_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_4_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_5_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_5_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_5_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_5_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_5_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_5_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_6_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_6_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_6_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_6_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_6_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_6_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_7_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_7_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_7_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_7_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_slaves_7_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_slaves_7_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_master_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_master_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [3:0] bus_switch_io_master_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_master_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire bus_switch_io_master_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire [31:0] bus_switch_io_master_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 48:26] + wire instruction_rom_clock; // @[src/main/scala/board/z710/z710/Top.scala 50:31] + wire [31:0] instruction_rom_io_address; // @[src/main/scala/board/z710/z710/Top.scala 50:31] + wire [31:0] instruction_rom_io_data; // @[src/main/scala/board/z710/z710/Top.scala 50:31] + wire rom_loader_clock; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_reset; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [31:0] rom_loader_io_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [31:0] rom_loader_io_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [3:0] rom_loader_io_channels_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [31:0] rom_loader_io_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [31:0] rom_loader_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [31:0] rom_loader_io_rom_address; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire [31:0] rom_loader_io_rom_data; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_load_start; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + wire rom_loader_io_load_finished; // @[src/main/scala/board/z710/z710/Top.scala 51:26] + reg [1:0] boot_state; // @[src/main/scala/board/z710/z710/Top.scala 37:27] + wire _GEN_1 = 2'h3 == boot_state ? 1'h0 : 1'h1; // @[src/main/scala/board/z710/z710/Top.scala 68:22 64:25 82:29] + wire _GEN_4 = 2'h1 == boot_state ? rom_loader_io_channels_write_address_channel_AWVALID : + bus_switch_io_slaves_0_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_5 = 2'h1 == boot_state ? mem_io_channels_write_address_channel_AWREADY : + dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 68:22 67:26 76:30] + wire [31:0] _GEN_6 = 2'h1 == boot_state ? rom_loader_io_channels_write_address_channel_AWADDR : + bus_switch_io_slaves_0_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_8 = 2'h1 == boot_state ? rom_loader_io_channels_write_data_channel_WVALID : + bus_switch_io_slaves_0_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_9 = 2'h1 == boot_state ? mem_io_channels_write_data_channel_WREADY : + dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 68:22 67:26 76:30] + wire [31:0] _GEN_10 = 2'h1 == boot_state ? rom_loader_io_channels_write_data_channel_WDATA : + bus_switch_io_slaves_0_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire [3:0] _GEN_11 = 2'h1 == boot_state ? rom_loader_io_channels_write_data_channel_WSTRB : + bus_switch_io_slaves_0_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_12 = 2'h1 == boot_state ? mem_io_channels_write_response_channel_BVALID : + dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 68:22 67:26 76:30] + wire _GEN_13 = 2'h1 == boot_state ? rom_loader_io_channels_write_response_channel_BREADY : + bus_switch_io_slaves_0_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_15 = 2'h1 == boot_state ? rom_loader_io_channels_read_address_channel_ARVALID : + bus_switch_io_slaves_0_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_16 = 2'h1 == boot_state ? mem_io_channels_read_address_channel_ARREADY : + dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 68:22 67:26 76:30] + wire [31:0] _GEN_17 = 2'h1 == boot_state ? rom_loader_io_channels_read_address_channel_ARADDR : + bus_switch_io_slaves_0_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire _GEN_19 = 2'h1 == boot_state ? mem_io_channels_read_data_channel_RVALID : + dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 68:22 67:26 76:30] + wire _GEN_20 = 2'h1 == boot_state ? rom_loader_io_channels_read_data_channel_RREADY : + bus_switch_io_slaves_0_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 68:22 66:27 76:30] + wire [31:0] _GEN_21 = 2'h1 == boot_state ? mem_io_channels_read_data_channel_RDATA : + dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 68:22 67:26 76:30] + wire _GEN_25 = 2'h1 == boot_state ? 1'h0 : 2'h3 == boot_state; // @[src/main/scala/board/z710/z710/Top.scala 68:22 65:28] + wire [1:0] _cpu_io_interrupt_flag_T = {uart_io_signal_interrupt,timer_io_signal_interrupt}; // @[src/main/scala/board/z710/z710/Top.scala 90:31] + reg [31:0] led_count; // @[src/main/scala/board/z710/z710/Top.scala 99:26] + wire [31:0] _led_count_T_1 = led_count + 32'h1; // @[src/main/scala/board/z710/z710/Top.scala 103:28] + Uart uart ( // @[src/main/scala/board/z710/z710/Top.scala 39:20] + .clock(uart_clock), + .reset(uart_reset), + .io_channels_write_address_channel_AWVALID(uart_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(uart_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(uart_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(uart_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(uart_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(uart_io_channels_write_data_channel_WDATA), + .io_channels_write_response_channel_BVALID(uart_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(uart_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(uart_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(uart_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(uart_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(uart_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(uart_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(uart_io_channels_read_data_channel_RDATA), + .io_rxd(uart_io_rxd), + .io_txd(uart_io_txd), + .io_signal_interrupt(uart_io_signal_interrupt) + ); + CPU_1 cpu ( // @[src/main/scala/board/z710/z710/Top.scala 43:19] + .clock(cpu_clock), + .reset(cpu_reset), + .io_axi4_channels_write_address_channel_AWVALID(cpu_io_axi4_channels_write_address_channel_AWVALID), + .io_axi4_channels_write_address_channel_AWREADY(cpu_io_axi4_channels_write_address_channel_AWREADY), + .io_axi4_channels_write_address_channel_AWADDR(cpu_io_axi4_channels_write_address_channel_AWADDR), + .io_axi4_channels_write_data_channel_WVALID(cpu_io_axi4_channels_write_data_channel_WVALID), + .io_axi4_channels_write_data_channel_WREADY(cpu_io_axi4_channels_write_data_channel_WREADY), + .io_axi4_channels_write_data_channel_WDATA(cpu_io_axi4_channels_write_data_channel_WDATA), + .io_axi4_channels_write_data_channel_WSTRB(cpu_io_axi4_channels_write_data_channel_WSTRB), + .io_axi4_channels_write_response_channel_BVALID(cpu_io_axi4_channels_write_response_channel_BVALID), + .io_axi4_channels_write_response_channel_BREADY(cpu_io_axi4_channels_write_response_channel_BREADY), + .io_axi4_channels_read_address_channel_ARVALID(cpu_io_axi4_channels_read_address_channel_ARVALID), + .io_axi4_channels_read_address_channel_ARREADY(cpu_io_axi4_channels_read_address_channel_ARREADY), + .io_axi4_channels_read_address_channel_ARADDR(cpu_io_axi4_channels_read_address_channel_ARADDR), + .io_axi4_channels_read_data_channel_RVALID(cpu_io_axi4_channels_read_data_channel_RVALID), + .io_axi4_channels_read_data_channel_RREADY(cpu_io_axi4_channels_read_data_channel_RREADY), + .io_axi4_channels_read_data_channel_RDATA(cpu_io_axi4_channels_read_data_channel_RDATA), + .io_bus_address(cpu_io_bus_address), + .io_interrupt_flag(cpu_io_interrupt_flag), + .io_stall_flag_bus(cpu_io_stall_flag_bus), + .io_instruction_valid(cpu_io_instruction_valid) + ); + Memory mem ( // @[src/main/scala/board/z710/z710/Top.scala 44:19] + .clock(mem_clock), + .reset(mem_reset), + .io_channels_write_address_channel_AWVALID(mem_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(mem_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(mem_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(mem_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(mem_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(mem_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(mem_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(mem_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(mem_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(mem_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(mem_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(mem_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(mem_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(mem_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(mem_io_channels_read_data_channel_RDATA) + ); + Timer timer ( // @[src/main/scala/board/z710/z710/Top.scala 45:21] + .clock(timer_clock), + .reset(timer_reset), + .io_channels_write_address_channel_AWVALID(timer_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(timer_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(timer_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(timer_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(timer_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(timer_io_channels_write_data_channel_WDATA), + .io_channels_write_response_channel_BVALID(timer_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(timer_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(timer_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(timer_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(timer_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(timer_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(timer_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(timer_io_channels_read_data_channel_RDATA), + .io_signal_interrupt(timer_io_signal_interrupt) + ); + DummySlave dummy ( // @[src/main/scala/board/z710/z710/Top.scala 46:21] + .clock(dummy_clock), + .reset(dummy_reset), + .io_channels_write_address_channel_AWVALID(dummy_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(dummy_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(dummy_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(dummy_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(dummy_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(dummy_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(dummy_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(dummy_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(dummy_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(dummy_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(dummy_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(dummy_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(dummy_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(dummy_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(dummy_io_channels_read_data_channel_RDATA) + ); + BusSwitch bus_switch ( // @[src/main/scala/board/z710/z710/Top.scala 48:26] + .clock(bus_switch_clock), + .reset(bus_switch_reset), + .io_address(bus_switch_io_address), + .io_slaves_0_write_address_channel_AWVALID(bus_switch_io_slaves_0_write_address_channel_AWVALID), + .io_slaves_0_write_address_channel_AWREADY(bus_switch_io_slaves_0_write_address_channel_AWREADY), + .io_slaves_0_write_address_channel_AWADDR(bus_switch_io_slaves_0_write_address_channel_AWADDR), + .io_slaves_0_write_data_channel_WVALID(bus_switch_io_slaves_0_write_data_channel_WVALID), + .io_slaves_0_write_data_channel_WREADY(bus_switch_io_slaves_0_write_data_channel_WREADY), + .io_slaves_0_write_data_channel_WDATA(bus_switch_io_slaves_0_write_data_channel_WDATA), + .io_slaves_0_write_data_channel_WSTRB(bus_switch_io_slaves_0_write_data_channel_WSTRB), + .io_slaves_0_write_response_channel_BVALID(bus_switch_io_slaves_0_write_response_channel_BVALID), + .io_slaves_0_write_response_channel_BREADY(bus_switch_io_slaves_0_write_response_channel_BREADY), + .io_slaves_0_read_address_channel_ARVALID(bus_switch_io_slaves_0_read_address_channel_ARVALID), + .io_slaves_0_read_address_channel_ARREADY(bus_switch_io_slaves_0_read_address_channel_ARREADY), + .io_slaves_0_read_address_channel_ARADDR(bus_switch_io_slaves_0_read_address_channel_ARADDR), + .io_slaves_0_read_data_channel_RVALID(bus_switch_io_slaves_0_read_data_channel_RVALID), + .io_slaves_0_read_data_channel_RREADY(bus_switch_io_slaves_0_read_data_channel_RREADY), + .io_slaves_0_read_data_channel_RDATA(bus_switch_io_slaves_0_read_data_channel_RDATA), + .io_slaves_1_write_address_channel_AWREADY(bus_switch_io_slaves_1_write_address_channel_AWREADY), + .io_slaves_1_write_data_channel_WREADY(bus_switch_io_slaves_1_write_data_channel_WREADY), + .io_slaves_1_write_response_channel_BVALID(bus_switch_io_slaves_1_write_response_channel_BVALID), + .io_slaves_1_read_address_channel_ARREADY(bus_switch_io_slaves_1_read_address_channel_ARREADY), + .io_slaves_1_read_data_channel_RVALID(bus_switch_io_slaves_1_read_data_channel_RVALID), + .io_slaves_1_read_data_channel_RDATA(bus_switch_io_slaves_1_read_data_channel_RDATA), + .io_slaves_2_write_address_channel_AWVALID(bus_switch_io_slaves_2_write_address_channel_AWVALID), + .io_slaves_2_write_address_channel_AWREADY(bus_switch_io_slaves_2_write_address_channel_AWREADY), + .io_slaves_2_write_address_channel_AWADDR(bus_switch_io_slaves_2_write_address_channel_AWADDR), + .io_slaves_2_write_data_channel_WVALID(bus_switch_io_slaves_2_write_data_channel_WVALID), + .io_slaves_2_write_data_channel_WREADY(bus_switch_io_slaves_2_write_data_channel_WREADY), + .io_slaves_2_write_data_channel_WDATA(bus_switch_io_slaves_2_write_data_channel_WDATA), + .io_slaves_2_write_response_channel_BVALID(bus_switch_io_slaves_2_write_response_channel_BVALID), + .io_slaves_2_write_response_channel_BREADY(bus_switch_io_slaves_2_write_response_channel_BREADY), + .io_slaves_2_read_address_channel_ARVALID(bus_switch_io_slaves_2_read_address_channel_ARVALID), + .io_slaves_2_read_address_channel_ARREADY(bus_switch_io_slaves_2_read_address_channel_ARREADY), + .io_slaves_2_read_address_channel_ARADDR(bus_switch_io_slaves_2_read_address_channel_ARADDR), + .io_slaves_2_read_data_channel_RVALID(bus_switch_io_slaves_2_read_data_channel_RVALID), + .io_slaves_2_read_data_channel_RREADY(bus_switch_io_slaves_2_read_data_channel_RREADY), + .io_slaves_2_read_data_channel_RDATA(bus_switch_io_slaves_2_read_data_channel_RDATA), + .io_slaves_3_write_address_channel_AWREADY(bus_switch_io_slaves_3_write_address_channel_AWREADY), + .io_slaves_3_write_data_channel_WREADY(bus_switch_io_slaves_3_write_data_channel_WREADY), + .io_slaves_3_write_response_channel_BVALID(bus_switch_io_slaves_3_write_response_channel_BVALID), + .io_slaves_3_read_address_channel_ARREADY(bus_switch_io_slaves_3_read_address_channel_ARREADY), + .io_slaves_3_read_data_channel_RVALID(bus_switch_io_slaves_3_read_data_channel_RVALID), + .io_slaves_3_read_data_channel_RDATA(bus_switch_io_slaves_3_read_data_channel_RDATA), + .io_slaves_4_write_address_channel_AWVALID(bus_switch_io_slaves_4_write_address_channel_AWVALID), + .io_slaves_4_write_address_channel_AWREADY(bus_switch_io_slaves_4_write_address_channel_AWREADY), + .io_slaves_4_write_address_channel_AWADDR(bus_switch_io_slaves_4_write_address_channel_AWADDR), + .io_slaves_4_write_data_channel_WVALID(bus_switch_io_slaves_4_write_data_channel_WVALID), + .io_slaves_4_write_data_channel_WREADY(bus_switch_io_slaves_4_write_data_channel_WREADY), + .io_slaves_4_write_data_channel_WDATA(bus_switch_io_slaves_4_write_data_channel_WDATA), + .io_slaves_4_write_response_channel_BVALID(bus_switch_io_slaves_4_write_response_channel_BVALID), + .io_slaves_4_write_response_channel_BREADY(bus_switch_io_slaves_4_write_response_channel_BREADY), + .io_slaves_4_read_address_channel_ARVALID(bus_switch_io_slaves_4_read_address_channel_ARVALID), + .io_slaves_4_read_address_channel_ARREADY(bus_switch_io_slaves_4_read_address_channel_ARREADY), + .io_slaves_4_read_address_channel_ARADDR(bus_switch_io_slaves_4_read_address_channel_ARADDR), + .io_slaves_4_read_data_channel_RVALID(bus_switch_io_slaves_4_read_data_channel_RVALID), + .io_slaves_4_read_data_channel_RREADY(bus_switch_io_slaves_4_read_data_channel_RREADY), + .io_slaves_4_read_data_channel_RDATA(bus_switch_io_slaves_4_read_data_channel_RDATA), + .io_slaves_5_write_address_channel_AWREADY(bus_switch_io_slaves_5_write_address_channel_AWREADY), + .io_slaves_5_write_data_channel_WREADY(bus_switch_io_slaves_5_write_data_channel_WREADY), + .io_slaves_5_write_response_channel_BVALID(bus_switch_io_slaves_5_write_response_channel_BVALID), + .io_slaves_5_read_address_channel_ARREADY(bus_switch_io_slaves_5_read_address_channel_ARREADY), + .io_slaves_5_read_data_channel_RVALID(bus_switch_io_slaves_5_read_data_channel_RVALID), + .io_slaves_5_read_data_channel_RDATA(bus_switch_io_slaves_5_read_data_channel_RDATA), + .io_slaves_6_write_address_channel_AWREADY(bus_switch_io_slaves_6_write_address_channel_AWREADY), + .io_slaves_6_write_data_channel_WREADY(bus_switch_io_slaves_6_write_data_channel_WREADY), + .io_slaves_6_write_response_channel_BVALID(bus_switch_io_slaves_6_write_response_channel_BVALID), + .io_slaves_6_read_address_channel_ARREADY(bus_switch_io_slaves_6_read_address_channel_ARREADY), + .io_slaves_6_read_data_channel_RVALID(bus_switch_io_slaves_6_read_data_channel_RVALID), + .io_slaves_6_read_data_channel_RDATA(bus_switch_io_slaves_6_read_data_channel_RDATA), + .io_slaves_7_write_address_channel_AWREADY(bus_switch_io_slaves_7_write_address_channel_AWREADY), + .io_slaves_7_write_data_channel_WREADY(bus_switch_io_slaves_7_write_data_channel_WREADY), + .io_slaves_7_write_response_channel_BVALID(bus_switch_io_slaves_7_write_response_channel_BVALID), + .io_slaves_7_read_address_channel_ARREADY(bus_switch_io_slaves_7_read_address_channel_ARREADY), + .io_slaves_7_read_data_channel_RVALID(bus_switch_io_slaves_7_read_data_channel_RVALID), + .io_slaves_7_read_data_channel_RDATA(bus_switch_io_slaves_7_read_data_channel_RDATA), + .io_master_write_address_channel_AWVALID(bus_switch_io_master_write_address_channel_AWVALID), + .io_master_write_address_channel_AWREADY(bus_switch_io_master_write_address_channel_AWREADY), + .io_master_write_address_channel_AWADDR(bus_switch_io_master_write_address_channel_AWADDR), + .io_master_write_data_channel_WVALID(bus_switch_io_master_write_data_channel_WVALID), + .io_master_write_data_channel_WREADY(bus_switch_io_master_write_data_channel_WREADY), + .io_master_write_data_channel_WDATA(bus_switch_io_master_write_data_channel_WDATA), + .io_master_write_data_channel_WSTRB(bus_switch_io_master_write_data_channel_WSTRB), + .io_master_write_response_channel_BVALID(bus_switch_io_master_write_response_channel_BVALID), + .io_master_write_response_channel_BREADY(bus_switch_io_master_write_response_channel_BREADY), + .io_master_read_address_channel_ARVALID(bus_switch_io_master_read_address_channel_ARVALID), + .io_master_read_address_channel_ARREADY(bus_switch_io_master_read_address_channel_ARREADY), + .io_master_read_address_channel_ARADDR(bus_switch_io_master_read_address_channel_ARADDR), + .io_master_read_data_channel_RVALID(bus_switch_io_master_read_data_channel_RVALID), + .io_master_read_data_channel_RREADY(bus_switch_io_master_read_data_channel_RREADY), + .io_master_read_data_channel_RDATA(bus_switch_io_master_read_data_channel_RDATA) + ); + InstructionROM instruction_rom ( // @[src/main/scala/board/z710/z710/Top.scala 50:31] + .clock(instruction_rom_clock), + .io_address(instruction_rom_io_address), + .io_data(instruction_rom_io_data) + ); + ROMLoader rom_loader ( // @[src/main/scala/board/z710/z710/Top.scala 51:26] + .clock(rom_loader_clock), + .reset(rom_loader_reset), + .io_channels_write_address_channel_AWVALID(rom_loader_io_channels_write_address_channel_AWVALID), + .io_channels_write_address_channel_AWREADY(rom_loader_io_channels_write_address_channel_AWREADY), + .io_channels_write_address_channel_AWADDR(rom_loader_io_channels_write_address_channel_AWADDR), + .io_channels_write_data_channel_WVALID(rom_loader_io_channels_write_data_channel_WVALID), + .io_channels_write_data_channel_WREADY(rom_loader_io_channels_write_data_channel_WREADY), + .io_channels_write_data_channel_WDATA(rom_loader_io_channels_write_data_channel_WDATA), + .io_channels_write_data_channel_WSTRB(rom_loader_io_channels_write_data_channel_WSTRB), + .io_channels_write_response_channel_BVALID(rom_loader_io_channels_write_response_channel_BVALID), + .io_channels_write_response_channel_BREADY(rom_loader_io_channels_write_response_channel_BREADY), + .io_channels_read_address_channel_ARVALID(rom_loader_io_channels_read_address_channel_ARVALID), + .io_channels_read_address_channel_ARREADY(rom_loader_io_channels_read_address_channel_ARREADY), + .io_channels_read_address_channel_ARADDR(rom_loader_io_channels_read_address_channel_ARADDR), + .io_channels_read_data_channel_RVALID(rom_loader_io_channels_read_data_channel_RVALID), + .io_channels_read_data_channel_RREADY(rom_loader_io_channels_read_data_channel_RREADY), + .io_channels_read_data_channel_RDATA(rom_loader_io_channels_read_data_channel_RDATA), + .io_rom_address(rom_loader_io_rom_address), + .io_rom_data(rom_loader_io_rom_data), + .io_load_start(rom_loader_io_load_start), + .io_load_finished(rom_loader_io_load_finished) + ); + assign io_led = led_count >= 32'h2faf080; // @[src/main/scala/board/z710/z710/Top.scala 106:24] + assign io_tx = uart_io_txd; // @[src/main/scala/board/z710/z710/Top.scala 40:9] + assign uart_clock = clock; + assign uart_reset = reset; + assign uart_io_channels_write_address_channel_AWVALID = bus_switch_io_slaves_2_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_write_address_channel_AWADDR = bus_switch_io_slaves_2_write_address_channel_AWADDR[7:0]; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_write_data_channel_WVALID = bus_switch_io_slaves_2_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_write_data_channel_WDATA = bus_switch_io_slaves_2_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_write_response_channel_BREADY = bus_switch_io_slaves_2_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_read_address_channel_ARVALID = bus_switch_io_slaves_2_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_read_address_channel_ARADDR = bus_switch_io_slaves_2_read_address_channel_ARADDR[7:0]; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_channels_read_data_channel_RREADY = bus_switch_io_slaves_2_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign uart_io_rxd = io_rx; // @[src/main/scala/board/z710/z710/Top.scala 41:15] + assign cpu_clock = clock; + assign cpu_reset = reset; + assign cpu_io_axi4_channels_write_address_channel_AWREADY = bus_switch_io_master_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign cpu_io_axi4_channels_write_data_channel_WREADY = bus_switch_io_master_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign cpu_io_axi4_channels_write_response_channel_BVALID = bus_switch_io_master_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign cpu_io_axi4_channels_read_address_channel_ARREADY = bus_switch_io_master_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign cpu_io_axi4_channels_read_data_channel_RVALID = bus_switch_io_master_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign cpu_io_axi4_channels_read_data_channel_RDATA = bus_switch_io_master_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign cpu_io_interrupt_flag = {{30'd0}, _cpu_io_interrupt_flag_T}; // @[src/main/scala/board/z710/z710/Top.scala 90:25] + assign cpu_io_stall_flag_bus = 2'h0 == boot_state | (2'h1 == boot_state | _GEN_1); // @[src/main/scala/board/z710/z710/Top.scala 68:22 64:25] + assign cpu_io_instruction_valid = 2'h0 == boot_state ? 1'h0 : _GEN_25; // @[src/main/scala/board/z710/z710/Top.scala 68:22 65:28] + assign mem_clock = clock; + assign mem_reset = reset; + assign mem_io_channels_write_address_channel_AWVALID = 2'h0 == boot_state ? + rom_loader_io_channels_write_address_channel_AWVALID : _GEN_4; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_write_address_channel_AWADDR = 2'h0 == boot_state ? + rom_loader_io_channels_write_address_channel_AWADDR : _GEN_6; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_write_data_channel_WVALID = 2'h0 == boot_state ? + rom_loader_io_channels_write_data_channel_WVALID : _GEN_8; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_write_data_channel_WDATA = 2'h0 == boot_state ? rom_loader_io_channels_write_data_channel_WDATA + : _GEN_10; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_write_data_channel_WSTRB = 2'h0 == boot_state ? rom_loader_io_channels_write_data_channel_WSTRB + : _GEN_11; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_write_response_channel_BREADY = 2'h0 == boot_state ? + rom_loader_io_channels_write_response_channel_BREADY : _GEN_13; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_read_address_channel_ARVALID = 2'h0 == boot_state ? + rom_loader_io_channels_read_address_channel_ARVALID : _GEN_15; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_read_address_channel_ARADDR = 2'h0 == boot_state ? + rom_loader_io_channels_read_address_channel_ARADDR : _GEN_17; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign mem_io_channels_read_data_channel_RREADY = 2'h0 == boot_state ? rom_loader_io_channels_read_data_channel_RREADY + : _GEN_20; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign timer_clock = clock; + assign timer_reset = reset; + assign timer_io_channels_write_address_channel_AWVALID = bus_switch_io_slaves_4_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_write_address_channel_AWADDR = bus_switch_io_slaves_4_write_address_channel_AWADDR[7:0]; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_write_data_channel_WVALID = bus_switch_io_slaves_4_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_write_data_channel_WDATA = bus_switch_io_slaves_4_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_write_response_channel_BREADY = bus_switch_io_slaves_4_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_read_address_channel_ARVALID = bus_switch_io_slaves_4_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_read_address_channel_ARADDR = bus_switch_io_slaves_4_read_address_channel_ARADDR[7:0]; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign timer_io_channels_read_data_channel_RREADY = bus_switch_io_slaves_4_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign dummy_clock = clock; + assign dummy_reset = reset; + assign dummy_io_channels_write_address_channel_AWVALID = rom_loader_io_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_write_address_channel_AWADDR = rom_loader_io_channels_write_address_channel_AWADDR[3:0]; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_write_data_channel_WVALID = rom_loader_io_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_write_data_channel_WDATA = rom_loader_io_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_write_data_channel_WSTRB = rom_loader_io_channels_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_write_response_channel_BREADY = rom_loader_io_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_read_address_channel_ARVALID = rom_loader_io_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_read_address_channel_ARADDR = rom_loader_io_channels_read_address_channel_ARADDR[3:0]; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign dummy_io_channels_read_data_channel_RREADY = rom_loader_io_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 67:26] + assign bus_switch_clock = clock; + assign bus_switch_reset = reset; + assign bus_switch_io_address = cpu_io_bus_address; // @[src/main/scala/board/z710/z710/Top.scala 56:25] + assign bus_switch_io_slaves_0_write_address_channel_AWREADY = mem_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 66:27] + assign bus_switch_io_slaves_0_write_data_channel_WREADY = mem_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 66:27] + assign bus_switch_io_slaves_0_write_response_channel_BVALID = mem_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 66:27] + assign bus_switch_io_slaves_0_read_address_channel_ARREADY = mem_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 66:27] + assign bus_switch_io_slaves_0_read_data_channel_RVALID = mem_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 66:27] + assign bus_switch_io_slaves_0_read_data_channel_RDATA = mem_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 66:27] + assign bus_switch_io_slaves_1_write_address_channel_AWREADY = dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_1_write_data_channel_WREADY = dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_1_write_response_channel_BVALID = dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_1_read_address_channel_ARREADY = dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_1_read_data_channel_RVALID = dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_1_read_data_channel_RDATA = dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_2_write_address_channel_AWREADY = uart_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign bus_switch_io_slaves_2_write_data_channel_WREADY = uart_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign bus_switch_io_slaves_2_write_response_channel_BVALID = uart_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign bus_switch_io_slaves_2_read_address_channel_ARREADY = uart_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign bus_switch_io_slaves_2_read_data_channel_RVALID = uart_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign bus_switch_io_slaves_2_read_data_channel_RDATA = uart_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 87:27] + assign bus_switch_io_slaves_3_write_address_channel_AWREADY = dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_3_write_data_channel_WREADY = dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_3_write_response_channel_BVALID = dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_3_read_address_channel_ARREADY = dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_3_read_data_channel_RVALID = dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_3_read_data_channel_RDATA = dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_4_write_address_channel_AWREADY = timer_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign bus_switch_io_slaves_4_write_data_channel_WREADY = timer_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign bus_switch_io_slaves_4_write_response_channel_BVALID = timer_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign bus_switch_io_slaves_4_read_address_channel_ARREADY = timer_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign bus_switch_io_slaves_4_read_data_channel_RVALID = timer_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign bus_switch_io_slaves_4_read_data_channel_RDATA = timer_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 88:27] + assign bus_switch_io_slaves_5_write_address_channel_AWREADY = dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_5_write_data_channel_WREADY = dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_5_write_response_channel_BVALID = dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_5_read_address_channel_ARREADY = dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_5_read_data_channel_RVALID = dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_5_read_data_channel_RDATA = dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_6_write_address_channel_AWREADY = dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_6_write_data_channel_WREADY = dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_6_write_response_channel_BVALID = dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_6_read_address_channel_ARREADY = dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_6_read_data_channel_RVALID = dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_6_read_data_channel_RDATA = dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_7_write_address_channel_AWREADY = dummy_io_channels_write_address_channel_AWREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_7_write_data_channel_WREADY = dummy_io_channels_write_data_channel_WREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_7_write_response_channel_BVALID = dummy_io_channels_write_response_channel_BVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_7_read_address_channel_ARREADY = dummy_io_channels_read_address_channel_ARREADY; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_7_read_data_channel_RVALID = dummy_io_channels_read_data_channel_RVALID; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_slaves_7_read_data_channel_RDATA = dummy_io_channels_read_data_channel_RDATA; // @[src/main/scala/board/z710/z710/Top.scala 58:29] + assign bus_switch_io_master_write_address_channel_AWVALID = cpu_io_axi4_channels_write_address_channel_AWVALID; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_write_address_channel_AWADDR = cpu_io_axi4_channels_write_address_channel_AWADDR; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_write_data_channel_WVALID = cpu_io_axi4_channels_write_data_channel_WVALID; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_write_data_channel_WDATA = cpu_io_axi4_channels_write_data_channel_WDATA; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_write_data_channel_WSTRB = cpu_io_axi4_channels_write_data_channel_WSTRB; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_write_response_channel_BREADY = cpu_io_axi4_channels_write_response_channel_BREADY; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_read_address_channel_ARVALID = cpu_io_axi4_channels_read_address_channel_ARVALID; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_read_address_channel_ARADDR = cpu_io_axi4_channels_read_address_channel_ARADDR; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign bus_switch_io_master_read_data_channel_RREADY = cpu_io_axi4_channels_read_data_channel_RREADY; // @[src/main/scala/board/z710/z710/Top.scala 55:24] + assign instruction_rom_clock = clock; + assign instruction_rom_io_address = rom_loader_io_rom_address; // @[src/main/scala/board/z710/z710/Top.scala 63:30] + assign rom_loader_clock = clock; + assign rom_loader_reset = reset; + assign rom_loader_io_channels_write_address_channel_AWREADY = 2'h0 == boot_state ? + mem_io_channels_write_address_channel_AWREADY : _GEN_5; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign rom_loader_io_channels_write_data_channel_WREADY = 2'h0 == boot_state ? + mem_io_channels_write_data_channel_WREADY : _GEN_9; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign rom_loader_io_channels_write_response_channel_BVALID = 2'h0 == boot_state ? + mem_io_channels_write_response_channel_BVALID : _GEN_12; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign rom_loader_io_channels_read_address_channel_ARREADY = 2'h0 == boot_state ? + mem_io_channels_read_address_channel_ARREADY : _GEN_16; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign rom_loader_io_channels_read_data_channel_RVALID = 2'h0 == boot_state ? mem_io_channels_read_data_channel_RVALID + : _GEN_19; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign rom_loader_io_channels_read_data_channel_RDATA = 2'h0 == boot_state ? mem_io_channels_read_data_channel_RDATA + : _GEN_21; // @[src/main/scala/board/z710/z710/Top.scala 68:22 72:30] + assign rom_loader_io_rom_data = instruction_rom_io_data; // @[src/main/scala/board/z710/z710/Top.scala 62:26] + assign rom_loader_io_load_start = 2'h0 == boot_state; // @[src/main/scala/board/z710/z710/Top.scala 68:22] + always @(posedge clock) begin + if (reset) begin // @[src/main/scala/board/z710/z710/Top.scala 37:27] + boot_state <= 2'h0; // @[src/main/scala/board/z710/z710/Top.scala 37:27] + end else if (2'h0 == boot_state) begin // @[src/main/scala/board/z710/z710/Top.scala 68:22] + boot_state <= 2'h1; // @[src/main/scala/board/z710/z710/Top.scala 71:18] + end else if (2'h1 == boot_state) begin // @[src/main/scala/board/z710/z710/Top.scala 68:22] + if (rom_loader_io_load_finished) begin // @[src/main/scala/board/z710/z710/Top.scala 77:41] + boot_state <= 2'h3; // @[src/main/scala/board/z710/z710/Top.scala 78:20] + end + end + if (reset) begin // @[src/main/scala/board/z710/z710/Top.scala 99:26] + led_count <= 32'h0; // @[src/main/scala/board/z710/z710/Top.scala 99:26] + end else if (led_count >= 32'h5f5e100) begin // @[src/main/scala/board/z710/z710/Top.scala 100:34] + led_count <= 32'h0; // @[src/main/scala/board/z710/z710/Top.scala 101:15] + end else begin + led_count <= _led_count_T_1; // @[src/main/scala/board/z710/z710/Top.scala 103: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}}; + boot_state = _RAND_0[1:0]; + _RAND_1 = {1{`RANDOM}}; + led_count = _RAND_1[31:0]; +`endif // RANDOMIZE_REG_INIT + `endif // RANDOMIZE +end // initial +`ifdef FIRRTL_AFTER_INITIAL +`FIRRTL_AFTER_INITIAL +`endif +`endif // SYNTHESIS +endmodule diff --git a/lab4/vivado/z710/riscv-z710.tcl b/lab4/vivado/z710/riscv-z710.tcl deleted file mode 100644 index 4c115d1..0000000 --- a/lab4/vivado/z710/riscv-z710.tcl +++ /dev/null @@ -1,1267 +0,0 @@ -#***************************************************************************************** -# Vivado (TM) v2020.1 (64-bit) -# -# riscv-z710.tcl: Tcl script for re-creating project 'riscv-z710' -# -# Generated by Vivado on Sun Dec 10 23:14:15 +0800 2023 -# IP Build 2902112 on Wed May 27 22:43:36 MDT 2020 -# -# This file contains the Vivado Tcl commands for re-creating the project to the state* -# when this script was generated. In order to re-create the project, please source this -# file in the Vivado Tcl Shell. -# -# * Note that the runs in the created project will be configured the same way as the -# original project, however they will not be launched automatically. To regenerate the -# run results please launch the synthesis/implementation runs as needed. -# -#***************************************************************************************** -# NOTE: In order to use this script for source control purposes, please make sure that the -# following files are added to the source control system:- -# -# 1. This project restoration tcl script (riscv-z710.tcl) that was generated. -# -# 2. The following source(s) files that were local or imported into the original project. -# (Please see the '$orig_proj_dir' and '$origin_dir' variable setting below at the start of the script) -# -# "C:/Users/21168/Desktop/yatcpu/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/design_1.bd" -# "C:/Users/21168/Desktop/yatcpu/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v" -# -# 3. The following remote source files that were added to the original project:- -# -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/clock_control.v" -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/Top.v" -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/Top_reset.v" -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/pass_through.v" -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/uart_control.v" -# "C:/Users/21168/Desktop/yatcpu/vivado/z710/z710.xdc" -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/test.v" -# "C:/Users/21168/Desktop/yatcpu/verilog/z710/top_test.v" -# -#***************************************************************************************** - -# Set the reference directory for source file relative paths (by default the value is script directory path) -set origin_dir "." - -# Use origin directory path location variable, if specified in the tcl shell -if { [info exists ::origin_dir_loc] } { - set origin_dir $::origin_dir_loc -} - -# Set the project name -set _xil_proj_name_ "riscv-z710" - -# Use project name variable, if specified in the tcl shell -if { [info exists ::user_project_name] } { - set _xil_proj_name_ $::user_project_name -} - -variable script_file -set script_file "riscv-z710.tcl" - -# Help information for this script -proc print_help {} { - variable script_file - puts "\nDescription:" - puts "Recreate a Vivado project from this script. The created project will be" - puts "functionally equivalent to the original project for which this script was" - puts "generated. The script contains commands for creating a project, filesets," - puts "runs, adding/importing sources and setting properties on various objects.\n" - puts "Syntax:" - puts "$script_file" - puts "$script_file -tclargs \[--origin_dir \]" - puts "$script_file -tclargs \[--project_name \]" - puts "$script_file -tclargs \[--help\]\n" - puts "Usage:" - puts "Name Description" - puts "-------------------------------------------------------------------------" - puts "\[--origin_dir \] Determine source file paths wrt this path. Default" - puts " origin_dir path value is \".\", otherwise, the value" - puts " that was set with the \"-paths_relative_to\" switch" - puts " when this script was generated.\n" - puts "\[--project_name \] Create project with the specified name. Default" - puts " name is the name of the project from where this" - puts " script was generated.\n" - puts "\[--help\] Print help information for this script" - puts "-------------------------------------------------------------------------\n" - exit 0 -} - -if { $::argc > 0 } { - for {set i 0} {$i < $::argc} {incr i} { - set option [string trim [lindex $::argv $i]] - switch -regexp -- $option { - "--origin_dir" { incr i; set origin_dir [lindex $::argv $i] } - "--project_name" { incr i; set _xil_proj_name_ [lindex $::argv $i] } - "--help" { print_help } - default { - if { [regexp {^-} $option] } { - puts "ERROR: Unknown option '$option' specified, please type '$script_file -tclargs --help' for usage info.\n" - return 1 - } - } - } - } -} - -# Set the directory path for the original project from where this script was exported -set orig_proj_dir "[file normalize "$origin_dir/riscv-z710"]" - -# Create project -create_project ${_xil_proj_name_} ./${_xil_proj_name_} -part xc7z010clg400-1 - -# Set the directory path for the new project -set proj_dir [get_property directory [current_project]] - -# Set project properties -set obj [current_project] -set_property -name "default_lib" -value "xil_defaultlib" -objects $obj -set_property -name "enable_vhdl_2008" -value "1" -objects $obj -set_property -name "ip_cache_permissions" -value "read write" -objects $obj -set_property -name "ip_output_repo" -value "$proj_dir/${_xil_proj_name_}.cache/ip" -objects $obj -set_property -name "mem.enable_memory_map_generation" -value "1" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "sim.central_dir" -value "$proj_dir/${_xil_proj_name_}.ip_user_files" -objects $obj -set_property -name "sim.ip.auto_export_scripts" -value "1" -objects $obj -set_property -name "simulator_language" -value "Mixed" -objects $obj - -# Create 'sources_1' fileset (if not found) -if {[string equal [get_filesets -quiet sources_1] ""]} { - create_fileset -srcset sources_1 -} - -# Set 'sources_1' fileset object -set obj [get_filesets sources_1] -set files [list \ - [file normalize "${origin_dir}/../../verilog/z710/clock_control.v"] \ - [file normalize "${origin_dir}/../../verilog/z710/Top.v"] \ - [file normalize "${origin_dir}/../../verilog/z710/Top_reset.v"] \ - [file normalize "${origin_dir}/../../verilog/z710/pass_through.v"] \ - [file normalize "${origin_dir}/../../verilog/z710/uart_control.v"] \ -] -add_files -norecurse -fileset $obj $files - -# Import local files from the original project -set files [list \ - [file normalize "${origin_dir}/../../verilog/z710/design_1.bd" ]\ - [file normalize "${origin_dir}/../../verilog/z710/design_1_wrapper.v" ]\ -] -set imported_files [import_files -fileset sources_1 $files] - -# Set 'sources_1' fileset file properties for remote files -# None - -# Set 'sources_1' fileset file properties for local files -set file [file normalize "${origin_dir}/../../verilog/z710/design_1.bd" ] -set file_obj [get_files -of_objects [get_filesets sources_1] [list $file]] -set_property -name "registered_with_manager" -value "1" -objects $file_obj - - -# Set 'sources_1' fileset properties -set obj [get_filesets sources_1] -set_property -name "top" -value "design_1_wrapper" -objects $obj -set_property -name "top_auto_set" -value "0" -objects $obj - -# Create 'design_1_Top_0_0' fileset (if not found) -if {[string equal [get_filesets -quiet design_1_Top_0_0] ""]} { - create_fileset -blockset design_1_Top_0_0 -} - -# Set 'design_1_Top_0_0' fileset object -set obj [get_filesets design_1_Top_0_0] -# Empty (no sources present) - -# Set 'design_1_Top_0_0' fileset properties -set obj [get_filesets design_1_Top_0_0] -set_property -name "top" -value "design_1_Top_0_0" -objects $obj -set_property -name "top_auto_set" -value "0" -objects $obj - -# Create 'design_1_processing_system7_0_0' fileset (if not found) -if {[string equal [get_filesets -quiet design_1_processing_system7_0_0] ""]} { - create_fileset -blockset design_1_processing_system7_0_0 -} - -# Set 'design_1_processing_system7_0_0' fileset object -set obj [get_filesets design_1_processing_system7_0_0] -# Empty (no sources present) - -# Set 'design_1_processing_system7_0_0' fileset properties -set obj [get_filesets design_1_processing_system7_0_0] -set_property -name "top" -value "design_1_processing_system7_0_0" -objects $obj -set_property -name "top_auto_set" -value "0" -objects $obj - -# Create 'design_1_clock_control_0_0' fileset (if not found) -if {[string equal [get_filesets -quiet design_1_clock_control_0_0] ""]} { - create_fileset -blockset design_1_clock_control_0_0 -} - -# Set 'design_1_clock_control_0_0' fileset object -set obj [get_filesets design_1_clock_control_0_0] -# Empty (no sources present) - -# Set 'design_1_clock_control_0_0' fileset properties -set obj [get_filesets design_1_clock_control_0_0] -set_property -name "top" -value "design_1_clock_control_0_0" -objects $obj -set_property -name "top_auto_set" -value "0" -objects $obj - -# Create 'constrs_1' fileset (if not found) -if {[string equal [get_filesets -quiet constrs_1] ""]} { - create_fileset -constrset constrs_1 -} - -# Set 'constrs_1' fileset object -set obj [get_filesets constrs_1] - -# Add/Import constrs file and set constrs file properties -set file "[file normalize "$origin_dir/z710.xdc"]" -set file_added [add_files -norecurse -fileset $obj [list $file]] -set file "$origin_dir/z710.xdc" -set file [file normalize $file] -set file_obj [get_files -of_objects [get_filesets constrs_1] [list "*$file"]] -set_property -name "file_type" -value "XDC" -objects $file_obj - -# Set 'constrs_1' fileset properties -set obj [get_filesets constrs_1] -set_property -name "target_part" -value "xc7z010clg400-1" -objects $obj - -# Create 'sim_1' fileset (if not found) -if {[string equal [get_filesets -quiet sim_1] ""]} { - create_fileset -simset sim_1 -} - -# Set 'sim_1' fileset object -set obj [get_filesets sim_1] -set files [list \ - [file normalize "${origin_dir}/../../verilog/z710/test.v"] \ - [file normalize "${origin_dir}/../../verilog/z710/top_test.v"] \ -] -add_files -norecurse -fileset $obj $files - -# Set 'sim_1' fileset file properties for remote files -# None - -# Set 'sim_1' fileset file properties for local files -# None - -# Set 'sim_1' fileset properties -set obj [get_filesets sim_1] -set_property -name "hbs.configure_design_for_hier_access" -value "1" -objects $obj -set_property -name "top" -value "design_1_wrapper" -objects $obj -set_property -name "top_lib" -value "xil_defaultlib" -objects $obj - -# Set 'utils_1' fileset object -set obj [get_filesets utils_1] -# Empty (no sources present) - -# Set 'utils_1' fileset properties -set obj [get_filesets utils_1] - -# Create 'synth_1' run (if not found) -if {[string equal [get_runs -quiet synth_1] ""]} { - create_run -name synth_1 -part xc7z010clg400-1 -flow {Vivado Synthesis 2020} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset constrs_1 -} else { - set_property strategy "Vivado Synthesis Defaults" [get_runs synth_1] - set_property flow "Vivado Synthesis 2020" [get_runs synth_1] -} -set obj [get_runs synth_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Synthesis Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'synth_1_synth_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] "" ] } { - create_report_config -report_name synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs synth_1 -} -set obj [get_report_configs -of_objects [get_runs synth_1] synth_1_synth_report_utilization_0] -if { $obj != "" } { - -} -set obj [get_runs synth_1] -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj - -# Create 'design_1_Top_0_0_synth_1' run (if not found) -if {[string equal [get_runs -quiet design_1_Top_0_0_synth_1] ""]} { - create_run -name design_1_Top_0_0_synth_1 -part xc7z010clg400-1 -flow {Vivado Synthesis 2020} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset design_1_Top_0_0 -} else { - set_property strategy "Vivado Synthesis Defaults" [get_runs design_1_Top_0_0_synth_1] - set_property flow "Vivado Synthesis 2020" [get_runs design_1_Top_0_0_synth_1] -} -set obj [get_runs design_1_Top_0_0_synth_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Synthesis Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'design_1_Top_0_0_synth_1_synth_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_synth_1] design_1_Top_0_0_synth_1_synth_report_utilization_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs design_1_Top_0_0_synth_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_synth_1] design_1_Top_0_0_synth_1_synth_report_utilization_0] -if { $obj != "" } { - -} -set obj [get_runs design_1_Top_0_0_synth_1] -set_property -name "constrset" -value "design_1_Top_0_0" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj - -# Create 'design_1_processing_system7_0_0_synth_1' run (if not found) -if {[string equal [get_runs -quiet design_1_processing_system7_0_0_synth_1] ""]} { - create_run -name design_1_processing_system7_0_0_synth_1 -part xc7z010clg400-1 -flow {Vivado Synthesis 2020} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset design_1_processing_system7_0_0 -} else { - set_property strategy "Vivado Synthesis Defaults" [get_runs design_1_processing_system7_0_0_synth_1] - set_property flow "Vivado Synthesis 2020" [get_runs design_1_processing_system7_0_0_synth_1] -} -set obj [get_runs design_1_processing_system7_0_0_synth_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Synthesis Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'design_1_processing_system7_0_0_synth_1_synth_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_synth_1] design_1_processing_system7_0_0_synth_1_synth_report_utilization_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs design_1_processing_system7_0_0_synth_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_synth_1] design_1_processing_system7_0_0_synth_1_synth_report_utilization_0] -if { $obj != "" } { - -} -set obj [get_runs design_1_processing_system7_0_0_synth_1] -set_property -name "constrset" -value "design_1_processing_system7_0_0" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj - -# Create 'design_1_clock_control_0_0_synth_1' run (if not found) -if {[string equal [get_runs -quiet design_1_clock_control_0_0_synth_1] ""]} { - create_run -name design_1_clock_control_0_0_synth_1 -part xc7z010clg400-1 -flow {Vivado Synthesis 2020} -strategy "Vivado Synthesis Defaults" -report_strategy {No Reports} -constrset design_1_clock_control_0_0 -} else { - set_property strategy "Vivado Synthesis Defaults" [get_runs design_1_clock_control_0_0_synth_1] - set_property flow "Vivado Synthesis 2020" [get_runs design_1_clock_control_0_0_synth_1] -} -set obj [get_runs design_1_clock_control_0_0_synth_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Synthesis Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'design_1_clock_control_0_0_synth_1_synth_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_synth_1] design_1_clock_control_0_0_synth_1_synth_report_utilization_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_synth_1_synth_report_utilization_0 -report_type report_utilization:1.0 -steps synth_design -runs design_1_clock_control_0_0_synth_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_synth_1] design_1_clock_control_0_0_synth_1_synth_report_utilization_0] -if { $obj != "" } { - -} -set obj [get_runs design_1_clock_control_0_0_synth_1] -set_property -name "constrset" -value "design_1_clock_control_0_0" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "strategy" -value "Vivado Synthesis Defaults" -objects $obj - -# set the current synth run -current_run -synthesis [get_runs synth_1] - -# Create 'impl_1' run (if not found) -if {[string equal [get_runs -quiet impl_1] ""]} { - create_run -name impl_1 -part xc7z010clg400-1 -flow {Vivado Implementation 2020} -strategy "Vivado Implementation Defaults" -report_strategy {No Reports} -constrset constrs_1 -parent_run synth_1 -} else { - set_property strategy "Vivado Implementation Defaults" [get_runs impl_1] - set_property flow "Vivado Implementation 2020" [get_runs impl_1] -} -set obj [get_runs impl_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Implementation Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'impl_1_init_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_init_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps init_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_init_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_opt_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] "" ] } { - create_report_config -report_name impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_drc_0] -if { $obj != "" } { - -} -# Create 'impl_1_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps power_opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_place_report_io_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] "" ] } { - create_report_config -report_name impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_io_0] -if { $obj != "" } { - -} -# Create 'impl_1_place_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] "" ] } { - create_report_config -report_name impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_utilization_0] -if { $obj != "" } { - -} -# Create 'impl_1_place_report_control_sets_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] "" ] } { - create_report_config -report_name impl_1_place_report_control_sets_0 -report_type report_control_sets:1.0 -steps place_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_control_sets_0] -if { $obj != "" } { -set_property -name "options.verbose" -value "1" -objects $obj - -} -# Create 'impl_1_place_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] "" ] } { - create_report_config -report_name impl_1_place_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps place_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'impl_1_place_report_incremental_reuse_1' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] "" ] } { - create_report_config -report_name impl_1_place_report_incremental_reuse_1 -report_type report_incremental_reuse:1.0 -steps place_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_incremental_reuse_1] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'impl_1_place_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_place_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps place_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_place_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_post_place_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_post_place_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_place_power_opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_place_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps phys_opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_route_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] "" ] } { - create_report_config -report_name impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_drc_0] -if { $obj != "" } { - -} -# Create 'impl_1_route_report_methodology_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] "" ] } { - create_report_config -report_name impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_methodology_0] -if { $obj != "" } { - -} -# Create 'impl_1_route_report_power_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] "" ] } { - create_report_config -report_name impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_power_0] -if { $obj != "" } { - -} -# Create 'impl_1_route_report_route_status_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] "" ] } { - create_report_config -report_name impl_1_route_report_route_status_0 -report_type report_route_status:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_route_status_0] -if { $obj != "" } { - -} -# Create 'impl_1_route_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_route_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'impl_1_route_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] "" ] } { - create_report_config -report_name impl_1_route_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_incremental_reuse_0] -if { $obj != "" } { - -} -# Create 'impl_1_route_report_clock_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] "" ] } { - create_report_config -report_name impl_1_route_report_clock_utilization_0 -report_type report_clock_utilization:1.0 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_clock_utilization_0] -if { $obj != "" } { - -} -# Create 'impl_1_route_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] "" ] } { - create_report_config -report_name impl_1_route_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps route_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_route_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name impl_1_post_route_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_route_phys_opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } { - create_report_config -report_name impl_1_post_route_phys_opt_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps post_route_phys_opt_design -runs impl_1 -} -set obj [get_report_configs -of_objects [get_runs impl_1] impl_1_post_route_phys_opt_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -set obj [get_runs impl_1] -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj -set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj -set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj - -# Create 'design_1_Top_0_0_impl_1' run (if not found) -if {[string equal [get_runs -quiet design_1_Top_0_0_impl_1] ""]} { - create_run -name design_1_Top_0_0_impl_1 -part xc7z010clg400-1 -flow {Vivado Implementation 2020} -strategy "Vivado Implementation Defaults" -report_strategy {No Reports} -constrset design_1_Top_0_0 -parent_run design_1_Top_0_0_synth_1 -} else { - set_property strategy "Vivado Implementation Defaults" [get_runs design_1_Top_0_0_impl_1] - set_property flow "Vivado Implementation 2020" [get_runs design_1_Top_0_0_impl_1] -} -set obj [get_runs design_1_Top_0_0_impl_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Implementation Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'design_1_Top_0_0_impl_1_init_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_init_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_init_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps init_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_init_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_opt_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_opt_report_drc_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_opt_report_drc_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps power_opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_place_report_io_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_io_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_io_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_place_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_utilization_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_utilization_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_place_report_control_sets_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_control_sets_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_place_report_control_sets_0 -report_type report_control_sets:1.0 -steps place_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_control_sets_0] -if { $obj != "" } { -set_property -name "options.verbose" -value "1" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_place_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_incremental_reuse_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_place_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps place_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_incremental_reuse_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_place_report_incremental_reuse_1' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_incremental_reuse_1] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_place_report_incremental_reuse_1 -report_type report_incremental_reuse:1.0 -steps place_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_incremental_reuse_1] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_place_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_place_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps place_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_place_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_post_place_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_post_place_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_post_place_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_place_power_opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_post_place_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps phys_opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_route_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_drc_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_drc_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_route_report_methodology_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_methodology_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_methodology_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_route_report_power_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_power_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_power_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_route_report_route_status_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_route_status_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_route_status_0 -report_type report_route_status:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_route_status_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_route_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_route_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_incremental_reuse_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_incremental_reuse_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_route_report_clock_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_clock_utilization_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_clock_utilization_0 -report_type report_clock_utilization:1.0 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_clock_utilization_0] -if { $obj != "" } { - -} -# Create 'design_1_Top_0_0_impl_1_route_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_bus_skew_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_route_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps route_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_route_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_post_route_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_route_phys_opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_post_route_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'design_1_Top_0_0_impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } { - create_report_config -report_name design_1_Top_0_0_impl_1_post_route_phys_opt_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps post_route_phys_opt_design -runs design_1_Top_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_Top_0_0_impl_1] design_1_Top_0_0_impl_1_post_route_phys_opt_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -set obj [get_runs design_1_Top_0_0_impl_1] -set_property -name "constrset" -value "design_1_Top_0_0" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "include_in_archive" -value "0" -objects $obj -set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj -set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj -set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj - -# Create 'design_1_processing_system7_0_0_impl_1' run (if not found) -if {[string equal [get_runs -quiet design_1_processing_system7_0_0_impl_1] ""]} { - create_run -name design_1_processing_system7_0_0_impl_1 -part xc7z010clg400-1 -flow {Vivado Implementation 2020} -strategy "Vivado Implementation Defaults" -report_strategy {No Reports} -constrset design_1_processing_system7_0_0 -parent_run design_1_processing_system7_0_0_synth_1 -} else { - set_property strategy "Vivado Implementation Defaults" [get_runs design_1_processing_system7_0_0_impl_1] - set_property flow "Vivado Implementation 2020" [get_runs design_1_processing_system7_0_0_impl_1] -} -set obj [get_runs design_1_processing_system7_0_0_impl_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Implementation Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'design_1_processing_system7_0_0_impl_1_init_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_init_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_init_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps init_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_init_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_opt_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_opt_report_drc_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_opt_report_drc_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps power_opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_place_report_io_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_io_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_io_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_place_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_utilization_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_utilization_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_place_report_control_sets_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_control_sets_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_place_report_control_sets_0 -report_type report_control_sets:1.0 -steps place_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_control_sets_0] -if { $obj != "" } { -set_property -name "options.verbose" -value "1" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps place_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_1' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_1] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_1 -report_type report_incremental_reuse:1.0 -steps place_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_incremental_reuse_1] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_place_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_place_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps place_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_place_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_post_place_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_post_place_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_post_place_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_place_power_opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_post_place_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps phys_opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_drc_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_drc_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_methodology_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_methodology_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_methodology_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_power_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_power_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_power_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_route_status_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_route_status_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_route_status_0 -report_type report_route_status:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_route_status_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_incremental_reuse_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_incremental_reuse_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_clock_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_clock_utilization_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_clock_utilization_0 -report_type report_clock_utilization:1.0 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_clock_utilization_0] -if { $obj != "" } { - -} -# Create 'design_1_processing_system7_0_0_impl_1_route_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_bus_skew_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_route_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps route_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_route_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_route_phys_opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } { - create_report_config -report_name design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps post_route_phys_opt_design -runs design_1_processing_system7_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_processing_system7_0_0_impl_1] design_1_processing_system7_0_0_impl_1_post_route_phys_opt_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -set obj [get_runs design_1_processing_system7_0_0_impl_1] -set_property -name "constrset" -value "design_1_processing_system7_0_0" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "include_in_archive" -value "0" -objects $obj -set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj -set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj -set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj - -# Create 'design_1_clock_control_0_0_impl_1' run (if not found) -if {[string equal [get_runs -quiet design_1_clock_control_0_0_impl_1] ""]} { - create_run -name design_1_clock_control_0_0_impl_1 -part xc7z010clg400-1 -flow {Vivado Implementation 2020} -strategy "Vivado Implementation Defaults" -report_strategy {No Reports} -constrset design_1_clock_control_0_0 -parent_run design_1_clock_control_0_0_synth_1 -} else { - set_property strategy "Vivado Implementation Defaults" [get_runs design_1_clock_control_0_0_impl_1] - set_property flow "Vivado Implementation 2020" [get_runs design_1_clock_control_0_0_impl_1] -} -set obj [get_runs design_1_clock_control_0_0_impl_1] -set_property set_report_strategy_name 1 $obj -set_property report_strategy {Vivado Implementation Default Reports} $obj -set_property set_report_strategy_name 0 $obj -# Create 'design_1_clock_control_0_0_impl_1_init_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_init_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_init_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps init_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_init_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_opt_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_opt_report_drc_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_opt_report_drc_0 -report_type report_drc:1.0 -steps opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_opt_report_drc_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps power_opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_place_report_io_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_io_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_place_report_io_0 -report_type report_io:1.0 -steps place_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_io_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_place_report_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_utilization_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_place_report_utilization_0 -report_type report_utilization:1.0 -steps place_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_utilization_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_place_report_control_sets_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_control_sets_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_place_report_control_sets_0 -report_type report_control_sets:1.0 -steps place_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_control_sets_0] -if { $obj != "" } { -set_property -name "options.verbose" -value "1" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps place_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_1' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_1] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_1 -report_type report_incremental_reuse:1.0 -steps place_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_incremental_reuse_1] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_place_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_place_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps place_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_place_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_post_place_power_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_post_place_power_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_post_place_power_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_place_power_opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_post_place_power_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps phys_opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "is_enabled" -value "0" -objects $obj -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_drc_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_drc_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_drc_0 -report_type report_drc:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_drc_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_methodology_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_methodology_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_methodology_0 -report_type report_methodology:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_methodology_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_power_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_power_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_power_0 -report_type report_power:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_power_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_route_status_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_route_status_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_route_status_0 -report_type report_route_status:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_route_status_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_incremental_reuse_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_incremental_reuse_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_incremental_reuse_0 -report_type report_incremental_reuse:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_incremental_reuse_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_clock_utilization_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_clock_utilization_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_clock_utilization_0 -report_type report_clock_utilization:1.0 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_clock_utilization_0] -if { $obj != "" } { - -} -# Create 'design_1_clock_control_0_0_impl_1_route_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_bus_skew_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_route_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps route_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_route_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_timing_summary_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_timing_summary_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_timing_summary_0 -report_type report_timing_summary:1.0 -steps post_route_phys_opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_timing_summary_0] -if { $obj != "" } { -set_property -name "options.max_paths" -value "10" -objects $obj -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -# Create 'design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_bus_skew_0' report (if not found) -if { [ string equal [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_bus_skew_0] "" ] } { - create_report_config -report_name design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_bus_skew_0 -report_type report_bus_skew:1.1 -steps post_route_phys_opt_design -runs design_1_clock_control_0_0_impl_1 -} -set obj [get_report_configs -of_objects [get_runs design_1_clock_control_0_0_impl_1] design_1_clock_control_0_0_impl_1_post_route_phys_opt_report_bus_skew_0] -if { $obj != "" } { -set_property -name "options.warn_on_violation" -value "1" -objects $obj - -} -set obj [get_runs design_1_clock_control_0_0_impl_1] -set_property -name "constrset" -value "design_1_clock_control_0_0" -objects $obj -set_property -name "part" -value "xc7z010clg400-1" -objects $obj -set_property -name "include_in_archive" -value "0" -objects $obj -set_property -name "strategy" -value "Vivado Implementation Defaults" -objects $obj -set_property -name "steps.write_bitstream.args.readback_file" -value "0" -objects $obj -set_property -name "steps.write_bitstream.args.verbose" -value "0" -objects $obj - -# set the current impl run -current_run -implementation [get_runs impl_1] - -puts "INFO: Project created:${_xil_proj_name_}" -# Create 'drc_1' gadget (if not found) -if {[string equal [get_dashboard_gadgets [ list "drc_1" ] ] ""]} { -create_dashboard_gadget -name {drc_1} -type drc -} -set obj [get_dashboard_gadgets [ list "drc_1" ] ] -set_property -name "reports" -value "impl_1#impl_1_route_report_drc_0" -objects $obj - -# Create 'methodology_1' gadget (if not found) -if {[string equal [get_dashboard_gadgets [ list "methodology_1" ] ] ""]} { -create_dashboard_gadget -name {methodology_1} -type methodology -} -set obj [get_dashboard_gadgets [ list "methodology_1" ] ] -set_property -name "reports" -value "impl_1#impl_1_route_report_methodology_0" -objects $obj - -# Create 'power_1' gadget (if not found) -if {[string equal [get_dashboard_gadgets [ list "power_1" ] ] ""]} { -create_dashboard_gadget -name {power_1} -type power -} -set obj [get_dashboard_gadgets [ list "power_1" ] ] -set_property -name "reports" -value "impl_1#impl_1_route_report_power_0" -objects $obj - -# Create 'timing_1' gadget (if not found) -if {[string equal [get_dashboard_gadgets [ list "timing_1" ] ] ""]} { -create_dashboard_gadget -name {timing_1} -type timing -} -set obj [get_dashboard_gadgets [ list "timing_1" ] ] -set_property -name "reports" -value "impl_1#impl_1_route_report_timing_summary_0" -objects $obj - -# Create 'utilization_1' gadget (if not found) -if {[string equal [get_dashboard_gadgets [ list "utilization_1" ] ] ""]} { -create_dashboard_gadget -name {utilization_1} -type utilization -} -set obj [get_dashboard_gadgets [ list "utilization_1" ] ] -set_property -name "reports" -value "synth_1#synth_1_synth_report_utilization_0" -objects $obj -set_property -name "run.step" -value "synth_design" -objects $obj -set_property -name "run.type" -value "synthesis" -objects $obj - -# Create 'utilization_2' gadget (if not found) -if {[string equal [get_dashboard_gadgets [ list "utilization_2" ] ] ""]} { -create_dashboard_gadget -name {utilization_2} -type utilization -} -set obj [get_dashboard_gadgets [ list "utilization_2" ] ] -set_property -name "reports" -value "impl_1#impl_1_place_report_utilization_0" -objects $obj - -move_dashboard_gadget -name {utilization_1} -row 0 -col 0 -move_dashboard_gadget -name {power_1} -row 1 -col 0 -move_dashboard_gadget -name {drc_1} -row 2 -col 0 -move_dashboard_gadget -name {timing_1} -row 0 -col 1 -move_dashboard_gadget -name {utilization_2} -row 1 -col 1 -move_dashboard_gadget -name {methodology_1} -row 2 -col 1 diff --git a/lab4/vivado/z710/riscv-z710/design_1_wrapper.xsa b/lab4/vivado/z710/riscv-z710/design_1_wrapper.xsa new file mode 100644 index 0000000000000000000000000000000000000000..b7827744acb1748902f0a60b068c87f72541b80d GIT binary patch literal 346664 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ð% zO5+m*E+w$*FoVz<3X5RC+Zvb57i|PIQ8;#SPMlCe1@I`r3vq756O9{jh$gtEp|36B z9dgUhxb*p&=mqSXsBChY+SHQKFx(y!>WZ$7wh+(U$xnCu37CPby$jVWa)_IdT3|m_ z*|BuDCt4=Ba>qP4_8VK}(Qdq&P!pQEd{M-tCHo{w zO)IXmti(`Bsuxi|AB8|Af`8=_lNH9w=htIZr=$bP=$DQ7GmrVPA&19MOq?HN+weI+ zvj>iewdPk0@XnUfT)}NW7Zf%n>n8K6Ue82DQbI+e5CsgdU1{jHA@T5RqH3zTL=!Ot z48${mJWd$fS-slPUQK;WXGGgG+hLbxKDvg_#0_gV{Qe|~G?+nR(Qtyv`-qbgbC?|wCvRDi5B{L~OGIq* z7xI4fGSbfcV)`QwDHzM+xk2+yB)s@^mwTKn$2IwP_PogS-dHQ>9%YLx;Q=tmsR$&M zwSf7yXod*QGqn`2FJ}TmjM@rHHM$Ki1@&t{C@!G^T#t@kj_f{QgCOwht-t@I=%ws$&vgRt9b?z;h_Exi0vA!lDXv60Z?dc@i8hc zvVlO8f?h!8J;|1{+`HtHM^L3?s(AtE)Nqb=IdfxUP$l4enrrjR;r zzKepkI<7H<#x`k7@lispRY86~a9&)XX4OZLleTd+1bx0yJZfqixS;jh`bVYuCAbij zXvusm_9i)rvo<95k7tl5KyCQ11$OZ$H*IM6-9y4jWG8|WhG)-Ldf?j4)JnYXiX2F0 zW5uYM)nsI0mFy44#nFr)}OA!JhQH zdic^6!Vwi$`-#v9_6&5wBe?)AKH5-(;1emT9erlHT>e|lI`AsVzyau;ygN)G+ef8B z{)KJ*vHrzjP~viSltFee9plz!RZlOi*~x^3GR9-@s-`lF_F}$!p`i z6(iHu_*lXq>49gS&DddHWIh4MQxfj){RsApE_YpD1r2fR{6hP*pHm(lYSat&cHkp{2z0~2VvN`fDP(QA#2;!t*{BOan ziSx$usF$##-KI*7jFDuWe2T+f2;$%tHNSjGbzE z?!^7wSO^#bdI+iwVxrZqma95L&aqwnM?{xV^i#DTQ(h9_3f?r320`nT!(fQHePf>^cmi*2?OE4$iO$=a*98uJ{@le9iq z#~|R=k4n(3+i~+ScKKZICM5N|y3PoV&!cc+E}56ly53`d_)xpZwqe*MKZrQ%qK)JE z!>rmtN^kg)Bu3;JD(d@5jo+I#(4(_dci@Jd{ubDaAyOz7tO+(fH9uzWxzmUWgkNvY zcN$K!Z?I_=#tB(oIoH5%&W291YC@GSa@z{vLdEvsiT1LT-%AN+WwDR~X=`T@bl!>L z<~HToWkYV@MSUr1@YiZhlO68j$m}0lV~unCKIV%Vooc~Zs#Vz9T0$T*or(~Ir=}X| z2keu-slV#V!{dS?xw&;bIV|HWzl3PHU+$ye7~YR|oyeV(?}UNQX45Hmn5wzxvV)XT zlmHsWK9{a}TPXX3`rWiX9X7=I_C~>HBI>uoOra0u87=474QPF5JI~iHSL)|M9XW^` zBWhkZ<1rsFn$FwRC8AA*nD9q zp_&&V{%AED+mKP`2RTryw7NAc+6Rw>ty#86?ULHCZD`tuH>K$wIt4VP?QlzK!PohI zU+Z)@I)0Z#@%fde$u78Cs^c^i@r{Wkktjo@%7io-DWE1xSkZMD)J&S&>74a$hvOz|H zRogk9&hW>E1gaOojNp9$cvsrbUj+T)Pw)}XFg1266P0%0tO#^8X1-AhLGwWr>j3*> zk*cVkOZS{ZygFoktEE%+AF$ymMkGPwW`AwKTV~&#ar|vBrt6XWG6^)W{q1yhCdCNe zF$)Ks;0wt{iP0tv!70}Sr=s%mF?0%Gpuv^+?^Q*AX3cgf!CVP-Tu7FI1d8)vlelYA z8T|IQ_`^h1Ye93NCPn&>s+mRX*rDJ6fb%U68lu<-=Mk+KfbIMSqDZ{z+?vV69YaEP zU)3_7h_bYQKuKmEV?^*vs=z;VV+u2KI1c5hp)d&kpJM`wbBghK;Q`gJ!h*8=d+jra zG8Dx~xx|E#*5A&iijF=5_!OYiGEyMA-;!Td-zfH#3k6l22k!rgAb#QC8W-Q;nL(Mb z*;^=b=5XLTbix~*fLlAfDk^n*>5xb1_%{g!`}AD7@IYO#i`3mz@yE4eVm#%N8ah=j za(K3vxW(Kj-jiw!j?2&lK|@7iL{~buGnAM^9JEH= ztTGkV&yo;N5@Xx+3;+k=9N3c0Wx>Z=BxqhLf-|tA`tykR2t}!F_i}p%Z0ndVl zbG?LzqqP@K0ndtnGbe8iExSt-Gacr;-uj}$#-s@qAMTE2&iMW#HiOHpYmGY~>mxG3%m zY~NXito!R>kFaRFS%z_=5{6*YSe%oO6s=2^N-w&Ud}4HZO_-*5iG=2i=b+rSxr)K~ zOZKr<%(H&91uQD7^m2X2uxHiq9bZVVwnZ(CalsGP_NV;qI4K+(Xo$MSqoO~Y^(1Oc zL58i_Nf_g<*o`v}Sn01oQvLfvNX+e3Q+&}>;so1CHevNaq`71&fI$zWV8SG_6o&vd zk%*m-F#{UlR963fZ9+fM0~Aw~T<4lJF^b5@jS+feW~2S7+nU=L%53^w*Y#1!gk<&< zsrXbiZk^Ciro}Kqw~L(^ujq+Wv(ObBB3<`ST%*(48gRNGZh_$e>^GMsHW+qv|F4!lRo#`GS>kjO;?qEF$={T%$71H&hLe#n9W_EnDtDs;vEX@6)AI26W%ZVps{ppuDEEFdonm_5i={sV41#~0tOTQw=_@bJ z!Zc%(59E{U{0LKkK`euEyiD0Gx!3RpmGe?-d=q}Szc-#CZ9OcLSr zE~UWLcWTT1oPnIrKq;M6EoO5!`bBd*DqFnivaR{xp+|;QKDdd^9$dKXZaIEzH^C{4 z+K17bCfV9tHMBR1NFGuA$DN_QNB~q@{9AeC?>5l%kWZH4Tp21fLFD2q+9xC(eiazf zV6eErMnd+XxHY+0LsOSv)JkI9dqAbXIsXAba4ZPL{N1gCkoq$n3n8_pDF`h)%%(~_4g-L!>oHIM0&%b3N_xK>LxtSy)%{wa3|3E5%o%1!qHaA z;v^`gTTRqf7yw@}XYbg5)@4yM-ST1*FYn%@-ZuhnO7^_VkolZFj-it-*I7p?DPr@eyrZ<}1uUfhJI=xo22ox#pBRwBv_QDWed@g0<4J>Qk{&a`v zX1`m!_qmj>ST*#qqfsY_XVB$P*X;>D^=&KeZ*)>86BqYwHxP&Rcw+Gi4GAVLLnoeb070)Z@ zv)tMA8g;H&EsmlOL5X_(LjtV1P0bvwQf~U(#n+l}d1<)CO(lLatU$M)glSs!8D+Er z#NgQpv4f8+(-ozZfXz#=fkRcRuUpd;72)#zT;=( z<>O?Upzn@~f6qaK)%jV`>7rKPno9ewj@$XE!T?K^n1aGKm{pXF!aaqi1EqZ^3!2oE z=}J3RNZ#*-U-s6!;8wFB!dU$v4Eq|M9Kc7}X%XJ}0HIyNGE4vy%^S`GPR`kim->Vq zh*Z4l^1|Mz+j^=(oqPlof|#rB#k4oq=h4M#+>>s$Jd9(+38Q)gQI3BkttK4j@2Z9-YC)1*Vv^eNZ~G3>-XfP#Pgz8K4l6obiLL$$fEOofi*PB*JU} zd|{6ZJEB;%qRjY4<{qZm-2^P67}QbQvlukKy)pl$!m-Kq6tu_zNd+z_CGn%O&h_SD zs->|!^w?dtGBdrs(Mi5%t@V!<4~Lu8aaQ>E<=|TDixv+yC%c(dGCnmP)bGJxp&F~( z)K(amm7B?pJOWGaI)<5=zX&zk3q}=*epTu)??jY-+vnah=hiaE@7%&5+^W*r%M)B1T!+)zm9%*NTwXpeT}n8)Sz1v{Z{n@5 zjXJrJd$@pDxm~34z{hS>ZbDD2gNAfeWLj?7npwG3{Ncg-F}s%f9XPY(B;?!m&XpS^ zuaV`4pC(TjG&v30@oh&Y@{fhJumC>|9=e46weMnsZVP&1^Sc?^EX&I&bT#U;kEQmI z<$R>f+W4O-wUU^;!)$~DRU=XFGICmKi*%DV)d3&-Tjnc#s)W{#Bt6kPJ= zzLS<|?NKP~Apr6GT%#ln0C45(=W+KXW$%D9r^RAs_@c}R{@QUP2yaVWWw#{?Oy{FA z`Fm}dtk;2P%;PfoLa&F?gl7KPl!2EMRP^X)r+erSw$?KxHal-arfkQ>V#}^qpV zvX@g-JpR;^`F5ZD(?;%DKV{iTP!0hFq(Cvvz`i!$$KDbkD;zSbj}$?2GGfcUydY-u z-iLcdry8Mzdfgq?iO8MzHAYQH6nu zhfn!j zg82fZKz?($;Gg%Ig*@tJdMXE1ORSMHlQJ-Iw0vT+%(kAl?F z{sn$ax(F>fhu-e7rJ$#hO+?ij4Q+2@h?Z^<6i?L*3K#sHGsl`6d~HE8Ul`{`C7uH^nf=gNZ}` zNM#kt(+iy=WKxgVRcB$ITVeH_e*rM3FvFq0^Yd4fw zJJKplYXRDu^0~4$NJW+sF1d^k)-SYCz>3ns(_Z3K8=mW*EOe=xWEvm=&J$W42=6(& zL4;i&(zZfXL(nNP2Y}Z)eB7`#Te%|cr@)%)z1j>a0Rf+Jsov~a+C~FB4A&4@ zlc9(1%!95#E2BM8(_;;=Ch84Q2V~ru5IHUP*kQ2+^!uD`j!GHk{pDR0`i;ybgu3F- z^R`?`&*ZeZ{IT}Xh=d!!$+ERH9pM}1P`EeNWg1WIE|L$0cxFys-vqSJlTd0u(N9~9 z_DB{2MhgNxiWODb{l!=5F&A{_xZ}gu@W2@AbPgKTSR2*AlPe7sc{~O!Ni^Q{Pv8Fi zoI`9fD_(pE$xh;@(qdzfD4bd~=#~R3*UPvzbK*~8gd$dDnDobz8P0Xmzc=Bv${b|B zj1ic5%W)w@;CLDQ90C%Sa^tEB|LPq<;64oDtdL7#WD__9?m%u7lp+bmYrxB>Q>mds z;>_N$7}S9A)&qc(LA^!i8!{`P9GdAVjBUMK0;sCo5U3%8P;BNw-YGTa|C-JF21?gw z66ZNBHxl!iE;WVE%Z|FDeC2|El_$`s!T2C$q6_5+?m4?Mnk`7x36EhLi3gyuw`X#W z1uDhNH8t-zNeiUV6TIuQYJKnkGV>r34s47@W;2%=4l{Su>ABEiE9x-R3!uQPa#tAW z2apG!BF=L{L)O7zEL(O9^TJ5ekr5q!sk!#=61*cJgcuuFdDUzL%*C^Zsv;r5xT7W=TW8&S6FZh&g7LL%%R@Xh(E2{m5gJhaxso4wK$cR1W^bV-e$W}&%B~6> zausDg<`SQ0R3@p?#R!@qvBmuHLB)qNp#5*)_Xc}dZS$;&)9!)CcBuOY`VY|u@;9hg z@_`5?F|mPtC9%;Ji2m$Xc(INu4~MRa3J>Ql+Sc3xJLQjFa@f^vm~%AIu4bY~?+Fhs zL-!|DJ-4&OWY-z6OAgyNx~4pG;u?m`3u$pORPak25`66o{oV-j2e&H7e)_r%>V@iU zi-2XjhRFgoqu-!XX=Bq6IPuD&qKBdrA%HiV4GwQ(-vEWTUg94}tJ3w^w?W++z!C(C z`nqlv?ut+#p&dZx4g%QWC0ODv-<6Y@&H!M$n#KsCkk>=X!u1w(cf5z#9sQ3%{M+#E z^?wYr7(wD^;uB@!Z^%a9_K%kU*UNA3b_M|1;VJCepVt7_sxHEX#B2uh<3rdrEU(@Z zY?i|bqHN9g;hg0@)DDda^5!k@q<*xe3fn-Y#LFeQW-}ED^4ow;)&mIT$v?fYMjiSB z_PQmKhaD%4bm%yh>$}CKGYfppFKg#6Z&~YD9%N^xqwoHy#+V3U zs>)#kj;av8eP#Xv>wQi1&EWze2Y*pFmaEvTd%J#&S2k{@vv(fSjrBEW4YSzZxmsp& zXWqE_x~?0hAw{$Qc8^MBHNvL>`M{*-Ykq}K{<+!NMZQQ0GeeGY{Icm^DMB;(c#d*~ zW1zmRVlz`?`M_-?rgpsN>=$6$v zn=3`;i+D%#y~O+$Jp8~tQuB_vJCH3G$Ig|-q$FJ{B6)8t`EpV@??{}o89I}e9f1YE zJ3#hSxU;V2d!F@}_xK1oGzk2|Wuz|rn2~Fd<8a@n^q1Nzu2MoiGZsA~EUw3_KFXkJ zdOM*(y|VMh(1)Y*>q)i1IHF`Eg7qIOZ-ZLBu)2%#!sgQb znpNtb+J-7Ndazypd0;=&2t4n|cjT?n)x+AK7Uc_&fy)Ol$X*5*c}bc=cs z$`H=8Wj0h6j~=R7q>wN)zMT$pK)(p*z==FL;mnD=;Sy3%m@%$(6y3sN!Yj?1IhOl} z>wJ!nz7R682`1yNemNgVo<2ZG`<@BRpZ;}(5LXy!Z!QK4;Cw0$X@C>J`FP-<&g6c; zxPp>YZL=6eI8)%*(8{1|MO~zfDrs$!Rzq!*XCoNREL%b7@?C*2NmCa*6Il-kA7iZz z_!(wMbq(Huy{NkXRli>H#7@L~W569B-$E-XQypD5MFB;K0^L@h20omATj_$&->3+wd9zU zZzJ~RTjk5<9xb!=)rb6aZ=~QLYvUo5|5HmFMc&KBDvf)mM_Sb|;*v(nPo!vZ8dXo& z00wy5P+EA%l zvVmnIS~ZF4Biql_K;kR0c`S?QcF|w*VvQ2PVuO0iBKH=9Pir>&dy;DvgQy})#)8Io zs$~HHpgD_H1euh4MR+>bzkBEo(!%Pc{0GxS$|uBUs853Db6G}2r|y7cUy00TwQnlh zdt*1gjM@B+;pY^hDq)zJc3oJ}fG3O)0pa;`A1 zAmWz^c%;WaE27{OnL9()Tu;I#DL}Oz@9~sMFx<8tD9%B~cp^p~@u~)wZ~pfoNIuWK z)XEk%8Hnox)tn^!v_+_CYo0JgR(c@%aeEbZLD&|KH-~>`C&Fn#c?r;2@@81{L@7Tr z6=YECSN$lYoV_VOWfmsKu zD0Mv%FvW?2mcsY6geF7dI}>Df&5n{}|FCJhz-jEiXTP}XMU9iZtbeY%9Y~7w%fC8f z-&IcR0NmZ`(HN-NYdP0Mt_~g0KM25`yELKFnSedrZwPeyKR2qs6GgwmF$ASj7~E%< z`pr!$(Szdd z9dBg|C%{{^LMOq_oytlQ+%XwL&=bh`G!@1vsz!)sv#K!$6EX}`k_>b_(MjO}7&=7% z2x~s$AQ6J5S%hhwNi=in@WrZrEY*IWqKzIw#(^8jLt}NhjoQZlyrkDe#;AlkK1QI} z7yE}388<2HLmHMJ_WWzB?jQCD4&s0f-n-Bcr*GgTBl(#&WZqT5F|}wO0MUVDszMJG zm*_%GQCOYy{q@xfc7Rs~77?vk&wvqv?DMtpu3FuO@I~*7k9yCF#`dYETgZ)LfC_5{ z$Z*Eu;%VEwl|%n-!fdc0l$W1T)1lfY4nxp^(!5#n5UeRQPL9R86OLyF!JA7I>Be*& zgn8|83b?I5Ga*mFg1pfR{eH_lWAK%ki`~}8IwZsYMGw?L>IUvr_573j>AdwfU-F)D zhv}Ai<=@~kfItKFc}Cg~nLkCW=ijyB%D;P+9b}X+ldy>@jY=;m&}81OHQ`xs}R zdS{g4RV&77RA2U2k*>Je=HXX*JBQ;afhe=jF%tHveCR15WCN^ZAN%88shKsLNeXJ2lmma1IQ+$}0_(idOXi0ZzVMUtw}Do4~WW0&Y6kDbB zd4e56*DD;l$`gwbHmy7nxZHDO{{(4HCk-MmJFV`aYCdAz^?Oa_zPFoxqfA@E>#II|4m&nN5Lb-@y*Skg6_zzm;qTm* zDB?J$jsG*}2>?YkeHFG|X;%MCW@y$1FU+6J*4ZIz%B`R^Ha21I#G?84XHJ7kzi*|` zky)NQ8C(XFqCtD@D8{K&V*9s~5D*gFFPQflmBSiZ z&L26r;HW5S87$)Gs|N~hQPmB?VoT3`LU>TfZV|neY)wgiHN|Yks?}D%YY37lt4a8 zy#5CA=tLqleKFx)_Njgl7)mz=u@sTa3x&rusH^Gx5QtE{k`vx^j@98U_cq9&OZcxp zs0d>k>N4u7ZL_ni_P4Eo>)YgNs*(3sr%8WJwtPB-s?k)@L{|=CNrFkOvuIXTlLkXq z=G3r1;(Usb6po^5_IwlEyPaB)A!Xzk=OIj?ZSBE8oI#!_ROI`Udu{H=^@mhJIy?JT9&xUh|Zo7Jox_CC%xoiR(>5L99J%?3xRJDQ5jn8Xuwi8y$RHZnv zE=@LI#TY_4pgxXyDjIAT?5IVU)!87;nbi~9TT>$emh{xzhKm8#I%)Oq2k4T{&R5gT z@xJ^L*2^iH06IT^4D_u=REPB=&X>EOmHQu6cTm{d>DJ`G>^U=1qe;&)FOllhQvR&1 zNVh^6!J*J1_hePSuE~nZzhD)l!N7llfPer%3MKxkwSW1Hfk1$O%pib(zkIF{?5Wq5`vNv4s!yafIg%lLi~<+zbOv}_#;Bfa#%x1Re_py zdv7A^H!a;dgf+o}UX;Kh39k-LD(RjV8SMIy1m>pt{w{NjoEmub_nZ^;_UaV+kDO%R zPUZu`rx>IGa;BAQJykM2JTv)8K&f{Th{kZsB-ZgUlEbr{AF_zUa`{f!FY5h)05pFz zd4T48HI~1gpm=Mlr${O@xzEpn-fZ8^q;V>~p$s~ZDKwVw`0x*~%kWz@r)7tCOIysl z>(j*xHpvqY$#_C^9QGFneQPQbMr^J8EZ}-fG?Yg}5l;zQ&19I^dizQLz>RejcKb=^ z>1P%T_uK4^IpeSO@(=TA{1jghXRDJLpX=evMmu@(t^+|W3h)(~Bc>W_Hj=Q3H$n|# znhFS^t$0o(Dn{<~U9$L9g^^WtVr7tP*NbRKR#(IO8xrkatamUv&h@$9xt8E5^je0A za%hu^#Zh0nehq8!N^we#7~26YB0>H$Gs|0PD}5MD^pAU#c*c zLb6Ft(m5BVF0>zfy9t84y5bfMju>8X!uHcU24}jpSzPIGh;jq-+FKG6yyocH(vcS6 zU-2G0hgNn&ySWfIy!Rw)rvLP=YnSJoJ4>~|Eua|4#ZQW97rS^Adf%B!u&qMm{lI;y z;)h0nW;T2eY<+i3if4Sw>=wL`|d)t`-KyYUh@zEXl@LFEEWo9p!8JBX%mfVBB}~)wSnaruGNo4<~U=36elrm2kL* z_iqJ04!fBmck5K6@ZoxdVT;dBA!rtq(n66U=+@vw_tP#taiRWP&la696Qre~L|efN z^O$R2TIj}!M#MXo1f!l}*nRy`rkUjkP+;7mEbrGb`!G0S?!Tktt)><|buU z(bW!xypRGz&#K4HFA(Ru-$62ph^{}UE+cKiP9Q;9U%{L?UN^s%Tg~;pK5o@FUWB!@ zefYU~Y$DXO*4OpYfI#4si?~+{zW^#v0sAf-M+rL z|A@|BqqP0#waomkxqa3BdMNOS6<)~ce>2}#)`Dhm2>}(XP^SB%Q`}MiHXplRu`m+6X1c&poh78Wz`h_sO zTj*3w$b96}&N+F}RVEH=8=ru~4Vx!-2`W%fANxlNN|uq9_l;7gt~_inJCsj^^Qgdn z{AcT52}Uq)^VJx--1a0}I~c?*k8u_qt5`3Y)ObRzwtv1CL&`?!{3|0#982)=wi6Qb zdl`|#MOG(SFRm9o3jT46*y@O;UzJypv;5n0>AMW^A0^2%w*hV|pLUDl2&fY#fqx1a>3OOso0yRVgC%*Ctp{LrnYEao$NR-j)PaA9_) zZ+lB9pW8WL6Y@5!mC5}Q*tz(0rMc&aALD}4fjQ5G?Qq?0k>)U#ZM}I%mb*uX37(r4 zZ$!dB;(FtIn_8k|RkEE%$K)thmY>BDBG0$o0_r+Y% zRg0s^^Obm^8P=&d6>uN`>*YKsd=F<^(reaaAXB9h51#u4r7li%aQ8J}Y66+6Q;CDrYY- z%-6+o0~#+AQ*#f_$2K@zbkcxgxW%ajZO%9gwkjpT|F1M?fTX@ldJ=jzAvTK@>;@t& zTzU*UE(hiAo8pFA1C#yfCTq~!5R*kLKQUYajI>bhEWWQQ<>J}0Ix%|)yAtsr+n0F( zUsVnCD!`pB={09ZJPJ$U8<1tVboi$miyQSye$9YAvOm@!+b@vztDGbzZtw$dN0V69 zj+PIu%i&`C84M*go^y|2{K(e&gwU^$H9qfaV2kE9;4F~#E~*pFsN;r$S(f7w)XO`x79Z7olg_B54T0u1%X6% zJE_V0b=$LBrSJTmxi;qxzWOR@*79?7*$GtPv9yXa{Kr7PT+t+ZOGYy}yF zN#4pd+Rb+@m;kh%(a{@8tuBjK9VDdk=0AdVDB^(L{`qPbK(z}B_4W2ulSR$%@E-fh zT7qfh_v%mCD$o8|oBd47KFx1#mma=!ppgzVQYTiqDdIU2A<-KLeF)Jv3~ z{cO)?@Ar9773%mPI9H45YnfIETive~7r>{Gr1^TWr0w(bt}Uy_v+6uuGqyi}T!+}W znt+P3O*X^NV{Dc)$tGz)=Qi#99XBbqKhO^B%j6)$R$gXpZNN#(H+v3^t#~p$^X@wgG-z4R)t9V(a|d$=_aw( zjcpT;?doF3?l{u54qwt~t8TwQCTsU!C94cYzLgG*%>|4_6o=kO5ex^IB0tZPr|~;Pc)C<~Ozu*1 zU|t3s5(^Oih)wm#R6V4#KK)iAaQ3`D!!Qpr6Ri8nO^;7Di*|8e2|KUze#9Aui>jEP z?HTPwV68`TwO?Vn=uzWJ^{2q-n^^plZUosiHVVi4@{nZHvKLh_7%S;2#mM$17PyvQi`yuQkE7xkd~+OPBmouUVd zSjd}281KDt9Y6DYFs_H&ZC)^?{aQ##%?}7?_P{mc^|iXpw5PCc2j^KJuG>0>8OG*Q0xOE19M3Yr zmes?nZyak?J12Us2EZ+|_Pr$EOEmveZ|_7+@?EKYt13HV=SjTVdBQHqplh98;H~6|66H#l;u&o=s6YY$%aDC7obm>de>? zqG9wDO?+4wg=gwjBD|7)xMHd1w+AQ2Pn<>R9{Bu1d2HVHx@k`25Bx2Qoo_z+#H{l^UTU-R^T$~@Iz+Iu58Dpe-fj})bFl^G#{qXa{= z#+ewdLiJ#}|3VJ`gLeK0wf+yH|1VVg4atW`QM=|6I7!up>zoW{C{`F^yfPL4EME!s znV=f{{|0#}TC4u2t?wRO{4Y%Vf5Qy^-(mjWp?`aFX#YRl5)5ls4(|+}GzX}0cyC$= zcox3~^3A%Nrx~h5>X+X6IHJsWl<&xv`;P!L5cf_3S286F3jqV#v@KMWrcXTR^=#qz znQCM0D%ZmQeRl8v?KyDaJq;#zud*=JC;t13@rbANHs6!!Z`jKJKzS zg52YcXIVaYq+u?RF=q__{zA7AbZef7^=!ePi<=Zvc2MT2emRL$U+fs}o-*04^A&c$ zBo;tr+=8h(_rgfbrQCY%?i>&3+c4Do;{ToMMps#zp6V zCgdo~U3<~u{z|6o`Y6rYzwnS$R@QkEv}Dlj#Q&UUz6D1k#CCjoGR`2}$(wZ+7t`v#-JKZlkVHF=-M6|#GRxD*CYs~{zUHqZ)W^W z&l9@}xGDwOYz~MDOiSZ=U+U^ausAux+Ssk^J8T!)ZvXUH4BU_(y4W$@3)nJVW^*`$ z#YhA~sOBJMj)vY#*7VdHZO`k^dq5cQqx zjX~0&)Ny4Be)Pgqqb;FOOYI}i+lnd2Fhs6einAGxy8Q0+gXHwLb%yVAd5VWyI@0=# zK&#}MTeO+fuF|PAE$!)uVzdJRBcP>hw*;dN-XQK(y+u7n#hUfZrIzgR@e$%S>UB}n z-3~;3c=WLPZ@`&g-s>p?B5Zk>R)u2=CX)~6$3x)tB$1@k-ccHl@M}ycmUZp#ZSEEC zf9cfh3K~+kv(}g&d0RTdiDmRRzL911(^Jku(6s?kbWdI(X2_9TL zpLbc@GFZ#ClYZDv86S*!Ca9&6`vdK~n6A9$?(X_X9((W~=kq=+H_iQz52shd>3N=B zE2}^C+KQL2p;~gKmj|SO_YOAXm+lV@7!<_}H=$*>9LI@2?TzE^&A2)WU@u!Nw_@~? z37$9=A_Yh~3i<)~U%fsZvXaLI@TNSt7B1MSTxS{F-N~k$366_}t{Su7MpKgQcpi-b zN0yk+x@sWmw)&4?=v&~t6X23vY^=c$vZs2oROkV+*SPBSr6gq};k9hHKe~Am48~_p zXawhT}I9C{1ewI|Y@b2Vb|o3@y2I#(hNn*CY~+L`)8s^BectE;CNh-&mfG>(9+n#j+3qA&4r8FC3E#htEm?GDwZ@bs zNg-sy1$#e4s66?o(CJ{UszE;hNT`PoW(0mX^Pis-A=KN?%_S2`Qq zBP0|_c%1;~O9u}mt7CZ>2ncd^d@f8eKZ6hvMvd$U;pZa;{PsWHKW<}yiv@xE>|zmO zlwXEE>jN>%?YFzF%hK1>oQNQB&9LIL|4FW=Yr=HVx|gn?wPqL<#ySlK-FLPWPe9?zyu5nb&}ZEL3c*e=~^-zs=sBT(#3D`H3)J zxNI;VI4YBbl9!4Ns`nd5&M-k|4D63e=+&e8YS&8STd+mL$g`=0o1c zt*&?4M|^WE*78#dY|e`;SohM6=_?>`ac8?TP+iv&|I*^lQgTb40j3s#U8#ItK!EqW zB}H2g`Kmp_Oh*g(d~Hv|&a1nEBRliqf-9mGo9%8NO_sO)=7~GZwj7or=Y!M8iA202 ziG-^zh}Oth@A^DXq~7*p|M@&E>oj89%(~awvB1fuSB4dP?ZUvl@=l|D{q6ncBJTqS zW$1I@@sO^HMUROc?#wp>H`W532LP4;A$^y#Mb8P7)DFdEi`iCiZ{$pg(m3OO%H7o= z|Jw_n$Wp6?8^r$pI(+|ev|0l54RxKN5TSBslcI28)&zq>{Zgt-Sg`KEq+)!&-{pxm z7x0YZNm&g2Xrs~ULy^{FawG+nh+xXDd73lV`)@;qJB4bNKnDs~zm38T_#DC?JI&bv z!Z2tsniY7fd_;PhMcLX+Cm!HZoJ15i-#)`@?DVBALzY6_UH#%h?W-NUSEqtef zKhOwgk9Geqp58G$vhV2{j%_;=J007c*mg3potfCSor!H@Cbn&LY-^Iq)APIk@B5+8 zhtt>YtIs}FYgg4;wfCwpFzvDEk~94!-zI(vOGm84wsqtvnELYY?B(t40a&M1AQmeW zpDAhzP@p}DH5T~G;r7;JIMamuj2rlg&4aQtSe`e;rKouJDB=@pPeIQ7jSyW2d?O;_ zZbRz*5Mf$UX>F)?2+EStU&wE#PT2V=&`0O`r-;i)mFk-6mD_;d2S#majGzR>MPqxS8PSTqH?38E%4rwfQVI-4W1@-RxLNe&w*q5^dK;-$ zZ+gS|9h6_}8al0w*y;vVt#zY^D07NotIv&PWNE|CDat(7(_d4H5KLle25$G=#S+E- z06FjJ84bj3t*b|Q@VQ|jLDZ=_WNy)J2H}YhH*X5&=s~`)a0yB2uFef*+OMMWeZ>)7 z%O@=`XZ2MCKjKX|RZTZGVU5r8VIm&1uU_$dVMuI#+FxGce};p-&jdi~Gnn`KW6t@T z&|iIzYYN;RJr+_E8|$bPMt&DI@<6GJ9~x7sbA9_G@1(@QJ2WSlpm8HaI;Y#`J?~8| z&S>90JrWDHyr%gg)YeGvBV1FRy88#yr9N}A-fdkJzPr%~rj|pydHi;{w_zNuL7dFc z#ubbQ2&2&9=-VU^aMh=P{-q}C<>bXej!1?F+}Op9!8IW*{4PHuo6HbjQGm1`tXt<` z7>hgJtlF4S&iPGy7B4V?6G8x(R2T9(F25xdj0gF|z@!g!wWp>obF?)WbNt2>T>j2jW zPv`Gm?x88z-I?UIy9y{KS~nKDv)J7-3-7x(M<>@O7Tz?tTTiS5SaQGB1meeFKNz8< zd!2_o`r<;2!}!RN$a5S^&&k(SUh8nEW>X4;e1!xsuO)jzKegIE9HJ6|;c%tY&6*eS z*18IIvyR+2IBG;Em>cQ!2gsbVt8l$21}w0K4^q8mL2B)a)^2Iqey4&O-=>P-o}}xaI4_T|L!nTO$C$k#Not{u9L=X{6^nedfatI3XjQ<0}YnUuIu3p&QuSIHKi!)-nm-tgNgbXl_i4BM#E3Tuhwv zVPDX{38dQ1*oRwXMUz)(He0%P_uoek=*7nDm~z7;3x0PO>Km~f9L1O14R~bMrvP9O zIT6?I_If&~29s@|_8sg93jKch(5?*~`@q%7C>W<#Z{MXev3%*JuTmxp#+pKnL2{Dl ze(Aww1Ruec?nMa!BT?4_SY#{Gulu(yN}C{nJcXea6mzDG`4;!etADnjWx$Wpvn0n` z8T85*Kg)+{uN#*)(hO+}>j!3Tj#u_hf*t_HqPFw03fK=cY2yj8b{PhN2NaPO5xDJN ztx|h}yO7%MuR8K*s4sEtoYL)#9_^~6i>h$EAnZ-*ks%Yl>WyZ{9MnC0WyvDhRasxkv;uO6qHY*L$ZtTy>*qV`7;2wEIb_2?7u*OwMqbpR}dnv)bSIHga zYFAc%-E&Lqho(Q|FIO$+M2ZUmqI`Xcb2&LSU!r?>l(xkWMKD7nr&k~SAy%8p2ItQi ziqMB3t4<$d(BJVQ8#<<^9BuY)1I@)fryKart7)v|Os5%ox1&KT9PLF{1R*_$Sf@U! z>eM~A4lO>25?ZNB#;_rule{WE+$mX`$tFV6_Ba{r>au|X>55Ryl3%W_-ItB9EkJdF zuq}_+8N_X!MM|{Y{jzmOwJeH{;6Vw+uAX>#H?hhjykhaXx_*J+IVDW7Z}K>)>NMl3 z-yq0{cP^meR1U$9z4~2t6?-)k#|_$Jot^?L(!xHd!_U0eV$7!Sjk#CSA4&qL13 zPg?M2ff1~gzM#2*1!zQucaT$;g@AnBT2$+WOhIigJUxG?pgYNOGWWZ% zaYfL;@Ji!75IzWk@L^m@6EyaMMe-ifEZjJaUael)_Atw8pE6V$asv|d^N{>7K^3Rc zblRiv5mdW*#~J&4#(jPLh&Y-$p$NF3=S3pbHpiy_mQeT_mrHQp||5&>u5t;B@l;!J>O_VGbKz0#+%VN*jx!rb(8M#CeeQQLWx6ipDgtRt7a_ z(UNDcsV*@iAi|zXDv8r<(C)`@l6Qu>!21GU-Pw-rq1!sSvQC)^It7@a*+U>wuk?sQ zvy;K@LHi-mbD9yKMm4WPXRAJHS56qBw>ME#dKI?{lI^3B59~p&dvXgb{_p*~$!Qi5 z_{i3UpRCQ#1~jH(io{bfL&omCEIQ1{T{8cd@Ki?W5y6>Ti&?MT&P@E&lnP+U__B+6 zw<6%%fmV5xmV~+_Jt#6EQ;oD0OeRiat6ouQ=TXEiJJ8g?E|X`lJ#|JviAdKSh`tO0 z+Jv765rb(U17z5ZePQML`MBchD#NsHf8ZV3cp{b&3~-K+bAAh^Z?!8KS;QgQwdl_Bmt zbUv*AS&=rQlUJvk7Bn&a35(t;wp&J$D>U&u2ezA6=4{|)pm`LTF{}tQu_{N08waY} zE{`swTY06&6lHCJIEqPG_cx7}Dlrr_4q+A-WmomgLW5XMlMUuyCBlBH44FmA0c`!GsXEEf@tI)a6P<{>wH4?|1~07g+5!-}=+ zKn$g<1SHM&qP{ z4kAZ(tJTDtp%$O--@+P6jiyEvRQv1|3=8=eTeF_jP^0X5 z_5kLPW}%FF0e=UHzwZMU+;QM+#f%67vhb%9ZHth~$806;d$YP>QqsZ`G~MX15rFDB z&d}+q%v{JnOiwI8^w7z>*9?J)PG%|!4)Jrp{{GtuB!4)QNZEN{7wIa>-exK3>Tmf7CO~-@+`i(^r_Tu(v=U) zHe3mMyZKQAx}4nI*2@|S`#)bvZ+|z0t0K%1Ferb0MwISz(NZP*g88%3bTR_^c&`6= z;L2SLITE!#-sQ)tc^R)_B|rz27E7Q!yGVaaV7%Q96zrrVzJUFqEsN=CA;6+dp<>uS zxLX^F?WSODQ>}^R1_(YJruH&ujQ6U_g?3I zwsU~bZD-ax0M=}W*t!w6r{Nv6Sorb?H;<47tF+mZ8GkNwMso^V&0EyQ)zv8p|IO-f zr9@Z5(bG&+pD`s|>X&V`uQoNIQud}6W;~_8M_!sA@3OI`06hf=K!Aho3VXdY3R>P8LlT?9j93l;0?7Y9w&uyJhkYHN(I+h_N6D&w@_ zsPn&5NfO94r}h63uT4$wOiNlZoX5z7X=ZP1vHn{1F;AV_3J@~%1WbRODD-|mKV5os z=El6DbZzapRm`b|5crpk-B3Q}jiJePjfeP!dTnb&(EM953k}Yg8#Qve%>RpAm*2{8 zng^HX9m$hDjT+{GC(RbOa+o)N8wxoXTX*q*e~gD}qqfE?-$WBP;2q##cq06(#M<-N zosp{>;|YT59H!7o0@IB4dvwweIr_>#8w`>XL2=tm!9TM#598y>wT;^XpLikSco{Dy zJnk>XF}0|XWMA~3k$M1KL8q2Nxx?VLL?{y6KO2H$Y)g^CV37wtb!_)X+mCsdMf!XI zj0yQJQJLgQMbCJQN=*C5!-w#l2pPu|y0FH1sy@`xjJNb{Uh1Ro2BDKp5$SAINcLMD^Vw zu)d3;FF*O}+IZ~s-8ZyGLM_9#_RDx)H-tcSng0N%#aU9%qL5(}t6ovuW*$8zIy_Ao z_K8Dz(d1eGFUngVq66SIE?lyrufD236I>gZJQA_<3p$3{37d6$(0atc3o z82twXAoM39YCyZkcqsFfg$e;ECI-|DUQR(j4VH@IUZ$U4nf%e7y%S&N6StwTy9%Hd z)q>{uw}=(U&k~wUY4?x~@}6#J;Mlw;GJ+k_qI4l?kOjWs1u5khj3e(QhhT@z zNH?S43DvyHr)i&QkknU+2vk-<+^P-A;p1W_yqg44(lDphiX{yt7W4ch>{8n>#Ho`< z32ktz+MF2VLyYUl)!7pGt;qh&HdQvyBcf=U%3`(K2fL!&QScMRS=@vTG&`KLPSYyc zaKs3yP#Nf=1x`hnpB=z(9vy7K0}9>n6S9i`@&=8x;BwP&PmPNN$@e=c$zPdtiv40a z{ZK?|MBw}|rr=P^(upE{LvOT94Y!9V=aSTM00PgqljVncoVHnHNI4@Qy3AH_xTJFcLfx}D_C zM$8*V;r)k?&`!px?WHqijoEF(=0HZE7ekRz5qyjXdpQvA8W-G?risV9cM4FHU__VeZ5T$c zmjyEsm=O6l67COE4U4Hww?37?$X6cw=3^pwSf*IST1V zF)$~d({neja(^-@_P<3fK+uqKWHiSy?=cw4Zr#h=t&=jK(#|9Xn) zV^SRkm5gQS1Kf*pc#Ik$M5qf9*+i+3syEiXjl{czV7; z2k;D*Me?!+tB>`Y`{RrmenefSr3hxL>`}fZnftf8t@*=C0{jOwCuDxT_%)|9z5*t2 ze9FANwh7N`g(MnQ5_ulcpVU;bZ8;$evA7dfyxE7mYzN4gj|{I@j9Z!dRHf zySO~3mgx`-hNolnW1dh(nTDwDV0Bdme`W~fvejeZL- zqs0x8pZ1lV2oq|OVO&QVUw^sC?PQB_4Sn~lSZ~j4&-0&k{qyWl9=B?_swU%Gz4PuI z;(`v_OxdU~!8kD&x$ZiD?t`F#;T!UivN-xSMNUkIGxyp|q;S%X$F?}qL+Ja!sV=pz zc2QF-v}}WL%J;lsKaz(e4RIK3{@tNea|*W>cc7tc34+wr=&)J!z5YgSdHjrXpYM5r zAP}{oE{Q;=DpMl0i~JedR434enQsNYxdg-x$kKoNpvFiTn{Vs{c8%n*UOfBQTJd3$ zI$_sT6Pl53?EN0vo}jZz$AnV5B*Egzi1u}I;6YIjV$M}EtSbVaA zpfx0szwZ)QSaulqzgsp45s`kkwnTx=*6tMl#?!sE+`X~R0sLer5}q9NAG%gOc;~L` zs+PL?aF)~)lcCRy0ky$`px;ATUV0ZNE{@7!6oI`&9qBpW7N#X6e2-&FU+CS_Rp|PB zp|o;#<+b$;Z1&djj5~i;l%7T8SUw+j8;+@K_)L1!VF0*0d>>}xT;v8xUVW~guBAnj z=>D@$OxwdMzAree9#;x&*PHQ!!)xYc3-;YQ?NTBKJz;?ycieU@Iq&i9p5ID9o5=fL zo-L0OY%w#-g}x)}G10xWWRZ_TyH941UG__ElWJ%1K-Z8PJm9t(sy^5re(=+j zWw1d#;)Oo+#Uhf|qoV^hI-y5t5`)wSI`5>o>{8c)m_Po8n zUSZ21%5NQai@9R&Vt)k*n$^hclZvxhGnl57Y{dO=ZK9<7^j=yDGq7+KHX+=l@~j%W zRZK%cs(|7+`*c1It%7G}-B$EiN9>k?$@O)*uFtMDGSS2>)*w6?mP^ZT0ClPZGBRy%;2oNf4gzL6XpUO{l4rN4Op zYW}L9j9^XfOftP{7Koyyw`53t%(XcUNQPp#mzB%R1!&3H9^Wskf(8!d>&c;IJwBZT zbp11(vh4hhXG^M&B==;Y#+HzA6iO$)U1kub%0>CrC#eCrP%l_2vfQ zhL0qA?W$AilAs~2^4M>RoHqZm*+cbuL&CvsmOeo`yS3VjXr?hUO&OTsKp5wpTlEHGFt4_5HzgmOka^h1!^M zn$KwhMS{0HNCRD^q!@31c4LN6$kDP&Jwg9wmUa8!VV*Qvd5|}Huie0m|-M%y5ZQD{KcGT{?jock#lEtCRAdV zIAT3rmbQ^snrXho=&I$p+{^vvHC!Uci%uLu>$kPG*L3f7M_xWX%A*_NBaWpim7TJ>y8$Wy}}dO;j*p;`jIT~A!0NW##RQUN4WL&5xm-048HU%NVm-* zZE0fL(rhk$A}fqxPLKLwJ$oL}Zv8xjm-GATt7H?XITJQQz^Evcq z{2+4oJy4kxB)1YDz{C*uH+fCY*a}Te^tKqU&UcWo#cnO`zshK$Oas+_Al2p62fjF~idxY%n@FLVreqd?v8=ggv~P|J?g zhVgKqgIlIJ^g>&#K&7_kQ8rNKW+UB>NS+WMia)_;Rj{_&&#D89Y~}q>^)y?!ckaiI z>(QbnPuw^3`v{DWt~#zqb5B6@wg~S3xR$dbhMm0HEJ%O>W_qpb`Pl&3*w8&bHDW)2+q+XY6_`FU0%-xolnXAuj@A08I>fea)XuDCNoOaT^-gR@}p7zw9k z?p8CO(BqS3{=4->dL-Q(lwE6aE>oe5;lXf~%~oPmLCCA(JFCrXW&tj&AEW3TRTMxy zx7cmGu$D_<*{3i})GY{QJ>M*3`K@-$wpw=lk?paEZE|*I=Pvw*fF7xfKE@)%M#`6Z zVb;Y>*ck_CkUfhJ+@yy0YzM6*0d|)LVb5{+RLCC>4nmNhazwAqjPu%w@1Lf_b;bzr zYb(5G=LXw?7!G&#iAZdV9br((xSvrt+RS@*AP$AuNJ2qLqsiU_OlMFc-Y@j;;s-IZ z9OJ)CzG6u0O&eE{*|cP>#`^|oNmwHN42@CgPVEZ!>+-CM$KSBfo6D;4jSC}mo)W#C zy1#InWF7YCLsCXMN&>^M=XWJ1si7FNkNp1KZWdc7osUOZ52&W8)-|B{X_GbkQ-%nj#!&6)^sqX zuX2mf4!Y|+8`9VG5Bm(ZGRAa?ov#)3E@$x03!~~vang?Rp0)Uni?+iiudP4K36qX!X zP=2_bh3!%sW`;;-lEj{V#p25_Y zwNy`yW;RHG43j{*H%m(T6zUM&mZbhshvT*Wq>Wx&yL^+a;_AcH5#uvpI)dHHZ4x2aAT6b`npn4+Z|W zw~q^b>mZroD5Nu#d5(kp=Qc+JmP&^1t3cyB&i*!;MBno2FjY*T71y^I6x7+Ea9h(f z7%(~M&G;}EnOcCN>?ApO2p|ZkgeD9v+@!nx8T@5~QYOTbV1rl5)JGpUL;)s5jsIHTFUkYDv9|=0OssNqs zH>*jBB4)VafxoP5f|xgmPg{BB1z+AQGvV(+#>=*x61t}4^}{Omn>Lt{>6gH6$}D&n zCl@z04?HVtg+^*cST>_Wk?U;y_b_-S%PZtD?7lF~nd410 zHqoY+C^G49=9z5y=w3eU7vl`Ut|LTIg$Uet=r!W)=#>J=xM_?;rn|0s0?unLQ6BCSv!Ohw_K&W=OE^; z#9%(AniNtSCh?K$PRhhFH#O4{Gz1o5Rx!>sD_ma>J{#J1cADZ{jdI}!0VCK4eW~xr zH6;yj`D&7`EIh^rsB%N6!H4$w*Oc)nG8a00>VM{oXW#mk;R6ENP$c35se@mIAm4SI!OGs|ge2RHp0`#HF(>uy7cG#riNVB#zl zwkd*1$MbW<*nNZW%mr8+g|O(CZEP>F?w5R`_F1aORU10V>jON|5>2ATGiHTZ5z90# zi0l&)YU5Yp0izFho^T(Kf-3J;a&b%33*})TLZXeL$NN`k>JurylQ-0EbSkLb<#5DC z>aGe3WZW-7ia?88-O*y{71K-ugar^23M2?j5F=GXh$Zd+N=GYTaWr4XxU;%C3;`?u zeN78B3ax=TnVOw79txHil#UKDS@yxRuE9eY1*UD>*K!j?0XEBnq&Hnuj}CU`Pz$#! zHwPwyq5dKak{#@RiU2dK>(%>c4J0oo5&r(J+Vuz39)`su#I6`_@?(YeX?)4Qyi$2W z)nge}EE|b{85J zY+Vul<LO8n zh4}{av2|VmsdGN=RL&P$*&3FFh%7RM;Ts;e8c#x|O0>042cvASjC?%Y*~8i30vAHY z@|R8kJmCD*i(j{XVAcn0Pzy2UMBo351xx2U@XSn0D%W4%oxjg9w~5`^-x6Ov-ck$E zG>!W^syJPA&P@0IsvvYxVR;xQW^DVwwIj5fejQmdlAy$m`S>M37uXyMbs#M=@m8dtL)xK6fr zr_LnQ-$4psW~DzTG9u0=ZmWZ=CsuDP87jDys6|g`1PiJIA0vLWg7%e%g~vk(m3i@XUMr>Ujgp14${+rW5oA|-9a&%UqBg8tLLj>p&-B`1Ly?pm*A_zioPid zA*`|lnK67D_!72`=(zpJ=Gxk+D>J3%GE?Z+MxdY2`7&*;yREuT8wgU;-OXsU;{=HM zFI2#$5APbjNUNA{ZENVX{R83{?d7SvsXW7IKazQH%pZws56-LmWE#Eho+1xXMnl=@<}%^=i!2Pm}H=MKslO%JBw z%z*jz5s{X>92kP4BLy1(e36oLvt`x^opYOvAS!l$QF!vDow1Um=_$WgJ~d~G!yxBp zj zQg?+!`b8tr7A#oB=ho$Tg^RB>mzyUZKCgZ@U);>bu3;n!jlcAjNBA#&Fmk<5msLGE zihqdOnKj>pVH`@3#Xih)wmpzxn~WR@+Yj9D`!nSy<=?=ZiE;fXVUe!b;n|S~r>?7g zNb0BtHVvEur*rnCOQE;Bkhxppcdcy%{CcgkxyvyszAk^b=Imu^hm{84EAl?I8-!V$ zOf?S-c0#_rbtoh+o4*5A+R4Q&GPLU>{n2Yyq3Bdxj$Ov22+CYyvp17sJ&)zV^h$KfnL zoLcp3#t#ph)X3#e44p@(+hP(+y{iksrb*N6yH2SnSO|RsdO^dEjgtzNb^5hB-OIX;Ce^o>$3MD>2x*N4o#E#0sb69|8!ktQG|jN$y>O*;zyo!}?{5 zd_5{f{WJ_hjW=%zbGlQi*%GZRpO9M}P6UqMXKLpCTrY$HPSxhLBckT%HJ~gkdkgJpy1-&MUqH-`VHW8O%Up%8n2HC1Q$mOR zmzAUX?+3Hg#e#{EsigrPYbYY#=VZbjI#T$a1PU`NgVP%(;#2GDK0oP{$4c7#f zE;;!JT2BDUUv#0^_tW{mR}JaAf!?|S0Uk7Yycw%Wx8-lBTpmE)r;u7A6r9MV*ylZZ zaOO#4@`z-8oj#raB*Oy>=%&2fqluN+}yMvtYAdf@g_ zgEYUI?;VK1liWSbeN0vH9tgQPRJ)3b}*sV(@*SbC$IkexrXOFO&b@AX`CjLW&Yh}@ef?I|~I^<(Q?9WrGplr^O2)ruZ zj8BeoMcr+N-5>^PE;eDXaZs{LM_Fy7yjP(^f?VeC>=gUT_-edQ1{HO$&%R=7YWGAu z#~93Pwj&&TGbmHqllI{|Es{Ln?r1iQyszaF8wO#oa-*RVEEaR*S_^81zCuUd$4{RPz+k`XM}; z;}~_Nqo5z|75gjN{NVK336(%GsQG}IJ70!Tk=w7o2yENhMTH$8D9_;DmvR+YI5L{1 zKLnX~@Qmoe2O^P3YV`|CtX@c$qg`t_{2Vy_jv{yzs``&|jJ0bvmZ5+y-_udm2%KbPC;|a9~Y3yGFdvVmuv=`IhfuDTY9AghTNymxb+zm zenf)j3X2jbY1=Y?}U4#;5{GG6tFqXS);2Hkqq!c6^T<>{~$f7kNM|e-G zX|gGKmWg=My-&StLumCBViXyhI4OnTFVqAp8I1kP3Skcob%hjR#`LY{SYSbQ`lB?e&Bb??b8^IbRSC7kw0m|5D7Ixo&? zVns&A|0z3yghA!f_}jx=cW)XeQd(+I2p3H_ahT5m^Ac<>R>)%8-~B~yXVn^8QNXxIE*V;n5&u7CJY_-Cjha<;m2+@lorDBT%~BHrF9~UXA1otu3VUbJKC@vxSat`lJQ0J`3TioE)y+KLT^c`cehCHDQTk z34vc5h)%QtWw<+X)w=t@`^Qu;Ee0fM2f}HyTLB3OHB1|&(i}~Kl%@CN5Lc;dhS{cF zu0K;SrNS#wFvn(2`cdvi&rT91Ime5r#@wk7Ps}?7=a_0AGPUiV)wjTcK!;QTxU0F* zlSRd_v`!qH*kxTLqm$qW(~2Y5O7|9w`!I2Fq4!>`P%0w_=71?*`ZpP_Y!dj1J}5!V}lO+v!~f|5TjF72wXoCO%$JH^J^mF z?BL<}u`0D^$4b&f7h`sS@P$V1|CLBR9-bN=L>moRZ$Pcl;IAOe`MaJr)-xgPCOTG&r!iwvNMp<8wVk>*mQ~xnjpy6O|)|`97nWP7FcUdd-El+d#Omznm zu|Jz+n^)E1_nF}@czVUg{PO^lpdgC>6w0@=n%vc;03-a3()hJ&mJ2a0hzQ7jo=x%! z54ZitxIHu9mXTTZtI5A15P;19jAFckC3wT0eI&5k@_u|5VQOd|VB{q@MMMP20N=Dp z#crzBJJidHYm6WM#O&EnQ@|epE8+_@lh|c9GV_)*Q>Avmo1gF8l}Ls{sp+pcM+>oF zor1eMYduEjEt?6Br6`TA@bHNF;DL!0W4KmP887+A&~#%mAqkyOafTY5eT3a3aQ>MF z(1v!NIbaLANXWKd{_+x2s0vZ?h`1ezEQ$t3utgTMKg*symnM25K}z1jA=Zl{1`Jc`P05G?4TuyPooY^-Q0& zLbM$20~%*g`Yf}p!TL}BAteb%KWTDnu&5j9ZFH~6AGvUl#c_{T4=Gx!n4}wmOdB+< z1Qx=sEyb=@i!XKh!OVA)uI>Q8s%} zj*U|dV1KnN()h$Jd_6iR^seH=tbCGV<-jXlvKD6z2(AS&=wD%Ezs55{?}V8e@SdySNzURD;Q>jFRri=@kIu zOh^4X5d!mG+Kj9JO#xVS0ndh+ng&~n&BY|vthwqYfCrM z`+5(t=S=yAhrKTrzI@#9>c;$S{q*&MHPuUj_BtC?le<<&*`*i>m9*geSO0Y*(b9e) zQ^FjbP!u=^R5D6+AszT&Un#5HP`cZG%<0&i`#@+zr#$lIsVA9V9fs1ktC>jmj^O8$ z!oBbSUG0_Z%ITG!aeScEws8unHX}czh}K)3tTt}Bn>jPv1{H>{+P=F+WgZ3dYsb`C zT!RCoExygP7INw_B3q&>fE`L&H}~x8(LTNDb9d7XJtY@E@tvxZj<~}7^({!KH#Vr> zfCi+O1cT1z)5{ZEkbyim4o+GB2+~ju&aNoxk+=GyO$KV4^mF?HnMX3Box)xjNdqqU z5FUD1xZ(YcQ^5UnQ{?^55VQ{fYX?G*Py^NbLVVeZ`+KVj?f?VX_3Pj4cYO+e=p=MM zlh|#>fg7UuD>-J%@3C7L;AB}O!fTD+E)A|KVfh(mYbPQO<^_SMlAZA zxR#DrS#|JVi>&p6Q3>4M!K-lQ`Mt~*2Db!$))*+cr%u?7S){uNMV7(?r}5ckP4#+B z%{O(S9fg}jN#sT_oHjxE*i>#g!B;PNCXXrd)U`z}AS+)vB7=Fq8{T-F#UyV_avU2_ zTR5uM^?Uet3Mb_50s1FXYZi8A00%!ry2!rBu66xo%sT3tXsK+p+H%svb_T5`_13strksZGs4}DGkQC-(NUHiHNL9TgC0w8MenEPMhcpFze?VW}zIeR1v@3d={|X@7orZnHbpF#G(QCwOp7|MY}IxB;o=< z6i*b;ifi(+JgdgKJW;Suu}@DRY=`g+NV09Ag0)8-!H|#*avBi_**}?f4NM_s>023N z9j6G#N1#R+S5W5#UrscT0*^$nwVi!qntnOE-OPdUpF)(RwtT<1lR@le(q*rlYRz7)*HdNjn%}#W&jhbb!`S!@$B@sMaPKLfDoqx|Js3 zfiN6XvVAwSoaPk|ZuS>sF2uL?P^ZYJZ#*8?VKqmioK1}z;5ra->>!f5EE!&E4il+t zk5_lFugWU#M)6DQm{ZC-3egPg771f%!$)yn5a(jslbQ!TibaO?`jWYOBbu6Ft8?ST zx<32*4ApYKTun&RKc1-%q1x3yart|~2%rDozcuW+F*0F;Dt=M1&K<+!2W6U#WIz1# zvj^4~HC8%y9F)!hYIhw?8pdcP$r>Vhhm|14$EY?cC4UTiLxd$JdIz9fQt4t_Evuox zVEb4>FQ#5S=Q34It~T`4%L*cR27bb&Wd-_4G~p#>EiEc)f&~11i~DcIVh7^W*_7Ym$kp znxTW{{3U-RZhosgbEj$ctEieiI}$<@Dq^F;q{_Dp>TKNQZ^$Kfga#2GB^Uz_3NSmj z7xkb<+ujYTknB&_OAcYbSU7NxkO}0|*VWS{yG4QgH!u%2sdCyua+VB08r5mX> zZ`1AqOf3V#@m%GdSiQ!PebP?3AvJch3?8Cr?`pB&p2P~NQjB!DQhNyd-S03jn7CFB zh&h-XdygWk`~A!@+Vu<)aom$a^MlT`t$L73z`lUSAAS2m|7+$~uoY!Xy)1%ukQ9y?hV>iV?ym5 z_M8D4`73ruA)`tg3PoB1UWRkipfh#{9vhU;ZzU*L(tV_gBau1Mn$fwozlav)ebkip z=y+}bxmBDltL=^@@i%~cbY?y|mnzd9>t`rj3sNiEw~eP9`H{sV^9mI=e#1-lFvi|{ z+TwcqKXj^DIh$gv{ns-zyU)0$j%{KiC8hNF&)e>Z*vmGTQ##y#IId@Dc5AbPzN@LY zQQ3CaZ(=;mWAl`{RwP`UW+z;{f$fV>MI)EWk-iX;ZnO$7cWRG-jsR)PMf&){MB zZ?mnpTd3YS!DaeX|MI8?IL3NIYvqgNv_*FvHk@CLQg<#8IZs?y)<6HcUo@>?{6&KM z1J;Ycj6mixfREC^X(xq4IP{yEVyE%66zT_@qYt{L$PY6J+uBGf$6Faj9|VAFoiI%M z7#zdx%JyKb+7~SBpG9yc72Y^jm_a|Z{vT=o7#>;ByaD5}ZQIz`*x0ry1VK=@QX(eXdTM4kBW&TcYfMC zO5&C5NA?HjZGToCXW4gry-*If9ex8Tt)ish51DhXGv~*PuYbg>O$dyhXGo|7sJ!E) zuRgoCK-KE{6He;?Sl$eXHbCPiRw@%jm+k{{SO1W-tBX4AuQ$yv%V0Zd8ttf}&c(aB z1(rhs%uY$(Fn@<2e5=SCdsheXW5?ZG0O~!6uBopq+J-NZHT_JQwY_yCE`zx+C6?*Z zvd?%+RN!1|`VSF?P~eKf)(D>|)_CE4TT>~GegBnYYcV}kHV4Nj6~}>Fk=S!su)|D? zcDLXAiDFuE+&HY+gO|dK(1ELrV?D(ofzPmyH0=JVErL(LP{0GK&f>j7-$DCPYCe*I zj%3YIEp%@wMSIKmIbXu_`q#<6$GbKh;JRXbA)JummW%9fj)z*a z-X+Qb^w83n#hChUu_c%Y5=hLuIAE-+jXh8Rr#3>`)CUEmq+3)t%Tp4PlWvqNug zd=q=a%XL)`hfy=n6EzrqPB{Nf%)HV&9?g&q8xPlSjZg;_%e{Lw!@L{P4s7J|xqn$C zZehKZRehu`wrORI5dXE-?O5=9hC>BYFu9|7M=D?#vQLwnd=3$T|131N0&0!pQP6LQeVPs7_lyQAP#Kd? zBIV(Xhtv!dlm0gUY4C}=0m?#p>9z@jwqgn^(aG1dtWvM8g`@-P-Im|}YDJ@q$TpyA zj&Ppb8&AWsfza2p5_PhcL*|GdUWvuXcj)5V&cq$L7~kaYlYMyc$~yc}Z^b*{jw4KG zcd~_FFsJ4OY*X|?48gDO1^ZMz6LT>r;al;ymM2$`53s_1hNSYz4`DdhfV^-m(Qj1n zeC75N%S}xjMY{`Q*~ufh@{ng;^U;I3D3{nZyU*fE6waf_l ztc@;;1_zOUq4?8~%-Y7uMvG%9QIO3b$VVwZ;7zatT%4Z04rV&K5qCV*w-lTecLvl@ zt<(6sq76={nZRev*^A}n6usaBLTiUBb0Q(HJzuaA+hr2;s)XifQ1v9tzH7hRT2D_HI$o9?^uf}%*hdV=66<y+q>z$%+di0zu<-qgTlQqhp*=SA8N@>K5uz``;hOY|kI`_O&AxG<`c*?w^ z7+D9jIpa$A5wz4ScR}qlM5@aDtY-K#* z1Go(-;l=rAF$PC@a6l@1k&VV3|x%$UN*I3$~i(9>bII1=cm&KOm_Z~gG1;9IHxXeJ@;$U18s|8Gc zoa=je7=~NMkxIFgGIvKjY=*0R*!ODeD0=a1hTJJo>e9aXe`jC6wMDf@BT8Egm785v z3>7Fs>yU8;rJXl_k2i^RD9U%@m+Q+bhO$RxQbz(8z)*r6@Urp$M(U59X4=EH>?oX_ z+mmhf_3tLZ-ihe$vUI*{?A{ohk^szdAZLp(nw56uXVI26<*a2pM`~J`v z=P@((8u~yU^50OBWiwtFj~4nu)GOG}LKV0l**3fHU^L;Kdz4H{!O@RBW>UZrz}BVQ z4_&BPeZ+PE#bWCfP+p%h$ZM5-eSf^AX_djA^|c1y4T}IViMKV|fV3vrAE~W~P8MpE z#{QH9t@;>DI3R8_{npRG8t9CR_$ED4Yvy}kB6_M`A~~H6m&e0)b^V{*PgOq5t#i8g z#mL^us^A}2$PW63x*>66BtfDDIF} zvl@Ev3>Pmc^RE~X2ny0(x;!17Y#2F^a*gfyZX{EAP{-f2_5k0oneDxuj_Ta_zfzV) ztty98^0Go`ys12C7GXRTx__L63QC>uL0*A*@x(I1p5{7N!C3+b739f(cq^b)Gyt>D zD&B8-Z{h2i&AJXv-@E(A(x^Y%HNBPH52-h#8fJwQa<_CSnGiP+l=`h}jUNJJ8&SK# z!H4qI-^O~hoPM|IxE61JkKQ1gl|RIatfH?ja4f5bLX5~?h*hAQd`H6kH50c?F0S(9 zzLjgvW#DyTiP`NE^6yCd4}ErP$8rj>!P|}|#b=v0Hd)>WqFat_^OL3!%fy*;&0q34 z481+LdOBXrAA5Fw)xaA)5+!=j|2d9!y51Ft7Ax&L#_Nt3WVhba)pAxkASs^YnRF)0 zw+a14l-7r+2ar(1@p8oaza(8(a+LWqQvrCM#T*-FM3exfXJvk^I5kA8yjyci8uoNr zPF!Kap~Wzh9U6t4yJ)<+cy=3ghrnl>ML$)E++t!I7HnLLa;HYM(s+!@1*vp~Y3XLA zO0^Ym*RXv!<}L`sQaRAVl1o5T>^`#bM^4Jm+5wkewR&C| z(cIx@zqisih9Qh3Ey7eXYwhSJR-Tq88+4(0gx~#_1^4*chFSmeh4VI^-ZQ;zF$EXoUBq&5Y!`&s6lDsopaUY4te%x* zg)B%NBlzQe8bMDR6zZpsx$s{O(wb<*nkn4PNrh-}k#)+&BWNiy$cdIS8_PEbGfCWd$}#Gj-kB0`|QvzoSy|QZYYb_rMzxSiJp<; zZ#DhS;U5gJkSoKDoHgW)x!1Rh#T@ZJ;xslcn~CKQON#@Gt`8QVvg?>a8$>2cVa!HR z#N^`xfzFc#AujuccfL=LbIe`7T|oT<1y@YwxMgAak<~Plc7e?K*)At}t6i951hXGadps3FNXN^Mw?zhA+KfKU`P8-ZU%y^@rp>}DCT2(rHf-=c z6kz9b0dARogq>eLH@GwafR6OaVHpFn>lJK_Vw?2nMb{eWdLR;&m^oJq@q@5^ z5sO4e=b0wZSI}lLSC-y#52t8~MueB@(raactZ7{WJ6H2mxcrO}Y2eEUzxH=pk_dEc zBftp}g$7&of>u2RlU_G?aRqFbzeyLz_EJ(>J`o7k4$aC}Ud1()yf^MldNw9VHFhKE z!)~{tYgLEjJKH?TAvi9zSr#?1&?K7~y(@c<-WV4sOpqF(bj`f*Ro65dtu1JdSHayu zdqUC|$D0UH36doCD%Bpsfwx1i(?XUM5HEYKiJrZEL8~j;mtiU(h?#8AcrVH=tz(cl zbm5;|C)t!2c3URJF{wkKp=2guyKUh9!W^jjK6EtbWF`=C_Wh5EeY>~HqSr%zAA3?8 zVKZDyMp5}B|{Js~QqYW5}Tt84bLftZ6}i7KyXhf7-3l1LbAELlynwa}GuQ)^Q{m_Y2I_A$dB} ze=G0HZ|X9e(GJ8=)Lm6gh!C)G=(iX|(Nq_T*+hk%fzaK#ic^KD8P;iGRtYaIbCS02 z9qs8FVFySF#|)%u3>L-fh}>aokdt@75|-vWU%@OJgTw~&toj|>9CVH-OxL{`|QHgyhB zt^n_Z!bH5hsWVTP6Gvlk3zt_5>;oyYjek?FihXmpT#KrHf3I~$Zxv1dr6;C7SswtR zUe(K{7i1kUJO9m1r6r%MCtn-d)a_hT#O&OC!~@fUE^LF0it`dJID$3@>p@uG5oo>{ zc{*tt_FMS(I>yQG(UhsddjzK;o2yoWTofHeo^fG>RG@RBSwfxOVTTFxkwL9gbD#i? zwRobs8kY&BPS+uNH(&k>?&`vmKH$h5oyypX5kJkxZ&@>YOf837i5XbM z2A+-LSP+8b2;a2q`EPJhWVBKq50^$=heP(>5VS=_4Gxb7lO~luSi|!DxiQav;N3CG zm8Ca8)Fr-Il0{m;qV9e12T`VZ-9O1AeWsU|tts)&+#WHBry9N5$|zO#cF~?;xj^6T zTXDb*GCHC%PAX#ydu`;-%bUbnr%u#~G%#|&$f?4@2A2%VxcqLe1SS5(^iDgl>dMA- z(?$13NEi@Wq~I~ins5@{qKa$Kg(eeVtgC7YhR%ODZ*|_hAF2mKNr|W(vw#9Q@ehiH z?=&1t-&nO!5ksFC{FC)nHD65ibgSi!j2*PAO5axtkj(4}FI8`id`XA!fK7-OJNhlR zpNY!X)n{-nIS3N(59M8Gt*6_3b);CcW$#BTa73LolLS{aFQer{O3up}+L#Yd&F!`l z7FnU2o|wcws{Ms{7hyM*hi7Au#9nZ-4gB6Sy35+>ZD>fNt?)^sv?zl6iX%Fh`Fq%g zt~kU%WKZI$=zzxB+Fv*@C3?TBKEv}^{>xitXIWmA;B{fmhv1ikMaD?%uCf2&bVjd| z%$r>NahqjfJ@iX-bZW9;DSPDrsxQWy)wtTrjmpn7deSAnOLI)9!cu2-)5qjCqUhiq?D&dBFly1YZxq@|^K$9JpwbSd^H2qj zv72BL#-?U1TCF~@C9{BRo!W+6b|NC}dcz4*rL^GPFB$~a&0aCBVG`#}F0h(p$1 zf-K@@IVXZ8a+i#vYZzi#%@I!U#sg8_Xmap*d^0D+BALi|gc2!q-vVtZ)=ixhye0mr zLC3po)Scq2J44W;M`R202O@Eivrw12+Zw zeO#RG&Nzxmqi`nsp0-YbGN{tKaYDMvP(;k_fVIjOw*-q$m9t!_slk3k1HWJ2^X5=5 z4{`^G8kC=@11WU+0PoW1Hpy`k)aJiP^fdD1_!$sZ9Rp3~5Yrd}{6}9jqV&H?jh?Fk zu2Uh#vuu4MZ1+46ooo>!N*tS`{)GT5XN*xPkOa|$UL|{^+I{l~9Rh{LkSXR%4#`k! zKoQciX~YV~56s=zZ?r#t>-6X!D}mJyRZ+;UHQsifcmu!;3=m34u#CDEV74lZWxX>8 ze-C@94GFW#6Rb-+Lm^Ys%D9I#$8|PUD6tUptHahTqK=1j=|thmCz>Q%%B@T7%i6{j zJ3x7SNrJzlnO}FPnTbujTDiomSq#t2Oc2!v=up?9;ag>|`n6(7`&MT0hz(q6Otfgg zz}t0wccubS$msJ;(<_P9ku6oMC26H~*KtF_1A;l@Ai#7mG=B2@tFPJlUwsXp&;-}c zK^pefbZr^J4al2+cIN471^8txeIQHE;UUHhu6G-Fr``imOY=@wgcDNLQC%QIC4-fJ+cOC1_d3ADtQiP>g?Re?rg^q5#K|7k&XXlDKp@(@2IRx8&Qt;*lx%g`(Y<8cH=AJ4B%Sc+o}f6nFj z!&NGIsSf#3Nnf!^1ztbgK@@Sbew@BXk9d5*S}qj5H%X5gj8Y}u(p&d`tc#e$z>Qfx ztKj4?n4llpL|;c}5=~)P%RduN{Vlk^Cbkc9^Gx2o6CwX{7MQ&EQw{f7nThhXbZ@t8s~Yz}sX9J5f=~oI+ICxRaRcIqr#PMT zX-&8Iw5Pl&1BD^KLWz;E;$e!i@stF&zB7RU9#Vkl^+UYY;O7duK|t3}6m~2G6DeAK z^>ax$2-Vhu;%#)F&%h#G!9b?MRF?*ibhOwmr>WMDVgp0uf?v?5#^}>~yBb0;tG|{R zy75Vx>d0rFWpdCV>P|RP=o=Oi`w%Xn+hHbxunj|*;6ZeqIJ?k@s@9_ypR+rgp0o*6 zm&LnJdaqxP^4^Q8XX;!j?SEABa&;#l|BTrTuFkYKHtp*$gnL@s6;R$s&Ya`LvLB=Pe!j= zT^<9OToikP@|0PDmlG2$x1h60$uPmkZ>U@@;d&~TFeOzCeHRR&8x@4FNrep|5^24t z>vaADVZB)QYi&4TJEby`Ol~Rh%qC`X=Z0u`l<> z{mEStA4M`)7FXA|9R@A_erAfIM!xc^?2yz0AvFNG8~WVTp43k8B7ZiO2CoW)H4@XN zy$^yVi>AFIoY3k}q0?Do5&^Ql{ey*g!nqm$AoJ%6)8p2{&7&;b}6EJ#9$5|oGC92Xe?x(kcNOnrW%Xwqes zdM$zF%WBU*FU5;Bffoh^1#K7CMEek5!UkbE=7hsgb!*8q1$ET+)-~~d19nmd;msCZ zc#}C-Mh4+qya8?kR|$f%=T(1F1tiqd53%&nnn^cztzDo>scM~nBh;p;%2O>5;7W2^ zswL?>ZgZKUU`N100M}|da3yq{3Q?U1 zldewEIoOBA)(g`aphE_q`y)d~g>Igz#vHseZd=K3Bt~DoI$fsrYxtr3AQvNTpkx85 znWY4SJ5=M@ShYxh&>Q_BcZwn2VYG(bre?Znq9XJyz-PV!9B2&x+E1b1cnNZ@7dmyX zpefi$m#o=Zgz{&WY%dn0`9m{ScIXEvKCPnnW$vx=ODJ}TxY1)qxA@SV8qT z=DnJ!eC4bd<4#gvQ;yyiUvMoJD|8CJ!>t3j^sar>yBPexHZMFGuD4)zIP68P3qMIq?%B}jlkx>*m$?U(TUIifgQk-r|Gh*y{wBbk-zMQ@*T z+W3At>#q|z%%h3}&n;26q4*qBOx2j%5&>$<)Ed7Z;hn4QWmHu;v$Z&NBg5hHYa12d zuanE0RsjALy}$xOVM;`T_%BA6m*rAB5dY@;6D{()IWfuHZ}Lw;RV849O|ZEJ?2Ej2 zL#0@E{GaU`rQvOk+RhADqO)!C)=wYQNAD{nTBkGj?r=xd*66^DkJ5CE6>{PmmG(Df zuTmb3j{N2roYGoXQ741qZ)6!8L@8R$Uq_1wpcCX_ z5Zo_pd*B|UVTc4p){h3pFTR*8Awg_>D1mEVhEB@wEm2!n=BB0TIG3-mJa7)Fx}17t zN--+b0p}+6Iy(^djV(Jh?^-yZmtk7g0UdmGe3wRP3U1mobu2bWldKYr%qmnymw;p4 zP=1W2tGX?WcVCfENW3mKQXE9USJxT;Fd$Q*&_PJ`Qj)Hop5N~zTieJ}uzgI{Odf$> zgKtfWXFqgSxgcVE25^4Bz5sbl1o|=bb_+U$c1`Xbj{Nf~#=X;j5c&c>8P8+0^)pcD48O%! z$MZ8Dh$grUoB_aat-}EV5bp80=gx z0T_npC_I;UrcfLDx5E092hKT_Un<~fP?O4+Le3Xnl#F%2$dNCkl`9eH{kk7&&!+u! z`mIz;N#+v5oLW*K(7{XYx)`~EBR%?c3}S@C!_gv8>KGd1S(BbYDtvq*8cGiKXAi&1 zMR6#>Svk*LDu1@^fw%JAQ;KF)6ruiItJSmDJ?=9Dc5<=$b13%fz6*C|hnZdwSzrNN z>_kna{;!Z@_-4KS7@S`4(PF!M1Z4h5Y=Fg2RhgST^fKXOl?s?MUA0pWe>&C{u+pe# z@6va<_DoyiajjRc#(O)Dd>KVjBV2l8E{@@f^46K$$U!!ebk(THQ|Q9eWEH81m{jM5 zw^{mlt~^``KHlq$#|~vfX;Pveq0ysBQ=`)&uYIGKWy&{r=c*xR-wS*v6P&lw|5#7)+yIHq_CDM4iamQxl~kpF1WK(Dmhta*C-!ALmrxHtg+PI|pW8mQo(Iq|L6Mi3~R9}~nOnU2h; zF!w$VHjO+GijLM@dK{(hL7?zIXYr$XTt+xz_S zrn(2`>rS&cQfA7Y$GP%2##yRL3)yz*zGWhf5+uT}GsnFG5Ci)+`^76#KTqlP#_iuE z=#HD0x4};1|Jcpf#QIuQ+^nlf-!7DXsq4X=0(PR>vSg}kXq;YGx!o*zz%RZ&ZA>fIzNne(ZGTa&mR}Rkg%4_keX0zovq7wU9lz5Nus}y~(*J()K}9 z4zgDlrHHm85n#7m`Z<(@zbFnWQCb;s8x~1;V-Di+^<$& zn0pr5q!)(S9KE<3gj8P@Njov89>TIU-Gsh;8?A^)&NLPL~uUM=MF2Kgn>~JLi9xxDrKq3MoN3# zSu0ax-#(S2UcEkl+%!p5GgqN1Juy-~oIlxA8EiOHY!0uU(mD6II=#1EzRPBz z;#UNFg+mi%AZ!hMUzkPGAp7!JRP~YP3x9yFlE8*9#mEgZD#Xc7+eBGSt+cuRF z*!4YKWg!Fbuc}4{m6t?UCabEnxSZGftMJD_EWX^Xc`8nCiHf()Zof*FuSS)UNX=XQ zpYi+{pR3w~pRI z1W7&MtnL_bxagZ;BFw0PhD@^HMl`=tYv*tK>|JMchY{J9*+3P3O@@dJF!d>nlBK06 z%xD(5^OHR)eS*wXdzguY`vN9AG8ycm^j9?Rp%T3>{PuO22HY#N-~; zCe0#NuK8w70N;44?6qr(A~^5(h%7fW=n4j=b4q-w{qyE^BNbuXgerNixjY*z?fODr zt~rN_XUV65(6|=2>vVV#ofp!OY-=LuI;7JOE$?_M7)Xd>3+EJvR2u}PMhC54P!}bh zeB)(cx#ovdIS`;L(eVE|YJI!*lubdFKCVDhYAnqRO|`c%R%*nj6IckWBOlN3)!6_4 zEV+Hef7_;{9G7BVA?{dAVBnK3c0eB+=LW5Ds?CE8Wo-Cj@zsb}jd_`Vcpfu1mjPy* znp*0ukiO=MNIzD>ejJ0rtE0K_j07+lCa541(Q#(k2*D2hqn##F(&hc465OKu;`US| z!yfNCa~WKTOuAxzr*Cz;bbss>RGV~28E_WBml{j38yJJhHlrRS(2r4}eV902{Tf$o zbLi@IiDXVnP!o_U3MopIU3$96?gcTX*1ouO-~u7sx_dcRA*WAR1|Cq7QTx6mwdVud zGcT#*hYg&7rIcV8h~S0NnJ(}rKJas>GY_|8K?tUG<>1D3>n;Jdjy(A7W+GkDmgCi~p==6-<=7+{pn-Q6S4LFR zHYO8PFMVij&=fUO+T!B=c}Hy)D*UzXgL_@UVn0tDSAywY(0P$^%XY0qm@@tDySEI3 zuwm?c3g;_GGKc;9gZPh$(2dGeL^HD}j*f5ukH3mO!H|qY_Y2Lt^PQBoAR*GuMRwUE zZxZiX#2@SGdC3^Y0mAFfM=~@?1X6peLc3`TAu8DGG&1K|{IywhV!HX|%S$7wXjhb> zcpe{D-#f{pw&Yq$s!VVh>lDLCwqFLmhv^=k$xi(#HEQ5Weoz7iaKT_y zco2Of`c+Yz(H;51l?2m+5NMbhe&>y+*%^URTSzTA)%BvgWV>UNZy4>k}RP#CTor=BP0wFdkClzBg>mH z0pZ4EQFtXYiqYm*C4)xX!JTU(^^Im!ZRF%Yhrxy^q4WTalR~te48jL`REfTn6st!O1))vig%kJbeNEMRo-KF2lo%;B*?JVktc8kcu}V&3 zPo@^KVH&eab4iiFh7zIp(v&ZzXz~_#KH~jLxrO2VSeE}8hq5V{VsBQiHVA2Tmupwf z^qq(ghIy=9cd0xYX?2j&tp6#k%oL56>c2{pRwq(qc8Vraq?X~9RzD$w6DcMKvqyYI zR}>uqsm_{VnubUbq`K^Xsih|n1OQ5@0D6!i<4otokydAeBT6a!x28e>^a*7d zZ4wD(7*sg`dN(vEvUxPH*6{bJGO|N4XwdDJmYc3Ln%J zC#V;0TxoS#GZ#+m&^~hb325{=M&9fLYuoSgN7f9Yji4J~MZqwT!HxCTVyzK4zG$FH ztJ`qv;wbV-QqV&m&`lsU^QfjdJ!rU)vEN(quEz1pB^1Uf4x@vnoqlZLi({a~3{VV? z`a7L%Py?_a6WIXK?-){yte*_xMUpdO0hrK{f43P5h^T{(Zy)5NE&5OrMwJ4#;L%l} zbYU=!HX=9==9xzT>Bviu5qvS?H?YRxNM5CPqR5dmiPUl-UBea zZZxL@CClLeJYro3dW@G-z#5u1RxC9Di2S-Xg@4VZR!{4lrRAn zw#*8ae;ukK6_bIDgO=a;GR1lr#CvdyX<$+mCsuTpG=5S#2-1$f`Aw$r^AyF>D{9f z4+Y%^>zW2^CQ4v$#kCO83PISXqnsuovM34Wn_vYEc)gC$1TWj&G+hb+$xPiPEg3Y{ z`0#K5%n99~$a->*DY7bz z;3e8a5RnB4U<1UJ072b~?D0ZDhr*rV5?NTIN#mc3B(P^>462Si79)+xsgQ#tSf`|% zDBNbnU=heFCo++O8g_{Q#ft}V&`sqNkVQrEgXgkK@UDd>_KYZ;puktJkj*P$Ab7;n zv(3wdTINeskRy6LhjrY7c;;8NXLGlv&CTJ%t4@yR$t#y#cV8wPz3at{hYZr>l1pi6 z&5FuwXpPFTt0;zH8N#hr;rdDyQ11Eb${{!F_RoCBE95JKM3wsQ-capW45c#O&FN=j z_F>V|((r`VEGy&~qf$hKrQ$qdkgI5f{Y`|%U&n#Tz*=5zIf7U-054R6xXM3y`hn=9 zQYUC|A|ap^mPkbCV&4q57P$uJMz4V|D)on9A&X#CN;uPu64FANKh0xE%9#Q0A(e;_ ze>27m0MZ(Fj5tVZ$02ZMIR73tNBOV0e;oVQE@Du3R6N-au~KJy&U%WxN*DX1P(JQ| zi&k7$+8zoON8+7oRBEL4V2uuB0OAkOcv1ctfDY(?vS*3^$0ctNa`?!8M9(EH}xP0*sv&ggX|#U;3o-g{$AFVB{AykLUuH zGlHMyR27`*u1u8ONpo+s$0K0?zHQZsh?)B1%cqcjj(#tGWa2~T8U-(CZ}!R(vK2{z z6wDujU{^BiOFF+rebyzWB(E(~pm(5tg|O%<+*k3j;>3Qs z!Q@Kl5z6E>wO6KrJ&?CGOGyUA2vq#_wUU#iTlc8APp3o{86kbFsF+uv23BbD?Y`r@ zoe3s%SuH!`hN&Qrx*Y{k=(l*g(EOYfBFA$r(|3^oLLrJF&CT8?UGQ~W13 zCIbP5RnoMSDVp?NB}iPY<>vHk>GSe)$Wxf9v3Y~Ryy-&HP+aJ(oS#cgk*U&Na=iG} z6JM;jvlU@xO*yY%tgP-)BxF&X?@q^;NR$R`jne5D_bd15XDjh?cG2 zE`4VT(1YG)Q$9^{sTn(L@>@@cmR`lLbiZB15HcG!*epMa{z2c@#vA5%y|iK$IxYyDG4G|nY_!gO#9w~d{OLKV3aWPyU;+=W@{U%jhVQR(VF_%_uYYjDFTb<&4rC9w( z2c_4Vhc60WEP>$ptH5Uck)yfqQqH6o{`S{bHzcKAmUr!pFFAQ~C+AP4+3z1bdPVog zu)cG+KEiv*+eaTqRVbTUXysnYck-gk%tKWCT%rtB>nZ@5NUWSp zd*aY}7mztd_+?;ZP!LHvaA1V?Nu#95gZ3}?IVA>5G7#PJp<9XO@&VqtL~ri6G@qwN zv7Z<#%3fL*s1`09&h{QZb&VF=Y0|#|dTKtdqFSvw#jDK49OSt9E_#JOMQb-O3oIKg zE|vfsE!)9Yzke;UvJ7hs8&F9a1X7+Wb@wx1Ca0ZCM+BGsdg^@Mj14E3`3az?to$2R zQj3}Q)k``tai|5RHSUmPXvzOxxMN#VzkIldmh+TPBoM8rQrerk-}J zRvJejt_2uWg!|tXm^^}_8RzR_JNTe)KT|nTT57JW@6)aHYgX3%i;H+u20AuYb|X`P z#zc|?x%g8au>)zc>?AZ|=8SH(-Zt_H%b=k$Y}1AOHs<#kz*mF}k0^=Y_-Yi>C7{Ro zYp2=6 zr{O%s{JK*k$c{QwgXPOeKx65`-zI25$SCFFM&?U5$~NT;165VVCg=eN@h}wJ!^y(9 zS(!IqX9TtbrxxEW3%j#!BA*q*5V|?N5c0}j11ftTLOt4WwF0DA-L4BV!K~$%1TAbNKsEz8B;t#8EjvwAg#b zHI?Q}VYnaoR+|ntMtyywzN>srJA2OGXnt_P|A=TEErhKZs9--QXk!!s3$k-So{p!h zQR($E_aw9_rJe;%L+d))ofyEX*f0#|A5M2ttHeJ)otNE~7dKMl9AjF`QJ+r>Q1Z4E z(H@Uvm^j3mfH+*U#%i&11yh@;6Y8}Kx$Y+%_KK044vO92rBj_o0z$a;=91w$kYd*JKzG8%cx@p;e==Yl zctR+tdo&{~b8DI!fU#yU0Dg-30I_M!tbuRyS-)g#9T@q?pt--RTIUxU9Kl!0t3fiT zpkfOUATSQ)R<~)*ZVQZA`rOEwdeK*y&2ulgz4adgZcD!?q{Q(k65`|6|H;nWXx7=9JD$7WwMO8~taw$Oe!UiKUndB*cuPq! zqYuzA63rfrXL$S_sZx)y?LY`tk^gm5=6eP|*ruPuYA~H04WDrM3v@_J^^jejRtU%VesJyUd^(BJ27iVG3UPzzW$K+|oRCY)K zMjBzF>itQVw{=5x$s$`*Khk<~X$~GCRos+|`W&OBQrrz%awAl`ZvG8`oU$b@imN8X+u(y&b+NCv< z`S4$4o#jz|=q&+3FEkVI_yoNsu~yXe(@$DYZJ<80H!3B?xdhHyPii%Bg4H7iN|D1o zMl+KD1F4a7nJ)F4_)8Evwbi3n+u^3NVwqZBR%m%?e^z5w@MCae>E>5WRvoFcfp#+^ zOQ#Vjv&Re&+P#)@3NwSw=>HvmlP`+}G6ZT6?F^kKK)DF_LEf^6_K%}A?4Mf^!i2S1 zicUmsSyZW3CBBU(ep0r@?+e-t@${Y7z#W@%FNs%uKFyb{f(%Uq>BfPg7tefVO<&Wi z%7JdJG{)?m@^7AAK7ood^vmo~HX?pYuN8Tf8Uw*U@%-KHxpAg*No=%D8(3(Dw&Ycp zLlAsaAZMv{-Fr3@4}&$tjnaC0Sz@&>9OUZX8x8Vo(;Es%P-bU$E4)%rNnTL(>TyZv zp%b^_%k;X`GPPTWAc0Cos;N9hC!NjEieHOL%HsJi&|*~{+bKd<5q72awMu+!gpW98 z6W9YxoHlk0u>TV$`>3-*7Hy0E%GJBAMAkDok$uX-;Ta@Rg0e}spGD!PEu^SE@boq^ z9wE2GrGolTB%HA!>QT;5R2c2xm1aOVhTZ-hBiihNt;sX1x0NKH2OHBWX^NlNs4SA))sc^7I*=z}zPw=oq z_@uc0VJT z!$Z8~wg3NHc8){%zm}2AH0s;b;w}b3VnbekizC?h?`+*^_mxjjjgKE;vjyP@@v8o( zV~UiI{8F0bztQ6l(bC12mS`|h6WpWpma+nZ(74?5p$^wyAw z3US(kuS^9{&FX*NeFa(GAB)|)ipQ(VLMI_N2`aRP^WJC)b&nE$JvMc_Y{n~nZDWFV zV4J)Qbuuf3pW2fI6*bsXPnh za|W3}GbE(KypSppWCruu7=zRtnEYQg2Yda97vzdLDhUS8^V%eVpnhZpG8tB+V3K}W zNF@R+cXB0yA@E#I9hCo$U<(8-GP}rsd$a`g2mu8y!wD5Mv3p$tj>4$olFK>w>AcW~ zG$jiOig{mR-CxTQU?$1FU%0Xxs(LOyYb&-D39? zfStjV##Ah4TaZgrKK~+zE@WT(il!xLuvKAn#M74QvB*>UlwV9sEUk)5#>-S{5R4_Cp2S_G0+&?!(fTUWf4KHoGPxL3u_R_BTXrJtD`b&0McaboyWn#_Z1G2?2{FB~ zFf7Jz$m+oKjx~GyizO$KAf_@>l4rpLQtge>H=B*X%_DaWQ7;Ku^z#8iYxu;SWTX;7 zd`U>?0Scz-l+BuV;YQ3b5wH|QaAWzO-5n0gcGc(Ha{QFy0WyQX@e<_dB?ezdzmuPR zr@~2rS99*w)b_t49xP9MKeyjx7;0s<+_WrwH{EpZlb)MX-(T=s5@*}wZpCi824U%= ztu{5ZwhJycH!?U-L!s1J39_-`Js&JAC|Y4*pe+s`*$6QuTCtapGx(1K)v?{309_U%nHRkyg{2B+eC__E3QL%0-CpV~9b& zS^k}mDmQOSN9y$RZ05a06Pm*KujVL7KCE`=G2KZi5NgMJK8tLjScF!?o#T{n&HLY= zFZ*!#3ZiaLbGwP(OS)ClXdOT;kfsof%qgDnT zGnvuIg)h#=L3Br4Dy?P)@Xb>p z?`cBBkK3#x0en=?nOucxF-dQOwJL9B)o~jU z^plBP`|dNzGk2(nz&CNr=YM1Q94SHqhy2d*+!&^E6aYwFvW0y}aS{_4-3Do9bX5&jw-Ry^_PY;K9;;iDNH zD-8($ppo1i>od3s;o(;O=h0 z9fCV-lf3(Vzuo+59&Nt z2MrebwmWJI-B#srthTqkQyfzw9%rK1Q`g_6Xe*1eprG$L(=59(Bm)4^e3%Z%lHfsZ z+9seUzM`xRB0ZlX2$@p1A^C`aBwR|OOv$c*P2rQj#qY9Tf7kVTMAkt#R+JEZ8D7mh zf--svyJQ|{c?rE`$>L0tM{aU&>WTWOk92Or*synKQlDXmc^aBFEi9K+N=j~s(SqhB zDEOI^D|HylgEZq@$Ei8wd*Rb%+<6QO3G*X8Lbqk7zs7 zqpq^9*Hl_?mE__!UO#xBp3F)hi*1-S!>4v}mondFHz525H7PyMPbn?#po3w6mf*W- zvazZ-#=*cZ-tj_I6Q+$gxugQf3fCjKV^5Lh>bv^bc41fMrHjsU@fJGTA)6@IhlPX; zA{&9f#1+VLe(8oTJ#}n5OQjTy+_*w!#YZI5*{N~4KH_ZLaf0&_z2YxkxgeeF2w90Q zCD&pN3EgKdX3=$^?l+k;#YQegS!?G~atWC?_`5YPNu9`SvHTVx7_GIR`hvh$dqWsm^T%Rf;*E; zwzH>2lAiBKzp{VWrncCCV3n_Qyx5^Kf}4xmNp9CzAbi@Xvjyk$OS=hx$6pXK({;Lm zlSb?{yVF(ODtF3*rlhH1K60({+oSg9cvw`f#5nYb;*G@^EBgAm@T$`SJ{o=6(Jxp$ z&6ZSSRm)i!`Os(4tH?1)R7VZ}@y}Rd*2j+6BLoR1XYqh4t(JnggVU0?Mmj`9#9oP= z^t*0H+&>D{cVjbFU1z6^<|{Sm$2D@A1lCG4wHfXMGLF&85%AhT)+P^+s`i{8$%NE56)G}9j_}p8; zacFJ7+2*75& zxfyzfj$;Fx@#yD@1c54Gi|ol)*wEFxMIWGL2*xrRv#J}%mhJ2)OWru@OcWT?)#NxY zXAUVNu8(^~aVAnl6srJB>*vZJ=6A}zL~M53+pEB~5~>lAeay4~oAk|8MC>$fMcau6z=Iz2i8u&?gxfg($J<0aB#i4SJbEK)N$+cZ3Q=*1@x2N^x=iAp4 z!asaCTa;%MxetvUQrn~u#f%1%R&(vemJA4rprp(cThN=SDuPGkF6?}Xd%Ow%gK#8t zy@L50*U|1%2V<~TZuXVm=!59>uES*{rxQ4D`GmmRtzKogWnI1+6w2qz*kL}Icr;hhw!sNdI<1_~CSQv$H&BW5 zvrB^np*Xn(84%{uH;BdbS3lyo0k6RzFpJseC#S*7G*GuRRSnTG~DqZ%i z2^0Ftt`~~nRk>}l zMPDSmif~|Ytl{ui!*MDoKKRx|ZKGSZLxp<8JW8{ov%v6B!mjWxQSm+$mp4S$|T4gF};zNc=7{P&!J4kSk7sNT4uo78+9RDM`cFrC=%C?TBU=p0Rs!6o3qQA}jbG z1-jc(ibbp$q!=l(6_JuYxv=w+*Xo9&5{oxcy$Cj7)*Wycu$pIgmWfz(wpW1e zeuspo^2ybN!?EiW{UHtBs5|R-!N~B6Hm5Zi^u+pXvM3+zztUt_xm4Pij-_z?pr^nK zS=p%PpDU+1ZtA7EnaujuiRiD4`@#PnIMfFp=L34L*G*I(sLm|G28HV%S&Lz$%~r+D z9$7v<<@sxjPvJ07+D=iV`U6JG2t^DI3j3KnUi-$PI10^6kKczc@`sQzHEPP7EZxD8 zsr+N!pQHn;dL5+-=|BE1q!eVBWTC2-xQ|^R`_|~>X)(8Q+CNu3i}3@_3Mm3>P*k2_ zn$6A2+GAz$&*S31{G)+uTVOpnL-fnwh|x?Ju08B2Ql{Rq4+xNU=4{Tcs;BCAdJ;vS zIZifAKTRG<^7ZY=asNQRXliMabbrLtiBfppaHV(}xqMV9=Qg>&3;m=rSF-i6cE7`) zfe2N5UIKr_%e9jO0rw><6R%yN73dRRcCuu5gc#6yqrDLZdf&7iIsbE;a@rkgzsTe|s3d{J%2H-!lx75YmC`1aU`nqoV~{lidIFXw z=V^5Ew8z>n7sqU&ono`D%yg*hc6t?2>;O0hgq#y0z^Nr6Nf)`PseRv!qHb>w~G+T z{C_&U=Jz?+@`)Y!0V%;*TO*DvnZC>{%4;)M+M@{SmywbUtZMC>;x9L*>)0DV}aP_fCO zPQ=O-59=+-%X+Ki*_Fy=wUqyR+KzutNvgA;GK+pLRigd)Yjnq5^uj@?T3kYs&lhxI z*_$JQFebh7aT(qc)q(qT5xw#=+K)d~)I=tP>2VXpMxL)#v-%$%!k(n^8Rj@zdCzBY z=t+VyM~*eWZfEWALBbPELZTplFAxMVUtI|$)#faj%4IZ`Xu&2g{CFQA-&0_Wm({+J?csq2FIx}bRVs@FkUZR&5X$&qFOXZx|c zlv!E2TiRV0#)BZ#Vk~^Zq?M*fgeZSL^rQF8;ku9p1dITj}~4_iW&& zN?TehyedQ?2;c5Lk|;0?gxUhO+TymLll}HTY}LztQV=6gg%5Kx5_%5Y#f!1fb1E>< z808w+5?k4C;1Es}R2XGoM_Fha7LayZ+@L$X?35jx7dDgQoEMp()SvTm0iWILb^SkX zqZ#T(f)yOv28Vl4*wRujJ1ndNd54cxXzx=Yw}*q z%{`x@>el=Fw<=tx)iZA9or(V1i_&hM8{>O`;0w_#gIPQ2@b3zCv-W%#2!6%C#ykEW z#`6G-rvVtRZaw2>uj1W!75~5S>i%!zc}ygGZoeDvyly=>QGF*f>$}vD2dzg6-*KgW z#tmRVh540#uEzECt7N~%yZPn;^NoA_5A#*9D`LItFuXaBf!k`<&UtK;!%GFss?Ltn zxI{!CKvq-!CgVz$_PgWy2crEp&iye?TYr~v&U1JevS9H~+R)Z(8CQr;v?VK9T`-|;L80XrR)l=spq*lpvU{w8cY!%eKdxuEv8YWIJ;Fx>zr2gEaE@{>#iF) zfjefX#MtaQv(-Ks3HWzSt(-s8G^FsZ>d!=#u}>w>N>59j@t2v`B;>FU^5G6EG}kV1&;V0bzJp*FFKvR9w-* z)tdiI%2aSWn{V%{S@pw5M*UQmr8CJnu)8wDI^+shjp}0*@ySo8P(Z;%woX|-VFFoijEFP zl0$19q;6co<(l)$z>V0(@#8Bh?8I6NC%m4>K3GRq z-qwZ*k-<$~stqEl7pP&u4y|_jHp2ZA8uBI#FAR4jQs@F8o6#vD@CtMO-b&^j5}~eLJ0U`xn(h z=GhSrO*LVgXXl+yUY9ZnxE&nXslgtBa2~NWVu`H*aEs^YwOxbnoTVxZ54@hRxDbjG zB$gyV${#gz(fu4Ae)Z3#p zp)(H6GT&0LEV}Z3P8{d!CrRjYZ#6Q(Y%D6;)Gsi{InS+h0ts|nvDDu#chvc42zlTM zcvO*w_w$gvsREIL$UBOm7pzYn`NDqAsUn7twhQ5?f+7%bsJ^rU)uq8x7cv`jxebrP z4SgF!pTM2Jrr$)#Dx`;;|6o1%k@Q9LF-zsdnkS0K%4>qkWpnDLA?&lA(pdhV2i@~4 zvyF=9A$AykLqPIIoc>`A)3PL+y$a6!Ug#D4Y&gbC0On*NR{bYp$@aq^m#e+IJq-K| zinr&~SF*_RZ9Em%@=m4f)6f{5I&RHu{5@pJla>>bC*xS6ClSJ^3Sp+hSp>=YGo`e$=Q?EgHxFMFsWQP;Fvzo zP+Y0nzJxjEQT}N_#Oj@Ti1Kc$sV(v;b&bFF$S2Tl#C)6ntXoY#kc!XaCIYgRO7BjbGZ?9fF!#8 zA=6wA%U(Lm#P#K8+R;pj{|05?ET}6}Ndd_$Xek`ndnK%Lx8gj1%RHrJ@e$Y1M@#2D zcqo0~Z`gD^rp#&&-X7jDNLhl&95(~>Z*;zRujj{1$MN`WdZ*0MD}4oa;9-AeSX=@b z^faizPlcb`nxXcJ>7)YQIRqKV4J4+HFLX_$1knTAPXS`xt)mY!#lsMrBQKcFM$$bI zr+qAR78QiaK|mG|s9)XovA|L7B}+!O%Sk-eqg!X1%J$Pqrna+I(>hc{98)?JWb~%CrjFBH&XPGxyYM^2 z4Ro$wk^jY6II7)0XO}YxFp(g1bYxeCvqFl?3{t*`5TMwwnpbZ?*i{JemnXbw{z3al z{T^&JBmb_}hgcLKC8DqKANN=Gxc}0Ltxqn_q&@HncdN)e*ccy6-9>H37#xN_j<`#& z8~%a25DA0!E((m2)F1p`QckC_=TzpjUguo7x_Wu+cy*}Np%hF4dX~1bd0oY7HOljL z79}}9>k4%q#@%AOY${2#xvjaR$#I`?ShdgE+i)tO)gp0BX;%L5G->uhc|1g1jDTmvx02v0rIe1{!8oRA^*INbW*4yT}cXlxv zlg~Jq`s$qkDDRWGdQ`f)zWiZ-Lv0gyLT(djt?eAOzOSCh2z}uP4^+g^4Tfm)s^EoO z<3AKw?j$IXRrh^n!>H~P2dHr?#$_22C=pCZYa;=uzk%l@c-4TDT_m#tc0{PPt)4wuKc zE=%H7V9;+2Ge4_yS&y^{<-m6WN-FVxL2!~Jz^f^$A8U$PDYy6#=+`}=bB{Q3Iz=NI zY8KswB&p7Nv3Rn}r9*rei{OEwDG(RDvV&WaKF-7z2%#2U{VB8s<}M2(DW&O66<7b< zB_YKebFp}@Ca(Dl1(#UJYz#lnVS0K|Iip@0=NMW}^Is_=G~G66M*S!z5c2)vw6G`< z0MIy{LbLny4^ufC;wJ_B(bSP$MdB`0$BMM(dJe}_piomELnqw+*m^_ty0lfNwRqV#E8lVX`e z5vHFAV`!}`UIZ76!$h?*GN(oE zhA>jzxkVwQ-9eL}kFq9dz7f!)__8LV5m__{5RZu3Gy>3~?YL%4k@S73qXo5WSwm#D z2hW;s;4t9!^R-J|=zS?)5km}R*E3g%;p6DR!Fe~s_hoOg6rIQZsO>*QQh6nlXSV0& z$99xv53HL@=H_jouq3#7pYxW&cmnNd#USOIridpB1pT7TD8+08PC3I1hfNuAW!HRZ zyx8D-k7W|$LzEtx)@EEuTb%~u`D)z8o%RqYw>F~KHMdpc zYZwp~WkmNwhN*simByW-Iq9zl?Ykj%qHURiDzq8Inhq=FigvEGpGGra-yV_>LsfTu zCek?3pU#b6=Hm6Vbp6N7K3s*z;2zc0%fiN_b8=ucr}lJAPPhx~?NB^Aa1M>(wfJVO znzi~oRg3TQcMXcsys^m0${PpV?#MFl7W3*EE)?O2@6Ql?_t)`iDPAula6R3FaoNdi zl#>dG@CLY1>>YSpBEh3E+n7D9fbY{7EaElXa_6Hnu1C|xl5s{A3q-1;M3{5(lSF@} znF`iB^8|L>Z2B6vtENa0uwO*z1pzMC5R+5X7UAYet!~hkKK8fVG3$Vz|Kwj@6adh} zFK}twpTAtRLpch^X}y|vY^irZ3bkFUBWm2y1aZ`vwIlAva`WB|C6cv}3en9O6ut>I z?6E57ly%YIf9)1txx$!^GM`?OVXeeR34p|9nQCX2W|aFwKc_m%@}MUA%qo2~gguQn zWd1b+LkW_4{v!T0S10f9b@>99)jEQyKnwq^&w5;rK#Z4?Md;pl_>;MR`%z5-!a+v! z7&ehtZw}Kmz^aC)6!jVn9Z@Wgsw-~Q8bcmi8`2HAS(R+)G!E+7(@|fj$1Q+xL6KKJ zMg8{4n+{LO3DQHOaY~lq59eu}f|LJMT6>c&s53?pN%U5TdR3N9a*g&JCZF0`@#+Rm zMw8e6nQzJQ@oX|Rgxhn=Wk~Vp;`jcLuX!W^K5ymWsDkU66G_Xh{OTdLRx#ySmQelU z93O_dOngwoj1^vCv=|R`GRRw(qg^(ArncojE)`ST4Rf?1FpN#pqe$VMO})?n*wp^5 zx~`MbOa244eFOK0B{5y^B&hWeC3By}T}bnGZ|b{_40!nKzz4AUhh+v$0ab2>xmi>e zF&*rZg$NnHLj7>sal~GWDHZcF>-N{tVx_v!>zW6TI(&7TBHWR0?bs&>3e>GF>!bDU zy{vH=55vG@T-=nD)@Kb6e0=QVUnjU5M8gRVv~?GbQY*~tCBhj`Lw}{*r2sm$JG$j} zu)ntFK}qq2F!lZ~?-}|DOB@o8qcnpE#&YvqfjbbUegIAqviy4$zZz$=Yn^v-vFoPu zYAzYI07TG^K)`9NM#~L(&N2kN17M(k0+332VglQ4-sdV>V8_Tg7 zDd&ru38jgox8dpoCX->B$RK|+54NA!8jD^y448yxQ3M0vVn1pzLS>clSqQ3UKQ-1- z^0@YNId>&ZW$C%e6eZuDK_)4!DlHpu)MA{cQuXjI51V>>0?Z?j+4o3*bUFo1z0%-W z)ICq%X{+vQf?k%p_$~e_h3CehXdn9(vEXjKw*E=pL^w1223i(73THTl5S#eqZV_UA=($&zC%HrrywSbC zRQQ>)8?!z;LONxP7SA}Af8=dS$pUbAMArV;;%$Rhj)0CA>*%JDEF^+I0?2D7(M02r!+L|9mWSbg+A9g zzt{4tg-j_G`gYl5W%et-kSg5(ES9$6g6oD!MlXWNNEg4{@9hl)99bu2q$kBMue`Hj z4%`GhAxuLKnsNQF-<&HE@sJnTxp*#zq6#NsE#~=HHJL&r*AkPx?bHz^6LdkYNP(E@ z59utJqKJQ?^%c4jg%n{bU7;`gHeo~mIX`j;CnN3_rn{o9ur^=UJ~4m#JdIWBJVv7L>oho z$p>;%?2lrHiTBKOF@Gb0rZoFwn|J=~S$!-u>_%;L?`69RiXO$C?!vu@v_uF2MbVO~ zc0vJ@fI_KxnFuZ}leC;9V#Rh}{(_OlJ$)r}1S7r_Ds7#XkgGxZ!h>*o{R|{$FinPd*6|4mCC^aY4OvP1#g_UIKN%DJ91sk|Fd{I$)d}=W(O|Di z`Zn;z>`!!A*2eed>EcQ1&#$mmhF_X`VCecG!?^$c_5ma+n* zZvY&7X)4IOK1vl!V~MTrc08#LGlduXb#`X~Cgu<>vC}*h;BfQ$Vdlu)ry+!%U@aFA z!xRvT35huoT2Gu!%YmD@@p;KhIr=T{Y$Kh$_&*;GVMCNFRs7Iw5G)po_CRZ3>f>uj zdsJL1ZMaq*7Qm^_S8ouIR3aQTrc!WQ!uKK@_;bsUadFC3o z*F*|095&Aq4OaJ+Ut_+eQNUWvp|f_gHl`I>vo+f~da4OX&@Dnl#Yhl?fyDrn0&e6E zcNwdj?1Fvv;Qd)XbDG3)glWBIl^_Dti}>vyCs5-VyO%Vekvg5%6h24e5wWOH15WgK zBOqT~jJGq?{G5<+n z|9Zn^Bi{-3Lugb1(zG#FkiLK@f*;7BR2ViR)UPLgP)v|v6W82BsEp4!X*^R<(ZclV zqfQhn{nA=5YHNXck<>Fx>_^nMU!)^`{+^i*vOM}kKc=?#dO;E1#)3BXja8{vN-K(b zAUXMynzc8B5C|E1nL#PJB9G}Axt@7<{W)k{LB|C&nvXh8#Mv59nIkY7tIRCNF^z)> zNALE^mv*z-VXTtl9V_6Fj`t7B!ZnJ%P*)BYPw5;bsq!^-!nNRvMw}iB#eEm`{59!< zBkdG7pBkBIAXhma%~K|sAUC`>m8eTyY1Pk>F?JDYic+3DikdGfI*PzANX$=A&dyw! z<+R`wA3Q;RVk618VExDZ6GvJ!T>LhN#P=}jIJ_pdY}_V!B6!E`J*+<_JH4cL$Jms; zLhxoi0ND_O5dBw$zPd->kpcTQSo-IEV##}K9{esb$-N7gLyb4HnCEjYGjr`lg(p(xxB zC{lBPm10a8m`Z4rJ2;;=>n*QSeR_my;}Oo>krQx<4f@Z2Y}{Bq+v2y2S)$WwVotvP zFdsI!1Z}9DSKwBeZPdXREYrRgUp?0F2=<2Eg0``zr4!ItWwti0v&MQPta2K)0x~t`A&*H-l zoP8NJD@RON=t$?j4t=d7tGv;DX%@oAc?poTPqmFTG$)JHHl7f9^Wx$AS(bzwO2I$Q>It;} z2uVGaG2xgjp0iId7<_!$SC39vxSYyihZowz2FX8joP+P$++zkYZTBDnw`;zByo>n5 z=QSe~rOodFn(^^7_^FT~NW*vKDShhYbSdl=Yx(RE4KRQ}O(L?Wh&21)rnPbQ^?2mS zR^C@+(LdE*l^D>|haLwu-8|SNH49mKE|IvZ+i2-g8^yyPy{52#OpkCE0$MWdBeYf8 zW;flK+^Cn-7>@Rgc9h#8F(3EO{aSfUaV%hok93Th0}e;**Gw2U8d%er;sP9JhRvVG zj-8_79WKfBd9$D`8?Uy?=%$;(^VMw|uTo@=rw{+-Gl%V@G=^0R7n6P@WSSn=3%ue> z0>3xB@|e`*1>6sQp^L^Z%=}-o1z71Cgu@0#+XI?z0!1g_zOxeL$|FqrQRB9`Y3V_k z<61od)vSRa?iH^_z%a!Px(&m~2Hdp>ZI5Sa7_J?4C%+i?sIAVc4Xb;Hb1BLO;%bE{ zZN9Uy7~?CCz*nI9(E%fRMg`u&gF=gvVMzN53SBjJ>}u}5U%V|!+)85&6csv%zS2cw zN1%z_)x?-yx0`x{r z{_gB|pj!$npl9t@0?!unU)L$dI*v}>u0X;#1_#S6s;p`sgY#R33QbahyABY|-g{n$ z0SF_3Z_TmxzT6ol>A~bcHFn=`jccA{u%K2m5%JfI2%V|9)Kgy}V_|h$YKH=_;Uk7E zP&9iYW5{|s2^FToRLT9;le^$s{s=RF-;~H3J^ze(XC0_1B)D%KTo&F#sC;aA zmQ)ouF4^%MS+u;qKY*Y6b|^j(4TXAesoR`|7fHpH|52Lhr?AUz1DWSp7fRg+nf}Si z4o&VTrU>_qv#ZLAaU2ZA09%s=HW1ERC!?>=GUj>QbF($u26u+&seHa&n^JpoA989i!_Qgfv_DmnHFFlAF8|y?|*M4M>?=xWYRo2Zi`Af5nJh@i^WVE zH>h=nDefeX%*fqpw{bv5h|Pt_Gajn-~X)*?~M2)$hQxf$~=28vTI!8cmUOJ z%%}OV;?wY{Y;61#zdk4;;z9xHMW17_ z1IMi>OONc-?rBWRVMF@%)?K*l@s)e)QmGya(<2~^GLAv|Q<&>RrFD~xyU+a%ivNTO{1GFuyXK({!> zRPdS+6l*YKhb*Rw)xFZ%Dr_xs28GY&7S6yI7-%H_9oarDLbNXbcBf@Oi5 zaV%|%i#zW8DTP;s0A`KCXeVJ`OxC>!zzyijgj}8TZy;OzJB?Ak$2U^7Ds3b07(j0_ zBS2A&8G|{rdi)Ak;ZYX=yX%wJWu5sqxV**lj5BqX%Av+%ve5pEuF6n11o#f}4Tf`X zZY~bjqGLwos47c!o3n+5$27G?X2zv)F~UKG!(lrcE^?FydG5RuspD;%#`vwqSbOyQ znZ?9d=8q%^CwqLJep9vW^ zY_l14%KKcz1q9SNT>k~ssSyTMSFz2qIBul6_A6y02Ffj>+ee~YP$p1{g?^CM+YpJ* zw8tPITz=zHWiuVdu6P-y%+pd6y}~qe1k%DAxV+PCRnMD64WPK%8;x*F`h4TELq`5d zKLo5($2F~gKM9;ItVPerT`uZxd&fLEH`NkpoxTGO3J1Zx!-S_ zaYF}Wq4_N$3efcsEw|ThDEyCMLV;yzp zsJ!FgS*#T+OQ+hNkE*l>kVwV-kp&gsv+Bge= zu$YUk;I>B++XHbrd)#GT1ekdcKwTt{cLg<*6+F-EZ$cUfEZ1lXoR>E9L*S3(s?8_D zfr1uXu#<#&sla;OvaY(1Ij>FwSy+&u;%pF$kd-~Jpu`qU%#z-MiO#M%6Tp_xnw1Pm zU!Nc~+np7C&0+-G%Q`6jRdwp?M*y9K6g^6RPH(7GtO63+s{fAEz)1!hkqBxIV9>Iw z6=zW}K!L>=!|3PiB_ErYG-T^3+A0-{5vo?KLS%8JwS9cgU3~YYXItM9%EZcJQEfKt z-o!qPeoXy$sB8S7&Ba}lO17aQ4DyM(pyRH>zVJeju}r0`%gQL{F-m<~ayzi)5-E|S zb@xi}FYIb9I2T;I@6gWw$?F9^M07^>W~1(P{rC?ze3t*yC_&P2F4RDg$N#k6e@Ry$ z^&ScAZfM^>p&|8^Ujg;^mbx!T@)4#=T*@ldp>AG8gh$-EHSjM*&Lkb~Ku6J%tMQ`- zy%$Fg3bf=TW%C38m|YwQPJ!F!o;ge{_)de4{)jQR!O5}ZcU@mbTOvBB5{NsVGjonT zz+(ukrP)&E%Qx|HW_;Y^V@h3C+Q0Eg7jHI4Tk1bzG`4>yt8Gbk&C#fB8$uIY+d|bv z(g)cvn~1}Oa*_4j(Q5N#dY3KHYF*kw6T;YHZ7SORS^0B8fFsl*>EagUG6nTUGGr|z zp9Y7^AjP{MyCN_|N-_kG!C&4kw}AW}8`+{@ekd*ZgaGVNpI`C5MR0KWxzqtP+>5*@ zA6_2eaGpx_I@|H)d2IF^X6s*q8gp|8r+;t=vHuuL2)ijc))#tTe<0x!`Ua0TR2t0ww7T{sWq|N86*C2%) zgyEURvyNw`vGEDNq8S8rOXQ}{wZFHGb~g`>;N1p#kHaxhGE60pNa*fOB3#d2k-o~N zL&UtvyFWyK@_gHTc}R_2s1!A7baldhNZ~kjF)>0F2wxRw@X>GR{Jt#3SF!9a9@;Z` z@aO%jmTQT3>u#hP+}A8aUFt3lmD;Jx7S#45<(g!i#a&sJ@)%9{N?3l>gFRVFI^F}jipaZPqee7^{NsAQ#mcTv;3>$ssH+$F+^BZ!XbF|IS z$EZy1YuIy3i*Z|ob6su^C-c(hXtr#2 za1XJop`5HjseHIRbx?|r_+fnrj)ofgBGYQ(CJ^;H6~NQDFOZHrNms%5f6MIX^Gi-e z6gl~RP07EIyMil6ZX|%j#9F`$xgC@nl2vR{EMW)~l>)*x> zTw@%*@2&ra{-!>B%6jpJ*OA(|&pbHCrb7GI(6YSWOj4hTe^)+uT-o{UY=W!ZI1$fq#%qiDs0Hk11Xn;Nq}TB$(ojDVp`9nXEDd&6SExDTbt( z{)GuIgVGLCb;AG8XVs*c9RGgyl{m$C#|6vMCwZY^CEP=5Qf6*$qF7DsCj3DAVfSz> z(&KthRa5h|voMRtRxj-F{D#)6%0b0D%xHV$=}ffU>}J5mTv=NYlDJ7*hl z%_8{r+GTi?KJ21eFJNQ(w@4?}RuiB%_vZfJdUKn1z4;2DHy7gCXu%uk?*8J%`n8{4 zzC2~S-hHXL`R4%;cm7qMGZ-V%zNJz=jMcV#dKXFpO@eJCj$7}TCx9gEqTQc)Q^WV_RM`&&dO4F~lxA<60->vQ_0nIKPHUGMM^4C&!%pfW%qQ$|?3;_L2($ zqOtH)1KcZE27{nT4^Ui?%|(z>7&iVqaW)WKBCVD+7XBR;DIZIpzR(x?&r``+i^aSA zr9mMKZ=0-a_KSWJch-?(W>QVbs_koEwY?;Hw~Y;;%eXhK{SU$2sHL%_(Lz@9o@c!sxRYUTGu=c#G&}dN*K(~t zoXKaxaPui7W!+B1-6YSKvp)a8v}I}ak#7j>WolvPulCqD`tYOWVss)Vu$`2q@ZjjS z?c+61+(`WkkVqhF!Y)_czMg*!BtcV=zSL)@)jpZ}X<0w>Q~oD^&<|ig0V+SkPe7j} z=uh?k#w0z3>;B0xS1_tun+ibSj>HZjrtOf%zBQHF@-RBk5|C<30?;Ku6PYg}8*06L zNVJ7M5VNhJAR= z2wm`z6}vb}5QUDFZAT+!ylUD#C8W)ww{KR2MG)u8SJk`{E5X$C2ydT$Dg~ExL?Vm- z?1(I9{4ARj@8hj*nzeayA=?u1Tw87!e&*=PzY_LB85}jElpaB7t>FZ;&WYnNK=Qmc zdy}Oyn(EMUef;c&%%pA41FN=!)w6z({?qZ16kAa`%cdPal_ZpP`VGbh=D-Jvn7@7qHzzs@3k4|#B?TuYO&TPmntBBRd(Bv zS*uw^bY4R&XC>5ktCX%JL)<}QsDeT#0Es`xdrB!)X7!c;mqUp$TpJ^%LshV#S$#XZnqWXxRDCn$_sP(EU; z1D21Gjq5k%XJm1v_&UDcF^h5$@jdbnpRZ8CO_&)ZXwuvz@UHx?;_CQH(oZw=*vp-X z(0d7Yc(S=Wq_H%=ke zkw;N@v6&c;lJv2CLR57rfgZE#jMJ@9{a%~?Gx9iYDtrDT9lq|9?X*u|Wv1_tY^CC+7Q6yQpX96~$X$4&>f{Z8~Df>G|G6}j@$1V9G zR0Cgx)cgSFu-aL&XL^HI9ybwQ&(|b97nVOY1QH z`OxX`t=+z?g$Q;ncJy*EUthkg&>EU%9M<%rXW{+WL0U`C#iTS6*E*s6$pZsO*s8g{`lyU|w3bv8Earkc}y2(P!G z7pO!iAp6UnFgb0|2SY}bMcG89Dr8;5kG*(R0>Jj z5q(dLlzSYuEWPVto+o4Og(AOcM)KbmD#SXQ-1hz9PLogUD%^| zPZD`5#A(c-gt%QrGkIy?7X=3|iZWJj+xn{X-@8PkT%(xpJYwuf$@JGnQwZeU}R4Z?zYyrhHKbFy8}4s-Twz zN_U>7T;J~RWAbU`bD1= zd_5Y2>O&Vf`P1R&dMg-c`9cI~fCol&n4}y)pDV5JT6`9tPnXjfg6An-1k-t~#8Hk- zo~8G}u>~fWqI<9}?U>KX?!t8DnJ&9nGg81)|3~Q( z959R3oSPwtwst#@!=A1~xdx@x%?YKIq)a1_$8b#K7QF6sz#dEQWOgLFgzKlCjt)&Y%KX9kCe% z!cr>HpKn>J73F5Lnsroq?lDTIo;aXBbkx{7<`>=01Fx51U&0SqT`ADGe|lrBI`k(h~|L-*=b< z!Ue*d$ZJX?p2y0J@umGU+9*#S|57bMsvLuHQe4+_7ajS>!mtcobCn3FG%B(t_AZ>5 z_qO-o-ILe(8M-0p5dSd(asCb2x`PjJdypdunbXh?uYRcl@K@l>;FlqpdMsdn3oD|! ztVA(!)&#}h3?Cv_VSvRRRt1DpIu=4Kq86Rw@H4DYzai8zR{xJniQq{U1+$TezD4y> z_4geYjEJi_=-e!)*(h}W^3Idc2~dq*vZyMW*S$6E62vxd5j8apGfC?t17g#;?#;No znS`O-W-vlDeZNdpz!7}qViO?zd4w)5Z$W}yp?Ks-aWXmEdED~Bj~j7iXYj?a;Y zJsseJ`U62bTiacigcS-W95w%6xKJ}5?eK9iLtu0Q%)cWDmipIelOv}3#;0`W+;FZB z6u9#~sOmZA-AD()`*dvylOjS@Dd0t;s9X$t>u&|vQr$$|Wh;PLkdq@C( zANVff(fI%ivzVEy7-olNR9-D86Je7jE90<(n~Vq6pAbMT(fA`Zj_i6gfh_8wn|f%R zVQ-XI0SQ<{yUIDSG}k`KW19>Aw*(%OGmgm4>0|cLQD`lV8lrlbV!k^kovB&$EHHV$ zJ13P>fv7kU=J+g!IInWgD;!?=g`Y4v0|;+)fFMRiauFThYj`LuTB5ZHvx3AyYN#Y$ zkFW`QDC|EmB4|pDx z(7OYW#F73{j13gULfF%ztBu9=%@R}0g(dQ#PFN!9pvSSXcad!49x~9xnkypN<@_ie zV(<#MDD*4pzn%k6HXpJVg1K}}8Tyk9Z{vVO!&3M%=9AS65)pi_#(?Rz0=f{c@YVkz zM1!*ldf01L61zSrt)vP)MZ9U$6H)Bonkd*v6`C!&)=_mRYFaX%UBs2aAG6&F*`7=Y z{qn2Kl}MJH_~JRro5VwQqY(dB9GF5dnKgrI(6bF&0-fk`=!b2sarnl_)@@&1-~^Dm$xicsLKK%2w@z&+3Kf>y^$DUT@*s=)Ry$wR3WSLC0o>%1MnOr%B>V);5~;ewL0NbUz)U4P2Qq z_3Va!=aBnO?BIhr3+8kh!Kp=9GCR7LT+2Uh7kPNp=|==IltdZ!yEUoF3P>*15Wf@9 zNtkrC_Xu-}qv(_e&bfxJ%jj4g#FAScY=x{E=|{!lSLeg3#cOSqXn!ef)5s&;8^yVF ztqnXGt}Zcc#ROJ+CfR$f`#qbWG3*DF5EjvTHqjRN@M%2;pLC6eM~v*NA(*ofQi zi<9mk&r0#6h2kdKxD|T00jYScnaOygG37-+jXS#eXX`_@nX;yp$a1;Ta3M^?;crT` zI5#9V{*-FdEB$N~YG8l+?yiio|G6F(%hHtqfID?P-^nF}RJC3hy^H!MfJJ%~+=B?u zItY=gogJ5IAXlP$jU?W4q`R)?YmMV=`T@>N3xKM9RsHi2$)&kwjG0@s1@XAwrpC70 z=nId9W!9SQ9hU6X3{I`)?;@8|59Y*Ix;?wd2cRGoVh{)eA!UQh) zuH-2T{KU1=->>^O`m=rs{qX6+WqTpxFuWn>7I~a&)Q1#Y=W7xccrzp_`~v9QS$2MT zsfnHUnRF!tLFvRRc5D1pger~|+)(yeX72Wq(hI51@U90c+BYfa=NbQ(-z`-bhq_^N z^5FhIZPq1R{XoQj{x6!oF))&@X*=53+}O#++1R#i+qP}nwvCOov2ELS^3C4Q_x_k4 zbGo|E%sJiFSJhQWtg_JAa4R?zD^1#7PpsLTS03FpWzH0VvP^=Xs8tV?0T>GXyT!qW z-+Gn;^nhCX(pW#2LBhQX6s45iv${mh+^rP0(^Bbn($W9{PX1}bu(^~-V788<5RCV+ z6BF|Q*AvX-g#3Vi-DlpB#iU}m3O9Ss0cd@;8AN8usm8OI1>}0{dv5X-jrbh8v+X~8 zv~^UfiY#>3VH9{H>8t(uRyF${z9b&7|BB9hAwmlJA9A&9T0qWt{WRgJk5RNRCO*a3 zrt04wG!+-jW}$oBp5t-yyn@>ltEX*5?IiKg%%|Scfg+`%msuuy?)f!*ySzMOvT6p~ zWWa=Fd;;S|0jo_9EO3YlqYaO6ZvZgxXe)acXV{lU{t9B8r@GuXX<%5q5nAUEw$LxJ z<*E1D^BDqaF8Ps}yeNeexMhx)u;;yw080bt1Dji7S>_Y{a0(~r|3#xD*HSn!(cqF) zC8GW*_~j(YD^f(8Q;@PW3--?U`{IJ!`^!5I((S2`hg&zETtwG%_?5j14C)DQ37Dp* zdKJ)U6rHpIW`mIAISn??0Xo5Rp`ITW@S=R=`Hl+OO{rw7jirBiiJ>%v?twIdw*{z8 zc>Mng%y&(~xk~MgYDw*(>_or(KpDkP5hHTu$6*}(kW$F19Pc$8*IBZa8tf;q$+S$@ zGxZPR9IH4ww9fdGV$Pf>0(D2E3Ka-0#UsZ*6cCaSh3zl^SQaL8eZg97NL&Y8q&Ou0 zIEQ0$pr6AC@;^lp0BlMa9{PVKg3Y}fWDG8k!$lnU7I!T@c6tG#n7sq&zl>0C0%X1! zcZ!T(ZcaL5a+Aka7yLc~1TB(*1Lh(C|2rd>(lDt1qdGq*BG_CBY{VK$ zDX^Th3ZrhY^zG1s=eFh!owFO)G8f2_Y zy^>6vy=TPrzck&b$r~aa`^E}Y9A#=D^*kGM5bFOC8Ge`c^KS9_0!tkQk~peWh5(zS zXoc&4$KuQbQ*Q##P8TD5ZfXn;O=OyaVag!`{wsqv1F3*Xw+Gp~_*y^j?T&F&eTHUIwFIUGRJk%7vX~^| zk4parW93BasMMP%S=Q+DMJxH5r2AvN#w0NLcI$X`xTYWF2S2FoZ!?XiD%1Ds6sB^6 zCg+fZ{^OML(0npix%uk{pJ-O%%7m>jNBA~QfxMy$_$Tb^;oDK*3 zFCIT;xY%%`$0(X&ingy^I!?4KAO)w1XR8uxyvUU%1Gv$d1Y1U&mu0+^!yhHz9Scb{ za%*krEcU8sr)XtrkB;SUn9mU>Ead9D~3S4S|K&zU9&KXoC-i}VkqeSo7RFFbccP*9+K_8F!0kFC z$6M?y=Qjf&3m_-|k1SyNM;4gSkBy@ZY)dJd&rIcy}@UI>ac~+HjF{VvcpOipfK~Vx27LjVw*Gf z?xh=vMY%v;eHGe&z{PnknWw@LEE4);vM2m`IZbFj|1zlY{FbF`&AZZ9`C;ym>g-!@ zzv&C5T>A~^4`3W@U`aYkVl(S-#pMza^Puvdoo zOQm@L<~y0AhY_bmGrH>oLRCS?(MCUb?~F;%u5-5Gx_OWd#A z(0C<9WCP(l-ld8%Lx=^&wz1vd$J71JIcmbxFzh{4SY(!l>KnI!nyqChTVTFZ(TZVP zt3un;I6ht@ILMvOe+yyLQQ*X4`KF~qi5Zu{qQ9!~xS9XC()AqbU6SqH-=&l^AhJu> zqQ^kV!2E&|J2f`c=T0yhB6jD$UPBf{{2;g+=QA!qFHWdHpWl+7`Wbrw+Ny1T!V0Zw z9O4r*jt1Xl8!p0_RuymL3~5wO4Ir3V-JI7txjkJxJ?_h0U2eWUo5&A| z_i68yWU0$1tpoC3C5H`cOwD44E$;~7@x#83<7mUag}pPpK8g*8TGKHWTx*+|p1fgy zFbvOvvCehQ3FZ@O+rK03R?C|AyD&JMCCaYz`x;QQ*7o7z?69$|)god#*lZbKdZV*xUVG``??H+=YUTQB^}meny4ALxRmHRk z$3E?8TZ{k&EI?3N9%CzOm*#8SGX!2}qj-f>s?XjM75t}&`gdb12F^$clKSh+{hFtb z#~OFno1Le(vpB)U^3~#cE9-IV2K-lwXDu0)*CQ0xiLE*l6UP`F2(R4KOmm>dfuo1B zH;qAC=Nq#q-;U)~PeBli#hnq!0favfl4fL@&o>YW5)5>AFP9R^;;M)~75bu+6vJIl zoBzS7SzmBGuCywGhvB)4pMmb?0rRca{h!Q%kdoiR6-7FRv#YY+2W;aP^}RKA6Hrz z1Bs-<7$0`^y*>k-pdp(8q_a^0x}qqX;us=+-%XF*@L|5ST6%5V+cRILz*}XU{_jGjjY}E*d#k!#Zf>8c ziRN?7RlJU|ZMhK!Yiz{B0|nP9!3-7pz!_*^)B^v;Eg06S<`sSzD-BRGQ6Z{_AK}^a zq8T^YAJzCpS*S&r{2&^i{cqo+Sm13j;^d{zX{7xCcRr@>rhqDVXjszw@YxQy#J@5YNH$dNe`9hGm-&fjsGX+ zrSnfr7oo5JE!iEgY>CUee^&*yv)bBvEi`%+PDxy=NK&8>^3!zJL{mw%C^<#Q)7Q$ABHw2%G_&32pg>!6?l>b+xW;I!+ z>dEs!{8x%Gqwip4$QusBjzS6F_fWM8&RaBtE{tH$+Zztb`_yI3h1{6ozZ+5l#LRX{ zS{UD)4;5i#YPhKjp*6op&C0IR%=jDU+gl#jHj+q zy9J!gtZu#Zng-HP;n~MPq^?!BN7ptT(eU;gy-G=ixk_~a3Zw40!m~lbn8)FL@t{FH zxXP)$=!M|`t43dHSPMOOLe!?G0FuRGG##by4Cb=fkk(S-h`3c(8Z1+J&_V{RGS;@l zkXBOo-Fujxla;D%v$Jdu_X{TRn zV?SzLFTcN5RSZ23zV7f7Z`#J+s397ROe;5wA6cGnr|AGkUrFT|RW}OGUir7-eCm_- z;X`)^T{>?!>1ZC0&fYFQG#uBk*QQJ#PxmgKaHEyazvlz!s$gtoHEs8SqZ@B|5Rdhu z2yQLC=V6F4kqkmEP<*vhPM+))GI}gooroWKpX?&UOows_xg7<`Z^*JB6R192(JjON zyx7@$-oD-K;RB#u4Nn{n&Hdrw;;AlLS3K8PnW)Jg=|B(K^!PW<>!(dCHhlI@58Aip zt=EPOpjL*r`+Lh`L}*h}chO++11Tw0J{^U;z4z!>Tf$pH0#7mB5Co@TAcMg4Avki) zJP8Cs7>I+Z6vF{L*5T&nMqf7LkYxtC6}3$C%eKc=ovxdV5ydw3MnW?0fqKR>%(|`Y zJoUWA$i`$BYuJX*Ek!(Ojj_ayO`BBY48G7NLDW%%B=@F3W#9sQ#Y+~%9TV^cFvAbX z9Vxd+xZxjvb;$=#Z5UKg&VaooZ%#VbA?k78|;jhqGR>L6{0<_ z_C~SX!*~hr5}mel5xMo zfqgHiqas`NsyWslTLm*=S*pv{nKwfAg8p+J+3 zuRJdSZmk$3!#Wr?Y2KlqrUHhS;K0)%y?CK53+`lY1NY&mTe#9<^J>8bo^N7mNAb+j zA1KGOn16O-pv5|2MekviF3uX?=Oz_=*eh(Z3Ty9fsCy46{|PZx zHuDXV+6{f)=K@CRmfP^mR&SpK(rke1G*-HRqeuR8jt^uIlgN+5b7;q_ALfP4fOFMV z5KAFpz^NZQaV;i+^3;D#(N^5@aPNozqe1ADmqPb1VAD70hTI~vs{I11`h?TJgDqQ$ ztewLumB{+il>8D}%H;5zOB-+&vg6MOo{La97rJ1iRSI-_Dw5~I5^AYBQp7!!kj*h1 zOB-D_vXZMB$c%wPaX|GUka-qanCUlegDc`4CXM|$pFG49t8@+qHhE@@8i#XVaU8>=6RFi3T@|9t zP@ZH=4s*s4i=>Y%%(<4Wa#7J$8oe8SRXtkg3T^7`I1PW5y`!B|TMSXQ5gD69*NCbo zB+f!n(s4<~^;i ziI!p*4G`P0O9=WMPPC14Aew5a{Vi_-xjN?0!V;o>Sw(0-tTB?6BR93R5er`btRF2x7F-~dDrXfe!I3gg1zbR!@{BH^nd1o>5g$(l$WHPNcAvZoF;m(*b&T4UJ4;0_6e zH+rOIx-%plKDljpHJaljV&<4)C$fUM9B zfq(g0R6BeZRJ>1Qtvcor8j0{n16!Ma5{M!p$l!W|PTpBpycty}yv`Xxkv-C36Z^1U z@&-wXYc=mEw*UL^0~X z0sfx#6rakV!*!KXIAi~yWgT#3LNpS-PQW5uF{Fe{@(IBNqLW5v#Rx^-JhCi=r9#Iz zT$X(?r9TLAw(XbWyFIPglh*HEv}VrtK*te4cNrTJA&sdl*_4FV*Ie=A$b><`8`kX^ zKQ-X^Tu6~31ud$$%&RTf^!A9O`@lDn;QstfJbIJ?rFaE7(Fy-MNoy`=F2{LUDAU38 z6-RpMsoFdjnW1bW->BhxS75T(RW?*{EW2UfD!K`3-Lz-@Hr@xf%vC7)#G#;&POSSB2fX`#FM zFI*1pvh=b1hk)5gQ{nk)mHL~ZjW#ocC#H_5gP8Y(nYWJEW$g@E(t@*)0;nSm{0rEKjCapT?%Sl{j)*) z1~7^#V8{gBh`?Fc_z5_Q;c00T3g9qCLJRncs>6fVB`npa@s%h-o;5|4L!f0X)F`&E z!2=f;I_GllF1S2_VKZNAaKxE6(rCNQ)iFOdwMZg9`*y%G@Wg@-fZaL&W~0XE!+Pex zPL9HGn|-per+Ia9<{BD^B-|c}H>fKlesnwJsL_vP^cjLbf%xd8V7spi&mx~fhyebmszsP_xYH1Fpu85?N$ zh@-o|(WsENU{}Up%$Ih1@VhX}bVMj*Ods7TprEQaIzFIdaPWlG;B0?qJ~56iJ?u;IWL6U?tD+feM}SA81s<)I>-n9 zemx=fOyT~KkPGbz)I4&Q?iL^GRY>R`*iG^i!CWG6i1c_2W~2gEL5k$%5?Gkv!IZ;Y zImXG796=l`A=$)c6?hlKA=ed9DEYn-r;GdX=}g0$tEc3<)Aw`tK}*}a?c<%%)DivC zf+T?r=%+>=c(*=8FGm^BH!nBJ=RJSPRglze7(|P5KU`X&)rY@spZj45$xJSOHt8rgbpN@@ZM2;LssApws;mZFO(}wxQUlF057kjgeb{-FjAE z7p)6;D;^R8&eM1AO)q-Yr_8Aa{X1xBrvpJB|CH9sD6)DF_hteA$`bOk$b5XtA5@EQ znECkLeO_@Q@k0XQxBY=zxE_P90$vGd7w*tXa-W~hg05n``n{s3lQz>|UQq>RX8t>WkYFpAd-nOZk-s_p7 zrCS{6Iu;um6{LDnZ;8ZvX2p8tdK@!&X8)P&!7L{&C#l?tHAO&*T3e3HL8RX=p;MoxbhP=iX!IHx`N!)RU4c;e0%mm_wGDwT{h&b?!) zQ!_UdhuwI4xp^k2z_C8lcD5%ut|2$L9xl)lGB=*3Ic{71EYHkbe+eop2a$+gQ6Nr3 z$i4c#{@a!bS!@1TK4k2s(DMD6`z>bNFwz&XwdUu*qCz`kS1;jRW!{r&_T8>;Yg4zN zFJis&mb@oTn^(RkbcshSUyv~3#>O^5D*uGO zt2d2cf$nwlyv-P2#n0KnymxP&y&8U$f~#KIE-MFdU8V)OjElzP;y%vEu;xI}6&R&} zlgo2it*^~octff>*dNwBQ$*&)cfp)z< zr`PW6Hejs{ne6*+C@8w5(M^EUeO_OoJc+*|7LU07c}W$b=}geegYH` zHlaLUEEPQ*a5<+|0Ii2QxY9Ehl{Hh4dATx|PJsJf{Y48v=lgBqQlzqFvO*6Q@$L8R zOjet%l&H{1jsAx~rxMuk_1JC1zi!k<%xOimQmyi2zCCKTv_Iai00wL6i%982wk&eY zw9wrXi9&8)%O8<2^4rfaY!u*Y(x0wJ@1BZulE;BJ>skd7U!IQKtxa6Agh%@lm`SzAnR=Sn4;Escr& za@qcp6Y^w7x~I2LTrOT>|M+|o1QG%*Uq&GeM8iVTtb-{tbU%f0@s(ek0KE$sp0ZnG zRX$kt-GyN+G^cL?_2pPfCAqs|)@2xxNzju1<;>^YKGl)G-59zWefa~eeJUt;{h%;D zVel>C^X$#Fx!7_t=A!nDbpON}iV!APr6ktB!!q^&1kdKHHT9wUO_wgAj^Go-5wrHA zh{VJ6`Gc;;;X5tkT+2D>_~Y*J642um>jkkXupRfQw4D7nzBo3OQZNB7Q&bou4-K@L zMA>e@==hm&LCCHGcUJgFBbrx>#aN8+!)eMhr4XEH3qyl$kte2oog8fT*2K)1dDSue z+63hFCq-XO`(;$Rrrh|IDSc?x1JbELYi5c&z+pf=J(O-I7YonUn8qcAumCvi9rap^S zPHQGeyRz8SSEM*-WP&Y3VAQE0zZqoUO3!x~3}%eMsm->^5 z4=E{h-#8Po5ZdX{D!a+&SGvZX#!UGh#~XFpEb_?S(6Om4oxx{}8m5M%N<^@HN~?HB zI1AKT|AJ&FO&#J2Y4sI^g~%aiDP6I1)Bcex?6l2arHlK{;7f>Us}VJ}yjNu`5M{-* zJKgTV{xPq2dYtN>d$>*>GGORk61C6oIZBhPc5meBMuQBU@ySODDjB&!6^3!$^b;ao zKG^;3d&SZt8in)4eXT9Zb;MdczP;K^PAyk<3YnqQ>{;iagOct0r%588u@g7{ae=pi})H2e54$V3iaCqgX z!*STE1$=A;riQ{;=ni0)wT19xckd8upx7}|R8bssP?z2WrsS6?5X9j*iWk=dLJtsy zPoo`vVg}q3aG)V3WWx6?3!ILp{#4>hi_0V{yKslyB%(e1Lnd?eZ3@1g%v1I?nw z7vQAD9}EUo5d-ev(^@Tqq3$@h{MGUBp-)-09A39YLLOeVq&7G%|8D|O(3K^dsn=NfKxs0Ff7NTi+wJw)&kbCFr-t$4mdAwX>}68PqRP@Q@l@ z5d|eP(Z>>`<>XyfK%HgVQ9Qn7d?(()0b3VZyv;D;2&?Hu7?u@94e`h9u)8&w2839y z@X5vSEV~yCB6df*2DF`b^vBQx>!azVH*!|`zjRz9;9$+1aGQNjWtg((dv=ChGx##Z zt}kVK<3z@#g4dE^F?WAqA&A}taZ~Erb*HZ-*^)Z4y5eN56#8jVZY90SRQhpY1pEf7 z1lk`XDMCIb;<$gu*<+SXh;31Ki!#JxypH&>l40Y?;D)Bicm#_WNFW@3(849++9lV* zZU$Y{;-J7!cp5(QlirN+QI*`e*~bCJs=Xc9^=HKRhJNPt3p<{7@SwSXx@#`MWxaT{ z|B4mLTAn!*^WuK53hBdt<+kl+S(!iR90HMM#uCj|(oFf^g6!k`L?5{TI*wM&&T!&6tCK}?@dWn-)l1Wp~f zOfnybm|vS9m|YMchF^^&B=IjvCIP+Or5P3^5xZ=)<(DK?4l+?m{wmevg^Z_iTf@Hx2kUUPVi=j zw%a?C^MPZTr4W-x<^Yhm&K0bO5Kpf7Q-SC{nAkR~V3q5$eU)nxU}hMQ==I{duFJFD zwSna18TaB@mG?UX74w7r&kY<^HweeBya$CsD|e|0ujtSzJIu(StA4A>9A+qRo`!v* zsIQ7@`Jku*sg4o9(-nmONHG}&{W^mnrfkYoi|1c1k<3eNL#_`jeM|Fm# zhr(NpCtt4zQDa=8cY|#Z?E)m`8;zVelR+H$DU~77VJ*OL74+Js;(k#uA@TlIM#kES zgeNX5Idzj(I=|Af2pj#v?Ly>>_SA^@#3v=7P6B6V%$XaI@vG2kNaSlEBdl+{$;Y87#Z zKD3(E#?>>nWIqSjV^`KAknc&s$%NN-BJTMpn9}KL^ULYv$+(dyj?vAYUW%2U>%1W+ z;i0+}At8I6i7@FINlU@-m9+Exy2ScEHqS*|L|3bZF2j8ASZ5MwEYLH1ji-*g#)yh{ zV&oTIPFwTO3`IwgHx39NBk0;9=ASX}WM6pnOJ+dM5ZoUrem5+OgQ&vjin61d9a`jqehOPoJ>vi5+{Z6otn%`eUe?o z$u6YF<`=s&zHx;@9${A8^xdeCnK4~rYH7IVu3NaVy6FTt(txxZt-(1+(A9`Aq%zfa?}c2E!z`_w&!k%K&?QFcqnyY-hgO;;y{oI zY7l{$>}%B}s82l;s`nbvjkFHbXk_(2YbYEV;>@b=kRe!pUp zdHgBlQuG^PlJ>owDj(3G#Ho|`2!%4;HXn5|H{tmjo~Rsjl#bvdYiXj)a?%sRhFap_ zPY56ZcrAk=^Jpi8|87r1W))-5ewl*F;{y6#D_+y9# z`-4wxo9846Uf;3V7~@ZJ9PB@Y!Ov`7Ounb+f9qh2drK(U$U2>g-qd{?wD&`|R%4?e zBo%z54)%3L_-1-v=3JNaYy!V0Y=NSg0O9F@f99as-#wZqTmJbid$F7^#vBL~B6H{5 zP+x>N;rPx{n-G(PZ-Nk{47@a|s|Y?%G_qw_Q#d&w^q%asIzYV!5Z58?^%MVytz z>4QJN>PL>;YQSx<4n~h*?N9}43Fo9*qcpW?AAR(%a`&1=So&K!FOvY(38NeJJfieW z8%0R8{v4V^tB6N0C$x$OmI9M+&Agvt3Avenw9zAu(&7=*`^(0h-wLbuFGk{Adi2$v z`p(=(;T%wMa-BNmBI`*`0H$Hjc2Tv znSn8Jn#OQkLKB=~XPcFqiKz~@>X}bxY+~k{{T?!~93piQAN!EzHh^}saB7d9li|cS zrinJ3NKsK|5c5kD1e4P+7;nq*3mtO7jg*dpu2l(doNf=ox+z;)UanQkVko1QWdQlB zBJutJ&Z$N=&vq}J6)eh=J{j(fTltf9s8a?Hgyy8vF+oyZaY?z5Dy4=V+NXzR=~DtvpSbp z!#~8G)Q=hd{sy;j9=mn)<%=6uDxC|(8yrZN3MKsAA9wP*U4)=qsplzRKIr>T_k3*u zrb?yP&zl!bSWq8>X!>EzJ5*x4WqVztdjoZSm0ut0Zp&sDnU3NL z6&qF|(R7}g@vh*Y#qdyI%w@%t@KCxOIw{~?u`fjBgqn>T z`0a6NN}a-~_OcG5-xS9OA6*+~I!lbdjiNOHPJ6?R1fi>TSpGGmxBfB75v)C79C;?5 z(dlT}1b`EwN{laN40oXtI zaM7<>847sN*|dGO(HKWy(*HsoY1i!m=uakTZc^9Wduwjiz9|4 z!OW}t%8@g(Pv|;$EJq5&7ujxX>ZblzOA|7S#SCO?r$iN+dP)q7${(iYAf1`Fgb`xY zF33e*UFVo@(p$47czB&@%TS{>@&1@TP+4;cr)lO(Cn96C;?Xwx>G=$It5kJ8lo1$m zBCAu)kWPr|fD~gNGc{Hcsz=N;Rg27Qr@${kIrIk;G3*6Rz?#clM_o9k2Rw|Dgp{DK z9)UlhqpN{>VgxtytW?5?sHEe(52ci27Ad9xO>qtaxJ$*pqN?);cke(I04q19JXYi3 zr8L_Mk%&Zz`F&cgVM}}LFl1UMEwyTKJB#D(8qr-G>3W2K%01=oQ*dHG<#;Y;oqpyF z=onW(YMY9p#Qx}}*@Xu`IXg~QWyyi!*Ju$)H(gDiSjm%Bzw71Fq5DefLH|^TX4wO3 z9w%~vqCzWah?^{n$#zy~Q%7lhM}FksX+=SU{uX#bh%Tn^gL&#|r=#<*2sB69K?{0MKxf~a7 z()nqnxz2lCKRLyK)%fY)Nh1M(F?w~WfC+TeSdT#H-ZlglD>XRj$WQ zaMge#w_Rk_0Ea^?wMP03g2t7&)@NtWL8MQekMo5bqN4!{8X z3o#w>Ki}-$oJ*s9AIx~Aec!*E0wc>Va^EHN3)Edv$F(N3bbU3d!PLR(j-_sxP*{xUJmEE1vE@#vke%ROsFzl{c>bKCm>7n-7} z_lH~940c-o-l+6S?YB#Oiy{2nuqPI?Sgs`6^Ec4Ik5SgbevK&9>4XXwSkm_^+IIW{ z>YHHU#{QUb#cT&IVHlP9)d9H;;6myk0d`~tL7d#3OXpDu}^{k2&%iGuj*yiOKEl3_VK&e_BLrwLzL@;*K|;JZ2QrKp9?~q0N4Nq$qQR> z>$|WR!8`@ercyh9Y@Stpue=2~*L9NdN*=4(Pa;yI0=4-k8@(siY~C}HZdm!@Yy_jD zWnbrT+BG?i5Jj7pn5&WOAFY7~t2~2{ws2)s;mfpM2Irz5^C;jKFdYtEC*nWuEzX3ijueSJ%9S%AIT4hqq@C4T0=G!6{hqq{p z%X<2*?mtJ84xAOF#zpW?3qLRd4hnp2FXD3W&x%B~owC-)n)<#dRB=)~>DYDkYfx^v zO|SclY#-6HIMrx^-Ua_klkUo9lK zFhoF+=h_CK7PV3Wbj%jZWn*|Rp7hW(7ADqg;6uT}7=?fqPcM@K^A%$v<~$oPrc;0O z=x3X)loZ}xxEi@_tq$~AU~%RstIdThUEOBoR3wsGaM+&Raj3^r4%nM-dS0wF%K_Oa(>A{_ObV@jLQxw$HvdC#44=^{%IARS3=+IkKNg!I%kn6_8 z&Qc=mt1W*GjL!@EAH{g>x}lqk9onJKvdmTim<)_b{Y9D!9&J@rx32ikr|7 z&s%bgmf?Z?AcJT`W!n4jDy84I=J4IRiUGRAEi}EQ99bg-J8o2`??~xO?BaJw0polbfp{W z27fWxnS?HC(MVKq+mlK%wGMYh*0b-iI0{;BFJc@$B%X4wduOzc8B8%4dWicXM7BP; z!>B?mOvGZPcp0=*TkL5p<*ac`x^Edw{x+p-f4nqC@zVFvoP3~V?^-mOuuU5e&oIAs zT{9!!i6Xc~aLgu&9~9YT{2_5=b?!;(zC?1HYTcN|Xx}ubY7lxV$+G znRyIq^fb4_NCZ&M8+SfutAY4s}LenZwKe!bL%t$ve@njZca-L zHv_9S%DZkv!`G+!6LQMdXv(=hLwn+nb4e3KQ;HXS5olZ`@xqWrGugM2bc{U20CB1!A|h6yTt&rGPb>JM8QOV4>{1akR2 zm!%YUdEsX{a^)n1)0{!8`zCnnw5H`w?>{5gQa6Pz$&}fE4$VbCD=-Gp&d`qy8pUgL zSBFlP8pI{yrcN zal9m=o!bRR1Q%{CSYthgcm%9@h%9vcgV^;fKXGn({b2ugHd~wuq~8OvtAfk^=&7Bu z>EM60w1rbgxuXT(Y{KjRj}DPXpBL8I%7(nIA$9iT z(0j&vBfg8zi^mP$NSVAYeVu=Lsc(#_!Fh+yV10|6{jRCD0hd&rml>{LY4(AvD0|e0 z5TT7r+2g1VD{v~pcm#TUGxzqX&zmW-4i}ItzZWTlF>j)P(e04XM5B2We}%qI38bbV z;|B|)Nkarn*1$er6KT!ptE;*js-ar=L(AQ1y)vvZ%u2g8bzeGnbEUdszA{|*f1yMJ zR6uc)VB3F>8z@i>DOFv`_6M4WUJIH=nG764?#RyDAHV^!k=(;;f1-74JBBy+ zGMi-g9OK{X@%{~A?P~D0<#hDT6|$WBC51Km8{-`+ilIk2H1NSY$c5zkX;V%Ix{yyd zlv2}WVwI`sI>$3zE9dS`8zDLQxh~LfNen3)dJN__%$}7vdF7HW9O=PR2q9f+`j4bw zS3vACoWlK^V7F{}#YPO(g>d~WzhOi;BCvtAI$dRo7UuYXt}*qb&Q#KL?)lMPVEU*` ztYGHP>=y*1+#n3}lZZzW^|y62f8~zFdPIg$?c0b9o zxJO~IOiM-aY_bNrpfM{NZ%5glYY+cj?VbCj?O5KEn1^xo0|N7@+UV$Pi=d*p4U3i?uKshx z^yP9b@Nb{;v~ex?uU~cuz9Zd0X===?|5$<8I|q9L4*f{k$K;RVbrRaA8&hz_(cC2% zcH=mkW&Pq~7tFnAyFY=|hEEqkz+pc0O9SiwO9n)Vp_{vwXol5xb~&_86<&SAimZK0 zZbM)n|AN@H#TBWzjVzP!!H#PozTezrHC}_qyyi-N)rMbjD%4LM&#go>^)l%8A|@R@ zS7tHSx;lCP7eJM{F6zCst$Qvs?ZR(2T-e#A@LbNseoYYcVf)$#inYflZq-m{jA2mS z7q8bl%nn@jzMnmbxBJvv%x(Fz5*)%6z7$9kIIW7zx>q?o$AMT@=%|*l+*MVSFNu`Es$5RnnVxayMia)3YN;OJ=f&;ba z<0?a5Ye?!5k_mvtHIsI65zfSb*oi93gaiMhuS&Y#KUAVD!6d+EE{IsCO-d` z?Wg!&Q=GGxbd>^`T@z5aj#yY6iN5m2Jy;B(9go&mn#iabBor~&OPmZtK~byzN3_yz znUgc_N1w)~He~k7lKEfXn54EIUzx)t*-88EAaVWl!F1WY9e>L&p@W=74<&$D4n^Vg$NCLpZn1z7QUYt(W`XsGI+)j}qh0fAh zRYV@e&j0dI&>>ybU5)E9W*pc%NW8GQT!H#t$ci`O4?m4KDv2dDy7$bnWVlRw!kNSu zo%TZMSEh2RYrfW^{1E)&cB~nmhf^md1QglOkD5O*Onbp69^(b;Ztj zC;lwhzgxW;e?SvYOOCohj#!HM^P9zzML~fzl0#%0kD9O&*oj`TMW`O>vU^`IQBNC% zH2>=S^@Qgm-aA;(H0W+HO=iaq5&VI2CdW9jImN-Aqt*VjW?ypPz;!3;Q27!GLH9@X zd27@A!_rmBc1)ZYZ&}E&xal*+{A+YlXGjF%at_AOwHW*`Yf5wt|xM>;!vu zOg6#8!Ca_YiRO6d@srBfg-#s3VgtyhVLycUu56Z)(mZm5fE~7rlHZ7-gab-26E9#{bj<_M+vJwQl`lm&EEymEB51%+^N`NX;Q~? zmZFV)DryRo;Ohl-OAUP`11txYqZ>P6sQN)ys+GaJoEBGYD|^g=HPAGg>JfLhynxuH z;HkgiuD&w!Mdxb}TVER1JJkcwocw4l0W)$2fA#RU|DJg2Qv&z?vNHB2v=#GH1JDyQ z$Io;L{Ne%Iqw@6=gkZq;F|xgrN?j>}@OLU}eo$~Sg1B`jTgD+-MO^73w>s$GlYHCl z$8#9{q2iTzu=x8UY#0eKm~sKn&ZXv=D6BVLJO!*cQ`Y4vi|OeL^*_0bPVi*d7evsU zY^#aWr!4Z*;pDj?@{PEf)>AoWB;`2C$;VnmpSSRzB>A4z`@wtui<9D^d(}!IaAvTS zMIvqJh6|&kt^psU0~k{TI=L!kDUwYwB<*()jX(hK(Bu2^dGt{glD}ArS^;+%Vl?!7 ziE&jdXtI$4p3|c=-u|ayXWJY<^8J0{2c=BccRxz#JdwcmF7yv?QY7tF4i*y6I|C`B zI^&%ftE(0K(0J~p%(W=EP5Xl%4a*ZFiCFCKmm%^+S>uUwknUy7SzDX!gwM1eC*I86 zRYAXawJWrpe-TRDt64C#JiTCl>Ew2kYz@QjDi9imIA4Z5)kHz_FKh3L9|xQ!dS7-8 zysY;T+&6#q<*>uCrNcsXjp@|b)=-uYy#78a7&G`&G9f7D_aXo$SFUP*L*{B1-B-rc zc1{Tf>v)Z58rp`!)?dm26Ty@|Ebx#;o@{M0YtFUb?E0Mi!I}QPW?qD8|H!}9+EgvR zMXal=%Eq+ailS+hKs?#5cB(Ejvqs#a>1|7I2f8)AN0n;Uop5?`!r@_C!vFKuXT^Wb z`g($!Q@+DdrL!u-D7#esSEff2VrD@|gyWa3KJ1jXy`r^zv2Y~zcSX}0UQ?-EwShFrz zrT)+i{3?mmkDIRqu!B$-plCl5)cS{pNk%ptrLiihWpX#gQGK7lvzW1eJh3(5ri6l{ zJz=b4Lx-8V?FlQ0x$7Yeq?<%5?#n_hoHX#sdywv~I6rcSY#qZ!RpmEr@S9Z0dh>w7dfN2o#uYKor;xc_9K)P7EoViUdiwjvn=Vy@f%p%E zLEO%hW_0EVT+|asmkgV$&Mko-h)2&Fm76I zXwn|oDv}s5)IZlWWxShUP^HUAHlQsx28c0521rExCBxz{$sB`c?J2;D`#x)HNC-N` zt?D$C%F5Y-22`2-tYH=vp92Rx~pqydb+Fjt_s1!TPz&IM5AQoR0qR&8;g~N zrM@j-|G3cb@nyM#-T*DVuf)w=$u=nu*C1u!rO~}1;8Sum_Bx%ygV>2+^r((~o>{*~ zLc~&${HX9|meM^&P6Y7r7$p83$b?stV3d6JQ<$PIyL0a(ApQ|iiHb^TVG(lHZ?C2#kBW$Pys_Kd@)w9p1iugjG+0r1rj z>3mSp;PEf?-Qb(S((p1Buqh0{jF`W`(~G~CdcmjhgLrbcKS6XFxy!$^UUH{8APNoh zAN>Fe@Cl2=x!Lc;=a+{XF7R@~bMiO|n5N{U9^LX zX<#g2I`U4odVFx^9F1o%1-n@ZlBYFlt>Vc4XaEQN>K1QzOn>qA>ed(Xt!r!h2=M*{ z=PF5mA(J(;JUMm?$^|snKN~fmP3XHUMnWJ>yQMvoNst^$9}hMIDSvq|p!0iZi!bSc zb}aBVj>mDqQFlq0q^UEZw-U&!9Q9ESb*@Uk`i!Xjj=#7twiYn5TH-m+R-v zq+(8zyqv2T^31Odl@)j~k*>PJmKw$-eF*OZjio|HB%S8J+R_P~dEPPY-|&}0B4N0A z`gjUtQZ$lP&&~=6tPfJG(jqQymLV!@YCh|Qr&FL^PiT-liZpf;FMNe00(^GNfunHZqxXSyc}gaO~L;5n8(P z5fL3U^>c#E5h7mZk|f`iz1{v_W3AuuU>*Wi1JN9;hQ1QRtDYmLX~fEOQLdnvEHmWL zj*=WUuya4lUl+&NVT}(rc%utuGwl1i=2&KDOE`!feKBSEmLBvm_h&Pyt?4f}R+SA6 zskrV+tH8I6F7OkJzq~AA&OVnW4CrZW!a5ajK8j4hTn7dv$?>j;ow_K!jm@$6t#uoatxb zXmMKE$PN{7pLR5X`-C{Ed#7S1Ssci7R%RMJp!tt~M>%98${Q2RN|4oUAZe5poWL^g zQ1if#iib%xl>Ea{Wkuz;RGx94>iGxk3JbB}zz4NMIB+%4EZxgsei{rA{ zxfxxBn7wt%0<27(qTgPJ;&qi1y*3U{4wsdY;i&QUE3lL+iVB`_*#lSilyV3cJqG97 za(6?9po`@8m-BReWC<@D~kn2AhR z*D@pd)aEpPjl!X`TQB}BZR9o@82CGDBbOnbt87^|k6Y0J0m2`KenG6Oab2}gpGCR> z`wJ)&Ep9~cqq=toTx;b}aG9%mU3V|`Ztt%4&BS6p+T`{hAsffT%lN-6zXVsDvTTtpU z$~T!J$N`C&()~+;U0!GxM<;TrA0MU#X|0T+tGGm)$0(_eGyi?9UGw?lNaLg!p1&T0 z3Cij7baMimpJa&7N7@^BL`X;uW+AVvQ8MR8z*-qfp{|PAQ2%^_DNtCJOc8siz7v>z ze9_1mjXYI}jXZye(nTTLDi1Z>8Kq5WwpIF1nW5Ix(UnsewF9&-F*@u(*_Uu?$=+B& z@@!$CNGixtKN!Oj!H`5d`O}mi*2;c?H}9mo62ui5RTIOO%L3zhd=>fMup#L7Kq7#v z9-|VU;^E4%zo+HMA-eg#sG6s5I8jTTt}X|oH z=N8Dhm(=KA(snnUtozl^RmMSm1noHOlP$zy;O3>SoZl;d?%1ps#~`?#?Q8HYE*D;D~4jFQh@0l~bCGO%jDDBxeF3Sn#~z3-*= z8)oFB^Y-HYdHw7*%l*%K)Z@`gHB0lSb6HlIII!&tx7v>sNMl?T<;~E?%uHuB!;r(0 zoFC%wwcEu7oI|p)Z7i&e)k2jr@U~xFdzrlc)M~mbS*!OKTSHx->9m=l5g`AE)`NA; zKT*Bk$ZFPh82FJYzj!gGKH-Api8@1e1+7c07cbpb+Oq$*zT7jjs|}Z_doK=p^N%WJ zWZ1gb>G@Lgi-)h=r|0L(;7NPOi^KDy`2aGN-dX#C?WM-G-TsE77R|9B>E_cMa~?JA zzPc1Pe>w6u7*8le`Wk!Kmmzozt7?`PI<}}>aDk}Er-=G-{3pt~Bil#9-V}&z*@e6* z;7uIJ(mdsy5#TZ|OOMYv0tKK4=5CIlv=5P2SV$AMvA1Z69s!yPQXiI$F)Kq>gKxy% zdWLhO`-P^}>~Ybe-<#Wyq|{ojl-;7wk3!lbxK02rC3-zf@02=^n`F4+4mPCq{`q8k zh*n@3wJmXmDfO3dGKHu_!@XpXiC#S;!bACS!STn2dh8m-y~-P%xY6By49r{faZ;!_ zO}6|KKMCylHDsryXBy|;eFhbk{`!m1i9wm#$4L3Y2JJg$;tr^=(-qk>jW?4I{{?m9)b4fBYh$$-Ecw^IpM!MZKam zq_wRK^ea14PARS+VlT&!D$Coy6YuwCt_WH1IgzukkA^xOTpGQrYvbx4HhWaIo&Ie_ zaCI(9KGZRx_ub^rGoGLmyRN-Mded}AQLU{n!Oe=IAk>vzK5_}PlKUz3nB}sg> z5V#!%n;?|WG!4@wW#eNa6k;AvU}hNsXPJPDU|aDLw zGkc5}6*oBl3`M3dow@akwVRy}>1AQw5_zMKGxSiAzRWtdj$%dVyFdT7ja_dNMblt( zSrck-8kE3ar&90)YGjjK#D1qggE^f5OC*0j0bh8TW0CMKc*1k>!#QRGFPAQ(ots{2 z$V|xok+Wr!ZLVOO=n<_)`0fE!cUgVqZ982By?TxoXinub=35 zQe=na5p>jjkyzB>28L4vPo8<_EAj$ffpsz!Cs0#`4$mQ-y8RGg#OHGcGB{NXB z_Yq;K!wn)or+SMRqqb#8+UOYciAadofAM8x6;|OoBCwkYS4nAWgxkk%Yar@WQ?JCE z%F>bl=yEKXunvrNUOMyaNEY*QrnQd@-cgR!t_TdKuObMC=#E>ZDU;ViVTOzlT}oXp zc=Kr{mrO@5I!^}a%gpQV{-=h=5tLa|NabPYJGuPl)MA@$J45Dg4(>{t_k(}-rQ1)* z-{2WU8i|VMSXAR797CnHqtiQI7#VhJ4JS8-Ef0Ad9M`;?HK4|vj)Fy$$^Mhyb?J>KZ&WClK7T_61KB?2YUCu*5FHN4g zHm6?1`YP^Is+t0nXe$#1YLj1PdMBjYM@UgLCyCr;cmg}Pyc)OG)D|}e(kn_fByWn$ ztXMQO=zscnNF0Cs=H~HJ+RiO*d|SlQ6D{XT(V_KEHWWDzLR5Dz3Zf`2q5D4^U}LUk zJYy9mSq%Y4tTTpitD(Q0tl*%hz_eV|y(ZMdeHjHzJX zFnISUS+d$ure7L-3>iBODnG0y+80*%GGX1lf5Yu)_>@Mdlf9h&tdC$|mtmX-56dtd zRcS*xAPf6N*tx;xJQ!zlUvMwH;#zF45_+V-d9U|V*eqT4@S=iMSjALs+UA=n-`}R4 zW;n?+7ce4aa!DXa?F_gPtUI_m*#@iXVSE(85VoPo z?3Hbtx8g*N#!?Rsdpcu7_c=rmJ$i&T=0?6gYHrVHbf%UR9^~8lDN*JaREG!!*)rk@ zHX05i6+O#i1S;6D5cqv_mPH7jh4=Mb95+O?jF-HTMdABvihk$Yhl#y}+lr4%r_n&_w|o z-TC%QaQN$!c7qU|xupOTmM?D9u!nj3;JYeXmp(h(rhUObgbfAU_ZKov7CD*DQaQA) zy7Ww{r-C}GxIjw5LVQ7&>XOogpBY-**Dt<@d3CFkomKmB&S;OC%6z=1GCN{ga=hv#qOITyK=aF~~z2H3I z+;8CY+tX%g=_I4!^;2g0#?nbFM|M}#xIgXXa5w+aKBDX5`t{F~Dl09NUn+NUwymKP z&Bp%R8$sa$QX)5svszH11H&tsLudDBL<}*Q)rghrww|rx4YXqXKfln(S5Q@SH1jDm z=sf!zFaGnYJA?BR#kA(6WXR>&aYiQhoGXN5(ZlBeOsTU>{$ynt^CNrTPuC@}R5lkW zJ*aRoMQ}CU&^@D;7p_g={_$M$gsy8K0acF7*7PVNEA^hYM$U$q%7C0?1dc{N;OJb=F2SPF?^o5#OxU{JS!DQ1|I$#7m0(y#bu$=JMq)&KKg3GV;3Bgzc8+# z_l69Z!zO_ODN%{h1q6e>91fr1jZ#LV6xU4Fn0b0HkpT}vqcrqF)=b-axeX=v!g(OD+7Xj&RP$LI-b zr!Zx?1o+N>e)nku06~Ah=YFnr|9E{kd}|5r^vAW_2m_W=+x&Ekfw~U{GS^f5Ap`;q zsWCiCnl3Rs^;A`Be_*BZPe1tG-iRFV+YL)6nbauci<`QpIfEytrSVdm646*@G?GM3 zr36sxn5Pl5a9-R={Cm18ZZ{6M=Eogl1x%4lQohMH;VEcP47;Lr>;~fd0gP?An@-%*&Tg^5>TN8B69eYZJ_)$acrD( zIx31|D~7;c5Hhj`=k;O{0vOk4)5q{Uo82-Ik{HJM?%~6mwrz9Ih0b%zSDNyWP>z+A zqtezR^FJJzt$&bud!dctaJd-bWDS*IBm>A0+5vC;H`$LU#(G((j4zyWF09^okKle} z?F!mroLj_qZQ8pGy`|`axtZAEN~EBKlN!IOZLBv?J;>>K>~2-4MW=bNGf)MxZO)&( zX-_e^3~#r^9t)suK7ylbOeV>i35}gJ7MZI`%r3eZb-_)mg!$=D;+A$c118#tf9Iyy zEPi>1=3wg;MmVp>dx6zWY8u9+T2R`SzKA7z)p_lNWhnjbbMX@?FgC>0()i3I%~RD+ zDXjC3iT}4}9<;v>PA9|X_ku-%oRX2T4=Z1RxH))hzqqKUw_8n$;i-AzL#3KOL^n?s zNpCohmFJ=rk7K2T;YdksMp?P;_6igioEtkhX{=@mF1xwaekVdwFL|)7j4B^uwatUo zXL6M`D%vz@Z&5l<@cwx76V}?T#(aO|v(~j9CX;mOS*VOc7DjkgB+R94p*9fVImQs7 z9ZP3zhkGUcGQAYC=^1^$nQ8ki*qUc{-Cwd17BqSG=I9uorQSLhop_d?q&ng8`D{t& zR+7d(f$gDtd4ouo0Nk|DvLzY@{r7d4@M04FTnsocDg{p8UOx~K-G%$0bG8|Mz|I^$ zQmKR)!s_ZhB6It9bzpMXF7ypgzFlkqbGZBGVTt4($Oz)LhaFE|81O);Y(4Arin2BW z>KRz{qU|Tug11lgyX}s@W5~fC4XgVMqYXJ_EyfAa9QPvn4KOcm)Km^S&{Nul* z=ttUirj|fZ^b2y|xWhTh*8~=2J9a}>q$h`G!tt6zt5Fo(ra?)R(#K!rnguBUC zN%+N}omNcdo=vY;`|V7W8l*;5D&Hw%qd+sYQmAD9vGs@p6XBTgFBu><2JXuToQ7V# z)zT%pJSWY;+^&CwXI6o^tt2o-r)x*L?@1C$akf#?#bvm7mchZW75WBb|yOuvGw z(R0r20m0*VAtxGR4eaU7bwxN+9l(^rZ2gr`&lkZbx_vr zVw(Apd89Gd#M*hgThsJw8cq5sy_OzaK&w#(Xlj4#210JQI3m$QiJ^usL}B_v)b~kc zoy)&Fg7cU!D<}Mz5H$0n>edQ+4(>w@7XilMT}S1lVao}dTxl^ky=A0QWCm`#tVz85 zd_BEn&O5Q$QF|Q(zxqsQO!1*q>=+NnT*wupaSLa#Ar~OpUg{_ZhtWBoD)C>)(07G7 zo`knrtJEcYnu=>gCMSGF1d0otMv{B#4tucV!V)-kzCgV2t75czQlu%2Ji}(!7?@_& z8X7r5#!E-d_?9XX*rgUVJ;E60hEx9n&(>l)JnCTQu=f8VTGn#cl}JsoR$tcKTUXRt ztT>fH{h7di#mhV`q(Gm87B={epjinvER9_7lC%U4)`}qbcC2?wY1vyh9>^l3%k9tu zp{Lhd4}p?fXmjNO7<=Cye8KDiY+@F+wU)yON#jc1&A^S7;xiC<3!Eqh3E?=NX?jC^S>dnznjI-a7Z^Z4eCoX~`HF>BWL}pwv20~XF zio#e0toUTft}E;m5xTPpFCo82Lr3_>%gU{Ol`TRn96AK zr@gcf1Hr48Q(2G;zAfP!d!I`}4MxexEqz_rS%%G@e#e`-Z+pDmj?Wp);$`fdGht(K zzyjz5Bm!L-2v`8fN)gA+o^P3ry4IS8+I~L=;!#;0M-%;QHyWcV@rPRpk40~odZ5GL z>l#55CheQ#hfb=Ta!+sB7~u(y)Nin48MQK%WK#OrR9!^_HYIe4Q;9M^JU-j1=`myD$(r8^!GE0uOb!AW{vz2>?1tn%TcJFEe8a~;iV>310Wlg&2e0k2;g%*4Y zK*)E(o$K#B&9F7UvDs$eF|<3fFtm@aX4+q~%J{!7?My-r*#p@QnN>=Ndz9%cz6A~ge+4y>GZ9eV<4cY0eS}<@~=vimHN21oHKB)wmt9g!wpq`0DrZ=X0h!Lw*k^Vv^E~0BiFz%ULD(QV z<{n(QUw)doT5!wP2G##BU<|nkD<>F8KFZlZdV?X09hL8smKxyU?C4x6f2nuG8usmg zAL9TKDqB&6g^YFA+jk13tP45#aHZCy$v=^PdZmYt<^x@jTk`86rV72kdCUxW$tdhP(7souJZ7Jgf25h?9B0Y$=nc0#YeZOYsGYXp9XTx;}a zvTcR$zn;*^m0oyWlyblO#;a1wN3v|y6Eknw#e5psey(72H&weuB-JnY$vFKA+LxOz zT#o%!cC{3yC-Y{xz*oy&`x$Zp9^}cwTp3dvEo% zv-h?JKITg<+IE{bo@W|4C2Ekx!DOK#-DU+^RBNWDH^4-V945sNEgFvwmB^cin;+T* z9;S$4M!3p|VN4Q1Sz<6w;!MrAKr^=bC+@-wIl7+BYg?mh*H}B$D1D{v=7?b#Qs7|3 z@a)th1;*CUZkDDuY80d3%D?}*QWYrX(nfX-_Ys?Kj7N8?y*<$)hg)ffch`Yyu;$H% zcMYGw5=K}%c(3e@u0u?hhITPSfDd@&{~%7k%F+1>u>xY|%ui8Z=wCju142l&Mhw?d zU9Ao67AO3tNAp83)F|Nc|A>K^XKi#X;6%r-VV{)_h04Yp137JBgyZ@nL{7HwpXfOM zL|@cQ0AC+sD@vd!nIB>^0~%NaP6Ez|utWnIz!7kgB^Btc%h|^?O83`(uD^v}f4-qg z)^F3N?se!LXQUHv(s~Y=>lX*~#?als_8bDpzK_WOR|)*~-#J?tP}sk&uU*Ai0iAU3 ztq<*<;r*e&=q>28MvY1n2Zn_jm78(-AF(;=pMU}S*F+3+)O*n9%H}b~42$rIR==&* zKfQZ<(nSn6PW&)tJe8iTM!A0CnxLT22XeC+-Te1`LfMF`ej`{ZhMLAmS4+XrOI6i8 ze6aVV#w!NmT$iIUj8UIau4MC`IqxFszY1)@#2vn5gDB-u1o&aD7AA1c@-j$|i0x52 z8Sq0AY$ zQDxRSwxQn(*zzM?3VjJ3OOir}!C?tP*rcVag}S7N0~%}0jD`8C0}ukkjXVnaz2HR! zC^lt~w04R?o9{$+yKl@Z&7ixco-4Q}pe}(RCvO*YQYo@0OSz1>5{E}^T^CMQD^(TL z<+K$yiJ%Q&`lOLN5kS*l-_t!9<@N`GL7s#Sc`e;M2L5x2thz$ES0{Qfiu~U0{^vA* zG!xC8L?w%({5JDP+^nwO3!t@acLTs`gv*R^WW;kuyKfft1VgPzNUKCWM3C9&D-A|I zhS=jyx`gYZ4#y*#UeOu+{jl4KW54t(vTn3*WbdYf8#Yc2^RY>5A z;EIhqjJDDG97bY&pRLtEM!gb@f!`kr^B+hA zKru|LpI*)5Vw?ndkVP=*o2im%l%wYkCOx7OTkUS%*|~)`!`+n_@_Xpy&;cp@!0N~! z91TV=P@?e$X=VOHBmt4WHHyb;)K+!kQfMC(4_*G#pu9ZHQ&P!0%Ld(mq5)G#@oRzO z3=UmK_V7JV6mEEiO>NRqPNK&q);hG|Is(A){#1aVryx-<nqJXV= z7kHvHQ3?G={V@u^oaQbi`qxiQfU~x06_QK*jDH1dztsB_Sb1)rjHOM3&nmL> zEB#CC6p@!3IF|Gqfx|E1w~coJuy*q<5HtM7KhF!RolK+;AQK`-D1l=n9ji~G&)c@H z4ZvBKE0of4k_P{4)0})EfzeByLG5BjgPz!x@3JQ^Q>fMg0dj*#%97m&3Fb zTFAJcCGmbqg?Thv{p0ut+aw4G*{A$Nn(`% z(;y$iEb?zGaCE|2bOIFT=maQ^lgpXRLGAw(M_CH|5dUABj9lg9qMI2R zrzSaG%gMfjKoS=!D<<3+FLw*3#D8g!@Bnm|qypqY%FdpU@Q9tu_W%FWtR&+9n)RR< zt#%=hQ290kqy&p`v@@zdx&fC;qDJ5_PpG%S%Nl5~!pj1thUt225Aa;`QC41Duw+Tl z{02fyolY~RNm|hWtROUp?g`GEz8`E}YYX*US$NFD(kMYLn zEnb0Pj3E;3&(rY_Ff~yzM8Dc5DLzz0wMsf?5Cca{vcybVnpl-s4dJ?paWpFvHc2( z(uO890!+x52tD>!KGjAxSMQIJmy2&+U!W9e1vq;cbNyyV3BrG>7c*9)fC$Je6TJcR zz5kW@e>0<+ecMP8X=w;}3JF;feET=w@0KiF3Mt;%2>fQejNrA~TzlSzUX=nC z*&zz$Y2epitx6)(8ZjtKS813p_vv7S)aCb1raC!^UR0)rshy#SWtQ7Gfv00?IKT{L zenbW5XG>U1gQFuHe5Io!@N~3s-u_enziEXY2eZ`CF*51DPsht@8)rxP$S^h4-yeF} zcSKMlB4rtbzlW*);7D1IO=AsB#)0#(=0n>#=gtM2#*;(68pqVx8RP-#5W`GC9S)}X zPY4FFcwj~;72DfoV~}@5k@Uv`cpZeem=YX7$B-d zTfh^!ZL$Ube7S_=We;->PSVU>4E^;X0A>yZ$gKj3=lC5nkdY1DW1dj95U855HF!i) z*G1e?XvcZ7=ttr1FSRP#sq$lgdm#{JZcOOk6;=yd2Ha+ZZgelzf5VC5KMme49CjP5 zd18|DcDybxeu7|gDLmv%E*b=+b{~1K5fdjQKiJ^RsVW-_VEq;;z_CutjZ&(^mCwtX z?Mph7pKgeg;{?r?^GJR3f~e{E!4Q-XB=^_d;21RmmBd@re+V`M@Qr>Py=?Gw)^Dae z9HtjtAMPHi|7kZ~!3$~~^*Pw+oG}l~7x|oVc1a0RmHt^{eRZ+B;_h`i60<68*3%-g zq>MrjD8dURaD;C25KSwqRMeqrFPuOq)gZ}>8TJ%T20Dm#63!wG@kLY=cp*bc%De(h3xfktq9z_mpN^{LaY*})-R~n@wPoMVM{wLI? zraO9?Gs#1#2}e0&)QV+LnR@Ns4{f)c9rMg^K_LUuQ6S-VU=s!<4=G%DII;$i_U;&y z1?I=A(JsGRgFw8Xc)^O)s6 zCBNEdI4=v@Rn+G1%oW$H{?YE9SsOG27SZl(upL6ZGS0?e5QsY5C&?pD7}0%#!0Z8R zR1_Vhs9Rqy`hFsg!`x#HHcpZUe$h1auo?T&L2Ml&Kryc~BKtn%WtJ;a%^R?u%U#6X zvL_3^?y357-iO{TZCa`1o88pmG^;ko!>{EKt&d@s1l_J{fjFLOzle<94&VMvNf`gu z6Az&kM$NFCq->6d7EhFUlZ@DCeug8#&s0wew+ZL#m%-m(a4R*mwfQ>(djg^j!E3q8 zI5AYa9$L#PIRXhaQIm37kNa1gVqzd+?`J5_yaeDLzu!rAep7nUd@pVIepj`@xOTcX zM~*5fhu8$~G;N!E{o?g;T(REwFtQ;v78=hMzOv!&XD)+Rre9iQ`Xg;1#>QTfs+e*v zc{SOL0aHu2JCRd~$yncS`nu*U=QdwABh1Qg;NhgP0In-1-ObtdEpwr=! z_)BY3ks5w?j+tPv(G2 zCr3r&$|$cQ`6V?rXH3La6wKWOqpsy)47<(aZ%U@3{Mp%jzW1%dcWC(!wIC;1k?$EJ zxjNb$+je+Xr9KOm8UdRrP2g6*&nwa0#8dl z;28ftrcu3$YAhuUA+H*m3PP}lb2aQBdPi6-&04oLOOhsT%{*#YH&@jPaW~OHS zuh^pBqbbkT4XHqdVGn1aue*iBerZ}u;cN8_|BIu;6NIr((x7}O8^h18LL+O*&*E{R zS(INGf1p3^E`C;R85}EE#fNjmTHxGC+lOB2>~c}A+Nh1W0u0m05`X!)0u-6qE()g-5;EVGmDgb zOKm#ojAEHLjo38k55;L)gDg-#ny`yH8^k|`Ng^6RCK0FO?F;k*X$q?ogawMQ8X%;N z*8!|5=)*3Ej}vut$BFr=TF|DeWG@i5-t~oxVT^ZJWAa z8eJuO_j-F4vuNmZ-Ha$PQ@xfVyx5te+Y`LKZp{jrLw^~n)vZF9oF_>Eno^VC2mf_BCe(%7C2zt|8< z(dk(0We8UT{r*Jl`EQ_4YZIKXOzbKRl!et|8QbzKPQC#83T4DGzeLU*flz_m>)BGt zM?6Pb_UxaYuxnZ%r+aOkWu3m^Y#y7r47XN+YRwOOzZ7PL+CwRHfAA|jYk1xyd=9)9 zB(m8sFZ;24kDI_RQ$OLS&)7hc&P{kJxKhXT6~PTf7cdVNnK#itNxi($p9ar zm-LXfV$yJwraRtIu$WHH(p75#RyEC}|2d_)kGm;^XK()VCt9e2Tt}Q5`eB(dJ~0W^ z8@V0f{|J%!ERJpi+^XWr$d+#!H7u1Y={=Zk5uUXx2m=eA5zCIFG&vbmJQ)Au_0e-J zjwV6CFij;1Dd{-Yxjm&*Y}<_%Bu;_Nn1`!8%OOsd^Cb*&Iyr6*rLhYK&}DbXNs6Li zn>|wnmqt&J4c>J*u_v{+JZR=E9lE8;^oGaE6O7Q-+J= z)NrTi;|dYY=CABWDb<^+qZ^ZFB}DrqjAc*MwL=wy5q1Kp=PA=uND^m z#I)~eJ?F3dy%-tlaqeXMj$KWyt}-<(ebMw18rV$T{zMT$j^UB`H|~nF*mVEZ8h`SSLEK^v9pf}T zdWuw9==epzg`cp0RQ+W{g5R88f{07a=0l8D4owzi z)W}?+ue!z2n|A>>EPMUuu9h}jY4+1j%+i@Z&VEv7>!Y_IWARSorZA@B-k~H?s{v~O zmu5DI#ZEB#2$?i|m;`jE6W$EdOmDD4`~v}(bOqr|4*N3cMB!IVQO$Vnsra zgh%^7J|qZ-ucmPlQt5tXK%pk-#1xWHOBq=KtHR?VO@B*B%3*3^&fWps*xBK(Ul_LODTHW#dzBgKVwtm~l z=SqG+A4_&jg!_kOtt-$8#*m07N2&&sp6IBw)bUPqg^EQ-5KjfRv@19(0{uq3ti$(H zDr7O@JD)M+cG&fdQpXtOZK8Qm!>@~}S8*BDsGnIkw!cRc4N7vY(fYkd)B;?FoANWR zqWDIShE089S7fZ-GiWkmK=xk@Ej{)>%`eY$7sZ!tced=8o(W(6lx}7g+3gA$jKcD; zy24Vx+Q0RK5X@$)lu}^_SK~&nCWi05uk^mV$OyyG=VQR2F1%)EV&yNrUsZi*zTaV1 z?NW6M?m4tRrk3oz`;P^Fbk?{>?(9s|{*`}dsp4d=9DMTX#QHCM{1%>gg zu0-4GV^2L$iIsZuf+*Xy7W~9B%PXF@cLYthqfJq*H;`1BeEhAeLe9dFT6+3S1?j z6%s-4dB;KjJFa42Tn&O>{bfb`n|T4DNGKr$OH2>Ix@&_dUom*g=>sVp3_=!Op93kI zUD$7+6gCpBJc})^$cE1T4YVIp0Rxg~i6vc9bu^{Z5omWh6Y*zNV)Np*lp;^E+A`4m zQ2wm&^zmv$Y)%n+#(tUJh`ir+5NChI0j8KrdXQ8Hm8Y)!iN@c&V_cbM>{O%p=wOCAUUlBzx>cKU~lzw>O z^7LtyNgxizI4SEDspMmEQh9Gmgs%hy{ZkJfm4s&@9Aay6KD!b$qEllDICQ1SNuLk_ z49gc0gP6GhaC}ZG%@CJuBG|crp!@&32^he4a0t*bHV93bAVj<>|Nj%l3!76D&plui zovJ&R&H?1bdbm$$r;$Op3lZ<1v2BAO9x9O-Le?HuR5=y_$IRrQ5!J^R0)lwInqYhdRzv&^TJf z9|Bt227}H7U}2d2N5n&CeM0|i4G}K)RxxBfK{2Zg92&6gfFQuOw~78|+kF9ucxY9^ z+z#;&$9?@j{?E4If$#sX4Irxj#|A)--@3ox(ZzE0?ZG8)DqwIb3hWuM?13Nj&$&~g zhd2m*DGq{o77Y7JrdhzZL;!XpACl>?Qa=0!CmGb43 z@}Nvq(66p@R1jm^nfK?=a2QjvX{}d9e!)7&$mSGSf8s>nC%sjEI1bU$^0gfk$S_k2 ztD43?ZWG+r*Lay%A~i;Lu%PZSJJAF6nSnqUk>^URv60{>aDxi)fWp|pjaKylCv#K#47X6md#ztGb$x=7Xyalm-wzY=w-NTcyswI zUdQLa&l{Y5$44(VW`UN=L%X^*#gWkbH1usHJVYwum33;} z(CRlOc|;=pT-})c#L$OCxi%qwY~M>2GYXw!qOtiN8HuO01@-xnR)oSKM1{TA6zdJ; ziEO2e9xO)7Rt@JI;PSCTNNgGXy490X5c* zz6{){BV^?_6aG13i!rntmFhs)u{FJC2RLgED_Td^*st1BJuA{I2)go1Z5=kCB19u) zO9-4;BEy*vRpmy>q|4YDecXaRGh-Rr(FF?Q)NX1kBd-G~>Xct$wWeXDE5jwn9H55s z9uxGiJq2U7d0HbHayS1vfI9ei`Yyc*!xt>x0adffdeK}2gXiD<05R@9nHN;51NsD) z_Jk3$82(%ynMpssR+^-2UP>@S&tkuVuiV-PXfcK8*>nbgn4p36WzNMPnaoij-UMe$ z@fxi(BGVJYQ`DElz8c7re}=S4PzYe|&%aF$<(oT^=(a5leC;iZxM z_#5$P@DP73JSmz`nziOrIrC#9RATX9&dd47XcE^MJHzgYXrske8I`BgjcoQy!r0uy zJ~775e%aA2;a#NGR@k!a#dPWG;b<}!w)M--2|-~gv@?#V{NVsXA%ZbQ`GK7{Wl(hX z=t-Y6+Sz>s-iU7@k)*H*tU1$-xa7_Y3D#dWg*k>;d{|yw*?8wn`|AALJ{kCGa!Goh zE?#Jz?`06B=U>*~PTnvxg4WwPzJhEsrOV3soXsnu`)dY^6N41xL}`ua5$Q*{e}(+p=vw3jCsjSRN1Eo>e!p0g9-9?^!xH^ zD+4tUw9~%g+mYdDv1d({=j-9=in`iy`?VFj<*eNmLj*3fd29T|N|wQ%+Hv?`%2llH zX&!MwQErQi=U8q<8$?7jORR2@OwrIjMSNNp$q2vygEQmvJt_-T!iKAmlz&JGwaaq5 zmXC?GXLycmP(SK`h4p(i%RTnW!g#;j5A_|1pZNZY`gh9P3| z*#Ph6WV&oJ*@pugA(RiH-=nLAM0#U(d_HQ*v1Vfa8|WtTtIgK@q11`8f}4Eub{{qp z!{F{XwBy@1{VH_qj?|Ou=))d-`IEP#mn%&YQd;kbDo+;=r`lml`Tft6tBBYEr_dJ8 zw7vPmZ_F=Z1>eXfhqwq>?7x$Th}Gs?pV9Dea~qY`Q`!$cN|zO09M7j%_gze3Q>`I0IZ0)_q_n-3zFglf3%r}ER!ZoMlMnh0+VM`W~J zhTv9M6l88iYSTwg4o&$u?V>SdCvzg-!79gN%5TwdT}x}l26iRcDBL`1dOn1+=_q2M z3$Tg<|IpGcg{Q!*IRbe9k2Mn};M!Hk!Rj^Z9XOn=;$( zqe8=a_x7)KMI`<3j`J*z${cen-^Lh2wAGlu`qPQ{%S}M2J=hDA+cfG1m(!$0LDp3{ z3BhYBd(GX$;_p+3ZV=|XC5kkfHl+2&CA7bZO)x1yVF%VEcOakY*qmy&ojT<}tLNLz z=Q*?FN;b!&7Jo0Zv_%;u%kfZp2z}JOpNEBMC8OU9nn#$F@tz_2e+YZas5+WxZ4e0V z?(XhRaCdiihhV`&u;9Vn-5r8M2<~n{gS)#m{~?V~qpDUYWEX7OmXqlRgVQPIKlfSl)OCk- zp>;~h(ino`4YE!&UsFX0SggU#rk3UBua8To=dZ7m(KukEbDkZ)kw-4iTtg_y16ej= zo%6|5$ItsXEBS)R4hw4Jc5mhfN6O6pCS=UsLdivm8kAP}TESl!YMB|4u%pCPKCc~O z!dES>q-#f6Hm5z27MTwn@8Ll&F}}+{bnPr}rd{u$r{8`-s+BFp`nY3}FwnN;A&L!y zzEYQK77m@Dm*GgN;H*ptwXMGvn?TJ%zdCbQ&5InYXq@_T*NgU5{MBk5+J>*I`MvvS~s@ zf_%6o1aVt6GhM1+oDQAM^GPtkGfqwGCJg_Rz*~ln^0c{9kaK&yZxK z9!oiNiMK1J9D8j;@8x*V$<3hT=j&0O``bJ$GRVcJKEs49AYY_9Q%gaAe1>VclOzu+ zpEc`si->Fx{GwMzdJUZFAB1_Fo9q(ACG)#p94;|#bEQ{Degtk-ur=9+oM&pDIDNZs z^(~I;_5D5rx$eaBEN6Zkca|<)^a}TWZ*~Y?dzE-3HJgd%4|v0k#EMW$)z_5srh4ut zUx^RbXJGOisTWMZJA@U!p1$Tn=Q;Rc9iNXw)bw=a>cQ2y#B_`Y5b*JcYQypkby7WG z?C8d12OfVT{US!ChAV8jDqO$LAB~3gG0z7U)j8&6EaV|&zR!Ft%`q^>!aF!-17$}w z68Xk_##;gULioucq+8k1Bui2?k7g?2I3q6Nb}nb86Cb~eVr3Jp&>%E)hVrp?vhqm| z{0{nPQT6llkA_Y%=f^e**fr%t2pVqcF+An-Dt6dj^3CbUO^Li8DodcC6a3j8--9Z% ze!ry_-wNW@wO{MJe0jQ5J(QU#qh zPVHP6k(>Ehs0OP|1Zk+__rZnO*-e6f)!IpJ%^ull)Jjj)I9!tYOsw7GeRw#)xKg*f!QDKn<_l9sq?zB z)3v#tbY$m5C11gUFhMqAMW9S8o>aEWAevsGF{b+^j!+w;2`6GF?sESArOdOtwK75? zBzjpu+-m?D>OxzF8rl!Me9u`nms`#@7lm&_F{U9wY={$OIOaF`TFaVL=8 z4wgXacJ53u?z&nHIsTAUcso;od!`L7FU!6xY)8Xy!Nm;*iAn!qw5g#W0J)sCABr;` z{5*^kZ3qLiUppMj{d}Ofc2=)Dv!!llhBlrSZhEe7YqjK>10_#)=k;=>dCd04L>2o( zsc${uI^^sM%cE@1kCUm&DETzbyiqA5tleMqW3qcs!RH=*<#037mL6fw67zNw- zkh&mh`T09&8ME5fo|z~sYH@YUDIA%VgC4}Q{tVV_6|mZ=qO5wac&<{ngSKAKmu^{(9{ zLQelNbcoI#zj=6YD~1-7SXIK@a?HIV1_z5Vh6Xu^{pexGnJu?pGGZ+SbN4(8L*z06 z)0-c40ixha0{(q4#|#$INS$Qg*Gyv^HvW^8^SZ?C{G!=C2Y-qUI$RMhZ%P`H zt5LVwVk?QAnp@(4DsUj3oZ||E&gh92aQvA)mZiB2R)wpO$6zK<7=z-i`9y2Cip*Ko z%EvvZ8KSxl4uP`Dd6N0<=c`i_D<>V>GXA=jt~ zmn&gTzVT+XWDxK+N7toE#fH1?c+_y_u?Xd z*-{MNtg@|AaOLmCzdj@21m`Ko;1MW}2_1Tr4d#Z>{AVvJTCSlTi)-8~CH zP0Sn^AW>i-TA;wUulq)2h((m3C7idXIdhxPH^4V*M;uc z8}@x88>dd-8VTU`MJAte&_rMxBB_xEfu9m?$h=5^gyMVyiOKSXEn>th-b{g)+1&^% zZS*p6O(I;7hAHBls7^DS4J-vK3M_pPf(Gwp%S$6s7pgg&E_oYSOPVEyejynROu+R#^&%s6<>9 zik7nca;4_L2<*u~2J3^YgWCh%YwrK^y)xyhq5RYiQZcp-j$2w#qTSY`Ncf$>-BW!m zgB*YOaC4#dx-O_2xaN5zp?6Vf78-QKrMn9J6_&sISpD@A=*lp!lQttLZH+@hTi%|_1@24>Dzkktw($r>1xsn ziK=kCos>Z@8GET@{B3g>IR9JAcQO1K3Soo>)w%82`H2y$veOxcYi%B3=lu5pGS@HU zf{$@SgJw}P9bq?vdaySMTD`$tiLxGz8e9njQKpB9u}s7=OMfIZIENXTazp(Nvp*aW z7d#djs57mnvVQmlyrB?~$pzn$E9+U3O%e>;aKmZ%#UTALdQAycS|7dfkON4BzP=+Y zAMP%G*jDsCFbh#+q6hWFWjF2pyV&6GM=LG6fz&&U;)R?pj>AfPxm#F)4%DN{0T58D zn|@{7*8+889(+FWio*p6o!+yXN~ZC=8gj|^OZg7GgP-!1xhQfZR{=zl=P-$ac#b_q zMyqAca_qWMjIK_R%jQwCWs`A(9N=~J&0teGrIN9C956oxOvoq z=D=5qgo_TM&v-R7BK_vO`NvnNuq}k{M^1M-_~67x$RKq!GfrGI4^}Htg*-B!vIkbT z+#Q=(PK)wSRB@E>T$=>Htk_MCp-l#!`s92daE(BXvB8z2C|erNOdxdKE0RZQ)f}1* zJXHf{g(EdW7{munVkVvnJhe+sW+ntagBLWRfG#-k?;C9WZQAun_sN|cbX&c?!LJzL6U)Gm;6sv9|4p-Z)PyYcw%1DKz^bhi^4AJckilOH z1FIvtZMB?|G_T+v9BaGz5(Dwc&gxHdmd>)Uu$`c!_@~FAcne}bi}{wxBNNVsvETC4{@@x@K8eH30P8HBUWsoZ>ujV7{PZR$vSOJ zSk5xNxne?4`#}uWg79vQCdxzN!><^~B%z?rXQc^d{v?YHI951c?<$gDjPv1Z?4+Jg zH9M)j#25dhg@ifSADcmYp!KW8?DQZtU=P~-Zs4OCW)P|3Bg^EFdOU9^UN)yN4p~70 z(g14?3WG$aapbL39DplPOz(?Dl^9O8jk=D;gyzItdGT%a@<)d6UZHSNHuiznXNsdHne$v>^UsGWy$h0ujM~Cd3EX1+jHGQP88TQ9o9bd=4i5+QM1 znsOh2ZNr1kC!~ub7}zgjNzzTb7{~-JxhL4r9$2+e^FDC`30;OCd{t5S6qmqnxz)Ue8w4CNulB!u1QqYI&B*QFY@0t+Rl_hMD+!!yd6@1# zRIigk(tsMXE2BVeh+yUbCkCtz=Igf!%A_Gl)lL_8Nvgpa1o_S$NnTF<8&hwe98M<- zlYP+zYY)ZtmbFh`__F+%ZvmyW80N)X-^$+_qs|Ps{{?pnoT}GPw-T}JyZnrquqlx> z>xx%?Lbz2O?KOc2fJv$|htLa4cty%wDB(j2CexXz_;%6`jqB(n?10!RC-p4VVj2ZM zs-+YA_%=#Zrem4|oz1gLtjN|(=*EAyMsQu2=GdSIA{yQFIZut$bo9e9@;jldl^sdl zI^H{aTOi<|RzK zY7PNLh=bG#AFeyPk6GA?6-Pfi_+9iOqd_?u~csXEZ$ye^@V5p1_(nC^8f5po45U z`BYtUHc8l{>yq{*L72qw&U6a!@7&{^ew(~Ob~k;QR__2G6$~J0&aL%SSKTj z)^ub{R&1tE&Yzw&j7`3PPP<$JCX$(o$dZ2!KNP;~%9>4cE|ToV)yJXi+Vz=MyHIi9 zuB`wed=&1?M1gSkuQ&H$+c+tSigVq&y?qJ?!B|we^!e_W;9EU^akgf7Mp;8dn8&u@ zyI&lVt-D?UQ(hDC;67hZIX_uE)_Yk>l7;K`+p2v>Xt_nXcPE79gwWk#dS`BOXQ2b> zIq~R9fp05v#H6Yk)9I!5v9}%c$t_5zDoBImC+@l|Q%GlYh9O$?!EsH^Pquv2x1U`H znNzjK6=dU(u+dwITjvZaYIGt~rH^V2!T8W9pH4xvA?meyV#&!iL$A(Dd-VODlR9#Q zXxI#WNN`A%%&{SLLO>=n%V{!BdRX1-Og-}gR_F}cR+{>(#ZH&SBd zH<&^dA`=#v85Vjox z-acQ;lI(c%(kDF5+QBNYCbWtxkBwZ0M?Jz-u;ZYTOaeP_b^Hc+OO?f=?fh;x%LoIc z@v22woZZ5A>$e^eS&&x#Y`W2^R|g+eO)U%a;o zUXF<~PScy=XW_jV>j%vy0!pXj7m}fLzZmgI@`uYl+RQrjt*9L|Z_;WDdg`Hoy^FK$ zPhNtYt?(s4XSg#M<{U`Oo*O|YBE7}$!VeL2 z=J-6|rpO>V-`Hr5-3YWs&2hlcZ@q{7``jablB(rV$MPf6=h4;+)Z8o3)L1<$Xxi3& z&i1up?<%M?JfQf-VvstbZ^^XLjC2Y#nAo;SB6+? z#X<{YS-DOf#qIT$z6_RfpS@Hc4~ovjlGLMnpFyc7vR(|SA6RPvuD!VN(yn;10}}I# zS(hR|+eB<)QVuAmb0Xr4I{E*+6=pn0UX7zC|2@X_Vx5evfG{qo|m07^T%Kn+a;ra&nW#dV~?SZB88=L6#gytXPZGx+OGyr*xXVX ze|#$Lrx;s0x&TWs8vxJh_5QB+t}>%q`}(~DSBZzCA~p! z#C6?BOWpM|?2TL8zy52|WExcX9nl+(Ej~2%lhgs%^f9<}e?hc!g|zHLt8WP< zJSR!As+k6WQ*{~}CoJs5--y(|_4QkJ){M6aFg>Vn(~_j7GCAaPseEKwF!CjQd3pp? zMYE)fEqa86VY!4C1x+a4QQUs0=dsDQr_m5CedH=Cn#v@lP})3_MmjlvJnqhj!5uXX4dd6;)EwS-s*S*Wo+bCVZYl`K870$jiV7FQ`2E zOQ5@{WICWBEblEvLQdHr8gg8)1%=ARXnP4XGr(V&3QG>Z;AUoTW=QB4CT>GyNy(8`f*m9%VXZ;>@|;DyIc&-(22oT zgo&nFpnQ7G_I>7wjQ{Ni*lXC{x&R()&8+Rs6QJw)o6qSpEFgi2%H<4SUcLWwBAsm4X!|XY6r1rucCGw9s2pRHKqkbo)KJ@QJC*Z zi$}K}+@3u7$DU!JgdMBPHxN%t_Dwg;x|gwau`%F;rkrRRv^G+BAQ5e}VBobv)Q zTiT1p-R8n=$We4){pV-{Y(2fqMppI7%gdw{R%*ls;OLl7F>;0i~@&;c^{x@rm}U?&d&fHP#I-hA8qsUWK7t6QFL7bKUGp<6>rD~E&mV%_;cFaa3%ON zn04li9rCmTt_)V_GXdY`1AzFv2qF=$OrNoBUgx}HJ^*-#Ho@}&EXKKwM!euh?C`=s zI518YUq_?@hYQC5&4->a`o~td{fH_AI{{dRzmK@P0ecjRmz;(AFRJ6-vLzeQeWwHe z7t+yz?@tKE3_L)lpJfIIjnU?gmK*-^kwxl7ksQ(~Bp{B*jwPk`4|g^yJt`)7ipJmW zfG4Jx>N{{Q$eed*{OgWJ0E>2RBG8@k|9f{}7=HycivlQ9JF1vvCV66xz%Q(TM)uJ^ z$6BJOWc+iu&?`GjTsl~t3$4rmFD-HLjsP8ps#Ii|mAQt}>@-JeSui*Hd`|M7lI38T zdc)YHT&8%zUhmnqr)ahU;bF!G?}_6 zy#ga$4v|RBJR;!c6cS(_7pFm}F7B|D>TtC$w2}bBTeYHO^wE!A)DATdMIK}g{kmgF z?a%0@D32n?vz3{!*BqD4JGKsf2Q1KJ(2jC38nV=z2ZR40;AV6EdNMP5{ZV5Fc57@% zI?6Wk{z&AzorHGlJal@!l;y@P426cA<+iB{T48MTNP+Hjp@f$eji@dAj#x(7aA;3M z=O7d>xNq&KcbPD9+sKEm#yXGcMDf45f+KeU*TiCW_xg_jBCHJ!GU6A_7ybZbehKZe zaW{1rSi4}Q|2z~OjZFN(%No#s3wI5cY@R!tZmS7szlJ-ni+9riLUxg_@H&Hc2kp>j z5!IRd2o}Rw-?e5kSS@)y^Ln&PpK1r>l0My%W*#N8FL1i~e0E%4b&Ty|q*8hyOyhDx zZ}m6BC)*PN2PZBE;K>2+FWoV=2nmUCfP6e5DFH_%OYvA0Z~ z>jo1UlCs4MzeXC3J1C0n4>Cxb(&vR*umu4{Gme=^7L}fQG+ARqzWX3Q=n*Y1e7s73vQ@6baN;S#A zg(PzE=e@idWqR>_dwXd!aw7RuWvi;gcw@p`ERjs%Y*E$4(YF)J>VhelWD}pN9b{X6 zV7u)bi-oZsFhiN44}&@{y7a%2F=#l8Yki%+xa}I5Q(>FwLMqhP%NCE64&@tS|I^Fbw8-QZF{wF()iToejTHnZ7=-rPO?6+l(*9sY z{47yY@8do;(u@56LPNzgJ1qFX0&>lqV42ZgsT;Nd6@hY=vaM>n)#Zi_&`} z$2ZR}W+?hldQsKFXVHakr!Q}9w0gdZ`-+*X9ez?mBJgTY#`oDH*qF_zX*qZd{IgAW zmC?di(0tH~`xp=>vG-xYWc-|th+zsZ13CV)cx!c!FZAZ}N$m8qUV%xwYWDY%6Ecc1 zZx`N1O5?;0a5;iIe^oV-feGKe?(2i1I`5DRXDL2exmNm~)KwKEBWTdqjr)c@F@a@5 zmSiHYmvY2=VPv;5!bw8XYTB8vYUNLzcjLrE0tO&3?^P4v@fep?S0Y}$XmV)DjW z@aGZA2La(Tq>s@(xfgFD6lm%QmS8@2@1pz-tuC>N5^gox485>zqr{1@aBMWD*ZJ9j zLeHi4mUcZ-Oa8GRD)^_o7Z`7NJd!K4GQJv^ihN*ckh}d>C1(l4EJ@}{!$HhA5T%8< zUe9;Fto}}(Tgw5DD1}l7_af3xj7aAeay*Gh)UG5@85u!r?6J^&qQ%j*RJtm56LlDF zaL}SCcU{eCx+NH&@2vR$&{vPBt?-q(O}Ey*wc|?{oUU7yzBs;Ic0`SJgYrolm;iyQ ziXLcq?!-VuWxvuF`fpr6m?Q3ZG9vwL?RRn0Z7Cr2UbgEx|DgUOX|2_Pf~H#o?8~?>CwwcWxQ`UY%5yv2ygRsJas_j43Hr<+w$r`bW z=hb-GX0QFGGJf}R_mRP>@f=Rd%_c4~JhhF-}c>pFD*O_;l&Tlz$#}zNQF3E`XiD=qWuk~ z6V&hFC1s30lx%UglukQk0HI0rmd|I({N--yDZ=UjoU_AzK5!9nT|K{Y*nqSTsY!`& z6)?Y$Op^ABdJ?%-ZRFy`$rdOn925hcj;l>)^38=^{cA=fTm-z_c3VFNMiAIvV(=Iw^0i~PpylTU?TH$H*l>^LeAj!`kO zn^M@b9vix3(UnFa6nk#H+~gI)&&q1dgrL&o8Pqig5?>3j($k?)8%u@42kY)uNxLbj z54( zk)EctNUWGvmn(j_n8|UOBVcEG3N+mj-7S`@wWF2T=V99HZ8a z!veT-P?K?_J}uDx8${_eS9YTd);~a zoqEjJIbsb?Rtna1pyKWHxeB5U_en>R0U3rIUG&byN%!3P@>RoWYvS=Y%kS7p#S*up zK{nT;eeS1%AI1xr^%7keH27P0BmFx#WDhgXZJva0n`LB{<9Se)Cl2L9>us&g8!3xe z9S&QY3nS%>wzssU(!yrYkCXe2T3g4FaJ9jYIx>sYaW(#^ou|Grc}%wzZZzy0mpz{w zTQ21aURqZFU}j#eB##+yvuB;`U}=Q;x=ii+;(VImf=ul8Jp1PB;P*(s{^qXG1 z%kYkG!FRqDonYHpM!M4!%xyOl(c=3aQUNXDzaa7QTw9IihWpx=M7_wP2FuZ9Pw137=gJd~u&_B{zF!+ffRQaX*(7y(>eT?huBy z(iavPuXLObk~Tl`>dwooWD~x$ojkdLa&~TE#;~M(dFI0Mz0fq?`(L5+!flcLR7_zq6OE-2XLK7v3r6whZv;qU{Q-K4a0rHAVC zJYj7=Ii>;JFGsTQq%ec;W~EYM7020%zUi1OfRE~F8J?1MGKM|yJmY556M`lp?9aV z3M5iHQnXP5R)f$`s;+;1qR6zEJhqCfhV*RH4`Kq*#da%*)1!v~=J7Nr?2Vldtrd>u&PRu7tM^TNS9dRTX@K$lQem z4F!_-!@2bR@S`cU2>qL7)N5BkA}slI!b9k&;bkCzPJuNCp)h&H@mIH}-bb5h=AZ8h zmmlp{Gd5u)Zlc%wWv!nAjHH!W*r!Y!xqT#+lmR}BfdO6<;0;B561@~^q1$^=Q-4?) zsZG>YB0&U;af1da2W!;a4kg1`jKPDp^Q4)g!}$b@RQ_AU$GXtmhMjMg7qpz@hnHS8 z?L;c>)3E>keGAp%sFUw5kLhpvUu`J06gP1{LY1;jX8ZV}x_;{&U7WhuA@;ZoZ9AY^ zcxA}?rMDeZNcv^o*aT~B>fp~aZ9Cvts)-AO)FFTpOaFo!88>8h>#ZvCf1)98hMo#% z_=r9!@6Y6PXQfElu+6%CZWa8*0h1v0r4jjI&P!bz9RG~vVNPsL)m$)4vsjQV81;b* z_G02mn%hHCZn$s0j2c?#2Z<2nTmQFbs*A&C%OWMxw?vU=&BIS4f@Uh8r~c0$5)mF0 zH|HKE#M6Djb~$sqHIF zy_N<1Ma^RZ73XK2`%Zzk>e2m;+|lGqy-8!YQdul9jCSGte7_v~gw<1GEUajuhp~q$ zSHgr4YE&)lKWtswxWvu?n-&k_8?wHPaj1?3bq(?~cPZZR2TPmOe-vXSRsUNouN9tSi)VvKC$dTJkE$4oM#c@vQqnr-~B^*ZR!qy ziYasM&*F|m4Dh%lfu_V2u%1cDkW|L$z-D>o#{B++{|nzqNq#FwX-G=G)M!X68<^Pn zF-0DlOwOpmw12~_nod1zYj|{8tWp{bdaR=v+G;)Yxc4net$T$iqWnd6NI41vc1(PA zmYJ{;o)2SxA2}5tazTDaG5jy1L6L{|{Je+rG6$)-@Is1l$$Sce&X}Xq)Qm@GIabbc zx^JXy>OTzmXSv!i!LX5ftgZPgaxG+($XB_v@;o>7-Inms;Q_XwOQ49LlqpMd5)1M%FTAs)@C(Up_m8Jz(ZJiA zYR2$rf`K@1VV|I>h(7@3#F)kBzbFIhWmO&RmHx#s~I*c6C{pm{GRPRo2*kXNL_;xD@!%kGYXUk25WIOAE{_*`NRv2Ec)+L>!> z#7=XU*R7ib1DELpE0^7p7rTdPhj>8+RuI1P3(mC_7@{#Bh#RYw* z)-NCPNQ3i%C5W>z7s9ed#T%L2wRSS9c6`76%Kt!n5L~?dH9UuJ4iS2(@O3gb;f^;U z4$!x(=%IPr1ke2}wDIsxE9br2;eWuh^uOBa1qNb>d=LDPI9*T<8JK%f>E`&Q{(w@< z)#99#IKW4B|NY8)oYaWcp0@@#?jih9V*N;EmLj(dyr3Npm8 zKW7Stou~w9ClFM&ohG-jZr3v3G<&tBcg=p`zZsAtLz?XpR{PNp2c*_vX&I~X3d1-a)%|15RrYASxT_Ju zd(S?T&-YI&wowT*sCaExx4nVmV4hX6u_N9F7 z!hF1eG6p*ZnZ@63P;iMkP#*K&6>`bpvC8t(-XwkoNX%P8FRl;1yE&e7Crz&=QSKEq zq>ScHPM_zaj%F7nWxBA@4yjpwPuIQsP!%8gaAWR$z6N%ZgwodpeM4&v*)FXF_2Dch>?8urd^+ zEznZc4bs1osQGIWIkOS84ZJG9booBe+!VwYVsNy$WA!RcsBm60242@GUor+#{8l~j zpDf{76E-Yy$7^3`Lzw=@Hokq}UYcso^D$KbGC#qiTV^{pciaATmPB-xwulJ?OIg3e z>aIV3O0ui@Nti*Neucl(JAB9bJwDOg$|;B5jvOEZC%2ZH0CiAR?S0e-vFcIjwLu)E z&Qa^uUrFP%`FF-bHNG@3Ex)i!qgN*78reBWql;QgCjgF2oK@JZnl~|f`0QR;iw-JA z8MY2;Wt@5|c^>SP{moYfA`HDDPnw_Lxs2i+t#!rrRp=-zq~VOL+t zu7mHtaULq$Vt&cs9*>MVfoWWAN7;>P-hxGG?Bh-+FJ1!eg2{syebE?WvEw5y0O6yK zZog*ddsxI-OFt#hEV&9BQ-|2$Ola zel~x>mMOS$Dbv%1AFkYgZq2Q&G+LCzftvpPY|IhUZ-;KdX*A>e{=@|Xn%$Iu-g4L7 z84gji79)b*ec-{Mr&-hd;-5gcv!R6Lcx$=ZJ`^E2ksz|K@bX_(Xjs8YrjUhjg4ZOI zqQ-1GIobatWU#%KAHKD^%RIqaPq{By*iQM(|@ z2wzVsF&_X*A*o+tMP}%8be_LF2jpgC69oB)HA~?>O zY?LnT2-#EmiPOt?p=gQd_r)FcE_F+yf~<`IXD`Wcks!RTupFxrtzKhF)8$0Tv=xD| z{qf1zNqPZsZE4sg)ha6sS1nj98r9t($y$%j16}j|_}5K`smNP+3RSV3?IK?^-?((w z9K{VOBlT3D`*b(l4nmSfMr}}A{kWbbo#YB$oufGNU8)5NqSqpe&*v9q%XXmo#IIWX zuwjx%$bUgjhzc0Zb$ZRgIASdfq)aK{?*6ON488opkQ9=_{ZQx}snMXOZ9TJ3EvyX% zYtS(&rZupcE)t-a1IbKb`NNyxJAHuQRU>1 znb{G{P)UKQOPkV@GzVX8Qt6N#Ci>Qp0rZk59_Zyb(94ljpqI&P!f@#}2;dr*Zt^W^ zVSmxd8nE7?z#uG*B7aQM-q;CoKE(A}J=A4iLj0p1fHwGOCp2V> zb`nSYpf^m*)*WL4TR7r+TqyN^8tl8&g?Oj~vA&1{gm05#+^dWS8ApAcQY3F)Q#N@; z&HCWI>SmhaxDeLfeQbfvzQ6!rDF%boAO`8jr=aH1WVcY=$lQzPXzzRTxTAgP#)$Bt zW=f15Tb)e(ZpX4NhHJV%F*dXv<`CDiGxTv9UAboNbbd2zRRAV_mWnn=IzZ>ALg|zZWsiX#Q(ghft)v4Gd2f$BYIw?!M z6OO1ql$eGG>7kaHJDF9**}xdmaV`QtB zj~f$?dcs;YN^^g~puA@aK(wB{=K+A%*2!8nOADD?^n#SMR4OTUpZAE|()6)E4KbT@Hr6S^ zlLfE6<&f~LkFP;O)l;R(OHZ>4=jY(D2{SxsjMLJC5b91J2qlr051a(_<? zua|mw$hyNTTxhVRV7<1QSS~gG*ylDYUZH%s$XEqMXKnsM!*Sp6fN`5CQWV5&H7)Y? zdy3g2HGZpvG1*5<0Hue;a~jjY+e14`2al%CmQgst94KAUPmQF&nW|LShacXjq%UNn zHl-#o0!q1qKxY0G#kj5|)X^?n6auyJ_tOA+JCIx=vd=~x2*d0PSqS!@4hIfgr!Q5Jm!fz}8X75v7!_RNq})BRVa<-V&l z|9>jY2vBJiJl|A~P%CBUd32BB072A`>wVsCH9OPX!Acnght@(vbku&eFgH^qMWxqe##SO5xu8h z0VQw^`YnS)8Lr_u&WSnsJWewR#)CbJ%@uaUOqSiJEsnD$;@oIZAa6!+q3_O zR)>})r#mI$_g4^xLpGww6b&+eLzLNg3w)J)=Th5Km%$BFx=5*Rv$K0PFn@%v^rZ-i zlCjKX5b{cS2bg*?xQ|MAh0I)c!!A)oy<+0iY550%5nc-;s)zdW!ys7rSMW+`1H~JP zBJnBj&ImZC-5{ecYT9EeX`g}!UOKdYBwjjq`p4sE^1U1e^xjQucC7^^Qt^fthws98 z>2p5v`*n)HQo~P(0x%zS?QzMzOGe(6#a z>M6b_TecA|`<0vh71Qm%<{itt@ z(Y~n1WCi9jquK5422e=?WCp+OJYFt|4d=^;dvy!nOKZU z#k$On-hUcVIg#+UhChf zR+G#|>iyT_>G~`ZO2{lI60#{kEn5upzqZ)S>mwCAr;)`wugif>{r8< z!qimvh65gS)`U{4;VLHa1#HSOwm4;++|EssbmE$=ztwyP@6~)PVrU%Yxt&8+RLZ#G z*YazZ4Pn2Abd%y>bNcfdG8oK&7D|#g04U9_s zAW*uG*S|d((tcOYIL+G)C|JBkzhS(GR;0Zpr(gf4#PyeN9X`w=FWf?ugJ0OULZ}2u z7D5Fhu8{WDiH|X=S_`Kp692b;2#~@9`qh@3TYRUcL z!)yt?Q|)t*GmS()&13gu+)DAB>5c}{EPC$RjPir8V6u z9-5YKy}$~WqpM2Wr#TKEn+C`Dz~@ZI)fQ1Jp*VM+?FLzA{*jPMN5qr*lWf=+P;cnX zMJE~ylB4uT8-xBakRti^my+(heoz2BjKY{3&D=?2k&_4N;gT*-u6wRQ;zqSNFqAJkc0P?DI2(zim5U`=o2s5Sf(vfrsz#e76 z35O*cLW{;$ZnczUzk)@YX=Of3PtdJVknJ}ChxMWvuvu;+V-1>?Y-#Rrs1DNwFHUIw zrE|(jf4vjD?bj1?EVh*LDIv@e_MjLz(>@ zSQcNbiJ<;bvCPW}k0IR)k<@`>^esQuBQu)WqHYQl`P)GJgX|+o+=CW!jw|f2&up_W zJb;JZX!vSS+8rnh!|t1hANHMJ0oo_Fz&M&bw3uSze=e4gQ_g2n#c%9V_|5UUc=Uf7xZlY~ zPBH&IRwp?fg7$?&Vn7fZx!bJZ(=v~QZ>qCBr$Fw&&ffYi%$$Edwnqe4dlS(HVB{0i zg*Y`5xc6k$n%MQqRDPe=6QSy1rURp{4{#nd>sut!5NKrNET?lkbVLT{dC+PZ1CqSJ zx*$3NOYW4bh^w1D`0m4n3*z}Lij5&x4caF>l|4~CgGY|BSR`QYVNOo}4B=eynzncS zqnX;FhbHLd6U!{HhydsyGx%3ECr!N*WrWRLJB>j2e21T}pe;BPAVPo3D2d}!JIdHI z<>|(pR)rp+A5)7q)c&p+0WvCI+@bh_$Yt51ya4K0)e0PGyzYPM-n zBM7!*>8-i+YgQldF7d(tuCYbTwSx1cX5Y+%r;$DboLek=8W|&;O9xW4#vPuzT$9a6 zt=jbWN)W;={&FM35SKj!b&75w>Gj5|o|;^1B*@MjZajl7$OWT{8jPvW$I36cQ5EUx zIW~nqhv}y-N&v>vQc@~H0X28ONj3NH3RLwdFAQEJPhD4`K~H3edjB8h=J8`wgmd|d znYVKm=;}x6H$rYnXT&n8d82m3;@fdAB>T@uRrg$`z{1aEP?hz1P|C<(?LL|l!i|P2_Oz@2agq4wxNDAd{=n56xu%fQP%*g4IRPV#rX_^LC%a4SJ zA^Qz3(4uE#Gm$eSZ}QaX6lqBxMbT;Ww-fY+O`q4^R!(cz_R5d0*lu(C1Twf7u|fi{ zH-B5tpVlKqUDu14H1X{iJfj(3|H=jwlGZ)ie~iKoL$9d`?~Z*cV2S~hLOKi9Dz%Uw z=0-;HgY6~~uGV3279NyD^Lor^!!hl5BSF^ZXWI;Hmo|8CYiwkW?n}|>7D;ER{wL%z z`Jv3ix>=mc;+`Wa(?sQWqZxb;4yn?^`Mo#c?IVh9dQLkR_4~LsRRu_}`)PpnUicsD zUG;9g_1~>`sAN-yb2S2#=z1nH{X65gW#<}U9<8QPLzAzq&FS{IVi|sbf}TE0cQ5B{ zA70Pp(Ty2@9fkFsHarM!rxK zR-ZnVkm~{A0CgU#Ma^Ip4#pIg*d!ZXCmAmA zicEZ%%Ly$mX`uT1yii$9qD+w&RDz=v_Gf&2t^0Z5f~rKB0`H)>f}ZHDP<(u<&?YCv za77`u65wC29B+vOH5;fDgoH$9q2e0<;1cl;Zr+fsgGXIo&DcT_sT82kXiuur!ylAnu45!*>JUuq??ihhx1o0w;*-0N%%*cR7Z)+{6b$CFN4=Ra z|4474Nkt`zS^@^Jg zgFaqME&WGu^E!7&oG}$0w;_pY0$Z@t}C$O?VRUy5S=@Kc7)jS{`0yPxv}$d zlV`br-F~y3b+}}v=hj3ds$aoOIdi?+idTc^oC3POUt6ZZoH^e|G8_E?fY!b{#C;os z2Z73gILok!G(K0Fr@GJEa&E%uscCQ_*e(=jiVwg-Dm<;FoO|U!f~D}RPs6N@V`0bv zd!8~9UO6O7loAkxmAq3ZAnhQegz_f5P8^1!2?{fD&4){LVPM_L)r0nKpSJpWZa|u> zb(AQ3;=+)ICeaC-zDD+~^U8 zVtmO^pgnvGJi>iH4$Bq~3O2)eJV&3yttn+g$XU%K6+A@NP<;Cf<0z9k=zI2O$+Of~ zuKs>HiN-C_hbQ@O4o3wZDNHwLtd6)fuSVRd?H`7baFs&><9rm#2S2`le2Sh-dO!JW zvs{+(bW-{F72UL>yN-90FZx4cD_;{}7BQW>{87uk7BkEs49Ya^qu~WGNI2L_qjxV1 zGYkTi;UxEc-;P!Pa+vArJhiJGYu9;WYI}dISUytVe9#=~MiP1XLEOFYIu3O9Q!hJf zvu3Iv8T?X&RG6%=QM+`7h4`sF3V7ky$sW&kvz8iNRmrz1l`5YioAbu zksF9^&zj>lw;yTsm!J6}S z7$;2ZCge(6T>EeO1TbN%P4f#t|Dfnn#DJ#XJBMs<_;Gjp_JoNg$`Oc0_OInHwEFBZ zL(^n58~2*S9nQ|Zemv(=uudS_+=eOAi4O^s{op{zY06XII3hFI>kQ**P&e-XOXngq zCE)xHE;^-et-{Id09z5`F6&UbjfRyhycDSON3a!{_;e?o?M~7z>r{Z=NqyZIHa;)F z@&qg6J4>%KfVeuc9I^*VQzvt{Yu z$S%@_XT{Sd(S#~To?>8?g{>_`?ka&tsRO=@jLQlbQE{1dLK@Lbb581$OA&L(AN`qe zw29c8hGlzH=s#V>od8#EGfr8ADg4KlZA+_qq&nbaJI|rCh$!3ver&IzJ^xOd@b$r$ zv4^U;Zb^^Ws6x+iku7cGO!2|f8+m?T?qCk*_%{a3Kfe!QPFviFUSOvDTSqM(As;_@ zx~H{!FO4rm9*sGuGli)$<;y`e*h^h#1A^9`G*Z)Cmv(v|24=%&!6n<_(H8sL3`_cP z`bG#4AhgJOK5XDjsxNO?6$5WgqN%2!r95RhPzwQ@XVQ?K^%8^^k_yrpn?Dp#YsJ_J z+Z;KCUwHr~0S>cDh_m;!zLK;2=Nzy6Vf0)XWVTW?D1b8ZMp;+A2X1VFRl4Sdm+xTQ2{cu-vLHM>{ni)!2F zl8raB`J@K+^Vsq6`I$5$9d60?JJr1egmTw_FEy2z39Q3W*8Ag2?f&_>+krVvjG|s^ z7)RsE77R->A&iYFq3k;l@xXtWv0@g-@qVfrnnb)NFOhWbY<)Znnmq2b9Y z{nnpR8t^Iqo#2jhkly5#$lm|>Pv7RnR(i{K)H$DkE&ErSHmt!6(>PY!Q>4kc;_A1R zyn_DaxJ&mYyY07H!FE^M0XJrE%CXucU1T=`PdG}9I!xroH(_P&_v=n17+_gov~@GR z(G`ThGWKyxxxc>DDMIL!YwM!^F1oAtrASNxCHHX$e7Xk#SJhN>uUR;jkp_h&njn7d zRvDXOfxb(i)=UksO;a^`C7f)t$k(Ns@`kg}C*NjT2?|%72x5N#HWn0{hxQXer`{@q zMoAWC+SgmS?@Q!9NudE!Wr)n)wB zJcfr$Tht8pm`LtkZHu<(mz5_rQcVVT6*c(4T*q6OFPZHRiz+XH6gUpUG@y1TuL|5V zytgO)tJjMq1KtqXlx^qY1Tp{zlZl=T>FCA@%~a3hA{(`PLlc|DF^g;2%dJ*aE8@=p zq@a`VeUD_~-^Va?06jcuT}+tf9|=q&be1HucffD)$6&qmFO7Eg3C@;dM`B5leC`d7 zj>vy<7&6ouYz2y?GudOfW@X=@e?U#U1v<1N*LVG|o(lw;!z=)D0+$ZhaJa}koxV?)~b-X}5e|dRh&56$YJcL>&x^I-;e)jqCn><$;R9G$>rFijo{^yHuWm zX^WbNsq5Z!A+}|^QUL-wXc=0|FguJ<$o6b(7W8ov`M(mYxPsc3hy6Hq6gklupV zHp{S~=ZITSR}rZnZDe7_^;H>TgtGg*{vF!u|KkJCLs`h8#aJ>?E!`hrY8E~k!MBiu zP;ZT77(W_YByCM(Cd0moC!x4%(#&Io@wXU5o-d}HkN&RM)_3^CGgQ|;siX#Q+jB8b zAIbc-6Z&fzb=04Wb$Hzcd-==p2;#nmd+bq`+5Z8ggXn3ss{mH9Z2{>h^e6a~n;k~7 zk|wx^>-Bx~Vm7SK_=B6M<2Ec^>o=M6OP#Q&>I_j(s~hrF>cRNMSara zpMx}NfMtxPq!1aho4MnVHfFb^=G=}#1p>4p z8fs%kmf5zg``-IFvnEIaDN5uHbTk?iGUxrDe(?RaJ`0Khi=P?rkXket`t@fdhJMr) zMiZ~}WQ}M#IkC6JHXQ=^1ApTXj066IJ_Au>oBkj>h>_=)XcHTE8rJ*mx|A5~gvvtF zn@We>s2C$c^X0^frn7ppmAR!s2qETDYDg)6dsll{cv#DF(p`3)4?9`>6=}({?7q_- z{X95CC91=+9A04The2tcLCgWcs_WUY%d?!$EUm|4@fUcla^_otHXr}~TLX_p)O;b* zOQ4Z`2>t%M>>ri2)(et4dS&eA@9#J@N5?mntFI}ZQKXPl_iRAgm3pjk^xyG0WmSFp zf)Wql=ue5K!sybbd>F4~fA{wpw|pRaDwq<3gNuy4^i(tjtb2tOx^NHWuB#T_`UQ*S z43D@MG!d|FbMm)%0(ITU)Z@a_d0{Kw3;IU3g3%U+lC-Mm0YEg>Y!Bd}-HUcR5AlHp zIAefAgUuAix~r+L%bOM6Q5ZFmXmYFL$rFlJ0n|AH4i+t+e&~n4;Uuhm{UT{$;zths z>y{5N5IrMs_A?t$2Wct%Wts4S3HBQw7}c7(Cjox7?a^POl--jhvtk(D-Fvn!6dFR( zKY2O#5{9eE?@k#wEY%gsw+_C&=}iOj*mj_+at|dtdO+PjyG|RdfKegN1Em_AF4miHj zM#rOai@EB-cm-iN2TJu1Q>Jp>#{td*Hj<|XLxBX4k&U!eX=_iy!Z>yz5iVX-f@K33 zNbRKtXWeM_hA-lV>e%*Rmfw~)jxtC6=sMk;m&n%0gOMgKtE8GRr{Is}mPZV2s`%TC zY{Q~9M{r|`QeDLY%IRxHGDR0l)%08WLCeyM8VDePW37JyMPy4>h{?oHx07kWwjLXy z>)BC~-Qt=-rU3`mteD}l@FUH47MP4QPM*#XKJMpy&RYIK;0z`5hp53X?3*Ypji4^R zLq@gPi_}6uEnQLGiN%FGHkgG;5@W!S(AJ{;B+oMzcB2?0AipQ{=1}O5xCW3Dsf=w} z1A+#@ij=&SYA7u!XM4X+f@E4FSQgsUw?cVr(JT`;2ZKeX(*Ue}nrYk_P^I$hrHZk? z&G{f3?|r5*t0L$594C!*oX1rH0nLH|5u##@e57mc5DjIGf;D0CEnbf*3+7=a#bl%$ zXhq46{MdT-m~MHyMZVRa)N$8_d+E=Pa6LlwMQ7_CD(?; z4V0U=_-@?zt*NNK0rZK|yXJnGKT@Miz#=8Peo6Py)ko=^iL19%QYQIEn*0CD=nYX! zegOw&V*^TNfunw*cgkA$)a8w1Q8dwYgn`*;ZZ*fC|GJGr#UnPRH-4y12b3}4+*o;e zn#n@SARw%X>D)hOskXM>pZ+$Gxwe~*oGZ^p4&_(~AH+_?n3y61535_O3`@Ez zJh9e1yaF8hr0tO4_CMBa1yD4bgYJL*miW`+;Zi5)Lm_vcVJ>GDH5Y97)$#%pIAXvJ zlmsf7H{zDtl(7p`lDVvv2!jm|@9s0QhCz)%$%)FYh70xc7Z2*cr&Px;>|Ra-kGi;m zgH2L641E2l{;#$e6iPgLFpLSse+hXB45ZFho6o&nQRj<)C58b-zOHJdAdh?WWJ=Bd z@yT!Kr=9LR+G3!iR9DyIzr#2LoKc6D(&-1Q0S%g4%TIA}EAPuRRY7B+up{r=vOXoh zBkD|y|HA`67I0Px;um|Xtb|WlS>4V)rWXUUb#BiO&{e*{kH(4dK#Hdj+|K_%4ZkCO zmd{15W<`!}2*Yjt$;m^+4aYE6&R|&b2ew+7*l=Lyi$awDEx4eQQ0w5(42}U-(`4!4NeSvJNB+bhB7kQ z^)K4i1m@Ce29jt<>IhEn;&O))GBD#p^26W?G7Yz_o7eT>Ut9WQtf5za_!jWu-wS7B zViyZTLXUlZp#jMn^a;?_e5`tQWF3i-5dj*Y=X>nwHwRdKJJ2bJ%mxqlwHmLiuA)NE|pcVo32&N02;2 zqE|XmGuNfFBUWHV;fX?Y=}Y9iyx2RTV7VaSraBt0uc+7BhQRThhL~U^&B!w4mRUnW zd^NXQJGdaFq}_hfM^SvA>9`!K-`D6qQ-7Rad}Q)$tqa*Z9fu)AE9+MCwEQl6uvTr` z^XDN*LlweMmjqCSf*BpU11KRoW2m{R)rl64dg3DOTtl#h-WLpp8OZ(^wWan6VHDiR z56uXr0ccrRW4ZS1fntm3VAt}0qu!AN0Y5)`kpI(C7zjI@%vMcl8zBYa9iJB_AI31| z2gCmd(bAWA4iv(0m;EULbCtf^$&T{dT;B0iS`WOrs`D#rGxP8FByZ-o=Hd4Xn@(`| z>-NO2pOQ-DablcIA1IyATCtXPXHN(rv%4sJEp{A#5tdcpirG_Nc{gTp+NXVoj6XO+ z=8voq8kz@Ww?wwFtiVc!;*RIfL)t|H997&2i`iY%SPO9>`i0J0xK45p$aZUb@T=ik zM=)1ExHz4(Bcb~aFd*6#qXlKQ-he_wAUZ25rh(MQf^egM#%Y`hH3Y+-h7olHopg4b z&A44uE?Q=3hom@#zT$JnG80nS8;S{zXeqgGi^=!U9@z1?PZ*c>&?z3eVvzLW zMamp@CCEyMRtH z)rq!&Lb!$)>8E69h2cFv%cvMxJ-LGm!SVULnEvYYcaj-$MtLPOcuZ;wCDNLx-Q-SH8EH+8;S3Z*&{bV~vEf@T=v7hcq@3jv75AZ0JzowQln zxDb0gv0p#ax6pzNThXo6nd9S%SLA&V`~xBZIH|y$p^|nDSvxN)96Y=jd8vHd5UG)b z2XUb2eif+U-EvOY6gVe0d-j!GLO11=03|Skfj#?rGnl{w zI3Ubhm0*V*lKMwjtq|f%*GQf%&bzufaZpgAggOD7+}N-PePq@+0t)wX;>MXdA=VrA%G{8LCH~pU#iC=% zoAj(O_rbb(EFM5+4^_y{sGNP_&Sq~jDdBbYE?ya}CmhjUXU5>eZ%p(#e)S0DPJbEj zn)NBU_g3_a1}c$I57WMBJ zON#4OvMw;*W_boXpF2-F>IG4gy&olfYXA&!ePmMtaHJrEw)xxMAtPn5t_g=W;5I00-Ewn>1sY4A;wgmh%=+C&5iflxUiR3 z@>x3Yyi+O{3&es=mbX=ierZ*3h9cC@6a`SynbQ#q!f+LhR5)t13h%Uz zujR0yRC7>$<|tejf~eG{-T0%R?MqkPI?AA$3POMEPGNttm$#Q9?!g?Nq?5Ql2-h!6 zxnBGO+e!w^)xCpHd6S52u?AE;;b%wMHoUMm8gz(IJOP+b)D)OvR6W$J1=FBSU zQR8z^CjX+5Yu0Hq%6o3(UVCO+gfT+0jxLVk6x73rrBZO=a8_Yf$sq)Cg!O%P4ELy@ zE>wGS^l?E7lyE8VZ>7P!=Q!(<#pcEJyr6W<#}+3-n-pA(e*06+-4-XA;Ua(nhK?47 z%jhTEd3{^cy#48h*J;ZGrAB*%)O$c)8zV@A>)*0b40rN?^k8sasfAsUqx5GYqQK?w>J@Q1DyiT` z)tBy0Hv)F(B3_1h+5@8JGe$D;<2r|$DZj}u2O;p4hdQgSncCK_LmLM_HIOO2-D-=G z!QfygYY#0>w4`*uhr2@weF|PUOBnMZI_9Q)hw)RF>IF^UlbB(Z2az#BfT0hzujfj= zoiCajq-ijJ4edjW_jV(WK%AS^p&U1uE4%lW6AYb~ldquSuM78p`{FAZbdrm#2k7+V zdvxZ~^gGQyQMG+sohwr_?d#xea(%{c-t!rQB6~uUCZE3UVdtw|xLnOEFh77TcHPi0 zu+iHM1&q&p_7)B$94h6;tvNnHv8*_$)OBbobUZ=X;$@d2g0s=j4Qjw3Oh|NyR{`m) zlk*ANCU_T9`|J@8-vo&m?hvwl0UrP1O*qxMg_y;D7*xA%G~o!b*s z1M7>BXK;ce93s$oH>Bl77O!Bnf>sx=Z)R1{W0`5GveqU?KuL_E>S*6919gbhx|6(KUys6L@B216AYaLC*%q3ENjcSRlDe9C5 zW-_2P-myREQB*Bo)btCBnRxvb3UKnm0ycstW)lfp8hPLzFH&fMCppO4J+NF+o*g4T z6RosGZG7qr+HGn-F)`ShgUa`TA!Q2PBqx|{lH|TTK}b`O@;ZG{)tORTZ?L1VcdYuP z&rsLie!J^hvx~uNY+|f2TV+j3cQ6@o6Vi1u#?pC&0DlX0qex$Xk|ywuxc3_rt&DV4 zfBp!4B=TODq2@!(DFC%qt{WT!ZJo0=rwZ1l?_G^EWgS|DGZ7#-C)A;2+O-qk(425Q z-Y1*w2Hz9wAcL~bEicucD*bRarxiiZ(C$H{N}D#`bdkEh_%i25+EA{9d4sz!m!|}X z%Fh6b`awo^UR)HWP%3ix-=ekL(J*T~}xc}c7ZoMXrdTSixHo~kaMsx89zh2vB({t>)O<`^7u7kVOq0;NSz zKttw#t%H_7!WG7Hvchyd1shwOl2zb4k4cb=IgyUSd4Wks~W(6byr4Tj_h58_B8B(N|8 zJD#$ZAFdUA5qFc~c#fErihmN;=*$#fOh7Q{MvNYqCFIDMkCTAVnN8hh7|y$m z-CJS)4x53V+@GQTDVI`m8~+qVomFSl27p|RHG)NNlpBUiAV8j_I^4ZIUMj`jR-LYH z@f{L}rOL%;;F>vv#~hGHGIlhJ-iNUuBC%Gll%seJ6%QwS3F%i zgfHZ}qEXB#^Yrj`A`P!-^^2Rz9w3HU6Gh;f7R!D@0@ql@P-n{hY6n%DxTF{{V&>O<0)hvaAvj2Tw`2du}0zcC7MKnVX;)K>;rLP-qX zvK_I4c?YldMTnK1o{4mg5V@8PEL_A~1jKevEoSYlm4{7wF_Z9BKf+ggTV*2fsU~sZ z$`T==O2t3EFFLJV*V*e?-qdQRUg3{9nzR!23eqMtqc5Gj*6TK#=F>R5k1b{qjqk&R z%OxnAj+gb6e|RB`(j+WMaam+GPB~HA2aqWLSWzKI-Z~Ng=$w;Qi=H@UQ;LyHOELQ8 z5ME^s8G?fzDHh%c8&~`fey{!u$a?oa(WQ*cEYarHB9_BILKI#uX>`62XWLU~9#iH~ zw~0N*48ifkYZH+spE;+7M!!sMtxqv0QB2@yiB#qy7Y)CwbG;1bu{eJT)`^b*;4EPE zOJ1QU%>h`v0`IWo3`w^sZ2#I;LN`|l(@af_HcZ=vN%`2YKl%j#mDup^Di)&by#~)( z>Sikv9Srk=`6lTuszTF58pq|)|I3j)NhU`(g)V7=I1^M0(N={<>PI*^)g^+~hYth+ z0AAxqhn3rxiKtcI(ppQc7Sb4F@=>J6V=F9@p+GsZPIfD07<*Bm$?d!q{@rsAN4nd_ z$R0iSH&9lpAxS@%H~(bv26Vy8beK2ocF6=qKI2f>pG5z>elDo*bC`Db)i1q{Gw4E5To?HZ!nY(R4)S52`7Hqkg*F&t57VwbmegQoW-eV-0 z+STn<8xGzM2uf)q;^iVs%cN<_iCv55ZIl%%a3Gw##;?N#Jswqy*rZL(PI+M*(@Dxr z6?136csyL1uo9FA$Ghd{xB8p*$D^8y2~N4!^GLC<-J7;jjv>z)CVrLT<>s&+N5*ZV zj$cR>W(3<6{AgqzF4osU_rMKTrMOAFPM+KB({4_@Rzr4yG8d8W)OKyA7fIjjv&d~+ zrI{%2QYQT+2gV?MDVET&N>f=$_g70@dFjjr3cUKkqs{47Jz<{ZeKEP5`XG0Xk|l^A zh!_R9=hm*0PHlR-hZUDI6EDrpkU2^Gji8e&{PFCb%;~S=o%**1t(pxTj6y}jEc+S0 zR+c>c7M}Q90hMprJkiBhBw4>aq~OB|M{74hE8*|M$1W10i?_}{NaMAdkA`93H4Mow zNz{TlNa40yP}*C*1m4}P+`MsHY#HJAq#2UZV1M}!w}-UkvTNYn?8C4-3q)IwBsx)| zxdu2|!>R5Ufu(9=#W{5wJ83LS0_aZo)3-PR&#?!T_qH^EMB0JCFvTCz;CRkCh_~9g zpNqbGX~S5+~WclLf=ER=l8FNCWxi~*6But4 zMMe5(G8H}xcvSQf~vOi_Taf1&;9c9aL72d-oLyJl@IhksN4f?|3V0fTtxZO(SiP52>JvYI85uFA_+(M#7cPkYwO&w>eTT>jTeF z66}XO_gxA{nG%CO#~WZCsIBjUW}v3DbRMu%=Bl$-X}E!n;UvZk?#YWKKnv9(MmR5{ zjjk*0dx0e!yQVd=#npvk_CtgVf`M(%3_n)FpP6xlKs;1_3i5OQ!zm@l8%76{aHa=Q}UoL?5 z*oOoP0sdlvY?SOqw^O*7B&-l*N1?-+L3q7#q2FxM<{J=xpv+P;}m_AxuO1M zb4+0``B>LKc@E`%H2xk*CKn?~n3zt|;_-3#&c!7ITYf%mHlkZ4py0W+XT(M|vS_SK zHZpkKZlpRmHrB(2e05(%yTifyIG>-w*H=cv)yX`e^`eR{L_X6#cf~ZK6!O1|3Anyb zzN5flOB@B*9XsVzhGVp@s#a#f4&>(565#~3p<8zUp&a~!*9jJ#H)ln5_FkB8ler`K zJbaG;|4MDjQS`^y=AL^hYz~4BkTG>;$mtPw$&pxX{xB|TcUt52z*SnjX)vp~V@TZZ zBNJI@3@{RD;)SQayuiB_(Za;XagzNAJ-OJsXcF0O(lS5}kBa*gW^=kbM%5|_bbAOo z@6-v7dUdd{u`;^s1p6Y_z#v722TQPxwPW6x)jC^U6_lZ3Ezd^*P=hHlWK5KNs^gnB zUN}SjlSbjzygvLODgRyu8xEhER$VmRluLqDR5?Sa4xj5?_u_#(_Mn!IkgehOCNpL9 z2?9I`P63qNbupc&7}S2F$61t~s>zEqn=)F;J((cVy)LEm9j~=fu6YePQW$3CbhINF zW_1T$b&<0qk`%m$026RbWJ|6I#@tqam^Nv{=Y!?8x?p5;L6}8;OC*bt|81VZj+YP% z!kCojR=*5eDo&--7zc@L|2!})v%^pqjm*&5Y!d!`cb4zJ0szB}0|9HdeTQ2y}nGleRj}H)5e4k2ovMR(9M6-}N<)*-KktQH7(hm9?LcoRTahN~u zd{9zEI&4k0c9hHxUHts#eQNU{n@Gh+skv{W?I{Q_EymP^?sJ`jZFvv8ffsRh3zsKhaVR%dbQpKdrhTi*pm zQ-e!aHWiz>H%k?jZH*1E)8IcDyVNnM{6r%(Es&`&9)8zz_Wj$o#Ytq6(#O(MaldABn4iXdb3ZW=IiT^hcGaS~uq(5QflpLq!l z5kuQ50$$e;kp(+g6DR-ayT2P8(N^IV(PD>g>g~V_rb2bFw|vT$-zYQY^uCvF<8c*= z+8Vx8&0bKRsT_10fHM~J%wDCu7+I3cND~Vs1zPZWraA^Z+UdVJe|oNc*lb^Fe8yux zbn3c=bnrAHR$RwSHd^+Zk-o!kjiWRtT%Hf%M;cHvWT%0js9_S;S(Qf^Xz*Nuvl%H{M4aw$mJU%O(0V;k9OiQ}M{;Z*q0g5VT2KYb{!9X*a>;%!(p*zRy2)RVM znOR27GNM}#t`2*UXpT*W-I7wVA6zKj7kmrNmsgGO_2Vra50KPj6n0ok7}>@Im%Z+Vy~0@pKhsp6M$6-a@R;8$ zw~bCJ=5b-yX?TcQza_A8PSESwCE?U6p=CQG>-T(nG(V#%dKEAD>PjWLsfFlA6zDyFH~|+jeoyfD#02#AM8Z- zQTE}1B%b>slKB{v@rsI&`q5$*X>GjC{kE|wYgl$;9!4PWK1OS&O)>TvKy_P`-1Mu= z^`FH;VN%`mRy%x|L=M*Dg%LUeBG)W3$?N^Kei`m3B80I} z5H0ebr!e-7(Ir8$#zMcWIc*n4Dlerv8hol( zCnO5>nlfCPyCORCKcc{f0=DYp&mly(SW_%Sjly6UlRFTawh?nTDZiKMx2oGOca@roH0AmgYv3oT6fs%f2pxltw3B zjg7EcpA=merh&EhM)vH;(D$Gtwhui%Z0krQLf6vZ2KNKjJ>mVB?uf)jC=Q~!N-w8&-;NaXQqc1G zb}KxsR7$k(V9pf6<8w^him=bD8wh}g+#~;GskJ$hi3EbLnIC-S(`vGkUzDk?kLpQY1&QaxXR0oe_ zcC^o!^3^H4aXrHKn#oSKT-&nJmziq`QZYWoE=Jm$YEP-82U#vl^WaZ(W`>JS*hmX} zu0c?JgnSod^v)leE=Uo{N6G39ZSO;=P9zCSgQqDr^Q!%$Z?%7D+$%yzl>j_zV$=x= zf7Pm^^P)$azZm`XXDN#|@+$2v&rQ2rs%zc$X>OQ&QEjdzy{rSUCPVNbKg1b-`fiS6 z#}-4hSH zzh(cKDEP#l?ilUBw(6eTkQ>R%WEK{ZE2od?YKaX?{HmfLv0E&nCksC#Acsu=I$K)WA z;Tijy+vQ*)GK3Fk=CS&9bNp~4tAw>>TRZDa&-C(3AKo`m$d|7o0t@rDUAEoj!SdKH z>%FD+Z*f0>vx}Ljrobe_x_H96r*ct#`LK2a-pj+X#aIw3G;@=VvnSB0(2dnfBu0Da z;E(^bbs1HFnPJ+3@Ha^nrU6#V{BLEhGWUuich55=%u*RfoeO%8RpsZVRb`T23Zp3F zEG;hOpOm3r@GwpF;rAprF#lqO0zaFR{ROyF#B48sPJYqLn1|+c1)HZcUI_!-u~*a6m0bj8@BE( zpc&mS?ghVVjW+^mA5kLyf)mA30;I`d^~jrN)odGsOP3EhfnivK(34y}>$dFvMuU|_ zvcG(^{qaxs`D1WG7ZF(haaFr%5DeRC{V}eH>7ic6otO_%{Eo+V7Cxfvf)t&*iB!>h z*6G#tO3OjWrr-O)Ly>)FbFxtzIdEpEuLxL|rXBH1Io7#Rk zx@Lb^x~CYcVKY)%C#f%?4!gV$q&6QDXL<(`R^yNri@8sUX@Z30EUtv2D`t0%6C+x=fL-ASUKhPneu;a<%q+5c`W1`4>Gt%k zbC>923-!lds#Bd(SR-P=Bc+j6RQ6$~g1jdEq<+p!z+F>mk=rdE{oP?IR0(OMk~iz~ zgJR1fWj^wJ)aPSh9pYh>{l>Fl{m_PMeGHgGcOI`L9v8YBu08r$=}ln<9B*?RHzB8@ z`TUZ?;}#Lx)q>FhcvQcmbRFwx<2_})Kqh=mzvv12-XG9BnNI-3ytAKY2+mh#9+-@q z9ard{{FubbWA2? z$BOkpND%@;5=5hW?a*}i{gnS(yqoOUqhll1dF6Mz{~5a1!_{`f#)!9emA$!>HlR15j_Wvp(~(?QJL1dY<~v~gZHdi=Q!=g|Y{)RB8W zXRaon4tMiJfV<@x?zUzV*%e6=%f74@6QhX6Cu~gkHzR>*0z}c1`?G9qV3@#d%n@tr z+?|I^6k_K|lKP>VEHB40WsZ5WyYuIZXxgUCUQ#);f6hhgZY;M&!)W&U?-@+&>fh6s zJGsVql_6oHS&BdB6QWFqLSk8qN?(eWYd~5keG)KH!C?S$*AD-sD(amOgdL-Q@G4* zrR2F9ssbP4FCaVZ(t%7jyc71xZe5Szb-78-tu@P9vW4GDznn=>p}Y2-AG)xLF@gO1 zR8`SFf`N!JfqP`9uZ@Va;sbjV3=Pxne@&cub{W~V1+(V3?v%`dImOx`mXC-$^UfbC zj_*q#Ut7#}huuEomI{N7=P^}+_aC#1${Lp${`iUH^ElTqS%=iZi?fUc>zGmDY;8gr zL2Uv@F&QER+c+C|q*XCe@mJH#NXSEOmi!9t@|&gTI=g{v?r@`>O$$VR0Y#3nQ+x6$kPHZTb%H4#D;HkPMH6gsO+Ck0?tv>#}-{d3~v~+ z=Vw`QTT}N1S*%Sz!Z^L@!Q_?w+@i142==C?Q>-`LtdYcePaX+*3{l_;f7nZ!E0j_F zW_8je++x}H#^&ceTkwF1(8%T@LZ7Wh z_+Avagv`X%G6cH};xCc6irSkJMp;u(rrY54`*-nm5xe3=Q7U4Z zl`Hm4+RvHy+Nc27i9;b#`_LlDKW_eaxKCihOtKDpdIMqW{_R zbE`8LfMYQr09rV%^6{C5_;%PC0H-I{S3)6IiK}soj^-(hx~byK=q;I0rkjfz8T}O< z<%`T$Po!ff$yZA1b1Z?=1pWD=({~Ce6f0*b)2J*|ji_8{OmU92OIX2h9DSp~`+Efh z=hyD_*>c(d3;sV#1;8;C3_-VPPN2+{HeK@qb!Brx@6<=l`Erexej_L9TUjlWtDg1u zJ$+%^i5gJ|ZuBnt$BDT5-v|b=h>;Y0|O@iYnfS?T1)W zYHtLankNJ39xL`A?4tXP<2-DvH=N?;DuU@;aOr zf+~!u1kMZTZcdMflA5MpnG7;yX9rd>(N5#5V%(C?x0j5hQ8O50qxLht@amUfyK0gz zWf6Wr#2CQ*>qY((UTJN639pHmk^_0u9CM>3=ViIcOHd{CsCD`Yk9V^7C|?-6sR7-H{Ox+3MSnRn*7g5?0;5u_YZ3VQfd z=;bv5tNs!y%dwkNz(zD&qOut}yf)MvuT;|BXbvshQ0zg(t@t@A zoy<54N|N=InN1mRqC`^0rmy`mSD=`+2cr_)a+TwQ7p`PZi^R+K6#SRAdC)meG!)Ba zVCb>+1&>tjQ03tu#j~ne5*J4rAXqjzTYLOPW?1bqsIieoeb#lqc}YVRlg>#~suyP? zGVGogCOGPHn@rAZN$ZiO&T=Uct589S57l69L+`kNU$=XKCRMk3W>R8p4N)v=$b7~N zD<*JRdH19n;5fl$WIKb35527KKZi5r2G`IULu+iB^Wkxy@bUeP>Nj2zllA4T-NEFT zhUzU8PQ0yq91yc`)v~p=Z%t#IF?)P}j>N-25niZVUJnX?F?FW60udoHeduEf9 zwmjz6Lh|FL7eb$|2k=q5M73Ie+9>MBMKojo102aFxNXHr?aLC8)QaMjKoS>J#U%4B zseQr1dAM(y1gC*%E;&QCT%|09-*8|yF-Gk~5i?khP3Y_~Yo;4V{!2z_4LT)?Pj87r z<6?uO1N)M!V^b>9`lS}dlyY|mADM@TJ~Aj>_GKO}Cl!q48|e0k9t0_k*zZ;nnQd|y zUJF`EgLGN=Hz2D|XkVR_y>y;6R9Ro4FFl?|MZ7Ra727r{2+BOPM4P601Kh*=vL1Ey zT!q)`T75SZj(jdk&mi#_3!+HRhA3Sjje6F9d`9od`N+BZ@7cec);f7V-Ml^S%RD`w zULV?2j%O?&*4+M;%66g>%e$3nSA@9}WB!k|w~neK=)MK9;O_2DkOT-89D=*MySux) zI|O&v;O_1k+&#F%bn<;~X8w6^)|&NOtjq1yx4P<7-LAfM_St7w>{Fl8$RkCPlksbO zUS0A8l7(1A$GzTy4RtN78g2G+P`OuVNpD&A&cHXgJTqUHy*0d0X}8_)K3OqJrL zYu@Y_hG?0A{edU_>a{V`rF50H^DM})5Af*NC1L&;(2*b8cD|+Md&*J-ou()fve)Q+ zv{g1R5B+eM=9M%L72m=S^|FS~Tlc%7mN} zsfex0??C>u8>LrvtP9Uv4N`kF6o|I0%VH2eP7(1jEf2aYiq&outK?J8#NKv_=fQov zoL)(#XW5M(KYTn1F7+c3nRaQa;7=QE@Ap?tww_QL!71c^Sx+t?s(iqAzj^%Zp*iGv z5~P>DpG8fdw{#ORhs`wPlMo2f>CAQ@s@WREAfLAukIov-_DoZ&8?^G{+Q+;&N&QZu zaQ>&~HeRgk5yJHNq~le9<}9Mqqf7-zQn5o`c~%V(GSO-@oCkv-nVd=|_A7R1auxXr z$nrn{XobHoF|#->@dzRbg!uvU{sQ^7%*iFYphU=nQi&JY28e=&P)|pnn@+Mb#m+oq z*?lvWR!m`uc(i-#=Ze!OgFke7bXMhlJ|$mEPV#U|qGE)J(dRYQJ*Y2U{hFKG#eY#M z5++IA9JeeFOZCnt*q~|MG>j}59T|?@%^Vt1?XZ_`sPJ?dV+KQh6G%Z`Y(n9vGND1* zaV7x^6ET7{ZZ{(_wpU<6yO z3h{;ZbQ0nV5NmTs25;@*<6Mrtt6I(bHsL{AWvV87d6Cof!37RJG&tjOY_Org54u1v zq)cd)B92k=T6|3Eer1J?0gY^eCzXYWoK28%0ZJs__&J4^2}4lg^6o%0b2(vOd~L_{ z88vMGPmblo?Y{mdLT`zlH@=(hBHcAq6 z(bVQK-Y*&_Y4`C=+cb%FceOsDsKa?PoL}^6Uldy5QuyXi@Ew2sgJToit2kK=^|IG% zenGdcxn$b8ykg%Haf_Fh^V>Oy3R(aQ2fsy3MIBnSK&oAAW2-!~dD)fG=dX%QB^8AV zYPi@2A2Tq|o%pzS78I2u+L_Cv#s@J}apDIu7M?$4@AAr<^XJo+X$yH;ZfBrK>Gkdr zJiEGc8W!jX8g`+z4^k~N^$SRSuiVs}uF|S)_$(O7DxotX3YMc>&-C81SS@@9;R1Cj z1NV9v{gQ9gY$j!gpf7NG%Jz2A((-RBr1EmaW!BW~6xlV2)~0^tL~G62S#XjIK;3Yt zXS#E=#7TTxa@ldWUE49Zu9ITjEC{JP{{D@-bIDxl$nn#R36BQJ1U>ghEFp5*5NXQK z<7AChg-L`Z^Lcr+Nh>`%LFC)-sO5P|#w6dX$p>dr%@ZmcJy@}uz_9hT06?yvbJ4Yw z8W|&I1}SM!1Jmr$(TEj?M@w<>`pHoqsqATGIecuIWvR3QUMY}xgb5-#RCB%R(ed+4 zzJL|k8$pRxzmdMZN%j*H+fd3v?V|74MsW0Uj=E|o!_mzzeARKRUv}S%OgP({lPC-3t8bbmapd8<;vVOqN41BhQ8M%@gEy^La!b; zUR5S#6jk{qr&AK$`OJL9kWA09{PwWj;fQ|Fq^3AxvG8q7c!#_#boMwgCIFniFLs|?(B&zhe><|}{z$9k@S3(akSbm= z9&BAQTVimlj>nFp;s0l!uD1cgb42~(v6|v4-FiCem%=E~xZoijC8;{i0Kf_~Yv!e{-C}Hi04M zZn@3U_0z7no1NJ&a0JALP5^i+k+@FVN!rO^r6!K}y#7v7&dxJI8c0-=zrYWIG8~v<_E}uNz=EVVf3t&bHKx zWFy3BMCq_YKtx-yv=#Z^6mySmIqHk%6+W^#Doq0VX&qDg$Lu~MvQ9H;cgB-rl(XG% zGueCNowD%oV=)dEzP-zzwd=4sZ?M(g09>lDtR)`sl*px3>B_Jy73GAmEUcu)+hw<2 zfmOMbDITy=UGR{F#r#qw0tOUhuuZ@Iziboh%-p#-8fx0<;e{0ng=r@tqTgTEIq8T{ z@rKy2Y*ysB-}e(ccFDoFB8poA=dZhKOY?RzZ*vtjw%J^M-+44r)h+yH)y^Q=apCi_ z(l3UU&6b0f4l#X3Ne@*TIS<{iYUg7BOv z4$n8ZW2_`mWtmSMSUE{Q(!kSp_q-h!)YeFSvOAtNpRs1ZJz^E(ReLpgZON>)wgsg- zIXK?_>>mmjuTx*gyCcO$u<@JMqrp||5R0dHoG6j`aKxk zuszs3$LSAlojM~16lp@OIv2aa_mI)DuRjHW===@7V%Bp`HCSpRSxVbNasiFLyqWMQ z=@uq*JS^yzZ_aAcABLLKx%`BJvcOI^U;QahLkHbCC&;pj7xZWzQ8X;a2g;Ont;dbz z(UV58*xGYw0H>Zh@xlxn^gm{;>jHUnfowStZ2N3&m)OiW}IA5$iqKji^gKKxm-M3&K2d*sxA|r*A}AT!RTWEe%XSw1emFlkiI2F+8puc(acYejkYr1)|FK3&yAgdJe?oCo zbQ4@UefE?Nj454F$RyR;JYouJ#cJrHj~1xPmlA6_nVgNq`{Vf~6#_+TDg)$rN73of z1~w)p{%8*8D&na^e0b<9Y1z2|Tk?sKp#9IyN*{&9DBMLMp<%c4vxECvb<2jI&J~|9 zbyO@5pPz3Z?{5oUw$GY8uJ)Oa)Ru?&z4Bl!r1&6a*%DzvbNr58v9k>_`#HjVPD)Gw za2_1^!sSLKsR>9OOF!>na%1U`c)akj(az0NVt97zj4WLn4+ZSi&CVjO-qNTX7rjM| zyOE6^Up#r4QEfhXBI)!?7yoVxf3?Vx|s^VD@zaRO=F<3N1V4pZROLX3`kEAZjHo5r&+(HO@0cmO9vSAa?p z9efh z6e+enZ!`IPPf+N*yB-SAU2`JT*sJtc89GY=ZuCkLzDo^H8f&e9Q3_;@Ao^_SlDm6=T5p1 zAZhFiQRRP8Cv33p9@}$K>E1iyOiO1IoKJb-LYblGay!80u;)xWpHHpqD!%Oqi;D1a zP#TGtp;y!FrV&7Fa%HAmC9VoddYots@UvPoTcJCl{J{{Vg(xvYMYAbK4uMlKgRein zd>xD}?lO`v?e)A$4^6l1^;C(|iwsN`^WH_ynRhT~l6a##ydTj*aL>?%&#r`2hvLcj zPv`<(Ikh^7QcX}7z+8}*0mo2UH{kIoe(rQ;|6Y`KnXheCpJl-M1Z)fNVE}g!Y%@*p zbjC#K+ate?ghI#(f}*79gk$ER7=&5r)i^Tgaq>ZS&vEEW z9*(3XFS0)K>2q3y-=itP0(2ZgB$XzyK2z?!e(r5~>Q6a?>-~QCebMIjWz2aq#j$|S z)kGgTHxzYF|I2H?WMLic6-}}{BPlNt?lubXR%LHNBxx_^ba*lsNgTLqKUvk^7cf{Q z5ooxkaI@*|1E`R=N$6$`(C3b{6xYTijam}eB*Fr@Y~68#iCS3qBwWKu$=iw1oebc8 zyV6nYN{$CYDySrQJ3Ivf`5HTlN(57$&v-E!guRxI16O}|2oY~e*@sM$j1}yWp1{oW zQCh0u_@>BmX=ym7&Pr2!b}mdM&yLTWr(Xyim7GR#Z+Svk$h&Y&2}Hg5?+U;2Hxsrd ze+pqp=R#Phu3!|rix^dhSvWMuzR1b2c`&+_Zgir7D{WwqQey)n&P4`^23v%*+xFh_ zKJ>}d8r?5FY!*VfJEt&M+LaWI5u>H*{UNEyag_iaLEd~U?9`xj3J;}W&k>Jy7qF~* zbj4VFS@|p6)PgXd=G&6&?yg0&r-$f=*568T;(@qt|$va z&OP72|7aC37}{;HIX}tLvW9KF=HIUlxvJz*9Lu6a?i>|a5y}*nIG%G**G?8bP`*x8 zno>=dlZaAfWpN4whOabMG*(%M`#Y9p70s{C=iBOwFPlN?0m{Y1eImK?6M)+h3kX3Z0J$(@$an5Y)qsyK0% zZdG0((h_|-moay`Deb_q9dV@9s%!f5-O9z>1wux5O zgg+N~OXg^uYZF*eZ$DmWu$5_%+yCkm(dvTb{yWSd_ZP<@2O1T#6q zFs1!Sj3Di51;!U#hduAoH=fki;A?OqiED+3(hfG^xz@faq0M{W*}B;j2KITw)aN>a z++l2gx;yTIa-BQka$$=95@SoHpszPQ(O)S{7m{5gzdu>>vLXxmyR|X!<-$Lfi9XTbAt`mn)Yo}t>EFD_`X zzTl?L72*CPN3}H5rkgPs;j95y6VjV06=&7A`PnGhca7-mjPcI1siZp?DKFvQtf=x>f&4Z(j=U#9$*AsNI&85E=A5nTxUOb-iJKr69 zXcQAI3%l~o1bo`I-(v3WKP-nsHp1y?!l>rEIF3)^Zff^LDy0|_wj(0wBlbz_rL~g| z<`N{sL>(r-E6f~_pQZfRAdwJ>VhL*}syJ$uvT7cl8Pt1}`N%`SUisokO``G3A1g<4 z9?TFct;Q2)IdGrO(b@Q2lTVfKXX}sh0GKfqm-oByczJ`zOF~rkfVcjg94>KjWOvx z89{!NQuS_mvjAE?(?Uzmrh)_xpMFTHZUpWZ54ORKWz={YS7iKcU8O(m?;G7)V&MK4 zGd{p1&oE9&)lPWJ-fIj_E@mGF;?FuBN?-Jz0FOoQDX$Lr3>5?>2*j2TDBAN?Qq?=n zPYNwr$NB^4;#Uu#i-%!7={266DF1p@dS%^vP5C(+=allZ4N#@szc+DSBRx0M;1Zw= zqufwr&3Cnm(-yfDjVhG%Y{>LKoM984ukNrK9Yg#6^+QRi@fk*B`LL=tpzclk3BTM$YiR7BqKS^ zaR42-c?rz12Fz}GMauW}G1DH~j)&k=(E2C-<_$z#a9daw&FZ>V_$4~pG20F^2@!xy z2iA=u7bSsRr2_Ic&_bw^zaob#6{^JFq+u{D&9r_e_|=utY>AIn18d+~iPMiNv;>IIB}>Ji0Sa zhvhcpVfIY}N?SfIFV`W%GRz_(qSid$1%~5fOg@fN?n`t!ejjNzUyZulPcQq^t5rf~ zx?)K;|K;QZ0m?xOC)MnjvvBhCR~iGNLQMK2b^_jPQ(3=D%7?kP@>?G^m@%`p9rO`K zFkYf2p-BWz4Y0=E;)|32(utBx0`|Tu&GedG*M2h#j*GC?qA%|yOb{m2Os7;0Lkh$} zGe25*=3BswZwF7L)=LXXiDWj+%uN9%S?wOH4lSw>l_1^^m+3^a%v^wAGAS#kHi$DS zI2{hL?+?vR`>!xh0GBX!8D=SU)`hQKD2ltu( zp_(GFa%tw+1(OzxGIR6lBAF9Iaxh><|K1GPCd2H4N|rMKVy{$S7rfYm;~xpb3UmrJ zseKEc8xkQa7acGdxX;4(Go7(}!=Jo%!jLsqWcG>lAa+<^wCLWG-t7MoLykSvdz;D>_dtZktiyUrDQC(T2 zh=Stc==XF#u0LkB+-B z@Nma{*gns|1J0+L%LV~w5{S_%$K?X6uCf{W`3{mB$x4iopkNj$(p*eIFxJ*YBYO(f0Nt6~j z!l9(P^&km2)JQEL<^?dnekluFluyLE*~`Gr!f#$ZN-GLpqbabFcg+WTL&PKf zBA>A|6ZJMy!im>WOeT5y1g#mHql*kW6h!hAyvL{%6}e zt&6j#Zl9G|Ax13t=9u~1JzrQ~}1U^>q9$tKxA}enEM_+>H_$OJi zzbAC8F20dxYn1$6Npmv-B`3lR7OXG)|G0cN!E^ZE(ZjHsdJHLFmeoxo4= zm{*OYl#zbK;@nFtRNZH$w>?(~*sUI|nzTvc`BjjXIX=-~^ z7{WP8eCCLS%T-Q)^oxxw@KvBG)P6kCQG3$N%4Ym}9C1A?v#|`X=N+cDI3q)_@Q+i*`ly&~T_* zE*97=A+yYkQS+~pQgUi^4%We)yqyWF-~#-f0eugRIIy1J=&&GL?CeWj+CtLUVr?6k z@iJw7g&BDZC|+y@K8&4fm%+B)e6r;VZQ$En$RJL{=zx%K%v>w7XNsU7=35VWIz;p% z>ZHW*XzOxx>vl8a2XmE{PvLs$x`VA5Kghg;EU-4zvI=`3O?BOycDLN>jb0{Lly+rz z9-hh)@?W`3Fq#LG5 z`J5>|E+L}*O@i>3A*}E1gb}DqytdPVDWn%v#`5tQF|<7O-Yc{(I&6>th$(3CN$U5f z#wx0`BC5u#?Xv^r-&{ZQ)tb-mgfDxJy%K~Rk2c%5mC#5Q;>*j3Jvm>V=9-%ANYkm9 zb=GnlFru>p&gfpZsMcFyr;t-}uwhp)c}1EAa?`(-*MxL>;%KOP_oyd#)MTtU z`GYuqvo!jp;DJ~|6ae5u07ooids=HJeZ9pJM3YX?JW7eiiQ*7US=*8wo$7|n?$R3w z5H9ykqZn|({~B15H;8BW&gD7(+JPp=A|p+J59L?@Ci z_xf#Vn4VxXc6+fnW%?i1>~;AY0kLJb0Y++YQf4_Jdf+cv+z|ZcLl3s3|MAX(bJ@S= zC!mUz3lyH;IO)MQ>8{L0{Hpw*mlKz5M^zFPSvfW=FLz>v1B z?dqIyRFnQ?1tfaP2c^H~jM%n|tH0NB!FcmYdgkj(PwmU+*=ja>x1@Hw6g7;FLy~N{K{$av7=6KBtw#i%d%GA~~ zv89){oVjN49 zQ-iP~2pBQc&4hasGrjj88m^lHMm>IW*|!C6s~sEUH6ByF3*ff*Q?yS~cRsW8XlpiD zHg)#fXJ0QNaf1=sPjhJ1r_WZaXXI^CIbvbRGi+z_s}*r&FyylzIx{_perz{sb`{!` z$sQl>bOlkQ9A4Y3?wB79)5w0~l)V^YZS)q9xHzsS0|1D-BUTcrz*$ezw6|Nv^f2(N z8=>^n)qGphH3IQq`=JI!*wKkhtRT(ywA(ygb{R-8D-_ZNzI`Ofj%Q3}15Tmd^KW5# zhs-FJjbzsfQ$$gwf3(1y zD;Gya>Lt(Uq4`ro^VI>g{#o&37`L$nN{!_X$Wqw&}?Cb@Khmz=ra zOoC(6t#VkREHhqOioH5k}Lp3yeiH4k#H2 z)7>|SD&T7wB*ZFwztf{u*PvDHMv@67xlz9s9WaL@vq3q*i!S8w*MaIecL8cb<}X#mUj~)85038)+Zgvg5%MNTTR+9k~7Rb}=1Yz^miYxo+m< zEKAjGZOm{_yFf6s>C{Y<(;m>n@S}90SuqHIFimXxI4vUY&!EcQU4BnvZ21Ef&T3~!yz(c_ z1&%2r@JH+FrWES6?K`4*j-9{;to`+#KDmflqpmS#N^=XkJkqP)DAKpp{kW(U`-}UN zgWuA%>Yq-njGR-hD!(a*t!VEgT|3t~g5&g*0vy8!oK ziT_sE{+QZqS)%fjE}5aJ|3af@lFNw16(B2$gR?DWk{6HvG%YXBbmV(-RXycr2hF)XAjDp}u6TM?xFqvL}N2cDqS@n;6^xcAVi2yw|Pjx`Y^2?)B?poTV6 z8hf@L24&wkxQM2Bw8LwstO6y~sAn|3qDXsf zU8E$}RaTODm9xYlJe)gv+xl#kNga%&);+xEcn%_{@D!H96VX%7?)@0Qrm+f@qM;B@ zoa55l$&@D@tyMA%LuK8|cX{tWEthm$v8TCOs7}5lLTMqOl3Jt)a&plnCWhp_uy3R-L@Xj)4O~n@P6n1y3+BJ$o5;|t@_tMxlY^fBTyQc zU%nlz&mF!QLI@;pcx3eno*&s%T8jAaSYbAC-OrvQie|}yNB!bD@du*TOcv8z73kV! z%`>$M9{C2An_OBP=v@oTr=m>8ZTUbTqKWIPIAand*jlu~UcF3PbO8`-&oDFV;Ek&g8^hq&tp~< zMd%ms(5Uc&TcORf%t4%SWHiC6M{RlHSQ}09_%p=s47r|?C8VRAIrYmz?iWfG`g!^# zc=$VsbN8wQW6DX)w_-ksm8bL?l-%)z?yqLJV*B-`&i&25#yjeAeK_O2iYFT>e#a}2 z=cR&PU2gY&n(u95e;^`o@|2V-K{2`-Je)xt??6vVpg-dO^h&Lke`6RkC>Sz%*7Or` zO+Ua#>a@~&Oi51_#^a{u=4zMngYs!B+I!la>rRx;dv7u((Y2ENz%mSqfwh#A_P3;a zr-%se0@`O*g4kVu;jl9^kwIR%C)UV}gqx%&5-I++ir2w>Gp83-WM3gc5cc$)br@Fs z;oae=QVMfD)ZuM3R+T#)d+XK zjGY`j?vtku?b@S@hb$wO_&MVU5(eb9f%ylx1ET7w$O6djgfPzRyA({K_P0~aaZFRL zAra&J`<^u3N>%V^>}iEKXzZnI`t>(P|Gk62U$IGM(sjY8l9G(UsDzEuy2UX5bKfxe zp`o#xaRy6nks~qrCBXhmQ0$H{2aeVLd+ZJz|IR=L3Hx?RU-KZfwRZ<8oudtO$(sR5$T7Z!6ddqsoh~PnJff?l(z9usoi3qkpF5?Yzecbc8`4i?=d%U{z3}cS198S zbNPkR_SzksYPwor0vMi_YDjP@exIuDu;7etG1lqTPtvGwDX@@hqL8lV6u*HU(*a!v zSg2-OLP*i8@D`QeRGM#TX^~+Wsm)?(BYWJ=7;I*osqbKR35KHdaxk2hv#M}Del;WU z3$an@EXo04=`2frnfh%=yE$%$)t_wvK$Qi;H>;Wq!BGV#MWOJHSWW9(*0Z%$`?cHG z4!kms#Tvv4pY_3f7xEF~E+5jfK9dw{Kb?s`K+XIMe}H=*E0<2A^MQnNhPPdArNp8Nzhn^!6m1+jQ%?k^r<;L@c;J+;QbP)9mh2TIeNcklqnzFNnGwhn6SCi8ySuheLy0O>dcxhHW|V&8At z6`E*4yGYV7r>+Y4S5lEA1i4ppExb6SSfI|d7eS2CM8FA9c)Fkr4 z^g3)?Gx+$BII@gb^q6{Rx&=RWK|9XS9(hU`Zjuqs-!t)|N?a$Jz5Zr`lIEoBTrOkWypO=OEwee$nUg zfHp)2!|7i&NzTPhy(DYGAO*J6=wN(sW={Q;TzS+3%ZPic0^<>FK|Jx#^Ljz=O*PuC z@^|_=lVGRQ@9v5`u+D`RgumPFIt0oUG<*U;<)H)lK;q#*b4I)VC3FJ3 z;(BYzU?IwA0^^{Pq#x1iIr1guguf6+AhI~Qmk2CeswnhBiW>UpIP8_lL?*vRYqCze zbJ)i=5u1KB+%838QNj_a0w6K6zrT9;9O}1Wk&arc$%zP{SGp2PSjESUI&V5!_?{@J zh@e};>~kH&7nw&hxg9+syd;*}Ma1rWmXb3D(Q6_c2M>p_kM@gtg%#k^dL>C^;aSE6 z3m7jZ@<G5P&LRPa5Hz6`8|uBUu?ZgTx)YRim{M<$Dz_?R!iWuFOJQt>`dt`I;g+-Jz?@gr z(4bRtS4CSf8kZ8A7JA+yS?b9eVX#O-1<24xn?iKJ?l@S>UJ`sWA*3PqBUt@YL$2r% zq`ZQ0b|1K?w4cFi*@}b5xFei*)O3UW)y;O)&MNw=m+M!Dzm>IOo_}h_JB#Zi49{y)JHf zD0ZED;)}^2^l}PH36fl|LyreuA8PP!G%WK$&ZC^4!K;Q})v*FO7||;cHo>B{e0-vm z=nX>t?9gIzJv%W*;+Qr`pi#=efI@#$b-6#YO3&?t+kKTZsXF`M9|X-X-(nku*1t z`P=Tv^{b|)c4)#bvmHR}dfESBFCNh~9;@^eT|b7T^(3pptr$>;Srgo>4CFT3(aU+4 zD%OCqj%yGhZZU}{&})A}?wwxh!h2SS)SjGfZfF1G&llM^SDOPBI-ZV5u{bavJu&49 zgAd+taO*XNBE)mu0`1iHt&JMfm|z0aSc|pI zF_2EpOdY}xQbU>KE6}3f{e9+td?5@LKY##{>Id_`H8pF;&=167hWZPY#YD9SAlm!f znjQFAzz5kWfTYaG0*7WLRPz^yO{QTF{wB4tyUNcje`F_@ zl3x!N-w)6`|4^X>wanii2N7{(EfW>lh$JxO&27X5y3bA7KMJ0A%^u@B6;W-J!zmrd zagD-Bj+Kq$Oi;51ep%2zeu>du8d+Hxi>es9s)%fDW`?-?QK4^y79WOR&iK^!$d0HX zJV|)rWd?u&a=9r5Un&oTk~9&zGa@gBeIYrMDK`4A6h>8K^{QmkyM4=c3!*wu@F+$j zJYl&z*B2>Wxs-^HCZqa?y%`jbXEX**uq6Fs+3dJ^u~%jZhdj%MACmPPy}0VyToP)= zKysLt$EDwxbvjx>42Ay!$i`Gw;=>HGF%&^i>W0=_R?2FxLJ{NRtJ%-v?(x|(La3fD z&l1zqSu7z(HEVx0eSxp0IwIbQU>CyJA} ze64yA3ZNy}zFLu7N3A4vR>upMaWAX+wSFq~BZ0)o^E8eq`y&zjIl2f!BpIlCVdj&R^dlQ8rLGyXzVEY=-6P!_;KUGpkn6cxKAzR9jA^d%EEA(r!C!=Xta6_rD0V| zk61^9KR89N*8ur8#Anp9zGk4iUxQ&$tZ)pnIgkFGT__($pIC*@zelAT^d$*)z1C=? z(-~|-{9kf-I|0rQmYk!+GtOUf-z}y^v3Xh~ zKk~F|)uVNL5U#PP`@zL5)Am706D88o3oqb}!4TpqA61pJ+2KLB#$M#7UhB-Id`=Ne z>##5Y{GI{P!wKzpBBr9k%u$A-wOn^_MX7?>L`9KO+)%2&!g$=!6Ea>r*VS&N-inhs zv$Mm)#TIB~tv^`Wctj7~GKwpI3{&6)vFsKp*Dlq{$`i~p1sR|IM{4ax^%KIwr6fA0 zIgVZZ9X**a!`N5qsUk-Vua?}#&z3YVWR$Yv>u+XGCPc%EnQdhLDR=5-19>=`crvau zr`*dM9eq-d=KKV){6^<`JyLYPl&UuyoM-$GX5A@Uw6|jRsuL_~g&Wng!|3jdVT{KM zwDR_ZmiLZeJdolo;xn|-&3V8ltS!j-57=o8g9mcHrCZ*pmW#r22xTH%T-z3qOGAgb zaEW`gHJ>}Y9xI+dkBdU)M&4Uvi=Ax!URwSb=^e)exUZa+pi-xQwNImlZnS|+C1*cc zy0J4b3?KzUix`7Bc3d3Ft>c9O0Ue+%6lqy4j0%`T;ZB1=0KpY@d~fHjQxI9~6%^qs z#aa90UUCl*lb^SDVUSvTd3$;EyzO~MvzQ{UPkRf|uV;feh^RmNvoGo{tvAJfWjrSC zM%HV5dL0g)tRN@+aOUYS!8$y%Or6H~-jQpZKAj{Uo*h!AIO_peNklQF@YT=|pU_dH zO8V`P8=-vdx!Nbu`?a_RFK)&o*??NuxP4u3RM&S6nl#OXYEK=K%NZ&Z=N-ooXrw6*PwMsI4&<83!`!l^>*;)0EfYQtZXSqa3ZBHVykzCm9e!Ew0 zJqbEC%DnCc@8f zK0!0Z_vaql?P9RI`q(GB{Nl3)SF}&>S@q(L`zlqhDz_WK;TmJYpOt=J)g1b0be2h1 zwGI7RI#k0rjyd8+P^wQJn;&s%jCvC`-G8je!FWUIC{9y8F-iS^R_EZ6fGuX4V5a>7 z{He8w^8j4Z>Pd#ywva%HkGw@Znw>4|H`V3JYBiKPk@$sxS&?c@nLWYo2*tiO8rJsw zMZ7Y-%166WT>D?28Tk;}7dRR(Ik1+j8kKVbc|DeH@Xy`SAp*PX!Fs7AR>mfd&(Bu| zrV7Ps6~Z9JM7k2uGWg$Un)KxL$E*xSXlfPA8Izy{5{_Lz%;ob0m>JdA7gbB-QBg_BDV7_vigXbkQQw}M`N>Wjgub_ zzAF%w=Y3QbC&W}HOpNQz+liaAXDm!;>q@%APRJ7oXMv9qQnoiXWT|c$K z&4_I=D0a5+a%4e3pt>iPk6XZ(VB8KPl<}Q{R|p3VokD*D4pTDiPTbS*>g>?25!wvJqrL^F51$$ze5{P9 zRQ8AS>(h0xcwq?=RLrrITm?juOjXM~Qx}Y9hrhTU;~Ky=;rn zj9kIXMuPn$V!-M7{P^zh;`mc6Mz8a!%J+KN5WatrQxNATtF7>iQ1{oxTvBaX2V18O zAJVrH%DGkVV(0agXBhLpieMniZ#WT$Es^hw13b^>sJk-kV#WcKH04qnoi+=K!VT%8 zprdADylF~1kWyBQ+7HPn5eh3SA&f+AR3>cw5N+9vGUlfjIo?lSRB_-*0V&TQ5Lp); z0g+~Vu{?3s0;bl34Ve?pSvD5$$1X(&nE|p}kewbDns3t+4LN|2@P=z%hKNnbT{V4O z4iOj$GQbV=O$$He^|&8CcY5LeC9!}rXPuJ$rya{ESYF%0rfAy+)fTdWeL%~*rQ_Lt zO*g7eJ?ppf<=A?cj*daBJ8{b&uAIsFaCCWLBYi`BTqD-H33qKL`!g@!fLuv`BPy^KvgTd&Uy}ApX78Su4$BimHK}q7sD->kwm!D;}f``m!0QRZJp^L3zg6wIR98n$M2r{0SR>!7mo_hTI)$J`JV~lb`Y| zJzO^OYuTeTu5*wBmia+ruoe>Slgt33ne7*m##D;{A(h~?R14PW^a0K7?;$lK$lCnE zdT0)BZDB3RfZ`pklCPWpQ=ve$ z@0*Q&)f{pGESf`>jt%8Ox?E;h3mANKh=6E-8)^sm$#}nJ1TmU}lrVKLwvs1RR788|pBYb# zsIXU)^)9HR>Jf5;Zl=k-P94=*qbs3`r)qw;U z&65($k%BUNz1@+7Vs%)-ZJ---+K|?_b+y z0NaHA+Sc;}V_hu2+V( zfTW}RP|F@Lap8bU@&JNlEPk~7unA@5jIasJze%(exY#Oun9yt0O@T%vP)W))G}p5L z_YPC28^spm@xhNf{`R6L_wj6{@Tgt||A)PBTMQw4s)&wu*k8#N4vy3GuA9?@)~x5~ zi^-hM@(4~eSmihYmeY@jfd}4ds79+z&NJ0U14k(C@7#j2R#2vc5+|m__?$7MIa@QR zQQ2HwP3ON{IF+q79rz;HPOwAE)?XGYmd2MpB$(c_ZKnK6kY_h88%{OeCC$P9$xwnU zU;UECj?3=_O~!n=$7&e)hMr;|;=w?FeB@FfA_HW#eXLwEGC4X+)iM*aL5O|SYI(e? z2yU^K@vre_xbfLlJ+=Ni%03wJIcXLA7K3Yf)Oz!=FaRjBST5?>bm4x`ILB?kH0Qce zb<%p+NpmHcW{#N^Lq^U4Dy~1J+v&nNU6h#NNR zHoG;QK|qod5i|!^`J@T$P3E`r_@P`t^@qYsMzi>hx7 zuOw*NKC!v6ZEv)}#Fyr2G@Yo@1rYNn?9bahqTcXQGY znL*J|wMR?U`T|Q7dQm5~pD%{Y{IH=w#JRxzE!C^08BYDq8ice&5kASiAFcP^WAO0Y zra*O`Lq()+>9Hugam;zMp4%kTF8Ujo%@J93y-m8X8M}cp2mg=EAV}Q<)OW1?!GAJa znTMi)GP&aa$sGKzO!u3isQ)Xo43p1i1^=7p!k%7V3?IScyPXsF73K2g{`&bHBw~js zj#w9tc^2M-@IRE5J4^O13>Iq_HdI%AcXSYtJa-QNe!E(Z&vlw1U71ZY*0R7sfb0WM5)q?riR1s8}n)#t;kXm`|@DJ)356&?t0 zN#fdyT6+AnyC}%ilTg>{7H+>-a(&}i1$8jnTR1I%@=6PHJ8V3JdQhz8-?-fNl|uMP$nKP8$AG`((Cm-x)sd9Y)@BWc|;S-YRDLTHKZYnp~V^t-Em zP!WI=)d8a``#W33nkHI_%qp>o7pq8rEZ$N*i%V}SJv#rMB)Onv4-PTE%?_@HdQYyJ zfK|Aw^`IHxqDnyrNMWGD^%Ml^Xxn_c`t*fd9`yL-`+4~aLy)KxjXVo|_97Nt!fX4@ zrknFfSGf+CUy{wRs9^qwRJXJ;eosG{Ypx0E^sX_%;bwO5^!VWQsQJwR5#rLBt`#zW z%C^T60^RdXPGJIwO>;6gY3XAht)7)EdmePxL8Xx}N@IEq(6mGy=ULJ4#cR-s$;IFf z(MjRV)uZ*b_}D)=I=X*V)y@I#Wd8X<`2ymjjk?71(+X#4LHyei5Mf$UYnuP6m`21y zum)w$(%tm`Y9?S;x!+EMJ$u$%u@XyeIrUMCTfyspLV)0m9u2>NxJv}Aq7tSz> z2XM@Ec7sCI?#+Z3Vpzen*WgtTbS{A-SV>pQ{ zWb=;Vz@)c%{r;|hQNCQv|B#aO@OaLWnYOB#_+VeDC@<-ycmbm;K#=s!*XqXkec%v! z98P}atA$@v3DGko8JZ{9g_l$-m;o>??BRMV*xRfmOM8mCi6|vgW*6!nZSx6x7ABRu z8znY@4WlGzySk>mW!a418`{ckhB4Gf(@PEqkr@cr;U^yI}H2wP=0#S@`!tIqaibf4@@sd0Qn5It>S~|JXdd;|H{IygMbeF$H`e)tJR~O zg}0gQ`d{q6l^AeSRYYxf0}h3uN2?3%Tlb#mw}d{1YOiUADO;0c-)=6xuByxD<|^5y z+Q&voU9;Lsv7eHmU_4A0IE$j@M4t(Yj`5o87{|*QmJ?JtM}PUlc-) zeeTl%`A|`pTXM%u4fE^VS*|`vPswg}z?8Pjvi@}3xh(gNlc{ddTLE>i7J)@9Ho}5# ze_;xUI}An$<558a#sNqWon{1+Ee;h<>ph+V$$Z1VA@gT7R3#Oeznn?QP zGY~zsegnj5`*43grnd?t`s}J)jQ0PRaMFLhcT;iQ^o;+!xYi2=J>1Lwny?vjdHT4D zg4|8D?&()MJkTtyjh)WAo|11II37)GbqJMZM6G%f^s&4tNg1oD-HL+aL)F7*-}kj; zJAHXrv7df)=ssR=%gzaQTPo%(P~^yX7kesu;ynT8j<#2~kh6DZ>SaY3!CH385UTxs zznhcEgrt+txTILysOlNF6G-q!7U!0y0e2V3l63HJx$+MnTTAo1?!+|Me&{gzVqV1e znLFE(5qwoYyF3!UzsO}gpfr>&GRG+E&Z0QuF6}wK%$*8>Zj}fCnuhKIev(RMpI5`x zIlp*bE390Gt0}`aua`c1ibQ?8=Vmnxx+aMXAxw!J50VWEdGDqm*7w!C4z zl(!A(3mL4T`f;l!>*LdFf;76gV;NK_dLUl7wPSMHvcB$=?lI+801Pi$l*@nFUe7A$ zes(nofxXYic)Qx26MZ;4;3y{h^wtEHCad%Z!V^k{>VdixS`AW>E8JG#u|6uhaK8RQ z6zVx%JII^6y$M)wFUmQsfOYnnGk;HWOv4yibV=*5k|67244z@5`!(pYmz7PrIjgUg zd1`T`*qRpy*Q}`;e2tKE3TJobpt&=cm1sHn_)5}Pq&FTdtBnfeB$AOy-M%@;hlGO?8nKyrumPNMRYW2q zsjO`p=gWC?A|aaL7US?}R4SQlwO&H-Xb`8g?}uV)r(KD`ZDPS*|Ga_Yi!p4H zv}^;!mno{B+c_{kBf)Z=1Tl`?+tUiKfWz|CZjc%}K@LMECJpr}f04<2pN`R046lYE z7Hg&g>^+&mvx%Iczw(??80@{%klSJM)Pj4_QASM!PwE1tp*MqP#+i`)$%Fu2k2olv&c1=g40!)hs<4aOME9++77O?Kk@Lt6n{JWI{A8U7KK@YFMW%S zs89n_IRdZYtj_)qyFn?GLj?pBbGo*SdRKk1w0akir6Fw5g4NmY#|I`dQQf3HktdCQ6nIEMzo0i-yIU)Ot zRtOH1FIg8P*93(cUKnSLX(EtJj5A4CROUYKgd6Cr6D3OFPmc@6KUj;~mgyY9ANwle z__o@XQa_Rc@phvK%X7o@oxcF2f5x^SQ?ELSDNbN>qQy@sP`bgAd z2ck6D#x7c453y-_U(`Hd#f*!T2=215)q_roD{8Op45eJtqo1wmJd_~}28zoAPd%U9 z-^Gxb?kJo5lqo39S^E7gp*GLH=hn1oCDDqPU?cbTY4ms(`tDk|?Vg3pkrQqbG(o3* zWNgid6BFJ>h%>s``Gjcui9l272!#w#CRxDP#t)|wC}#UKYz3kj9ikb{;^NRi>PCmR zzlbSBH(3s5O7t*QV7&tGAkFM`GTd+biGsEdq&wbmS8i9&eD`d4oh40XVe|aw*A^ld zfQ)E=7gL@a6IG-TE{^EUWYvc_dugx$kX_tS?FI3kx)n8N*=~PaNq%l7%i_q{9s*t0 z=jA8Lt^tc{8Uc~29D!HH*U)G9d0vzbwkf6gUctPIBSr%7Aidla8*ViEzqi;I(-zk>B`&J~90n-XoCo9rJ=PheJK$f^ zD|s~<5J_C?8MkvOC9vHy@-zaUDVmk*9|swPJ2}wYcWiEcJRmy5xZ?N@+)XWI%}PQJ zW?{CmPc{vADy{Uk?m6Ii11@xLJ{6CCGZVh4SLMz)i9r8}i7o<2g1ihg+`*xYjEn+eD&ive zcgWY_&xZfV7i>jGD;YiL0M-N+sO zG7Mx|I)7BV$C5ed3^EvF%FkTP>l2%3C)b}A$KNVs+t%`-xLVu}B`dKsbqNyH5z3fo!x91z1rX`)s@b3o zpW0l<&hp?Y!kl-cI}NMGAyoT7r{IpE12vz;7G#M*i(&;TfH)D_4Y^idkIV<|yued< zQ6;{}>lystM%M#5Nj_96qOJNlKQ6LHsCB4w3zCQkH}M@<^=(BqeCKv!()zE%i>jXz zqXGq5=Fbtik|MfF-MNsmzhh=$$lV$zxAf5W19@A~XIvM`5+v{=@(V)$&ICqE6p-Mb zU?B%)i<$1K@gt;pqFk5%UZ@bF%;Ivc+-X35y)4 zJ+lWxs155w2In{3bsJE8iYgZ}%R}4+-tvdEi+R#l96$b;FtL$~I8y~;VgRB9zT{RD zq`<|`hLK9H&e}71sHp+kN-kxxP?a!TbAMj=P$B>eTo38*c0C3BIdQZyA)dxuLqs|J zYSXbRu3uCQ$@5eqxMI@KTuepg8$OrclQ(Gw;VRHvfZF^+BO+p}Uep=@xzeu>4NBDT zm)o%HO(c1bH*q-%o#bn_gufC(*rv|#%Z4)n$`0kT?Et-Ai=p ze|~b9G}Z6^8H2><{I*S%9Dt2n*TOG_NgQW_46@!M4=RI`ElEqx-z9PmW41*eB zLn!ah9CeJbw`~DiLS36CeFrd^;)j$O&3ENgbgWVSFe0Yk9?Ll3b#EK`8nhwHhYX2`%{A_5O=5n4OsV!QbWstyfVM#NmUek$8x_~Hp;`N80#7hHoVzgD!5J4 zQJj$#=+jlz6#&%3f*4}i2c2?35QFVy6K#><)=m$oMBC$7+oS zNE60hoh8pA#LAG=dC=&Vd>Uu@WPNZ@BH*ZIUvAHA6-y?NJtv%X=Jk2H9}voKtM8WQ zekVQ~bN5SGH-SnXB9?`vgbuV^Q%BB?3>75?7#CA_5DelcU6~7vGMuk%AlyRiGlDzy z2mp-HJo|^re|hg*J0?EX)`xwj2&i2{|a!Ir)D>wv|Vs28F^cllEZrL zUGpgesVGYleJ17w2z8l`(%u2tsrDs~-LiY?X2Epfepd7T&<~VmIUvBy7z>misT6v3vRt5zYB}v#Js`QOn;Ta)4J&Iv zB}`Ap$Jvc+BgHajvL`lE8^kxUABWc`ne2UsbY}#=J`GozdvjNf{l-in1vFKth8sN- z4L3zQ`en1`9WEl9NK{)=5q@j(8(`pavre&HVjm}Gf)XIBOG;S;Od7il%~P7u3fzRcF zD?==$qjZl56f{l+8cm@|A)0wWf#sMFmq32}EbSp&o214l9@z@#vu;vZ zqF^1U2Tp8uq|o%uh$CnXK?8zxH7+d_7rvNpHOcC*_L}QxLcYsuyA$P$9lgaV5U*!B ziUHd4S^&eb2aWfCQ7qDP;9$>;SPe-}ok28N*SBmblg7ykARMT_~%LLdq zAO;jL5`Z(u6;D z-3RGr2Ep@r4G>@z)AL8TBm=`2G>2*eR9Vy}y}+z^-s;^{QOv>*EAP{jM)AZK)UN3vU{$aj7h{xJ#pB z+UzUu?LuQUQRjK`2B%4)EI(UjaYk3PtA1~WBV_2AK@1g-sdCR&-JKgk+N}s^TEwT) z(bE5Gs0nQNpiP&d*HR{!rvi=K?>|{1^(Pqk^GIs#n>AUZ1dO0m2G*=-pR@N&LHpC- z{L>nChF;1N+zc+eY7?*~qQ4!#XdVZ@Dl3d8dk-Q%(f=MFPvb|+gTj>h%oc&!z}830 z5-VVv><~crnbY`tyY>W)6&b&^w7*&wfJ_*+|30%s>fZklsVCnCjmd+abdeI)ZB z?ufGbzATq|7No0<=l(6Dl9o9_yP+RBuv3)af-+io;8w7K`Cw@nPZ%dK`2+(C(?UTN z_FP9P6tSLt{>m@=7k;5)eX{|;=PY~@IaDWmx@i123kjf1vCZ0oIWP#JZ6;Ps{FRdHe6e=3M zI@6w=VeYy;u>Oq6cFsnbx;oy>=BltQCBL69=Lg=F{U6#pxOIhQGG=$E$Jj|;)W8xH zOp0im0>&A*+~(98+X&Ga&~JEC=#Yu?YDxJ&@?MgX2bmI$mTq&pJR(JcQ3Zypx$|8< z(XMZUxv~ldb*c$r6gy~rbUU*=_msNQwNu!t)={n0>?$6tRB4tZpPCFiXwZHwuwQg5 zFf`M~|8elGz&tk*y)C()R+Q;-SdL4ym<@4k(xARMzOuFZA=)-;iD9?Be4SpoFlG@I zIP&A9ex7v-vhcxFEvxwtMtLo{^b-#O(#)X-mA*FGw zg+zWh@os7*N19s^-7Qo0s;0++p*x(W2qo;QM6n32Hl9YOm*AwCnyQUP#V<3DMu-19 zR#-n{QqQMcg{r0N)%ijNviu8WvfjcfOk`%1>SxZ4adw-z50k8DdX%bvkPxd1j2ASd zx3Mkw=fZg;S1BH4xs2J`kJ6DC0~%d}!MUhnDaLr)6x1i!3xB!jZG%akElJZ8ym{3k<_IJcSb zy^Iw8;_pqg%mbkZ%c%h=Hzl?O35}+|W-4&n^pVYfLaZ|UV9iO>rOJsM^pym<#Mf(Y zWPH{~IJ?_~JC+EbH%kl~4W{65j}`*HJHVbIWlbmhfjSX6>S?7vytXBq`xcCM7~_*z{%1ia%3silXn-(@Ii|@!Y^Dw`UVy8V!3e7^XCWR;#q{ zz3XhZBVz{g#r$;)(ft!KrS*kQ#(?2Zh(X?|eFJgCths83l3WOlT>-z0&X!g(8;1`4bh7d+#`6Eq?-Xbwbw1Ql5 zt5qF)y4Vm^ePF(o2F1^@YOihsxQ#kH%D!|7-{+ny;#900B(gKfCPXOvK5DJglIak3Sm@EqbQc$CLfJ0DbHLMoKFqljg1y$^hafW8R%_i zN4t+$-N3NgroL;4q|r`86{mwsu~)^U0K*St&?eTkLIJ;a`ZEG6WH=7n&t^|y%PgmO zg@ttJojHbUXR!KYh)Xj7v{!*aOsR<{Duw3h{XwmFm?)JfRGgLV-r+wDIVs9sLjwaDVF6#Mmnb|bV>7W{C#%1#5J{xk z#!!M-K{Nw1QF!RYS%Jaz>eGKGONX-Y*q8a;pC6G9LMNeU@i)&zUOTjkROSBC-qrP& z_{h1q_##&$d66A{M$~w%OCc&&4y;9U15*glK7a#ZZ$S_f6DV)aqo)S?I<&PzZAg>n zIFt6pNMRkhU=^DXY$Q(ChmQ7G%yE@JUrjeN9FC7DVINVV*h}bOO?CaEUfc_+vZht7*;}G>4TvpHegrNuYv*){b*vD;ubjRU zb&O?m(RGaZB4kELbv}MjPVr^(k-*o}LxS-VyMDoJUVVEfPf;Z6+ob%nzxmDXCo^Nv zcA}R2h!5jm3N**_u+kIE%}_&+Z?G$J`7Co|^h!X$#A{krD;H0CVx0`KT{rrShpoBe|7sY^uVZcylCavW?HCX`R>vJybLds@(?G z(?n=2=1!~3W7)FKwZYRz$D)2t=cC-yXB!Ror6K^mjBrr)%SOjtZ1X&_lhMJsNOTya zhkw7$0o`YRl(U-TWN8hA_-%oZJ>SuQl!nWmVk(X#HQ|0=Z7_9$t+e$jZ5+KHdxH>U zwG{*kU(gpSjHXDq1Sd3SD0VCH&4xdW!PCfYA%p2NW+OL96-eMgiI|nDu790GyYYPs z{^Pn+YFbaPo4%Iha{HSsW!DS4y@rtWM1Kx`7cVN@YYRybba_o>c(!| z%RHq*FAu}_4ErymS=v-uv4BHz%Hhh(Fo!hK-){@w*5l1^-}~!fA*$|hYZkmj*nq2Rw0)vJagukq^XE1&RR)D;7o{Jnb7#}YLH?=-9DNirOO##NP_Y&&-_O>FSYI( z70qbb2F6Xa^9MJuF9imU1^@t{0Y&0rY9;fLnFeqG0JbFn01qs+cjC~qu(fbza5l2O z%=)rh7(ws#1MZk(0ImR0)!NXN(In(WNxt;}gAPk>Uxg;}8%QNI=v&bRLzMK@b$1lS z`#6!2RRkxanK7T$;G2{7WYXPvvkrIe$VPrnBfWg*p-C4d!!^#X!6nXn`w;5wW1ll) zbyG$r$EbS9O1Z_CI1)rlvSs#s&3Q8$xfg4=NxGG&>IV zo7@)UUwzu%t7I+A-n-;=9gwE52g{#!2mAP1D)-G;IQ~gF{@tVVdz{3HM3x z{166d?hhWtItV}zWP}a+#)D|Baj*VXhxcT^%m4lAyjNj5lyjy|z!^CYkb!Tbf06}n zpA4xVB==yUeETtrrPWK7OBW?8iZsx^Qcn!;P!NWXi`sp&!wa9m`IjKU7#tH38h0g- z#MUT73#m;~7xjkV4>CojNRiNN5K?4^`>FgDL1YTz4V$y@7c@1Wa_EqLAeiAI^t&;M zx|XLZ69Ht*KK&Uz$QUxLHzYTZ}6)+4*0!bfKhy#crR22DJw@l zK&cF*b2c6`C)geD*SXEM-5$SAG$`ecclVV;vY~Gj*n=(xs}an!H+8QyvJMjf)Fut- z%=VPEWZx7;9x?|4t0D{(lfO9TOuZf~5&_nK%EIHP{w)LV-@@N^{LBC$hS*=KIhXt$ z07IxX5CE<#=sgS?o(D#ONP80)(Z(5Kc-;Yf?MEKMjFrFb#m{X*R}kmqWL0(G6su|Zw46> z*YYQow*a3@H2wqP%Jm0Chnz3s=1!;=5l>oE1tuq7z$Y_oQU?^wI~ML>cNIG>%*>4+ z>k@HZ5t*ozzM>g9ZW3&Z%k_%mGk%H1**mGNhWffof)K=WX8BvcvA2k zB@uLfpDIU^V%BMcT2|V zSUmd7?`|8wO6@nIeSk+MD;L(TXp~O84#Rb`GLbppU8WTv*q%d0BLdaYpe{!)x~tQe64VP@ixD8V}65E(Mzc_ zrifH`#;1W2a2&txIhx(mvt}saj7Cn!7l9PJ@9s#Im{7eCAC*)h(bTzKP5{MTm8!$= zd08>cP?cV8&NZVJJE<$^6I&b*zJ($5c2>74ReC)Ojy?Ofjxl5V;4T*hqzN}|c`GMy z%b&Z%;e9b2ia4uN^aGrBdsc#EB^GHtsE>f*%KvHdtOU2!m*j<*iGIUrZCEtgt~2)4 zsu(t`g-wQZU>ewby@Qfq-vGl_f8vf5-H-tY+O1vu(1ABZe!%| z`*Qpa*1Y7J?AU;to0NeMQfolTpX2bjW~*oG3hLal7SO$M0eXLEis_%6k;V$O!&b#+ z&sV)sxgbK?ItYRdrN*D#ya{5__&s;Mm&FHf#-`m?TK&)DdDa3Y?tuLN{s(fMm>!*5N~CUj$6Kw{a{Vtw?ez^hWY=)qsf zeup`+o1Pfl@sR=cSsdCL$lM=D?I1qPSWwb%;T}7WgZjQ~qF(OI?tD)B>}Ww%zrDW< z?UU_B&YuZSPwz0N_tpHQ{Bk-CXm|@X`B?cvZ`phXii=~xZl0eXI#@lvzi<;@ zK#==MjD9i6F;O;59MO)NHYE7)TZZv}n_paX6dD*C``JoU)9~ZoQPpP5&_iO(+9NHo zLF5N1)XdnA(UgV~l=ruH12Dn$7x+97I zsmXEB;GOLg&kR+dMSLt*R+aKXp`%N`b!^h!E?%NneAg*?nv3xc68FcoJxaIGMD~VN zYiiCiF*(CoXp*+)c;p4{hkp4=7-H~A7<^VW7YSsfojOc%cxw0{RoB#bxjKE>Ruz*n z1do7oAsn$*7wL3vsWMAdq{n8cyh`Kic@0^(Et&jLMup?(CPf}!OOv$?$XNa;>tywv zM!WiCsiU@jR`O~-i8Y9K`v|67!zpV`c_-Jgtuo`*6vi*e_;KD=ziTeqs0&^MXSas} zD@sg3^1v!oFzP;`-Ve7W;Zr>sax68W9%u$)ouSk7f{HK9gg>_{$lu%n$WQkycKr z_A@zXJw&3XomH%9Ug3m3ZZB{sI`d0b-;~eCy~WX+sQb&i6z752_@~Fo3QX4Tt#suG z#txbCu_mk#5<7Hjo%?@(r5mlrGl2uS1Vc1gImqa~q4M1cr@1ONv8gtY=iTr=>Z>Z( z!rzFsNTZ_K(I)j&z+*FL$;I1?tyLo zHAH&5zMhJPK6;c>&xme-ar@2x%ZXnV)A){<^5)#_Ab;Y^C7H2AZ^Y=;i0c{8+ZU96 z!K#txu`i6I=^IqaFpmJa9~soc>fhsGkPmEG8oBID+5$P4j18?uXrgUaC9%-HipxR( z?~jF;?V!gd2Z1o*k2bD9R^L7m{(n!J(#1WsqS5Kw}cMBJZ`y>yyRZ4U)P333`NWI)sqYfNtz{H=(KBZrP{9op47pT`-#pD#I|X5_kE-g?tHe73ZH5nn~95C(t0 zLj_0W|xxR|^-sIE>eJ<%-yUmcAu{y{&K@E$dc{mberZd@2w z-YnH4snyrv#i)}7vDxC2qjT@NQl2RqJ@$qY#;Be#cHz^pZLb0(H>3i|x5t*T?e!pm zH`n|1ZQ;|);pAtRN0;KYbU$B>36c4HtMePjH=TQac87WF0Yc%dM<5&;_k)5<@$^x& zC2O~Kt_xRrE&1(He<6zS^-|#Q)4<-3`S-sv{VFDMXvP;GYm#Gn zUwVGpwlJpfecZpkzFv8}9Bx{Eyw3}=)xS_5ir+jH=i~sttS?K>$B0-{O8wN=6RX|? z4P%BWi{4br=-v3$15F{JBuz|w^}wic0k8gcMs?m-`D)tcRg7Q zz2b(kubEt*cf!B>DTk(?ooI|<3W+Ov7;q}$6Lk)XGJ)H`UEX?BKlgLK%1D0leJEr9 z0^iqBZLUappY3p4oj2ekP!7$SEp>bIRe%53ZT7?b%6#8=kzvJn_uNFNj^g_|@A31rq&*KX&fx8U*db;EO?t{CFE)Nol%p)8rX>%4C21)grH<}YC0ZsTsgz)*|Knp+nS$XzLgy`Wlqvs#lS zJE^!!dX>W7+x=|kJyUL18+EzH)P@bsr}b3`n*9S2$qGH--w2N*Oy7XXiXBKH5(>RW zj$^M#B2FF8Rz{VVo=+7&$&5s;7^w3>fx%yg0Xw$C!e3pnz4Ihond~5jOfpaepS~Eq ziiV0G8Y{u9v00ev8IHT7Kxd<3J_dDFc?eteX4EP{a`8*$klL!`itkbD%HwlSDB;yidtSU)EjHsYQ^NzH4R zAAJG|tZ&V=TqI2fnxV!SLI{i~wJ4UN`opOxyR=HRC)wxTTUen3N9hO7lb`Ldq{8jQ z_W=5G9nm*B&pevSpmBmdNPzZ(EpjrrT2J(umwyzM{i@Igz@Ij%(gB<8kzchS&IHK; z%%6@fqS6DK?TH`q0j2(e*cK4C=?2+Vh}XJgQYZ(3(VA4_Z2uy(;qPe}uN%#)D_1tgcIzNJB#s79; z)8(6oVidZCo4N)uI4S}^KtGPNy1fECC}E&x;SLF|zSD{pu5&NXB8w$`wxh{PSf-;g zn14kQu{<}T*71GdVWN%uQsGBoVvHqzKUl+eewrYb+;B+8dW*m1t+^mIIO(Fw$>#Wd z=YgPMJOA`3%N|RX5u{70$GFP#o43l4eY&VrXITzH=z2;u*BpK!dOPwSMr#DCG%YI# zsZYI-Szf4c7YD3r9|!DeG7F;~;#X%|;uT8%WEKuR##1dsdG}#nh)n>^8H5bv8b+z$ zH(@YY$%BrfboyN2m~hb4$_@FwfSQo5tq81q`(d(p;IRf;wO`p}Et%Cs?;j!J0O7qd zkdL#HsBYVQI~!mFcYigO20B|r(INimk0er$Bf`?i)Gb8TkO9g@8UNnJS4r)Eh%rd` zm$+19jJ_U(J*caUIu5PO%ooU)yuQt2VQymE+F%SHrO)8CZ^iQh>9t1TD9f@rF{^jUgd1wH&$9owIGcFv8< z#&zl5uiv-E1--1ESZ=7GD7!oG5w5hYEgNW}8hHPVM=;>-29**?^)XJVaIj5+u0AJ% zfviK!jegwee({!LU-|ZDaz&aE>>Go=troSDmA99#H09FsCup z3~RV@(%SJgF1q(cRzU}dNMZt7{Qf}t@21t-jNx9p*$r!LO|OPCw&Mt5f+pr5bY%te z-+s5|y!9x{hI_PZN$0{)CJiAx4s=D67Q!pv?hy(*u|vO z64axM4hU%V=tm6hC%AS-WZox7Aft!{r&3J_7OaP{PS0q{%A6ZXA?~Aw_~;5LM9gWI z5ha3OEvjEoA(;``qCf%M4IM0EV5BHjl^IGpe~K-EK?*T4(%AM_UgDh>!zL!sO5=DF ztp~{F)j`HulENm=?g*sAPDS9qVc^yqX$W)~Iop^G8=i-v^$jd@Tn^wmD_v+0KtsRR zP4U9lfJTgB+ZyTL;?%QC^U$j5!%7*I>#9EWFXS`jMZ9)93C)a>M}ij*6w0j7^qHL8P|TKEinGr)L6qMn!G<7~(Z-kR z;HX4Jo%s@KE;97{U~nR@X)Alpl>1_zp+uGHprS9B zBhVp=Sq1}&NH`GGPlZ5LJuF3bO%7PREYwdwn-Qb7?tT5XJ7{AiOW_V5LX<}r6lT-S zzP5uW{?zi!GnMO#wvYMaQ0Plguo%oXg>f)L9u_3?(cuTtd`qnE)=XLzzeEb&w8a}< zmP|v)KsM07LmiT4)HglxJ3*lB2URV-PRk*KnOF2QhQ}H-ydy;Zx*Wf(ZK5^dE~**9^05Wt3d^Ty z(M^zkGZ|2JmA}R{a?@hmfDiY$`zMHB+-Fh5j_9vS#|+@la&Q=f_clLHbq`(Qp!G{8 zL)TA#m-!t7KxH|sAj0o~8`D@sql~{Bx@~!qO^+z%Q&s3EtF+`0 zMMDadji$=(_tday9yM)7F2DSyPS^2rpeVN!XRlvM$tjrOk2SVWMj<@sbZ#1{%o~qm zJB8Mi>ty4}9+~B%BgS~1c9!j-FM3We5O8K4Fg1ppl?Wlx%-;leKP~NNU|`&6*IK8e zeb!KC&@5|I;flOFINXQ3eqixlUV4~R&5|j;m{eT zY|kUT9dVN=IcR|uH}{SMo$zXzF|FuxA!$UKHQl6HqFSNz?M5r)g=c#Tb%drp(>rD6 zyjphXs1osvLVQ6)Z04Xz&MfipD>RbQSY(mgJcQYC_w-IGnje^aO>N3s zY?+WFIH@CRBC=z@>5#IB&||tA267V%6CxxOM+0D-X+Fxpj_nkSsm2V%&nje! z#lHzjBqI4_=-=^*m-FA|hW7kZZ)SC^C+WVg`}lbbf!q{tgk00^*e3gi;5) zmNkwMTqzT9%6+sF$Wn&-XDI>6X60uM0kJ^6+!hE$W7;oGa;Er}7!&;638f&8GPf-*PH1!P34vs!h|=7N9vh@yb`5~MLBVNVoF))c@H z`s?OR1h6(}qRhTP{_u1%a~lTED#5xUW>8%Vs>aq@`CG@pX|f@FTvf}bi4LE}N~6IG zfmVzz(6o z{t5m+)u~#@EV1{;-pBB?MKo=CdTQ12N|J>q4du(?s1YpbgQ&ZIVLFArSD-|YE1Y9# zRe-ZUEK+SnT*-kb?mrcNg}5aJuN>xW#;LS|RM zp7jkwa7}}^w>7UlK9P8dt}AO)g2rt-E{#1p*q8i)m^oh}TBt0FK&o#1(?rXLqhrkE z2ihjx*sgqBws=Lo)^D}*Q96xEU5KcO#G;;z=NXp32(Gl>v=&MJGMpblK_|UO;Tac$ zNqp8eRB$hzc#M4Hu`~zcMTjc9th>Hv$n-SwHgK#YLg1mMro%!pTDd3*pgg9gz_K1x zjbzHBF|ITvbMR)0BZOd^dQGxe7ry0kFw4UaQw%;*m5iY!eS;1rayrYbKcbTA_07P) z3ndLjDxq-;b{(3cC8-`7y&(U4UUKXoMe;T{X?o+8yW<1$>lnrd(SMpOj4dx8h=jhu zvdIdOQlcqjgf1Bia8CwX*45&B3eK)D9N_A#x3eAMGWJweXwN`4-xI@WiIee@^s>o3 zaf0EU5=;}^_LhZAgCSlUy!I6_{aY&)0G|ORkV7*hVWZ-mpHPRE{(%A?XLtPF$gJJ}J2g*d1gH!@XDp2s;^#$BwuH zOqk@v8iu{)&0T;{eFDUN&_2UFo*y_G*~P4Nf^C**w36{ugU!85}p0E^0G#%rTFdDQ0G7h?$ug zzyz{pwm? z5H>b0rW(n}_*<|yphLx@iI^5_keMCYN;st<|m*mfz^Y0dr z!}F_g48F+tGXgb4pv}2NU=j;cAU>-T5IuH|@g5~SAi~G`8VT7v&{hw7Bx93H{vXNf z#`QPXd*CC&W<#R_V=&mazeioWKysxqxe|f+wtOCdX*C)v!kFoeORKgv zkB76=1x~AiwfXqgwfVVSB3X}*qN2q3HDo(Wv*bc5*eq5hiN`>_=KOA_R_7F2d@adq zaA--ngZZSHnYVg1aK6iLygKp9vzJJSA#MC8jxCf0>OEnvNEQO^eNN@&m2q=%@#XFN zqm&*cEfW1?MRe99Z5KS>L43I7acg3}YR_RI@8b$!O~XFvt762@*H+DEaILez7J??3 zeUfFR{AS4-JoU{0__XoPXNx)Q>Q6lzmFe4Yxo!RDJt(ef-*EV+$s-nrYDih5QzoFI z0RfbmbS>vEw3Gci%$A>HGey@o;c>{T-dVXJnk|Pbvy2ivc=QW0S5TkwX`kBJlZK^wkG1JWxoBVJ6q zHOD++D|O$+bcG2Z_^p?w@r+!{lZUMgjK>HUn8T!tp>}qZ^yuzN;`As9$39)ZC{d9o z==|cT$$!WDHGG|MDPw=Tk<(qG7_fC^R2!&sR|{8-h%$UGj%dJzM4tc|OKjz9QXjkI z>-p6ZufCBc?yMXadNKMNUgEEp@~N|>O#DEvE7r%Fx^}FdK4aIIN}U;akOi)&xI168 ziW>4U`wmj-6*$3COQLP-(jEIzHV++Rhm^SSpLQda)I+d_!I$#G#G-UBwdmX^8mc1P zO|@bNd#}!a`P-1_AAAQ~KN%&)4Yg%bDiQu?D>vXdnm=@#Qx90C{Z>lyq_^ z&k#sr3qyU=I^s;aHjucwUJ(h0aFq;e7~*z^gx3M>4fxd9yk6sNUy#F%6y;o%VhF<0 zg3IAij+rQa$7V?#nZSHKrc(BH9xxD;`j#bgAnondbk$Wz@k6`BFk{7`hX>s%ZM(D? zlu9;rH`rLte4!K)jWZ7*Vuv`FC`ry5l9oHddBMj+D_92;M8SlN!5LO|kBwVCD(2_t zkq?5NJ}{CY;zvTk)COJJy>ouM03?KckoD{Aem!sNBFp<>o;o+41L z8O-n%-81EUhWo?gZpB$LyjlAS{+_bi@(!5SQthOys##@GKcvF9++lYJqT|cjfvt8b z@VT!+n+a9!PzU|8XsJia-w5Ci8R5^G)Rj8Cu-*Thgu=7I`LHWVkB?@YF#`Mhz_A<7 zm`*3yC2eZCR+>X^*MO@2`U(mu!iT~fIzcBDbZjwiJwkqpKzH=xjpWwAS3{?8C952< zC$Xb|w00!anPiPT)`iL=m5(*fj}{`YbraRLS-0l>^S&>V4!qym@QKoH$f?-ER^GZ| zOw5(J_!!1ERSVB>1kBFNtYfgL00G@JL3>YC$>`6Rs0}g(Yl3H@{7**+p>%MDk2BDy zNIlct(*x!)4LlwMp(l-5gd`qowlx?pQm+H5!K2oq(en%vY=>E!-swMjG@QQwwlr@U z*yh%V+@K>?p>n%+RfidSWFCdryXaERPJK{`D#8^>vD$?*nLFUb1p5kRPZ72T#d@f@ zaj4;91aCFO1~F$WVK3|XxeryRIzYNXoeM+BPi{nyw=yCxwvU`1wNq3rD>t>p4Ip9%tF3hM{f}(ms#Mi-XF{A`Q6?=;;$co7K z6YaCe+>UTl79fA~^^`jVcN-C^-s+>{Da_sGdTqNafbboX2c+^-4A=5#(#hdvKO(fc zlYG507q#NL>|@{Uc78P6B~d;9#+Bgnc|ZpA6q4?BqWx-iLqNZxR&+Yva3Kq}yVr6O zX!)B6bu2fV$|atPm=6K1Q3HI7biR^ykH8_RC;PSoL+ElNzQ|8+{4`l28$v+C*A~|k zd)LXJmbA(rrJ({TWAi})rf>LQ`nsv-+N#YY%%XgY10^p*EWWg3__P_*`(w0 zKP^txQhjpiK9Cgvan;u$22X|*Pw_L|DvH8w5d>V%i8Zm9kDV$&rBV?p%(LkidJ8nM z=*KvAt9=|LCoH$VqfYa#G?rhBHaT~dUkzAfBjr_Kxc48_U9-HV z@!Gpj;=OGfBUp*$7heT9-R0z6#JS<*I`EV8*5my9FDfL?Mi+m#j-7f%x+T zB!4Mtx^?aYB7x_g7vPs$mp;Lfjp-14h}Ot^Z)m}+bB3#dK&dek4Hjye0 ziUTyqL0F_7vJsTteVK=Q4sEm?U>dFXUIY8dE{Ncw4}8;%&z;uF>GSJewq;^&%Iy3*XT|{T6ad*hk~IH$!4x; zlPA8K{Y+cVPkaETlPN|b&8L`$BDrUr+>Ua#$qkiZ+D}hjL(Zy&=_sKlW2n83$x(Rka+LX5NNzRAR?yPLOw=$eMWvb;dtFcHw9C(SZe_EAHZ0n7+T83TWP*t_bL%Qi)&}D+ikkf_8Fa^A_`Iz`5b~qE4QElJ>a>GrL z&j*_?$}#n5yr$vHM!<_ynj&{UsgqL%y!eTfITcwTs-E~kXz@vYrid zJgZv2?FNY>yDlQ)Nxt*aaJM9*<& zd$+BezZiNZZ@+`uM$1o5u0D=~wsEqu>%#aHw!5?1VuDO(XMpavIkD*TP_c)s63h~} zt#06x{4F$%84?9}WbuO|01hPoz+{uMlauM^#6wd9zWTNo5zhvwSx&f;`3z|T9#r;} zK6i85DMnk<^@IKKc03M);1riUsIi1T@RIJeV$E(0_ntCWlA>&WxDw?vV8mOQD@2jc z@3LaBZaI#{JKvgq*`^Z_OlU83BHpbw`7b^0SIUTt*_SHd_7qu`)Ma}1E5LZCP+&Yu zh}7TWoy>vpj}Cw0zu_IJBs}SjfPmZaXevdg;=*qoiGfk9i~4v){yjV^{9jm}@=?0i8_PNiUiFk}@# z`c_d6i_1l#2$DPMNDN1whZ;|d#bqb(yVK_|cA}Fx?Su`qOezPYyuY7$BkxKe@e-r0 zfIuu+hANzUXnUb(i&<;)if_STd{Mo%M$9ONt$i!xgvxuw!`BMyV1N05@H?eF?NBUD zN3;1IwlETSA7*lA1=HBIWnzD9j1XlYIziBGDKEB;+ST>z$JnOLA=lODc^yHpSlfBW zdh|&wF9BJr|GdNExP8v&41pp+{1oI(eCQR6AG;rE2+3a*)jPV@w{E}-YN%uhY~S2& zr<2al{i0adDoW@e2A;3$;iBVx_57(_7M<-AYhAuX5w)M*j+1+2$+r-4j+DQh;S4PP z6uHD(-N#}IrXzmK34Asqwz?>>gpi#$1h$NTg9hztrUZBshg8W5J2oUg5x`x|$YpezJ8SY-VDq%(Q%^)DD8lnP!BUV-Kv`GYA z-lUvoL2KqoQzZLJrbiRfjQZ<7GX4V#oe#z_e0r5`4>RaEKQGm;;cu?)zS!Xpze6}- zm31N&gG;}b<5zxGGqR|Pa}Atl)pw_b{~AuYSJH^PJR|c`6Igs{Vt2Xox|$@u6}-GXj`Lz#oS0ZK?ojIms&`R*TBkfl(SkaJK2AWv7-BkH~%b-%bW$h+3x4t`x-uxQVjqu+W%bI= zwLO5@6XG|3>|}lhXRd|n`=&7A@9QL0>Gm)qTkX~VsQM#eV?*aHFV(F7tAfOrK-?%L z1jALJgJ9xHyQJ{wESU-;3afJi=K#(I;uL)m2LcEZ?UYS#7 zh&0h*8p>bU%Y=F=;H&HW;Xrw3A?+=8L+mj3oKNY32r2Oo!(NyArroGw5C=10`8g6@ zGo8}wVlz4V1#-@A6Mc6$Canzm#emM40DA#3v zy?JpenEU$~w#eRKu!}_a*H{oZ($YQO@U8&|a*B2Ww94cep1su-))hL_b|U2IpZAHuKx}Sgg%NO(W)a~3;ycY>JQlgluKGMbuX=}m+f z-otnItB{0`_gO+W_@mQiSl%nsZq~gaAKsZ%t{}Z`)(kn|BcqVpIM2@@{bdk2lfzH@ z{?}jm_^`l~Z*Eay{gJ2Li+8x=W2PZ{(7kCv3U>e_J-9H+H+8^m)5efeH=KER>OVR2 zGPR$x{Bn>PGo_wa-@W}@0`@&;-ii`7q$_s^)+lZ+&FdK=ad_d(Y~9^oC5!X8#B#MN4^e(XalwT zpEY3IDea7*4MM_l?<=;qXE^jHgr~I85a(ZJd}9NYc*r9H6B(H+;IO;6ubV}{>nl%_ zDb2L}JMRa1th+Mo(8fwx@H|FAyHoEXr8Zl9%W>_Wh0(=K4MCvDIYhpK%|GaKNL7#d z3Jnk97#m0BWE|7uf)iaXAv4hwaYQ2kgZXSgqoJCf54mtSDqG{3$xGQQlcWx)>P zWWI=uM7z@%bkS#SwcN8ub3Q=jEA6N!dN*{&T6BHn=uqUavP+R1aHwCHJ-o2i8CE0* zL=1uY)Sv8sO{Oh%6&%|lcSDxSb{8wR4fPhWf-ej;l*u#?b$bFN8IB5P9~~03L4tYckPrD=nSJ$snOeYu z&(!izW0ajb(*h}|hxdSjRY~|(?A;`q=NBS&`NrH2K}G$zYcw`RZe?cf4(?K?z9r=G znGjwU7XxK`GaAY*P%)SofA_A>IbYZm%J1T+dm9I}V;-W>J_b1RQT%ZHjF`|z^c#PJ zK-glz`(54@EG_bx@b6^Ea!;HjJ%QXupWH;Jap>}+$HUlMbfZg9OM$c$h|*V+12`yR zL8@eGSU4UQlsutTIf&{Z6BSQENxK~5T_wHEaLa~uDvqpy5)4(kGCsUCpx>}p>_!o| zzxgKkb~H3{M4Xs!Tq211ol2ny$B0ht8Ur{TCoG{-&|<}7z=Xx2dq-LO-Im;0)zG@| z(E6rk`Q;@7MiU{^maY?ZVRB0df=#2I?Dm#(XO{(~r|i`F=$iod>v{-7!|KBPL%^V@ zAJ)a&xJ;wXy`oe#{8MPynZh+YJ7pqEi6IC3#4^AQs~;fI-f_@xxM-Dhma<@Xi~MUXMPD+C?oKxF|>6M|AhwnFIms zO1fbtBaAWBfjxbzW?Wi}HdZL`jT>ixc>i0H*`!UvAN#=0w{5h815|ZnCF3sh8DNNMpyI>qAShBlRgVy37Dcwg0pou#~~qQ38$hsIC3=o)r<9QVhjx{=j!<93DLmd@f)YYmTzl^(WRZV_8tUN ziFgPRy+d#+_~CGv76;ec(7<2`Iwvm|j6)sYu-_fjz$X6mJxWWeZ%bh5uj_K%i*`PA zsb%>VH^+~PjZN^PQZ=5zxgmlz$K~g5c9cT`fS-#%JW&#lgaDNdt1ma)Hb`Ft03{$S zBB-+1XS^EW=5-*t3}DSqVC_ymNf&W0v4o=^T37*DF!)X(!6u-Zl{I2FAoF>gdzLle zF}UEZ0<>;c;X>TEh^pT;m!ea{g#*`N%WjNs>dj)+Oa&hX#BFPtJu{;sd3hPThVX+r zF#hS`h>zv`;eedQvx}F6;d@8h?G)-GXxq6hDI9h!*EN!8ZD;nU5XK$nEoYoMF8Pkg zpT?*KdeHcb9?R#l-*K)V3V+BTtK!t^erGhxduX)#B%b~0LF5)PJJyfd3)E+^xc`Qv9nWZk`N$7_KT6o z^=DKIA?>li#_v@M?%IZoC)fDz59MduY`-?kP}W@hIVPq`pdm}<0(J)N3ZWq><^y&n z?Mk3~j}tvnyyZ%Pg}^_BKWqMb0k{de3edTna1Nt|>_5GJD%czLkh_!UsbH_f3$x|I z#Y@SNM1Y<+6L9x7R7p^mK`!Q}3kj_ZWC4nef-==gLMCdO|)0WcKm z-(%?M0n4HrH?t=RLnI`xJLQ}^+Lf&pUhCam$=OrSEvb?het`KKKjpKo!c!KZ|Z zzq1oSsWpy_pHsgt!8APSG=*eIy}fE8RIz0T9bt<)vA(t@!Gd4~V!p7iYK6a? z7P~)i@L_2?r?nVuPzIDq4g|Sj;Cn0w|5vt&ujO>N4ejZz%5DA!2Ovy58*c~?s z`q4N<$BOC{%s}zE!IGaKvVP4vVbt=4_4_Xt2vI^*t*5&*Dky@XitU%8`5FZNpY4XZ ztXv4(0foP%^~fnNH^@P&uq0)$0$om*!;SS&h!2F(MzUmjPaqu`h35-l@Rl7xIa5b1 zlm?&&RJJ?>Bo4DoyiFOlUVej3{$6fktjeKMzPjA{VMo)(Um1DjJeowPUbcp@NaQaq zB>dEi^K9;XS}X=Diq&Nq4eCpN`OL>XvG2RjtsS^C@(qbn6?3X)xt|(3_80~eYJl&1 z5U41gKz4v71kn}M7X-=!kUP9%0Eol%oq+%-u+j+tRDwwnR^aYyDLDAbut}DPJzEn( z@Rj}ZlS15(d}8e>U%nJ*e7_2sLJ!nI+fWu5X-F9akw@Z6P_I*XYF`hJP-TPd6I5`x zU}C>$ijhEOTcFVuj<0^|7+8C^h10+-Xag632hRcz>dly~{4yw{U%+&Y0tuJ-GC>0) zZ`XdhxA}#cHT#J@tBwBT30i09%@0Pk%>6Y?KOKS=rBTvXP(%i$n6n35FdZCQWCX$> z9gGL1kjhsO0=OFI&uUOlV54>oA#?%w9&?Y&ed0IC0ROGt;;9UD=1P-iT{EsnliVw* zVWv87MzeS(whLGo`A4C=NhXijD~}}KfWimc`7ZzQC{q;v@T8@)`08C#&lj((_yi_J+AqLoX@`ZBd>A+ ze^Z6)hqLWsJVu0FvT6PDZv}1*K;`O(DcFfg9VOmND(mJ@MTM$&S3R`HVIA<#5k%{3q z`bFG5t+E#%uRq*-p24i!|D@jM0w6&K#q2}zPbz=z*m4Wi(Vj7AMISC{6nQ0SKl$_) z=~K3AAlNVb;oW_C!;%F9B(|;V;)%_bj6-vE@nEF9^O<19BT4UM+W|= ztJ(H9+QVxfsS?5CqpOr?+BCVZ+KDLIK1eK(Sc61=fMPg$AW$4);XmGQfESMd&Ez2q zPA&@J_uDHWe~dinYqDoQH->~Y^?wK415M&sub`Ur_J2)Zex;Ji_P|ukm|YO*-5H@f z{R67^s9r-UO4?KIlOf}!{bcqE{S0Dn5|@{m!eeZ_HvSjN9z+)RWpZ54eI%DpD4BNv z5v2ZYDi^xVOxo8aMtLhz83dK_|<6bOj z7Bg!jTa&Fk;^BF5zKnaCMYP zZ4dksAlG=G43%YO0ItWue4@Z$&ioaD%iQ0*M>1@Kv-Tt?pAhGX` zE}g+6AAm&oMkQF*_3)no?^7GtCC}h|=#wLt4vj=z!mJISo#PUueq9kR<@WnW7@|C* zERaBAt%79qZ>{BmAC)C5THPkn^z$7g7T|(t7a@RV7NuG)1xHLSadzpy7=OMvoL-ohm)MjPJibE_Cwk z=m>_dxqPTF3g~LK3(R7d0yUG#x?DX@?{Wr5e)Pp4Y*n04P-jXPpoHPZ#;x?4*xSVMtFnIS2@=1y2$#@%93%FS|6Hs?OyI@p-C95& zfzxa(x-gUcW+fpj^_`jYeluscxMSOTRySeL^6qrnodN!`YIA&`059`mNr*dRt#WM7 zI_AbPe_ZUDh^-Iu8X;I$cPOP!nk#4sm!~|6QbsHQdM_KXz-sI5btKvZ@*#S* zDGPsnbF*m8N%P`AqSu*Y_Uf79N*rcIzHPS=pB$ixf+cWc)#87mz_0E5!>x~I5v)ds zB@k=8Bi48wo*r;p*oh8uS=T5el_W9{`eFP7R^RZTvn~}dcT&6*tavp!k@{jR4Edl@ zy7zcV(0F%1T$dY<>iUOdA4{kn^bb#~6McWkPt8pd_vu>-rx1w~B69)#l;jzzh}w9U zcXyEAl5bWH37#1{-;-FtPA`7ne8tbc?t;wPD2^ur4F6|A7)tB+_H5q%H;Pf9z9_qtaS4dsrfmFNB-Xuji?L$6rsmEJtX--+)li8->IGDU9b+ zkrunc7h10CW+D9{Yz>$8!YY|uF+JK+KB4+jWfEg#HS&diIwZb3>+`S}trM_|JAEhf zA5{95!xTrGxIrP2v0R%kHh!ag9`UE&A3Q#i#!F11&kSNrjxL~9fkuyzn zMirgAeD;X*-8Z;&tws{ls6IP;?4^)^ST#jKo(x^h4y3huuB-2HAuk* zpY#Z;go|iX1nNgFMplp6F4l25{4=Fb-E{`FZ>Zjk4+50LUBux{M}}S^mdJjJglpo; z+~QN%*t+(vB`*gP$V)G4UL@GN#c}Vu<~4_ zI&Mj*tEH_RDu7YZ`}X7vZve%@8};mptlsKQx#$^enH~%cDo9`NrM?_GX=e3HKzTSW zxq)iO0$orRwjxgm*>(5o1ZLlo7g&)Kdye)QY-Tz#!XQ4O1`$#4op%y!+{Tzai|E;= zGMv=VUo3q4>%Xw@{xatT5Mt-nen>H>|77944f+nI%xgCLBI|Upm#5EKsI=--xkGRK zI+x~xZ8CVG^e~z-=TwK5&%DNo(PBx-cc22xpgvEz%ADUq8KG+S)!#7J;Q8NLcjY zKuCUTnlvlpbIpJx)~j%_Y+Cz*I`cJk`u>tuBeJF8@Sr15*Ug2Q&CJC&ekz~7-0`4t zsL4tH+~Ox3yDx6s2zD%I(u0CA4Us3c8_Hxvyd7P_2X|Gdf+*jGQ81_zi9{}4dJ{Zw zlIu1O9wVrZd9FB=O)3!uLgMfP;m`Rgx2ztDDvtC%mMu;1x{|m|w)!MiSe#T^^*qjC zZo%D)WB)HCd}!gUs9&1v6d5BxBBDe~-p8SAENEd1SuHz!L9V1a0+d8zxnr0Wws57# zcgskB31 zXN>Vch`b#jud!`&d*8K3`$>a3ZgS1{;&9)MDS9490AZKk2O3d87|Z9)gVu%T^dDIK zt}*??-?8{JCyZ7g7SBE0^tDQtVEFVX5n0t;gRbMc06Q{F>RVG~CH1&Ld+m^;Nz}mH zT4Z%7{&MH{1`{-!giCE~$?15(cl^O&Bou{($wuwfRCMA}Gb!1X)1_SR zEa`7CJsGN=@B%*NiAqYM9w=_LzAAWJ_#9k6U|?KVIbt>6Adf?gLEx%&0wGXE@gx){ zJudOWV72w|kF4deBFw(nqU;wY!xPdbl3+DOI+%2T{sW>nC76niNFU5q3e(12&>RZ< zhR<*mIk*R-H3qy<(bANd&+aHzg@##UjmzI3y2o`!AFpc*yI7*qF_pNaT`UvNITm6; zF4B)3`~#l*^YaZHf~2F{Va> z+My234L>zS3_LQss+Q+KReb<6&VD&ncbjY1RN;ru;GbdQt};QWid27is(tiY+_C-s zd(I!CH*76EGQ&HaY+H!9`w+f=XaP}HA}Jpci|uD5DVud{A(FwTB-Bf{6@9xIkmFz| z?!oMd2keZo?2y_x?!i}cIlk(5MMseH!aNmK3@Ng9jl}*uBHlQB%NE+2rG&IvSiQeP z^BhlLe~0F2{6KmCK=UwaXzrgEvXW^N>fz3$S51U4Xbj>(DD%u1O!ds*ajfeOLAY!L<4Bi0>o|Nz^*hwvEAn41cN_sX!svhN?7v0Km zQ9Vlooqn~lY7qx@S7ur+p&gyuYxNHTi^X+czOK+u9DZ(+GXSL6{hhzx6A=!wWz%^K z2lDq>l-CK{PHChi=;gA2`wYe}-n-;93Mimhx>GE}Yv#^yqKLl))-fh3mmGwHPE zC20zDn9aiSl(_3b-UZ{T+R7a&hXCFM(^x;cZzFw}Xp&&C_Oea|;h@nQrDOl#??b*k z{~Le*;hF?F2;}ekawUNLeWC%PR?h^b@PE$VLq~)Coxfl84dMBZ=zG+<^O;Mwo&8wx z+7cXJs`m8PsxHm*Cv&}`DvLWPjrE?QsqnFdTHUSaj`@*q=X_7spb=Mz_G&Cf8A!ErsLLx)U&d9YDaJ(?BPA?g)| z<}yY`)}ZRae!s=4PAYIMu=!OMz$J^R(Fr#Mw}t06Gu6`~SR)&gnY$|bsN**)td1(mUQiz1V<>cHlQ0Y9>YAB!_VKardzRVlO>1$UWn<-2AF z@jJ(Q86KqFI8S&KPw@?%i#ZLT!7a?LA@F?bUZ?QJMr%!31OWOWOVm-99-Ucq-SqK? zDbu58u+8=d(mKChxDK}rI8G!Z20w+ox6>mdb-2CnNIXsHmZ+VTc~P7+*B=(IqASb1 zOE9oIN@l?wp`@?Bqe4(-#vR+NE*s1%>bZS26!0z`LCbH3+uC z>KaWWJKfk1v;wxii8MCsQ0FD1pFTJ=-H7`xg=L8^Fh@lgtNoW1(DuuHxL;yfFALZ^J@nYC<}?={kWCl7P21enDp58!dGIA1JWVXPOUHMob# z?;iz4aP~8mz**mT6Dx96I>XY1PH|cp82XMMxU;Z!oj-CIrUv^(e~nZ5Y57>?Ej^@w*1V=9sW z1@fP(qC;+YcgG$WhZeznKHJu2{t?H&oU@{Ef4UM@FkHl&IXKw(a_I6~!pu9^Qz`o* zq^Z!_gtL|{^egShl9@!Ss4sGqx?b$(CO)etg%=)O5Y3rcRbD}2e#2a*KY;|X%!2yl zC6GoT3-951n!MhzIpVVggY0d?VSQKjde;Qw$DCy2DC#_nvZr6No0;=R*tR` z6}R#X_v?uvzT}ZK6Fx904tpg2@c=}X;y#l11;LY=kHl3^lMS|u({K~&T5Ngx5G}D4 zVWMer?24c(GHg{@5aJoGMZjg@lW|E;$B{@w5CZ&GB8Yxzii!>RXFQjb=*0Z{sel<) zrWtNp7|BoIED?yi)}xT2k%;6%;mVoGOnBfch0&r|PhjN6=8UWCL;{>f2&FJp)7E2MQ&1M8c!P^cC!!HSj=)jP0ssVT6SqEjPU+`!94P`O|?Cz{HEe-z0!Z z=%fFe1Yo_2!r*U+3MX$!K<$X842|_gB_Rsz@JUI{gJ>W@;#?MOgTrrm10(DL z;q5yVxI#k26;hC;>74#7wN4xi(6VS4NBp(R-@U-6dk1?oz%Wbu3iTD!=p~{arka0(Z$GD zSrT#LFPR`IRT!r|9UAX~*e*cnBk1xh># z*EKGip2f-HVciblre&!Yq@}8)C+Yy;aXgl@IlU$DML}UjO9MO4eEc{1P5&6K%3w$2>x$2LHA9q^mE@I zo8Wke?jjAtb)r4+GfE}%p~u|h6NMRa&CDDk_{15>;FXFENO7k;nO_6d8GTOf3!SfLL5ybgKjc+gV&XsNk8NH-Fsz42&ZY zEhG;omdc?%gx>z#g89P;0N{u7;^YgZWI+NqjPOt8{V5nYz}s-m!nC$eOVa>NGKRJj zB4G-7D}`O67i&Gn{n^27qK4>tQP;{pF)?Us)$%x%E$4_Kwq;oU9(PUQ zURfIxz`g+UAgBCpV3g>wpDy5f6UEBTeqr0W%vPBj<7%rAJ@BA%+imEXVs-&{*mnFf z2(|-Po&fYyWIcx5T8LWfg1#7GAzJv5wvu;69C4f!1xP!Mb7Q#s$yKU*no|h-g^ZH^ z5e?4!fTBTw%%Nzr3)m*9+~z>Us(Tg>Ek(tHC)=vO7iSwmqg}il9!pBk^UhK&7|w4L zk$C|zhB`q~L}Qh8PLf;OF|d-W$J8>a&;PC&P`HEsubKhxAI*U0QwS^hhVl2-&48O_ zX!ep!{LU>Lx_VwS=#YYDyf2*5l4guIkJU5*3s10(#O!!wYn-K#?>t{kjj1hDM2cE{ z{l+AJ+7d7-q10G#hn~D}F=q%sS&3oh+g_SO;|kud$}H)r2vkVppZBF*f5@>wb54rbpt%*V3$qK;4Mr$J^aA)he~gMnFaLu?n1ra#&B&5Wc(p;u9P=glIQjHK+F8 zqrer<-uf2_(J$swD zcvsis?%7Q#s`cYrA5&KBvm`Cvi8Zq%F5Y?oD=gG&;+{jNETZyV2Nu%(!zti3`La>v zQe2OFh0P_cfw=sVSx}kmwvm-riP<`(qy~PSQ&6eK9-oy}spe*ducr2!%HVfm?RTja zezJ=kG&ZZ}DzeH~%h}*XUcZp#;M*#J%TD;9 z^kz`*(#qY zw@XG4$WJax$>q!~4|O67JyG}}%%J#q%=0%*I3dh_oQ4yhQ8N)3tvaCnc#MnJJURqR zg-8+_fR@75RbfDGbxOh|z9S0J^8-*>I5gr1Dhr@+A^3qy8p!@!tv*1d!SH+xLCBLw zzXAJu7KW#06}P9RFk0D|w7e+}w04FF#r4WPGwjB`9Zt7U$2gl*e{ zfZjnf4&C{i_7FCmA)T1!4AdSb3wtKXYOLa=HLJ6iX2a)&B+7i&S|NZ&#cgY$&j5ya z!0D%;&#C5P0P%MpBEAHNzMt&QG4U^lK^!Ur#c>SRD_chl?DO-; z{lPyS1{s;Qe>x1I?Rb^%Q)UuHf_YXQ9;7;U3!|4{F`=mLMg(!pAHXS#$oY8G3Bu$j z0jHKu?gSQ6VLsVBU@KF};t;L#cM>c*R?$6xxhWoHf;b$Q=_GMWpzN>!Mn4G1buUAq z%@QY{swUYd7gGp}hGJ{NST5dWYC9NNnnWT@P?WRTni;hL=R~p_r=&C9-pMQG^28If zz+dg58mIKVE{vS3*Wj?5rW|<)4@o~eiNih|>0X|TbhJFS8b9*><|QV$rOvaUA|5k9 zDen3s*)&o4O;3yMcSVFEX2s(8zWd$idKbKRBy?{97c?O=E8gN15ifnG$0q1x++OeS zy74_T#&0i=qg*Z}%2v3AO&z;EL6=GndjT>t76?=)Uwj%AJl{J1BZi&m-aF#S8;it# zRz07rs$H;S`3eT=%2gNUeK0-d&?&XA_Dz)9u6Ar2(L5i3m-qT${L2UHg8EvoP}jiE zP@o&YlocfBK;^**g)xmvQSp!RKt}yXd0?<&##)<6Qql`&01(8rvWEJL4*|w*92?j` zV_IhX(cvfHT@>yiIFhQCA;g!+dv4VlNT_wcaLg0Sp=N>OmNcR)PICl$=27p&n> zf8`1<)t+6&($77!qNicgTERE=F??Hta*JnB`_$S&KS_Hc@e{eVuiV1H9_<5OKQK`Z znQla2sk6B4?88wk8wUQVO&Qq~wdOz*9w>^j^vs#>IB zJI~q&N#SJ7ke}_nbtd5R>Cu29+9_||=(9(+_YyG|be^b;f`~XA38&!b8uju|Aw`&SdqBiU;L zUAe+zDPC{OIy>#nV?ZXa-M!NT^EXzi+3j~f56qlP9_5UDicGVY;*;GY4RhNNG?t*V zz1gEQ5ckJ>1jg()9`MLx&S{WU$zzSwYbrwf?6i*2zwbs2$2Bw>eE=}k07!G^XPve* z+G2Pmoce-t*ExPE(cU8)Np|+ z1=HF8R4KBo{!%G~qyDHA3x887M1-r}RSK-XEbu^94?_JhHgGK}IE&Le&lSa%-TM^^ z*t(OD^9o*}2z?YPMSe1CQN-*YmKgJTX-=~da;`+9kW|f}FEHm@07xu5(?vp_ju)%uQK(F$$GzdwIv(^8bI zVQ8oI;M6U{c1C|5hOqO3Ifk@=&)enSYSvXi*@S*(t{HnlS)SFOA#d>Fg(eIF+8`w6 zQ$f9p%9UUDH`$^z|Bq}TW=`oCsMSkdgBLHF=P`xmlHsdTG_A3;Yk+grDuq!{K863l zSbtEUw88W%Ir4|KIyJ>f3uCBdJ@|fdMUA~(#M%N0UL$jUSw%CGn8P1V@>?z%ZH3xGYz($U&7s_j`~9Re$KtkvLvP0V0W2BTooudOkN&ZyUzFZU zYK2^s^8dGlK?&;vJ@z5~E8n>g?wTrcyOt3C{jWTjy61kl&j-g-c8mx=bln2Z_oh2` z(Q+^+I{MrN4WjmL1Or4hnMy7F$VFX)TTJ^&&rkXjQJ2@c8iDeQtjSCp5D1C@QvqKB zvj8{r^>R}`pz&;Z8vWSZ<_4$5g{oTE2`U40toILyC1-Sy$VuEDe*DT-qvLjr9*I+_q&R2I; zgxET6er~RL%{n-`T0*&p*4IwM#xPxRm8o0Ssw6VBA71m;bB3sD@xRfP^@WR$B_ z!@G^x+nt#J-Wj+Nx9BMXSAXRnohh!J1uFg#e#!sk|FnX6ZG~{iY;nPtq zDINvJvH3e2vg~Umj?cmD3GUtN+q58C3VVxF;(LC`XELO^mp{>JT%mvqS6E8}$d<(3 zi)+bAc4CTqx~d5gBU!dB`YK8+n!KA|J(=z~2imkKgz{cpsDM=G4Ds#7r-~p_0yEuN zw3^;ncO;_WBsU}?iWFDooW-!BEdE|r#C%ad#)|Uq>xDWFKN=`6(~mfHs~drO#pNDL ztm|!Ak&d^c1y)W(W5l%R+F%JV(&6Gyq$=0HL}F^asm)dU(EiS9mbW2dEXtyjTTpCTQ>{$&U6(x8=%9 zs>|rZjs|J&iw^GYM(+6QDf-LW>#LPHq_-=M`!kTatCehS=-3454wjpB&|qar?u>0) zI}113A6fAKhqiZ&lB9d|HOsbb8(mdhwyiGPw(aV&ZQHiHY}XZUM(pSJ1W;eO1D0wg=Uf74xibykm*ff{Et-Tyb}v;H>vv*8{F7WM zNEPO%p^w_`0Uw7bH*nr={(CAYGsm5NL+Pu z>fZ)|F<-twpgny~;1&w58jzfRoVQNkLT z9R6@Jktjlrb0bXu6NVnBX!i47377}%Xf2_G2UJy+>ID=685`cGOTC zA~$Jau=g(q{2SPsjGu-e__INX=QV)NE?8Tl&3@RM0C>Vu$vtino;qZ`f#^5Yz(EtD z+`8Fw_C$rjo`~t;&-gPUUssCi1FA&$xRJ;-x?`aHnEo&#SYCm$C%;!<5(;tO<3v$k zz1At04H={d6xLL)*|P2@vVZe6p-2&gxn8bv<1z(+I@)jC%BX-q6x;qJ=hA?aBF;%r-8y`mVPMn~ zCFvnAP9fWV-sAe!Pvpwqe|3UM-B}SL+w&Wk(RE=rPgrT^(Dsr{x;x+Ets#aOw zo}Q(8M?Sb>D5TvY{%ogP;lK5bxki` zC;qH?cCCJ-!_2UNEMH%-tc|_g45exNPuCF3#G&f{Qy|PcWT5#jU_1^a5V| zSq;<>HGef0NLo4cNG-Kr;{wwOHjv+&7b`I`Yzk}Li!%Ol)n0XXI*D3hAug-*k{;i zV!a4l6@P11GQU{1FC_ia2^3iLyTA0Og&yr9AIAUQK*k015_Jo)j(OYda(QL8xXv0q zAp(vfOYtcYq)Sv4%>$xv{yKB}`Y^Cs$8A3^HoPt5jp~v2t$2!ucMSuIXPe~AykmEd ztvKR0m4AqfF(lG$3IK7jj~WFaE*JxLd2>I85d5|`#yG3gRKHuM45UM$@sLgzz=M>} z0&n*@=D~v!0fpn%1@Jv5DIFv}%0)my2v8{fr{=#E{uvdtjJ$m@<`P^DJ8*L4+`oI+ zp>OY~gQUq-%z%}pgb62C0XxtsR|*SJ3YarWhrVxm#*$N72gbLJ`%WROw>o`E>=;_h zApQI$7mz`O?aR|dBL*6)MLq$G1#qpLMLc_nd4A7qQ=J=I@vu*C0ZY@?R!OPp==`(8 zvyY=6hs6GdqEezIMhT*O!rtip&D^lbVFxfiACAwwf{F;C_L5NU<&r?IjuChAh8Usg zGb`k?tTy%|QB597>-(Ls-ZopRnxybdB)Xf6-A3!m`~m(q#`6>lHlA7jB@5djGvg0| zuQVIpXNYX|A3knQq`F2HeHx<=fBy{jMPPWm>xAs!7(DeKZ@S8G@7>{vv!fptRC$z-+O6xJJC|2fALn@(Z{jRMjGCqRP|gv zlgRQtTn`gHfCEPhbvg$2pqGDZH{1D%ov_2+{Kb&L1-nav@|cwiEaLz0IugG5gj5yB z{@Z5w1n`%z&Ji`fnv^2gyf|v?F;+Xk$_{1iO^l6Ht;a%=SF;0x%ryC?a=+n3=f#JX zyS+^#0>bXj-F(j;00Fe!HCR;92!qo^0dN)FSdNNhg2Mzf9>mcyI>Lt{QbN=(!|IQZ z6%(a_98*jfw>>^UrVdt`;o|+E=IhV@AuXsm0Hno(M@Np0=|yd$ zg;H~+i6EGoU+A^65P*c4msPcoVDMD!OKm!MzwAo@4Y}Dw6C&nt$wNaO{uj0gJE6lK z$^UW1@{wUSssCi5KQ)cc}x!4J58L15B>~ua1i1V1hb48{ku$I=|K^o zfs=wJzorE2e;(+2S+8k7cJ-c3rU>@(pR#Ntij)bJz(F7*v}}M9kx)Q6ErdY^Zax5l z+yLc^f68zDL?9I5M%=NDm_cF)BPsPh_^Wtvoe+m_v6KFUMXf#QAutl}?Avgf8LhRENA^u;kLQUddt^)7&zi}0?fA9{P zLhs`x+-62ulJ*&K%iFeN4&=IRKeFJ}FAA2r6Cf&o2* z>yDNl3}_dkBT-#Jw?Emppa6u$tF0SHL-~M_;KByDiQRP#;aj!=c#GCP;?>56+)h=f z_K!)=_UGp>-Q^BHq;BMIc$4Dm(~|kuVyDVqsp{U1KN7pY!q&%d45qF*Pz4wxMfcpz z)#Z>hvQxf!y&IlCduR^!j-PhLQqZR|v~czv5<(8mSKiN5V1%p63Y!9M1)UpC&wr-l z5&c#b2!jk~B5_F!`CTNfL2vrD?N+{wv?E3SxUsMbPXPlz*s;OBK{~6_2?8gyU^6IO z=o%0bH%wL5tgLA3y@%m$<`X zj?_GFX!nu*K;?DE-=*J8v=D-u_-pDqVt#fk_UQnmZ`dFUkz% z4P_Z07-{W4WstFZZ;us5HYg~gd+aZXEa?BST~yW}Nt{x=eJcl^nGt~;iuTK=BOYEk zxsu>Fzkvo>bf@6eO53*+_pgWqvmDVyT?RHqrk{@D9RETTOPzu$D0os4W1!;4!;}At z1T>7P_$d&v(@9wWnZnpW(pdIy1Qr2HS?qsV1TK46PX!UyQFb*`<7r)j!L`TLxY|C5 zZ3TGiB`PGOD(YYxVNE~umM}Rh z1yO`UWF?JeA9M%;j!Zy2eh`8q!*ydzc|o}0IkBz3czx5@-yf&9b8#q1>smW4%2KV0 zo9lpEOGu{E|A`8~bJcGqvz|`!S_5{8@Lbg9m>BFlw+L&eASP$|;mwx;JQrOX6+{4{ zAia`(JbWGJWi>pPevTz}GlqOS%cZa!X9aMd>Nrv#c67O^P1~w<_5y5*e9N9j;!~m= zdxZ-e;^Z_?Ih;iml`RovCPZxnEY2-ah6YE$1CO{p#+=@3Gi1)#fv4AMhD=Kz^`DL)XQU6&~pk&uMg{AyofyFEr6Bg#6cbbCYJ%5?~Wm+;3_TfTb@d zCu3_bx;B8lyk9?;KG#_LKYIoGid#%%fLTjY3=v-x$Vf@8<_2C6;wNok7PCa|pTFu# zfKs&3{QAQ3FsNHcAy(m@N=gKN%@)v`@JpX-30o??B@(CKe8F*SeVRr-WzhXfl=mC) z(lEEX(xo6c+BJ4VUte1^RmCv#3Qk4UVIP206if-!%c``s%;*Q!&o|;m%G(;RAq44` zhem{kIvE7A-M?}pLq#^Eh8drd9Uhy z6Qhk#gSwkgL={{hejdE#KFrPN5+-NOx*st+JamURTimP2D zzVC24-RjSfWM(B3vh%&ZV<~cr(Y`SXhTp$7fY+ElEya4dep;0y>Z1unebJ@;f{vZA zUu!qoMz%9OAo_68Gbx<8pj3yWIi(e+wP%i-MnJqcVz3$7|ml#EndJfKKoxa|H(fKWF|k%ot+AVh@tS z;P%#-&D?%THfZqLBtDwHLmhI!T#1z<+s7pILq;nDEkOF-$u8l|Pn^57Tl%r?s2AxFpZ}!yoX}XqoJY zvZgu+&rh0t<4$u_k%A{2ZrKdS6EvW9Jp=-&hl0m>?;Ya2|80UrV=`r?oZ%c)ox=l*f3DTR5klSti2OR_V zM(bUDmPHpBVl?N603~}Jc6`~IVjPDpxRWO1ma;y(TE6{k16Pv3kJQqYjs?%FOrIRU zf)x;Fj%*UYyp?KTG42u?fecDUrzCZjI$<27wiuy}Rut+7#B{f;V8k zJyV|H5ln6hGIT#CmJSI?*rR7WSi;t%EuG}?ni`zkC_;0#on6Ogc)F*iF!fQ!Wrjzv z#03$g(4|En>`(agSRk2J-a7c3Sr3zeqgm66E$zrELzI=~qgGh;Y6ZT?i-4|=`CyA| z&PZ*9rra6Lfz@O85fZcn3aUNmfJzX&8F$H}J1C0`G=mpU%n*2F9eXSZ8l>Q^5-=x3 zO}McVsv1|f&t?c6=_D~0rUmwYvkd4ead3PTDFsMF6#dwP3oHU8-8QNac1{Jx)h=;0 zYhGnQnbS?4yt<~)jclwr-s=d}c5-27HgX9_nkizcaytGxSm&&J{NWj*MG`Gx3^$rJ z?n%{vj>MbH9eyl2)|%q+nhlT)kPtrocgcV@9zZg%W%0k03~Xrn){;eIaWKUtd?(TU*1${EyCn#yiMZ*i#l)Y^#M?#i2khJommZi!o!$8PI7h6UdU`p2d0yf-v&PD=s z0~aUG-A>p@afR1?;$4wVN-V>}X+UMR9Ydc{=^z8){+v_m;p*U5(J1TZv0*p;rBydAFR!`|DZlBGM@?-6p6>5DvHqOF5ry6o z_69-Z@*(s z&&&I*XGORXk>VcBU%!%%m~_;Q+8e|SEo{WphGML?d)HWgw~V{j_SCyhJFW?F1Ru`Z_$VR}+ z)&m3Uw8oRD{tWyp%mM_y!XOkFPJ&QWcHD&(GXz#si{Qjw8adpE!x8SFG!cS`Ar&8~ zInvg!1%yyTQr)tnr_PFK_DA#|KY<7Xz)xT_@QAg|2jzIBOjp0tkye>V;JB-<(kWP@} zkNV&1qK01Boit1GLCd})Epr(UmE0CO^cA@wQ-r5!*~=`UzeXzGywu;jE$v%-{VW6n zcSUSuM`Zb?672GkcJ4zAjLt(TilpX3VR1dhP;l8Ll)~zMkB2{TTi0=z`#T8-WgE&L zdq&Bc%m}ZJW*hqapd?iLqT=*-nOCT&fGI}#kB?v!q4{4Qfy`=fZJ_A!*!+%cmKQJ} zid|+Rxhc8NKj*7o&>4&tx(ohXPC7+W1N^c0k|jSPnMo2TX|@rwu@=x{w`JAQAOB_1 z9>SWJ9(K~ls0m$tG>i9@=?j^PHwm03YJ5WmD8h=hytaii`{I`Y$2Pfs{MG7-GX^Bh zpa7w&ca!u=&A{*XPiGrXe4%Fg*>E~3tc-L)3^v;UF*@O05e_S@yjS|93LaHm*B$B* zF?}n;ZGlyaO3{1u=f-NTA)ReIn>Eio%Y{`OI%~}1`)JM5y7&nW4S-Q&s+`WDAYX_h zlfg^$qIgFxNv-#$T_!;pW~n6pRThwaYmeG&BPcdarJX5Og2s)=@*`j2;KvU~A>?KY zb6Je01(`Ao*o}NjwCF3Lp1C8MnsS|r`*;FN*3rHcK4Sye-(&$`Z6)oB!$9J;Dkg{? zyNd%Sz+rFC(xrP$qaCjcrPnu20`&hVSpUHy z>W9dpEK|@zKPthzCa_oA0Dh`Z`lFVaYRA${LOz^Y$ z<+YDkV+=%mT&iybymXoWB&jxAK%K^3s`w#*yQxk^&*naS)#cO`_ts&Qbaer)4^2n* zb6L0g(W|L;e))$-P?gQDl9}kyyEZ{BPEqy;i{}M|Uo{ToJi!Trl zp{=&JC-j{<`?xR$X|<~~mHP3adjBgCh2Ng=e3=CbmWM<}MK&;KYaGNRIt@bK`7yAC zSeZMJ!{>Ktx0Rg|p7_1rjL4+h?ews%$}`XUv7*9OC$1p&DMcuadY-4Lo$H`rKxKvn z3>K))mJ`SGnmqN|$gdLPbOt7`)|jocf#rkLauu571SK%0FD2k8NQY6#Y6>fBQuBQb zL}&o2At5y`<^LQk{E#13Lt|SiY@8ylS!7^yblk(;l_8d- z%sPs09ij!Y0gtD1w6_95x@=^0NPg*MM8{|Eu5p!K(N!9KcwD#4mjY3F_0ggUyvP%+ zR;0|=5hStNMx_Y^%fjYhlRHMXOPtUjyoclQ#He0av=v5&9KdRT0a%S?SDn~vTi4cL z38}g-<{q}yVwjiNIY||8=sE;wWC0R4F#FCY?7rBq#YluU6Chz?ttbdX7UM|AVg!e2 z#IzTB_HE;wZe>^j0}E)!1FP~Aup39BN^y$2c~aLoCl+bhA7WUkV_peOG`CDP!D%IHbEYQ z2&Q2fxQO|pGYa6Ozud;%2RQy|8@QF>*4ErUSP~!N2Cu<0l}ymPN%?z;pQmbggq#de zID{mR(*LC$QJv}w(e^X_7uHAyD#2WOk!wmS`z1)USkQs9^Pc$Xm~CT`O~~j@E}|81 zH>77Bm`(_xzrcAqO^jt^IevoGcJiWZg}gdW&*>Hw{pTtO-vr_$X}Z5*XRxio>52nc zhl&TZRi~aa%+7p>$yw) z!4?7ch<^kN9G*Fmt(5G7P=)1pq&Oc-Ke;c>!;A+S$-Jw(KE21HYOmF1IE( z+++Wq`U^>(@N=FB9uxslLm;4e4%(Ja>m8#&l9=PsmhP)S!TySaV0C7Xac=~_h#^c{ zl}^OB`2$wTOpgDu%3G4cU*x>INfUK;7Gq2Nkdkl|#_7jE0PT|SfMfWvL>l5I#s|Gus_TKfnf03AkQ`8Ui}h|}v+4N!uS*>9dJ01x z+*KBa#iHzf5{gnuVj>Iz3z-l1rl|55CrYNzr%Ff;DEG))Yhem@D92>NEQS3BgcI=5 z_J!T$o0KX<(Nh}i-M;jcb3S)^>;S93L=GrzFFc`1S|2Jdgtm6!)2Ob5kl|GuB4`_6 zF7?OT7FT07vM1CQi~T1Vr{dQp@SNO8#jdN3@lgux#F~(9a+C_$dZ)|*g=|ahGmM9Z z%w^^r8Ze8m!vvR@2VM!E3J8=4^?v8?mD(J_KW@8ypa>}BcuX^B;h}}vhN5~GWM8ox zJT=3b;Y&Xz=|)C(O&D5kZ1dcdV*1&cH-HmGu~sc;kL0BH$ZcwEn`B-|%#x_lJHDN{|d`o(p;_-T}0G4da2~AV63GRmw<(sTxScd;#BM zX4Skgf%2vTB4Nah#0g=<&p7dn?Sh#Rv^Q;gh((!(hSDXlps7gPMzzcVR^wnU6`RZ@ zkMC5KUjD?UGp)K3KoAnVK2xKCP30ndNZh2Mi=s}=-G$i*qz+C&yz?@x2Ro9|T5QpEk?85I}){m3a$-EifFyoDXs8nh{6rpQc@jtccv+%N%AdK$sqR@@2kk zTLa@-HHwTo+@_h(DHWZIw3AvJO7Ux@x%?we&>{xGxB{I5t!}!xDo@s)4Ne585H$Gn z0CpXTPk%@8KHF5IpCwHlJ~uYO%sBy-4Q6VNlN~4lv`ho4TUM>0Sog2?Q@b@8ZjGJM zf-l4j@5$XlpNpef&f%NX`rdY4Pd%;-FGoId;BihgTy9n4zTouTPs7W^TPm@U-Sq7g z@FkvXmTFIYYW_d>Vd8Efkn$@B9mA)9a`P+e(<7Vc3s~gRij9es=`o~SMDtb0-Ar&RyN&&H;J@Y)7nfGWBO-nQxP_XUtg@QWOtpI}0(XSUN?OW_N)M6h zg@vW$0vEPtwUfmq#hsjf{HDw`mdtnin^WBhFq1)1$|_{#-I0vlcYlNe%%WR11t1?7 z!W|B}1KR!`RnFEP|gjU=Dvk8E@jEfwUUsT9HK*hCpzM zHTk%$N&BLYOE;jrjr`)Hk*+>Q7ohfzmma-8`sEcgYb>d%iK125Ba!pWA+s_?{xEio zqM<;Qc%N2Bknt4yl;UlNc(0*W_y_)>$02psq()W@@bG}9uJ@qjsZJtF{=Jc2@b{;Z zV=#O*8ILeEGEBDsH8FaJ4-mB=7k(?N=!rv7@D93LhZ2cc7D#b0p2H=m1awCDu4~CD zPfSuvBY7+^HMt9ZvFeZgMP#K2x#XnXO)@T4>T&{yA<2H$L==Cu zvLqE%QaK%??rU;#^P&DLnK=(UYR>)e#@Hk@-u~5+Aato83@N-#>fO-!(g3yPI!Y$(k1_8`9VVP$GVh??HuM{7-_-AXBT?5(M#NOlj6fp@7qvch_c8E-g zw{PO?idt+Fxhs!HuH-g2-$>A|;!wY^ExdR;sYL7F$+AKJV~O|v zKe%??84Z5Fo+-*=n$Wea7j@D$^&!e)ni267?zZ7F!)5*Ptw?_Yv9AB{1IF|@+?j`) z@!*qb9ERlg*IL|WY&Fzsyfz*I?>Pg_u2$HsP;Oh?wr(r1eye=0gV7h|zFi>^vxiuS zv7dtU*LrstjgB)<|TV*tzBjekde zeRAaF0G_eV1E)8g;4mrNhqfn4DT0fcl=WxDH38PPiQQ1!;Iz{N2V^=Fwn=3e!PY{L z1G$~{W!?34XUIjX&}nyNv=RpQ>;J8Xts%>f<@ho*T#Pb#H{q;}8a`pZ-_4+B|A31_ zraA%CST7X@Q{)ZFhk&~w>*7)o*!FXFxn2C~POBb&o2_|Haz-1NtNgK`XzU}BD=t`a`k*?wJ?4x zbRc37mo@4$s;^BEbpPw1foarhJTXmhyJsAaMJYmt(oU+sC%duz;@i?DFTBV;fLvpm zOl%wEm8${U&O}gH8HyEx#~;O!==RD)aFB2TWpsO+CQzc-kGB@$J=`1*Q=>dOBu(A= zQhsh$|3?O@`P9ti>tO6Hy(>rj0WD(a;F0xNFE6+K8{~76cg>dqLlpMX?5^N+?=78_ zF${$_gyhcrGYXjJ)fWOwzB?CqWZ}}xziQU^c*trT^3v?yl4VYr3MF=BrtCNVJ}LNJ z_~)gBa@WkcS#si)nIVFvK7Zs%9_PCT6Wfg$_|%LNQuDpy<_8_-NZ^|WL)4#hGb_J? zZd6#W<6Q+c;bG<7^O4;lz$J&Y)LbYhx2h8ThbXIE$bN}=J5!Fg8uvaLy`Ng4sYRJP zjP@2*7T`-+9@1S|bZVC8X=FIi3g|B?-&p$JEq3DQ^Q_fC?801Gl4Mo-tk(RR6`ATn zkH{=L8gReYxe7;Z{?LiesLbD|ws$eI-!HAGjCW#_RXgB_zuRI<-%yZ-_clWl5}$*J zeJxRsF+YObzH-0YhW+U5)9YpJcMYa**xzR7_pb&veOCltMRpx?)JGHyc`VuG>l$PO zO+L76#closYt5>E6Xp!Lw}i0jVGao3&l#Yg%KZx6Qy)gD-f&JAn zi~hD0SY6mi>|t#-+B-0FX=9nhw%}pZ)SEDaibhPH7LQ(AHA|f>8Ma}11)i))^K4!# z^kQ-A^;UWV*oXJhX1QLx{hLC;e^WgNfL$dx775Svb5P^gueIGm?cmJeJsh33uG;z4 zr;Y{4u`iCcAlO4pcHAuw{&JXR?LqHF7ELK!XP4J|KLnlKJ0NdO)L{R^D@?+z?zwg9 zc*QoJQ7ix%k~4qymS*oA3%hoj*r)?M?CO&Ixi@B(t88>fD%V&VOg?Z!x6b^bL3r3C zBON<@VKU=acwsUkS_2U?i=CfMIJLtgZ*ZY|@U><3C^+qV$>Z69>^au=`odZ|if3dk zZ@#PgMH9r9kh#W@xew|C31M8xVR90yUVwu-K&*{3%o6WH33RUY++0ZIz^PeYvv{K{fm5u4vm6e%wO28!kC? z@-;fOxlXW(W%=wmY?bc!r+3tL7T!NS+_9ZNFT3-pzJ5{f5y) z=#$GR=X?iiCT?5B3a1}0(7+4!x(PM?!c1Sv*IF{iW;%}zX|P*qG3*T9r?Tl@WAPfPuq4SEg?x^Y};}KThR< zzCDBMB9694^@R-38)+R35XFgJ=5=2c_5-9YI+ToDrz?Zqx^5$@wYIC)wrXuUyeQv+ zC0IxkZ`txFxTs%2awtgHPuBbgTd~hfMKT-{c(6Yya&;;2Oj*iUyCy7F-z6K}XPMz< zzZ9r&M6yAM&CvZ4T|rf{Z^OthA@azoU1Zq^dN!tm6G|7|_4N-=jutGts-*W+uySM$ zOt!vCfNq0vY8|<75WN*B3+`x!t-8jc&AX%=aO^lh-ASTTo4G`l6Z8&>O;u4qG!BX> zMQOl_Mx;9hqSkB zXdkxXCivN+Z#Lu&khnRV&0XecWZn7THTi$ zA4Fp#otUUOdvgxHc`N?Il?$k$g%w1=l6wd&F*$k?+t444 z=QDaK_vIU!X*4>#@h(6#6sQ7g9vb7t`(Te0Ktnqf*CP189nP;gQIC8&7C76$A};0Z zeNLG>7TOVj&gD+hp+>KVim^$N=IHCW$KRrJjLxK8?; zV9(_D@72rsn;Fl&o+;CuG1hZm+S5qh6Mq_NoBLIuZRFC3K2s7TwxxZEgpht^eSs}x z2)!$JpMH@U@}aNio)15jdd_{8>uUS$FHk0aJ-E(VdSzd@3ssaH`)3mV3^$;y6g1f4 z|2AH9)eMEw$N=8V{p$~z_Kd5k6HPvr_sB_#OIE{&`PmG9JSapq9%_G1v&6*%EiNG4s zt2$1({aZnLSeQC{q9^m_;6N;TuZ|6?-j%RLObO;|dLF;3kn?#HSAXLvl`Pbs9)B4U(Jp(Kdk{hBJHiDhoaM02$gX%Q5<|(+LXN7{{XvX?nD6)g-zs?Du4Zg@748TYVx#Pe^)U8BYoAq(4mI0Tu{-e&6^aWSsi(tM=}Txjb>1T&AL+ola;) zV641K-&WD;Uexd`UWN^{e#9xH=rrIPS3jnK0f^ua(!e&>d8~=d>t^JX`w68lW?;vY z0g?|14Rsn%ahTttP|=(i>~kywNu8dg{jHxRz$kT&928>X!+Mu^pJ==SsiACtOUiZr5h|oe}VLS!5`cKQv@mWbrWCaZvHwQGkww?5wVyoh^-f7GHOo3olyc zJk=#v^0VnWu>k?gU)S{UWZgtb^btMiT%4b|I7y?s%g|bdw_Q7`Ld`BL(kfMLS~jU$ zmLXG`as^Us=%N*gs)A#UpNWZB*A*KZ8K8ieuZI=mht~{r*LiH{oviYl*Gt(}U}38G zhf=s}74jO6zp)AT$(_}W!Q1X;oz3=ym*zeNe#UKm2W>8(Ag$BmdQFX?p@7=t5aVfE z6%I<3J@4(oi}4(CtW@dsErr(Uonue*6&3+6GpDJQ;v(BZM^8?r#wWRIb=ZLm|Abb$ zf{cXfGiH?bGYsq1xH2Y`1KciDzSWVmfNmqDnZT}#t_3RGp{@nG8nh5CemJ)f@rbSm z-lCbq4k+i*L&-Y;D!~7#F#AtM0HDGgkGV1jPdv&-&^>1wqY1VZ{A$2Pkg8llYnEXi zFx(8DU$bv5*h!@|J8b|vvXVy48&U0n29Gk^u$ENq`tvldEH?|9gqmjw4 zFA***#E(Izi|*{2AdGT2*PfPUA91>3S6+qf)=X`6`taA?pSX|FexD=FLWE1&x=pc_ z?z4NX?R~nv<-f)wI@=c`E{R@UTfLn+oU&lznN%Gka2}JW;Bkb7#V6BwM-2sDYHC$D zqQL7S4Y@n`>rzdl8@19Oi%^Ac47h_SOXlnv3nlBUidlk6GA)Hg!9-fwFHFYVT$=O7 zR*7P;%!AVRQ94z&=sSa#)mGc(x6f3)EQ0C+rH2W*g&!3+k~v*x4;rM-*r3HCoz79c z7_EK`xGVg5PMN>oSWrX313mB4_{`l~R`9>fyU)6ON$Zg_5-YYuW` zvs;y+5r$R=K-NohGl&G-T1$7U-UrIFEMOFj$w^9p>lG>TXRAVhoNPM_9O9Nu`Nyru z<8n?EM7R;~b06JV(PmI}LJzc9KI?G=r{HQ9>UQKpe61t$y(rgKu}@s0Xm^~Q%0u@j z?n`t3=%?-}Y6Rh{-FqqomBvBSI4MDb=_vy(hg1Am#7mL2H_jp-{25%F4JkebCO!f{ z6vEE-I)|hbS))rWD)XiZKrw;2w;&O=b=B8I{y}9l4&{x{wzR-L*0uj-b^oNGjx&lTb7e=}-h{c9-oP!LqhZ7u?<~Jo8 zEhdB;Ukc6 ztI11Xku4x{DbNu#G06}Sj1c*a<{Vguv-IoWyK$o|caoUp(XO>!hxj^=18;zHccoSf zbmB^VAd2{Ygfde=X4lkD#@19VZ!9-s>1aPmE6S*RnkA#6 z8!mP}s|e`%yb?AJ8~0?tEw2!oIoY**d~K~<9xe7}(tB6(SKT?RT|9RHf?V1yHS)Rt zv=IM2-1_PMwUqk&6H=3jIXh74B5*6ay zmizlH*#-CI;JHhv-My6qYx6 zy%Ex{eXDHzIC{?3xud#d#X8WcIkAdV@d+JmEsW%5q>G&u97w9+Q z#}vD|NV{JD#LgTMU^`f&`CZwCHojUnXm>pZu}SP}P_0#!B7EE>F%P^U`F6mjATB3! z<2Y-;KQ}&(Aktl5R{t$7X!_k}0+!^-eHnsh$Tju%F6ky<)kVnt^Fza2dujFI6TJ@j zM7z2h3VniM{1vtKZ~Eg(uVyhfjD5#%0=kpgxfwg+2O`T?gpxwwwS}ZcH`76?WBW-kYgD&4o zReK;dn1_KWKIw6{ox{0+`yTxm?()D+Aduv&jP$1BpU~m8H+-w58$9X#Mela)kO*OW zGaLF3FR>NKowvanuzX7tjlr;FCKL=gIB{c??<4SB(Z}z#h6P?GYaS$kz>zic-~&2z zFt{v?1MqqT%a6hm zbnN?>(E)i!U9wyJ6Ft2XS*}RHt+#Dz@uIWaG&1v+aRK@OBLV&>>9|>mUFl&KAZYq! zM6`rr!Co}$PwSe1ek&5e#5vT5YLItv#5y`tp;o4lk9BB=Op*VQp!ZN_7<*_&3@giy zqY2_F`PCBJ4kFL4$mC8KL$NmC|7Ua@NuEH9)YD!bs#F&x>NMXIjE9<5l*d8~oPauB zJ7x0Hv~uHx```)lHh%9r@H>9WE*`-_vkT&p>+$43{t`FS$II~YKE-YOaKZSxmbc`9 zCuf%q1v%c~2-1z93e2YK&hWhcRj%$%zXv;u*ULn-eBc;H>td#WW=@-=|Av@%t``}# zC;V7{&uf!u&lq>Uge6oP{u_DoPQ4PfA_L6aeuY%_N{gP!T$Q0>?(okdzyK+tc-Gec@d;%19Jz$4TWPQj6P|l-bl) z?DFq%b2=;@80POypnMnXqcE0x+g2I}jbWexAK#LYoO71hlMR6`PR$hseShwQe`v}Q z40;djj?%LD^Ljx!w82Ero5kXuJ(vcGa>+kI5gQb!_ytG5rHp>>5648#p1J=$!E_&D zPe?A#s*)+?Ff!qiXQw5XLF;U)+B}kPXhpypbghn1{C1$=Gp1@bCTL6zR?n zNrvQC?i#taZGWJ;I7r|52>M}ag@U+6?dFijK9Z209JH`@i!O0C1}5G@l5ztf)znrB z^~JfBM9b-q=1cWftL-QpNx@Mq*2Q)wKTR{eZzJH0QJ63&S{zbcO}{K(JHJnx9~9x9 z0|kd%y5!z@fXmi?`;soip0_1Sj(p2*p^=I03M)JN)=X-vQ9Tu=`ix#M=gTDZ-TZzf zp|>YFg=&}1%?M(x*X?xKBRn}QYMbWl@e2Jw&lm-dO zrFIwTlx~pjuBB^{l8}~8S3nw<5>^@%kVd3SLX_?XK?#8upXc{`d|#e>{+TmpKKFIc z%yq8s^*wXWOxLa;43==R{>WHB^+Kk>(4vmK!}bR-I8Vh8p{P$Z&R_p()u*PL`Jg?X z9a;Op_L9o2zwO#}5ER+b7zanWZz0|!2??mxo`&=M5;t@`6AEZWY?6;F%L-l#kd2mg zz73GbjG`BuVtQ)~Hnhqc&OTusqQ1KUrq`Q|hpbIiqI@4+EI_2G(z(mASd4|=|aoGlx!t7Th*9i-;y?D)UhGxp^-d3>N=0z7P3%z zdQ8C%dPJ=1fCX=7W6VUm5+)Cq?D=@ccy9#{(fmxvia}Aj#$-e@nIunGmdn8tjW=iH zQ0wlZP5V7YhTMC-(do8rAGdOwu88+=m>8AYx#ij8^A)T+9-`m@a;v&=Pu1bnihhl!J+78P`4EfLarrP0_Zlb%-NwCQZFsx933hHlBEb zQ|;NqZi!X6$popeM+Sao5tLEG#>V6|TMPzru^m@}FcK~OQo$E0KD>jSs1M41EL^aX zVGkC0RZLpy;lOBhc27SKwC6H>9xk#LKMoI7Fv0Q4&U3qv@WQ4`U&u6DFzC$L3=uv4 z8se6Vekv;>PuiIynfTexl8Yoofp2hS=?S{n5)o{}GP8}(pS5wECx3Xu9Fxax?5P0H zs&hf(ijn4fqII$n9%xRkWMq)p58L*1bbRwe zm$~_8eJf`!s@mw^cNkyCtu5N*ZdwMA)OiR;;eN6m z@XUemj6>JRY?pC*fU&kjDw<+GlHqON()uz4PQ18@BrJmiD_4r(~p=1Z?iI(Fn zAgQ%Dc9L4qA4zsakS7-r@sfva47Z~6_R6{XR56A0Qj{1SH{E)NK*0?=Vrui;G{s^; z{td@jI3l@yOo)~-_67`V6{?UBCqmcVk*iKz$;3%_j5>b-1TO!VR~upLnDz4UYR7ZO z!4MXaSxujj?fktN@8ik6j6}e?ll^=Uj_EaHtvDpjb7T@1O(4~epgcXk@}c#df|b?) zPCu`o@))Q;WONkgPVzux%+LoPbTWV#?W;nx_;^ZF^G>S!?TL$Q`bSJh2@)D2X8mx$iCs`eW4lpoM1m^m?rLUlvy)ZO9q3* zYnSd=AeszGUedMNP11b$Y+PCsp~KQHXz-+9$5NMlDY==LYaDpTCZSi=^B~~n1p@z! z!uHij^$Ie2(x}h5Cb}tspOted-G-xzHH)q7u&<_`*Z^ag=KVtt>fM;U3b2$P9gFrr z1ZZuVKC2`&3t83n6pmhPDD{Jkz%YRp+w55^x802cMeL$y@^J8CaTQIo%0kzttu4kM z=*(gWXFs5+zx&p2r9Rwrd~>E@akrw_H-EHrT4dfz+XbzM#-?sYCeRHr>!YWc+mh%{ zZrQESGb-V)Pe!5?Y&M$P8cWB?^MlOSxYD4<^a}{y^HEPw{tWW|bH5oZ=7jis+S)KI z=(PJs0CsRgew}$+5{px=BzD|b96d&ajy-`M)r^ybfm$Q~>GVx}k&G1NWvLqu)t zr>j>MSke+Xj*l@24v)2qTu>QoqA_)II<|?>hNV9Cf^r{5;WypQY{qHy`v=wbi_b1l`j~+hvM?XS|uP6h-c7_tZVL=1#n%40GrwmtIYL>=GER?p( z5AxdWxeVQ30u{<$J{v5KJ945l_AiR6?*pdTt!YUl?O}qG< z-DtRw^8gJe(_!!5y)Yu1IAc?_urgCVm(f(Iw#-Y_E2s8lT zIVJ#rccU|KKe&yp9oW~!xh}0;{f#7PV~^>`)0Rq73b2ot>U{Ld)$v;=_DgdEir=&|J|tG$T!{Kc#+66^4&i(awU1VBM!%cT;X!Dst1tR%{1 zs3CnZOE|<`+9pa*^~9dkuu5JGxeR;A=(!HZuh8WW4CZxSlr*I?!9!9^ktBO$je3$YAKP2# zn4S(mwVvQ@&)#`FwS*#Doa1^XxFCw?>McqtXWUiFu;%`S>3n{~5yky}pV-5_aW{;@ z_tP6WWDf)W4CN*ayJYJjnerzq498;XDq0M*vC_+=@7<`63vFCS7hKaiXKuSE-206e zyPDwdg%bU}nJz&(6DL_gm))7i&lxTN8}!u6dIH!ng&vX%mbokii@=aQQtCTj5U_d*A+18E)UgQrXhxMzg4;Hw{ft=PF#6w zq4&CJo5$)d?z~nGNjFncq_sz%vlB=hypq;xT=4F0MJ;`^$PzO#i{Eoi{U$L5WQk+G z2U}a)>uMarmUBfhOL)L{E4mv>XwAPjT>W|{aTZq{EdKLHuPC2&5p7DM|0y3G+j^l= z!)Eg~@Tiu0RHYAO?wUYsWtVpIY3RTre8pIc$ge~as$ot^o1BUSd)w{1-2BCmFT)#- zvqA}loojdPeU=gKhnmCF*}O5OKkbQGp77ERx?tpVq%E>mi%a!0Y76Z3o6r;uxjMb{ z%bp>xYKac)a#iSzMJ?gi4z+Ta=m(?B6l0GIgS+HtZ-Tr2Hen829emppTrEjWHyv`@rStxM}#l|CIF+rZ)9yKdP!sf1MG*N+OQy_x6pNlyK34)xR z6LA}xjmWrVjgA}Jfq;-EE*6@~cM}}1PoB!-g7U3PQ_20Ys zMQfcLw1QfTmRc=FLpoGY!^IlQ5%~#wnBld`yTvNh!2_2{tR{ufJ>ucv^3edv#diZ1 zYrb~UBIXpYu|ty-I&zH5XUcd(_XCRSwDJX=m@;BocGQcsc0rr=uFF#QwfuF&FE|Nn zj60_{q`>8TdkbZ?H~+J@co&x5%(RR!W=KtIdQnfs61ae>gnrIwc=gg-JQ*sJtvCuv zJ8K=^iYXSp4|uCQ-QuC^l)s|v|GWl>2z)0>A#QNU_++^wqhs(V*7x#;yE}39 zsQbJL`P#jFtg-ixKGj-@`*mxI1oRs`KWg!GQvM<>xmD;en;bJ6sLzRwM|hb6_8}L- zGC9)e(NC<>mZTdqNOz-Xdndp|OTnHtp77vhbj;T1q$h!E;+rGzr4`s)3q=_389P=C z#kp@I7SddHCp$cCasFv)2)*W(lKO;T`e?944!k~`=1sY^e~PP zA`bjZY=6^#$37`U`^Vyet#5Np*Fk*%AOJ9O;{<<;^zZRE*Cm1ehx^xxf!5BgRO;w} z0zEna;osQ*aXT{q&3U;v-ws(k9+PE>4**a(0&d+VXbR?^kY3jRB6Vy%QaQ2!fVoG& zzntrz#WrRCA^-BR|GLoIuJ;dnR|NP^)W1FO?G@kdWd5*zlEDA!Yi@J5HS`ZBC=L8a zQEyYX%hVqVPwsE(rf6xX0B9tzy#f#b2FUSAsR$Za8mYO!>>Lfeg|%G; gc)e9sUG?~d?5rLeS^HW!NEx_j=)*ky<(0($0|MDGc>n+a literal 0 HcmV?d00001 diff --git a/lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/design_1.bd b/lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/design_1.bd new file mode 100644 index 0000000..9c2cd25 --- /dev/null +++ b/lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/design_1.bd @@ -0,0 +1,459 @@ +{ + "design": { + "design_info": { + "boundary_crc": "0xD2682A7282870375", + "device": "xc7z010clg400-1", + "name": "design_1", + "rev_ctrl_bd_flag": "RevCtrlBdOff", + "synth_flow_mode": "Hierarchical", + "tool_version": "2020.1", + "validated": "true" + }, + "design_tree": { + "processing_system7_0": "", + "clock_control_0": "", + "xlconstant_0": "", + "Top_0": "" + }, + "interface_ports": { + "DDR": { + "mode": "Master", + "vlnv": "xilinx.com:interface:ddrx_rtl:1.0", + "parameters": { + "CAN_DEBUG": { + "value": "false", + "value_src": "default" + }, + "TIMEPERIOD_PS": { + "value": "1250", + "value_src": "default" + }, + "MEMORY_TYPE": { + "value": "COMPONENTS", + "value_src": "default" + }, + "DATA_WIDTH": { + "value": "8", + "value_src": "default" + }, + "CS_ENABLED": { + "value": "true", + "value_src": "default" + }, + "DATA_MASK_ENABLED": { + "value": "true", + "value_src": "default" + }, + "SLOT": { + "value": "Single", + "value_src": "default" + }, + "MEM_ADDR_MAP": { + "value": "ROW_COLUMN_BANK", + "value_src": "default" + }, + "BURST_LENGTH": { + "value": "8", + "value_src": "default" + }, + "AXI_ARBITRATION_SCHEME": { + "value": "TDM", + "value_src": "default" + }, + "CAS_LATENCY": { + "value": "11", + "value_src": "default" + }, + "CAS_WRITE_LATENCY": { + "value": "11", + "value_src": "default" + } + } + }, + "FIXED_IO": { + "mode": "Master", + "vlnv": "xilinx.com:display_processing_system7:fixedio_rtl:1.0", + "parameters": { + "CAN_DEBUG": { + "value": "false", + "value_src": "default" + } + } + } + }, + "ports": { + "io_clock": { + "type": "clk", + "direction": "I", + "parameters": { + "CLK_DOMAIN": { + "value": "design_1_clock", + "value_src": "default" + }, + "FREQ_HZ": { + "value": "100000000" + }, + "FREQ_TOLERANCE_HZ": { + "value": "0", + "value_src": "default" + }, + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "PHASE": { + "value": "0.000", + "value_src": "default" + } + } + }, + "io_alive_led": { + "direction": "O" + }, + "io_reset": { + "direction": "I", + "parameters": { + "POLARITY": { + "value": "", + "value_src": "weak" + } + } + }, + "enable_clk": { + "type": "clk", + "direction": "I", + "parameters": { + "CLK_DOMAIN": { + "value": "design_1_enable_clk_0", + "value_src": "default" + }, + "FREQ_HZ": { + "value": "100000000", + "value_src": "default" + }, + "FREQ_TOLERANCE_HZ": { + "value": "0", + "value_src": "default" + }, + "INSERT_VIP": { + "value": "0", + "value_src": "default" + }, + "PHASE": { + "value": "0.000", + "value_src": "default" + } + } + } + }, + "components": { + "processing_system7_0": { + "vlnv": "xilinx.com:ip:processing_system7:5.5", + "xci_name": "design_1_processing_system7_0_0", + "parameters": { + "PCW_ACT_APU_PERIPHERAL_FREQMHZ": { + "value": "666.666687" + }, + "PCW_ACT_CAN_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_DCI_PERIPHERAL_FREQMHZ": { + "value": "10.158730" + }, + "PCW_ACT_ENET0_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_ENET1_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA0_PERIPHERAL_FREQMHZ": { + "value": "50.000000" + }, + "PCW_ACT_FPGA1_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA2_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_FPGA3_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_PCAP_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_QSPI_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SDIO_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SMC_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_SPI_PERIPHERAL_FREQMHZ": { + "value": "10.000000" + }, + "PCW_ACT_TPIU_PERIPHERAL_FREQMHZ": { + "value": "200.000000" + }, + "PCW_ACT_TTC0_CLK0_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC0_CLK1_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC0_CLK2_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK0_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK1_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_TTC1_CLK2_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_ACT_UART_PERIPHERAL_FREQMHZ": { + "value": "100.000000" + }, + "PCW_ACT_WDT_PERIPHERAL_FREQMHZ": { + "value": "111.111115" + }, + "PCW_CLK0_FREQ": { + "value": "50000000" + }, + "PCW_CLK1_FREQ": { + "value": "10000000" + }, + "PCW_CLK2_FREQ": { + "value": "10000000" + }, + "PCW_CLK3_FREQ": { + "value": "10000000" + }, + "PCW_DDR_RAM_HIGHADDR": { + "value": "0x1FFFFFFF" + }, + "PCW_EN_EMIO_UART0": { + "value": "1" + }, + "PCW_EN_UART0": { + "value": "1" + }, + "PCW_EN_UART1": { + "value": "1" + }, + "PCW_FPGA_FCLK0_ENABLE": { + "value": "1" + }, + "PCW_MIO_48_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_48_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_48_SLEW": { + "value": "slow" + }, + "PCW_MIO_49_IOTYPE": { + "value": "LVCMOS 3.3V" + }, + "PCW_MIO_49_PULLUP": { + "value": "enabled" + }, + "PCW_MIO_49_SLEW": { + "value": "slow" + }, + "PCW_MIO_TREE_PERIPHERALS": { + "value": "unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#UART 1#UART 1#unassigned#unassigned#unassigned#unassigned" + }, + "PCW_MIO_TREE_SIGNALS": { + "value": "unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#unassigned#tx#rx#unassigned#unassigned#unassigned#unassigned" + }, + "PCW_UART0_GRP_FULL_ENABLE": { + "value": "0" + }, + "PCW_UART0_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_UART0_UART0_IO": { + "value": "EMIO" + }, + "PCW_UART1_GRP_FULL_ENABLE": { + "value": "0" + }, + "PCW_UART1_PERIPHERAL_ENABLE": { + "value": "1" + }, + "PCW_UART1_UART1_IO": { + "value": "MIO 48 .. 49" + }, + "PCW_UART_PERIPHERAL_FREQMHZ": { + "value": "100" + }, + "PCW_UART_PERIPHERAL_VALID": { + "value": "1" + }, + "PCW_UIPARAM_ACT_DDR_FREQ_MHZ": { + "value": "533.333374" + }, + "PCW_USE_M_AXI_GP0": { + "value": "0" + } + } + }, + "clock_control_0": { + "vlnv": "xilinx.com:module_ref:clock_control:1.0", + "xci_name": "design_1_clock_control_0_0", + "reference_info": { + "ref_type": "hdl", + "ref_name": "clock_control", + "boundary_crc": "0x0" + }, + "ports": { + "clk_in": { + "direction": "I", + "parameters": { + "CLK_DOMAIN": { + "value": "design_1_clock", + "value_src": "default_prop" + }, + "FREQ_HZ": { + "value": "100000000", + "value_src": "user_prop" + }, + "PHASE": { + "value": "0.000", + "value_src": "default_prop" + } + } + }, + "enable_clk": { + "type": "clk", + "direction": "I", + "parameters": { + "CLK_DOMAIN": { + "value": "design_1_enable_clk_0", + "value_src": "default_prop" + } + } + }, + "clk_out": { + "direction": "O", + "parameters": { + "CLK_DOMAIN": { + "value": "", + "value_src": "weak" + }, + "FREQ_HZ": { + "value": "", + "value_src": "weak" + }, + "PHASE": { + "value": "", + "value_src": "weak" + } + } + } + } + }, + "xlconstant_0": { + "vlnv": "xilinx.com:ip:xlconstant:1.1", + "xci_name": "design_1_xlconstant_0_0" + }, + "Top_0": { + "vlnv": "xilinx.com:module_ref:Top:1.0", + "xci_name": "design_1_Top_0_0", + "reference_info": { + "ref_type": "hdl", + "ref_name": "Top", + "boundary_crc": "0x0" + }, + "ports": { + "clock": { + "type": "clk", + "direction": "I", + "parameters": { + "ASSOCIATED_RESET": { + "value": "reset", + "value_src": "constant" + } + } + }, + "reset": { + "type": "rst", + "direction": "I" + }, + "io_led": { + "direction": "O" + }, + "io_tx": { + "direction": "O" + }, + "io_rx": { + "direction": "I" + } + } + } + }, + "interface_nets": { + "processing_system7_0_FIXED_IO": { + "interface_ports": [ + "FIXED_IO", + "processing_system7_0/FIXED_IO" + ] + }, + "processing_system7_0_DDR": { + "interface_ports": [ + "DDR", + "processing_system7_0/DDR" + ] + } + }, + "nets": { + "Top_0_io_tx": { + "ports": [ + "Top_0/io_tx", + "processing_system7_0/UART0_RX" + ] + }, + "Top_0_io_led": { + "ports": [ + "Top_0/io_led", + "io_alive_led" + ] + }, + "io_reset_1": { + "ports": [ + "io_reset", + "Top_0/reset" + ] + }, + "io_clock_1": { + "ports": [ + "io_clock", + "clock_control_0/clk_in" + ] + }, + "enable_clk_0_1": { + "ports": [ + "enable_clk", + "clock_control_0/enable_clk" + ] + }, + "clock_control_0_clk_out": { + "ports": [ + "clock_control_0/clk_out", + "Top_0/clock" + ] + }, + "xlconstant_0_dout": { + "ports": [ + "xlconstant_0/dout", + "Top_0/io_rx" + ] + } + } + } +} \ No newline at end of file diff --git a/lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v b/lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v new file mode 100644 index 0000000..bac37fa --- /dev/null +++ b/lab4/vivado/z710/riscv-z710/riscv-z710.srcs/sources_1/bd/design_1/hdl/design_1_wrapper.v @@ -0,0 +1,116 @@ +//Copyright 1986-2020 Xilinx, Inc. All Rights Reserved. +//-------------------------------------------------------------------------------- +//Tool Version: Vivado v.2020.1 (win64) Build 2902540 Wed May 27 19:54:49 MDT 2020 +//Date : Mon Dec 11 23:16:26 2023 +//Host : Tokisakix running 64-bit major release (build 9200) +//Command : generate_target design_1_wrapper.bd +//Design : design_1_wrapper +//Purpose : IP block netlist +//-------------------------------------------------------------------------------- +`timescale 1 ps / 1 ps + +module design_1_wrapper + (DDR_addr, + DDR_ba, + DDR_cas_n, + DDR_ck_n, + DDR_ck_p, + DDR_cke, + DDR_cs_n, + DDR_dm, + DDR_dq, + DDR_dqs_n, + DDR_dqs_p, + DDR_odt, + DDR_ras_n, + DDR_reset_n, + DDR_we_n, + FIXED_IO_ddr_vrn, + FIXED_IO_ddr_vrp, + FIXED_IO_mio, + FIXED_IO_ps_clk, + FIXED_IO_ps_porb, + FIXED_IO_ps_srstb, + enable_clk, + io_alive_led, + io_clock, + io_reset); + inout [14:0]DDR_addr; + inout [2:0]DDR_ba; + inout DDR_cas_n; + inout DDR_ck_n; + inout DDR_ck_p; + inout DDR_cke; + inout DDR_cs_n; + inout [3:0]DDR_dm; + inout [31:0]DDR_dq; + inout [3:0]DDR_dqs_n; + inout [3:0]DDR_dqs_p; + inout DDR_odt; + inout DDR_ras_n; + inout DDR_reset_n; + inout DDR_we_n; + inout FIXED_IO_ddr_vrn; + inout FIXED_IO_ddr_vrp; + inout [53:0]FIXED_IO_mio; + inout FIXED_IO_ps_clk; + inout FIXED_IO_ps_porb; + inout FIXED_IO_ps_srstb; + input enable_clk; + output io_alive_led; + input io_clock; + input io_reset; + + wire [14:0]DDR_addr; + wire [2:0]DDR_ba; + wire DDR_cas_n; + wire DDR_ck_n; + wire DDR_ck_p; + wire DDR_cke; + wire DDR_cs_n; + wire [3:0]DDR_dm; + wire [31:0]DDR_dq; + wire [3:0]DDR_dqs_n; + wire [3:0]DDR_dqs_p; + wire DDR_odt; + wire DDR_ras_n; + wire DDR_reset_n; + wire DDR_we_n; + wire FIXED_IO_ddr_vrn; + wire FIXED_IO_ddr_vrp; + wire [53:0]FIXED_IO_mio; + wire FIXED_IO_ps_clk; + wire FIXED_IO_ps_porb; + wire FIXED_IO_ps_srstb; + wire enable_clk; + wire io_alive_led; + wire io_clock; + wire io_reset; + + design_1 design_1_i + (.DDR_addr(DDR_addr), + .DDR_ba(DDR_ba), + .DDR_cas_n(DDR_cas_n), + .DDR_ck_n(DDR_ck_n), + .DDR_ck_p(DDR_ck_p), + .DDR_cke(DDR_cke), + .DDR_cs_n(DDR_cs_n), + .DDR_dm(DDR_dm), + .DDR_dq(DDR_dq), + .DDR_dqs_n(DDR_dqs_n), + .DDR_dqs_p(DDR_dqs_p), + .DDR_odt(DDR_odt), + .DDR_ras_n(DDR_ras_n), + .DDR_reset_n(DDR_reset_n), + .DDR_we_n(DDR_we_n), + .FIXED_IO_ddr_vrn(FIXED_IO_ddr_vrn), + .FIXED_IO_ddr_vrp(FIXED_IO_ddr_vrp), + .FIXED_IO_mio(FIXED_IO_mio), + .FIXED_IO_ps_clk(FIXED_IO_ps_clk), + .FIXED_IO_ps_porb(FIXED_IO_ps_porb), + .FIXED_IO_ps_srstb(FIXED_IO_ps_srstb), + .enable_clk(enable_clk), + .io_alive_led(io_alive_led), + .io_clock(io_clock), + .io_reset(io_reset)); +endmodule diff --git a/lab4/vivado/z710/riscv-z710/riscv-z710.xpr b/lab4/vivado/z710/riscv-z710/riscv-z710.xpr new file mode 100644 index 0000000..55a54ba --- /dev/null +++ b/lab4/vivado/z710/riscv-z710/riscv-z710.xpr @@ -0,0 +1,376 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vivado Synthesis Defaults + + + + + + + + + + + + Vivado Synthesis Defaults + + + + + + + + + + + + Vivado Synthesis Defaults + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Default settings for Implementation. + + + + + + + + + + + + + + + + + + + Default settings for Implementation. + + + + + + + + + + + + + + + + + + + Default settings for Implementation. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + default_dashboard + + +