From 7ae5ee8c39015c2c8e6898866fd71af1079f76a2 Mon Sep 17 00:00:00 2001 From: CGH0S7 <776459475@qq.com> Date: Wed, 1 Jan 2025 23:19:43 +0800 Subject: [PATCH] SystemVerilog Module Complete --- Core.sv | 612 +++++++++------- display.sv => Display.sv | 0 Memory.sv | 171 +++-- Regfile.sv | 54 +- Top.sv | 44 +- TopOrigin.sv | 605 ++++++++++------ src/main/scala/micore/Core.scala | 18 +- target/scala-2.13/-name-_2.13-0.1.0.jar | Bin 113378 -> 90878 bytes target/scala-2.13/zinc/inc_compile_2.13.zip | Bin 22045 -> 22033 bytes .../compileIncremental/_global/streams/out | 42 +- .../_global/streams/export | 2 +- .../compile/incOptions/_global/streams/out | 9 + .../compile/packageBin/_global/streams/inputs | 2 +- .../compile/packageBin/_global/streams/out | 100 ++- .../compile/packageBin/_global/streams/output | 2 +- .../_global/streams/export | 2 +- .../_global/streams/export | 2 +- .../_global/streams/export | 2 +- .../_global/streams/export | 2 +- .../TopOrigin.lo.fir | 655 ++++++++++++++++++ testbench.sv | 129 ++-- 21 files changed, 1749 insertions(+), 704 deletions(-) rename display.sv => Display.sv (100%) create mode 100755 test_run_dir/Micore_should_run_the_test_program/TopOrigin.lo.fir diff --git a/Core.sv b/Core.sv index cc6c176..f5f086f 100755 --- a/Core.sv +++ b/Core.sv @@ -1,25 +1,24 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// +// Company: +// Engineer: +// // Create Date: 2024/12/28 11:25:38 -// Design Name: +// Design Name: // Module Name: Core -// Project Name: -// Target Devices: -// Tool Versions: -// Description: -// -// Dependencies: -// +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// // Revision: // Revision 0.01 - File Created // Additional Comments: -// +// ////////////////////////////////////////////////////////////////////////////////// - module Core( input clock, reset, @@ -29,10 +28,13 @@ module Core( input [31:0] io_dmem_rdata, output io_dmem_wen, output [31:0] io_dmem_wdata, - output io_exit, - output [31:0] s0_value + output [3:0] io_anodes, + output [6:0] io_segments, + output io_exit ); + wire exe_jmp_flg; + wire exe_br_flg; wire [31:0] _regfile_ext_R0_data; wire [31:0] _regfile_ext_R1_data; reg [31:0] id_reg_pc; @@ -41,275 +43,385 @@ module Core( reg [4:0] exe_reg_wb_addr; reg [31:0] exe_reg_op1_data; reg [31:0] exe_reg_op2_data; - reg [31:0] exe_reg_rs2_data; + reg [31:0] exe_reg_rt_data; reg [4:0] exe_reg_exe_fun; reg [1:0] exe_reg_mem_wen; reg [1:0] exe_reg_rf_wen; reg [2:0] exe_reg_wb_sel; - reg [31:0] exe_reg_imm_b_sext; + reg [31:0] exe_reg_imm_i_sext; reg [31:0] mem_reg_pc; reg [4:0] mem_reg_wb_addr; - reg [31:0] mem_reg_alu_out; - reg [31:0] mem_reg_rs2_data; + reg [31:0] mem_reg_rt_data; + reg [1:0] mem_reg_mem_wen; reg [1:0] mem_reg_rf_wen; reg [2:0] mem_reg_wb_sel; - reg [1:0] mem_reg_mem_wen; + reg [31:0] mem_reg_alu_out; reg [4:0] wb_reg_wb_addr; reg [1:0] wb_reg_rf_wen; reg [31:0] wb_reg_wb_data; reg [31:0] if_reg_pc; - wire _id_rs2_data_T_5 = wb_reg_rf_wen == 2'h1; - wire exe_br_flg = - exe_reg_exe_fun == 5'hC - ? exe_reg_op1_data != exe_reg_op2_data - : exe_reg_exe_fun == 5'hB & exe_reg_op1_data == exe_reg_op2_data; - wire exe_jmp_flg = exe_reg_wb_sel == 3'h3; + wire _id_inst_T = exe_br_flg | exe_jmp_flg; + wire _id_rt_data_T_2 = exe_reg_rf_wen == 2'h1; + wire stall_flg = + _id_rt_data_T_2 & (|(id_reg_inst[25:21])) & id_reg_inst[25:21] == exe_reg_wb_addr + | _id_rt_data_T_2 & (|(id_reg_inst[20:16])) & id_reg_inst[20:16] == exe_reg_wb_addr; + wire [31:0] id_inst = _id_inst_T | stall_flg ? 32'h20000000 : id_reg_inst; + wire _id_rt_data_T_8 = wb_reg_rf_wen == 2'h1; + wire _exe_alu_out_T = exe_reg_exe_fun == 5'h1; + wire [31:0] _exe_alu_out_T_1 = exe_reg_op1_data + exe_reg_op2_data; + wire _exe_alu_out_T_3 = exe_reg_exe_fun == 5'h2; + wire [31:0] _exe_alu_out_T_4 = exe_reg_op1_data - exe_reg_op2_data; + wire _exe_alu_out_T_6 = exe_reg_exe_fun == 5'h3; + wire [31:0] _exe_alu_out_T_7 = exe_reg_op1_data & exe_reg_op2_data; + wire _exe_alu_out_T_8 = exe_reg_exe_fun == 5'h4; + wire [31:0] _exe_alu_out_T_9 = exe_reg_op1_data | exe_reg_op2_data; + wire _exe_alu_out_T_10 = exe_reg_exe_fun == 5'h5; + wire [31:0] _exe_alu_out_T_11 = exe_reg_op1_data ^ exe_reg_op2_data; + wire _exe_alu_out_T_12 = exe_reg_exe_fun == 5'h6; + wire [62:0] _exe_alu_out_T_14 = {31'h0, exe_reg_op1_data} << exe_reg_op2_data[4:0]; + wire _exe_alu_out_T_16 = exe_reg_exe_fun == 5'h7; + wire [31:0] _GEN = {27'h0, exe_reg_op2_data[4:0]}; + wire [31:0] _exe_alu_out_T_18 = exe_reg_op1_data >> _GEN; + wire _exe_alu_out_T_19 = exe_reg_exe_fun == 5'h8; + wire [31:0] _exe_alu_out_T_22 = $signed($signed(exe_reg_op1_data) >>> _GEN); + wire _exe_alu_out_T_24 = exe_reg_exe_fun == 5'h9; + wire _exe_alu_out_T_28 = exe_reg_exe_fun == 5'hD; + wire [31:0] _exe_alu_out_T_29 = _exe_alu_out_T_28 ? exe_reg_op1_data : 32'h0; + wire [31:0] _GEN_0 = {31'h0, $signed(exe_reg_op1_data) < $signed(exe_reg_op2_data)}; + wire [31:0] exe_alu_out = + _exe_alu_out_T + ? _exe_alu_out_T_1 + : _exe_alu_out_T_3 + ? _exe_alu_out_T_4 + : _exe_alu_out_T_6 + ? _exe_alu_out_T_7 + : _exe_alu_out_T_8 + ? _exe_alu_out_T_9 + : _exe_alu_out_T_10 + ? _exe_alu_out_T_11 + : _exe_alu_out_T_12 + ? _exe_alu_out_T_14[31:0] + : _exe_alu_out_T_16 + ? _exe_alu_out_T_18 + : _exe_alu_out_T_19 + ? _exe_alu_out_T_22 + : _exe_alu_out_T_24 ? _GEN_0 : _exe_alu_out_T_29; + assign exe_br_flg = + exe_reg_exe_fun == 5'hB + ? exe_reg_op1_data == exe_reg_op2_data + : exe_reg_exe_fun == 5'hC & exe_reg_op1_data != exe_reg_op2_data; + assign exe_jmp_flg = exe_reg_wb_sel == 3'h3; + wire [31:0] mem_wb_data = + mem_reg_wb_sel == 3'h2 + ? io_dmem_rdata + : mem_reg_wb_sel == 3'h3 ? mem_reg_pc + 32'h4 : mem_reg_alu_out; always @(posedge clock) begin - automatic logic _id_inst_T = exe_br_flg | exe_jmp_flg; - automatic logic _id_rs2_data_hazard_T = exe_reg_rf_wen == 2'h1; - automatic logic stall_flg; - automatic logic [31:0] id_inst; - automatic logic _id_rs2_data_T_2; - automatic logic _id_rs2_data_T; - automatic logic [31:0] _id_rs2_data_T_8; - automatic logic [16:0] _GEN; - automatic logic _csignals_T_5; - automatic logic [19:0] _GEN_0; - automatic logic _csignals_T_7; - automatic logic _csignals_T_9; - automatic logic _csignals_T_11; - automatic logic _csignals_T_13; - automatic logic _csignals_T_15; - automatic logic _csignals_T_17; - automatic logic _csignals_T_19; - automatic logic [16:0] _GEN_1; - automatic logic _csignals_T_21; - automatic logic _csignals_T_23; - automatic logic _csignals_T_25; - automatic logic _csignals_T_27; - automatic logic _csignals_T_29; - automatic logic _csignals_T_31; - automatic logic _csignals_T_33; - automatic logic _csignals_T_35; - automatic logic _csignals_T_37; - automatic logic _csignals_T_39; - automatic logic _GEN_2; - automatic logic _GEN_3; - automatic logic [1:0] csignals_1; - automatic logic [2:0] _csignals_T_95; - automatic logic [31:0] _GEN_4 = {27'h0, exe_reg_op2_data[4:0]}; - automatic logic [62:0] _exe_alu_out_T_8 = - {31'h0, exe_reg_op1_data} << exe_reg_op2_data[4:0]; - automatic logic [31:0] exe_alu_out; - stall_flg = - _id_rs2_data_hazard_T & (|(id_reg_inst[25:21])) - & id_reg_inst[25:21] == exe_reg_wb_addr | _id_rs2_data_hazard_T - & (|(id_reg_inst[20:16])) & id_reg_inst[20:16] == exe_reg_wb_addr; - id_inst = _id_inst_T | stall_flg ? 32'h0 : id_reg_inst; - _id_rs2_data_T_2 = mem_reg_rf_wen == 2'h1; - _id_rs2_data_T = id_reg_inst[20:16] == 5'h0; - _id_rs2_data_T_8 = - id_reg_inst[20:16] == mem_reg_wb_addr & _id_rs2_data_T_2 - ? mem_reg_alu_out - : id_reg_inst[20:16] == wb_reg_wb_addr & _id_rs2_data_T_5 - ? wb_reg_wb_data - : _regfile_ext_R0_data; - _GEN = {id_inst[31:26], id_inst[10:0]}; - _csignals_T_5 = _GEN == 17'h20; - _GEN_0 = {id_inst[31:28], id_inst[15:0]}; - _csignals_T_7 = _GEN_0 == 20'h80000; - _csignals_T_9 = _GEN == 17'h22; - _csignals_T_11 = _GEN == 17'h24; - _csignals_T_13 = _GEN == 17'h25; - _csignals_T_15 = _GEN == 17'h26; - _csignals_T_17 = _GEN_0 == 20'hC0000; - _csignals_T_19 = _GEN_0 == 20'hD0000; - _GEN_1 = {id_inst[30:20], id_inst[5:0]}; - _csignals_T_21 = _GEN_1 == 17'h0; - _csignals_T_23 = _GEN_1 == 17'h2; - _csignals_T_25 = _GEN_1 == 17'h3; - _csignals_T_27 = _GEN == 17'h2A; - _csignals_T_29 = _GEN_0 == 20'h40000; - _csignals_T_31 = _GEN_0 == 20'h50000; - _csignals_T_33 = id_inst == 32'hC000000; - _csignals_T_35 = _GEN_0 == 20'h8; - _csignals_T_37 = {id_inst[31:22], id_inst[9:0]} == 20'h78000; - _csignals_T_39 = id_inst == 32'h0; - _GEN_2 = _csignals_T_29 | _csignals_T_31; - _GEN_3 = _csignals_T_21 | _csignals_T_23 | _csignals_T_25 | _csignals_T_27 | _GEN_2; - csignals_1 = - _csignals_T_5 | _csignals_T_7 | _csignals_T_9 | _csignals_T_11 | _csignals_T_13 - | _csignals_T_15 | _csignals_T_17 | _csignals_T_19 | _GEN_3 - ? 2'h0 - : _csignals_T_33 - ? 2'h1 - : _csignals_T_35 ? 2'h0 : {_csignals_T_37 | _csignals_T_39, 1'h0}; - _csignals_T_95 = - _csignals_T_5 - ? 3'h1 - : _csignals_T_7 - ? 3'h2 - : _csignals_T_9 | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 - ? 3'h1 - : _csignals_T_17 | _csignals_T_19 - ? 3'h2 - : _GEN_3 - ? 3'h1 - : _csignals_T_33 - ? 3'h4 - : _csignals_T_35 - ? 3'h0 - : _csignals_T_37 ? 3'h5 : {2'h0, ~_csignals_T_39}; - exe_alu_out = - exe_reg_exe_fun == 5'hE - ? exe_reg_op1_data - : exe_reg_exe_fun == 5'h9 - ? {31'h0, $signed(exe_reg_op1_data) < $signed(exe_reg_op2_data)} - : exe_reg_exe_fun == 5'h8 - ? $signed($signed(exe_reg_op1_data) >>> _GEN_4) - : exe_reg_exe_fun == 5'h7 - ? exe_reg_op1_data >> _GEN_4 - : exe_reg_exe_fun == 5'h6 - ? _exe_alu_out_T_8[31:0] - : exe_reg_exe_fun == 5'h5 - ? exe_reg_op1_data ^ exe_reg_op2_data - : exe_reg_exe_fun == 5'h4 - ? exe_reg_op1_data | exe_reg_op2_data - : exe_reg_exe_fun == 5'h3 - ? exe_reg_op1_data & exe_reg_op2_data - : exe_reg_exe_fun == 5'h2 - ? exe_reg_op1_data - exe_reg_op2_data - : exe_reg_exe_fun == 5'h1 - ? exe_reg_op1_data + exe_reg_op2_data - : 32'h0; - if (~stall_flg) - id_reg_pc <= if_reg_pc; - if (_id_inst_T) + if (reset) begin + id_reg_pc <= 32'h0; id_reg_inst <= 32'h0; - else if (~stall_flg) - id_reg_inst <= io_imem_inst; - exe_reg_pc <= id_reg_pc; - exe_reg_wb_addr <= id_reg_inst[15:11]; - if (csignals_1 == 2'h0) - exe_reg_op1_data <= - id_reg_inst[25:21] == 5'h0 - ? 32'h0 - : id_reg_inst[25:21] == mem_reg_wb_addr & _id_rs2_data_T_2 - ? mem_reg_alu_out - : id_reg_inst[25:21] == wb_reg_wb_addr & _id_rs2_data_T_5 - ? wb_reg_wb_data - : _regfile_ext_R1_data; - else if (csignals_1 == 2'h1) - exe_reg_op1_data <= id_reg_pc; - else + exe_reg_pc <= 32'h0; + exe_reg_wb_addr <= 5'h0; exe_reg_op1_data <= 32'h0; - if (_csignals_T_95 == 3'h5) - exe_reg_op2_data <= {id_inst[15:0], 16'h0}; - else if (_csignals_T_95 == 3'h4) - exe_reg_op2_data <= {{4{id_inst[25]}}, id_inst[25:0], 2'h0}; - else if (_csignals_T_95 == 3'h3 | _csignals_T_95 == 3'h2) - exe_reg_op2_data <= {{16{id_inst[15]}}, id_inst[15:0]}; - else if (_csignals_T_95 != 3'h1 | _id_rs2_data_T) exe_reg_op2_data <= 32'h0; - else - exe_reg_op2_data <= _id_rs2_data_T_8; - exe_reg_rs2_data <= _id_rs2_data_T ? 32'h0 : _id_rs2_data_T_8; - if (_csignals_T_5 | _csignals_T_7) - exe_reg_exe_fun <= 5'h1; - else if (_csignals_T_9) - exe_reg_exe_fun <= 5'h2; - else if (_csignals_T_11) - exe_reg_exe_fun <= 5'h3; - else if (_csignals_T_13) - exe_reg_exe_fun <= 5'h4; - else if (_csignals_T_15) - exe_reg_exe_fun <= 5'h5; - else if (_csignals_T_17) - exe_reg_exe_fun <= 5'h3; - else if (_csignals_T_19) - exe_reg_exe_fun <= 5'h4; - else if (_csignals_T_21) - exe_reg_exe_fun <= 5'h6; - else if (_csignals_T_23) - exe_reg_exe_fun <= 5'h7; - else if (_csignals_T_25) - exe_reg_exe_fun <= 5'h8; - else if (_csignals_T_27) - exe_reg_exe_fun <= 5'h9; - else if (_csignals_T_29) - exe_reg_exe_fun <= 5'hB; - else if (_csignals_T_31) - exe_reg_exe_fun <= 5'hC; - else if (_csignals_T_33) - exe_reg_exe_fun <= 5'h1; - else if (_csignals_T_35) - exe_reg_exe_fun <= 5'hE; - else - exe_reg_exe_fun <= {4'h0, _csignals_T_37}; - exe_reg_mem_wen <= 2'h0; - if (_csignals_T_5 | _csignals_T_7 | _csignals_T_9 | _csignals_T_11 | _csignals_T_13 - | _csignals_T_15 | _csignals_T_17 | _csignals_T_19 | _csignals_T_21 - | _csignals_T_23 | _csignals_T_25 | _csignals_T_27) begin - exe_reg_rf_wen <= 2'h1; - exe_reg_wb_sel <= 3'h1; - end - else if (_GEN_2) begin - exe_reg_rf_wen <= 2'h0; - exe_reg_wb_sel <= 3'h0; - end - else if (_csignals_T_33) begin - exe_reg_rf_wen <= 2'h1; - exe_reg_wb_sel <= 3'h3; - end - else if (_csignals_T_35) begin + exe_reg_rt_data <= 32'h0; + exe_reg_exe_fun <= 5'h0; + exe_reg_mem_wen <= 2'h0; exe_reg_rf_wen <= 2'h0; exe_reg_wb_sel <= 3'h0; + exe_reg_imm_i_sext <= 32'h0; + mem_reg_pc <= 32'h0; + mem_reg_wb_addr <= 5'h0; + mem_reg_rt_data <= 32'h0; + mem_reg_mem_wen <= 2'h0; + mem_reg_rf_wen <= 2'h0; + mem_reg_wb_sel <= 3'h0; + mem_reg_alu_out <= 32'h0; + wb_reg_wb_addr <= 5'h0; + wb_reg_rf_wen <= 2'h0; + wb_reg_wb_data <= 32'h0; + if_reg_pc <= 32'h0; end else begin - exe_reg_rf_wen <= {1'h0, _csignals_T_37}; - exe_reg_wb_sel <= {2'h0, _csignals_T_37}; + automatic logic _id_rt_data_T_5; + automatic logic _id_rt_data_T; + automatic logic _id_rt_data_T_3; + automatic logic _id_rt_data_T_6; + automatic logic _id_rt_data_T_9; + automatic logic [31:0] id_imm_i_sext; + automatic logic _csignals_T_1 = id_inst[31:26] == 6'h23; + automatic logic _csignals_T_3; + automatic logic [11:0] _GEN_1 = {id_inst[31:26], id_inst[5:0]}; + automatic logic _csignals_T_5 = _GEN_1 == 12'h20; + automatic logic _csignals_T_7 = id_inst[31:26] == 6'h8; + automatic logic _csignals_T_9; + automatic logic _csignals_T_11; + automatic logic _csignals_T_13; + automatic logic _csignals_T_15; + automatic logic _csignals_T_17; + automatic logic _csignals_T_19; + automatic logic _csignals_T_21; + automatic logic _csignals_T_23; + automatic logic _csignals_T_25; + automatic logic [16:0] _GEN_2 = {id_inst[31:21], id_inst[5:0]}; + automatic logic _csignals_T_27; + automatic logic _csignals_T_29; + automatic logic _csignals_T_31; + automatic logic _csignals_T_33; + automatic logic _csignals_T_35; + automatic logic _GEN_3; + automatic logic _GEN_4; + automatic logic [1:0] csignals_1; + automatic logic [2:0] csignals_2; + automatic logic _GEN_5; + automatic logic _GEN_6; + _id_rt_data_T_5 = mem_reg_rf_wen == 2'h1; + _id_rt_data_T = id_inst[20:16] == 5'h0; + _id_rt_data_T_3 = id_inst[20:16] == exe_reg_wb_addr & _id_rt_data_T_2; + _id_rt_data_T_6 = id_inst[20:16] == mem_reg_wb_addr & _id_rt_data_T_5; + _id_rt_data_T_9 = id_inst[20:16] == wb_reg_wb_addr & _id_rt_data_T_8; + id_imm_i_sext = {{16{id_inst[15]}}, id_inst[15:0]}; + _csignals_T_3 = id_inst[31:26] == 6'h2B; + _csignals_T_9 = _GEN_1 == 12'h22; + _csignals_T_11 = _GEN_1 == 12'h24; + _csignals_T_13 = _GEN_1 == 12'h25; + _csignals_T_15 = _GEN_1 == 12'h26; + _csignals_T_17 = id_inst[31:26] == 6'hC; + _csignals_T_19 = id_inst[31:26] == 6'hD; + _csignals_T_21 = _GEN_1 == 12'h2A; + _csignals_T_23 = id_inst[31:26] == 6'h4; + _csignals_T_25 = id_inst[31:26] == 6'h5; + _csignals_T_27 = _GEN_2 == 17'h0; + _csignals_T_29 = _GEN_2 == 17'h2; + _csignals_T_31 = _GEN_2 == 17'h3; + _csignals_T_33 = id_inst[31:26] == 6'h3; + _csignals_T_35 = _GEN_1 == 12'h8; + _GEN_3 = _csignals_T_27 | _csignals_T_29 | _csignals_T_31; + _GEN_4 = _csignals_T_21 | _csignals_T_23 | _csignals_T_25 | _GEN_3; + csignals_1 = + _csignals_T_1 | _csignals_T_3 | _csignals_T_5 | _csignals_T_7 | _csignals_T_9 + | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 | _csignals_T_17 + | _csignals_T_19 | _GEN_4 | ~_csignals_T_33 + ? 2'h1 + : 2'h2; + csignals_2 = + _csignals_T_1 | _csignals_T_3 + ? 3'h2 + : _csignals_T_5 + ? 3'h1 + : _csignals_T_7 + ? 3'h2 + : _csignals_T_9 | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 + ? 3'h1 + : _csignals_T_17 | _csignals_T_19 + ? 3'h2 + : _GEN_4 + ? 3'h1 + : _csignals_T_33 ? 3'h4 : {2'h0, ~_csignals_T_35}; + _GEN_5 = _csignals_T_23 | _csignals_T_25; + _GEN_6 = + _csignals_T_5 | _csignals_T_7 | _csignals_T_9 | _csignals_T_11 | _csignals_T_13 + | _csignals_T_15 | _csignals_T_17 | _csignals_T_19 | _csignals_T_21; + if (~stall_flg) + id_reg_pc <= if_reg_pc; + if (_id_inst_T) + id_reg_inst <= 32'h20000000; + else if (~stall_flg) + id_reg_inst <= io_imem_inst; + exe_reg_pc <= id_reg_pc; + if ((_csignals_T_1 + ? 3'h2 + : _csignals_T_3 + ? 3'h0 + : _GEN_6 + ? 3'h1 + : _GEN_5 + ? 3'h0 + : _GEN_3 ? 3'h1 : _csignals_T_33 ? 3'h3 : 3'h0) == 3'h1 + & id_inst[31:26] == 6'h0) + exe_reg_wb_addr <= id_inst[15:11]; + else if (id_inst[31:26] == 6'h3) + exe_reg_wb_addr <= 5'h1F; + else + exe_reg_wb_addr <= id_inst[20:16]; + if (csignals_1 == 2'h1) begin + if (id_inst[25:21] == 5'h0) + exe_reg_op1_data <= 32'h0; + else if (id_inst[25:21] == exe_reg_wb_addr & _id_rt_data_T_2) begin + if (_exe_alu_out_T) + exe_reg_op1_data <= _exe_alu_out_T_1; + else if (_exe_alu_out_T_3) + exe_reg_op1_data <= _exe_alu_out_T_4; + else if (_exe_alu_out_T_6) + exe_reg_op1_data <= _exe_alu_out_T_7; + else if (_exe_alu_out_T_8) + exe_reg_op1_data <= _exe_alu_out_T_9; + else if (_exe_alu_out_T_10) + exe_reg_op1_data <= _exe_alu_out_T_11; + else if (_exe_alu_out_T_12) + exe_reg_op1_data <= _exe_alu_out_T_14[31:0]; + else if (_exe_alu_out_T_16) + exe_reg_op1_data <= _exe_alu_out_T_18; + else if (_exe_alu_out_T_19) + exe_reg_op1_data <= _exe_alu_out_T_22; + else if (_exe_alu_out_T_24) + exe_reg_op1_data <= _GEN_0; + else if (~_exe_alu_out_T_28) + exe_reg_op1_data <= 32'h0; + end + else if (id_inst[25:21] == mem_reg_wb_addr & _id_rt_data_T_5) + exe_reg_op1_data <= mem_wb_data; + else if (id_inst[25:21] == wb_reg_wb_addr & _id_rt_data_T_8) + exe_reg_op1_data <= wb_reg_wb_data; + else + exe_reg_op1_data <= _regfile_ext_R1_data; + end + else if (csignals_1 == 2'h2) + exe_reg_op1_data <= id_reg_pc; + else + exe_reg_op1_data <= 32'h0; + if (csignals_2 == 3'h1) begin + if (_id_rt_data_T) + exe_reg_op2_data <= 32'h0; + else if (_id_rt_data_T_3) begin + if (_exe_alu_out_T) + exe_reg_op2_data <= _exe_alu_out_T_1; + else if (_exe_alu_out_T_3) + exe_reg_op2_data <= _exe_alu_out_T_4; + else if (_exe_alu_out_T_6) + exe_reg_op2_data <= _exe_alu_out_T_7; + else if (_exe_alu_out_T_8) + exe_reg_op2_data <= _exe_alu_out_T_9; + else if (_exe_alu_out_T_10) + exe_reg_op2_data <= _exe_alu_out_T_11; + else if (_exe_alu_out_T_12) + exe_reg_op2_data <= _exe_alu_out_T_14[31:0]; + else if (_exe_alu_out_T_16) + exe_reg_op2_data <= _exe_alu_out_T_18; + else if (_exe_alu_out_T_19) + exe_reg_op2_data <= _exe_alu_out_T_22; + else if (_exe_alu_out_T_24) + exe_reg_op2_data <= _GEN_0; + else + exe_reg_op2_data <= _exe_alu_out_T_29; + end + else if (_id_rt_data_T_6) + exe_reg_op2_data <= mem_wb_data; + else if (_id_rt_data_T_9) + exe_reg_op2_data <= wb_reg_wb_data; + else + exe_reg_op2_data <= _regfile_ext_R0_data; + end + else if (csignals_2 == 3'h2) + exe_reg_op2_data <= id_imm_i_sext; + else if (csignals_2 == 3'h4) + exe_reg_op2_data <= {4'h0, id_inst[25:0], 2'h0}; + else + exe_reg_op2_data <= 32'h0; + exe_reg_rt_data <= + _id_rt_data_T + ? 32'h0 + : _id_rt_data_T_3 + ? exe_alu_out + : _id_rt_data_T_6 + ? mem_wb_data + : _id_rt_data_T_9 ? wb_reg_wb_data : _regfile_ext_R0_data; + if (_csignals_T_1 | _csignals_T_3 | _csignals_T_5 | _csignals_T_7) + exe_reg_exe_fun <= 5'h1; + else if (_csignals_T_9) + exe_reg_exe_fun <= 5'h2; + else if (_csignals_T_11) + exe_reg_exe_fun <= 5'h3; + else if (_csignals_T_13) + exe_reg_exe_fun <= 5'h4; + else if (_csignals_T_15) + exe_reg_exe_fun <= 5'h5; + else if (_csignals_T_17) + exe_reg_exe_fun <= 5'h3; + else if (_csignals_T_19) + exe_reg_exe_fun <= 5'h4; + else if (_csignals_T_21) + exe_reg_exe_fun <= 5'h9; + else if (_csignals_T_23) + exe_reg_exe_fun <= 5'hB; + else if (_csignals_T_25) + exe_reg_exe_fun <= 5'hC; + else if (_csignals_T_27) + exe_reg_exe_fun <= 5'h6; + else if (_csignals_T_29) + exe_reg_exe_fun <= 5'h7; + else if (_csignals_T_31) + exe_reg_exe_fun <= 5'h8; + else if (_csignals_T_33) + exe_reg_exe_fun <= 5'h1; + else if (_csignals_T_35) + exe_reg_exe_fun <= 5'hD; + else + exe_reg_exe_fun <= 5'h0; + exe_reg_mem_wen <= _csignals_T_1 ? 2'h0 : {1'h0, _csignals_T_3}; + if (_csignals_T_1) begin + exe_reg_rf_wen <= 2'h1; + exe_reg_wb_sel <= 3'h2; + end + else if (_csignals_T_3) begin + exe_reg_rf_wen <= 2'h0; + exe_reg_wb_sel <= 3'h0; + end + else if (_GEN_6) begin + exe_reg_rf_wen <= 2'h1; + exe_reg_wb_sel <= 3'h1; + end + else if (_GEN_5) begin + exe_reg_rf_wen <= 2'h0; + exe_reg_wb_sel <= 3'h0; + end + else begin + exe_reg_rf_wen <= + {1'h0, _csignals_T_27 | _csignals_T_29 | _csignals_T_31 | _csignals_T_33}; + if (_GEN_3) + exe_reg_wb_sel <= 3'h1; + else if (_csignals_T_33) + exe_reg_wb_sel <= 3'h3; + else + exe_reg_wb_sel <= 3'h0; + end + exe_reg_imm_i_sext <= id_imm_i_sext; + mem_reg_pc <= exe_reg_pc; + mem_reg_wb_addr <= exe_reg_wb_addr; + mem_reg_rt_data <= exe_reg_rt_data; + mem_reg_mem_wen <= exe_reg_mem_wen; + mem_reg_rf_wen <= exe_reg_rf_wen; + mem_reg_wb_sel <= exe_reg_wb_sel; + mem_reg_alu_out <= exe_alu_out; + wb_reg_wb_addr <= mem_reg_wb_addr; + wb_reg_rf_wen <= mem_reg_rf_wen; + wb_reg_wb_data <= mem_wb_data; + if (exe_br_flg) + if_reg_pc <= {exe_reg_imm_i_sext[29:0], 2'h0} + exe_reg_pc; + else if (exe_jmp_flg) + if_reg_pc <= exe_alu_out; + else if (~stall_flg) + if_reg_pc <= if_reg_pc + 32'h4; end - exe_reg_imm_b_sext <= {{16{id_inst[15]}}, id_inst[15:0]}; - mem_reg_pc <= exe_reg_pc; - mem_reg_wb_addr <= exe_reg_wb_addr; - mem_reg_alu_out <= exe_alu_out; - mem_reg_rs2_data <= exe_reg_rs2_data; - mem_reg_rf_wen <= exe_reg_rf_wen; - mem_reg_wb_sel <= exe_reg_wb_sel; - mem_reg_mem_wen <= exe_reg_mem_wen; - wb_reg_wb_addr <= mem_reg_wb_addr; - wb_reg_rf_wen <= mem_reg_rf_wen; - wb_reg_wb_data <= - mem_reg_wb_sel == 3'h3 - ? mem_reg_pc + 32'h4 - : mem_reg_wb_sel == 3'h2 ? io_dmem_rdata : mem_reg_alu_out; - if (reset) - if_reg_pc <= 32'h0; - else if (exe_br_flg) - if_reg_pc <= exe_reg_pc + exe_reg_imm_b_sext; - else if (exe_jmp_flg) - if_reg_pc <= exe_alu_out; - else if (~stall_flg) - if_reg_pc <= if_reg_pc + 32'h4; end // always @(posedge) regfile_32x32 regfile_ext ( - .R0_addr (id_reg_inst[20:16]), + .R0_addr (id_inst[20:16]), .R0_en (1'h1), .R0_clk (clock), .R0_data (_regfile_ext_R0_data), - .R1_addr (id_reg_inst[25:21]), + .R1_addr (id_inst[25:21]), .R1_en (1'h1), .R1_clk (clock), .R1_data (_regfile_ext_R1_data), .W0_addr (wb_reg_wb_addr), - .W0_en (_id_rs2_data_T_5), + .W0_en (_id_rt_data_T_8 & (|wb_reg_wb_addr)), .W0_clk (clock), + .io_anodes (io_anodes), + .io_segments (io_segments), .W0_data (wb_reg_wb_data) ); assign io_imem_addr = if_reg_pc; assign io_dmem_addr = mem_reg_alu_out; assign io_dmem_wen = mem_reg_mem_wen[0]; - assign io_dmem_wdata = mem_reg_rs2_data; - assign io_exit = id_reg_inst == 32'h00000000; - assign s0_value = _regfile_ext_R0_data; + assign io_dmem_wdata = mem_reg_rt_data; + assign io_exit = id_reg_inst == 32'h114514; endmodule diff --git a/display.sv b/Display.sv similarity index 100% rename from display.sv rename to Display.sv diff --git a/Memory.sv b/Memory.sv index 1ee13a7..32e9c87 100755 --- a/Memory.sv +++ b/Memory.sv @@ -1,64 +1,98 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// +// Company: +// Engineer: +// // Create Date: 2024/12/28 11:28:52 -// Design Name: +// Design Name: // Module Name: Regfile -// Project Name: -// Target Devices: -// Tool Versions: -// Description: -// -// Dependencies: -// +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// // Revision: // Revision 0.01 - File Created // Additional Comments: -// +// ////////////////////////////////////////////////////////////////////////////////// - - -module mem_512x32( - input [8:0] R0_addr, +module mem_4096x8( + input [11:0] R0_addr, input R0_en, R0_clk, - output [31:0] R0_data, - input [8:0] R1_addr, + output [7:0] R0_data, + input [11:0] R1_addr, input R1_en, R1_clk, - output [31:0] R1_data, - input [8:0] W0_addr, + output [7:0] R1_data, + input [11:0] R2_addr, + input R2_en, + R2_clk, + output [7:0] R2_data, + input [11:0] R3_addr, + input R3_en, + R3_clk, + output [7:0] R3_data, + input [11:0] R4_addr, + input R4_en, + R4_clk, + output [7:0] R4_data, + input [11:0] R5_addr, + input R5_en, + R5_clk, + output [7:0] R5_data, + input [11:0] R6_addr, + input R6_en, + R6_clk, + output [7:0] R6_data, + input [11:0] R7_addr, + input R7_en, + R7_clk, + output [7:0] R7_data, + input [11:0] W0_addr, input W0_en, W0_clk, - input [31:0] W0_data + input [7:0] W0_data, + input [11:0] W1_addr, + input W1_en, + W1_clk, + input [7:0] W1_data, + input [11:0] W2_addr, + input W2_en, + W2_clk, + input [7:0] W2_data, + input [11:0] W3_addr, + input W3_en, + W3_clk, + input [7:0] W3_data ); - reg [31:0] Memory[0:511]; - reg _R0_en_d0; - reg [8:0] _R0_addr_d0; - always @(posedge R0_clk) begin - _R0_en_d0 <= R0_en; - _R0_addr_d0 <= R0_addr; - end // always @(posedge) - reg _R1_en_d0; - reg [8:0] _R1_addr_d0; - always @(posedge R1_clk) begin - _R1_en_d0 <= R1_en; - _R1_addr_d0 <= R1_addr; - end // always @(posedge) + reg [7:0] Memory[0:4095]; always @(posedge W0_clk) begin if (W0_en & 1'h1) Memory[W0_addr] <= W0_data; + if (W1_en & 1'h1) + Memory[W1_addr] <= W1_data; + if (W2_en & 1'h1) + Memory[W2_addr] <= W2_data; + if (W3_en & 1'h1) + Memory[W3_addr] <= W3_data; end // always @(posedge) `ifdef ENABLE_INITIAL_MEM_ initial $readmemh("src/hex/mem.hex", Memory); `endif // ENABLE_INITIAL_MEM_ - assign R0_data = _R0_en_d0 ? Memory[_R0_addr_d0] : 32'bx; - assign R1_data = _R1_en_d0 ? Memory[_R1_addr_d0] : 32'bx; + assign R0_data = R0_en ? Memory[R0_addr] : 8'bx; + assign R1_data = R1_en ? Memory[R1_addr] : 8'bx; + assign R2_data = R2_en ? Memory[R2_addr] : 8'bx; + assign R3_data = R3_en ? Memory[R3_addr] : 8'bx; + assign R4_data = R4_en ? Memory[R4_addr] : 8'bx; + assign R5_data = R5_en ? Memory[R5_addr] : 8'bx; + assign R6_data = R6_en ? Memory[R6_addr] : 8'bx; + assign R7_data = R7_en ? Memory[R7_addr] : 8'bx; endmodule module Memory( @@ -71,18 +105,69 @@ module Memory( input [31:0] io_dmem_wdata ); - mem_512x32 mem_ext ( - .R0_addr (io_imem_addr[10:2]), + wire [7:0] _mem_ext_R0_data; + wire [7:0] _mem_ext_R1_data; + wire [7:0] _mem_ext_R2_data; + wire [7:0] _mem_ext_R3_data; + wire [7:0] _mem_ext_R4_data; + wire [7:0] _mem_ext_R5_data; + wire [7:0] _mem_ext_R6_data; + wire [7:0] _mem_ext_R7_data; + wire [11:0] _io_dmem_rdata_T = io_dmem_addr[11:0] + 12'h3; + wire [11:0] _io_dmem_rdata_T_3 = io_dmem_addr[11:0] + 12'h2; + wire [11:0] _io_dmem_rdata_T_6 = io_dmem_addr[11:0] + 12'h1; + mem_4096x8 mem_ext ( + .R0_addr (io_imem_addr[11:0]), .R0_en (1'h1), .R0_clk (clock), - .R0_data (io_imem_inst), - .R1_addr (io_dmem_addr[10:2]), + .R0_data (_mem_ext_R0_data), + .R1_addr (io_imem_addr[11:0] + 12'h1), .R1_en (1'h1), .R1_clk (clock), - .R1_data (io_dmem_rdata), - .W0_addr (io_dmem_addr[10:2]), + .R1_data (_mem_ext_R1_data), + .R2_addr (io_imem_addr[11:0] + 12'h2), + .R2_en (1'h1), + .R2_clk (clock), + .R2_data (_mem_ext_R2_data), + .R3_addr (io_imem_addr[11:0] + 12'h3), + .R3_en (1'h1), + .R3_clk (clock), + .R3_data (_mem_ext_R3_data), + .R4_addr (io_dmem_addr[11:0]), + .R4_en (1'h1), + .R4_clk (clock), + .R4_data (_mem_ext_R4_data), + .R5_addr (_io_dmem_rdata_T_6), + .R5_en (1'h1), + .R5_clk (clock), + .R5_data (_mem_ext_R5_data), + .R6_addr (_io_dmem_rdata_T_3), + .R6_en (1'h1), + .R6_clk (clock), + .R6_data (_mem_ext_R6_data), + .R7_addr (_io_dmem_rdata_T), + .R7_en (1'h1), + .R7_clk (clock), + .R7_data (_mem_ext_R7_data), + .W0_addr (_io_dmem_rdata_T), .W0_en (io_dmem_wen), .W0_clk (clock), - .W0_data (io_dmem_wdata) + .W0_data (io_dmem_wdata[31:24]), + .W1_addr (_io_dmem_rdata_T_3), + .W1_en (io_dmem_wen), + .W1_clk (clock), + .W1_data (io_dmem_wdata[23:16]), + .W2_addr (_io_dmem_rdata_T_6), + .W2_en (io_dmem_wen), + .W2_clk (clock), + .W2_data (io_dmem_wdata[15:8]), + .W3_addr (io_dmem_addr[11:0]), + .W3_en (io_dmem_wen), + .W3_clk (clock), + .W3_data (io_dmem_wdata[7:0]) ); + assign io_imem_inst = + {_mem_ext_R3_data, _mem_ext_R2_data, _mem_ext_R1_data, _mem_ext_R0_data}; + assign io_dmem_rdata = + {_mem_ext_R7_data, _mem_ext_R6_data, _mem_ext_R5_data, _mem_ext_R4_data}; endmodule diff --git a/Regfile.sv b/Regfile.sv index 27e1e0d..f9781d6 100755 --- a/Regfile.sv +++ b/Regfile.sv @@ -1,25 +1,23 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// +// Company: +// Engineer: +// // Create Date: 2024/12/28 11:28:52 -// Design Name: +// Design Name: // Module Name: Regfile -// Project Name: -// Target Devices: -// Tool Versions: -// Description: -// -// Dependencies: -// +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// // Revision: // Revision 0.01 - File Created // Additional Comments: -// +// ////////////////////////////////////////////////////////////////////////////////// - - module regfile_32x32( input [4:0] R0_addr, input R0_en, @@ -32,27 +30,25 @@ module regfile_32x32( input [4:0] W0_addr, input W0_en, W0_clk, + output [3:0] io_anodes, + output [6:0] io_segments, input [31:0] W0_data ); reg [31:0] Memory[0:31]; - reg _R0_en_d0; - reg [4:0] _R0_addr_d0; - always @(posedge R0_clk) begin - _R0_en_d0 <= R0_en; - _R0_addr_d0 <= R0_addr; - end // always @(posedge) - reg _R1_en_d0; - reg [4:0] _R1_addr_d0; - always @(posedge R1_clk) begin - _R1_en_d0 <= R1_en; - _R1_addr_d0 <= R1_addr; - end // always @(posedge) always @(posedge W0_clk) begin if (W0_en & 1'h1) Memory[W0_addr] <= W0_data; end // always @(posedge) - assign R0_data = _R0_en_d0 ? Memory[_R0_addr_d0] : 32'bx; - assign R1_data = _R1_en_d0 ? Memory[_R1_addr_d0] : 32'bx; - + assign R0_data = R0_en ? Memory[R0_addr] : 32'bx; + assign R1_data = R1_en ? Memory[R1_addr] : 32'bx; + wire [31:0] reg16_value = Memory[16]; + DynamicDisplay display ( + .clock (W0_clk), + .reset (1'b0), + .reg_result (reg16_value), + .io_anodes (io_anodes), + .io_segments (io_segments) + ); endmodule + diff --git a/Top.sv b/Top.sv index 0dcb976..fdd56e8 100755 --- a/Top.sv +++ b/Top.sv @@ -1,31 +1,30 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// +// Company: +// Engineer: +// // Create Date: 2024/12/28 11:25:38 -// Design Name: +// Design Name: // Module Name: Core -// Project Name: -// Target Devices: -// Tool Versions: -// Description: -// -// Dependencies: -// +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// // Revision: // Revision 0.01 - File Created // Additional Comments: -// +// ////////////////////////////////////////////////////////////////////////////////// - module Top( input clock, reset, output io_exit, - output [3:0] io_anodes, // 新增:七段显示器的阳极控制信号 - output [6:0] io_segments // 新增:七段显示器的段控制信号 + output [3:0] io_anodes, + output [6:0] io_segments ); wire [31:0] _memory_io_imem_inst; @@ -34,7 +33,6 @@ module Top( wire [31:0] _core_io_dmem_addr; wire _core_io_dmem_wen; wire [31:0] _core_io_dmem_wdata; - wire [31:0] _core_s0_value; Core core ( .clock (clock), .reset (reset), @@ -44,8 +42,9 @@ module Top( .io_dmem_rdata (_memory_io_dmem_rdata), .io_dmem_wen (_core_io_dmem_wen), .io_dmem_wdata (_core_io_dmem_wdata), - .io_exit (io_exit), - .s0_value (_core_s0_value) + .io_anodes (io_anodes), + .io_segments (io_segments), + .io_exit (io_exit) ); Memory memory ( .clock (clock), @@ -56,13 +55,4 @@ module Top( .io_dmem_wen (_core_io_dmem_wen), .io_dmem_wdata (_core_io_dmem_wdata) ); - // 实例化 DynamicDisplay 模块 - DynamicDisplay display ( - .clock (clock), - .reset (reset), - .reg_result (_core_s0_value), // 连接 $s0 的值 - .io_anodes (io_anodes), // 连接七段显示器的阳极控制信号 - .io_segments(io_segments) // 连接七段显示器的段控制信号 - ); endmodule - diff --git a/TopOrigin.sv b/TopOrigin.sv index cebee7d..fd6fcc3 100755 --- a/TopOrigin.sv +++ b/TopOrigin.sv @@ -1,15 +1,4 @@ // Generated by CIRCT firtool-1.62.0 -// Standard header to adapt well known macros for prints and assertions. - -// Users can define 'PRINTF_COND' to add an extra gate to prints. -`ifndef PRINTF_COND_ - `ifdef PRINTF_COND - `define PRINTF_COND_ (`PRINTF_COND) - `else // PRINTF_COND - `define PRINTF_COND_ 1 - `endif // PRINTF_COND -`endif // not def PRINTF_COND_ - // VCS coverage exclude_file module regfile_32x32( input [4:0] R0_addr, @@ -47,239 +36,395 @@ module Core( output io_exit ); + wire exe_jmp_flg; + wire exe_br_flg; wire [31:0] _regfile_ext_R0_data; wire [31:0] _regfile_ext_R1_data; - reg [31:0] pc_reg; - wire [31:0] _pc_plus4_T = pc_reg + 32'h4; - wire [11:0] _GEN = {io_imem_inst[31:26], io_imem_inst[5:0]}; - wire jmp_flg = io_imem_inst[31:26] == 6'h3 | _GEN == 12'h8; - wire [31:0] rs_data = (|(io_imem_inst[25:21])) ? _regfile_ext_R0_data : 32'h0; - wire [31:0] rt_data = (|(io_imem_inst[20:16])) ? _regfile_ext_R1_data : 32'h0; - wire _csignals_T_1 = io_imem_inst[31:26] == 6'h23; - wire _csignals_T_3 = io_imem_inst[31:26] == 6'h2B; - wire _csignals_T_5 = _GEN == 12'h20; - wire _csignals_T_7 = io_imem_inst[31:26] == 6'h8; - wire _csignals_T_9 = _GEN == 12'h22; - wire _csignals_T_11 = _GEN == 12'h24; - wire _csignals_T_13 = _GEN == 12'h25; - wire _csignals_T_15 = _GEN == 12'h26; - wire _csignals_T_17 = io_imem_inst[31:26] == 6'hC; - wire _csignals_T_19 = io_imem_inst[31:26] == 6'hD; - wire _csignals_T_21 = _GEN == 12'h2A; - wire _csignals_T_23 = io_imem_inst[31:26] == 6'h4; - wire _csignals_T_25 = io_imem_inst[31:26] == 6'h5; - wire [16:0] _GEN_0 = {io_imem_inst[31:21], io_imem_inst[5:0]}; - wire _csignals_T_27 = _GEN_0 == 17'h0; - wire _csignals_T_29 = _GEN_0 == 17'h2; - wire _csignals_T_31 = _GEN_0 == 17'h3; - wire _csignals_T_33 = io_imem_inst[31:26] == 6'h3; - wire _csignals_T_35 = _GEN == 12'h8; - wire [4:0] csignals_0 = - _csignals_T_1 | _csignals_T_3 | _csignals_T_5 | _csignals_T_7 - ? 5'h1 - : _csignals_T_9 - ? 5'h2 - : _csignals_T_11 - ? 5'h3 - : _csignals_T_13 - ? 5'h4 - : _csignals_T_15 - ? 5'h5 - : _csignals_T_17 - ? 5'h3 - : _csignals_T_19 - ? 5'h4 - : _csignals_T_21 - ? 5'h9 - : _csignals_T_23 - ? 5'hB - : _csignals_T_25 - ? 5'hC - : _csignals_T_27 - ? 5'h6 - : _csignals_T_29 - ? 5'h7 - : _csignals_T_31 - ? 5'h8 - : _csignals_T_33 - ? 5'h1 - : _csignals_T_35 ? 5'hD : 5'h0; - wire _GEN_1 = _csignals_T_27 | _csignals_T_29 | _csignals_T_31; - wire _GEN_2 = _csignals_T_21 | _csignals_T_23 | _csignals_T_25 | _GEN_1; - wire [1:0] csignals_1 = - _csignals_T_1 | _csignals_T_3 | _csignals_T_5 | _csignals_T_7 | _csignals_T_9 - | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 | _csignals_T_17 | _csignals_T_19 - | _GEN_2 | ~_csignals_T_33 - ? 2'h1 - : 2'h2; - wire [2:0] csignals_2 = - _csignals_T_1 | _csignals_T_3 - ? 3'h2 - : _csignals_T_5 - ? 3'h1 - : _csignals_T_7 - ? 3'h2 - : _csignals_T_9 | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 - ? 3'h1 - : _csignals_T_17 | _csignals_T_19 - ? 3'h2 - : _GEN_2 ? 3'h1 : _csignals_T_33 ? 3'h4 : {2'h0, ~_csignals_T_35}; - wire _GEN_3 = _csignals_T_23 | _csignals_T_25; - wire _GEN_4 = - _csignals_T_5 | _csignals_T_7 | _csignals_T_9 | _csignals_T_11 | _csignals_T_13 - | _csignals_T_15 | _csignals_T_17 | _csignals_T_19 | _csignals_T_21; - wire [1:0] csignals_4 = - _csignals_T_1 - ? 2'h1 - : _csignals_T_3 - ? 2'h0 - : _GEN_4 - ? 2'h1 - : _GEN_3 - ? 2'h0 - : {1'h0, - _csignals_T_27 | _csignals_T_29 | _csignals_T_31 | _csignals_T_33}; - wire [2:0] csignals_5 = - _csignals_T_1 - ? 3'h2 - : _csignals_T_3 - ? 3'h0 - : _GEN_4 ? 3'h1 : _GEN_3 ? 3'h0 : _GEN_1 ? 3'h1 : _csignals_T_33 ? 3'h3 : 3'h0; - wire _op1_data_T = csignals_1 == 2'h1; - wire _op1_data_T_1 = csignals_1 == 2'h2; - wire [31:0] op1_data = _op1_data_T ? rs_data : _op1_data_T_1 ? pc_reg : 32'h0; - wire [31:0] op2_data = - csignals_2 == 3'h1 - ? rt_data - : csignals_2 == 3'h2 - ? {{16{io_imem_inst[15]}}, io_imem_inst[15:0]} - : csignals_2 == 3'h4 ? {4'h0, io_imem_inst[25:0], 2'h0} : 32'h0; - wire _alu_out_T = csignals_0 == 5'h1; - wire [31:0] _alu_out_T_1 = op1_data + op2_data; - wire _alu_out_T_3 = csignals_0 == 5'h2; - wire [31:0] _alu_out_T_4 = op1_data - op2_data; - wire _alu_out_T_6 = csignals_0 == 5'h3; - wire [31:0] _alu_out_T_7 = op1_data & op2_data; - wire _alu_out_T_8 = csignals_0 == 5'h4; - wire [31:0] _alu_out_T_9 = op1_data | op2_data; - wire _alu_out_T_10 = csignals_0 == 5'h5; - wire [31:0] _alu_out_T_11 = op1_data ^ op2_data; - wire _alu_out_T_12 = csignals_0 == 5'h6; - wire [62:0] _alu_out_T_14 = {31'h0, op1_data} << op2_data[4:0]; - wire _alu_out_T_16 = csignals_0 == 5'h7; - wire [31:0] _GEN_5 = {27'h0, op2_data[4:0]}; - wire [31:0] _alu_out_T_18 = op1_data >> _GEN_5; - wire _alu_out_T_19 = csignals_0 == 5'h8; - wire [31:0] _alu_out_T_22 = $signed($signed(op1_data) >>> _GEN_5); - wire _alu_out_T_24 = csignals_0 == 5'h9; - wire _alu_out_T_28 = csignals_0 == 5'hD; - wire [31:0] _GEN_6 = {31'h0, $signed(op1_data) < $signed(op2_data)}; - wire [31:0] alu_out = - _alu_out_T - ? _alu_out_T_1 - : _alu_out_T_3 - ? _alu_out_T_4 - : _alu_out_T_6 - ? _alu_out_T_7 - : _alu_out_T_8 - ? _alu_out_T_9 - : _alu_out_T_10 - ? _alu_out_T_11 - : _alu_out_T_12 - ? _alu_out_T_14[31:0] - : _alu_out_T_16 - ? _alu_out_T_18 - : _alu_out_T_19 - ? _alu_out_T_22 - : _alu_out_T_24 - ? _GEN_6 - : _alu_out_T_28 ? op1_data : 32'h0; - wire _br_flg_T_3 = op1_data == op2_data; - wire br_flg = - csignals_0 == 5'hB ? _br_flg_T_3 : csignals_0 == 5'hC & ~_br_flg_T_3; - wire [31:0] br_target = {{14{io_imem_inst[15]}}, io_imem_inst[15:0], 2'h0} + pc_reg; - wire [31:0] wb_data = - csignals_5 == 3'h2 ? io_dmem_rdata : csignals_5 == 3'h3 ? _pc_plus4_T : alu_out; - wire [4:0] wb_addr = - csignals_5 == 3'h1 & io_imem_inst[31:26] == 6'h0 - ? io_imem_inst[15:11] - : io_imem_inst[31:26] == 6'h3 ? 5'h1F : io_imem_inst[20:16]; - `ifndef SYNTHESIS - always @(posedge clock) begin - if ((`PRINTF_COND_) & ~reset) begin - $fwrite(32'h80000002, "---------------\n"); - $fwrite(32'h80000002, "io.imem.inst: 0x%x\n", io_imem_inst); - $fwrite(32'h80000002, "io.pc: 0x%x\ninst: 0x%b \n", pc_reg, io_imem_inst); - $fwrite(32'h80000002, "pc_next: 0x%x\n", - br_flg ? br_target : jmp_flg ? alu_out : _pc_plus4_T); - $fwrite(32'h80000002, "exe_fun: 0x%x\n", csignals_0); - $fwrite(32'h80000002, "rs_addr: 0x%x\n", io_imem_inst[25:21]); - $fwrite(32'h80000002, "rt_addr: 0x%x\n", io_imem_inst[20:16]); - $fwrite(32'h80000002, "rd_addr: 0x%x\n", io_imem_inst[15:11]); - $fwrite(32'h80000002, "reg: 0x%x\n", _regfile_ext_R1_data); - $fwrite(32'h80000002, "rf_wen: 0x%x\n", csignals_4); - $fwrite(32'h80000002, "rs_data: 0x%x\n", rs_data); - $fwrite(32'h80000002, "rt_data: 0x%x\n", rt_data); - $fwrite(32'h80000002, "wb_data: 0x%x\n", wb_data); - $fwrite(32'h80000002, "---------------\n"); - end - end // always @(posedge) - `endif // not def SYNTHESIS + reg [31:0] id_reg_pc; + reg [31:0] id_reg_inst; + reg [31:0] exe_reg_pc; + reg [4:0] exe_reg_wb_addr; + reg [31:0] exe_reg_op1_data; + reg [31:0] exe_reg_op2_data; + reg [31:0] exe_reg_rt_data; + reg [4:0] exe_reg_exe_fun; + reg [1:0] exe_reg_mem_wen; + reg [1:0] exe_reg_rf_wen; + reg [2:0] exe_reg_wb_sel; + reg [31:0] exe_reg_imm_i_sext; + reg [31:0] mem_reg_pc; + reg [4:0] mem_reg_wb_addr; + reg [31:0] mem_reg_rt_data; + reg [1:0] mem_reg_mem_wen; + reg [1:0] mem_reg_rf_wen; + reg [2:0] mem_reg_wb_sel; + reg [31:0] mem_reg_alu_out; + reg [4:0] wb_reg_wb_addr; + reg [1:0] wb_reg_rf_wen; + reg [31:0] wb_reg_wb_data; + reg [31:0] if_reg_pc; + wire _id_inst_T = exe_br_flg | exe_jmp_flg; + wire _id_rt_data_T_2 = exe_reg_rf_wen == 2'h1; + wire stall_flg = + _id_rt_data_T_2 & (|(id_reg_inst[25:21])) & id_reg_inst[25:21] == exe_reg_wb_addr + | _id_rt_data_T_2 & (|(id_reg_inst[20:16])) & id_reg_inst[20:16] == exe_reg_wb_addr; + wire [31:0] id_inst = _id_inst_T | stall_flg ? 32'h20000000 : id_reg_inst; + wire _id_rt_data_T_8 = wb_reg_rf_wen == 2'h1; + wire _exe_alu_out_T = exe_reg_exe_fun == 5'h1; + wire [31:0] _exe_alu_out_T_1 = exe_reg_op1_data + exe_reg_op2_data; + wire _exe_alu_out_T_3 = exe_reg_exe_fun == 5'h2; + wire [31:0] _exe_alu_out_T_4 = exe_reg_op1_data - exe_reg_op2_data; + wire _exe_alu_out_T_6 = exe_reg_exe_fun == 5'h3; + wire [31:0] _exe_alu_out_T_7 = exe_reg_op1_data & exe_reg_op2_data; + wire _exe_alu_out_T_8 = exe_reg_exe_fun == 5'h4; + wire [31:0] _exe_alu_out_T_9 = exe_reg_op1_data | exe_reg_op2_data; + wire _exe_alu_out_T_10 = exe_reg_exe_fun == 5'h5; + wire [31:0] _exe_alu_out_T_11 = exe_reg_op1_data ^ exe_reg_op2_data; + wire _exe_alu_out_T_12 = exe_reg_exe_fun == 5'h6; + wire [62:0] _exe_alu_out_T_14 = {31'h0, exe_reg_op1_data} << exe_reg_op2_data[4:0]; + wire _exe_alu_out_T_16 = exe_reg_exe_fun == 5'h7; + wire [31:0] _GEN = {27'h0, exe_reg_op2_data[4:0]}; + wire [31:0] _exe_alu_out_T_18 = exe_reg_op1_data >> _GEN; + wire _exe_alu_out_T_19 = exe_reg_exe_fun == 5'h8; + wire [31:0] _exe_alu_out_T_22 = $signed($signed(exe_reg_op1_data) >>> _GEN); + wire _exe_alu_out_T_24 = exe_reg_exe_fun == 5'h9; + wire _exe_alu_out_T_28 = exe_reg_exe_fun == 5'hD; + wire [31:0] _exe_alu_out_T_29 = _exe_alu_out_T_28 ? exe_reg_op1_data : 32'h0; + wire [31:0] _GEN_0 = {31'h0, $signed(exe_reg_op1_data) < $signed(exe_reg_op2_data)}; + wire [31:0] exe_alu_out = + _exe_alu_out_T + ? _exe_alu_out_T_1 + : _exe_alu_out_T_3 + ? _exe_alu_out_T_4 + : _exe_alu_out_T_6 + ? _exe_alu_out_T_7 + : _exe_alu_out_T_8 + ? _exe_alu_out_T_9 + : _exe_alu_out_T_10 + ? _exe_alu_out_T_11 + : _exe_alu_out_T_12 + ? _exe_alu_out_T_14[31:0] + : _exe_alu_out_T_16 + ? _exe_alu_out_T_18 + : _exe_alu_out_T_19 + ? _exe_alu_out_T_22 + : _exe_alu_out_T_24 ? _GEN_0 : _exe_alu_out_T_29; + assign exe_br_flg = + exe_reg_exe_fun == 5'hB + ? exe_reg_op1_data == exe_reg_op2_data + : exe_reg_exe_fun == 5'hC & exe_reg_op1_data != exe_reg_op2_data; + assign exe_jmp_flg = exe_reg_wb_sel == 3'h3; + wire [31:0] mem_wb_data = + mem_reg_wb_sel == 3'h2 + ? io_dmem_rdata + : mem_reg_wb_sel == 3'h3 ? mem_reg_pc + 32'h4 : mem_reg_alu_out; always @(posedge clock) begin - if (reset) - pc_reg <= 32'h0; - else if (br_flg) - pc_reg <= br_target; - else if (jmp_flg) begin - if (_alu_out_T) - pc_reg <= _alu_out_T_1; - else if (_alu_out_T_3) - pc_reg <= _alu_out_T_4; - else if (_alu_out_T_6) - pc_reg <= _alu_out_T_7; - else if (_alu_out_T_8) - pc_reg <= _alu_out_T_9; - else if (_alu_out_T_10) - pc_reg <= _alu_out_T_11; - else if (_alu_out_T_12) - pc_reg <= _alu_out_T_14[31:0]; - else if (_alu_out_T_16) - pc_reg <= _alu_out_T_18; - else if (_alu_out_T_19) - pc_reg <= _alu_out_T_22; - else if (_alu_out_T_24) - pc_reg <= _GEN_6; - else if (_alu_out_T_28) begin - if (_op1_data_T) - pc_reg <= rs_data; - else if (~_op1_data_T_1) - pc_reg <= 32'h0; - end - else - pc_reg <= 32'h0; + if (reset) begin + id_reg_pc <= 32'h0; + id_reg_inst <= 32'h0; + exe_reg_pc <= 32'h0; + exe_reg_wb_addr <= 5'h0; + exe_reg_op1_data <= 32'h0; + exe_reg_op2_data <= 32'h0; + exe_reg_rt_data <= 32'h0; + exe_reg_exe_fun <= 5'h0; + exe_reg_mem_wen <= 2'h0; + exe_reg_rf_wen <= 2'h0; + exe_reg_wb_sel <= 3'h0; + exe_reg_imm_i_sext <= 32'h0; + mem_reg_pc <= 32'h0; + mem_reg_wb_addr <= 5'h0; + mem_reg_rt_data <= 32'h0; + mem_reg_mem_wen <= 2'h0; + mem_reg_rf_wen <= 2'h0; + mem_reg_wb_sel <= 3'h0; + mem_reg_alu_out <= 32'h0; + wb_reg_wb_addr <= 5'h0; + wb_reg_rf_wen <= 2'h0; + wb_reg_wb_data <= 32'h0; + if_reg_pc <= 32'h0; + end + else begin + automatic logic _id_rt_data_T_5; + automatic logic _id_rt_data_T; + automatic logic _id_rt_data_T_3; + automatic logic _id_rt_data_T_6; + automatic logic _id_rt_data_T_9; + automatic logic [31:0] id_imm_i_sext; + automatic logic _csignals_T_1 = id_inst[31:26] == 6'h23; + automatic logic _csignals_T_3; + automatic logic [11:0] _GEN_1 = {id_inst[31:26], id_inst[5:0]}; + automatic logic _csignals_T_5 = _GEN_1 == 12'h20; + automatic logic _csignals_T_7 = id_inst[31:26] == 6'h8; + automatic logic _csignals_T_9; + automatic logic _csignals_T_11; + automatic logic _csignals_T_13; + automatic logic _csignals_T_15; + automatic logic _csignals_T_17; + automatic logic _csignals_T_19; + automatic logic _csignals_T_21; + automatic logic _csignals_T_23; + automatic logic _csignals_T_25; + automatic logic [16:0] _GEN_2 = {id_inst[31:21], id_inst[5:0]}; + automatic logic _csignals_T_27; + automatic logic _csignals_T_29; + automatic logic _csignals_T_31; + automatic logic _csignals_T_33; + automatic logic _csignals_T_35; + automatic logic _GEN_3; + automatic logic _GEN_4; + automatic logic [1:0] csignals_1; + automatic logic [2:0] csignals_2; + automatic logic _GEN_5; + automatic logic _GEN_6; + _id_rt_data_T_5 = mem_reg_rf_wen == 2'h1; + _id_rt_data_T = id_inst[20:16] == 5'h0; + _id_rt_data_T_3 = id_inst[20:16] == exe_reg_wb_addr & _id_rt_data_T_2; + _id_rt_data_T_6 = id_inst[20:16] == mem_reg_wb_addr & _id_rt_data_T_5; + _id_rt_data_T_9 = id_inst[20:16] == wb_reg_wb_addr & _id_rt_data_T_8; + id_imm_i_sext = {{16{id_inst[15]}}, id_inst[15:0]}; + _csignals_T_3 = id_inst[31:26] == 6'h2B; + _csignals_T_9 = _GEN_1 == 12'h22; + _csignals_T_11 = _GEN_1 == 12'h24; + _csignals_T_13 = _GEN_1 == 12'h25; + _csignals_T_15 = _GEN_1 == 12'h26; + _csignals_T_17 = id_inst[31:26] == 6'hC; + _csignals_T_19 = id_inst[31:26] == 6'hD; + _csignals_T_21 = _GEN_1 == 12'h2A; + _csignals_T_23 = id_inst[31:26] == 6'h4; + _csignals_T_25 = id_inst[31:26] == 6'h5; + _csignals_T_27 = _GEN_2 == 17'h0; + _csignals_T_29 = _GEN_2 == 17'h2; + _csignals_T_31 = _GEN_2 == 17'h3; + _csignals_T_33 = id_inst[31:26] == 6'h3; + _csignals_T_35 = _GEN_1 == 12'h8; + _GEN_3 = _csignals_T_27 | _csignals_T_29 | _csignals_T_31; + _GEN_4 = _csignals_T_21 | _csignals_T_23 | _csignals_T_25 | _GEN_3; + csignals_1 = + _csignals_T_1 | _csignals_T_3 | _csignals_T_5 | _csignals_T_7 | _csignals_T_9 + | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 | _csignals_T_17 + | _csignals_T_19 | _GEN_4 | ~_csignals_T_33 + ? 2'h1 + : 2'h2; + csignals_2 = + _csignals_T_1 | _csignals_T_3 + ? 3'h2 + : _csignals_T_5 + ? 3'h1 + : _csignals_T_7 + ? 3'h2 + : _csignals_T_9 | _csignals_T_11 | _csignals_T_13 | _csignals_T_15 + ? 3'h1 + : _csignals_T_17 | _csignals_T_19 + ? 3'h2 + : _GEN_4 + ? 3'h1 + : _csignals_T_33 ? 3'h4 : {2'h0, ~_csignals_T_35}; + _GEN_5 = _csignals_T_23 | _csignals_T_25; + _GEN_6 = + _csignals_T_5 | _csignals_T_7 | _csignals_T_9 | _csignals_T_11 | _csignals_T_13 + | _csignals_T_15 | _csignals_T_17 | _csignals_T_19 | _csignals_T_21; + if (~stall_flg) + id_reg_pc <= if_reg_pc; + if (_id_inst_T) + id_reg_inst <= 32'h20000000; + else if (~stall_flg) + id_reg_inst <= io_imem_inst; + exe_reg_pc <= id_reg_pc; + if ((_csignals_T_1 + ? 3'h2 + : _csignals_T_3 + ? 3'h0 + : _GEN_6 + ? 3'h1 + : _GEN_5 + ? 3'h0 + : _GEN_3 ? 3'h1 : _csignals_T_33 ? 3'h3 : 3'h0) == 3'h1 + & id_inst[31:26] == 6'h0) + exe_reg_wb_addr <= id_inst[15:11]; + else if (id_inst[31:26] == 6'h3) + exe_reg_wb_addr <= 5'h1F; + else + exe_reg_wb_addr <= id_inst[20:16]; + if (csignals_1 == 2'h1) begin + if (id_inst[25:21] == 5'h0) + exe_reg_op1_data <= 32'h0; + else if (id_inst[25:21] == exe_reg_wb_addr & _id_rt_data_T_2) begin + if (_exe_alu_out_T) + exe_reg_op1_data <= _exe_alu_out_T_1; + else if (_exe_alu_out_T_3) + exe_reg_op1_data <= _exe_alu_out_T_4; + else if (_exe_alu_out_T_6) + exe_reg_op1_data <= _exe_alu_out_T_7; + else if (_exe_alu_out_T_8) + exe_reg_op1_data <= _exe_alu_out_T_9; + else if (_exe_alu_out_T_10) + exe_reg_op1_data <= _exe_alu_out_T_11; + else if (_exe_alu_out_T_12) + exe_reg_op1_data <= _exe_alu_out_T_14[31:0]; + else if (_exe_alu_out_T_16) + exe_reg_op1_data <= _exe_alu_out_T_18; + else if (_exe_alu_out_T_19) + exe_reg_op1_data <= _exe_alu_out_T_22; + else if (_exe_alu_out_T_24) + exe_reg_op1_data <= _GEN_0; + else if (~_exe_alu_out_T_28) + exe_reg_op1_data <= 32'h0; + end + else if (id_inst[25:21] == mem_reg_wb_addr & _id_rt_data_T_5) + exe_reg_op1_data <= mem_wb_data; + else if (id_inst[25:21] == wb_reg_wb_addr & _id_rt_data_T_8) + exe_reg_op1_data <= wb_reg_wb_data; + else + exe_reg_op1_data <= _regfile_ext_R1_data; + end + else if (csignals_1 == 2'h2) + exe_reg_op1_data <= id_reg_pc; + else + exe_reg_op1_data <= 32'h0; + if (csignals_2 == 3'h1) begin + if (_id_rt_data_T) + exe_reg_op2_data <= 32'h0; + else if (_id_rt_data_T_3) begin + if (_exe_alu_out_T) + exe_reg_op2_data <= _exe_alu_out_T_1; + else if (_exe_alu_out_T_3) + exe_reg_op2_data <= _exe_alu_out_T_4; + else if (_exe_alu_out_T_6) + exe_reg_op2_data <= _exe_alu_out_T_7; + else if (_exe_alu_out_T_8) + exe_reg_op2_data <= _exe_alu_out_T_9; + else if (_exe_alu_out_T_10) + exe_reg_op2_data <= _exe_alu_out_T_11; + else if (_exe_alu_out_T_12) + exe_reg_op2_data <= _exe_alu_out_T_14[31:0]; + else if (_exe_alu_out_T_16) + exe_reg_op2_data <= _exe_alu_out_T_18; + else if (_exe_alu_out_T_19) + exe_reg_op2_data <= _exe_alu_out_T_22; + else if (_exe_alu_out_T_24) + exe_reg_op2_data <= _GEN_0; + else + exe_reg_op2_data <= _exe_alu_out_T_29; + end + else if (_id_rt_data_T_6) + exe_reg_op2_data <= mem_wb_data; + else if (_id_rt_data_T_9) + exe_reg_op2_data <= wb_reg_wb_data; + else + exe_reg_op2_data <= _regfile_ext_R0_data; + end + else if (csignals_2 == 3'h2) + exe_reg_op2_data <= id_imm_i_sext; + else if (csignals_2 == 3'h4) + exe_reg_op2_data <= {4'h0, id_inst[25:0], 2'h0}; + else + exe_reg_op2_data <= 32'h0; + exe_reg_rt_data <= + _id_rt_data_T + ? 32'h0 + : _id_rt_data_T_3 + ? exe_alu_out + : _id_rt_data_T_6 + ? mem_wb_data + : _id_rt_data_T_9 ? wb_reg_wb_data : _regfile_ext_R0_data; + if (_csignals_T_1 | _csignals_T_3 | _csignals_T_5 | _csignals_T_7) + exe_reg_exe_fun <= 5'h1; + else if (_csignals_T_9) + exe_reg_exe_fun <= 5'h2; + else if (_csignals_T_11) + exe_reg_exe_fun <= 5'h3; + else if (_csignals_T_13) + exe_reg_exe_fun <= 5'h4; + else if (_csignals_T_15) + exe_reg_exe_fun <= 5'h5; + else if (_csignals_T_17) + exe_reg_exe_fun <= 5'h3; + else if (_csignals_T_19) + exe_reg_exe_fun <= 5'h4; + else if (_csignals_T_21) + exe_reg_exe_fun <= 5'h9; + else if (_csignals_T_23) + exe_reg_exe_fun <= 5'hB; + else if (_csignals_T_25) + exe_reg_exe_fun <= 5'hC; + else if (_csignals_T_27) + exe_reg_exe_fun <= 5'h6; + else if (_csignals_T_29) + exe_reg_exe_fun <= 5'h7; + else if (_csignals_T_31) + exe_reg_exe_fun <= 5'h8; + else if (_csignals_T_33) + exe_reg_exe_fun <= 5'h1; + else if (_csignals_T_35) + exe_reg_exe_fun <= 5'hD; + else + exe_reg_exe_fun <= 5'h0; + exe_reg_mem_wen <= _csignals_T_1 ? 2'h0 : {1'h0, _csignals_T_3}; + if (_csignals_T_1) begin + exe_reg_rf_wen <= 2'h1; + exe_reg_wb_sel <= 3'h2; + end + else if (_csignals_T_3) begin + exe_reg_rf_wen <= 2'h0; + exe_reg_wb_sel <= 3'h0; + end + else if (_GEN_6) begin + exe_reg_rf_wen <= 2'h1; + exe_reg_wb_sel <= 3'h1; + end + else if (_GEN_5) begin + exe_reg_rf_wen <= 2'h0; + exe_reg_wb_sel <= 3'h0; + end + else begin + exe_reg_rf_wen <= + {1'h0, _csignals_T_27 | _csignals_T_29 | _csignals_T_31 | _csignals_T_33}; + if (_GEN_3) + exe_reg_wb_sel <= 3'h1; + else if (_csignals_T_33) + exe_reg_wb_sel <= 3'h3; + else + exe_reg_wb_sel <= 3'h0; + end + exe_reg_imm_i_sext <= id_imm_i_sext; + mem_reg_pc <= exe_reg_pc; + mem_reg_wb_addr <= exe_reg_wb_addr; + mem_reg_rt_data <= exe_reg_rt_data; + mem_reg_mem_wen <= exe_reg_mem_wen; + mem_reg_rf_wen <= exe_reg_rf_wen; + mem_reg_wb_sel <= exe_reg_wb_sel; + mem_reg_alu_out <= exe_alu_out; + wb_reg_wb_addr <= mem_reg_wb_addr; + wb_reg_rf_wen <= mem_reg_rf_wen; + wb_reg_wb_data <= mem_wb_data; + if (exe_br_flg) + if_reg_pc <= {exe_reg_imm_i_sext[29:0], 2'h0} + exe_reg_pc; + else if (exe_jmp_flg) + if_reg_pc <= exe_alu_out; + else if (~stall_flg) + if_reg_pc <= if_reg_pc + 32'h4; end - else - pc_reg <= _pc_plus4_T; end // always @(posedge) regfile_32x32 regfile_ext ( - .R0_addr (io_imem_inst[25:21]), + .R0_addr (id_inst[20:16]), .R0_en (1'h1), .R0_clk (clock), .R0_data (_regfile_ext_R0_data), - .R1_addr (io_imem_inst[20:16]), + .R1_addr (id_inst[25:21]), .R1_en (1'h1), .R1_clk (clock), .R1_data (_regfile_ext_R1_data), - .W0_addr (wb_addr), - .W0_en (csignals_4 == 2'h1 & (|wb_addr)), + .W0_addr (wb_reg_wb_addr), + .W0_en (_id_rt_data_T_8 & (|wb_reg_wb_addr)), .W0_clk (clock), - .W0_data (wb_data) + .W0_data (wb_reg_wb_data) ); - assign io_imem_addr = pc_reg; - assign io_dmem_addr = alu_out; - assign io_dmem_wen = ~_csignals_T_1 & _csignals_T_3; - assign io_dmem_wdata = rt_data; - assign io_exit = io_imem_inst == 32'h114514; + assign io_imem_addr = if_reg_pc; + assign io_dmem_addr = mem_reg_alu_out; + assign io_dmem_wen = mem_reg_mem_wen[0]; + assign io_dmem_wdata = mem_reg_rt_data; + assign io_exit = id_reg_inst == 32'h114514; endmodule // VCS coverage exclude_file diff --git a/src/main/scala/micore/Core.scala b/src/main/scala/micore/Core.scala index b20ca87..b154be6 100755 --- a/src/main/scala/micore/Core.scala +++ b/src/main/scala/micore/Core.scala @@ -276,24 +276,24 @@ class Core extends Module { printf(p"id_rs_addr: 0x${Hexadecimal(id_rs_addr)}\n") printf(p"id_rt_addr: 0x${Hexadecimal(id_rt_addr)}\n") printf(p"id_rd_addr: 0x${Hexadecimal(id_rd_addr)}\n") - // printf(p"id_imm_i_sext: 0x${Hexadecimal(id_imm_i_sext)}\n") - // printf(p"exe_br_flg: 0x${Hexadecimal(exe_br_flg)}\n") - // printf(p"exe_jmp_flg: 0x${Hexadecimal(exe_jmp_flg)}\n") - // printf(p"id_rs_data_hazard: 0x${Hexadecimal(id_rs_data_hazard)}\n") - // printf(p"id_rt_data_hazard: 0x${Hexadecimal(id_rt_data_hazard)}\n") + printf(p"id_imm_i_sext: 0x${Hexadecimal(id_imm_i_sext)}\n") + printf(p"exe_br_flg: 0x${Hexadecimal(exe_br_flg)}\n") + printf(p"exe_jmp_flg: 0x${Hexadecimal(exe_jmp_flg)}\n") + printf(p"id_rs_data_hazard: 0x${Hexadecimal(id_rs_data_hazard)}\n") + printf(p"id_rt_data_hazard: 0x${Hexadecimal(id_rt_data_hazard)}\n") printf(p"stall_flg: 0x${Hexadecimal(stall_flg)}\n") printf(p"exe_reg_pc: 0x${Hexadecimal(exe_reg_pc)}\n") printf(p"exe_reg_op1_data: 0x${Hexadecimal(exe_reg_op1_data)}\n") printf(p"exe_reg_op2_data: 0x${Hexadecimal(exe_reg_op2_data)}\n") printf(p"exe_alu_out: 0x${Hexadecimal(exe_alu_out)}\n") - // printf(p"exe_br_target: 0x${Hexadecimal(exe_br_target)}\n") + printf(p"exe_br_target: 0x${Hexadecimal(exe_br_target)}\n") printf(p"exe_reg_wb_addr: 0x${Hexadecimal(exe_reg_wb_addr)}\n") printf(p"mem_reg_pc: 0x${Hexadecimal(mem_reg_pc)}\n") printf(p"mem_wb_data: 0x${Hexadecimal(mem_wb_data)}\n") printf(p"wb_reg_wb_addr: 0x${Hexadecimal(wb_reg_wb_addr)}\n") printf(p"wb_reg_wb_data: 0x${Hexadecimal(wb_reg_wb_data)}\n") - printf(p"regfile s0: 0x${(regfile(16.U))}\n") - printf(p"regfile s2: 0x${(regfile(18.U))}\n") - printf(p"regfile t0: 0x${(regfile(8.U))}\n") + printf(p"regfile s0: ${(regfile(16.U))}\n") + printf(p"regfile s2: ${(regfile(18.U))}\n") + printf(p"regfile t0: ${(regfile(8.U))}\n") printf(p"---------------\n") } diff --git a/target/scala-2.13/-name-_2.13-0.1.0.jar b/target/scala-2.13/-name-_2.13-0.1.0.jar index 0003785efa764c80e760c2b918ca1ca6359df208..6794396f2173f673ddae48339a6a010e500336d5 100755 GIT binary patch delta 33226 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 ml5;DL zbEePC=OEPX!}s5h(2!tYV3ww43E+fvuT;bUA)#8C+VF2xWRT*6WB71l`C>x0y0|6- zNxx^18&@={x-@;8o-(>@Z5cTlT@?7cI!`jX&r^<5j!#a~R@1_H7##R4zb;wd)-5eO zEj^F`A5Y_sU^;bDN(73EiY2O(5M`@&77W>o^JS|%lrVuuR_9uk+}N`69Fi2V6ua60 z%5%uAB4~%qnBfHGZ%5TqS5~bxvAHCbJchi1^n40CaKmxO4H0Ig-V7C#866Mjms-i} z62q|P`dwX+vDI5!;NN`R8Z+`h2H$kefW6&u_W1h!o$M@qaj;k9wVqEG#_J#fg+4o8 z6T1!=yI?xrmBC&oGtNL?k!giti_?2RVs;fA@^A2O?flthZ@e()xHv;FKU(he5ds!k zjYO+LMYy7j`Zv!bH+e#ND3@;j(x$Izd-3j{uil3B9iSJKILc;yHjml&dwmRXun-+`%Fc0QOae zXl@DvN!4tnWenMj4ZdV#u~IF}`i(c46A}VF3ui+j*LPLuw|kkUXdTLNPq5JM-2en~ z2_vT$urn2{;9(f}C}HSH=q_E+GL)aA&~jJ(1_%bEOwD>JD}s^!IAhVh5G1v7DFh2j z4v+*>&~hF3;ooymQd_sk)qCKj0M1gPAt+p(e!pTs;h{35PWOo4gd+<>lO%}Dp%wby zRj{Wi1`BY?qZcaiAzu<-Cb)|8)};6?!sLsit(`gu2lsF^u*)bfoNCn$zCWCkYfYxi z9nPZbdf#iQ2*z_Q)KDgby|Sda4Mmi|;5b^{6IxWQzqeEmufOY3Wm8<20Wjm3n@jo6 z`mp&VcSZ*)7Q2Sly(IO_cR>W9@cVaC}Z_4!Ru{jmBLWvdY{KA_FnvQBWY0>20`_2P4b$HZ^z*Bc z)zKE|ZR$$N^L@nVF&1fU(n=5VU&X4Bn^YE(@--rK=uc@3paH9r@K@F-OS#`6HNi55 zG>m^`c6?v|6tC15(nmztDz30H5Mm1Zy?6gj1m1qPls-%;P)wKGW}0|E@mL_1#|6f_ z)J#9~f$1>5GOi&j`h^^K$1c21VbsGJbCg&uavt>(#56_}2rR&hWwjdb|G*zMYav2GNbLWSR|gXIP#C%@mzH z66#c=KSms2Ryab`!G3_g4ced+gCX!c6%Y>o48q;JHu_=C72=W^hLoZdI9@t{p|+!` z20~KXQ&a;vR{j+%9qiGPm8pweD9CO!<&VgXAD9)3H3g7zM~NUSeS$kd^-?|i;@hr> zI?V-ui*rLV_W2`NKKkZp58U;{9U+@ZuEj&_0ISS;BT~GESIfX6p}^9eaXNcTpaW&g zsE{K$%D5=e?TaHxicCUOKDCkG^`{mj3cd;-T)Gvg)Sk=GB*u;xBX*_oS3nwl|~+8MjLcIm)+>1n!uPA45s?pk)0P&(G5>yD2k57m>$ zbdC`4-biijk9gR5N9;k~6?!KO5loI0#M_gb1=d3KB>;s`VTkPlYb6GL$Z1We=rsRJ z2ngsnR7FKlKj_(tW@fHBpAN0>4*}Bk>sMz_+SzTEZ`1rwTdr69p53n|pABFfk$l4V z1agfREZnB!UAsYtC@RrotNqLEIivuewy-{+Fq zLsf>1s;hEzKSn`~*%>1^%t4MuESAxKekS;J@b0xcqBJcIKe(J0U)C499su~wZA<4$ z-h9TEm1nkfu?;cx{N!flUh5x{mfaGEd3ObzWm^BnY zI~Ypo7%FP2ukzNY`-?^r!gaBEXMOT}by6D;o-J}^e3Bj6{qWgO%T^4@<*Cnflfya{*v9X^>Pv$I^ zltb^O6qV_Q3voC>W}|3+SP2muFo8a>-DW;^B$8UIoa54zf%gQFC~HS%4p)1Hjh;-i z;}-3dKj}T}qlwHZT#7-lA?`?N`Ql@NQC%ly45KJDPJjjP>om@j>tm8Y3fKb(w7oxr z`Fy*~efgEl0`X(3vwD2LCt^-bL1sK@a4l%18MVjvUKS+0R`-GfI z<5B(SJ;155rRAVCT7Csj1YH;Ape=r%OZd$73W{08KK_j$_-9ra|1i^-Rvdyb%=vHS zFrQBkd=O5B?C{*Vr-~xEBRi^Zf&@(+Z^oqAM>yKjq{$Kjv!|}UHCXeacnjo=sMhJM zXT?#6=hGgQ`7)qQZ0y$QfX=% ztZ8m<3MQc}w30~J&!R(bI$FWfO#Q0?I5b~yxN4QcY(`@-*9A+OC5uQNbB?e&p=FWT z02oa;OrGPGvZC@zSd#p60^(>Xk4JcmCw@l4TXU~;ji77seT3?ytp-QSf%=^Zz#?6ZkI#0Mrd z$a`8c;OsS93tp0pK%_-UvUZ(hGTWKK0>;yQqx#L}O<4>AJ4C&>4WzZ$?Dj4C+Kau+ z330eg;SWs+0+VlSIw^q6oykh>c}*D%7g@)rS}!Ae_p zSM*o#AZ0#@>l0JcGHH>*)w&MZ>61Hdnmy-EUSQaD_MC$!>O#OBF8TMCZBb)s6(JLNMA?$^A^KB7ofNn2edb7JSu$Gr+a&n(4(OaVirUE5~~Fn1OP zUH+G15)dOh%;hL%++B!dr_4~a>0=ghcW4iZ8c(*arEWGzoj?*!@RI^~~iUd0V_D8G&GeI?hZKvpxS#&-jBn81=Qqal2_o3_Q9rQX>A>O$Fua`#t8$j6*po; ziGkPC*&O-exR)rVT<61#k#X~KEHNLp$UOr!X77nHuSQ{_#B91&F3pS5%{unf z3sk6!Hd^}{$1u6##YxFZT_noE-_t_SCBv`y`Meae`Ay(mHTwf}R5LB%%m~D65a)Dk zs8wj>a0IJpHE4bV_$(YoM35mou*+?a$raON zar4E`=MX{0)CQl5R~{%8!#W!wtl9OJe~Ba>0hDM~yr-E^7)=C40Xq6}VJ`G33~ z|NI(dGatN0BX1{Xj&`8S6Ekl&E6P)(LG_mr#V|0kZ5d^=pA{^Sy4OaKwQ#Jp(9G|= zm~3%UjQ)9&EyrW2xBt-5D%8znQrI8xN^DmqSvD^#)W+-D5$ncIJdgLdS&-55v@XSHpy?^Iak8+rMQc+0YJ~y~@5O zhnnBp_sJ8Sy?i0lm`#q6bdp0?mNR-^NdCYW zDJHnA6k}=r8qR+DRW5Z;i$Hr5BuCiveRmrpBA_5Iv?#mIFF-i{Sde|8e!78mks=K> zd5!R&Gu?jnN)Cr|SgHgfgo@*JmQ8?h{1}GxGh3y_+-7k;3{?V*O{wYN^gLE78Et~r z#DmdQX}QR(l3_bRK}MU*c$$bBir>)-6=_t_p%3b~OkoRZI)BM;N$S*Em&+8S9xdt8 ziwxagM;)aIkvPr>Af>yFgiDov48Ga{vr6O&(R_&olrhvHZf!Ov3OyPeSs%cL`0wu% zh)@GK+Lg$Qcoi1nsPuX(x94p%OV(CY2p*Qa#2e>D%Jq5BbQ4aJFmZEnu(F+`=k<;< zUzI>S`n<&bo~gO_mZIZH+O#R`RkrPHRkZ%m`-vMvJ94&rdNK<{3p%Rih>LowdJ(TG zl87@lwscK3f07jL(l{K+=)Zu7bFbUZ`1C|^&Tcf+b+I@)j&Kf*)ha0yB;yM_;`>&) zf5oD{d`--(3eG{lR1hgH>vmm1e_%%>jv>tO)_V-ejN&XW~?r*JgHp?gvp{Z zfp%%k^d>q-4KnAbP)t7BCfk>Ow$aAE(EEYgCk}Q3^?NF_;}r$%ZwD3pVus#&UqCZSbc zl=n}2rNhR*X%!Ig<<_j@4gNJ95R@q{>RxYb#8GQzXGTvB3dMc0NFtVPS4IjmPB1CD zl;a07)Y`@SDeiD|0DjHaQP3j0^quO6I9bwukrQDd?1 zDgXXMkWH8$5-&t9g4Fl-q3k#SpBrC6C~BL3}{Zz z*?c#GHR6P^w}Os{13wNzg3R637E`prT}&$f!glk|WQP1=OxsA>r3R}fkEmK1N;2P4 zB9^12RJORqAyM30yXC#4^@YzHnO}K<#1xFW{IgbV38;N?rA+PP7#~0f69g`uNjjp) z$)m^xLz#Md@`fwE8aN3+SJ!}f)`Bf_GU{DqI=u<|`L&p`!A)KD;xqI8k&L-p%-h;Q9w)euT-U_b<0{FSm9tH#1zxSV%)VOv&tD>ud-~cP9l5CkN`C%yg`h zDYO!EL_j7F^pP95B;!tIHde_N8f6f;VrCYiLjEsSwO;AOooI9ro7Zk54_Ap@CexnU zE(7$j95|Ia7!NC)RRmmV9SqeuSPY3h#6!R1txoapjK0Dv*47KNG!Nge(Oc^Mf7_l? z+*O}%E%{UwmgV!QK3B99gF7#gZ^w5@_vr$>MXwTIQ41d7ipq51mheI=UzO zE33d}Va#%dJw{Ns*C!_Bp$1+2FOH)94?y*YI9Z%y!#F_SWTC|gy_;9kDyKp8jX!Q? z3BX`>|F-4)%u9*bRL)_EXM+{lfA_DiOcn=7rA35me^<4PwC{m~Ho<&HhvN%y{0H}fsv9FnFD2{6*|YZWRbJ#O)t ze}Ak~uS(-CI6NhVjN70(dsw!4$CFMBV8_Tkr;a}I=lr7B?3BJ+h4XB|CcyZ{P1SXy zGGkc2S&2O?L-w}Ogn?7L=2d31QnTV^bZCB3JvQUvu5}bsV;W?kpWWx$HtHjix?BFii zbWeEo4c|5TGI%Ymi~3$Hc27@{SCGsv@QOp*?@-XD%*2noxurX}mHa8rPwE*nJ-GWA z{cZ)3X3{;vmgTapt!g%WWPW7PK6q(V#h)=&V%3Wu*<{1M-O7h7i)uVB5)M18K=|#E z+c7T3xCu$CAXLU{Q)m{3ROX)_rrb1LA@uul6nryWA4?k=a=6LY2N{l6V%BSi;ip(&)Ib;}F+1kqe8=oD3fyOYJzZ00mE^u_diBAv5WH|F zj@|6)n%}^8b8K{xNq}I`$pjG#dVN{(mOzv=RNmHJ(gY8nFQc*L0G;}_`!>0r?JWR( zG-?(*AZPSx^7`vH){)&~oh+AK{Rd)(#XH3DP1ch0;bOe>^s=QFzsY5fM#|`aF70=yyKrd_*vK=mRL#jr)8AB@qFOuQb&mJjCxv$Y8o@R|CBQDgEUeEljgI(L=XTHnKB0{5s8W;zpu~HK-Qs; z*L@SN6r-;eZfZ5_#&{lJtMO&cLw(z92&lM<_n?r+i(EPE`BCg ze28kkQC2@XUh6h|=yrSzuiD?Xtwrfw$Y}buRrtqLY#!S85OMW32i(a{v^> zvE_&-Mrw+t++8->48<*TVEKOsgNIu|8$>0+7&OcvyT5 zA`&b359_mBn;6^I7+ssLTwZQvG~b%4AG@j_GY0)F>@FMDk=mZGoCY8DLz=x%bqDnu z^`m!mpGgEL3}hLxh?Rv6iyY@n?*aTigdd3k#Fs^e^NuH;i6zq!o)IbG;B~5E0~vz` z&O&&Y!voSczrCQls37%`6Qn?t&w2l<$EaA=-0G3c?&;-14uXnNaO>GOao0^yEZ?Z`GcMvg#0!syM@rUha#?u2e9;a&j6%1n{lmu z5`Mm<-SH@f7U5TN15ZS|^vTcBGJXR@0*I(NtPyZF14mrDqCan7BcGo|{XB>n@=*x; zBgTyeFvxawFr0})pJRSKV+TD42Dd&->5Y(8W1yvEMno+PxO?ro2;4w`IY%V7&dKWG zQd9%bQf4FIu9g(+ySLJ=hA9s#s$WJdx|PyvstFNQDQ$_+PC?QdEqL%-F%vfsFZor5a6dKXgm%fGv3s3(qt&%0EKV)*>)bcF8hQ zTp8kp(!Yu~!4i<+)lbYkQNLSQHa9dhs@Yd8`Yb}+I5cf}DHWk$BG4-_qBj{llzT3g zt5-Y-RP3C8U?F(gK-uTlGK|Y z$>GR2+$|_4=Z9p$*XABJpQ64|v4)YL^uRAg66+bUu z%1Xyxlz~PXJ(Vn5pSlOkO>$-7wv;s#G>(1a&&TnJRN^e=wPr_~mEVl0BvN7&4%gzA zY=HeM2I|{`qTXCJZKnlXixSD#OJ~^zc2yGvQcS)5n!0L`}<3e zP)^jco>S7$OgR`dl>f8{+ls2lTG%;+=JeIP7(?szQ(+Os1<_j5=C{2_(X|I>SVR}% z^C9pc!%4H~V4(W!s#=`uydh@QZS)!Lg_0Mj`RO$k-D=M|C*Mj2TD^U# z*gzHIcOV~0A_0&X$S9SwwatwOwIVQ5(#0amVf}fk43|~9jzo6or-f~dno-gKh(~Dd zu@kfHAolfHK{b@0Y=tj}D8()N0>>=Glzn<9_E*$=Nre?A`1XlAsl)rdSo5e)owr%G zXh0U6>RSYu*NE6rwqVbzgd~lclQqC}0@E2kYBY?CQp$)ns{?|7j-N6DfHT*laX%c1309jyOzo7tx~na`5_F|i_({G zh2i_E|Eex|Fh__8ViHh!VA!OCs+ejg!*geRHZ=w()D(iZ3XrxN5_?iG>7KqGeiuU) z#kcC-7y`JCl8q`?^WuG?HI$Xw0~zK*`>?q#wgin zQG~t$6CedO;$9r}eG{n3{Vplu^=osf^9N*i3X_$iL<;cE0n88)?m03@=g?n%!9Ls& zE)Ua?vJr!SR$j6}e(`wXx=meUbDOM@GFv8E5^!BbM9|klj^{%9?4Z^Ag#L`}P>}9g zS!JWMo=5KLp&^)CN6@llYIq|>6vy!d@y_&52q1-hYBdssg?ldh1};hFHy87EWDMS; zL{wkETD?%y_bs4`s5iEIU*>~@ZpZUS(8jow%(zW+2W@K-PT6(660xXwSt9M>0l6_~ z0-$^p`KTxw{!B{DWudLGRJRBZy8g;L=bsP|M|x)cMD5GDUatMsgMt%1#zgiGp-2S- z$^otk&=#SbhT^fe0hA`;8v;dPDBV=o(`DnVJwRg8TGER@mF=@;L;81q3mBIxOfA9G zpMg9UHRjU`R<(oJjMCFLElXGF*0=gI0277Ab>`z3(Wdj`!+!)tS!L^NfiGNWb>*5GK zbN*6Z_yyKD9BV3lF&SoaDM96dCmWZ0iOwUDWKKEjZGpwh{XO^l7idMmTxdXs4*)B) zbIS4wC*&e;4As7(WgHcW72N~*?{?qN4AbDFk@{UR6-w&}iZt2CCz9zbiiuyH33tp0 zT`@ITg{=dQDGECpj|yZ*w|kH2%rVt#T?tcC2XE;NThfF+C5P7roHra;)f+ge>7$M- z8AY>%tESnhq~4J#*};v$A6}$n28_VJj@bdn?WD+Yb?d5(3J?aoyVnXbS?Momr5%S| zclPGOkoP+yr1?Bir;#?|_zT!eYAw~;7?Ouqq^(2?nlcIE4(d|o0~F5c_#Rz#b{bK} z`}Z41tZ9>nAEE`K>wgi0XKgL~HkE@X0)HyTi zCd_tl(aeDeJ_U^*v@Wa}3fVAESjZe+)L8*IAhxkdyG!+8e~%xAMn;DBFk#eLJu6P> z`xYD${3zWzLZv^#*vG~J&M_Hv18WSb9hR%y&nI$rtFU_byb+EA6gT*T>3vUWX@oh0 zV`y49dz1G|qLj73h8XI1yY#N~hL3qW{~tYcwVatkNS0Ca=Qq^v7COG9mg9lepYE#9 zAB{de<0;%4ei{J>vV6> zFh}e0`UtPZKmxdMMT|qm*Nne5Nr{jfP=X1CCjucK4Oj7iC}I$Yzb=?BN!fB?@0?)M zBZ_3{?_yVe-ThSz08>p3MiS~>ccQ%PFP4*4(3^8@O*r;oj_bJ0 zPe!(R+P3B@nKjSqwd+ZC-Gd(*n>qHCHMES3=pBEv90M6RGr?}hmO_`E{3^;_8ZQ0S zyHB(NK1Du7432pX>)BJ_L=JvfXv2b6$a+!8Mx)0x%5jLw-Ske`ee(pd~7;Ux^ec+7{w|jl5^6s zONKpHfeqR*Ag;kVt)6k+PDPz6oYVjDVBtB!NWI9_kGCLJ1GC2~rg=8@l+uToY$w-At``W4LAv?tu}rf1m&`Wfppotln`SU9Ka{|76-$~=)1 zVA?rY%Cx4kMP8!kNJvZYYF0C9hcgrabf zkqp()uEBwoFhoV-qCJhfkD5;Me2$(mDRq( z>V<~z2)c6USwIjk+UV3#->$uc1uS7jL&(e&#xv-kkLy zS8}dV1zpT>)sLF6+J2?oWT#!lPNO}p?fKT)aD-zOAFC3>LKdA!SF?X~+O4hJ)~2hW zzbf9vk-q>W4Po@jT)ta5J7RD*mQ$ziX;pqwch~k#zR+OMZDtv>*|b~fX2vf8{1uDt z*g!*cANV2rMrj|0J!f5szC=HLcd-$@*BYP{o!_1j=bD3ne<#euQye_4X$ovo2#cvN zr=4c8KMS;>8ACR>%1ztFEZ+cL@LXunhtzFWEdZykfZ?~Sd4NgxkM^rHcF_F4Fz~j1 zFzS3j^+eye2C)AGi4t31$&&)6hW(g;*S2{*R_b{3j$Se_oQA~T;gSogIm>OwI`Y(M z;4wB5tQj-1i+Wl(Oz+AM%Mwm1>VI3!`Oe=@l;0+4V(r4k7Ibp2S1zmThhuDpYO2U5 zky*6ZtTa}@1&iyyK@B(KHSJV(h&a~vqZ9YRp!grYUVw+6;8H&4h_wK8e>6v>AB5eb1(IIVaYGltPf;b7Z4T zvo3!`gEqG&R9%pQr7mW+A#NysX?{!2H)Mi=9&$t`DV$AYso9tqLtvxJ2j0?9Lcen7p1w%o}( zV4c}jXo2J{2tCYsTe8Nu$%xi?Z^Box%rf{LggEFQ>5#A zo9s1+gLv)FQLs8JlU62aMq8+78W^W5HhnixUQIHN21>hs=`I2UQBsAsUAJ_+`#cFQ zQ63?sBiBD}U_rT}_0w8mB3FW~O>?Yn9j&MY^-(!{ez6^`5nriK)sDN0W|V|?1udS> z1e7?f(M+StEYYlgtywaS6Gk-%u=~WgCjE$x3&>uWMS)!6(K$@$=p5@~EQJ8N^RqU} z_eR$Uj|V-Hp*IV^85RNuY)RJXXM|%CtDT&nK;nDXUt9(6+)lU$szyL$Td~$r-pXtJ zE%T5#@qTWA(0qb{eCVfx!qi0P-4yHH*;C6^FX<&*1!cg@ z*7}w+1b$frVmn2ngCHUWxtJE=3ysQ!nVlWi%!TDgynLdg=kQRAu^mA&Ummy} zO^K@gX600@)C+3}KQA}5--?8eU3V+Zr(!Lhh4LchgY{xvA&I1j1rfveFuzPp-AXRa zAl2w+*ibuVz)tZZJ@K*~zGj+bULPL2@qyvo(G4#?UfN7@Dcnmz@MYf2H3N!!Ih}LU z1V(a5CqIH@U%Kb2IgiKg4B7f zp=(8RwoayxEt}%VN8`ouanT89`LT&VCRme38N%M31(l}DEA!chQ|=6|%k58fgh)Zh zp*tOVJ-ja0K6qaC7KW3SStv`N{0?&vSOacO>PO$Mq{fzIzI$$}PLj^XxAG$v4Qn$G zTfP2Kx<_ZHUu%boKW149b8QK?a8Gm9g8vEkC@IduC^#5c=ePf676|_r?*I3y7S2mgJ?rb^(A~0_Gfi@> zSo&3l#r}`A%t%3zy^c{raza9L<4N$GNLN~$v;%M3pQ!?SA#i17F-S4EQVc(${CwmS z^uCJlT#_KFU0e4}ch61zr;zdb_KN!Lwx=mK19`a1%cq0!3GSn>XF!(g=ky=GuaYuK zaJRb>ARB5-ljE^2WuTb5o0@FdP4%OEgce1$Of6bAg8$i+w0Kgh$OIu%cO&H@s1--P z1u1eimm{C{L{8;`I8zkOnqB;J;-K;@lFB0j4o4S*_ibgXwS4w3vCl<^eOFh2#Ca4+ ztibROpTbX}!XeeBb-<8z%p-ZAcLiR2Z1_A!g=St{Omljyn(0+%`7eLl%DQEBjM^&? zwpFv5;jMP52;h=;Uv`x|%KCBWjvkEyE-q={uMd*Z=F-LaSv==~W`=BE?Zqvh8du3& z>bVZHPJpG|G7HZVVl}}^?Vw=)5(+FN9?Gc35j^C57pq;xD*!?lpCHWD9)t9Zs!H9` zbJ<~Qy~wbhhiwhD?qb`rft|e?$tx?{NOfSz?KslNPE$R{R5`8ATD?;J`05i^V+v5!Hzj=HY6|ae5yjW* zvM{sW^bTWK1#DnOj}Z9Yt;NJt-mdXyS0HIlySFdO<rc9VY?H%89qXrn-yC# zA370*y|KVhF^tR$#&9$Nhz*?AqQp$TMW948{qXVeH4&1nkS1ryOTSK;LKPU75+xQ_ zJkCRe1vi-uIQTtBpm`tfAupK7mD}v7GG7p}G8jn^RZ%u0MB+@u%8(bDD#%|3)CP_h zQrhVR0j`nuYacBj<&pl9in#~q*h$MNAghb&_{d=+S+^%6X35s3I7L&ZD@-`7vO38; z8S#{zkn&gY!iFW_NuykD43V*+%oWq0dB9g9p=+su?FS)lN zc@x9sN38o(f-STCb+|h(l*e6_((g^Vf>XU=~ z?+26A%1fGzD6p*LUJ3dF$QFn_G^85Mt$J|epPuU?wX{0_{B>hNlebKe=~RpuhHh%4 z0px{U!;_<)sPU9VqqSg?qz?V|8AEz^i(aQ3T0Fth9oKXP^EIm+d@-o}3nhTXK$bc7 z?By2()6|HVY3<3+;xmf{SsUvFZ|fsBB+jKMwJyY#SQ|Cl9Nn#tt16268sQBwuk!OsTtcaA0x(WshQnSfojPKk~W*$OS=#4c6TU@O6$0r zz$ln>F$o>*RE@A@=A?*RO*vYHI_Op-`4e6K@#++0DU02!tgCo5}eRe=F7#%BPAs>LulQ=n0^# z5VF=K7YGgW;-rGTU5qH10FX8h(%MuBWJ;0Ak7#vrr_XD#H8o9ZWI@+lM;H=*Fp7(= z*%d}PCP1yu$5T?om+%~SLxpq==})*}=Q|(l;!;q|^+dmF@JFj<_2Pd+i;%zf{{`rjyxd=&RDSZC}-Sby){5k2jNq^6) z-ZQ7*C6j&gT-S#$vPUOFch~u#pby> zGC1(MZGIBI%}BdjGbK3JQcOw&+cw&rj#jUY)N=f$B{9i2Gh2zBANflRvhx zTO`e1j2K4t3cD>do5@A~ogcn7^xDRB&zZiwNc?YStGN%>s6L~mb8`y#l0r^jh_Y-Y zn!bjKp%qyffX13#T5m=rvwthdF!jv>;>gE2`c5XU;*4$ByeXRi+*EF!wM-BWnC7)Q zLIIxNhAvhz0i{RfU|KglNG>eZm&BK6MUp)udMa%4vL1oJYaZIBW@Sga*xKoquY1T% z0d)0e@PGtiB1c+lAj^)!tpt21k(9&8ttah=ryBqOWaY6@c>@ResO`!y{ECero3+wl z`4*Zp?bgVOF0L^GY+5l+^S!nFdpn(k0XUcxY_AA)j7rC8Z5%UTmqB#>v`Dd;N;wrY zoOMea1zMPR^+kMJHkNl=5bh6=NGAG-4@mJp{MVSV68mex*yLNvJ_EGoR)>cz$mfkC zJhGzzjnNtT`U}Voy83FB`a3fR4o3Hu>A~^f>mBj5;KKzB0jwJMKHAGwO+1k)`iv8z z_abF2lSG(gC`(d}Qi35aIXasY!2_rg-}uvb&{1g$vkj!@2p^HipEzd`%+C@6Hh|e_ zF&1TX7?N_@buJbn1zdI)8-Eprdwlb58j3uCQ78lRV>4|8{yvOv;<`3kGa7vuHYZ9G zidi&MEha&ll7rUtl!HB8y0}r)#!uw1<64%HwNql~YNFI9YkJTVnt0DW4bkFKB`qY@^Rr7GOA=R_ev zD+gnBWtwF~lTu8RvV_Uu|4ST%a3;k}h#tDxEAmcl5B}WBXpv>q?AFav7Sgyh)Jc^p zE=-abtfMp`3?~0RzNHnODU|(wM%aD)3QKPdT4CkyxZ!5ZIpF+v5>YS%vUz}UzwBv9 z=BRCAJpYJP8WA~?@&Qj8X?fu8#V!_z)7>E57ZL5l`!kLV=$XZntyUnT6N94uj|cb| z{b6yqc^we_dpNQ3JH63jKR{pej|2&7oQ=V}9^>4A&L+oQs;A9Ru!h(&nl)*02@JsT zGG-q5hs1Bl*Pw@B+3n1@KMU{%hlpbw4Dky>_(lwjh$`KA&$aqym6iYnjIE!PAm4b; z6Pzv-0dgmMAi)W<3JLpSE(*-dl^_NN!cY2MMU3?QIy}XUi>59|cPapp2P^>T7sB{6 zi<8U>cWAAGTVQA{&dLBwp)}p7$qU3#FR4m1)T0d-(Q8{XbtUxoOp~XD!+{PFASJpN(6T~}d5bBcD&jTc|R`~Ec_*OXMFt{jY zAQcQY97?dwj&;8be9pJ7Ik2iM_F@P}==paNxf{OXx)Y`o%NXnT3nLvR;E54|stb=? zS;J7GH*acsBoqFaDGz`TznIiA=A^tOxU3Cke$iX*ijSXSSHE@0B`C=W$E2LF-@PMv z`K{t(4t9g6aqUN<8rHKG`&JwhObaST9l1H@`5|}+;gEc+twX~$g5$ICh96-$K|g&* za7$LNWX>A7g~Eko5d8`x$SM%WFfhHiGu>xHSvrQb=CC?5T@kRqu%TXjs1=yL7HM;+ zp+S1ExRIrLcaoXjQKHUTlAk`k(~z7l5LNAfYM44eF^u-S>)?Am9!zYs_-&)AZA-grLB(Aya@d}6Su1uwY?yHV z_kbUO#%86yL$;Mqw`QuN=d*!vDe}a|Bju^I?+18*ECAI4J*+WY5!VS0Pswo^{JiGyY!GCe}m2q|SK);mYlor?0!oiEn!QI{6 z-Q9hG0>#~-P~6?!-QC@tV#RsS^WJ;E+)taGolO3d-)=IKOlDscnTzO|p05cozQCB} z8q4~}O=+ptASjt6(IiM$gMqNSH+-SNnqLL6y2Ek(ABBQw9|D7ww9Ky-Wg3HmnQgM$ zcd)&;sa*FPr?#>*JdgntvlT(Nw-P(Qb%r>3_R++TQnlJQ2$Oo2Kmd+u^98RvYrTob zUnPp>zocxu=IXc7bB;k+52n5MJH(o&QS~ph>GVpfxn(kb0INP+80gV9j7rRC0E4tBi**T`) z`$>0~A?(eV%xf?x3_zTyPEr~DFb&wMzN=J0y_X22+ z2}#G`Yq*y2>uPLf;fST$wXFRmDmknBMQryK_u`TRXcbzM68^srhQU&A__pjH=#aDY ze{c_zfVlqt=1&3^GyA4@n>ef!*caDbzp~+-c4qB(mF*i1IwV)0jnNYj|9dT5xMW=* zGxCZ1jwJV&gx@{vJ3WG=sQF>_6(*m~)}gP_{SEmn4oX4gUh?7NsZ4v1^WpgO zSN4rQDU*X&a?b6l1IHTzN7L`Yi$zR?SHyvuw+5eciU#k@yMCwq5}OKKoEl>-{dN+J zLEqg^fwJfhjp8lY1h;N~LkhpuMUXOBs6ernFk03!JX(2^>P=$4QjD3ogY3ufy{lg> zqU+2LhpA)>@c&YyFctou`~f;8bh$``5HM#+m+i2`J`SFiplW&~@ykt#LuTcL4VrLngQ<2PNs z8egH|2kZ^YMAeFK-vm+TiJ5__hIpqk>32xIO?;KeLFLN>U?iB_*dQJ46zbI4FndPmus6 zI*rJWLh)csfq2lRys%rCWOR;x9wj4{aT*N@N|O427lv^E-@=fQv4pL?i?g7Mt+BPq|6LUrEDek%z^;rI+$os3$V zt;KACR|}g@ zm^iq$C{=f*7**ZaLkgKn(_)ldH&L0^e%h5TH-|p(--(3DlIA~ij;i}s) z1vJ^yRYVCZ&WtSE^D%1VbSQI$XDH-lGbY{_1UyPTKj~REFO&`+-^C_iYIu=lbUHGK zR1(Gv=26XfJ@4(tBGikwnm)B^RYY3VIB@qU<~B^v`PS0P03%ODtLvQXYh;y5`aiI8 zcsXQZC1}OFtL-H@Q+2f63%uT0M8xLOi>LkS?8FJ1o&W5rb1*P;6z*#}QiKHexG>qjY&n6M5{6Sx72*o@D4P|C9G_BhXS0h`D{%)+q^>7mr zpw7M<=IJ>?0U8F-$!n7^g6mByulqi^shzzbOYb#fjxXI?HW&T*&Cpa^67X3tzEbXw z7K|iD+CqxP!EWG!G?*LBw&q7FQJpbLV^^3$FVor)F|-Uibai!I)cTPsu|W)~vswgt zHnWmmmV_WB>wTUZq0bRcftSmfK=cDX*{6qmk7aamIDk2F(ZhFT%k(W`cPT31HShtW zXPbcQM*J z!+xtXn2>KSq8D;@fMd4d;l(qy5LqN1wIW+T>Cl=YixkGlf-g81pY$uq(c&msuV#mN zQZmY@5%6dtIO<}14c)jFcWFt)s%o*5VG~BqYE2#M+T2_7ZPkfuSWZ>=26Pn~f0s9R zraiQ=#lhzB!{diU$XqiEQcw-GH#xTZME&og06DaTROCW>vk76u>9JXvI8MbBWr%fx z;FCD5+@PJ?^*YU>)o>6A9sPq{2zTi0&vr9sDPV|Ck9xbJ^uxUxuN{NGSy{2gB+$8EwL_yP$?;i>A|nJW|8+GKchWv;Q~IPS zAelwlD3++!a9W$w&RwL z=M=1BDeEGi!V>h7c~=43_DoL&qZ?2*$f&bbR^*fk^lB1{VFcvzk5wkRpa`_d;#O!9 zB#jb=r-tS%&Vb?HXo%xH($d7b(tm7p0a}3*>Oc2_uQ&)lX$XwttfXD_qk=v_)jSXj z=3OWbRSB|Anl_Clr5ts;!0Hj#G0m1QldM(P#1d9y?nRO8Aqp{~#G^cCPw0oG9%O7^ z=S5ZSSmAHjl)zc!G+5PiDt%JI+%DJw_hqo_+?jn3XpejxgU z*a?CuJmaRQGx-#rMUPXnmWqQR2}mPw4UWMc;2P>ITcfItfK0R|0wk`&6|@66vful9F|zi`lh{QImwZUZDxh^XSX zb}w|nZ&3U_c2F!H>EjQyQ0r=445Gr(;abIpZ6SUX;eD4NeD53CEg|#2txNyVG{1ow zaHBQ{Yu}qduDo!lU6)XlF+CQrzby6V@Kc7crR|JxJ&;Xvkeu?6n5#)57Eli`+$*4O zv|&X71Pg^Jhwp=Y8~$iMqre~{DK&2}wX>u^H`%-L5Gi+V)2O0@|1HVqBHMXs=(?rt$3RPwe6+| zD!L!euFpRP%+Bb^KDH}Ych)zkO*q!S?PBcCU!He#Q967MzvX0dV*q~Nd6VSa9hc+Z zO{i0<7MaK8vkgDt&tQFadk(?++@E|zRTA7pkR22Jefy{60@n`>wVf|lR{UR8zurbe zd7}Bj5z@*}!~K<%M-x@2Xqo!S=ixB)!0e|(6pf!BXgVqI^@BHt%mepEw~aTV-oW|D z(`)%1J<&E{+ZTsFucTp_#8MzKUVmK!&({-|_{IArR34Dj1KWSQKJn~dnzP`cpbo!4 zCU+tLlE{l5l1D|(#rglA+0`wy2o|w?qw}VTJou3ZMD-bZK-i9k8a+}!wHxEALM;tG zLVrD*yCBlJN|}zpjm(H^u$bvzk8e3nqqCT0wOCruV|iQqK3_OVC_zLb;v4tn zwdZJ~w(T%;zy04f-}^f7#OAl_E`FptjFS`p*wY`TQIb*|rYfI`0CL{1q&6vt5;^s9 z4FCf6?<6Hmf`)JVrX6)vO?vbfp3uNcH6z!iEQ4wsCL;0UVcqC31{UkaCOM3SsNodx z78EEj@yxE0`8MkT){V$N_t3R@1iUIM&BjH0S@sAJmg1}P^lyNC;}szRt$#&6RP#as zMtvf-0vQx5yHYN#+>A(Y0Tv@LMvN5WF|C804J-s^@Hm2m)7`?JF5E00b(0pz2>$hk z`eOo0ym5qdUiOlIVPOkxgxxt8JoW=UczyNl!tNh}{OsO#{Hu373aw~8qdb3B7<01- z`0(^Z@TK6>=j{SBZAc-X=a*r#tdrYiPMrMVT(!Z0vyUo1q8EAI z920TEN5zZTq=#zzSlDTk=BDC-;akgO=+(c7)E#@aY+C^nA$n65C)v(C%&}8Y3xZDc z1)8Ys5Zivy4=ZW~k=EkMnj=i+%F`e-14Z(BtI zBF{25Z3aN(-kTd8AkOah!ImIyDje$l4#wcmO8X7|FGXV&4}Yu)Drwpb@TYZDH1e+= z!t8Zp`MW~nwG6zNTpRuf-5zPDS;V)2wOke>slhqrq@p;a+@XbQxcv$NbGSJnM(9r^ z+5LRj7onfOCQs>sc^<2!5!CazT^2` zp;ZpYH}@B3Ctdb%#oj&h->k!lt z-VK11c>6244tuy6!YlZo)Vu(q^+9^MxszmUkg#_YLyS$XLGwt9{Wm3;;=c(XI@dp0 zi#Mo~H#FP!O^+$#T=Oeq&5V(cpKt%_)_mn&_1E3FS=d3!ewM5)51GWsJ49(_8BK~0 zCa%O7=%vLJTQwPG8mq1k477R(AUGt(fB~A76&Dc)d(Wkt=gpZj0=bcFGhj(zcx$AD z%TT?EHD>Gg!>~(cq$y=_5gYS<>CEw?3aYR!XW0xls+KF`tWl!3wWzXk!XPv%i1f3d7 z)-yC)u&jLgDD8BT!8gV|<5Y7FVn7DYLPNzVY#1HgHzKR)FTU@I!;V?tmDrtG{rsc~ zOX+m92KXiDd)H~8ZL{GC&K@Y;f723}NUDn`HWJwJTMGeJSXQhL71#)+#J4`j7B*bs0BO~S|In@yj zWf+_%U%X)qe*T;!e|gb>>ze$oy3km8f8N+Z^>zzQ{9h+wYd$Eh1tJNcKz;9aQJ@z@o*FE%d z?SuZH4;0AyEh0qyqqN$`u`5<-Ju6%T0@Je3PC1{M7qACr(F;1k5ltvgC7*Ac2@jOD zaP6d097ru0D6AM}J}zNEv~oGSlSo#r9Of$ zXsy3`(X4WGTYSEdB)upaBX@4bMr$}4i1A`9_pEYVDEUT zC0Lwjrw1<4e0-pvAXnxa;B{}eeL=jO!>?*x@G~?<2H@QV-I*GoZo5CTks=R%d<${x zj&45^fcjFVt^@Oe-1RLck+(YHvp3Wh%hv~vjE8T!-K7u2w!8ByPvbhLjSY)#`h!~T zuyz6OY-FN-;fpcut7vv{mKWvI)uQW$^x;}G=zYJu6JQD6;QzBQR#!|4$q}HSV$fZw@!$s95^ z=;o=CH^Sqk=z{v#73e~pj@t)^^OIZIo24A++TXIK&B@Ly>RPw2pEq~IRX5ujkaeU1s?bWShlu+SaGKv%~ ztT39;2*E0reB^F0>6!s3I`LLR8Zt%Av{UozXfz^SijKGSSFndV*)QqnctZd@@_e<;6qLn>}q zoz)+BuwPs;^vzYG~QvWf2`VYMA z_95-P2exmiPd0>4&l>VDS>vJFRPMXjiO4Bm>NVo=+pPnrgg>Gy{>GwjbB3?R^gYG) z{JTaiAl-N$UAD|up!F=aaQ1z+{FTJ&KKgj!Ef)Md=xp^ql=f=WQV$sSzLI2Joa?sn z@&Q4Ir8A==;jEKcvCS=5+0q}Hf8b`C1Yf<>T-Pu)XN}fd8RIQBIp4<27oWm4>v)&c zBp3yDGuNmMpI)cV*&wG=pwRv1nAk7TKV%w%!5kSG*}>yA`&Y7TVzQCpoXo~0g{}CA zYVO zeCItAY`55qFH*L~zrf+K;hSs~*jllh&iT!u_?jwra+F$Viy_CCI{vIp1|$SOJA!Ra zLm|OF}Zx_o;^)&T#fKk=%U`(E*W2U;iR4UD~dU%tG#?Hv;U6dHU8RadlCy5Ya;lP!) zWbzv>!%ek^&GyBc4TQ0Qc9&@cbRKk`rgNRX&y{a;p4rW%wQzWe#CTCA?ltgvJgQyP zLsngDj&-)Z)&Ba=@w&-Nllb$B-PQ|^2d<_k)sN0JsotQ1TUeT(?y)9!3- zswDKZ&b5Wdrrpg5cH&!#rvHotkNLUPc1-p7$D30jb;<7{C*gZe`Vwj}4V5&mE!&-r zGijjmOd3woiSu{>US`}d9A)k31l-JplPJC_n&v&8N0_HVv^=#QBQa7v-_zON!rEx1 zpeyWqYNd9u!E2#jOx8(tLt!(t-V!von_+>Xuozhgi7qc+Z*K)o{=7^u@z#~Mu!1W1 zU#qySS}`1Bnw%;WI&NF=J9uY9lv;gp-JXWJVbikec%y;iWF^#&%%BV=Tc`O;wQ@@~yo81W>BuPFThM|9p&tdUso z*8#5%Km?NGl?xts2UN~W3vItJ+VTyH5!tXMEhf4KJ@7vn&U`sHz>!{&XUdPzE6H-J zkR;R{`7}gD^tj&C@&0utIzQI8+^5}b*P6^r`nikSv}oZnac}y1(uQ(ZNV9XP?TWJe z#jGX2YpDB?;Ac2>Fwd7a6e-2DzOVB-$0W(k0E?8G&t;YJOz?1~a)_EwCY=itz2`9SNtTPDUX2@e z3&6}Zf?o8S{nw|v{K0%ZyX~fkHx3?(^m~%rd}qZd&39Jz-+0zb7M;D=YGZ}3v!E3| zMqA7QwFQt{WKHXPo{I>E!SDNc6Q=?gvnX4QdDfWQLQS65o(HU^fIhjW(rJsj zw_=~kt@%8kPbh=i$o~KngO`zE6V1oUG@y>o%?mF&q3+1n4n?uYTkHN4He^IU(#^BS zqx?E~5;t|$bLOuRduaH1hag={&MI?{_5}Y@l74`Du);xRSUZjU+B;T}JIiPprDAS> zzlgh0&$Go!8rxK{k&0_IIALPUK0lg3X~1=SF!CdL4NdDZn31^)b8#|@^gM+f0jPb+ z2{JM9C$|1YT{_m-kk_i`>Dm9%rB6=cGSt-|pmb`5662gh~Cy79pdW zUcGbZd&+~6zj_RlK@yPTmM(*S_iJWD(V^j8CJ985cumhKEJedfw)+d z@yU!>jQU@MOnGS`xO~t#1HB{56qUzw^Xs3#r>|8Tvg6Ni7KI1wKO1J}l^Qixi%q`z z|Iu?tH?jI-AoYhMMQ3AUBaYS&+5c-IDL)dlu9O%9XvI!Ktf-t?eiL0A)p{AgKO4d( zLh+|qu_S5A$tkDS@^gl1yT=f4WyvefZBIOc`)D(|N-d<*9mO9Gm5RW0u4o-VQWe%f z7k&c;lW9&JU=S5mDj2Dg4ucy=L_1?Tjy7zKK^sc`Ay~7Z$UF|J7fnAcipb1K-%H<7 z>QA|cW08&5bJEsciT+~2{QxZB-!PD*Z{}(OAzqY2M+h^}@GARR!=&t>8LN|z)YN{o zIk#E%{V+g;D_+=}S*^+h!6idA66kBF8DParH4 z*YfmCaO?BMCwz4d@0#2Wx~Zil|1OM%I=j0?FkA~XT0xt+l9<_&v3#tNl3RNJ48C>w zDw?%WjA;{C1kZJD(FINmmC`_{sJ@;~c@b}I8O!9Xj(Op9z*p7CP3N#cUP-MA%|AU* z-v^n}w|ZpshNfM2IbYX7m~ovG3oAT<``HU4ucKBp z9HN5&KE69TIYX+en*-OgXq9GYcjtSOExJw3DZl1XPfdS46O0j@U~9C^FJ4JS(~&GH zwzU#kUr4%`fQGU4TqsDi`C%dY+n4sF<>|^J)1l(%nDnSc#vjOqCX6&N(#=yq0H36a zSK9|qQj(zAu^>~4P~X^x2CkQxZEK<?AM%1;sWhGa`MtZZI?;5KtCehOS%Y)J5V2G9&x0aNs!{py z{9XD_6rKEUOF#7k-j#IL>E|C_Rs#M9qsLDR@e}ihDy`W!;fI}p{ihqPq2iF=vNE-cH6I>oytd98h2`AQ% zPLxQD49T7fTFt2{92+Y@!^lX==ls%w8eRLdTGKXDQ`}nW3TG=aHCp$}684(d!Ra=fA}7EGiqQnGp7Hk<{Q2HJ)K?$P|A*HX z=I4$M|1sk<2=^!uXRFe6(dHX;g+l2w7szOwxo4>MW;9y(kl@Ih%UOW5rHdbDDZ5ZO zrx5pu%Jry6+&SByu1*Mtcq@QQNC(7?d8}sqfJH1`d}@7pVUD0$2d*c<1-oWUOToL@ zq5!Uenm=uH{F8>ka7CEiSL`t(@>=qKgA$Vq(+tgERLgYfbbpf<3BCTXD^h6gNas3c z)K68-jz4}3lqYOixDTMnb=4v?Rmfz^GUe3SCxYZ@1WrH7Bf54g(CKfHA(D3+U!P*Z z2w9L)uY{OVPN8%DSYoHgw6@4tou1wx?gFe3L`6xX%t6IuBx8T1L@~p!I0JlHw`cU< zw}XYQ3QQ8@gwVHaU~0$|Iq|=Jvj}Y#yXJo%6pumnjf?(*79ok72ZSNK3&$8{V{aM3 zd<)MgKs`7l9r^{`^PZLW5H9lY)!%p@eQT5loFE-&r_NCP8m zdVyKJ9VDcbGu~*V`&vXG@-r@}fZ{nEihV8-VZ)_=?1*8-l?e%U*&#E|dNAk-@_J-c zn;*P_WmYpFy)moDsB9)37D3^T90IQ@WV zDzB%f*x`#NGvy=Z2g6)!XRFxZ0Rl#5ea!q}YK!a)6gwV4X(i9!;L#HlHZ3F`u|v$^ z?nI!_6O=Zu^Slc~%s=0mgj`ymv=UKm7K1d!eK>Zwem&92jx?$ZOBGd$dmk!p?n7cJ z_QK4`?(R@GJ?7kG{%f#2w}T|)()*;9k!q70ZC+_pqtETbosA?!bK!KL=+dFDG2p4; zKh<+s$8kRV)e-mMio5;|%Ap%ip7zF3*!(T=D2p|%kVaqlsH(Wh13?yk#6GSz=UrNK zDKY#YJB&3=l~yTsqa*F}4(X?kkcl~OG4qc3xqoZ_;XY~`N>5^?`ZGN~bClGjDCnl3 z=qv(i>2sU~X+r}o(negeMp~lF6_Q~#B_S2tcdSt8b5jxPF$s3nA@_eh37`;@l-9N4 z{?d+NP3w8Iqxiv47hOOwJ&8EuR5pHy(I>m(fiQQ3Tw=AdQAH{#l!2d6AY4K$* z1S3QpF^~2hfdI{uXJf^VAdqL;Vkr)(Iv_Oq_?YJ%E^-U1RHGNKN_y%@i?FNK6aMAi z?kN!9!g9bC|6gA;di-~LH}~%qqEgtAkZz@JjQ+>FS9YpRLo}bB(|Kg{IfczhRAY*7 zpAQbgj*xXL^i@Fz^<90wVPS?5sRwI|t67=e?F%nYZ@A>%7g+Mh5oa~}MT z6G5Qe{X0uI#I)j@slAMFVN>=>HD>XuP|j${5spoICXP1UaUy{b&S+vj-Q?rB z?d3U)OAA<*NU&T<&UJP+m!y@?APTEHGcOpD-ueY>bCi0pT$C%B9b2j?%yMF=zp-E( zVsnbjm?^{(V)VBV=!*RmB25qwQD5ye2wjWiUzbZ#<)TqlTn4!!3k<6h=&vmlaV)?z zCQ3@f&mIRmr2uqHN|;ONEK<4p*4%JA)=HY_wZE6QO<5Va(DE$l3DR3uYlP01AB{EH z4WCT4^T)#_YLNKSW$)c{wv3~KI0jIRQh5~CJd9b%!niy&LpZ`XR!}}U1w^D`4ClqS zxBcQsg@wv|fhWerV}8`ZGcULMqzu~%E#n_taUZ1v?F4WJ)bUFt_Xlq!yyrH1u7*W1 z3r%KpXB?Zp^<|J59azJV)UOv&+Z#0 zDkiM`o3*@{zZ=Yb_0$>jJ%ECCP`Rt&a7lE+Ap!IuGj~ji7vB8%nb`#iTPsrS(^)c4 zf+Ry=^XB+kH@6>DxnPW~hx9Dkn7{!s+b7ev3Z1mrPz8+GyqNC}KYO^th`@#t0bSft z{1p*Z7LV>T{oLK$A{!qYY;6$1fh|K?h0{j6dIZ~?CYc7AF3fTall@r}LKd5HB&=dL1AZ3p@d`b|xGbErpu1<#|%P+|(fw$4m|UNYlNF#Lu{4CBHZ zlaJJgBo6|C0uPCxMY)&)i@H3M?gON2NhSS_+J?L;4eF^c+GEdSzYrXE7CJiU3Y4Mg zZ{!r;-v#|t#m5X3fsd(j;vepsz0K7=6aq}|uFRLr@70sZdV$`d9yq+jBDeVwsU+VX zgg-Gv>E!j;p1BvLk9&fpjwx}&JhaNV!==Kj)&Ac8(>2`ZBsDAW4jAMz>60kQLn{0HEm z_zIFvTv8r6ie*f%@H^^D!AVw-y9<}6sZLFB@QYaXM`}95>mB`ih8L;ai9m+VmBREn zo{>xYL!;01i4+`y!N}UY)9FFEy0nxVChhu}yR0voB$+GeJRY@?YX&scJ?B%}#~c#n z@p&-0Vx+|1uaL;&_$5ST61f5E4rl;<`fA{yb2vsFJBcy}U1@g<0w;M%u!KQo;LI6T z@f_<28Zl=}S4CHixiKy*K_T{{shOMqR&-ffRM@5?Z?z)=5$ACh{Rnu zgPdV>L4=p_*tb%C;F((spfmVS#tqp$%!pe}#Ih15E~*Ek2wfV9bCiWI8n*b^al*MY zUac7w!&K&Y8w(*Ma9dgYtU2M_8?P3Ja;tu_w1a4Zw{jaI1exp}G~!kqu{?^2i;1VR zXV^J(lr!@JqKR9grdkCvnO3UkGZ+xyo*Q6iD8=aoN`|)k1CHyYM)#($!R#W~wq*Y` zSwecRI^xvH9x81}af*&;H8DP%{@n zfYxwv*V}KP%+EdciYI{I`m?LWso9YqlW94|GwyQ}!G=Lrj6R!2aDSDYh_w9FbZr;! zPpH{KX_$Uil8gFbl%D0orNec5g6Dv58h=`u#j{3a&aP!3j_HuGP;p;JU&op0cT+uq zmw;etPWv*PL% zq%3tNboMdNcq5+ixdXa)I5&U!TSR`DaRte}hMX3q9Ng*|B(T@?ovgd~2%4>Fx%Zyb z13_{8upmmmq3bQ38%1P^rDIb23|N{ZyC>-xtkN4v;n@+up=1c~NdHtsZ(sXv&{?ha zH@pfEHss6C&vHqxK0cP*Tk7Ypz2MmWpMhpo$@k9-}xI-YKhTLL zfB0xThN7%r#~i8`xR1V=)$?m4g`l7-Mco}}qK}$p@w5*e&GC( ziZW|2+7qL-pv(ul~d^4W<}Xb8t0fhx3oNIf;zEDvSI{<*R~pF z)B;y(NXkIQE)_N z%w$U#fH&;~i)fafTZq(zVp|bd>SWI8i>4~Ero1wRZ#)M6!H~&PH`MC*%_F-!ak=1# zwB~I#rQ>)bmDXMhME=ln{6eyLvZL9=S`#I^yBwx}zBJ^5{J9q7lTKowyTb{rX(KP< z5!!vwFwPFDA{0PsE;{{4xc82>=wi$tDgtinJKu9{p59+mK(K!dyS^T2MsL(2z;YOj z0Rw4g)e9SJhJ~=rF*k#%$}bmhfgYh;{a-4nvthg{18WvY(nMH<`=}fH zXdDL-(%0eg)DC9y6}2W~zjJ{u;T{uStbq&E=}de=J%00k_*n}?9X~&c=sPg_KQm2F z9O4*p71+jU;9co^+2TCeT7KRb9my#z%Q7|T0mCCWrWHw`gl-XcC6jQC++k7vw%#)x zvCfw4J-O-BB65>IN!60(86ESdULY9V?VB6#hfR>tg(@uhGNx{yEI#1)VL|bY3!Uf{ zRF>GZO7*_ZbZ}42z;Pdz3F^jQ`L|Bpt@(7?5h6gi-Yir?yKsbK@VjqaPOD1*&*=+Q zjFj-xDwq%bl@tFpR~EGs;gswGZR8;@qPY`Ax6ANfxI94NP${1z#B`vmM#RU2KgyavL>vkxmfP9L!vnMi*0_)`g`*hD z)H@Lf$S!D+-sK0@#E_&zf7i~ZV^Ga%+hAvKNvn37>t?;lEe1_HybYrKYMvZ|mWaGV zu5p%sb_t}>nf856rWv30^%25evFPj|89k`e<70!KTwB`zi~i2~5V|F;lQoC$HdSd*ZC#C-^or3;fX*X&7hb zk(Qx1g@JF70KIx-ulR7g10jTmnh`9QQZnCg)`@K`RD^k{7nf1X7xYb0oAWfb@DqB-dNo}u&lbw9eefw zt?p5Mo8pYmJsw02=~M^w2q`Bf=m2%l3)Tm6RKu3vpbP%43i3l9OvmJjoaK8ZX?jFE zM#Rf+NG&)YwA#xAcP?`e0g`Q1y5tA=qsO1y_Mzv*lGko9){krX=+n;ljbc7 z2C4QCp*6VGcCvC}3SAHwd8CLZEhG~G^mpi>Hgif9$(K>g8>DWU(u9Xa$^&^^A!|GN zF+LXQ)V@v;MmvHOrcjE@{M6SMFNBn!QPQ`MNROx=y;tA5B~4?0z{q(2}h1VG)Q8N zPu%{;dwIIuL1*o`;|r)x+?(V(>H4f3(*bbL(2tZL@_7!jW@hFDl z*(B4=pBu=rw0khZ5KW}wHS)#W%eeLx9XrJ^4g~5FV2WPFt5>7v4zCgIvCY^q&FWV) zu2i7hVu3lA81H{kz_yWu@md4a2aXZAS<*`Q)q2TWn9B(yYtjrM2{Ep& z7mza~ZEW0=al{}s!)h?gBnDb!8)6xFswLLL8rdlS^_34LSqjd_f%+W43b@AsC9u}AxT=>p;zj=`@$HN}fN zrU3#>b^Tr&-X3Sg0l>57N%whPT(#G#Gc96uOAyg+=85Jj=yafdj#l&p2{Ar-bj){6 zbiviCSnD_GE9fl2-cNLi%xJBgU*zl)zd>Dg2n~3lC^}3wO;Q!pN@7r$0*fSuWOHjj zZXFH(;UR^EPh+Vp|2JlQlGuW%l||t|-hRBujOI#~;S7=?4dgY+0Z@Egr8NyA@@yC=~&tNi}dvc^jF*@YGwC)IhTV1UfK{r(zi(~p0uFo(1)dc}6e=Fa~!;(O4F zt$<%>xmRi6J0L03czmNpyH~;gMzYOiKJpuZNnFzXO@~kNfiBIL4TWq{AcDXc9?R<`quFuO^^JVh$f_2otGhKTc7=iv_lU&wdRd$SnuE;RBZ zK&$ud0^acj!8c)w_dqn+YVFD0HYhMFFZodk-B&o>0qC3T1Hb|+v3^-X@@ajNx48Te zX+)@Snl4)8Fx_6aVn}j*qYTe<9}INB8|X z#&h5M&L6X|q`SC|eY7O9VyAU;X^r7I+!3@%9`q#Z9OKb!yxZo=(Jt3OZPm#eA@DeS zZ$*0!=pj6)>>D?Q4wo_1eh1KhPJ~zQ4XPsz!MR5My-BH~VoXZepsJ)CU;+;)O0$+) z;cp5T?jOdXG-26yYjVt1Cd<)y8VV7KTzzPaahXNO)vi_wAr3+jEhOD5hK+x*VvR}8A|$TUNfFST1!<{ zw5SJx&0a8RAHzGlp+aAbK%;AOX8o%r^CeFY<@I)oFoPo-x}&yW1B0d^-3<0KGGJsv z6QQIZ%LjStiMX1uvujgCmu2Zmb#4eXi>4ifM70keV_1VGr~9%HY-(C zaLN%(Q;yDv`!;h+{l%X{g2EoFJAUfCu3=G0f1TJHmGeBAYBV(-F z&n^V9QT3&AenQ6I;xdCH>g=-qk$txmmYfO$JrYPTA)(U2P$U^YjJ8=|PeP9kEjfh- zdQy>CP-j)+Y)&Zw(QkOEigU36pA51J$?S82k2!AOg&#zO%$7x1wWmJY+U%R8YZXottz|ITQ9< zNtfw?O{h`v@n<|_w;xqODaIwQ`e7|%13m3Xb?CFWVNdB1LC;v`Bn8|h z?(zdYLP&MYUSv^GenDc!G~6X!s)m*Y1r(5CaTlxMinPq+5XApd_5W;mQc!?nOw(4x zPr>+GTBZ_0R`I7ZL$CKa*WNG4xJwQ6tRh)c6nwMvlpE-IMmi%Z@G3ec z!9#vm)~BdljHJVXlUVzhaD{<~ob{tBod0`a!K5*bcSV;%-|bg0VQlqPBD5F=Bwyrh zWJHi1){>0$66ws~UXr^oRhZN$R$)usP%@ibcL1ci z#cqf%BtwT6ZVMYlLH?vnRWPD1t+WMW_#>yl8818xngV_HljRA8QFSLY1=_5)<@JdA z*SxObzPgmOU`Vl`i>j|KEUm_vCQ5lr*>HtlhJy)P44}5hXMFuLo*A-hO!I`v{`=P2 zcExJ3t`QE_AxA4C@L39%0o0_87w-Gi92oM55uH-ml@;=jDBagVLd?s^O$aAo*$89e zap^1xsWN(6T#~F>p2iV*c}H1ybLA8IH&G{6nSmW=*a`i6Np~9XcwDu5L04*@@MFmL&<*>iJz9eRY9pNki(|C0)&ZbxCPSqw3n(UAl%R ze+uTAu&uDzqf=ZJXF2i0PqEmuQd|{gMe)Kvz|s*Ftk2C+8Zj1i1@$@8fNkQcaTT{F z`<%am>xa~>RklEeoUv&QBkF4fUHyH|NMIMp_jjhcg>K0CJIxhB&hN?})4dKQn5pYu zM=wzO(*(g-jifDlWu`ET$b>DYyyX}`U-+Oz>P;uZ4bkfuNn7B`tN2(NFWijEo{Uk4 zU*-@ZrnF0?@3zFXKMZF`y-nV~H1wD!tVMlbhYU$uNcugmXw-y8H@mC8@7691Xwe+l z0V8RP^`uJmHtY7hXNR&uBoubt!Mx*vA+E^|Ez%mlw4UOu4HLGV+Lovxr=ScE6ZWN| z{&z+n5t()->@Sq|7>uvUY07xv|ETPl8GU4Az6_~*%lmi6*nc*EZFz8GVro_G*;MGu zWy1chw1piYPqiZfa~7qaPRa{J(%B=cdyDq)DPB1-VP~mrsX}*T1?UNOT~3Mm>`<>1 z$$6{vbjm*vfAsM|CicDl8BhV zPcSXc(f@zu{vC7 z%ht4Vwcng%p-7GinGT5c)?gTs9GTj8ZPu>9Je8k24qw3Mo`qO^Uic_ego;{azyAvW3>-W^f%{NutSAFYs#*Our{O>ye`GZMtpN7oEVRAnhVA)(WF(Gm zVHL3mxQa!~2uwX2$N^j*BfEp;t^SDEN0P59lWZQ())1b$Mmj_aZCQM7faMZIDdmLL zy7RenJzb4oQ@zB$Oxp@}(#E)x`=llKJA%K#S~yRX?^Uqef=F&PX`gIPJQJOkS{U-r zCxJAMa5_wkwx{Fh%0;I>H+= zU^uRygts@S&YQmfL(?}$*Y$jF$F^Q`2Zj454>@+H z!WaIaEvrUL-N;6u^Hy3@QJ-ITml79WToIWU z6Ts5(PNvoQHM29i|G@l(u1!Iei;4CgZwBwJsx39kiNtqbbAvYikVC)JnTYY8jL5zd z{7qDOsnZv8nop#BZw3F(C9=$Z`};Lpj*?A)=apBaOG?b^-w5mbN)>s_*$C;2YpEAA z{dW9ff*dfJT5^YqxFFb-2cmbb7xI~A6bAPLMqOZQ8QDf##RugH(fh9VS@f_U)a9bU zX0(XBtR4TTauN|(LAL=3QCWcrp#kv@^&Mga*(I9^0YdNfTI*+p!YexwGJ))Xic7>Ygtb0sR!-VXOJ$(<18s>ZwZ%UUi*_axW$(}JG);49 z<=6NOzx^SPozLc+?%3#4GU^il{h^|d?cuvXY2`;kj&~Ll<;PEOS4vtLoq$7xfUP7< zVdU;nbTGUqI)jYY!f#N34koexYj9&m3Dmoj(OTfObk$9Y+#Le^j==A6Jx)+EF$T?}e^WJ=&=b}rVeY86do2WIHVSitD)T?fWA$`vJvr6V zgiP-OWDtYCAq3&!fe!?p^y79gW6fkMDS#C9bAu))Oj0M=wX@#l1K9OIe+?tW&n4FlKwgu&ACipjhUb3bzVK-7H zI$+9GqntaX9JRREy!ct#fpAKraeG>lXli|QRAArfjvVNI#X4A z1^2X$U3c<4oD`!O15bD=lxu20vm$a%3K43twG<sdQ@q7B`JGCx#2olms-Ui|-XF_7z&EMUCs~f=lXx zqLm&FMzlRu8mY`PSk@IEd#mW1C!&Lx_mxkb!y5NAiAXBA>tWhyzv*Mzvq7AX4 zKWg#qfTI6C02eGIfe&0^GPY$fc3?0j(rM>6Ks0vx0%+DYI4bgpDDY@1@Nm>S1;+b-`Uo!QB_V)38>> z`({ProRkkcAOk6HiYO`*X+p(cvkI-_qC01)Q+KJ;iQ4&N*Hj|MR9-71 z0-DHF7o+0bX2p0_MOG;V&XoCnMGd23<7Pz(dfHWWpax3uWNi|b?kR&|F&%wzP~^P0 zl%2YsotaUwNVDRUs$v*wv3cZtbnSd?tK!HSz|l=(oHL~!wRq0F_`Fq-ehm#xqhc+xW&%f)hT++=P*J_ds(j@J2n^a&!`(==;Yw@IWMmsRShVV z^{bc1X_udeX_O{wq!u*N=-4Tcr?ls!q!B4jd`(Szlqg$Qu!|^Y6x6ZvBu{B3Ru=V|?&hz%N*cl1u6(V6g<$+d}6cMk$UrFGh8B_b7Bs@DgMsWQ)x3 zlPcq=)FRhCMnqQ<-l@U@+sW)?(cOLF+#}Sis$oy8oTAN#Fe?eYD*5_5 z{9<%Ml?>;MX9qU+2{ z`TroTeBkUL1HCX3q~(%#K}o3M&2s?-oTg`U($D5oSJ|R6$)|*S1S%yXN)KeKvbVY8 zZwEN2pw~9FIh1P@uQ=;qFioTgc%WjOQxy#PjFB_R6QITx780Hi?h;G^#S_!dTkB&Z zakX{azDGV4Ka@Fi<}r`hc9OBJo?8*eSJo4%&SCU`2~xNiRJp^1P3mVRd9ywMLZggC zdwi{6GYQyJW{K$zt_|_lf5xo^WTf6?=@y*aeissAm2RSde8w&X*KLRYocom8MsJ5( z{>~&JotovJL%H`E8x{qw+r9yWhQPXXGnBc9=H^gtQM}`ic4I;Pki(lJ91dJomO9U|Ih64!|60Tr7AZzSe|WzH|tjGVdg(C zV_*I{(G8cC#ekhpaw49h1^7p3at~gOiyH5?xsKB<@6&edIu^DWSk?SzcXPJXYyT0& zJ#P341Wby5YMwjST>ZbeS{}+uZuU}Cz}%wUkY>bFj)3)j@NVjuxX%79$E6i}lxNbc zo1TYt+~@WkEW%^P6qq>vF{P08v^gXCOKe&VuBZ;wZSr7t*C<|a2$|R78%z(ZmOd6B z)nf_e01wQKgSyU>A8XYTZLVzcFRV;~8}QZTh+XFu=wz1Yq?YLS^`EWK7}q}#p;w~r z?J_=k-{7EwF-Lp6ArQ|8++iP9Gk6dzweKN%&$G`Bdm+%nR$H2sA>!&{uSu!$EwngXqVEshUPtALP>Z>*J zWtkQ;5E@hGE%0-PUMSmyC_fk9y2d}0Z!s>SczR5eP#XsSd$tU*DkpICGlNh(Q2qn* zi)xXR_q9|#kdmL;;&g-+9?zVGpmD17|AC(|%@)L-S(u)Tq>6RhYerJx63so4{E6dM zg2qyVHKz3uLQ`OkzlL~$lM=ES3&JKN{j?}yq)6V;a7jc-e8@*n`!N-Lt9>DJYOhHLX8V%s>Z}h;oto!8 z+`HZSwIP|Zwfsr1NT_8ie#o+YMVgu>J3lPk+y}tvGaZruUt)2g4HY-4ZVTj_+ zKpiL`ksTmm2zASVbT1$pXUY82G9letVEZo+uzaA!-GGIw(y-YTjVzAy8$EA<|K7VC%<5((kSaKy~I!^ zqS-1a`E+7Z9m;L#lo&YVHlokO+pZI3w`@sUs}2jr9LfDBlCYNGs2@uYF_wkUwtk`) zBnvls(D5*Pxb~0Og%> z;s{Eh)!VEt9n!mU)a=Yn*@j8!|Mi3~19I;XMedjayEY;Wm|9m*g5pc_X`d#*{nQus zru2?Aq=|;!>IS;FTAB^{H!!TCBc7_=o2CBkK904SCk@5KF1;^19z_;!-82B;oqaEB z#R6>RiTQrb?C1ys z7#tF%U2|Cf=sMKNU0O@X?|@|+1FFk+!_viX(T?7CdX{PiH9e{BCkg+sQ*ZXs3dD9b z+iY?qYt(RF8qf;l?ut-BQqJ-?FYe%>E6uj_T*?1>OlSoYc{p5mvVmlalwf5AJ^wIX z>_t;wqcl(AV42Z&haZRBbo4>wQ4>)2 zl4AXl1}D+S*rsfc&JB}%zBEdiz##C;55@7rahck=xqJSYb$M6@t$}k+su=j{*T$w& z!otxKT=V-1%TRdXLI}h{mfwV3`n9&^0;Y#2*T4d%ClSvfrd2=>#!z_Q0v4$Jje8q~ z*&&nzBUGW55a=b2@X(9Lk3#tbWuVRyJ}Db*a89(VhNkjrlRqA&x!|Na+c-v^?B+lt zY=0DBzacC6qb|Ova3((7hMHKxW>0qh^sl^NvK>v#O5qQx8 z;N1O=IDvtq_$RxsBY$`2F!7%iWL2jo()g-ZGIGeRx-2UNuF#8sf=GJ&M6!Kf*de_J z-lFffAUiVX1yTkr^T&^cQU|}pDE{uPlPG%jdzMsd&nys8MYTwD4`Ya9OcMbS59Udu z{vItLD0$He%F^UGSI|OPKwX-+hxFaYcR^03u{tri~nuoH0 zcun95JuOmTTc022C^(;JDepPeI+-@Ndy1WwR5hV>R&GdVc`UC0R6f!E#k|Vcqk`n7 zbFK8|EaxV`?YD3ZpI*h?KcZso^z|^7x_paxk>>77Lvq>GG6$FFuIbVnRMootB!&lB zQF;BL1vB=LnAWIm<^E+^t4WcrfC`X(1qfKN@YJ;V)HLzbv@Y1o`QgiXdHndd-lJ%F zAb({de{DjWKowa3Q()rB)9DG{yUtu_Tc;$wqPpym836nc)7)hNq|<1`m|CU_RhY$& zYmXftdY2>MrP@~k_}+f{VzL1E^tGLyskMcds5+(q?#JYSuPhB6Rh;l2>V)fW+eG_jLhI+@3x>X}-xlS(?7 zx}UR>N)4l(PN}}P=&3(hIIr}qwmzk-gz+*HD>=Qq8xvoR_)hUM)h?_=U!g5=Vkgrd zI6vR>t9CM|q*KK4M0brYPyxJ$=Qkh^zxM{fCl}MwCWyx>?XT znCqzOK?vyTzavG&UbH^=1kcUK3!_9zX$c;F^h_7bG>gDe-9ZPN26SaqWdW}-biEKs z@?3r}84B0o?}xb*g=eqC8q;>BFVE-Q-N3iiW1SEA)r$wUDN5J;Dc(N8RcN0$n_t*G zNUxw7%KlxPf1*Npnxs3wpgG2-tB}Q~qO^UYLVa4VyR;zkpUh@(atyw|BXKoA^=_aub6>|-P+*ueeZzhHIGq^HnzTo z4_n+q_eVBlx_I$}h#C5MsMiH@Uzs}cvE4R`mlVhOayJ!oF9ndlC{Q;eK{ii-Eux*BGfdr9gnm+%bVJQRS6*J6uO+RQ6>j-s+7TWK9WQ;DqM$6z19Y z(F#mcHWTc74avvX$-PH>VlgMfJ#9HYDCAc&gbkR&9cw)_zCME|f?|g!|NAWR83woK6MCQQ{yiyA7?8GP6lNt=(Yq&sb_ICENZGF5RGNB%8L$S`) zJ@52f)7UQ4j-e|jp`PgRhMInbACkOn(8w(V7_HEEpd9-N?1emX)xn14wBtA1JUJ|o5ysJOx;R{j z>$gtU26)r?*qW1&TM?&;yV4qbQ<>vy=FNFc4`8;qWs65V7{P}G)Uhr!PkRv+@#$Tw z(M!EFrs8bd=5BDyJJ;>xD@5L9BFtx3xo5(i=Hk6IjQtQjV{HDh^)0uZTOM8SdWKf& z#YnoS#n1+TI+iKw_sgI|HGFxmHqZ^mXJ4E|Jc9Wtn{OP3dEGM0U zE;pG)^hMOc)rad#iu156;m>a|nA_w(E#g6-=oHVi6nd%>qXCY+QWi94+6A}m`s%>G z8QCH&xwBL9)jl@T!5V3FM?o_L2w^m4pfIG=jzR{CTA#u-cPHe`FNJGnLCidm4q@)IDzr7h^JD??R5b_tZ62KB@a%)EJ> zUCYH#Z$dr0#fwTzGJj|Io!Bi*WffPfvlSm?Qd_N6GJ|{tiF_pm2!P1ErsVF0uO$=> zP2Yu{aQr9LG4DTfqmfi?Ms|2MME>Lll1uYJ8`-{d=kHTexLKC-O#Nm|JF*-rwnWs> z*1|w48o#26(L_ePqj~0Cc<%85bo9UdpvXFIkmkGkT)8pAp1Sp=%A0ZU?T$Wrrox;_ zZw|Z9{_WeXJm@}{R!Wz3EKikJ{J*7F!y%3!i}S_F{DGFWC;a zp>L^|Iq@eW{jZ6ztX`jW!RSb>x-K&JKT-ttG(M*y_2m^hA%FV36h=04Br_hM7ivj1 z)jhWbI|NlHth~JuUk|rYxX?n8U`k*}VD!@0&P2AzE?nNzo9)_Q?BL6XnNmXZ^wK?{ z=7pHXu`DbG!z!$EijV@~kjq}uPFv0a)Kd?8&w}L|nCX8stPJyNe)~R23zHe z?$3slZ|7~qg4-sP1GeXWV65K=CZwdZZ(xPs)QwP;bQZN9!Xg0k@MLG-5uhW*ft)<4 zpwz2i_IdDe);#p8moFlp@j6?GTe*ry@RS<636~=X>-%!Uf}M7i>UK6hQ~^K-L2$xgeon zDW+lWbR#0@D73+ao>ncR%KI&_e-uCq)0xEqn7JTLNN2ZUp0v%25ecfHBQt_EwDrD1 zxq0-;W3%hx@@52s1kEZD|7b<{Vec$MCM%1_1GqDTsYun$pqBphTVt~u!>42f2Ll>2 zgI5L3(hygQkVxr%Ny39oUzFEw!f2fZD`M9g<0f!IG66k$Ik8>h0OuT#_MW}puw9Y> zIc88$f@Wce{8G589FS9jzvf_aN|At^kX3?a4T!DMxYN9lxq@aDh^+>=(_D}p9=%@J zwQ9H@4p0e;kR2+$j^!?8i2VBSU_F;#BA8Tq2?ck!QO&l(YrI|%qFr*;a32Ue(vU>R z*3`b-0KEgtU1G<&b#27fQ$9^_ok}4*o`XE<&{}69Tyg*#R#4STkh&QVi2xFITBpB| z%bCHH;Df_4mkPAjRhT&K2zZr9GE$cg#L>sH{sFo@GSa$j>A$a9yRO)v;DlB+w&5^Q zZJ#xUBG^2wt{U=q%<{R`fA=pecsGlKR7r%H+1J|B-IbofPDZ4GICgIY4zULCOJ@ zduK$oVX#4k2~X4FKO8x!Y$yn3F?%u)#!A2cj_JketEIE3RKumkraVPRkI6XKlu3+H z_Xu~O0)NtTEJ&mL#e7#DRL%#Wabpg644Pqszq-FmDN8pejB;WwifWUXQw0cG#Kq`c zXbw4G|E!><%Ze7v2PE)dMhH@EOTPh6G-c}DWimW|FmBIG&SDmu!w@cS)2o(G^$ws% zCr>rFV%j`o+AL5{AIasgh)}3D8`~ae%G~g%)ICw8J?=|zqs?{d|CGVqQ|4m3y_2`e zj&>E*&T*sycuGgafd7=e0PH$xIjzj-Q&DXrORBW9=wdpHZZ+HrmBDYMb^SnT=KC^> z_!zz81yQ7+w;*d&71LwQA#LjyI2L1K>j=zT@HBg>f1ZP-M4`$ne=Kr27$W>nTmC3G zN7R7IEW$F2=2e0W<~>EV9e9&38)yP|HHTQN=eH+mF6r_C&Djc%3oS)i%Oj%N=iJF; z*9@}rEuz{R=5!*qey;d0T0oF3*XgfQTC#o3q5Y|%sFT7l*{7dsxN5w~A5L^Jr7v0_ z6s}YAc38>V_VLp1#~BKVdi{SuWqZ%o^ZT+rs$OdqdotGZ{(c}by6q$|Ze=}huGYRQ z^X(nLb*hH!Xw@&Q|Rbb)qd zDdYj=t=r0i7GpQMqS~Fy$}i*0z9C?x@7D7`7Hx%>!>Gxk8WqWhxgqSaKhgm{zc~O3 zjJusVR&L?}gQefqGA_3Xp_5G>zSIY)Qu~Zg7!r(f3L+0Qh-wGSSw3ws>pje2^)cC^ zu=&Fxhn?V7q0|7MwLs)_1L$c6uWO~>uQC+G^s^vOiNx5+-}xJqTdxAkpV+u!S}>B* zKFc!02TVk$+D1Q+cQl9cE74Qd;Ms;ub?sIunP67wuUtcxt;Q18&z9=LSjA2(0?LuI zKa%Jpo;t$G(*N!!`Db)ox)(2J<A*hxq|pdAh32&5yNSG{#b!0BhOH zU2=qFB=hOqpx zu<&Ul-t?GV{UrDL2M2vrnCp^$_Faz{n?8%E|oUV}LbS@ipd^mL~5f zjH?v0>t{G{upx=!gCfmGTypP*COR>JmMr6kk1E!nKRCMzG3J=oHRSIg7P_K*Ck02{ z4=g2Neo9b34b_KWnvcBX-Z)J(Fpie&pL~w8v*_e?H@45imj~PjjMv&moi*mBdUU09 zg%-t@26QE7rFmQG1|hofL;ztcajW zoMNmp5M_h+R0k#VTKY58_`taf0-kjgj_^nlj$48*2MKzIjsQU|6kjw#f&mt;5Rn~5 zyHEWu+`y~=JIN*_^=#~qi0;sz%5ZTONM_s(P{Zu&=FIMxabGVX$#3D}Y=XiO&&@JM zRl|&cULsGcB0okE+Y^|To8 zzn8fEnOD*6E0LMUOaHrNW-sjt8s&xG$~qaqxV~^yIQ~Cc2J|Q>2(sdF_406-Lvh=& z%46((F<(}RBr*DUa+yW}>ojxW0!engREnYcw8RaxXR_4HSA}#P$NAouLyvwe1&?hL zAmOX@H?4+x1LrgzL8-jir~`#fIYnDXdZAT-DXn_gr-Gxk8eS{3cMo5lIa;6VNo^I7Whcs|uWxy8+SY|g0VjboV&IIcTh_r`ML z8kF@W0_+J$14@4U+-CfoY?+97Gd(bUo;kSXPTTUxxGUa2v{(bYpQ1ghy@b5As8d5n z$Vx}h4Mtdv;_*^2Hd31XX$m4=J3K)rj%usGRR1Nd^yXKmY3FU38weLV)2Nf zWhpRpiwM+6ZyaYx^U=CTdkJ+L6B$c{%l7B58$$ov)Xk;OAd~n@p4V4hI*XQGK%tl- zCPe{om?U3Zq(K{FL|vw(M7694;7O9NDss!EaSKC9u2G0bNyohLEc=-qo2W~9&#B?` zlSY4h=8jf1%~iIYzXx$HKbjUeAu|s>Pe}}WV|j$Xkq9mg?l9>v?lA2@a*)o+hW~sh zA)5MJJ4%k`=3G)U8Wzo3ijj-`=UHH`Ohb5p3h@Q3b;RpnbK^K$s)d{kuh?-~}whjX~d!|7M-k)$I zUrE_qJBL7A38tRgH3Oh8-k;v2`7QzTAi|Mj5>v**6_RuTFW{$7<31>XUZ{J)wPD{k z0bk&Qs#`gM&Ghg*zIeHTnzRF$e@>cU!=JbRBsx-|s9!<4oSrA=XL#yc^mXHXL?Ca+ zCuyHCp;RdE)TenLZv^-#=ye>+>Tw>_<5{+kn?UaQmhsh_?9^aHO<-$hMWpA>Ze#{5 zl78vYIpLc9)jRL>WB$0J`?7UlvuD9rY_GcGxTE{xiF9OywBuHM+dE(!BzJi%aQ37* za=f{0>aua%x(y2c>iwbTQkk%M*3fo4w(;yFMY=3l?Jm3l0;(hsE6$J;JH}hulUP2! zI9bm^Mzjgc+yze#Q%rAQ0IsxJsxf1ZInekc!(Ssdmy66A+e3biX z+!)l6u^IrpH^2h=vglJ>EMWi(wVXpoHhCW0V`#3tRz zG;~wIuPY2K#?S;sbs%EoRKf_b?uBGcod&JGh615aVdGQz|`pgfxQCLmM+k zV!aR8=CqJaWiwQqm2%hz?+{~6Gg3UgJd`w%uCpH+GiO0P8WbJ8u)}jR zRN)nM#O8!h+%>Z={3~n7571#99Xo>T455&LJimq^a5#gj;njH{zk7&NqT9B^TDAYm z#sAA55=pO~3v19O-bZl43eDs2YZp}us2`HXto{VsJ}AyYWNQSysPU@_iFq4VD4-9^ zOnnf#`XCZxk=XOE!u9u}PKcLwu|3z8%ro_@Kn&dr66gyaOSw65>V zHy1P_5(_x`9}+T9{8A`r5Mc`)J0~psH;B{rp#y0Z(j_#TVF))&Nvbqclg;`0KOP@a+EwB~9SDd^G)RbK$zG!5+!o|y zoNzMWhK{V+MHa7>V~D5YF@aJQ-34#|yrW}FYUtNIy3)E-tRKkDQDQD5%Hu0|a{RPA;;;LP7^VsU3tIPz7DLXlte5t};vL{w~Fk<6d|L|;ZIhA6zQw03nmf$+5OI+XM zB_BFBeow%Z6N-`SSDUiHUj0MsV0!F~dr|k1u|PL`m=V?AY&I&2Z7QWImrj74)6Wl_ zBmD4b=o$ig{0sFI5wN1tUlEa1dHB(;lf9L-y{P<7E!|x!51m_xW9#|??G_-OyAk-I z>Nsh4wR)NUb^nV9hs(!WhU5Fsuwz-Y4)0lga}I0d#3akdSfT9cEw2(0CDMaCzZ}@Q zu)SkrHy24F^e8yop(Db?Cba24tP0J*Zc+&WUT**E;FT+nwYM17PoMOKBM&sw26yV! znzg1WOq7wRl%I%pj*~BVIpJwH=Enzrzxb-g40?)SV^Uys@=!tAVB{EW^*RA1xu~JC z5LG{tXLTw#?N3(2tuGf!!ECvD!TGbDNpdHGROHF8ob|lRrQb&G3Kh3AEXbCC3-}Y2 zcsDxXnU@9patEvGz%AphU^!x`NYZTn{6B2b4`UM1bt0{;N``>j~tnD~Ku1Xu+ zg<1Ln_+NMy;~c2eb9T-y^-op${TgFy3#23wY#K~4B`dVcUwN!6#tHAg(RN8`bDmyA z77#;C(|S~4G|zCJHb4AJ+FsfM_AJIbh1y5kp=9Wkr@x$@rtmpA7kuIrKim zMEUAXVTX>j^TuKo{TqdKNODQQ1@*e498>Y})(ArfSz;{}q&~M@w>=ZC91P27@3PZF z{l;3WbTN4%*}UrjQAyqwXvr?81l|hJ{+zNx2q}M}OG$AmDunTG@l>YjA_RB`B3X}p#Bh1F*dAYewH>B)G%Vzm^OE7g#sq_irkO#1{{~(cwVoc z=3dha;i#MUc1!M+9c>$7jGcq=o|V6v+2Nx$_@lHLA9?p>qj?DFaU`#A{N$jH5awN_ zrd1dkI0k+kBd)g-Gdxs!S#G#!v~dC?hA`3TTvB#Y+}kFF&D|fr0ZS&!OUYCv@v`6* zPQquo(&B=d5VxW$PuCnIVrxOTtIB%W4*WjPJQ-A-3>X1T0H_3PD9^MFTa!WU)+|S3 zk?h5$ZcO8e?C0oUdxY)-MLND#)xjnofj*HY8;d)2w^yev4n#!09a;41Atr>}&6vYx zd*Sy&tWcj+c->t(Ae0K`n|7|jk`JoMnFK@)b>&qx=2H9?^VUuXzH_BeV_!MGjN}CF zN}3aT5kuA31ULZ=dS2kDg}3YI8Ku1RoEIVq>=t%zWFn_ul%OqxEHJ*O~D0JOu$= zbZl>PF9bdo*mU%c^?ixJZ}zNTO4I?dcNooFAZq{KPQNk;F;R~rX!@-G7`nEBfYjl( zF`Zh2N0WnFU?F{9=})Zrxz^{;Sx?jrQ6=OLte%@4{HLbnh;59w%r$PBH#9Z)o#89Q1Wb`Cj4V180Z$L* z>5H%az_1;a@~rxfAGu%Ru;_pM)pR=wcK8#=$}u$lNgJ9n%RNLeHu~I|MDIg)ANo_n z>yI)Uw>jx4Bu~w>WlBcLY02a_YPIX3iDSFs40@mETZ#fJEfodZ2Ejh#5AR5J2bbEI z7zlp~XoOlD`cIQ6osZ4oQ+|I%=_2w;ghJmkqqAVhA$nd*vjROut6$7W2) z!U{X-i9iH0S)N6XKjaFC9szet>?XXZ5KMUhamZN>^bqyMlT^Mz{F37DS}E5TfKC+j@?Jrm8B$A1LFD$#&S7yx``H$*9`F zpL@w-kv6BqZzNq3y@3_C7@7}=xYez82ga}slED_!@P>-O1#{uMI6$%)_TI~M)<^5& zgI=h%20Jx8DPJTV4ALF=dWRjmkbTyvL{V@+bF_DSob6}6P;h~iyme=gSH^?TDA$(I z;?`P~S{HuP(BZHF<)>0(ut)3qjPun=fKo@A!1e&FEp6h7>YeTXhN1&a~Z}h+tlAPVfnkK z8oYfPs&CM}gcLz$ zl4MSA*u5+mActhP8;Qx~@UY=mZ#v(#MRO2Lvw9u#1m_uR!yL6wuiFI*5E^P_zg`4sCVsaPV4rIOL zafBG{D!D0EUCSv(>JC>t=PhLC8$>|1vYCX%{NjcN4E~fb<2nph$VvrO3Jxv|JnCr! z5rXF{fUE8l)9cS6V5BvK>2-RKka2Ev@0y-s2#Y&G=_KP^mP=qRA zgzuuo+L(0vZ+srQeyJaFdSmSPiH5K;nh5X>)A`|J);v13*aF?-W$x`3y2@!ZPdBl= z4G34SfvMeEfQw?|xxCsaxH2I>>q#l!B;i0w1KZ-1($`3v*^YcD3p!=DUx#pW)qhGi zmy_Gv-u|7|WyaP$oV~tFt}OF;y%_+3nHO7X-_?GJl(_)JXpmn0pcHk-4N3exJ~dg? zu2KUSd9twDokX!2RY|F@u-ih;Bj(f_Txf7reKme#+{p~E_^TPn1=@s5UDJ*aF6KPQCyefzzr1jKbuuE0z4YJEfeop(-=wuFuKhJxw~`v?G$IXy(B}vMVot&2 z7t)h#BxLi%Ysj|H$1yh9&cxc%Haew(D_=74rG}TBxFc%!*fG}*A~YPw?k(Oe7g-q(Gs-Kx&S664!__-& zDw^WZ&QZmCg9tn7qCSP>`FE^=1Gu?gwPiG&>-K8L8~1z{xRo(;!!KFJr}e8zPb#O% zL#DgC={zvsY}yV5`m24sZi58YweH(2XNuwo+G(Xh41M-96?g?KhUsGpp+^30m|dJ} zo7lje9${4=b^^A64N_J?L(CB8M9Mf3rN(}Ws}B35Mbb`82mM((#SRTnBCkxZT+~~? zVzR8guv^hK)0~KjW3zc97j4kLJVJ||+eE&+fS!|=E46dDf}th(!$F(p3!{DIr$bl8 zH=4rdvr04i8QK|IL}O3G@?wplBY!$N{XX8wjA+PEeojFTT7Oa5Xe)9wg>n8^dMNol z5_8ig5iJix@I^O~INduSV$+}nm8dfRkIlaRRRF0tQW#9zLmJgIUqLRs8~NjHayT{U z#ePX?W5pkoNvb1CQK>3+5Y~BiWU37Mx|JI+FG-uj2R1V4;97V%PkIivW{4R zaDP-m-aK?ibKJ`DrwgDPJEhR?->Idtg`y;u8m8dKSBvOYMTB7>&gQHQlV6-}U}b(S z{d#STz;qBD1R^ik2Rz;VlFSs$P*#Z$iC>J8ttDj3EKa>C7~wMf zINK$aXST_Ia07c^cRY)0sN=*#y1UsXQ(pVj!G$lf&iqQ1|fq-8u8TG%q85 zk>{hC=fejleqt0isy_VH!;?vpuNZtE2vckSl*aK+A?B;*yvBEAJK zETGwi#{S3FK($FZig#FH498VTX)R#^PoUDSMx^ z5#p`O>cl%ZZI+*8@la8dtgQ_gFBGUCVfN6%+(eoiHkYL!dVipwu9>Yz9b5)7E44pzC!>VBK~ zm$)pFvzd8>#+sgKb2g}w3ol_LUl6XLt||J-9U!RQ2w^Cu^4%b^Bmzi6uUUibe8eHz z{jPR{fsbwLdCQddTLT3hw!Xn99tYP*37vdHw9Y~uH;IUtk~GwN3|r7U-aAuz&=ehp zlnG>8Cr>L*();Vb1e#To^-2YrspB_(9KpPlbH8Jd7%xC0EHLp8@nL_v)IQ*d?OxIhRSm+4m<2>;y>7(x~V3WN_y zM2b+kT4d6vSgF&2*F}qcJ{%VA-5LniKJ_TJfy84Fl}W$NwSK3TaZj^jp!fPqRs8+c z?vQb3bjvl-2i)})F*k?;dj@N7i=Iq$xmeXt2>0qQ^~W^wB>m3ze|$(eE>5ZqV8%rv zjQ{AAljl>}S?pYt4Za@e=t$y}Qo=EXFU4#k9nk2hem79mQyQ5bt}ym&QgjXBRcByf zA-79rOJf5Tv>V?Cq?&4Z&TNlbGB3MxEx=Kc{4r_C9`|JxTXwTg;EYDHCiecV-$bHB zu;so+!K%Df>tx_N;pwP6Go?IsyJUzOCb3)gUI2$kxiyT;(NX=c zU%rf5zp~=RY6ktgiA40`0}-1Cag^@)FDD+(W_x&GW^(8xA}DSdDTR$j$=`?pA*x<8 zkXsooiHxd0nQnk&wnvnS1a<#M&)zqub+>aqZO1+xRmZJIk?oym_O=oJ?((XJ{Y~>6 zQZY~KA2W!c1|nZo(}G6gEVrHYO9S(N0Nnyo;k=9wC;XcJx}{&Vj}ru_@Efeb zV`_A<58h59TDPRbflFEZ8x$+tfBSvy(7ZggmFwm79r5V-g<_zc5X~-B#{6K>q_vM0 z*cUL+LZtNV9(KEhH+xgu|Rm24&>ehmNt|m$t3(cU5{+3Pg z=jy`)Vspx4Vja&-g9Qa6OghEHu!zh`AnF$xL^aFT))b4WgGDdibITlJMl_ia$al5y zm^?ef`hQG3_FrI^%8Qwt2YRv5^i*e?=sVYq30^1f`n%&Bj(_E$Ms#b>y6>b1 z!zM3-u(@sN_F?)*Rh8HpH`tx&2O77Op`8(^b(pSM4LqBQ%2|5swzb*~tY6}mfMi+S zunm3Lh~)v>2L>HBK^bwkI^S*P<^QCYfm3nR%dS_quaws?0DBseS$(x9+P*zEn|Sj^jXz}B!?KtnmOY@d8Fp*y zhTLR_>U$U;=6hFKYw|=KbQ*dJzt=YwNd7)=dMh`m<ev~a^N`?W2Mllg*8cxZve(ygfvYDN4 zs-imUw-2oa-N+*{*h*#ZEjQaNVcz+kg2%@3w&#TBa})pmA;auC*-vHZer51OnIjh> zO&6ua+hZeprH8(;yIc`bJ!-CX^VU;Izq}P$Ie>ROWWzIGfX}NOc=VseDmLt6d z`CCfeirapytC|$b3*)Fo;R-1xQRkS&4JEv)H6IFHo|(40MI`>es;&d7sitWsp@Z}$ zy#@pVQbSjYbOZ$<)JX5WN(3TRAQUA)K$=MJp@=l;g7jWQx}bncM=*l?@%{eueZF({ z+8f$iw2-qLE0PqUfM3Lb#rxeu3Osp9qEc2 zCo+r{jS%;SCKVYLLBtGhphumtX=ME52F%S) z2&+U?v`O!f7B~2AU-6;7P1R=9S}gua({fa?X_GLpj1z!}$FbPCHyH{!p$e55xhy$o{WZBViZ z3(;GnOSbsNfZT*wnW(?-2=s}|DM3)Lc09i9s~KgMnbKT&z^D+e`mth#46S9=9%AT% zOQ`;=8%5 z>07>>#A5$zBcXZ?Ks zOmbz;4D6MAy(v?Sa+Z+oP4Hk+&~poYE9cy|zF!v?4;sq_pmR<2u~_~$%ElY#s=l3@ z%e2p>;GD>y$Of0V0p3Ur7Qrg9&)M2wdRqAgWqI~tZ6S%V!WV18d*G@UXkQ4^sQytI z&jYq!q@yH#y>{GUL%#?le)=47H(*B`BoPHSv_2UvD(2{O=HzYEWnwENg;I(MD|HRc z?69y}SQ@%s_IId==I5jRLhW4B$`EcZWnZ5!)jJ+P_sz*?E<%l z5Hw9`yM%nkVGxbWvo)t5HIc^^S43o<9qSi_u^V;@%c~X>Xn)%Dyl(kjN;;-rq@a|w;edpy!mmByzvr*plvE7 z2_y7}@PIwG1s@p33rX-e7BOVoTYM;427g3~tbyfHfC~9*5Y|lz73@Ana@U9!zAIvV zy6kK(0gAm$E=i!U(WU|Fk7R9RNhZ1=tmI|pHQ(;!zGFDfswCDkZXOKmL^ZIN&j*OB~JJ!Cw?^AVj zNr0QuGa7q86=k(+u1{WMEFM53Ppz1+<9rYi|2<9KYDJ=Uj(wjs;&!ynm_D+9itr0o z)#7%yHNa|^kFZL!kb`}N?H@#RcRm=i;SCikg7?AiVwT*duJ$) ze&dm5OL}H^X{Y&(`GEc+t@>&_A?T*InYroQ1Kk&K9H&R;L~Y|R z-uvxeVL=ykolOM>U9ba_lAT}!k?{SVQ7<14fwzuSwW+S@Ehkvy?0F$UXJ0<)tin-r znoX=A1G_xFSLAuXoaZ6j*!kfQc9DzqX#O^9R`ByF2h|07O;}+4&^xj%+SnFX%W>6x zWyX%$#I#+AHa}DmHBda@0!8$b$`CnYHC5TO*nQAhxf2>u)%{WyDvIVDJ~W19M$Eo? zx(T}U@Vo^LDtjHQOGvp3n78dPSs%*PNN>PgJYc4UZjN3Iqgg6zEYT zv3>ZZLQZPmeRMkOWkrK5)Ne5brMH}$llw~jve3eQ$4CwlY37;_I-(ba*1E`cX(syi zy4eF+?Q&XUlmh9icGvH0i!^+18=s&&QfC}=#$2eCM%Xw1WL zY!>^I$t)sywdjoO^d!^c`9l;^Y?uls8M?PbpuPwpO1bS&Q#03^Z5s=4#lt5ks5tY- z_jCmgywB4J)OF-@bsmSbs+3<|S4b~TS=do)jk95Ed-O5(Z7-WFy?)1BoJz0s#!CuU zsfZxb#+a6DbQ2T1{57y)VMX2J(v4|Xr*Hi_IWg5pcl3&?B1dCxF3nAq48-QN-Qrf) zazOl(+zQ8Uv{=1MM9dTA-FXqR$Hy;-?Xv=|LVpf?7NK^X0SET=&`?7|9b;H5r3zcJ+_f~{u8O$6PRasaWXiUnf zC>CnNksORZDwnN^Dm-`H<5ZLvgQ+7BulL~~fBG#&t81?+H(I1J^(7x0lnueP#5tZj z;D>blC&aB81z~&$9$d3}VI7)AD&h~1RT8|fUKE8jC_*MogxFT75|Vhc;gR%T)? zyS9YawFnVXGIh0WIi|QW6!DUHLr&iwhhaau9;R@IR5_pDy;S9F;;jdV6QNbPTie5z z!Ig{k1|qouy^(^1?V21pjN8z_1GIsN^0(M@N_Zhv9^E#7Xd}>trxqUmhDY_Kj)I7{4rv%r#s3R<7;{k2+aryIvlbXodbIMKXqLr%dbQs1DC4ZIo8M0OFH_eX zVxn|*T)26_i-N_4P@GJ6`KH)PnKX~VfYb=gGOW6nzV3lAJ#}1t&d3cx6AS;P^`h&J zN9n&JR62`S<+pWk%C`JSY_fK|s)Xl_7hh7>q|n3AhTJ^6)O@A`;#s@jeaMPwKLx%C zDL3o|N+qd+>~hq#xU+5D=0{+z?xkTQxEOKOX|jKnqGBxk^D4&_F_xs^K~m}WGDTmv z9`hy6F)j91Q*_SYm~W2x%gP;A61lP6M!$AcO`v)gy%?@lB^XP=H$Y|}0@I+G(YTwq ze^OFPy51tD*0Oukvdm|V7rD$KGZr41801mk!Tcsk&=!lOX9w)ba7=Wvrud zpGdU&%D+RVZJ^BP;?e2&FeBZszSM#P@6HV*80|f)r;B-)QXjw2p^uJ(=m~*Uooc12 z0vobKXq7(Bq%X4=!?lTz;95SEpW&kqvZ~HY+bPNgpIW?b+=4eul2SPV1e(o9sh?z< zjHy^j0jMaiJD8{f+>tiUALQk{D4%>1k4l%F8|5XvR(t9^sa(HzjIC;OCjNT4=Rfas zI0b<^`cA&LxN3z!Q>xpZ?yOq?AfQWXFV0(>igH{4k+||T3t&|&nQ2w`y9E$PMAz#b z)JLDC{W_7{ZIK$9cAxICqn?<)8M`j&5_?1lSig;l2|fN~2T8{)6Jy9i@gL+ zt8y5()0On~*pah{4=R*6fc1?jP~`(pcAg~*nUEPHY$Z-v#T^6mr_;qb;AZ-^1SNb5 zC53p#(hR8|My!w7$xMdz1pGv~8p5_S;U;9$={HN1-&za=n1JXkeH=j zkG0-ovmUm-&}m1xZjq-!U}>bnV6UFG5BA(52}pONpzfkXnVQHmw{~SC`G- z2`e~z9tXFqBI&pg0g0!ZUwWhbwI1c%xc5ou-gHrA`2fcvh;_y+Kqh!=CKOWoxrR>c-vwZXPjv%2Lt={Fl>q|~FP z{uq`EcjECD5A#S-tuZBfGoul3uKQ5J)ZfuLvJ)AeJIO4(j0@h%(PG zHHDVjK}T*R15()BeqkS_Uynh3Nc5RB1o5$Nnw2y7m_Z?F*k%rKoYr12-e2abn8KNt zsst7qKoHJ>>eYU1{3hr1&?t(r8%i4G(LGEvSu-z+B6Ig)A8lq8y>l>W;!-^DnzWfD zs46m@{{>(m1O3AuO!}r*6D0y4FTCRT_`$I=ucQPYGT0UWG1 zBGUB*m90OY*lbPwT$VBEx0WisfiB*W@|pk9;_>=2arso+Ja|++bKIK1UzIfHc^jw5 zeoe^baf|za6;5&Ny>$vEcs?iG+QKJ1*wbJ17cyAcJ=imf?7Lht)G7%;tFSFhxZ^7- zKhpAbtF;YY(Dt=5Ao#5jGI$>Lbq|rgS5rH=eEK?l>C~-NbC|m(Mkjt)lqejBlfOJ^ zeVpcCCy}wk*2=Kt3X$^I?q8}x>0KYTDV7y#Xn2`i19Kv2OjAGqyc7{h-Ce`YF067s zCr`Vwy>T~0>bvi2hRhwsd}ogea}#?%WML zeS7cxE%EuA?E~-GHSZfFS4{~AtCqmuk{A){+ZR3SPbm*pOM8(>@Htl*>6JR;nrw5% zm-Vx^KIdV?=Uj8^`DKJxRH64##jvh1J0X}QgZ6$EjW&fx=Q+dK_|!6vvPes@dtW5s zIrRuV-xt*VxBlzfLAH)751_md1y_m@w=NH1f>C4z;`f7N9Ir1-?s)lV zj&@-irTaeZp5a3ywGsj-PLd+)5fkMJBiLbuoGr|RENlK%L`O-ieoa%Ki0U_Ho?VTM zTcm6d!0(OQI;$t+6Tu6k+2H_(9kgpLH*%sjGjMjw+i4qSj#JP0ZML?J%sY`CBzVn7ZjNrSfjO4qTzdf8_fRKb0`i=WAT|vG8E*f$yxu{w)u(n=<3vbu3BqTg& zX4!SZy_uvcj?dH2^pbm~Nz=_{iCXS@MkX=Z+r*N|Lj}SBwGdOXM~90oqLcL+S=zG&18DRJ8&y zYk93}(gPwPe9%oLNLbA9K0M(*g(Ci}o{ZioM)EMqHwHqt%$uRFM@n-JLs_9U){|fF zu#vhSs2BI0Q7XlHulp*MyuNx;icI@q?3Qh6r0j0|cJBA}Fe_K2mHTb8ned{r%MY)9 zoS`lU-!3`mGPb-)R0e{mHo^iH!xQVH?1PTLxW2miw z(m+1Uoj*5iOo$aw6_|->vjPgRzlYfBSQ7&P7Yumc*xxDumpthF8;lq_YoG+^)eZbJ z8^*>ONF(N7FzKw%0swqd1pt`-CBZBDpIq-a+It83csM#}**jngtbt76G`D&*8$PZk ziV*<7r@yFP^FK0L>US{Swm?pS*#dyK0=_`?Q~&@z{Y5nQ{tM;*kJ>>#)|o*d0MHHs z0670b0syi2i0eNU@JDTu9Z(QVn?^)7NeckziU0tV|AJXv-GtMCgo z0C4?Z&{DVmhuS;nc=-eds0DgCcsTx37Kx9Gj->*m0KhYRCivR*R5@o}L;lqu%{*D*NtNM!uA^`wT%nKVJH_<*z9 z%l^;F2>>wvB?$n$`1D7X(-z<2f9BcGhyZ|{YXAV-zd)&9F*$IcDAzx>g>R&%|J@cSiZR9W1aL|q`sJJJ7(+WC4JP{!0!RM`5pD;B zVh;WwIGBLwhh5B=QoJc)q;2qTUW0*{`!>Kk1d*aZOr{M`iO9?m2=GT!MKk^LRhTP0 z3MA-_VY3CQgSdk+Hnu=5kWCn-+!lBn)SHUgwFT-De9Z)6MAd=+WGxJOnvZ#G2Q&s% Y7GNgqfZSC40DeFm-u~{?;jIPme?4a2U;qFB diff --git a/target/scala-2.13/zinc/inc_compile_2.13.zip b/target/scala-2.13/zinc/inc_compile_2.13.zip index 2a881a4ae3ed3ebb37c27d92b26d299986735e5c..e37d9ee9e6263e1892922dd1e1ae943b409618d7 100755 GIT binary patch delta 8130 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�KV=3=Nt8X_JeVl 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 initialChanges = InitialChanges(Changes(added = Set(), removed = Set(), changed = Set(), unmodified = ...),Set(),Set(),API Changes: Set()) -[debug] No changes +[debug] > initialChanges = InitialChanges(Changes(added = Set(), removed = Set(), changed = Set(${BASE}/src/main/scala/micore/Core.scala), unmodified = ...),Set(),Set(),API Changes: Set()) +[debug]  +[debug] Initial source changes: +[debug]  removed: Set() +[debug]  added: Set() +[debug]  modified: Set(${BASE}/src/main/scala/micore/Core.scala) +[debug] Invalidated products: Set() +[debug] External API changes: API Changes: Set() +[debug] Modified binary dependencies: Set() +[debug] Initial directly invalidated classes: Set(micore.Core) +[debug] Sources indirectly invalidated by: +[debug]  product: Set() +[debug]  binary dep: Set() +[debug]  external source: Set() +[debug] All initially invalidated classes: Set(micore.Core) +[debug] All initially invalidated sources:Set(${BASE}/src/main/scala/micore/Core.scala) +[debug] Initial set of included nodes: micore.Core +[debug] compilation cycle 1 +[info] compiling 1 Scala source to /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes ... +[debug] Returning already retrieved and compiled bridge: /home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala2-sbt-bridge/2.13.12/scala2-sbt-bridge-2.13.12.jar. +[debug] [zinc] Running cached compiler 3fcbb45f for Scala compiler version 2.13.12 +[debug] [zinc] The Scala compiler is invoked with: +[debug]  -language:reflectiveCalls +[debug]  -deprecation +[debug]  -feature +[debug]  -Xcheckinit +[debug]  -Ymacro-annotations +[debug]  -Xplugin:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/chisel-plugin_2.13.12/6.2.0/chisel-plugin_2.13.12-6.2.0.jar +[debug]  -bootclasspath +[debug]  /home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar +[debug]  -classpath +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/chisel_2.13/6.2.0/chisel_2.13-6.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.12/scala-reflect-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/scopt/scopt_2.13/4.1.0/scopt_2.13-4.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/net/jcazevedo/moultingyaml_2.13/0.4.2/moultingyaml_2.13-0.4.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native_2.13/4.0.6/json4s-native_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/data-class_2.13/0.2.6/data-class_2.13-0.2.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.2/os-lib_2.13-0.9.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/1.0.4/scala-parallel-collections_2.13-1.0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.1.0/upickle_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/firtool-resolver_2.13/1.3.0/firtool-resolver_2.13-1.3.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.13/2.22.0/nscala-time_2.13-2.22.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-core_2.13/4.0.6/json4s-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native-core_2.13/4.0.6/json4s-native-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0/geny_2.13-1.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.1.0/ujson_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.1.0/upack_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.1.0/upickle-implicits_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/dirs/directories/26/directories-26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/scribe_2.13/3.13.0/scribe_2.13-3.13.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.8/coursier_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.10.1/joda-time-2.10.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/joda/joda-convert/2.2.0/joda-convert-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-ast_2.13/4.0.6/json4s-ast_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-scalap_2.13/4.0.6/json4s-scalap_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.1.0/upickle-core_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/perfolation_2.13/1.2.9/perfolation_2.13-1.2.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.1/sourcecode_2.13-0.3.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.11.0/scala-collection-compat_2.13-2.11.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/moduload_2.13/1.1.7/moduload_2.13-1.1.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.13.5.2/jsoniter-scala-core_2.13-2.13.5.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.8/coursier-core_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.8/coursier-cache_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-proxy-setup/2.1.8/coursier-proxy-setup-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.2.0/scala-xml_2.13-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.8/coursier-util_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.9.0/plexus-archiver-4.9.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/virtuslab/scala-cli/config_2.13/0.2.1/config_2.13-0.2.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.5/windows-ansi-0.0.5.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.4.1/plexus-io-3.4.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.15.0/commons-io-2.15.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.24.0/commons-compress-1.24.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-10/zstd-jni-1.5.5-10.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar +[debug] New invalidations: +[debug] Initial set of included nodes:  +[debug] Previously invalidated, but (transitively) depend on new invalidations: +[debug] Final step, transitive dependencies: +[debug]  Set() +[debug] No classes were invalidated. +[debug] Scala compilation took 2.825691095 s +[debug] done compiling diff --git a/target/streams/compile/exportedProductJars/_global/streams/export b/target/streams/compile/exportedProductJars/_global/streams/export index 26fe379..671555b 100755 --- a/target/streams/compile/exportedProductJars/_global/streams/export +++ b/target/streams/compile/exportedProductJars/_global/streams/export @@ -1 +1 @@ -/home/gh0s7/project/ddca/micore/target/scala-2.13/-name-_2.13-0.1.0.jar +/run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/-name-_2.13-0.1.0.jar diff --git a/target/streams/compile/incOptions/_global/streams/out b/target/streams/compile/incOptions/_global/streams/out index 9479f4e..8460bc7 100755 --- a/target/streams/compile/incOptions/_global/streams/out +++ b/target/streams/compile/incOptions/_global/streams/out @@ -1,2 +1,11 @@ [debug] Created transactional ClassFileManager with tempDir = /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes.bak +[debug] About to delete class files: +[debug]  Core$$anon$1.class +[debug]  Core.class +[debug] We backup class files: +[debug]  Core$$anon$1.class +[debug]  Core.class +[debug] Registering generated classes: +[debug]  Core$$anon$1.class +[debug]  Core.class [debug] Removing the temporary directory used for backing up class files: /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes.bak diff --git a/target/streams/compile/packageBin/_global/streams/inputs b/target/streams/compile/packageBin/_global/streams/inputs index f25655c..4ae948c 100755 --- a/target/streams/compile/packageBin/_global/streams/inputs +++ b/target/streams/compile/packageBin/_global/streams/inputs @@ -1 +1 @@ -160837087 \ No newline at end of file +-18168398 \ No newline at end of file diff --git a/target/streams/compile/packageBin/_global/streams/out b/target/streams/compile/packageBin/_global/streams/out index e08e3d0..873cb34 100755 --- a/target/streams/compile/packageBin/_global/streams/out +++ b/target/streams/compile/packageBin/_global/streams/out @@ -1,73 +1,57 @@ -[debug] Packaging /home/gh0s7/project/ddca/micore/target/scala-2.13/-name-_2.13-0.1.0.jar ... +[debug] Packaging /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/-name-_2.13-0.1.0.jar ... [debug] Input file mappings: -[debug]  gcd -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd -[debug]  gcd/GcdInputBundle.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/GcdInputBundle.class -[debug]  gcd/GcdOutputBundle.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/GcdOutputBundle.class -[debug]  gcd/DecoupledGcd.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/DecoupledGcd.class -[debug]  gcd/GCD.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/GCD.class -[debug]  gcd/GCD$.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/GCD$.class -[debug]  gcd/GCD$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/GCD$$anon$1.class -[debug]  gcd/GCD$delayedInit$body.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/gcd/GCD$delayedInit$body.class [debug]  common -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/common +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/common [debug]  common/Consts$.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/common/Consts$.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/common/Consts$.class [debug]  common/Consts.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/common/Consts.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/common/Consts.class [debug]  common/Instructions$.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/common/Instructions$.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/common/Instructions$.class [debug]  common/Instructions.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/common/Instructions.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/common/Instructions.class [debug]  micore -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore -[debug]  micore/Core.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/Core.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore [debug]  micore/Core$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/Core$$anon$1.class -[debug]  micore/TopOrigin.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/TopOrigin.class -[debug]  micore/TopOrigin$.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/TopOrigin$.class -[debug]  micore/TopOrigin$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/TopOrigin$$anon$1.class -[debug]  micore/TopOrigin$delayedInit$body.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/TopOrigin$delayedInit$body.class -[debug]  micore/ImemPortIo.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/ImemPortIo.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/Core$$anon$1.class +[debug]  micore/Core.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/Core.class [debug]  micore/DmemPortIo.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/DmemPortIo.class -[debug]  micore/Memory.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/Memory.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/DmemPortIo.class +[debug]  micore/ImemPortIo.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/ImemPortIo.class [debug]  micore/Memory$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/micore/Memory$$anon$1.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/Memory$$anon$1.class +[debug]  micore/Memory.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/Memory.class +[debug]  micore/TopOrigin$$anon$1.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/TopOrigin$$anon$1.class +[debug]  micore/TopOrigin$.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/TopOrigin$.class +[debug]  micore/TopOrigin$delayedInit$body.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/TopOrigin$delayedInit$body.class +[debug]  micore/TopOrigin.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/micore/TopOrigin.class [debug]  sicore -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore -[debug]  sicore/TopOrigin.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/TopOrigin.class -[debug]  sicore/TopOrigin$.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/TopOrigin$.class -[debug]  sicore/TopOrigin$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/TopOrigin$$anon$1.class -[debug]  sicore/TopOrigin$delayedInit$body.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/TopOrigin$delayedInit$body.class -[debug]  sicore/Core.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/Core.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore [debug]  sicore/Core$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/Core$$anon$1.class -[debug]  sicore/ImemPortIo.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/ImemPortIo.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/Core$$anon$1.class +[debug]  sicore/Core.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/Core.class [debug]  sicore/DmemPortIo.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/DmemPortIo.class -[debug]  sicore/Memory.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/Memory.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/DmemPortIo.class +[debug]  sicore/ImemPortIo.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/ImemPortIo.class [debug]  sicore/Memory$$anon$1.class -[debug]  /home/gh0s7/project/ddca/micore/target/scala-2.13/classes/sicore/Memory$$anon$1.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/Memory$$anon$1.class +[debug]  sicore/Memory.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/Memory.class +[debug]  sicore/TopOrigin$$anon$1.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/TopOrigin$$anon$1.class +[debug]  sicore/TopOrigin$.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/TopOrigin$.class +[debug]  sicore/TopOrigin$delayedInit$body.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/TopOrigin$delayedInit$body.class +[debug]  sicore/TopOrigin.class +[debug]  /run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/classes/sicore/TopOrigin.class [debug] Done packaging. diff --git a/target/streams/compile/packageBin/_global/streams/output b/target/streams/compile/packageBin/_global/streams/output index 4e9041f..ccc866e 100755 --- a/target/streams/compile/packageBin/_global/streams/output +++ b/target/streams/compile/packageBin/_global/streams/output @@ -1 +1 @@ -1488086236 \ No newline at end of file +-1359482768 \ No newline at end of file diff --git a/target/streams/runtime/dependencyClasspathAsJars/_global/streams/export b/target/streams/runtime/dependencyClasspathAsJars/_global/streams/export index ddc45ce..112ae53 100755 --- a/target/streams/runtime/dependencyClasspathAsJars/_global/streams/export +++ b/target/streams/runtime/dependencyClasspathAsJars/_global/streams/export @@ -1 +1 @@ -/home/gh0s7/project/ddca/micore/target/scala-2.13/-name-_2.13-0.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/chisel_2.13/6.2.0/chisel_2.13-6.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.12/scala-reflect-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/scopt/scopt_2.13/4.1.0/scopt_2.13-4.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/net/jcazevedo/moultingyaml_2.13/0.4.2/moultingyaml_2.13-0.4.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native_2.13/4.0.6/json4s-native_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/data-class_2.13/0.2.6/data-class_2.13-0.2.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.2/os-lib_2.13-0.9.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/1.0.4/scala-parallel-collections_2.13-1.0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.1.0/upickle_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/firtool-resolver_2.13/1.3.0/firtool-resolver_2.13-1.3.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.13/2.22.0/nscala-time_2.13-2.22.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-core_2.13/4.0.6/json4s-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native-core_2.13/4.0.6/json4s-native-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0/geny_2.13-1.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.1.0/ujson_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.1.0/upack_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.1.0/upickle-implicits_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/dirs/directories/26/directories-26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/scribe_2.13/3.13.0/scribe_2.13-3.13.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.8/coursier_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.10.1/joda-time-2.10.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/joda/joda-convert/2.2.0/joda-convert-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-ast_2.13/4.0.6/json4s-ast_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-scalap_2.13/4.0.6/json4s-scalap_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.1.0/upickle-core_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/perfolation_2.13/1.2.9/perfolation_2.13-1.2.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.1/sourcecode_2.13-0.3.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.11.0/scala-collection-compat_2.13-2.11.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/moduload_2.13/1.1.7/moduload_2.13-1.1.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.13.5.2/jsoniter-scala-core_2.13-2.13.5.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.8/coursier-core_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.8/coursier-cache_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-proxy-setup/2.1.8/coursier-proxy-setup-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.2.0/scala-xml_2.13-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.8/coursier-util_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.9.0/plexus-archiver-4.9.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/virtuslab/scala-cli/config_2.13/0.2.1/config_2.13-0.2.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.5/windows-ansi-0.0.5.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.4.1/plexus-io-3.4.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.15.0/commons-io-2.15.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.24.0/commons-compress-1.24.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-10/zstd-jni-1.5.5-10.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar +/run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/-name-_2.13-0.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/chisel_2.13/6.2.0/chisel_2.13-6.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.12/scala-reflect-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/scopt/scopt_2.13/4.1.0/scopt_2.13-4.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/net/jcazevedo/moultingyaml_2.13/0.4.2/moultingyaml_2.13-0.4.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native_2.13/4.0.6/json4s-native_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/data-class_2.13/0.2.6/data-class_2.13-0.2.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.2/os-lib_2.13-0.9.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/1.0.4/scala-parallel-collections_2.13-1.0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.1.0/upickle_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/firtool-resolver_2.13/1.3.0/firtool-resolver_2.13-1.3.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.13/2.22.0/nscala-time_2.13-2.22.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-core_2.13/4.0.6/json4s-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native-core_2.13/4.0.6/json4s-native-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0/geny_2.13-1.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.1.0/ujson_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.1.0/upack_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.1.0/upickle-implicits_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/dirs/directories/26/directories-26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/scribe_2.13/3.13.0/scribe_2.13-3.13.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.8/coursier_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.10.1/joda-time-2.10.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/joda/joda-convert/2.2.0/joda-convert-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-ast_2.13/4.0.6/json4s-ast_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-scalap_2.13/4.0.6/json4s-scalap_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.1.0/upickle-core_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/perfolation_2.13/1.2.9/perfolation_2.13-1.2.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.1/sourcecode_2.13-0.3.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.11.0/scala-collection-compat_2.13-2.11.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/moduload_2.13/1.1.7/moduload_2.13-1.1.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.13.5.2/jsoniter-scala-core_2.13-2.13.5.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.8/coursier-core_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.8/coursier-cache_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-proxy-setup/2.1.8/coursier-proxy-setup-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.2.0/scala-xml_2.13-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.8/coursier-util_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.9.0/plexus-archiver-4.9.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/virtuslab/scala-cli/config_2.13/0.2.1/config_2.13-0.2.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.5/windows-ansi-0.0.5.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.4.1/plexus-io-3.4.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.15.0/commons-io-2.15.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.24.0/commons-compress-1.24.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-10/zstd-jni-1.5.5-10.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar diff --git a/target/streams/runtime/exportedProductJars/_global/streams/export b/target/streams/runtime/exportedProductJars/_global/streams/export index 26fe379..671555b 100755 --- a/target/streams/runtime/exportedProductJars/_global/streams/export +++ b/target/streams/runtime/exportedProductJars/_global/streams/export @@ -1 +1 @@ -/home/gh0s7/project/ddca/micore/target/scala-2.13/-name-_2.13-0.1.0.jar +/run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/-name-_2.13-0.1.0.jar diff --git a/target/streams/runtime/fullClasspathAsJars/_global/streams/export b/target/streams/runtime/fullClasspathAsJars/_global/streams/export index ddc45ce..112ae53 100755 --- a/target/streams/runtime/fullClasspathAsJars/_global/streams/export +++ b/target/streams/runtime/fullClasspathAsJars/_global/streams/export @@ -1 +1 @@ -/home/gh0s7/project/ddca/micore/target/scala-2.13/-name-_2.13-0.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/chisel_2.13/6.2.0/chisel_2.13-6.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.12/scala-reflect-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/scopt/scopt_2.13/4.1.0/scopt_2.13-4.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/net/jcazevedo/moultingyaml_2.13/0.4.2/moultingyaml_2.13-0.4.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native_2.13/4.0.6/json4s-native_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/data-class_2.13/0.2.6/data-class_2.13-0.2.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.2/os-lib_2.13-0.9.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/1.0.4/scala-parallel-collections_2.13-1.0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.1.0/upickle_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/firtool-resolver_2.13/1.3.0/firtool-resolver_2.13-1.3.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.13/2.22.0/nscala-time_2.13-2.22.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-core_2.13/4.0.6/json4s-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native-core_2.13/4.0.6/json4s-native-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0/geny_2.13-1.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.1.0/ujson_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.1.0/upack_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.1.0/upickle-implicits_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/dirs/directories/26/directories-26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/scribe_2.13/3.13.0/scribe_2.13-3.13.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.8/coursier_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.10.1/joda-time-2.10.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/joda/joda-convert/2.2.0/joda-convert-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-ast_2.13/4.0.6/json4s-ast_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-scalap_2.13/4.0.6/json4s-scalap_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.1.0/upickle-core_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/perfolation_2.13/1.2.9/perfolation_2.13-1.2.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.1/sourcecode_2.13-0.3.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.11.0/scala-collection-compat_2.13-2.11.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/moduload_2.13/1.1.7/moduload_2.13-1.1.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.13.5.2/jsoniter-scala-core_2.13-2.13.5.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.8/coursier-core_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.8/coursier-cache_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-proxy-setup/2.1.8/coursier-proxy-setup-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.2.0/scala-xml_2.13-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.8/coursier-util_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.9.0/plexus-archiver-4.9.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/virtuslab/scala-cli/config_2.13/0.2.1/config_2.13-0.2.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.5/windows-ansi-0.0.5.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.4.1/plexus-io-3.4.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.15.0/commons-io-2.15.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.24.0/commons-compress-1.24.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-10/zstd-jni-1.5.5-10.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar +/run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/-name-_2.13-0.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-library/2.13.12/scala-library-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/chisel_2.13/6.2.0/chisel_2.13-6.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/scala-reflect/2.13.12/scala-reflect-2.13.12.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/scopt/scopt_2.13/4.1.0/scopt_2.13-4.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/net/jcazevedo/moultingyaml_2.13/0.4.2/moultingyaml_2.13-0.4.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native_2.13/4.0.6/json4s-native_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-text/1.10.0/commons-text-1.10.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/data-class_2.13/0.2.6/data-class_2.13-0.2.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/os-lib_2.13/0.9.2/os-lib_2.13-0.9.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-parallel-collections_2.13/1.0.4/scala-parallel-collections_2.13-1.0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle_2.13/3.1.0/upickle_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/chipsalliance/firtool-resolver_2.13/1.3.0/firtool-resolver_2.13-1.3.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/nscala-time/nscala-time_2.13/2.22.0/nscala-time_2.13-2.22.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/yaml/snakeyaml/1.26/snakeyaml-1.26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-core_2.13/4.0.6/json4s-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-native-core_2.13/4.0.6/json4s-native-core_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-lang3/3.12.0/commons-lang3-3.12.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/geny_2.13/1.0.0/geny_2.13-1.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/ujson_2.13/3.1.0/ujson_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upack_2.13/3.1.0/upack_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-implicits_2.13/3.1.0/upickle-implicits_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/dev/dirs/directories/26/directories-26.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/scribe_2.13/3.13.0/scribe_2.13-3.13.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier_2.13/2.1.8/coursier_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/joda-time/joda-time/2.10.1/joda-time-2.10.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/joda/joda-convert/2.2.0/joda-convert-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-ast_2.13/4.0.6/json4s-ast_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/json4s/json4s-scalap_2.13/4.0.6/json4s-scalap_2.13-4.0.6.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/thoughtworks/paranamer/paranamer/2.8/paranamer-2.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/upickle-core_2.13/3.1.0/upickle-core_2.13-3.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/perfolation_2.13/1.2.9/perfolation_2.13-1.2.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/lihaoyi/sourcecode_2.13/0.3.1/sourcecode_2.13-0.3.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-collection-compat_2.13/2.11.0/scala-collection-compat_2.13-2.11.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/outr/moduload_2.13/1.1.7/moduload_2.13-1.1.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/plokhotnyuk/jsoniter-scala/jsoniter-scala-core_2.13/2.13.5.2/jsoniter-scala-core_2.13-2.13.5.2.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-core_2.13/2.1.8/coursier-core_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-cache_2.13/2.1.8/coursier-cache_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-proxy-setup/2.1.8/coursier-proxy-setup-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/concurrent-reference-hash-map/1.1.0/concurrent-reference-hash-map-1.1.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/scala-lang/modules/scala-xml_2.13/2.2.0/scala-xml_2.13-2.2.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/coursier-util_2.13/2.1.8/coursier-util_2.13-2.1.8.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/get-coursier/jniutils/windows-jni-utils/0.3.3/windows-jni-utils-0.3.3.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-archiver/4.9.0/plexus-archiver-4.9.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-container-default/2.1.1/plexus-container-default-2.1.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/virtuslab/scala-cli/config_2.13/0.2.1/config_2.13-0.2.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/io/github/alexarchambault/windows-ansi/windows-ansi/0.0.5/windows-ansi-0.0.5.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/javax/inject/javax.inject/1/javax.inject-1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/4.0.0/plexus-utils-4.0.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-io/3.4.1/plexus-io-3.4.1.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/commons-io/commons-io/2.15.0/commons-io-2.15.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/commons/commons-compress/1.24.0/commons-compress-1.24.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.36/slf4j-api-1.7.36.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/iq80/snappy/snappy/0.4/snappy-0.4.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/tukaani/xz/1.9/xz-1.9.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/com/github/luben/zstd-jni/1.5.5-10/zstd-jni-1.5.5-10.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/codehaus/plexus/plexus-classworlds/2.6.0/plexus-classworlds-2.6.0.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/apache/xbean/xbean-reflect/3.7/xbean-reflect-3.7.jar:/home/gh0s7/.cache/coursier/v1/https/repo1.maven.org/maven2/org/fusesource/jansi/jansi/1.18/jansi-1.18.jar diff --git a/target/streams/runtime/internalDependencyAsJars/_global/streams/export b/target/streams/runtime/internalDependencyAsJars/_global/streams/export index 26fe379..671555b 100755 --- a/target/streams/runtime/internalDependencyAsJars/_global/streams/export +++ b/target/streams/runtime/internalDependencyAsJars/_global/streams/export @@ -1 +1 @@ -/home/gh0s7/project/ddca/micore/target/scala-2.13/-name-_2.13-0.1.0.jar +/run/media/gh0s7/Data/project/ddca2024/micore/target/scala-2.13/-name-_2.13-0.1.0.jar diff --git a/test_run_dir/Micore_should_run_the_test_program/TopOrigin.lo.fir b/test_run_dir/Micore_should_run_the_test_program/TopOrigin.lo.fir new file mode 100755 index 0000000..69c7fd4 --- /dev/null +++ b/test_run_dir/Micore_should_run_the_test_program/TopOrigin.lo.fir @@ -0,0 +1,655 @@ +FIRRTL version 1.2.0 +circuit TopOrigin : + module Core : @[src/main/scala/micore/Core.scala 8:7] + input clock : Clock @[src/main/scala/micore/Core.scala 8:7] + input reset : UInt<1> @[src/main/scala/micore/Core.scala 8:7] + output io_imem_addr : UInt<32> @[src/main/scala/micore/Core.scala 9:14] + input io_imem_inst : UInt<32> @[src/main/scala/micore/Core.scala 9:14] + output io_dmem_addr : UInt<32> @[src/main/scala/micore/Core.scala 9:14] + input io_dmem_rdata : UInt<32> @[src/main/scala/micore/Core.scala 9:14] + output io_dmem_wen : UInt<1> @[src/main/scala/micore/Core.scala 9:14] + output io_dmem_wdata : UInt<32> @[src/main/scala/micore/Core.scala 9:14] + output io_exit : UInt<1> @[src/main/scala/micore/Core.scala 9:14] + + mem regfile : @[src/main/scala/micore/Core.scala 15:20] + data-type => UInt<32> + depth => 32 + read-latency => 0 + write-latency => 1 + reader => id_rs_data_MPORT + reader => id_rt_data_MPORT + reader => MPORT_1 + reader => MPORT_2 + reader => MPORT_3 + writer => MPORT + read-under-write => undefined + reg id_reg_pc : UInt<32>, clock with : + reset => (UInt<1>("h0"), id_reg_pc) @[src/main/scala/micore/Core.scala 19:26] + reg id_reg_inst : UInt<32>, clock with : + reset => (UInt<1>("h0"), id_reg_inst) @[src/main/scala/micore/Core.scala 20:28] + reg exe_reg_pc : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_pc) @[src/main/scala/micore/Core.scala 23:27] + reg exe_reg_wb_addr : UInt<5>, clock with : + reset => (UInt<1>("h0"), exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 24:32] + reg exe_reg_op1_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_op1_data) @[src/main/scala/micore/Core.scala 25:33] + reg exe_reg_op2_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_op2_data) @[src/main/scala/micore/Core.scala 26:33] + reg exe_reg_rt_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_rt_data) @[src/main/scala/micore/Core.scala 27:32] + reg exe_reg_exe_fun : UInt<5>, clock with : + reset => (UInt<1>("h0"), exe_reg_exe_fun) @[src/main/scala/micore/Core.scala 28:32] + reg exe_reg_mem_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), exe_reg_mem_wen) @[src/main/scala/micore/Core.scala 29:32] + reg exe_reg_rf_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), exe_reg_rf_wen) @[src/main/scala/micore/Core.scala 30:31] + reg exe_reg_wb_sel : UInt<3>, clock with : + reset => (UInt<1>("h0"), exe_reg_wb_sel) @[src/main/scala/micore/Core.scala 31:31] + reg exe_reg_imm_i_sext : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_imm_i_sext) @[src/main/scala/micore/Core.scala 32:35] + reg exe_reg_imm_j : UInt<32>, clock with : + reset => (UInt<1>("h0"), exe_reg_imm_j) @[src/main/scala/micore/Core.scala 33:30] + reg mem_reg_pc : UInt<32>, clock with : + reset => (UInt<1>("h0"), mem_reg_pc) @[src/main/scala/micore/Core.scala 36:27] + reg mem_reg_wb_addr : UInt<5>, clock with : + reset => (UInt<1>("h0"), mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 37:32] + reg mem_reg_rt_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), mem_reg_rt_data) @[src/main/scala/micore/Core.scala 38:32] + reg mem_reg_mem_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), mem_reg_mem_wen) @[src/main/scala/micore/Core.scala 39:32] + reg mem_reg_rf_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), mem_reg_rf_wen) @[src/main/scala/micore/Core.scala 40:31] + reg mem_reg_wb_sel : UInt<3>, clock with : + reset => (UInt<1>("h0"), mem_reg_wb_sel) @[src/main/scala/micore/Core.scala 41:31] + reg mem_reg_alu_out : UInt<32>, clock with : + reset => (UInt<1>("h0"), mem_reg_alu_out) @[src/main/scala/micore/Core.scala 42:32] + reg wb_reg_wb_addr : UInt<5>, clock with : + reset => (UInt<1>("h0"), wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 45:31] + reg wb_reg_rf_wen : UInt<2>, clock with : + reset => (UInt<1>("h0"), wb_reg_rf_wen) @[src/main/scala/micore/Core.scala 46:30] + reg wb_reg_wb_data : UInt<32>, clock with : + reset => (UInt<1>("h0"), wb_reg_wb_data) @[src/main/scala/micore/Core.scala 47:31] + reg if_reg_pc : UInt<32>, clock with : + reset => (UInt<1>("h0"), if_reg_pc) @[src/main/scala/micore/Core.scala 50:26] + node _if_pc_plus4_T = add(if_reg_pc, UInt<32>("h4")) @[src/main/scala/micore/Core.scala 60:31] + node if_pc_plus4 = tail(_if_pc_plus4_T, 1) @[src/main/scala/micore/Core.scala 60:31] + node _id_rs_data_hazard_T = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 87:21] + node id_rs_addr_b = bits(id_reg_inst, 25, 21) @[src/main/scala/micore/Core.scala 82:33] + node _id_rs_data_hazard_T_1 = neq(id_rs_addr_b, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 87:49] + node _id_rs_data_hazard_T_2 = and(_id_rs_data_hazard_T, _id_rs_data_hazard_T_1) @[src/main/scala/micore/Core.scala 87:32] + node _id_rs_data_hazard_T_3 = eq(id_rs_addr_b, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 87:75] + node id_rs_data_hazard = and(_id_rs_data_hazard_T_2, _id_rs_data_hazard_T_3) @[src/main/scala/micore/Core.scala 87:58] + node _id_rt_data_hazard_T = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 89:21] + node id_rt_addr_b = bits(id_reg_inst, 20, 16) @[src/main/scala/micore/Core.scala 83:33] + node _id_rt_data_hazard_T_1 = neq(id_rt_addr_b, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 89:49] + node _id_rt_data_hazard_T_2 = and(_id_rt_data_hazard_T, _id_rt_data_hazard_T_1) @[src/main/scala/micore/Core.scala 89:32] + node _id_rt_data_hazard_T_3 = eq(id_rt_addr_b, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 89:75] + node id_rt_data_hazard = and(_id_rt_data_hazard_T_2, _id_rt_data_hazard_T_3) @[src/main/scala/micore/Core.scala 89:58] + node _stall_flg_T = or(id_rs_data_hazard, id_rt_data_hazard) @[src/main/scala/micore/Core.scala 90:35] + node stall_flg = _stall_flg_T @[src/main/scala/micore/Core.scala 54:23 90:13] + node _if_pc_next_T = mux(stall_flg, if_reg_pc, if_pc_plus4) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_jmp_flg_T = eq(exe_reg_wb_sel, UInt<3>("h3")) @[src/main/scala/micore/Core.scala 231:34] + node exe_jmp_flg = _exe_jmp_flg_T @[src/main/scala/micore/Core.scala 231:15 57:25] + node _exe_alu_out_T = eq(exe_reg_exe_fun, UInt<5>("h1")) @[src/main/scala/micore/Core.scala 198:24] + node _exe_alu_out_T_1 = add(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 198:58] + node _exe_alu_out_T_2 = tail(_exe_alu_out_T_1, 1) @[src/main/scala/micore/Core.scala 198:58] + node _exe_alu_out_T_3 = eq(exe_reg_exe_fun, UInt<5>("h2")) @[src/main/scala/micore/Core.scala 199:24] + node _exe_alu_out_T_4 = sub(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 199:58] + node _exe_alu_out_T_5 = tail(_exe_alu_out_T_4, 1) @[src/main/scala/micore/Core.scala 199:58] + node _exe_alu_out_T_6 = eq(exe_reg_exe_fun, UInt<5>("h3")) @[src/main/scala/micore/Core.scala 200:24] + node _exe_alu_out_T_7 = and(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 200:58] + node _exe_alu_out_T_8 = eq(exe_reg_exe_fun, UInt<5>("h4")) @[src/main/scala/micore/Core.scala 201:24] + node _exe_alu_out_T_9 = or(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 201:57] + node _exe_alu_out_T_10 = eq(exe_reg_exe_fun, UInt<5>("h5")) @[src/main/scala/micore/Core.scala 202:24] + node _exe_alu_out_T_11 = xor(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 202:58] + node _exe_alu_out_T_12 = eq(exe_reg_exe_fun, UInt<5>("h6")) @[src/main/scala/micore/Core.scala 203:24] + node _exe_alu_out_T_13 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 203:77] + node _exe_alu_out_T_14 = dshl(exe_reg_op1_data, _exe_alu_out_T_13) @[src/main/scala/micore/Core.scala 203:58] + node _exe_alu_out_T_15 = bits(_exe_alu_out_T_14, 31, 0) @[src/main/scala/micore/Core.scala 206:9] + node _exe_alu_out_T_16 = eq(exe_reg_exe_fun, UInt<5>("h7")) @[src/main/scala/micore/Core.scala 207:24] + node _exe_alu_out_T_17 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 207:77] + node _exe_alu_out_T_18 = dshr(exe_reg_op1_data, _exe_alu_out_T_17) @[src/main/scala/micore/Core.scala 207:58] + node _exe_alu_out_T_19 = eq(exe_reg_exe_fun, UInt<5>("h8")) @[src/main/scala/micore/Core.scala 211:24] + node _exe_alu_out_T_20 = asSInt(exe_reg_op1_data) @[src/main/scala/micore/Core.scala 211:58] + node _exe_alu_out_T_21 = bits(exe_reg_op2_data, 4, 0) @[src/main/scala/micore/Core.scala 211:84] + node _exe_alu_out_T_22 = dshr(_exe_alu_out_T_20, _exe_alu_out_T_21) @[src/main/scala/micore/Core.scala 211:65] + node _exe_alu_out_T_23 = asUInt(_exe_alu_out_T_22) @[src/main/scala/micore/Core.scala 214:10] + node _exe_alu_out_T_24 = eq(exe_reg_exe_fun, UInt<5>("h9")) @[src/main/scala/micore/Core.scala 215:24] + node _exe_alu_out_T_25 = asSInt(exe_reg_op1_data) @[src/main/scala/micore/Core.scala 215:58] + node _exe_alu_out_T_26 = asSInt(exe_reg_op2_data) @[src/main/scala/micore/Core.scala 215:84] + node _exe_alu_out_T_27 = lt(_exe_alu_out_T_25, _exe_alu_out_T_26) @[src/main/scala/micore/Core.scala 215:65] + node _exe_alu_out_T_28 = eq(exe_reg_exe_fun, UInt<5>("hd")) @[src/main/scala/micore/Core.scala 216:24] + node _exe_alu_out_T_29 = mux(_exe_alu_out_T_28, exe_reg_op1_data, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_30 = mux(_exe_alu_out_T_24, _exe_alu_out_T_27, _exe_alu_out_T_29) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_31 = mux(_exe_alu_out_T_19, _exe_alu_out_T_23, _exe_alu_out_T_30) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_32 = mux(_exe_alu_out_T_16, _exe_alu_out_T_18, _exe_alu_out_T_31) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_33 = mux(_exe_alu_out_T_12, _exe_alu_out_T_15, _exe_alu_out_T_32) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_34 = mux(_exe_alu_out_T_10, _exe_alu_out_T_11, _exe_alu_out_T_33) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_35 = mux(_exe_alu_out_T_8, _exe_alu_out_T_9, _exe_alu_out_T_34) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_36 = mux(_exe_alu_out_T_6, _exe_alu_out_T_7, _exe_alu_out_T_35) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_37 = mux(_exe_alu_out_T_3, _exe_alu_out_T_5, _exe_alu_out_T_36) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_alu_out_T_38 = mux(_exe_alu_out_T, _exe_alu_out_T_2, _exe_alu_out_T_37) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node exe_alu_out = _exe_alu_out_T_38 @[src/main/scala/micore/Core.scala 195:15 58:25] + node _if_pc_next_T_1 = mux(exe_jmp_flg, exe_alu_out, _if_pc_next_T) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_br_flg_T = eq(exe_reg_exe_fun, UInt<5>("hb")) @[src/main/scala/micore/Core.scala 223:24] + node _exe_br_flg_T_1 = eq(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 223:57] + node _exe_br_flg_T_2 = eq(exe_reg_exe_fun, UInt<5>("hc")) @[src/main/scala/micore/Core.scala 224:24] + node _exe_br_flg_T_3 = neq(exe_reg_op1_data, exe_reg_op2_data) @[src/main/scala/micore/Core.scala 224:57] + node _exe_br_flg_T_4 = mux(_exe_br_flg_T_2, _exe_br_flg_T_3, UInt<1>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_br_flg_T_5 = mux(_exe_br_flg_T, _exe_br_flg_T_1, _exe_br_flg_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node exe_br_flg = _exe_br_flg_T_5 @[src/main/scala/micore/Core.scala 220:14 55:24] + node _exe_br_target_T = dshl(exe_reg_imm_i_sext, UInt<5>("h2")) @[src/main/scala/micore/Core.scala 228:53] + node _exe_br_target_T_1 = add(exe_reg_pc, _exe_br_target_T) @[src/main/scala/micore/Core.scala 228:31] + node _exe_br_target_T_2 = tail(_exe_br_target_T_1, 1) @[src/main/scala/micore/Core.scala 228:31] + node exe_br_target = bits(_exe_br_target_T_2, 31, 0) @[src/main/scala/micore/Core.scala 228:17 56:27] + node if_pc_next = mux(exe_br_flg, exe_br_target, _if_pc_next_T_1) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_reg_pc_T = mux(stall_flg, id_reg_pc, if_reg_pc) @[src/main/scala/micore/Core.scala 72:19] + node _id_reg_inst_T = or(exe_br_flg, exe_jmp_flg) @[src/main/scala/micore/Core.scala 76:19] + node _id_reg_inst_T_1 = mux(stall_flg, id_reg_inst, io_imem_inst) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_reg_inst_T_2 = mux(_id_reg_inst_T, UInt<32>("h20000000"), _id_reg_inst_T_1) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_inst_T = or(exe_br_flg, exe_jmp_flg) @[src/main/scala/micore/Core.scala 93:21] + node _id_inst_T_1 = or(_id_inst_T, stall_flg) @[src/main/scala/micore/Core.scala 93:36] + node id_inst = mux(_id_inst_T_1, UInt<32>("h20000000"), id_reg_inst) @[src/main/scala/micore/Core.scala 93:8] + node id_rs_addr = bits(id_inst, 25, 21) @[src/main/scala/micore/Core.scala 95:27] + node id_rt_addr = bits(id_inst, 20, 16) @[src/main/scala/micore/Core.scala 96:27] + node id_rd_addr = bits(id_inst, 15, 11) @[src/main/scala/micore/Core.scala 97:27] + node _id_rs_data_T = eq(id_rs_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 103:19] + node _id_rs_data_T_1 = eq(id_rs_addr, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 104:20] + node _id_rs_data_T_2 = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 104:60] + node _id_rs_data_T_3 = and(_id_rs_data_T_1, _id_rs_data_T_2) @[src/main/scala/micore/Core.scala 104:41] + node _id_rs_data_T_4 = eq(id_rs_addr, mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 105:20] + node _id_rs_data_T_5 = eq(mem_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 105:60] + node _id_rs_data_T_6 = and(_id_rs_data_T_4, _id_rs_data_T_5) @[src/main/scala/micore/Core.scala 105:41] + node _id_rs_data_T_7 = eq(id_rs_addr, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 107:21] + node _id_rs_data_T_8 = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 107:59] + node _id_rs_data_T_9 = and(_id_rs_data_T_7, _id_rs_data_T_8) @[src/main/scala/micore/Core.scala 107:41] + node _id_rs_data_T_10 = mux(_id_rs_data_T_9, wb_reg_wb_data, regfile.id_rs_data_MPORT.data) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _mem_wb_data_T = eq(mem_reg_wb_sel, UInt<3>("h2")) @[src/main/scala/micore/Core.scala 250:23] + node _mem_wb_data_T_1 = eq(mem_reg_wb_sel, UInt<3>("h3")) @[src/main/scala/micore/Core.scala 251:23] + node _mem_wb_data_T_2 = add(mem_reg_pc, UInt<32>("h4")) @[src/main/scala/micore/Core.scala 251:49] + node _mem_wb_data_T_3 = tail(_mem_wb_data_T_2, 1) @[src/main/scala/micore/Core.scala 251:49] + node _mem_wb_data_T_4 = mux(_mem_wb_data_T_1, _mem_wb_data_T_3, mem_reg_alu_out) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _mem_wb_data_T_5 = mux(_mem_wb_data_T, io_dmem_rdata, _mem_wb_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node mem_wb_data = _mem_wb_data_T_5 @[src/main/scala/micore/Core.scala 247:15 99:25] + node _id_rs_data_T_11 = mux(_id_rs_data_T_6, mem_wb_data, _id_rs_data_T_10) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rs_data_T_12 = mux(_id_rs_data_T_3, exe_alu_out, _id_rs_data_T_11) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_rs_data = mux(_id_rs_data_T, UInt<32>("h0"), _id_rs_data_T_12) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rt_data_T = eq(id_rt_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 114:19] + node _id_rt_data_T_1 = eq(id_rt_addr, exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 115:20] + node _id_rt_data_T_2 = eq(exe_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 115:60] + node _id_rt_data_T_3 = and(_id_rt_data_T_1, _id_rt_data_T_2) @[src/main/scala/micore/Core.scala 115:41] + node _id_rt_data_T_4 = eq(id_rt_addr, mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 116:20] + node _id_rt_data_T_5 = eq(mem_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 116:60] + node _id_rt_data_T_6 = and(_id_rt_data_T_4, _id_rt_data_T_5) @[src/main/scala/micore/Core.scala 116:41] + node _id_rt_data_T_7 = eq(id_rt_addr, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 118:21] + node _id_rt_data_T_8 = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 118:59] + node _id_rt_data_T_9 = and(_id_rt_data_T_7, _id_rt_data_T_8) @[src/main/scala/micore/Core.scala 118:41] + node _id_rt_data_T_10 = mux(_id_rt_data_T_9, wb_reg_wb_data, regfile.id_rt_data_MPORT.data) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rt_data_T_11 = mux(_id_rt_data_T_6, mem_wb_data, _id_rt_data_T_10) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_rt_data_T_12 = mux(_id_rt_data_T_3, exe_alu_out, _id_rt_data_T_11) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_rt_data = mux(_id_rt_data_T, UInt<32>("h0"), _id_rt_data_T_12) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_imm_i = bits(id_inst, 15, 0) @[src/main/scala/micore/Core.scala 123:25] + node _id_imm_i_sext_T = bits(id_imm_i, 15, 15) @[src/main/scala/micore/Core.scala 124:44] + node _id_imm_i_sext_T_1 = mux(_id_imm_i_sext_T, UInt<16>("hffff"), UInt<16>("h0")) @[src/main/scala/micore/Core.scala 124:31] + node id_imm_i_sext = cat(_id_imm_i_sext_T_1, id_imm_i) @[src/main/scala/micore/Core.scala 124:26] + node _id_imm_j_T = bits(id_inst, 25, 0) @[src/main/scala/micore/Core.scala 125:29] + node _id_imm_j_T_1 = mux(UInt<1>("h0"), UInt<2>("h3"), UInt<2>("h0")) @[src/main/scala/micore/Core.scala 125:42] + node id_imm_j = cat(_id_imm_j_T, _id_imm_j_T_1) @[src/main/scala/micore/Core.scala 125:21] + node _csignals_T = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_1 = eq(UInt<32>("h8c000000"), _csignals_T) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_2 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_3 = eq(UInt<32>("hac000000"), _csignals_T_2) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_4 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_5 = eq(UInt<6>("h20"), _csignals_T_4) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_6 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_7 = eq(UInt<30>("h20000000"), _csignals_T_6) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_8 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_9 = eq(UInt<6>("h22"), _csignals_T_8) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_10 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_11 = eq(UInt<6>("h24"), _csignals_T_10) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_12 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_13 = eq(UInt<6>("h25"), _csignals_T_12) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_14 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_15 = eq(UInt<6>("h26"), _csignals_T_14) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_16 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_17 = eq(UInt<30>("h30000000"), _csignals_T_16) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_18 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_19 = eq(UInt<30>("h34000000"), _csignals_T_18) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_20 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_21 = eq(UInt<6>("h2a"), _csignals_T_20) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_22 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_23 = eq(UInt<29>("h10000000"), _csignals_T_22) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_24 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_25 = eq(UInt<29>("h14000000"), _csignals_T_24) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_26 = and(id_inst, UInt<32>("hffe0003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_27 = eq(UInt<1>("h0"), _csignals_T_26) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_28 = and(id_inst, UInt<32>("hffe0003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_29 = eq(UInt<2>("h2"), _csignals_T_28) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_30 = and(id_inst, UInt<32>("hffe0003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_31 = eq(UInt<2>("h3"), _csignals_T_30) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_32 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_33 = eq(UInt<28>("hc000000"), _csignals_T_32) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_34 = and(id_inst, UInt<32>("hfc00003f")) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_35 = eq(UInt<4>("h8"), _csignals_T_34) @[src/main/scala/chisel3/util/Lookup.scala 31:38] + node _csignals_T_36 = mux(_csignals_T_35, UInt<5>("hd"), UInt<5>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_37 = mux(_csignals_T_33, UInt<5>("h1"), _csignals_T_36) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_38 = mux(_csignals_T_31, UInt<5>("h8"), _csignals_T_37) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_39 = mux(_csignals_T_29, UInt<5>("h7"), _csignals_T_38) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_40 = mux(_csignals_T_27, UInt<5>("h6"), _csignals_T_39) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_41 = mux(_csignals_T_25, UInt<5>("hc"), _csignals_T_40) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_42 = mux(_csignals_T_23, UInt<5>("hb"), _csignals_T_41) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_43 = mux(_csignals_T_21, UInt<5>("h9"), _csignals_T_42) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_44 = mux(_csignals_T_19, UInt<5>("h4"), _csignals_T_43) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_45 = mux(_csignals_T_17, UInt<5>("h3"), _csignals_T_44) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_46 = mux(_csignals_T_15, UInt<5>("h5"), _csignals_T_45) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_47 = mux(_csignals_T_13, UInt<5>("h4"), _csignals_T_46) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_48 = mux(_csignals_T_11, UInt<5>("h3"), _csignals_T_47) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_49 = mux(_csignals_T_9, UInt<5>("h2"), _csignals_T_48) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_50 = mux(_csignals_T_7, UInt<5>("h1"), _csignals_T_49) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_51 = mux(_csignals_T_5, UInt<5>("h1"), _csignals_T_50) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_52 = mux(_csignals_T_3, UInt<5>("h1"), _csignals_T_51) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_0 = mux(_csignals_T_1, UInt<5>("h1"), _csignals_T_52) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_53 = mux(_csignals_T_35, UInt<2>("h1"), UInt<2>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_54 = mux(_csignals_T_33, UInt<2>("h2"), _csignals_T_53) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_55 = mux(_csignals_T_31, UInt<2>("h1"), _csignals_T_54) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_56 = mux(_csignals_T_29, UInt<2>("h1"), _csignals_T_55) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_57 = mux(_csignals_T_27, UInt<2>("h1"), _csignals_T_56) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_58 = mux(_csignals_T_25, UInt<2>("h1"), _csignals_T_57) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_59 = mux(_csignals_T_23, UInt<2>("h1"), _csignals_T_58) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_60 = mux(_csignals_T_21, UInt<2>("h1"), _csignals_T_59) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_61 = mux(_csignals_T_19, UInt<2>("h1"), _csignals_T_60) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_62 = mux(_csignals_T_17, UInt<2>("h1"), _csignals_T_61) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_63 = mux(_csignals_T_15, UInt<2>("h1"), _csignals_T_62) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_64 = mux(_csignals_T_13, UInt<2>("h1"), _csignals_T_63) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_65 = mux(_csignals_T_11, UInt<2>("h1"), _csignals_T_64) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_66 = mux(_csignals_T_9, UInt<2>("h1"), _csignals_T_65) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_67 = mux(_csignals_T_7, UInt<2>("h1"), _csignals_T_66) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_68 = mux(_csignals_T_5, UInt<2>("h1"), _csignals_T_67) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_69 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_68) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_1 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_69) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_70 = mux(_csignals_T_35, UInt<3>("h0"), UInt<3>("h1")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_71 = mux(_csignals_T_33, UInt<3>("h4"), _csignals_T_70) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_72 = mux(_csignals_T_31, UInt<3>("h1"), _csignals_T_71) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_73 = mux(_csignals_T_29, UInt<3>("h1"), _csignals_T_72) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_74 = mux(_csignals_T_27, UInt<3>("h1"), _csignals_T_73) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_75 = mux(_csignals_T_25, UInt<3>("h1"), _csignals_T_74) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_76 = mux(_csignals_T_23, UInt<3>("h1"), _csignals_T_75) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_77 = mux(_csignals_T_21, UInt<3>("h1"), _csignals_T_76) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_78 = mux(_csignals_T_19, UInt<3>("h2"), _csignals_T_77) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_79 = mux(_csignals_T_17, UInt<3>("h2"), _csignals_T_78) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_80 = mux(_csignals_T_15, UInt<3>("h1"), _csignals_T_79) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_81 = mux(_csignals_T_13, UInt<3>("h1"), _csignals_T_80) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_82 = mux(_csignals_T_11, UInt<3>("h1"), _csignals_T_81) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_83 = mux(_csignals_T_9, UInt<3>("h1"), _csignals_T_82) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_84 = mux(_csignals_T_7, UInt<3>("h2"), _csignals_T_83) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_85 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_84) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_86 = mux(_csignals_T_3, UInt<3>("h2"), _csignals_T_85) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_2 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_86) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_87 = mux(_csignals_T_35, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_88 = mux(_csignals_T_33, UInt<2>("h0"), _csignals_T_87) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_89 = mux(_csignals_T_31, UInt<2>("h0"), _csignals_T_88) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_90 = mux(_csignals_T_29, UInt<2>("h0"), _csignals_T_89) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_91 = mux(_csignals_T_27, UInt<2>("h0"), _csignals_T_90) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_92 = mux(_csignals_T_25, UInt<2>("h0"), _csignals_T_91) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_93 = mux(_csignals_T_23, UInt<2>("h0"), _csignals_T_92) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_94 = mux(_csignals_T_21, UInt<2>("h0"), _csignals_T_93) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_95 = mux(_csignals_T_19, UInt<2>("h0"), _csignals_T_94) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_96 = mux(_csignals_T_17, UInt<2>("h0"), _csignals_T_95) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_97 = mux(_csignals_T_15, UInt<2>("h0"), _csignals_T_96) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_98 = mux(_csignals_T_13, UInt<2>("h0"), _csignals_T_97) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_99 = mux(_csignals_T_11, UInt<2>("h0"), _csignals_T_98) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_100 = mux(_csignals_T_9, UInt<2>("h0"), _csignals_T_99) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_101 = mux(_csignals_T_7, UInt<2>("h0"), _csignals_T_100) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_102 = mux(_csignals_T_5, UInt<2>("h0"), _csignals_T_101) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_103 = mux(_csignals_T_3, UInt<2>("h1"), _csignals_T_102) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_3 = mux(_csignals_T_1, UInt<2>("h0"), _csignals_T_103) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_104 = mux(_csignals_T_35, UInt<2>("h0"), UInt<2>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_105 = mux(_csignals_T_33, UInt<2>("h1"), _csignals_T_104) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_106 = mux(_csignals_T_31, UInt<2>("h1"), _csignals_T_105) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_107 = mux(_csignals_T_29, UInt<2>("h1"), _csignals_T_106) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_108 = mux(_csignals_T_27, UInt<2>("h1"), _csignals_T_107) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_109 = mux(_csignals_T_25, UInt<2>("h0"), _csignals_T_108) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_110 = mux(_csignals_T_23, UInt<2>("h0"), _csignals_T_109) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_111 = mux(_csignals_T_21, UInt<2>("h1"), _csignals_T_110) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_112 = mux(_csignals_T_19, UInt<2>("h1"), _csignals_T_111) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_113 = mux(_csignals_T_17, UInt<2>("h1"), _csignals_T_112) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_114 = mux(_csignals_T_15, UInt<2>("h1"), _csignals_T_113) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_115 = mux(_csignals_T_13, UInt<2>("h1"), _csignals_T_114) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_116 = mux(_csignals_T_11, UInt<2>("h1"), _csignals_T_115) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_117 = mux(_csignals_T_9, UInt<2>("h1"), _csignals_T_116) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_118 = mux(_csignals_T_7, UInt<2>("h1"), _csignals_T_117) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_119 = mux(_csignals_T_5, UInt<2>("h1"), _csignals_T_118) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_120 = mux(_csignals_T_3, UInt<2>("h0"), _csignals_T_119) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_4 = mux(_csignals_T_1, UInt<2>("h1"), _csignals_T_120) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_121 = mux(_csignals_T_35, UInt<3>("h0"), UInt<3>("h0")) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_122 = mux(_csignals_T_33, UInt<3>("h3"), _csignals_T_121) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_123 = mux(_csignals_T_31, UInt<3>("h1"), _csignals_T_122) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_124 = mux(_csignals_T_29, UInt<3>("h1"), _csignals_T_123) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_125 = mux(_csignals_T_27, UInt<3>("h1"), _csignals_T_124) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_126 = mux(_csignals_T_25, UInt<3>("h0"), _csignals_T_125) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_127 = mux(_csignals_T_23, UInt<3>("h0"), _csignals_T_126) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_128 = mux(_csignals_T_21, UInt<3>("h1"), _csignals_T_127) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_129 = mux(_csignals_T_19, UInt<3>("h1"), _csignals_T_128) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_130 = mux(_csignals_T_17, UInt<3>("h1"), _csignals_T_129) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_131 = mux(_csignals_T_15, UInt<3>("h1"), _csignals_T_130) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_132 = mux(_csignals_T_13, UInt<3>("h1"), _csignals_T_131) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_133 = mux(_csignals_T_11, UInt<3>("h1"), _csignals_T_132) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_134 = mux(_csignals_T_9, UInt<3>("h1"), _csignals_T_133) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_135 = mux(_csignals_T_7, UInt<3>("h1"), _csignals_T_134) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_136 = mux(_csignals_T_5, UInt<3>("h1"), _csignals_T_135) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _csignals_T_137 = mux(_csignals_T_3, UInt<3>("h0"), _csignals_T_136) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node csignals_5 = mux(_csignals_T_1, UInt<3>("h2"), _csignals_T_137) @[src/main/scala/chisel3/util/Lookup.scala 34:39] + node _id_op1_data_T = eq(csignals_1, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 158:19] + node _id_op1_data_T_1 = eq(csignals_1, UInt<2>("h2")) @[src/main/scala/micore/Core.scala 159:19] + node _id_op1_data_T_2 = mux(_id_op1_data_T_1, id_reg_pc, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_op1_data = mux(_id_op1_data_T, id_rs_data, _id_op1_data_T_2) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_op2_data_T = eq(csignals_2, UInt<3>("h1")) @[src/main/scala/micore/Core.scala 166:19] + node _id_op2_data_T_1 = eq(csignals_2, UInt<3>("h2")) @[src/main/scala/micore/Core.scala 167:19] + node _id_op2_data_T_2 = eq(csignals_2, UInt<3>("h4")) @[src/main/scala/micore/Core.scala 168:19] + node _id_op2_data_T_3 = mux(_id_op2_data_T_2, id_imm_j, UInt<32>("h0")) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _id_op2_data_T_4 = mux(_id_op2_data_T_1, id_imm_i_sext, _id_op2_data_T_3) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node id_op2_data = mux(_id_op2_data_T, id_rt_data, _id_op2_data_T_4) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_reg_wb_addr_T = eq(csignals_5, UInt<3>("h1")) @[src/main/scala/micore/Core.scala 180:18] + node _exe_reg_wb_addr_T_1 = bits(id_inst, 31, 26) @[src/main/scala/micore/Core.scala 180:39] + node _exe_reg_wb_addr_T_2 = eq(_exe_reg_wb_addr_T_1, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 183:9] + node _exe_reg_wb_addr_T_3 = and(_exe_reg_wb_addr_T, _exe_reg_wb_addr_T_2) @[src/main/scala/micore/Core.scala 180:29] + node _exe_reg_wb_addr_T_4 = and(id_inst, UInt<32>("hfc000000")) @[src/main/scala/micore/Core.scala 184:16] + node _exe_reg_wb_addr_T_5 = eq(UInt<28>("hc000000"), _exe_reg_wb_addr_T_4) @[src/main/scala/micore/Core.scala 184:16] + node _exe_reg_wb_addr_T_6 = mux(_exe_reg_wb_addr_T_5, UInt<5>("h1f"), id_rt_addr) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _exe_reg_wb_addr_T_7 = mux(_exe_reg_wb_addr_T_3, id_rd_addr, _exe_reg_wb_addr_T_6) @[src/main/scala/chisel3/util/Mux.scala 126:16] + node _T = eq(wb_reg_rf_wen, UInt<2>("h1")) @[src/main/scala/micore/Core.scala 261:22] + node _T_1 = neq(wb_reg_wb_addr, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 261:50] + node _T_2 = and(_T, _T_1) @[src/main/scala/micore/Core.scala 261:32] + node _GEN_0 = validif(_T_2, wb_reg_wb_addr) @[src/main/scala/micore/Core.scala 261:59 262:12] + node _GEN_1 = validif(_T_2, clock) @[src/main/scala/micore/Core.scala 261:59 262:12] + node _GEN_2 = mux(_T_2, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/micore/Core.scala 261:59 262:12 15:20] + node _GEN_3 = validif(_T_2, UInt<1>("h1")) @[src/main/scala/micore/Core.scala 261:59 262:29] + node _GEN_4 = validif(_T_2, wb_reg_wb_data) @[src/main/scala/micore/Core.scala 261:59 262:29] + node _io_exit_T = eq(id_reg_inst, UInt<32>("h114514")) @[src/main/scala/micore/Core.scala 265:27] + node _T_3 = asUInt(reset) @[src/main/scala/micore/Core.scala 268:9] + node _T_4 = eq(_T_3, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 268:9] + node _T_5 = asUInt(reset) @[src/main/scala/micore/Core.scala 269:9] + node _T_6 = eq(_T_5, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 269:9] + node _T_7 = asUInt(reset) @[src/main/scala/micore/Core.scala 270:9] + node _T_8 = eq(_T_7, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 270:9] + node _T_9 = asUInt(reset) @[src/main/scala/micore/Core.scala 271:9] + node _T_10 = eq(_T_9, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 271:9] + node _T_11 = asUInt(reset) @[src/main/scala/micore/Core.scala 272:9] + node _T_12 = eq(_T_11, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 272:9] + node _T_13 = asUInt(reset) @[src/main/scala/micore/Core.scala 273:9] + node _T_14 = eq(_T_13, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 273:9] + node _T_15 = asUInt(reset) @[src/main/scala/micore/Core.scala 274:9] + node _T_16 = eq(_T_15, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 274:9] + node _T_17 = asUInt(reset) @[src/main/scala/micore/Core.scala 275:9] + node _T_18 = eq(_T_17, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 275:9] + node _T_19 = asUInt(reset) @[src/main/scala/micore/Core.scala 276:9] + node _T_20 = eq(_T_19, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 276:9] + node _T_21 = asUInt(reset) @[src/main/scala/micore/Core.scala 277:9] + node _T_22 = eq(_T_21, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 277:9] + node _T_23 = asUInt(reset) @[src/main/scala/micore/Core.scala 278:9] + node _T_24 = eq(_T_23, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 278:9] + node _T_25 = asUInt(reset) @[src/main/scala/micore/Core.scala 279:9] + node _T_26 = eq(_T_25, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 279:9] + node _T_27 = asUInt(reset) @[src/main/scala/micore/Core.scala 280:9] + node _T_28 = eq(_T_27, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 280:9] + node _T_29 = asUInt(reset) @[src/main/scala/micore/Core.scala 281:9] + node _T_30 = eq(_T_29, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 281:9] + node _T_31 = asUInt(reset) @[src/main/scala/micore/Core.scala 282:9] + node _T_32 = eq(_T_31, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 282:9] + node _T_33 = asUInt(reset) @[src/main/scala/micore/Core.scala 283:9] + node _T_34 = eq(_T_33, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 283:9] + node _T_35 = asUInt(reset) @[src/main/scala/micore/Core.scala 284:9] + node _T_36 = eq(_T_35, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 284:9] + node _T_37 = asUInt(reset) @[src/main/scala/micore/Core.scala 285:9] + node _T_38 = eq(_T_37, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 285:9] + node _T_39 = asUInt(reset) @[src/main/scala/micore/Core.scala 286:9] + node _T_40 = eq(_T_39, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 286:9] + node _T_41 = asUInt(reset) @[src/main/scala/micore/Core.scala 287:9] + node _T_42 = eq(_T_41, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 287:9] + node _T_43 = asUInt(reset) @[src/main/scala/micore/Core.scala 288:9] + node _T_44 = eq(_T_43, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 288:9] + node _T_45 = asUInt(reset) @[src/main/scala/micore/Core.scala 289:9] + node _T_46 = eq(_T_45, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 289:9] + node _T_47 = asUInt(reset) @[src/main/scala/micore/Core.scala 290:9] + node _T_48 = eq(_T_47, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 290:9] + node _T_49 = asUInt(reset) @[src/main/scala/micore/Core.scala 291:9] + node _T_50 = eq(_T_49, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 291:9] + node _T_51 = asUInt(reset) @[src/main/scala/micore/Core.scala 292:9] + node _T_52 = eq(_T_51, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 292:9] + node _T_53 = asUInt(reset) @[src/main/scala/micore/Core.scala 293:9] + node _T_54 = eq(_T_53, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 293:9] + node _T_55 = asUInt(reset) @[src/main/scala/micore/Core.scala 294:9] + node _T_56 = eq(_T_55, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 294:9] + node _T_57 = asUInt(reset) @[src/main/scala/micore/Core.scala 295:9] + node _T_58 = eq(_T_57, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 295:9] + node _T_59 = asUInt(reset) @[src/main/scala/micore/Core.scala 296:9] + node _T_60 = eq(_T_59, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 296:9] + node _T_61 = asUInt(reset) @[src/main/scala/micore/Core.scala 297:9] + node _T_62 = eq(_T_61, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 297:9] + node _T_63 = asUInt(reset) @[src/main/scala/micore/Core.scala 298:9] + node _T_64 = eq(_T_63, UInt<1>("h0")) @[src/main/scala/micore/Core.scala 298:9] + io_imem_addr <= if_reg_pc @[src/main/scala/micore/Core.scala 51:16] + io_dmem_addr <= mem_reg_alu_out @[src/main/scala/micore/Core.scala 243:16] + io_dmem_wen <= bits(mem_reg_mem_wen, 0, 0) @[src/main/scala/micore/Core.scala 244:15] + io_dmem_wdata <= mem_reg_rt_data @[src/main/scala/micore/Core.scala 245:17] + io_exit <= _io_exit_T @[src/main/scala/micore/Core.scala 265:11] + regfile.id_rs_data_MPORT.addr <= id_rs_addr @[src/main/scala/micore/Core.scala 101:12] + regfile.id_rs_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 101:12] + regfile.id_rs_data_MPORT.clk <= clock @[src/main/scala/micore/Core.scala 101:12] + regfile.id_rt_data_MPORT.addr <= id_rt_addr @[src/main/scala/micore/Core.scala 112:12] + regfile.id_rt_data_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 112:12] + regfile.id_rt_data_MPORT.clk <= clock @[src/main/scala/micore/Core.scala 112:12] + regfile.MPORT_1.addr <= UInt<5>("h10") @[src/main/scala/micore/Core.scala 295:34] + regfile.MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 295:34] + regfile.MPORT_1.clk <= clock @[src/main/scala/micore/Core.scala 295:34] + regfile.MPORT_2.addr <= UInt<5>("h12") @[src/main/scala/micore/Core.scala 296:34] + regfile.MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 296:34] + regfile.MPORT_2.clk <= clock @[src/main/scala/micore/Core.scala 296:34] + regfile.MPORT_3.addr <= UInt<5>("h8") @[src/main/scala/micore/Core.scala 297:34] + regfile.MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Core.scala 297:34] + regfile.MPORT_3.clk <= clock @[src/main/scala/micore/Core.scala 297:34] + regfile.MPORT.addr <= _GEN_0 + regfile.MPORT.en <= _GEN_2 + regfile.MPORT.clk <= _GEN_1 + regfile.MPORT.data <= _GEN_4 + regfile.MPORT.mask <= _GEN_3 + id_reg_pc <= mux(reset, UInt<32>("h0"), _id_reg_pc_T) @[src/main/scala/micore/Core.scala 19:{26,26} 72:13] + id_reg_inst <= mux(reset, UInt<32>("h0"), _id_reg_inst_T_2) @[src/main/scala/micore/Core.scala 20:{28,28} 73:15] + exe_reg_pc <= mux(reset, UInt<32>("h0"), id_reg_pc) @[src/main/scala/micore/Core.scala 173:14 23:{27,27}] + exe_reg_wb_addr <= mux(reset, UInt<5>("h0"), _exe_reg_wb_addr_T_7) @[src/main/scala/micore/Core.scala 177:19 24:{32,32}] + exe_reg_op1_data <= mux(reset, UInt<32>("h0"), id_op1_data) @[src/main/scala/micore/Core.scala 174:20 25:{33,33}] + exe_reg_op2_data <= mux(reset, UInt<32>("h0"), id_op2_data) @[src/main/scala/micore/Core.scala 175:20 26:{33,33}] + exe_reg_rt_data <= mux(reset, UInt<32>("h0"), id_rt_data) @[src/main/scala/micore/Core.scala 176:19 27:{32,32}] + exe_reg_exe_fun <= mux(reset, UInt<5>("h0"), csignals_0) @[src/main/scala/micore/Core.scala 192:19 28:{32,32}] + exe_reg_mem_wen <= mux(reset, UInt<2>("h0"), csignals_3) @[src/main/scala/micore/Core.scala 188:19 29:{32,32}] + exe_reg_rf_wen <= mux(reset, UInt<2>("h0"), csignals_4) @[src/main/scala/micore/Core.scala 189:18 30:{31,31}] + exe_reg_wb_sel <= mux(reset, UInt<3>("h0"), csignals_5) @[src/main/scala/micore/Core.scala 187:18 31:{31,31}] + exe_reg_imm_i_sext <= mux(reset, UInt<32>("h0"), id_imm_i_sext) @[src/main/scala/micore/Core.scala 190:22 32:{35,35}] + exe_reg_imm_j <= mux(reset, UInt<32>("h0"), id_imm_j) @[src/main/scala/micore/Core.scala 191:17 33:{30,30}] + mem_reg_pc <= mux(reset, UInt<32>("h0"), exe_reg_pc) @[src/main/scala/micore/Core.scala 234:14 36:{27,27}] + mem_reg_wb_addr <= mux(reset, UInt<5>("h0"), exe_reg_wb_addr) @[src/main/scala/micore/Core.scala 236:19 37:{32,32}] + mem_reg_rt_data <= mux(reset, UInt<32>("h0"), exe_reg_rt_data) @[src/main/scala/micore/Core.scala 235:19 38:{32,32}] + mem_reg_mem_wen <= mux(reset, UInt<2>("h0"), exe_reg_mem_wen) @[src/main/scala/micore/Core.scala 240:19 39:{32,32}] + mem_reg_rf_wen <= mux(reset, UInt<2>("h0"), exe_reg_rf_wen) @[src/main/scala/micore/Core.scala 238:18 40:{31,31}] + mem_reg_wb_sel <= mux(reset, UInt<3>("h0"), exe_reg_wb_sel) @[src/main/scala/micore/Core.scala 239:18 41:{31,31}] + mem_reg_alu_out <= mux(reset, UInt<32>("h0"), exe_alu_out) @[src/main/scala/micore/Core.scala 237:19 42:{32,32}] + wb_reg_wb_addr <= mux(reset, UInt<5>("h0"), mem_reg_wb_addr) @[src/main/scala/micore/Core.scala 258:18 45:{31,31}] + wb_reg_rf_wen <= mux(reset, UInt<2>("h0"), mem_reg_rf_wen) @[src/main/scala/micore/Core.scala 257:17 46:{30,30}] + wb_reg_wb_data <= mux(reset, UInt<32>("h0"), mem_wb_data) @[src/main/scala/micore/Core.scala 256:18 47:{31,31}] + if_reg_pc <= mux(reset, UInt<32>("h0"), if_pc_next) @[src/main/scala/micore/Core.scala 50:{26,26} 69:13] + printf(clock, and(and(UInt<1>("h1"), _T_4), UInt<1>("h1")), "---------------\n") : printf @[src/main/scala/micore/Core.scala 268:9] + printf(clock, and(and(UInt<1>("h1"), _T_6), UInt<1>("h1")), "if_inst: 0x%x\n", io_imem_inst) : printf_1 @[src/main/scala/micore/Core.scala 269:9] + printf(clock, and(and(UInt<1>("h1"), _T_8), UInt<1>("h1")), "if_reg_pc: 0x%x\n", if_reg_pc) : printf_2 @[src/main/scala/micore/Core.scala 270:9] + printf(clock, and(and(UInt<1>("h1"), _T_10), UInt<1>("h1")), "id_reg_pc: 0x%x\n", id_reg_pc) : printf_3 @[src/main/scala/micore/Core.scala 271:9] + printf(clock, and(and(UInt<1>("h1"), _T_12), UInt<1>("h1")), "id_reg_inst: 0x%x\n", id_reg_inst) : printf_4 @[src/main/scala/micore/Core.scala 272:9] + printf(clock, and(and(UInt<1>("h1"), _T_14), UInt<1>("h1")), "id_inst: 0x%x\n", id_inst) : printf_5 @[src/main/scala/micore/Core.scala 273:9] + printf(clock, and(and(UInt<1>("h1"), _T_16), UInt<1>("h1")), "id_rs_data: 0x%x\n", id_rs_data) : printf_6 @[src/main/scala/micore/Core.scala 274:9] + printf(clock, and(and(UInt<1>("h1"), _T_18), UInt<1>("h1")), "id_rt_data: 0x%x\n", id_rt_data) : printf_7 @[src/main/scala/micore/Core.scala 275:9] + printf(clock, and(and(UInt<1>("h1"), _T_20), UInt<1>("h1")), "id_rs_addr: 0x%x\n", id_rs_addr) : printf_8 @[src/main/scala/micore/Core.scala 276:9] + printf(clock, and(and(UInt<1>("h1"), _T_22), UInt<1>("h1")), "id_rt_addr: 0x%x\n", id_rt_addr) : printf_9 @[src/main/scala/micore/Core.scala 277:9] + printf(clock, and(and(UInt<1>("h1"), _T_24), UInt<1>("h1")), "id_rd_addr: 0x%x\n", id_rd_addr) : printf_10 @[src/main/scala/micore/Core.scala 278:9] + printf(clock, and(and(UInt<1>("h1"), _T_26), UInt<1>("h1")), "id_imm_i_sext: 0x%x\n", id_imm_i_sext) : printf_11 @[src/main/scala/micore/Core.scala 279:9] + printf(clock, and(and(UInt<1>("h1"), _T_28), UInt<1>("h1")), "exe_br_flg: 0x%x\n", exe_br_flg) : printf_12 @[src/main/scala/micore/Core.scala 280:9] + printf(clock, and(and(UInt<1>("h1"), _T_30), UInt<1>("h1")), "exe_jmp_flg: 0x%x\n", exe_jmp_flg) : printf_13 @[src/main/scala/micore/Core.scala 281:9] + printf(clock, and(and(UInt<1>("h1"), _T_32), UInt<1>("h1")), "id_rs_data_hazard: 0x%x\n", id_rs_data_hazard) : printf_14 @[src/main/scala/micore/Core.scala 282:9] + printf(clock, and(and(UInt<1>("h1"), _T_34), UInt<1>("h1")), "id_rt_data_hazard: 0x%x\n", id_rt_data_hazard) : printf_15 @[src/main/scala/micore/Core.scala 283:9] + printf(clock, and(and(UInt<1>("h1"), _T_36), UInt<1>("h1")), "stall_flg: 0x%x\n", stall_flg) : printf_16 @[src/main/scala/micore/Core.scala 284:9] + printf(clock, and(and(UInt<1>("h1"), _T_38), UInt<1>("h1")), "exe_reg_pc: 0x%x\n", exe_reg_pc) : printf_17 @[src/main/scala/micore/Core.scala 285:9] + printf(clock, and(and(UInt<1>("h1"), _T_40), UInt<1>("h1")), "exe_reg_op1_data: 0x%x\n", exe_reg_op1_data) : printf_18 @[src/main/scala/micore/Core.scala 286:9] + printf(clock, and(and(UInt<1>("h1"), _T_42), UInt<1>("h1")), "exe_reg_op2_data: 0x%x\n", exe_reg_op2_data) : printf_19 @[src/main/scala/micore/Core.scala 287:9] + printf(clock, and(and(UInt<1>("h1"), _T_44), UInt<1>("h1")), "exe_alu_out: 0x%x\n", exe_alu_out) : printf_20 @[src/main/scala/micore/Core.scala 288:9] + printf(clock, and(and(UInt<1>("h1"), _T_46), UInt<1>("h1")), "exe_br_target: 0x%x\n", exe_br_target) : printf_21 @[src/main/scala/micore/Core.scala 289:9] + printf(clock, and(and(UInt<1>("h1"), _T_48), UInt<1>("h1")), "exe_reg_wb_addr: 0x%x\n", exe_reg_wb_addr) : printf_22 @[src/main/scala/micore/Core.scala 290:9] + printf(clock, and(and(UInt<1>("h1"), _T_50), UInt<1>("h1")), "mem_reg_pc: 0x%x\n", mem_reg_pc) : printf_23 @[src/main/scala/micore/Core.scala 291:9] + printf(clock, and(and(UInt<1>("h1"), _T_52), UInt<1>("h1")), "mem_wb_data: 0x%x\n", mem_wb_data) : printf_24 @[src/main/scala/micore/Core.scala 292:9] + printf(clock, and(and(UInt<1>("h1"), _T_54), UInt<1>("h1")), "wb_reg_wb_addr: 0x%x\n", wb_reg_wb_addr) : printf_25 @[src/main/scala/micore/Core.scala 293:9] + printf(clock, and(and(UInt<1>("h1"), _T_56), UInt<1>("h1")), "wb_reg_wb_data: 0x%x\n", wb_reg_wb_data) : printf_26 @[src/main/scala/micore/Core.scala 294:9] + printf(clock, and(and(UInt<1>("h1"), _T_58), UInt<1>("h1")), "regfile s0: %d\n", regfile.MPORT_1.data) : printf_27 @[src/main/scala/micore/Core.scala 295:9] + printf(clock, and(and(UInt<1>("h1"), _T_60), UInt<1>("h1")), "regfile s2: %d\n", regfile.MPORT_2.data) : printf_28 @[src/main/scala/micore/Core.scala 296:9] + printf(clock, and(and(UInt<1>("h1"), _T_62), UInt<1>("h1")), "regfile t0: %d\n", regfile.MPORT_3.data) : printf_29 @[src/main/scala/micore/Core.scala 297:9] + printf(clock, and(and(UInt<1>("h1"), _T_64), UInt<1>("h1")), "---------------\n") : printf_30 @[src/main/scala/micore/Core.scala 298:9] + + module Memory : @[src/main/scala/micore/Memory.scala 20:7] + input clock : Clock @[src/main/scala/micore/Memory.scala 20:7] + input reset : UInt<1> @[src/main/scala/micore/Memory.scala 20:7] + input io_imem_addr : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + output io_imem_inst : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + input io_dmem_addr : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + output io_dmem_rdata : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + input io_dmem_wen : UInt<1> @[src/main/scala/micore/Memory.scala 21:14] + input io_dmem_wdata : UInt<32> @[src/main/scala/micore/Memory.scala 21:14] + + mem mem : @[src/main/scala/micore/Memory.scala 26:16] + data-type => UInt<8> + depth => 4096 + read-latency => 0 + write-latency => 1 + reader => io_imem_inst_MPORT + reader => io_imem_inst_MPORT_1 + reader => io_imem_inst_MPORT_2 + reader => io_imem_inst_MPORT_3 + reader => io_dmem_rdata_MPORT + reader => io_dmem_rdata_MPORT_1 + reader => io_dmem_rdata_MPORT_2 + reader => io_dmem_rdata_MPORT_3 + writer => MPORT + writer => MPORT_1 + writer => MPORT_2 + writer => MPORT_3 + read-under-write => undefined + node _io_imem_inst_T = add(io_imem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 31:22] + node _io_imem_inst_T_1 = tail(_io_imem_inst_T, 1) @[src/main/scala/micore/Memory.scala 31:22] + node _io_imem_inst_T_2 = bits(_io_imem_inst_T_1, 11, 0) @[src/main/scala/micore/Memory.scala 31:8] + node _io_imem_inst_T_3 = add(io_imem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 32:22] + node _io_imem_inst_T_4 = tail(_io_imem_inst_T_3, 1) @[src/main/scala/micore/Memory.scala 32:22] + node _io_imem_inst_T_5 = bits(_io_imem_inst_T_4, 11, 0) @[src/main/scala/micore/Memory.scala 32:8] + node _io_imem_inst_T_6 = add(io_imem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 33:22] + node _io_imem_inst_T_7 = tail(_io_imem_inst_T_6, 1) @[src/main/scala/micore/Memory.scala 33:22] + node _io_imem_inst_T_8 = bits(_io_imem_inst_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 33:8] + node _io_imem_inst_T_9 = bits(io_imem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 34:8] + node io_imem_inst_lo = cat(mem.io_imem_inst_MPORT_2.data, mem.io_imem_inst_MPORT_3.data) @[src/main/scala/micore/Memory.scala 30:22] + node io_imem_inst_hi = cat(mem.io_imem_inst_MPORT.data, mem.io_imem_inst_MPORT_1.data) @[src/main/scala/micore/Memory.scala 30:22] + node _io_imem_inst_T_10 = cat(io_imem_inst_hi, io_imem_inst_lo) @[src/main/scala/micore/Memory.scala 30:22] + node _io_dmem_rdata_T = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 38:22] + node _io_dmem_rdata_T_1 = tail(_io_dmem_rdata_T, 1) @[src/main/scala/micore/Memory.scala 38:22] + node _io_dmem_rdata_T_2 = bits(_io_dmem_rdata_T_1, 11, 0) @[src/main/scala/micore/Memory.scala 38:8] + node _io_dmem_rdata_T_3 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 39:22] + node _io_dmem_rdata_T_4 = tail(_io_dmem_rdata_T_3, 1) @[src/main/scala/micore/Memory.scala 39:22] + node _io_dmem_rdata_T_5 = bits(_io_dmem_rdata_T_4, 11, 0) @[src/main/scala/micore/Memory.scala 39:8] + node _io_dmem_rdata_T_6 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 40:22] + node _io_dmem_rdata_T_7 = tail(_io_dmem_rdata_T_6, 1) @[src/main/scala/micore/Memory.scala 40:22] + node _io_dmem_rdata_T_8 = bits(_io_dmem_rdata_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 40:8] + node _io_dmem_rdata_T_9 = bits(io_dmem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 41:8] + node io_dmem_rdata_lo = cat(mem.io_dmem_rdata_MPORT_2.data, mem.io_dmem_rdata_MPORT_3.data) @[src/main/scala/micore/Memory.scala 37:23] + node io_dmem_rdata_hi = cat(mem.io_dmem_rdata_MPORT.data, mem.io_dmem_rdata_MPORT_1.data) @[src/main/scala/micore/Memory.scala 37:23] + node _io_dmem_rdata_T_10 = cat(io_dmem_rdata_hi, io_dmem_rdata_lo) @[src/main/scala/micore/Memory.scala 37:23] + node _T = bits(io_dmem_addr, 11, 0) @[src/main/scala/micore/Memory.scala 45:8] + node _T_1 = bits(io_dmem_wdata, 7, 0) @[src/main/scala/micore/Memory.scala 45:39] + node _T_2 = add(io_dmem_addr, UInt<32>("h1")) @[src/main/scala/micore/Memory.scala 46:22] + node _T_3 = tail(_T_2, 1) @[src/main/scala/micore/Memory.scala 46:22] + node _T_4 = bits(_T_3, 11, 0) @[src/main/scala/micore/Memory.scala 46:8] + node _T_5 = bits(io_dmem_wdata, 15, 8) @[src/main/scala/micore/Memory.scala 46:57] + node _T_6 = add(io_dmem_addr, UInt<32>("h2")) @[src/main/scala/micore/Memory.scala 47:22] + node _T_7 = tail(_T_6, 1) @[src/main/scala/micore/Memory.scala 47:22] + node _T_8 = bits(_T_7, 11, 0) @[src/main/scala/micore/Memory.scala 47:8] + node _T_9 = bits(io_dmem_wdata, 23, 16) @[src/main/scala/micore/Memory.scala 47:57] + node _T_10 = add(io_dmem_addr, UInt<32>("h3")) @[src/main/scala/micore/Memory.scala 48:22] + node _T_11 = tail(_T_10, 1) @[src/main/scala/micore/Memory.scala 48:22] + node _T_12 = bits(_T_11, 11, 0) @[src/main/scala/micore/Memory.scala 48:8] + node _T_13 = bits(io_dmem_wdata, 31, 24) @[src/main/scala/micore/Memory.scala 48:57] + node _GEN_0 = validif(io_dmem_wen, _T) @[src/main/scala/micore/Memory.scala 44:21 45:8] + node _GEN_1 = validif(io_dmem_wen, clock) @[src/main/scala/micore/Memory.scala 44:21 45:8] + node _GEN_2 = mux(io_dmem_wen, UInt<1>("h1"), UInt<1>("h0")) @[src/main/scala/micore/Memory.scala 26:16 44:21 45:8] + node _GEN_3 = validif(io_dmem_wen, UInt<1>("h1")) @[src/main/scala/micore/Memory.scala 44:21 45:23] + node _GEN_4 = validif(io_dmem_wen, _T_1) @[src/main/scala/micore/Memory.scala 44:21 45:23] + node _GEN_5 = validif(io_dmem_wen, _T_4) @[src/main/scala/micore/Memory.scala 44:21 46:8] + node _GEN_6 = validif(io_dmem_wen, _T_5) @[src/main/scala/micore/Memory.scala 44:21 46:41] + node _GEN_7 = validif(io_dmem_wen, _T_8) @[src/main/scala/micore/Memory.scala 44:21 47:8] + node _GEN_8 = validif(io_dmem_wen, _T_9) @[src/main/scala/micore/Memory.scala 44:21 47:41] + node _GEN_9 = validif(io_dmem_wen, _T_12) @[src/main/scala/micore/Memory.scala 44:21 48:8] + node _GEN_10 = validif(io_dmem_wen, _T_13) @[src/main/scala/micore/Memory.scala 44:21 48:41] + io_imem_inst <= _io_imem_inst_T_10 @[src/main/scala/micore/Memory.scala 30:16] + io_dmem_rdata <= _io_dmem_rdata_T_10 @[src/main/scala/micore/Memory.scala 37:17] + mem.io_imem_inst_MPORT.addr <= _io_imem_inst_T_2 @[src/main/scala/micore/Memory.scala 31:8] + mem.io_imem_inst_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 31:8] + mem.io_imem_inst_MPORT.clk <= clock @[src/main/scala/micore/Memory.scala 31:8] + mem.io_imem_inst_MPORT_1.addr <= _io_imem_inst_T_5 @[src/main/scala/micore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_1.clk <= clock @[src/main/scala/micore/Memory.scala 32:8] + mem.io_imem_inst_MPORT_2.addr <= _io_imem_inst_T_8 @[src/main/scala/micore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_2.clk <= clock @[src/main/scala/micore/Memory.scala 33:8] + mem.io_imem_inst_MPORT_3.addr <= _io_imem_inst_T_9 @[src/main/scala/micore/Memory.scala 34:8] + mem.io_imem_inst_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 34:8] + mem.io_imem_inst_MPORT_3.clk <= clock @[src/main/scala/micore/Memory.scala 34:8] + mem.io_dmem_rdata_MPORT.addr <= _io_dmem_rdata_T_2 @[src/main/scala/micore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT.clk <= clock @[src/main/scala/micore/Memory.scala 38:8] + mem.io_dmem_rdata_MPORT_1.addr <= _io_dmem_rdata_T_5 @[src/main/scala/micore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_1.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_1.clk <= clock @[src/main/scala/micore/Memory.scala 39:8] + mem.io_dmem_rdata_MPORT_2.addr <= _io_dmem_rdata_T_8 @[src/main/scala/micore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_2.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_2.clk <= clock @[src/main/scala/micore/Memory.scala 40:8] + mem.io_dmem_rdata_MPORT_3.addr <= _io_dmem_rdata_T_9 @[src/main/scala/micore/Memory.scala 41:8] + mem.io_dmem_rdata_MPORT_3.en <= UInt<1>("h1") @[src/main/scala/micore/Memory.scala 41:8] + mem.io_dmem_rdata_MPORT_3.clk <= clock @[src/main/scala/micore/Memory.scala 41:8] + mem.MPORT.addr <= _GEN_0 + mem.MPORT.en <= _GEN_2 + mem.MPORT.clk <= _GEN_1 + mem.MPORT.data <= _GEN_4 + mem.MPORT.mask <= _GEN_3 + mem.MPORT_1.addr <= _GEN_5 + mem.MPORT_1.en <= _GEN_2 + mem.MPORT_1.clk <= _GEN_1 + mem.MPORT_1.data <= _GEN_6 + mem.MPORT_1.mask <= _GEN_3 + mem.MPORT_2.addr <= _GEN_7 + mem.MPORT_2.en <= _GEN_2 + mem.MPORT_2.clk <= _GEN_1 + mem.MPORT_2.data <= _GEN_8 + mem.MPORT_2.mask <= _GEN_3 + mem.MPORT_3.addr <= _GEN_9 + mem.MPORT_3.en <= _GEN_2 + mem.MPORT_3.clk <= _GEN_1 + mem.MPORT_3.data <= _GEN_10 + mem.MPORT_3.mask <= _GEN_3 + + module TopOrigin : @[src/main/scala/micore/Top.scala 8:7] + input clock : Clock @[src/main/scala/micore/Top.scala 8:7] + input reset : UInt<1> @[src/main/scala/micore/Top.scala 8:7] + output io_exit : UInt<1> @[src/main/scala/micore/Top.scala 9:14] + + inst core of Core @[src/main/scala/micore/Top.scala 12:20] + inst memory of Memory @[src/main/scala/micore/Top.scala 13:22] + io_exit <= core.io_exit @[src/main/scala/micore/Top.scala 16:11] + core.clock <= clock + core.reset <= reset + core.io_imem_inst <= memory.io_imem_inst @[src/main/scala/micore/Top.scala 14:16] + core.io_dmem_rdata <= memory.io_dmem_rdata @[src/main/scala/micore/Top.scala 15:16] + memory.clock <= clock + memory.reset <= reset + memory.io_imem_addr <= core.io_imem_addr @[src/main/scala/micore/Top.scala 14:16] + memory.io_dmem_addr <= core.io_dmem_addr @[src/main/scala/micore/Top.scala 15:16] + memory.io_dmem_wen <= core.io_dmem_wen @[src/main/scala/micore/Top.scala 15:16] + memory.io_dmem_wdata <= core.io_dmem_wdata @[src/main/scala/micore/Top.scala 15:16] diff --git a/testbench.sv b/testbench.sv index 138f3af..d50f81d 100755 --- a/testbench.sv +++ b/testbench.sv @@ -1,85 +1,116 @@ `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// -// Company: -// Engineer: -// +// Company: +// Engineer: +// // Create Date: 2024/12/28 11:36:13 -// Design Name: +// Design Name: // Module Name: testbench -// Project Name: -// Target Devices: -// Tool Versions: -// Description: -// -// Dependencies: -// +// Project Name: +// Target Devices: +// Tool Versions: +// Description: +// +// Dependencies: +// // Revision: // Revision 0.01 - File Created // Additional Comments: -// +// ////////////////////////////////////////////////////////////////////////////////// +module tb_Top(); -module Top_tb; - - // 输入信号 reg clock; reg reset; - // 输出信号 wire io_exit; wire [3:0] io_anodes; wire [6:0] io_segments; - // 内部信号(用于监视) - wire [31:0] pc; // 程序计数器 - wire [31:0] instruction; // 当前指令 - - // 实例化 Top 模块 Top uut ( - .clock (clock), - .reset (reset), - .io_exit (io_exit), - .io_anodes (io_anodes), - .io_segments(io_segments) - ); + .clock(clock), + .reset(reset), + .io_exit(io_exit), + .io_anodes(io_anodes), + .io_segments(io_segments) + ); - // 连接到 Core 模块的内部信号 - assign pc = uut.core.if_reg_pc; // 假设 if_reg_pc 是 Core 模块中的 pc 寄存器 - assign instruction = uut.core.id_reg_inst; // 假设 id_reg_inst 是 Core 模块中的当前指令 - - // 时钟生成 initial begin clock = 0; - forever #5 clock = ~clock; // 10ns 周期时钟 + forever + #5 clock = ~clock; // 10ns周期,50MHz时钟 end - // 测试逻辑 initial begin - // 初始化信号 reset = 1; - #20; // 等待 20ns - - // 释放复位信号 + #20; reset = 0; - #200; // 等待 200ns - // 观察 io_exit 信号 - if (io_exit) begin - $display("Test Passed: io_exit is high."); - end else begin - $display("Test Failed: io_exit is low."); - end + #1000; - // 结束仿真 + $display("Simulation finished."); $finish; end - // 监视信号变化 + always @(posedge clock) begin + if (!reset) begin + // 打印当前PC值和指令 + if (uut.core.io_imem_inst !== 32'hx) begin + $display("Time: %0t | PC: %h | Instruction: %h", $time, uut.core.if_reg_pc, uut.core.io_imem_inst); + end + + // 打印ALU输入操作数和计算结果 + if (uut.core.exe_alu_out !== 32'hx) begin + $display("Time: %0t | ALU Op1: %h | ALU Op2: %h | ALU Result: %h | ALU Fun: %h", + $time, uut.core.exe_reg_op1_data, uut.core.exe_reg_op2_data, + uut.core.exe_alu_out, uut.core.exe_reg_exe_fun); + end + + // 打印寄存器文件读写操作 + if (uut.core.regfile_ext.W0_en && uut.core.regfile_ext.W0_addr !== 5'hx) begin + $display("Time: %0t | RegFile Write | Addr: %h | Data: %h", + $time, uut.core.regfile_ext.W0_addr, uut.core.regfile_ext.W0_data); + end + if (uut.core.regfile_ext.R0_en && uut.core.regfile_ext.R0_addr !== 5'hx) begin + $display("Time: %0t | RegFile Read R0 | Addr: %h | Data: %h", + $time, uut.core.regfile_ext.R0_addr, uut.core.regfile_ext.R0_data); + end + if (uut.core.regfile_ext.R1_en && uut.core.regfile_ext.R1_addr !== 5'hx) begin + $display("Time: %0t | RegFile Read R1 | Addr: %h | Data: %h", + $time, uut.core.regfile_ext.R1_addr, uut.core.regfile_ext.R1_data); + end + + // 打印内存读写操作 + if (uut.memory.io_dmem_wen) begin + $display("Time: %0t | Memory Write | Addr: %h | Data: %h", + $time, uut.memory.io_dmem_addr, uut.memory.io_dmem_wdata); + end + if (uut.memory.io_dmem_rdata !== 32'hx) begin + $display("Time: %0t | Memory Read | Addr: %h | Data: %h", + $time, uut.memory.io_dmem_addr, uut.memory.io_dmem_rdata); + end + + // 打印流水线各阶段的状态 + $display("Time: %0t | IF Stage | PC: %h | Instruction: %h", + $time, uut.core.if_reg_pc, uut.core.io_imem_inst); + $display("Time: %0t | ID Stage | PC: %h | Instruction: %h | Op1: %h | Op2: %h", + $time, uut.core.id_reg_pc, uut.core.id_reg_inst, + uut.core.exe_reg_op1_data, uut.core.exe_reg_op2_data); + $display("Time: %0t | EXE Stage | PC: %h | ALU Result: %h", + $time, uut.core.exe_reg_pc, uut.core.exe_alu_out); + $display("Time: %0t | MEM Stage | PC: %h | Mem Addr: %h | Mem Data: %h", + $time, uut.core.mem_reg_pc, uut.memory.io_dmem_addr, uut.memory.io_dmem_rdata); + $display("Time: %0t | WB Stage | PC: %h | WB Addr: %h | WB Data: %h", + $time, uut.core.wb_reg_wb_addr, uut.core.wb_reg_wb_addr, uut.core.wb_reg_wb_data); + end + end + initial begin - $monitor("Time: %0t | Reset: %b | PC: %h | Instruction: %h | io_exit: %b", - $time, reset, pc, instruction, io_exit); + $dumpfile("waveform.vcd"); + $dumpvars(0, tb_Top); // 记录所有信号 end endmodule +