From a6c13bc38c885903012fe51ac48d150da378c035 Mon Sep 17 00:00:00 2001 From: felsabbagh3 Date: Wed, 8 May 2019 15:55:06 -0700 Subject: [PATCH] Inefficient context aware desgin --- rtl/VX_context.v | 3 + rtl/VX_d_e_reg.v | 101 +++-- rtl/VX_decode.v | 14 +- rtl/VX_define.v | 2 + rtl/VX_e_m_reg.v | 11 +- rtl/VX_execute.v | 5 +- rtl/VX_f_d_reg.v | 8 +- rtl/VX_fetch.v | 21 +- rtl/VX_forwarding.v | 65 +-- rtl/VX_m_w_reg.v | 10 +- rtl/VX_memory.v | 5 +- rtl/VX_register_file.v | 3 +- rtl/VX_register_file_slave.v | 3 +- rtl/VX_writeback.v | 5 +- rtl/Vortex.v | 86 ++-- rtl/obj_dir/VVortex | Bin 411004 -> 411004 bytes rtl/obj_dir/VVortex.cpp | 700 ++++++++++++++++-------------- rtl/obj_dir/VVortex.h | 15 +- rtl/obj_dir/VVortex__ALL.a | Bin 70672 -> 72744 bytes rtl/obj_dir/VVortex__ALLcls.o | Bin 67536 -> 69608 bytes rtl/obj_dir/VVortex__verFiles.dat | 46 +- 21 files changed, 639 insertions(+), 464 deletions(-) diff --git a/rtl/VX_context.v b/rtl/VX_context.v index cdbc80f2..c18e255e 100644 --- a/rtl/VX_context.v +++ b/rtl/VX_context.v @@ -3,6 +3,7 @@ module VX_context ( input wire clk, + input wire in_warp, input wire in_valid[`NT_M1:0], input wire in_write_register, input wire[4:0] in_rd, @@ -30,6 +31,7 @@ module VX_context ( VX_register_file vx_register_file_master( .clk (clk), + .in_warp (in_warp), .in_valid (in_valid[0]), .in_write_register (in_write_register), .in_rd (in_rd), @@ -49,6 +51,7 @@ module VX_context ( assign to_clone = (index == rd1_register[0]) && (state_stall == 1); VX_register_file_slave vx_register_file_slave( .clk (clk), + .in_warp (in_warp), .in_valid (in_valid[index]), .in_write_register (in_write_register), .in_rd (in_rd), diff --git a/rtl/VX_d_e_reg.v b/rtl/VX_d_e_reg.v index 987ef892..a7f8b601 100644 --- a/rtl/VX_d_e_reg.v +++ b/rtl/VX_d_e_reg.v @@ -3,54 +3,56 @@ `include "VX_define.v" module VX_d_e_reg ( - input wire clk, - input wire[4:0] in_rd, - input wire[4:0] in_rs1, - input wire[4:0] in_rs2, - input wire[31:0] in_a_reg_data[`NT_M1:0], - input wire[31:0] in_b_reg_data[`NT_M1:0], - input wire[4:0] in_alu_op, - input wire[1:0] in_wb, - input wire in_rs2_src, // NEW - input wire[31:0] in_itype_immed, // new - input wire[2:0] in_mem_read, // NEW - input wire[2:0] in_mem_write, - input wire[31:0] in_PC_next, - input wire[2:0] in_branch_type, - input wire in_fwd_stall, - input wire in_branch_stall, - input wire[19:0] in_upper_immed, - input wire[11:0] in_csr_address, // done - input wire in_is_csr, // done - input wire[31:0] in_csr_mask, // done - input wire[31:0] in_curr_PC, - input wire in_jal, - input wire[31:0] in_jal_offset, - input wire in_freeze, - input wire in_clone_stall, - input wire in_valid[`NT_M1:0], + input wire clk, + input wire[4:0] in_rd, + input wire[4:0] in_rs1, + input wire[4:0] in_rs2, + input wire[31:0] in_a_reg_data[`NT_M1:0], + input wire[31:0] in_b_reg_data[`NT_M1:0], + input wire[4:0] in_alu_op, + input wire[1:0] in_wb, + input wire in_rs2_src, // NEW + input wire[31:0] in_itype_immed, // new + input wire[2:0] in_mem_read, // NEW + input wire[2:0] in_mem_write, + input wire[31:0] in_PC_next, + input wire[2:0] in_branch_type, + input wire in_fwd_stall, + input wire in_branch_stall, + input wire[19:0] in_upper_immed, + input wire[11:0] in_csr_address, // done + input wire in_is_csr, // done + input wire[31:0] in_csr_mask, // done + input wire[31:0] in_curr_PC, + input wire in_jal, + input wire[31:0] in_jal_offset, + input wire in_freeze, + input wire in_clone_stall, + input wire in_valid[`NT_M1:0], + input wire[`NW_M1:0] in_warp_num, - output wire[11:0] out_csr_address, // done - output wire out_is_csr, // done - output wire[31:0] out_csr_mask, // done - output wire[4:0] out_rd, - output wire[4:0] out_rs1, - output wire[4:0] out_rs2, - output wire[31:0] out_a_reg_data[`NT_M1:0], - output wire[31:0] out_b_reg_data[`NT_M1:0], - output wire[4:0] out_alu_op, - output wire[1:0] out_wb, - output wire out_rs2_src, // NEW - output wire[31:0] out_itype_immed, // new - output wire[2:0] out_mem_read, - output wire[2:0] out_mem_write, - output wire[2:0] out_branch_type, - output wire[19:0] out_upper_immed, - output wire[31:0] out_curr_PC, - output wire out_jal, - output wire[31:0] out_jal_offset, - output wire[31:0] out_PC_next, - output wire out_valid[`NT_M1:0] + output wire[11:0] out_csr_address, // done + output wire out_is_csr, // done + output wire[31:0] out_csr_mask, // done + output wire[4:0] out_rd, + output wire[4:0] out_rs1, + output wire[4:0] out_rs2, + output wire[31:0] out_a_reg_data[`NT_M1:0], + output wire[31:0] out_b_reg_data[`NT_M1:0], + output wire[4:0] out_alu_op, + output wire[1:0] out_wb, + output wire out_rs2_src, // NEW + output wire[31:0] out_itype_immed, // new + output wire[2:0] out_mem_read, + output wire[2:0] out_mem_write, + output wire[2:0] out_branch_type, + output wire[19:0] out_upper_immed, + output wire[31:0] out_curr_PC, + output wire out_jal, + output wire[31:0] out_jal_offset, + output wire[31:0] out_PC_next, + output wire out_valid[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); @@ -79,6 +81,8 @@ module VX_d_e_reg ( reg[31:0] reg_data_z[`NT_M1:0]; reg valid_z[`NT_M1:0]; + reg[`NW_M1:0] warp_num; + integer ini_reg; initial begin rd = 0; @@ -107,6 +111,7 @@ module VX_d_e_reg ( curr_PC = 0; jal = `NO_JUMP; jal_offset = 0; + warp_num = 0; end wire stalling; @@ -134,6 +139,7 @@ module VX_d_e_reg ( assign out_jal_offset = jal_offset; assign out_curr_PC = curr_PC; assign out_valid = valid; + assign out_warp_num = warp_num; always @(posedge clk) begin @@ -159,6 +165,7 @@ module VX_d_e_reg ( jal_offset <= stalling ? 32'h0 : in_jal_offset; curr_PC <= stalling ? 32'h0 : in_curr_PC; valid <= stalling ? valid_z : in_valid; + warp_num <= stalling ? 0 : in_warp_num; end end diff --git a/rtl/VX_decode.v b/rtl/VX_decode.v index 5ae64dc8..3fb8901f 100644 --- a/rtl/VX_decode.v +++ b/rtl/VX_decode.v @@ -12,6 +12,7 @@ module VX_decode( input wire[4:0] in_rd, input wire[1:0] in_wb, input wire in_wb_valid[`NT_M1:0], + input wire[`NW_M1:0] in_wb_warp_num, // FORWARDING INPUTS input wire in_src1_fwd, @@ -19,10 +20,15 @@ module VX_decode( input wire in_src2_fwd, input wire[31:0] in_src2_fwd_data[`NT_M1:0], + input wire[`NW_M1:0] in_warp_num, + + output wire[11:0] out_csr_address, output wire out_is_csr, output wire[31:0] out_csr_mask, + + // Outputs output wire[4:0] out_rd, output wire[4:0] out_rs1, @@ -44,7 +50,8 @@ module VX_decode( output reg out_clone_stall, output wire out_change_mask, output wire out_thread_mask[`NT_M1:0], - output wire out_valid[`NT_M1:0] + output wire out_valid[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); wire[6:0] curr_opcode; @@ -103,8 +110,11 @@ module VX_decode( reg[4:0] alu_op; reg[4:0] mul_alu; + wire context_zero_valid = (in_wb_warp_num == 0); + VX_context VX_Context( .clk (clk), + .in_warp (context_zero_valid), .in_valid (in_wb_valid), .in_rd (in_rd), .in_src1 (out_rs1), @@ -123,7 +133,7 @@ module VX_decode( .out_clone_stall (out_clone_stall) ); - + assign out_warp_num = in_warp_num; assign out_valid = in_valid; assign write_register = (in_wb != 2'h0) ? (1'b1) : (1'b0); diff --git a/rtl/VX_define.v b/rtl/VX_define.v index 377cf319..153c84ae 100644 --- a/rtl/VX_define.v +++ b/rtl/VX_define.v @@ -2,6 +2,8 @@ `define NT 2 `define NT_M1 1 +`define NW_M1 1 + `define R_INST 7'd51 `define L_INST 7'd3 diff --git a/rtl/VX_e_m_reg.v b/rtl/VX_e_m_reg.v index 0718771d..effb8379 100644 --- a/rtl/VX_e_m_reg.v +++ b/rtl/VX_e_m_reg.v @@ -25,6 +25,7 @@ module VX_e_m_reg ( input wire[31:0] in_jal_dest, input wire in_freeze, input wire in_valid[`NT_M1:0], + input wire[`NW_M1:0] in_warp_num, output wire[11:0] out_csr_address, output wire out_is_csr, @@ -44,7 +45,8 @@ module VX_e_m_reg ( output wire out_jal, output wire[31:0] out_jal_dest, output wire[31:0] out_PC_next, - output wire out_valid[`NT_M1:0] + output wire out_valid[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); @@ -67,7 +69,7 @@ module VX_e_m_reg ( reg jal; reg[31:0] jal_dest; reg valid[`NT_M1:0]; - + reg[`NW_M1:0] warp_num; // reg[31:0] reg_data_z[`NT_T2_M1:0]; // reg[`NT_M1:0] valid_z; // reg[31:0] alu_result_z[`NT_M1:0]; @@ -90,7 +92,7 @@ module VX_e_m_reg ( branch_type = 0; jal = `NO_JUMP; jal_dest = 0; - + warp_num = 0; for (ini_reg = 0; ini_reg < `NT; ini_reg = ini_reg + 1) begin a_reg_data[ini_reg] = 0; @@ -121,7 +123,7 @@ module VX_e_m_reg ( assign out_jal = jal; assign out_jal_dest = jal_dest; assign out_valid = valid; - + assign out_warp_num = warp_num; always @(posedge clk) begin if(in_freeze == 1'b0) begin @@ -144,6 +146,7 @@ module VX_e_m_reg ( jal <= in_jal; jal_dest <= in_jal_dest; valid <= in_valid; + warp_num <= in_warp_num; end end diff --git a/rtl/VX_execute.v b/rtl/VX_execute.v index 5b2163f4..a156b629 100644 --- a/rtl/VX_execute.v +++ b/rtl/VX_execute.v @@ -24,6 +24,7 @@ module VX_execute ( input wire[31:0] in_jal_offset, input wire[31:0] in_curr_PC, input wire in_valid[`NT_M1:0], + input [`NW_M1:0] in_warp_num, output wire[11:0] out_csr_address, output wire out_is_csr, @@ -42,7 +43,8 @@ module VX_execute ( output wire[31:0] out_branch_offset, output wire out_branch_stall, output wire[31:0] out_PC_next, - output wire out_valid[`NT_M1:0] + output wire out_valid[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); @@ -101,6 +103,7 @@ module VX_execute ( assign out_csr_address = in_csr_address; assign out_branch_offset = in_itype_immed; assign out_valid = in_valid; + assign out_warp_num = in_warp_num; endmodule // VX_execute diff --git a/rtl/VX_f_d_reg.v b/rtl/VX_f_d_reg.v index 41315262..e2651ffa 100644 --- a/rtl/VX_f_d_reg.v +++ b/rtl/VX_f_d_reg.v @@ -10,10 +10,12 @@ module VX_f_d_reg ( input wire in_fwd_stall, input wire in_freeze, input wire in_clone_stall, + input wire[`NW_M1:0] in_warp_num, output wire[31:0] out_instruction, output wire[31:0] out_curr_PC, - output wire out_valid[`NT_M1:0] + output wire out_valid[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); // always @(posedge clk) begin @@ -23,6 +25,7 @@ module VX_f_d_reg ( reg[31:0] instruction; reg[31:0] curr_PC; reg valid[`NT_M1:0]; + reg[`NW_M1:0] warp_num; integer reset_cur_thread = 0; @@ -34,6 +37,7 @@ module VX_f_d_reg ( if(reset) begin instruction <= 32'h0; curr_PC <= 32'h0; + warp_num <= 0; for (reset_cur_thread = 0; reset_cur_thread < `NT; reset_cur_thread = reset_cur_thread + 1) valid[reset_cur_thread] <= 1'b0; @@ -45,6 +49,7 @@ module VX_f_d_reg ( instruction <= in_instruction; valid <= in_valid; curr_PC <= in_curr_PC; + warp_num <= in_warp_num; end end @@ -55,6 +60,7 @@ module VX_f_d_reg ( assign out_instruction = instruction; assign out_curr_PC = curr_PC; assign out_valid = valid; + assign out_warp_num = warp_num; diff --git a/rtl/VX_fetch.v b/rtl/VX_fetch.v index 53d2cbe9..b314d3ef 100644 --- a/rtl/VX_fetch.v +++ b/rtl/VX_fetch.v @@ -21,7 +21,7 @@ module VX_fetch ( output wire[31:0] out_instruction, output wire out_delay, - // output wire[1:0] out_warp_num, + output wire[`NW_M1:0] out_warp_num, output wire[31:0] out_curr_PC, output wire out_valid[`NT_M1:0] ); @@ -29,13 +29,22 @@ module VX_fetch ( reg stall; reg[31:0] out_PC; - // reg[1:0] warp_num; + reg[`NW_M1:0] warp_num; + reg[`NW_M1:0] warp_state; - // initial begin - // warp_num = 0; - // end + initial begin + warp_num = 0; + warp_state = 0; + end + always @(posedge clk or posedge reset) begin + if (reset || (warp_num == warp_state)) begin + warp_num <= 0; + end else begin + warp_num <= warp_num + 1; + end + end assign stall = in_clone_stall || in_branch_stall || in_fwd_stall || in_branch_stall_exe || in_interrupt || in_freeze || in_debug; @@ -68,7 +77,7 @@ module VX_fetch ( assign out_curr_PC = out_PC; assign out_valid = warp_valid; - // assign out_warp_num = warp_num; + assign out_warp_num = warp_num; assign out_delay = 0; assign out_instruction = stall ? 32'b0 : in_instruction; diff --git a/rtl/VX_forwarding.v b/rtl/VX_forwarding.v index b7db608c..7d61daa2 100644 --- a/rtl/VX_forwarding.v +++ b/rtl/VX_forwarding.v @@ -3,34 +3,39 @@ module VX_forwarding ( // INFO FROM DECODE - input wire[4:0] in_decode_src1, - input wire[4:0] in_decode_src2, - input wire[11:0] in_decode_csr_address, + input wire[4:0] in_decode_src1, + input wire[4:0] in_decode_src2, + input wire[11:0] in_decode_csr_address, + input wire[`NW_M1:0] in_decode_warp_num, // INFO FROM EXE - input wire[4:0] in_execute_dest, - input wire[1:0] in_execute_wb, - input wire[31:0] in_execute_alu_result[`NT_M1:0], - input wire[31:0] in_execute_PC_next, - input wire in_execute_is_csr, - input wire[11:0] in_execute_csr_address, + input wire[4:0] in_execute_dest, + input wire[1:0] in_execute_wb, + input wire[31:0] in_execute_alu_result[`NT_M1:0], + input wire[31:0] in_execute_PC_next, + input wire in_execute_is_csr, + input wire[11:0] in_execute_csr_address, + input wire[`NW_M1:0] in_execute_warp_num, // INFO FROM MEM - input wire[4:0] in_memory_dest, - input wire[1:0] in_memory_wb, - input wire[31:0] in_memory_alu_result[`NT_M1:0], - input wire[31:0] in_memory_mem_data[`NT_M1:0], - input wire[31:0] in_memory_PC_next, - input wire in_memory_is_csr, - input wire[11:0] in_memory_csr_address, - input wire[31:0] in_memory_csr_result, + input wire[4:0] in_memory_dest, + input wire[1:0] in_memory_wb, + input wire[31:0] in_memory_alu_result[`NT_M1:0], + input wire[31:0] in_memory_mem_data[`NT_M1:0], + input wire[31:0] in_memory_PC_next, + input wire in_memory_is_csr, + input wire[11:0] in_memory_csr_address, + input wire[31:0] in_memory_csr_result, + input wire[`NW_M1:0] in_memory_warp_num, // INFO FROM WB - input wire[4:0] in_writeback_dest, - input wire[1:0] in_writeback_wb, - input wire[31:0] in_writeback_alu_result[`NT_M1:0], - input wire[31:0] in_writeback_mem_data[`NT_M1:0], - input wire[31:0] in_writeback_PC_next, + input wire[4:0] in_writeback_dest, + input wire[1:0] in_writeback_wb, + input wire[31:0] in_writeback_alu_result[`NT_M1:0], + input wire[31:0] in_writeback_mem_data[`NT_M1:0], + input wire[31:0] in_writeback_PC_next, + input wire[`NW_M1:0] in_writeback_warp_num, + // OUT SIGNALS output wire out_src1_fwd, @@ -92,16 +97,19 @@ module VX_forwarding ( // SRC1 assign src1_exe_fwd = ((in_decode_src1 == in_execute_dest) && (in_decode_src1 != `ZERO_REG) && - (in_execute_wb != `NO_WB)); + (in_execute_wb != `NO_WB)) && + (in_decode_warp_num == in_execute_warp_num); assign src1_mem_fwd = ((in_decode_src1 == in_memory_dest) && (in_decode_src1 != `ZERO_REG) && (in_memory_wb != `NO_WB) && - (!src1_exe_fwd)); + (!src1_exe_fwd)) && + (in_decode_warp_num == in_memory_warp_num); assign src1_wb_fwd = ((in_decode_src1 == in_writeback_dest) && (in_decode_src1 != `ZERO_REG) && (in_writeback_wb != `NO_WB) && + (in_writeback_warp_num == in_decode_warp_num) && (!src1_exe_fwd) && (!src1_mem_fwd)); @@ -115,18 +123,21 @@ module VX_forwarding ( // SRC2 assign src2_exe_fwd = ((in_decode_src2 == in_execute_dest) && (in_decode_src2 != `ZERO_REG) && - (in_execute_wb != `NO_WB)); + (in_execute_wb != `NO_WB)) && + (in_decode_warp_num == in_execute_warp_num); assign src2_mem_fwd = ((in_decode_src2 == in_memory_dest) && (in_decode_src2 != `ZERO_REG) && (in_memory_wb != `NO_WB) && - (!src2_exe_fwd)); + (!src2_exe_fwd)) && + (in_decode_warp_num == in_memory_warp_num); assign src2_wb_fwd = ((in_decode_src2 == in_writeback_dest) && (in_decode_src2 != `ZERO_REG) && (in_writeback_wb != `NO_WB) && (!src2_exe_fwd) && - (!src2_mem_fwd)); + (!src2_mem_fwd)) && + (in_writeback_warp_num == in_decode_warp_num); assign out_src2_fwd = src2_exe_fwd || src2_mem_fwd || src2_wb_fwd; // COMMENT diff --git a/rtl/VX_m_w_reg.v b/rtl/VX_m_w_reg.v index 772d4d85..b0e8fadf 100644 --- a/rtl/VX_m_w_reg.v +++ b/rtl/VX_m_w_reg.v @@ -13,6 +13,7 @@ module VX_m_w_reg ( input wire[31:0] in_PC_next, input wire in_freeze, input wire in_valid[`NT_M1:0], + input wire[`NW_M1:0] in_warp_num, output wire[31:0] out_alu_result[`NT_M1:0], output wire[31:0] out_mem_result[`NT_M1:0], // NEW @@ -21,7 +22,8 @@ module VX_m_w_reg ( output wire[4:0] out_rs1, output wire[4:0] out_rs2, output wire[31:0] out_PC_next, - output wire out_valid[`NT_M1:0] + output wire out_valid[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); @@ -34,7 +36,7 @@ module VX_m_w_reg ( reg[1:0] wb; reg[31:0] PC_next; reg valid[`NT_M1:0]; - + reg[`NW_M1:0] warp_num; initial begin // alu_result = 0; @@ -44,6 +46,7 @@ module VX_m_w_reg ( rs2 = 0; wb = 0; PC_next = 0; + warp_num = 0; // valid = 0; end @@ -55,7 +58,7 @@ module VX_m_w_reg ( assign out_wb = wb; assign out_PC_next = PC_next; assign out_valid = valid; - + assign out_warp_num = warp_num; always @(posedge clk) begin if(in_freeze == 1'b0) begin @@ -67,6 +70,7 @@ module VX_m_w_reg ( wb <= in_wb; PC_next <= in_PC_next; valid <= in_valid; + warp_num <= in_warp_num; end end diff --git a/rtl/VX_memory.v b/rtl/VX_memory.v index b122a7e9..cca232f2 100644 --- a/rtl/VX_memory.v +++ b/rtl/VX_memory.v @@ -20,6 +20,7 @@ module VX_memory ( input wire[2:0] in_branch_type, input wire in_valid[`NT_M1:0], input wire[31:0] in_cache_driver_out_data[`NT_M1:0], + input wire[`NW_M1:0] in_warp_num, output wire[31:0] out_alu_result[`NT_M1:0], output wire[31:0] out_mem_result[`NT_M1:0], @@ -36,7 +37,8 @@ module VX_memory ( output wire[2:0] out_cache_driver_in_mem_read, output wire[2:0] out_cache_driver_in_mem_write, output wire out_cache_driver_in_valid[`NT_M1:0], - output wire[31:0] out_cache_driver_in_data[`NT_M1:0] + output wire[31:0] out_cache_driver_in_data[`NT_M1:0], + output wire[`NW_M1:0] out_warp_num ); // always @(in_mem_read, in_cache_driver_out_data) begin @@ -88,6 +90,7 @@ module VX_memory ( assign out_rs2 = in_rs2; assign out_PC_next = in_PC_next; assign out_valid = in_valid; + assign out_warp_num = in_warp_num; // always @(*) begin diff --git a/rtl/VX_register_file.v b/rtl/VX_register_file.v index 0016e888..61cba771 100644 --- a/rtl/VX_register_file.v +++ b/rtl/VX_register_file.v @@ -2,6 +2,7 @@ module VX_register_file ( input wire clk, + input wire in_warp, input wire in_valid, input wire in_write_register, input wire[4:0] in_rd, @@ -37,7 +38,7 @@ module VX_register_file ( assign write_enable = (in_write_register && (in_rd != 5'h0)) && in_valid; always @(posedge clk) begin - if(write_enable) begin + if(write_enable && in_warp) begin // $display("RF: Writing %h to %d",write_data, write_register); registers[write_register] <= write_data; end diff --git a/rtl/VX_register_file_slave.v b/rtl/VX_register_file_slave.v index 3cc02a74..2a2e8b88 100644 --- a/rtl/VX_register_file_slave.v +++ b/rtl/VX_register_file_slave.v @@ -5,6 +5,7 @@ module VX_register_file_slave ( input wire clk, + input wire in_warp, input wire in_valid, input wire in_write_register, input wire[4:0] in_rd, @@ -42,7 +43,7 @@ module VX_register_file_slave ( assign write_enable = (in_write_register && (in_rd != 5'h0)) && in_valid; always @(posedge clk) begin - if(write_enable && !in_clone) begin + if(write_enable && !in_clone && in_warp) begin // $display("RF: Writing %h to %d",write_data, write_register); registers[write_register] <= write_data; end else if (in_clone && in_to_clone) begin diff --git a/rtl/VX_writeback.v b/rtl/VX_writeback.v index 5fce4434..5e72a18e 100644 --- a/rtl/VX_writeback.v +++ b/rtl/VX_writeback.v @@ -14,10 +14,12 @@ module VX_writeback ( /* verilator lint_off UNUSED */ input wire in_valid[`NT_M1:0], /* verilator lint_on UNUSED */ + input wire [`NW_M1:0] in_warp_num, output wire[31:0] out_write_data[`NT_M1:0], output wire[4:0] out_rd, - output wire[1:0] out_wb + output wire[1:0] out_wb, + output wire[`NW_M1:0] out_warp_num ); wire is_jal; @@ -60,6 +62,7 @@ module VX_writeback ( assign out_rd = in_rd; assign out_wb = in_wb; + assign out_warp_num = in_warp_num; endmodule // VX_writeback \ No newline at end of file diff --git a/rtl/Vortex.v b/rtl/Vortex.v index 1874c256..4397c718 100644 --- a/rtl/Vortex.v +++ b/rtl/Vortex.v @@ -25,15 +25,17 @@ module Vortex( assign curr_PC = fetch_curr_PC; // From fetch -wire[31:0] fetch_instruction; -wire fetch_delay; -wire[31:0] fetch_curr_PC; -wire fetch_valid[`NT_M1:0]; +wire[31:0] fetch_instruction; +wire fetch_delay; +wire[31:0] fetch_curr_PC; +wire fetch_valid[`NT_M1:0]; +wire[`NW_M1:0] fetch_warp_num; // From f_d_register -wire[31:0] f_d_instruction; -wire[31:0] f_d_curr_PC; -wire f_d_valid[`NT_M1:0]; +wire[31:0] f_d_instruction; +wire[31:0] f_d_curr_PC; +wire f_d_valid[`NT_M1:0]; +wire[`NW_M1:0] f_d_warp_num; // From decode wire decode_branch_stall; @@ -60,6 +62,7 @@ wire decode_valid[`NT_M1:0]; wire decode_clone_stall; wire decode_change_mask; wire decode_thread_mask[`NT_M1:0]; +wire[`NW_M1:0] decode_warp_num; // From d_e_register wire[11:0] d_e_csr_address; @@ -82,7 +85,8 @@ wire[31:0] d_e_curr_PC; wire d_e_jal; wire[31:0] d_e_jal_offset; wire[31:0] d_e_PC_next; -wire d_e_valid[`NT_M1:0]; +wire d_e_valid[`NT_M1:0]; +wire[`NW_M1:0] d_e_warp_num; // From execute @@ -104,6 +108,7 @@ wire[31:0] execute_jal_dest; wire[31:0] execute_branch_offset; wire[31:0] execute_PC_next; wire execute_valid[`NT_M1:0]; +wire[`NW_M1:0] execute_warp_num; // From e_m_register @@ -128,6 +133,7 @@ wire[31:0] e_m_branch_offset; wire[2:0] e_m_branch_type; wire[31:0] e_m_PC_next; wire e_m_valid[`NT_M1:0]; +wire[`NW_M1:0] e_m_warp_num; // From memory @@ -142,6 +148,7 @@ wire[4:0] memory_rs1; wire[4:0] memory_rs2; wire[31:0] memory_PC_next; wire memory_valid[`NT_M1:0]; +wire[`NW_M1:0] memory_warp_num; // From m_w_register wire[31:0] m_w_alu_result[`NT_M1:0]; @@ -153,27 +160,29 @@ wire[4:0] m_w_rs1; wire[4:0] m_w_rs2; /* verilator lint_on UNUSED */ wire[31:0] m_w_PC_next; -wire m_w_valid[`NT_M1:0]; +wire m_w_valid[`NT_M1:0]; +wire[`NW_M1:0] m_w_warp_num; // From writeback -wire[31:0] writeback_write_data[`NT_M1:0]; -wire[4:0] writeback_rd; -wire[1:0] writeback_wb; +wire[31:0] writeback_write_data[`NT_M1:0]; +wire[4:0] writeback_rd; +wire[1:0] writeback_wb; +wire[`NW_M1:0] writeback_warp_num; // From csr handler -wire[31:0] csr_decode_csr_data; +wire[31:0] csr_decode_csr_data; // From forwarding -wire forwarding_fwd_stall; -wire forwarding_src1_fwd; -wire forwarding_src2_fwd; +wire forwarding_fwd_stall; +wire forwarding_src1_fwd; +wire forwarding_src2_fwd; /* verilator lint_off UNUSED */ -wire forwarding_csr_fwd; -wire[31:0] forwarding_csr_fwd_data; +wire forwarding_csr_fwd; +wire[31:0] forwarding_csr_fwd_data; /* verilator lint_on UNUSED */ -wire[31:0] forwarding_src1_fwd_data[`NT_M1:0]; -wire[31:0] forwarding_src2_fwd_data[`NT_M1:0]; +wire[31:0] forwarding_src1_fwd_data[`NT_M1:0]; +wire[31:0] forwarding_src2_fwd_data[`NT_M1:0]; // Internal @@ -207,6 +216,7 @@ VX_fetch vx_fetch( .out_instruction (fetch_instruction), .out_delay (fetch_delay), .out_curr_PC (fetch_curr_PC), + .out_warp_num (fetch_warp_num), .out_valid (fetch_valid) ); @@ -220,9 +230,11 @@ VX_f_d_reg vx_f_d_reg( .in_fwd_stall (forwarding_fwd_stall), .in_freeze (total_freeze), .in_clone_stall (decode_clone_stall), + .in_warp_num (fetch_warp_num), .out_instruction(f_d_instruction), .out_curr_PC (f_d_curr_PC), - .out_valid (f_d_valid) + .out_valid (f_d_valid), + .out_warp_num (f_d_warp_num) ); @@ -234,16 +246,17 @@ VX_decode vx_decode( .in_write_data (writeback_write_data), .in_rd (writeback_rd), .in_wb (writeback_wb), + .in_wb_warp_num (writeback_warp_num), .in_wb_valid (m_w_valid), .in_src1_fwd (forwarding_src1_fwd), .in_src1_fwd_data(forwarding_src1_fwd_data), .in_src2_fwd (forwarding_src2_fwd), .in_src2_fwd_data(forwarding_src2_fwd_data), + .in_warp_num (f_d_warp_num), .out_csr_address (decode_csr_address), .out_is_csr (decode_is_csr), .out_csr_mask (decode_csr_mask), - .out_rd (decode_rd), .out_rs1 (decode_rs1), .out_rs2 (decode_rs2), @@ -264,7 +277,8 @@ VX_decode vx_decode( .out_valid (decode_valid), .out_clone_stall (decode_clone_stall), .out_change_mask (decode_change_mask), - .out_thread_mask (decode_thread_mask) + .out_thread_mask (decode_thread_mask), + .out_warp_num (decode_warp_num) ); @@ -295,6 +309,7 @@ VX_d_e_reg vx_d_e_reg( .in_freeze (total_freeze), .in_valid (decode_valid), .in_clone_stall (decode_clone_stall), + .in_warp_num (decode_warp_num), .out_csr_address(d_e_csr_address), .out_is_csr (d_e_is_csr), @@ -316,7 +331,8 @@ VX_d_e_reg vx_d_e_reg( .out_jal (d_e_jal), .out_jal_offset (d_e_jal_offset), .out_PC_next (d_e_PC_next), - .out_valid (d_e_valid) + .out_valid (d_e_valid), + .out_warp_num (d_e_warp_num) ); VX_execute vx_execute( @@ -342,6 +358,7 @@ VX_execute vx_execute( .in_jal_offset (d_e_jal_offset), .in_curr_PC (d_e_curr_PC), .in_valid (d_e_valid), + .in_warp_num (d_e_warp_num), .out_csr_address (execute_csr_address), .out_is_csr (execute_is_csr), @@ -360,7 +377,8 @@ VX_execute vx_execute( .out_branch_offset(execute_branch_offset), .out_branch_stall (execute_branch_stall), .out_PC_next (execute_PC_next), - .out_valid (execute_valid) + .out_valid (execute_valid), + .out_warp_num (execute_warp_num) ); VX_e_m_reg vx_e_m_reg( @@ -385,6 +403,7 @@ VX_e_m_reg vx_e_m_reg( .in_jal_dest (execute_jal_dest), .in_freeze (total_freeze), .in_valid (execute_valid), + .in_warp_num (execute_warp_num), .out_csr_address (e_m_csr_address), .out_is_csr (e_m_is_csr), @@ -404,7 +423,8 @@ VX_e_m_reg vx_e_m_reg( .out_jal (e_m_jal), .out_jal_dest (e_m_jal_dest), .out_PC_next (e_m_PC_next), - .out_valid (e_m_valid) + .out_valid (e_m_valid), + .out_warp_num (e_m_warp_num) ); // wire[31:0] use_rd2[`NT_M1:0]; @@ -428,6 +448,7 @@ VX_memory vx_memory( .in_branch_type (e_m_branch_type), .in_valid (e_m_valid), .in_cache_driver_out_data (in_cache_driver_out_data), + .in_warp_num (e_m_warp_num), .out_alu_result (memory_alu_result), .out_mem_result (memory_mem_result), @@ -440,6 +461,7 @@ VX_memory vx_memory( .out_delay (memory_delay), .out_PC_next (memory_PC_next), .out_valid (memory_valid), + .out_warp_num (memory_warp_num), .out_cache_driver_in_address (out_cache_driver_in_address), .out_cache_driver_in_mem_read (out_cache_driver_in_mem_read), .out_cache_driver_in_mem_write(out_cache_driver_in_mem_write), @@ -458,6 +480,7 @@ VX_m_w_reg vx_m_w_reg( .in_PC_next (memory_PC_next), .in_freeze (total_freeze), .in_valid (memory_valid), + .in_warp_num (memory_warp_num), .out_alu_result(m_w_alu_result), .out_mem_result(m_w_mem_result), @@ -466,7 +489,8 @@ VX_m_w_reg vx_m_w_reg( .out_rs1 (m_w_rs1), .out_rs2 (m_w_rs2), .out_PC_next (m_w_PC_next), - .out_valid (m_w_valid) + .out_valid (m_w_valid), + .out_warp_num (m_w_warp_num) ); @@ -478,10 +502,12 @@ VX_writeback vx_writeback( .in_wb (m_w_wb), .in_PC_next (m_w_PC_next), .in_valid (m_w_valid), + .in_warp_num (m_w_warp_num), .out_write_data(writeback_write_data), .out_rd (writeback_rd), - .out_wb (writeback_wb) + .out_wb (writeback_wb), + .out_warp_num (writeback_warp_num) ); @@ -489,6 +515,7 @@ VX_forwarding vx_forwarding( .in_decode_src1 (decode_rs1), .in_decode_src2 (decode_rs2), .in_decode_csr_address (decode_csr_address), + .in_decode_warp_num (decode_warp_num), .in_execute_dest (execute_rd), .in_execute_wb (execute_wb), @@ -496,6 +523,7 @@ VX_forwarding vx_forwarding( .in_execute_PC_next (execute_PC_next), .in_execute_is_csr (execute_is_csr), .in_execute_csr_address (execute_csr_address), + .in_execute_warp_num (execute_warp_num), .in_memory_dest (memory_rd), .in_memory_wb (memory_wb), @@ -505,12 +533,14 @@ VX_forwarding vx_forwarding( .in_memory_is_csr (e_m_is_csr), .in_memory_csr_address (e_m_csr_address), .in_memory_csr_result (e_m_csr_result), + .in_memory_warp_num (memory_warp_num), .in_writeback_dest (m_w_rd), .in_writeback_wb (m_w_wb), .in_writeback_alu_result(m_w_alu_result), .in_writeback_mem_data (m_w_mem_result), .in_writeback_PC_next (m_w_PC_next), + .in_writeback_warp_num (writeback_warp_num), .out_src1_fwd (forwarding_src1_fwd), .out_src2_fwd (forwarding_src2_fwd), diff --git a/rtl/obj_dir/VVortex b/rtl/obj_dir/VVortex index 8bc532bd0117fdbfe235b472633b3e7fc446e035..2f091fee716f60cc1a2d30b0027a9c08e61b9e97 100755 GIT binary patch delta 81183 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¥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 MR-Q7tM*q+M4;2@SXaE2J delta 79392 zcmbq+3w(@6_y5kUAR-dvE|G+Ukc)%_5g{QfK|-`Hp{QF`>rzzemdH)m&03;^QB{{# zTa-3LE$Wh}hN4B?qKYWhCn%vxT=PF?p6A)ks`vMM|DT`t?LN;4X)#`GfTNDPvZ`|?2G-fAhD>S#351o(i;8zUZq=xS+qXK3f) z;kY{QJICD<$d`y@0aX8eXXkJMEmxQtnl+kif#d;lIL`UcY-~ESdOxU;ElojC!-YCB zRwNA*SWCYWBKVwZoT{W=vN+AG!I4b>t=dDOibT;WC>eAcB-#QB5x*GD!GEQOl-r0) zzk?yhl-q_A2HiTTSqzJDZbrAnur%j~^iId()W-D)z15iwZ8C?>?aaEkCt>SUg2_tw4_Kg=t?R|T851@0yS$Fr@ z^!6yW$GrvJHHuw!_o16cvFGl|P5O=kiFqaU!8*{dOqv_P-th2p%Aa z6?pWb72)g`kI@dJ-$d;)D;Zu_;odfP9L!AI=X$0HqY4n;ggUYpcWw+93aQvl|CmBviFT&YtUahHT zJ2uy=E9K#Aw^s^X6vpZ|3!sZaSXi?NIwXvZZZ?;04rP~{d4_%*ipCvE9r3;46u7M1 zka8x;1UlydZlhkgv?7=VcrUH@Wg?8$v@o{U+n3sfvP<55>ZKrbBb0^t_)-?a`un5= z-RcFT{H8`D=BcV^_uebGFG9r8)3w-}k9g)ooizI0PCi*BA$FBGAL zA~+Ll%LrqnYb zRMD12`uR7`Z=+V4is;vE*?7N}^gwH7^c&z$5Q?yfecBU>EkrTD`bAAmqmu;P_%eYAc^1rKk-X=ikGv6W+gVsg#1nv^K?i{XZk!E(K^c z1@-kQe;U&trk@BG=4R+ngXYVnlTk%VUZ zvkgH#>1UBc=KYX4`$!A?M2UzWslmn$=WiOLd?*ge5kuc^tzv% z=GO(L0^LoxFVOuIK=gLMLiBuScN#v4(|i}88tsljA+LlO><+?BWdpzt+ZDqt{xj-s zBT09=Qd3h?10nX;WKh){>k>~z9SF)5==)3*FT#xMDAc5}8`~6-LLc^G)e)m; zwkI3begJiJWn0_F(a|34ZhJq6?pO_Z*SRpS4pp?XJ8KxZi0*Y`t0G%d=ElB{Tt~0C zvbUl-(9N!FRn!~wO;`3PYCYZS!d7)0LNCS_|J`vvsWY~zR>M|z@?bx8cBS2#vg@5Y zQ2(aPGdkY>auaOBZen*fHo7GZYQprE^k`$2+$Fuu%*M!KN)^Lvc^X~} zCz1^3l8np4p&$(rbi3=Z>}HpibiFfkit(juVp(|18amREos4Nl;~m*wG2hSvC$^?* z8okqqRd;=Z{?Vv-P;6aFcQ<4sx+l_Q4cQmnQ|Yi{P+zMt=$=(B zf(Qz(&`WXlYO zJt=!9u~oxQ05@i?#+8$>j}yDmM8Ym6e%|;CEi@6MJ1K_==@SiGnsi-juAyvJ?@>+q zp#m|wB8930_-5~vCU-#?z#A3##tX`N_gSXx57&x5U9`<#&|;sy4Yb-J&nau$Z-Db- z5ppxDL7{4C!V_9-?3Yg3O?paUG{ZWptCrg0y)kMwhHazk7;ypKEP%&5`Oe3A&DQpF zW4hE~^rNS2+9@|?PW97HeoEP|se`okPib-c0TtTjUJodkSq)}Z|4lU;iBmrGn5Gib z4(Y|;#o>ciQ~JT*?B^kmY5LvbAJe`hH0^Hj^kMx;sN)@2%{`DC{(~q2@&CzR$^u`B zd80aMPD+dJvO8~hba{X^kXf2>7uDBQC*>Sk2W4d)KWRugE)4~eV6s-9bE`ORI4H97 zCc8Y+jjp-L9*#Uo@Bhh;yqVebPYFe3RvFEOAPHveeyKQZlozEpZ?G9-7SKMG?AaLZ zcF7jg1-C#_1|dMF=@^kEC5^ ztHzC@4Q~`b8#jn(qi#@s<|ERAeK39z-QJkhd7Dw!#_XfFySRm36Lv~ThqLvd9sZMa zS6SuT?dU_;;SPlGDh=64h5?^jsWyIozcUw%m+Nt*o|i=Wt| z-o1tpiN{=G1ruA*pRcg(6Wh`|m)Yfs6X@nEENN0tkGv~XlUJ>AnjZjdf~!v^8E4Is zI$dF(O&UjQE;0MbuV=Ydg9W}|E8ABa`}W> z{!%U_*@fb7-s?viuYf^aq>+*@QV2rVrSa!kqiLRg3jmEM(U%%@75XDmGeP`K>JE}2 zMV3szvcze=GmBnqV!*2jdQ22+JDMQrHwMB3?Z_UZK4PIY18MU=$r zOA_$^x+~HsFbftnX+C6dNv7B*_bF7oBJ~#V8EG=W(ii2-?fpaaejWDP`w6t5oVA$I zfu62nLuLfgv*%dO3~%aK&eqQ8sGEEaoMcMh2#zY0Hk?rg6inBR(x+JR2D`+nxz3QX zTEIq?sZt(0c007pD?NbD`Gv)$yU=0h*x>YOj&C`DsgS}X8SI8R6rV{?BD9FG<})YJ zj5}=6%vL^YK#U>3Gp3=?1O|u_>G&z^vDg|7J2A6O@G2+?n&Q69UDDPQRDGIQ9*%}) zuZIuQY1VSqyhiUsc!5b+g=_Qa)9jmB(bVrWyE)6RWiYHaku~@~O9=CWN8~cQ#y}vD z;n>$_p|g9^?-hLv^#~D(uz(= zM#nO7TWOzUe+1Y{1l@7B0IxPmiZ}v|ekMS>4FaqPfJz^U+e&Y&WUw;|I<%JOaA?$s z?=c8Uw~w=*=k#^*L_e2SK%xX|MZ;6YL377Zdiy9_oasxC9cABS&h(hFK?`x$$u~|j zD9P|gQr_)wL*@gi>rvKio6M-9AhK1I|O|$mv$W!^Gal}HJHI3 z$K1jcn|fU^e{_uP&JLot9u;59e&3#caEGN8w51`XY<|HL+V8L8Y@;Kk-EXlarndB- zeZ}9ImJym+$p$P*rNNc#vnBrY=6A(qOFGn{r?0c8Y%U#qoy}SnK%1D0*DO0q=(yjD z-(B%oOWS?J-dfetzQH$Os?jd?GF!T;ok#T+>-h0o3q$AFJoqRtDlT6&lhTMSY``Zz zbmYb2shc%Sg8Pe?QBkFEEvvIRn!d4?b>HkpW7o1Fn_E(kwJc+EKApUV zX}@Ys6V|YhuevvFy#}PVhliOYlh96bTf^pk)y`$@Sz-EO*l@up3pRhUj+K7pP2W4q zu6#9$4*i71Z*ikBpRl1@I#K!w`*6!NI&n3#+uEA;Sk1z=c5fQE8bpUfoCMJu(GZu_ zEPJb)^Ul*k^yj<8_}aCGeX%vh-SjblhI~J8skI*lpDwQ6dX3VxD~m4`O(C=$FHYHR zPv}42v9#h9G;KSpDu!p1?aXP%61sgGTeqVVE!f5`?1<>^x5DbyBy4=|%;-4iL1u8JB!2R*%48_?tXR=%jI zF@C!UKKI~;E->^4hPvO!y4uTV;UO83nQjoQPsSgUVY#>{zG_3VWkiGxSDwY${M*eDAGo4_BW6mIsmZ^X3$s&S^KXjGidYI))^#tzkzy{eLyzmCHX;6-CzoUPgU*`qyt$~ z3F)u{saYA0M;kM;@~9BXyX| zj~TRIF8lDuf%Il3lYZ<)S7fsAqiJ+Z4l6j?l0M2|-yFS4hh?)5k4>Uwb3Z(uM04jB z_c=ZQLd=}vPk#DEOTYa9p0d2?fC0>ODuFr-V5d)|(dYpz^p`hicseWiIBbmxL-d^&sY+`B>U z>A(V+PwX_f<{fgz#XCWxuHJr0CfKw$I{vhtk@L~?!}YA|d0+ba3^w9?5KUaq7M_2b zUS7wlptRzB=2hOc*#g|tv70Zt5OQdE1f20H`q*xAA2zMrkDl(sSh+v#GM()#4|VuR z>;R=7lKM?!cgnlc*ZQ!K3*O$5084*PRXZMb@r)@YhM!^H&^~P3g@IHvh3&a8*zpJ` zZOnWI*@EOWh57v2oUTt|vA-tJHrt5u>)aSuX|=?))5gSP3D{mCFzqXO33OdgFO*^aX=kzM!PP! zh?pFM0T)l!pt$QDFBl@-p(eHm1Ver@jCpB@jA)S66m@nX%%DRMszIBIB*UX56MO4Y zAU&vMi!Oyyre)t<@~2a^>@t)}S24%Stx0&X>x}^<>$w~d6*a3c7CxV7tLFCzj@)Ne zbJa?r=2w7Q)a>U0O09*Opyp;EC~BHzBpX>xQBnDzX26A))$Bo7NJS`ZO4u6}{*_!J zv{kSxbKs85$S%O7Kkk4e6S{=OK@aAoAC8*Mz7dEOjGhc0I6 zH(OG-(Z#E7wkKH{NK8_U_Q{46c$1b{o*ml?b|f^g=B2`nv~*$<0Hw8W+8X}HKLBdB zSq<;H2+eT(32=+yRSsZyJk$ikj{`w5e5j0k>WIAXa&8ugDm%`a-wb4#w;i_$7fh#kKj=H37((o!%OEI%m~4HK5H9a-G?ug)YZ4{|BR zuw;1D&yM{OHUX@|axavmHY02;T7qDKWvw*Ym0=QLa-0dc#iBX(V9_yD#1#7h5DfXa zhD+CEBpF#vQKQKR?8iG%w9(%m-fh+D2JA1uG8>0{PxRQov2DR(SP&q+as(w{RmnB5 znH~G?z1nt-fReNsTv2<7 zh9l^(#oAMe5L>}655O&UJ*^AcB|}Zn&K(F!PmPn2zpALl4h;MKeU@~uPrdC>lpYUd zAKi=UG7|3b*>1sCXqm18>h~3p*qM;JF96t>z6%?oo9|?YdUMyR{>fiUXFB~Ln z%o} zj-i#(sZ^^lXB4)f1$=B9SX}cEl8P1CtaEiT-7twQs2=6H1$be{<)ksc4saTDJB+#= zpw@{jR#V;8bqG*pjTPaA(!2dw>SGt$=e6STk3$KKo+qZ}<|o1Q^>^9%C+~U==qDsr z81owniHD53Lm+WRCL8v&Yw)v_mn5!}oRY2TR%7nr$gql zna|tN`u*6(=OMIu4mZ@koRGH=`o{+{X*%pnb61L74K!> zk<$7uUqw3Fr^)<*Z!f<<#@PQQqMzgG@jQW$jb07D20}AQRA)sR;I#3EWGMmAJ$Syw^7VvuB z6gy7l`9kIyC3voj?P4oWoXn$_dAbUoiptX+y1s`PqNewFygm8V zer9*zHO6k9BF1Pml>R+Nd&lx=4TuYE6VDemASv}G422Qs9?vf}ATjn$hKbfgM{r*U z0$F^Vd6)x%ovKzbe0xI@N^f;BUu{Sl5c}96f^q6F^8-h+Lu;Q6fdJM`Ae)V@sbNbGH)rb(J8`cjZ~*1wXx_aE8ERh$F$OBd4Cd>bkf>&Lqo61rER-EV zXG7*QNZO?zI-Bn`A+Vh?c^n_@Lc&91#sR0XW0G-DbyD;>*kgCfw+Am8b=RT3--z#} zXB~0w%P*qXl=JTN(O7=og>>{-+6la#{~JtJqxdYXh7&4|o5u1$R}w@=cjWzDNh`Xv zJ)h}HdeO5T_yH()d<1Vhl1wSE@tavBUSjGtO4r6=oQ8K^^Pw$xTv#Vu4O0#P^2+9DH|VBtex(`t zJGLZ588#TdrR`8M>Yl-ivQaQIM|>|^iIkNppJF&{|9sWf?Bqj=2z6+~OPiA%dMF6B zbm3{fWUAN6Hs~l3m=r1dCV*dP|XZw*5I=VIg(hqv}qhNm5k2GsJrWEFx#t-J%yx>~hSZ0@a z6@6*4i!bG&{=_dx7X-?Q9V@iG6O^Es59|m#z zmN4XVgLqg=GA`sMJ}2mg!0^*OGuYjRQeNgWc)Qb4SR6Y7B9pRvxh#n9Z%Mk-?^^O2 zkkD)x*8Fy`Qga-X!2D|Iv%WC9p3iB66)fKgc%CKP-Ue26q8h%sHSyq=14*L}%b*DJMLt0R9)*)K zc3XfCw5yU%_eLp)!mS>bq>uf%Z!6L&D;_Jt8waRdAw`M;JP4Drq`WekWJs5wb?tAW z^~R!gos<+~_XL&!rv=Ff76PWIcY1)$69TcC?g;RWmielrfruHS z23+Jmtx2oY=%>K9>~(Z>R21AN#iUm&yOyJ5b(;eU8M-)-ha=Bm=Lkq;EK*Ie*W$4` z*EO+tal91IS!n&Q)%;PwY@P@@Gf{18ME>6YfaQ5({lo@&lJwSn>f za||EehBObN@PcAD&NstR-0`t*3H1%SA~AQ%?0&BX8)4G@RxVGvlfJbl-9adU*KyK~ zvJQz7>7)<8*@gtt;_ke0TjHJd$WQGvlk0k15#eYaY?B<3E?Wt(72OSmgZGeLB!#1J zJi}L-A}o2(4a=_Ibb$%^5ck<1!`7h6ULg@=7n5JSyWD6<*`U73cEK$QO>@ure#^jP~L8!a)D^9^A7X3F`2Vhv+|>O-!Xle8Fpq z+Vi()Rg$JbfQ6C0{ck>_9Yprbzxk$iWEUOc&c}w6unq&or)RE-U{+)Q^PQ;4_y7JIYL`Qo$^BJAU2d$Sih0`~M zN?JJ;(n^eW5AB}Zq;Og?UtZSje!9sUcP4S33{bFSozxyO9>r6z=C^Ik-|b8y=p$$T zNoUfWo_FT^IuoxJ-#IHiQi%sQ%j{fGs2m$$)*g{c8}Y}TNgKMSk_SYSWSZ27Pmd=1 z=@-tteHYT9-X+M~q!vy1q%OppmbK#rT}Uil*^d9%1^jMo#O-4sjurxQ3<-A+Z=^OB zh8y>gf5H%Z8pdbG5dYp%n8hJqfl`M21W2zG17aTl5r)LOkQ>1Y@i($Ql!`hj43%57 z7I6;k__Y|)t>H9BrLBVePW(z&;@aS542&+=smOKW$z4f%cNdkT5{?6^+RO^$%e#W= z2O9FTT|xDujra>>9@9`&9UhWY<{P0rF&5T~It_VYEa~OG*Fj~%H&TjyBSZOL$TZS{ zckBid$2#&iyO9p=8VmCaoNux-c8Bmy-H5;QRm|s1u0t?2fCrOc{%bcF7_&q8L!>T~ zsSRW*3+Ao66JL)mkkVSC+A~ntkbfH+#a=@K_vc&mVP%Az4_TcZ-8e)Wv~MiX%hlj}H8YI1=fywmv9o z(5+MlT#2->K6i{Ko^(=u9uyDrU~*la5>LiAyigA~F;&Vt6vt|kJ$ZRNNv9ne@cuo> z+w?VizN-frNO#!rMm@>I2Jv<%_poGdXU^+M{2({4!#_`epirvi#}dd%>Zs+P=pYb3 zqWpjk0@GH?pX*2h&8NI)FEWRg5`Lf;8ARVD+$|9lc2~+J8o4}KBh%e9{DUO2R(s(E z;U2w7Fs&h6*PF!9gM{byCaE-o@H2?_C!F*lKH62!3HR?qns>QWj(r3P-!gb@hutV0 zeomB`hoy)Y#F{05EK&srgoL}riQnZE72oLT{aytB~ zK~Lcq5OhbRpF|<$ND?Vc$}5E=@r0zW5rWHs2mVW!;5a3}(wDT(8VO6RGy*HY*&Kyh zAteh5>BxRE$uQFoh(*$gryxTd(zU)0%eh^I;{ea=nWB!KQ>@DgQ>+VlCYsgDU2W9q zK~M$Qvr%xSS4ccRnRw8J=lI%WlB!+*l<@n>Z8R*&`mbd+v#OrR?Q*KzxG0lgM>PKGJt_SDr>_=K@CxH8}^dlWQ zv^^sfl%&#Nv3Rr)<@73Pv>uJnWvhB-D|(VMT-TorXjpa{Cdkp6g9g{Vr}?M-A>kZ$ zn&0kE0vwYCCGQ|HxW=F6KB;6X4Sr-^l1e%d+MqQ*G=L1%#y%$8?=><&d#Re3XS_ys z6S~Wtw;KrA@QH_N_rnMUr+dV*OPcl!YW#li1y(bc4u(f@I`)pqjHyS5`JY&hIl>*@AV1J=oA6)WAZ_X1Tl~cvFgO2l;=#jV z9a?{j_a09CL-wd5!R;@EhM60|v_fgUg<#x=hZ3Y`xA=SorBfvq?C&UN#EvBaOy+#BW@?nVKP4Y=*Nwvq*D7 zeNOSiv&lG@(i3Xy&|Sc?QTpm6?>+~XgxH^W<{Yw+&N*qWJD1cYwCXr-lmScASI5n5 zGDxnLo<3&Ynnmi{(IknR=abmvS!JLKY;lW>5F_wm>2q8l;Xi0TYTDmGHoCSK7Z~1I zz%DXR<+~Fw;86e`DV%eV$K{hmmkU3jL^v&sX_lar{=h%ZCll=LzDHKO?f1 zx~4t86D>iEAB3@fmlXURcU?>h>4m-KFBg;ElrG-G?-!D*^sC+Gvr9>5EuFTL-~E(~ zHcwqn8WY-c2hUqU?oh`a=Jz>SMd-Bc-0357pMF%twX1+&Dl-4Q3JLeV=1W$SgY=&* z{Pj~gmOBZ21LN#c z9=wY@qe~Z?+w3NjD1B$KnSX~Y?nd)xd&xsW-!k%#_XCT+-u%%4*si331?FZ4$*+Xg z-(-IDJvPvDq51hCjI-sRn_C|ylk6JanrH1c{-%+%=ckT?ZzgXxgI$N}(8sg*!e7XF z>NkszI!$K7(HDO4GiWL#;PTrxeWBKRT$$UETEgt*_B>h9i znQ#3;wo+Pmw0V_8jD%K>G`GGe{+{7 zWG11z`|;wZ;KfV*%%43Yn+c6bG53E#ZV(#NXL%<&lK$0uIj3{!2faBgjYjI(%M4TL z4xxYcGB4HA4+wovXSTPaKNEU2&U~RRp+7a}e+7X;M|zq&wLyh?`j}(GXiQxi*VH^GlD#z25`25)33@>S#P)Od*De<(vmTn9( z4@sbRX@kyn2!4|Wsxar|P;+J?9ZVX2MQtZW2i~MN{eTuxUeKGCYj4(Q_*;GGXzhn^ z^J5=6N81c;diAB-wIxqA{Api0NUMLQF~6Qn6SP|YYK?hSfBFv520qr9>kgpf3GMih zPkD{@qIdo=?|h90QhMn=zcdisRqk$XJ%}<0M-R+A{8r(-0I)36!dYhF3_#9wnbUuph0_@8BU+DIgPbPUKbHer=Stpn4E6QT zLAI{4l0Ug3J!*=~_9e1aOFUx?okri6_}wwoquug9Fx%8^RMsze4TP({5pwZ~*Db4> z4v-XB?)9B{$Fa0GJ@F^c84F+Z^0{vQWGwxSkP1HME!vg*&dqPpZe%!r_!ezLu5-Wf zv-e)46NXGG<69JsW?@a`j)jVtxT-NZ3lc94{Mq z@5ylaf-j#;dy|d)3S9W*$+RvHn?e)FF8=-$z)SePDZq7v+rI~;#mhN< z3&C<8H5D!uJZma|5N6E1w@EWp2> z1^5R358@kn_t}7Vn+^El*}^-g0RZp#%z?`h{x)7t@@;r2=TGrc!F6-tBJm|~;fv=& z)ys2f0<8|<0U5#&)ZzSfuxo*-R^C3mqfVwMC>(%Y361mv90Y;)f@7B>CCT`0 zeYofsxy|5DGiW54&BHUP8+bD@lSXERs=Rno*vi`=5MH+CBZl807B`jqAw53ehYeKM zJO^GA$~DB#kg@Bvu~~=nmjMxYK|j2+(Qh}f3jLP7;7>AXL&#$5&7(do=GPXHA&Z?_ z3(Lvoz2{Lsj~;6MLXd3Lc^1!^M?G*$4^9=yEXL)+_C8%?$2@u=8dlL58NJHa&ZDja zkJ%DqW#YHCXtx6mQT$p!$K%fn2>Ig;(?=e#LwunvcX!?=i~6_?12k!@2~S}wH4O6$ z;I(iTjdXLCX?h!)3qOpsvge|n_?DL364dkNjkAH4A=9#L>ILvOfJWOt=S#EU>}3f5 z9Eu*&GsWF_j@#<4NPZ8gt5xa@8|oY$n*-ETl{(din!yb@)Td`NnX39T?r{DjU;{@$ zuj3u`dIu=TJ$dJ;um*9f7qWRJG~>2GrcJP+>3N4-pbe90<7{Y!JTsU21hz(+G7xj{ zMW5W1b8T4959Crm2+0+>)MaRAF|bF0Ffp+4rm_SFHoPR!NZ&lM86fepxQ_r;RnA>x zX(hKdT*y=MsGr+F#KxNNNSs<@e!(uDmj{M4kZEZ)G-v)3(n=nSdIN1}h1`8Uc-aIr zm@cZ9dmI*r6J;-_LIoQykCFu;ZdJgU&zuj9xXH9+8=40%g+{Wj!2zmTjr2SKJGdI@ zCtEZ@_J|inH*4Z-aWafg}%&^_0!S6w9r1x!^vwF$!2wON&MiXt(qyzZt z2U0|B$%|03n44Yz+sw^TvU=23NN-ua+mD1TeMKzGEkr4PDEzF9%kVOUg^l|GuH~ja zGV{jT%qw~81rVg>$ed%BCkc0}LD-MKxd6H%3~P)vCD?RD0N(^ONEa?Ipl(?q;3uOv zG$}@E9I(nESSa$%LmNf<%8GmhsHJC?Sx0JZc%=oNSQ}oAHpZdpb%ZsYMQBSh}q3RIDfPd2K4tptL4Px!{VeQh=Q=u87kNe z=oPXc#8u1Y7j))B^x(y0nHFh7i{tC{FrYnc8%dE(&|(cGmga7N7UcnU`+7okxCJM{xWPM{aWnru&oR=bS@0`Gpc9gX zPIx2hB&N{-XtmZ*93(q7#ugncqk*>Q5E*r{Mbl*T@jXSZPkm@m-)E={UsGWj9mc~K zfuDB*3V!wmPIaWrFPOl`E`lLGNv3(&(5CXONNXX}Tx@8w_@hO%6FJMN(UMG_bIr#2cp1K`v@N&dO44qPiWBi~}WxQd)IC&fn20Ts=d5_5b;`H0HTjC4R zDJzJ^xy)_?TpE|zje$#(GP~h$XRM*k2QF@9b_sBChu3KEz6D;R z!FPn&-O6pc|1LW=RErw^4&V1Qo+TJs0A8rQfD&Q9mI=8~k#^_hE3A-O?|31<3RR!rs-(ExaG*x{<*1XAn-Pq%zQW17?JVBk;7;j8Gw->C#zB+w zm(c0)ZcxvlJ0tg*=Q4cGg>A}ge5nbChv0WXq&f(i?3}L%W%kDkr4GVNn1+BzH+ZK) z`ms}&T`1DBQMJ}2U=>T0wOiI#$A@uu|0FZuX*=s{Evup?3Nwf zk-!eVsB+qw1g9GDS|~X0*Z7~3%c=JAwJ4WId`Las++)BRVB$8DxPdB(_3Fg%|##b;JO1|M? zjD}>*5ScK z9RJBO1}N9p6zUF{sFXTuMUgLAM(bt8$pyK>LX6Z3S9mSL;f3&1bK;-eT0*T-*}~q| zN|Ch*i9Hli&b83P3*lFVtfI0O2GlB+E%d{ZFk&HQCW-);T0DmrdfSwOYL&_s`m2@7 z7Q)Y;ss89Gi%d*V z;f2d;mC6$PC_F0_R2-b+&MRoktPIN-TbQYiJY#D`s8Jg>FZpZ3V$n_6oFd%#azsx6dOy5wE;HKa(&izm@6fPlae z(1;%cYn(J1u^gsXjW-M)2|I&T#$FlRGf3Nv&dcB{Kc;?xF$$Vjk+pjw$c`?JcUo2w zpIt%X@%02&0oH3D)7E}nt*o!+3SSLe-Tp_eei=M-H4U5+E4UV5;KMt^f>ELiptV}q zxL07aUV&vOn3K8JxZN7a1folw@>NGA8M9Av=TE518{_t5BkibDzNg|uq~UF;%noZ*y{d0A36-}wnl z(y5|j3#Ru|I=F#S?yr;`@M_G(ScrFq+z>Gs5yPM=V?hcQSFjz!q+E4-pcTc4tDpgv z`WryoKv}?4g>Dqj5i&Nzf<r=U(ddn84d z#yKr7i_5-2;+%Fu=7mFjP9OVf%M_R%g`iP9h~u3hcY-3xn42|Uco)G*77$~$%y?aC z$C!%?fs9pHFpTCh_L~L6B|^r^RSf5(Q(lEH!k}7@=;}D9Ws1V~vc|?a8T{vVTA$tt z(T{6c^TNND6@#$8nBXq|L6}8W>0K9os-4y=%U0aa{zt4%NfY97<&Z6$V(CLUY9ltz z+9z_@79nM*h=p)luw4$^0!>p;W9|+Sd!fF$;d+_^u{u|d&?s@4g-edmh!tAp$st_DkU<jT=au6cV(7hgdumJ1(c&NGN!6nkBq#E zIFU_`5|9XTc~|}N9>Wp&sM?UTfbbpsuDkoUUWP=t65eq^b4r!^w)8AGs#SSi=&dl+ zv1P!6$op&4si5QPYmrF=G}#K3R{G{$C2)f4?`|4RX+^_8O%*;J!4T;KONUF&RZV@x z11;xdl>VvB`BPIz0j6h^-f_*jQKbyk1Q=BOpAGcAtZQQVv@zVVwqgG=d{?F1AFnnX z4?n}hht-IG*VwXmzQ;W{g1F`U6e#j6ajfW=5S0wz`eFKBAkzJJ?r z$|^7K>P!8FUu62CHvL~}udd9lO_#MERvVJFZYQ9Y@EBrF8d+NDAa~e@U2XMtGWQwD zQ@^A=98OzB@O58O*U4M0K;G4VsiCi2Seq`ZF}gM+t0BHwBM(lC^A5(?DgmR0M{J~{ zeJ7ynAg;z^TvfxA8dv+o^KBcccfYQ+BS{D0Z0q#dEXI}1C|Xz>l1EX1wNrR(nAXGL zu2pfKvWa?hD6s;0%E(w+8E~{4h&(@92l<7Yl}B-cKY|28n}hdczu%Carl=CFR5sW zb#bDF(Y57Pr9ko&ZO-HTk0BVUke3PHB=gbRXj3{ZgI_J8J|u;YiqX2a8kG02#=n-+ z1`DTQRhO5m)}IE`+a>RYuc(=o5?uwU+~K(FKQS>q><`ax*iL*JY%cj9w06T#Au(ry z>av_TRlyuN{Q{+Px+)krT+Y6PZ+?XFfVBaYvoC=j5vX~@b~+4luN*n!LLqxaUIuQ< zkuxsDb}1N$xTbgz`uD6=@b6aijDi|-Ev!f$Da!>`sb!H<4Ry?cIX1@f+D z?QsVi@oCK&uDjq_48HS#XRa$}C~OdJW5jG7Bb*^-I&Zg=`Z~0(1q|OwLxbStwK_vl zGI$Im*IGz_7J(!+gPV8Kww<_@yH-rtY!wQq-@ju5_cv3YmT%awf$l=ZHh@~!!?(?} zxBoF4##hOMSmMF&nyH;bj+K|6>;`ei10B)778<;ZdOG?7U~OgKF1jEqPJYmqgGf3& zXwMhDkq!^qau7i*Tfque$RQ-XO1~o0g2@2{u?$OHIZwd4i!7KNKM>Pf>SoE|11mSS zfO7Ca%-K>|4jx$9&w|Op12Jz4CI=71JS>{1dcmWgkez0)R!ZO* zduTH^h(_sE2~Iov4Nb5=q28zPt$V0n3sg*gQv6SP@vd=NFEWrje@9)i(!_4M+)%%v zqM)iV3{m3(IWD2`TU6s0$Z-j=jTX$x_rQW#`KlDGV1*pLuydjUHCZrg(yIzq$iWN2 zND-M3lcN!0Uy2BXm>i1``$EBB!%2OByK0?Qc~|As0gl;O=cSy1uCG0YlS^-E^X@|u z2jLOpIEA<`3bUd6U{gJ%D!~|^AzyoE#KY!XJnYUTL?3}otb_5eK?j>yBElyaduQ;f zNNq42=kkuydS}UF(B=tgw{<$HIZC({Dy@X}fIk(Q!xXOwZS}wJe=1H7eXN7^cUJpX z<%XL-wY+sI-zQDwN)om6@t2v+E3hwvTqs z!hA7K1RU5)RI91Zey28MeP~3HWpUw}%7of$SU#w2(mf4NWj!2=Y&q{gTHN}I;v{-eRv5G(akDnXA8 z6hBFc3zNDrXw>6+YcSPEPF$^oc>N)sRzm&X+$*M*NHPYBpPh_8Si352d>Tx3{)qF_}s`#gyAJlaOWRrmn?Pu8FEI6QHYtgI$aDo!!4LPT@3Ld*n-hAR}Aq%N|WkL z0WDxRU1*_B6oBA|$OWX%6HrV?#1blCWvZaQa-@Ye;%8wUL%cIyj5))VJ~PDo$v~O~ z@Rk8}0VZqelW5{u_VBXlb z2M@%7xA*(Ohco~ZPNCPf)%@!+_yTS_URFl^6Sp>(aX7S50(|l`_Ji8B>Q*W|#%=3> z#cFxZCbnfJSM-V>O$Z);^S5HNf4 zHAkr5*q&+}ZeV?!0!)s>PZU2QyPCDk156Eo7!_(SVq#>N;3SK6rOey4n*0AqeH@X7 zgCydYM=(tK{z${Ryt?{EtPae=USpA54>GPoWIx~sAJTMQ{3D#V=*h4CNL}E-|HB`t zZ!nTU8{ALA&7ajM#v2M^*k#)`A9s|7LB02mQeW3sHE^GQc9cd(S{#A0QBG|~gsQUj zD8X<U!SBsBTwc*8N z315GVHp8zZ9HWU@z#(U3YF;NRByW3RIJYV(_n`Gn^i+c>16`sfqP0!2;hKe9_y{Q+ zr^mww;;wL!hUXop5kVHOjJ0X-<#lrr|Lr*SbdcQ(VQt&$6+hA7Sc{R?CRFdXls##h zfEs|$6b)nvx+(|#YChp78r=&-$QJu4GgY=lwpe{x zW}{?r{%VgO+!@YE$GPVT>aX}z%n7bLK_g$~R8_xVMZd1EcB&Sfy7L6p`7ILxP^|Dh z^D3OhB5xBenw|W=hKqGzMD1{aOM$@@iHfO-b>6OZe9cJ+7f4gX#X5fEB!r7sR}aGK zz$_1zBDo&A2HE9s@edC_WeFF3WigoW?1CJ+#vo2t)>Z&0wc?03%2y|(G22$JeWxIf ztmC&&K^%Ei%jw+jm;XMFpaeCJtmCF%AdVnpi6cj0p4!F{QNtQX*74td5r(dF(faZ> zr>QeP;i9e2<4@DL|6}Zc?@Ig^u>%gN|EJio;tY*QwoHNlC3HX!lwNIUFu{RM+esxm z8KcQMo_Xfg;ba}u#@X9aFWh62P>400$RaSDtmA*2`M-q|RThjkKJF}plMHxphu?3+ z7Oml=HrK|puMQ_FPX|4!Z!n$wpDb^7?!ONws$d8wDA^{Q^ye$iK{!!a(29fSUL8(U zo?u14y{~qv7M$AQJk@34Iej@-m9s5;7V)!eam(2jV%`=^4M2vR`pVol=BQE(ISnnC zdS}RSwxpzL4d9cp@sLKVWJ6ApwX#yhkdt7+tbBDW$|z#+0ZPH}kwpZ>zTib1Ua-I< zhz$bx#@)1X$V2Mz1?AMg$zZYZl4Ipc5nOy~IjtL0gl6eJpzxz#T8pkS0T3mM(8nz?b~qyg*&s4t#~Y>q6c-TY0zn8W0CMAG<(9eSTA% z@t=)!o1jIlR@zF@@NU2UXOrWniaLe=h0Rq$$3?c%;ah``eYD;!^ay`#b?B>o;2Ajo zrG{SRj0zrq5&BBvgD-;lkkMQO^UJN~r~Su1zKZqg@P`+{;Gr+~LhU}D`jQ&|xsNB= z+6#T0`5W}{u$QG<`uN0e|6?DIvXyt6H@YPHIOY-cD+hx(GWgrRq^zX|wH0z{dt}#a)+=iS9mVlx5 zxFKhp1ydaa8#5M6l>!?x7EF}_ufr@sPL%>rx-!-h0+1>OUhY{KRWa~#uO+{Eg@(6L zX@;C2OZeHP@EdXhR4hJ&udSeN^|E0e7~p3M_Eu0|w-BI024(BgY(BLDqPojVHR0P7 zJ1b})U(;J#*Ez(t%6xtgs=$w)cI&P6s)ubFOz_jV71X715OBh`V&D_QIRse2(++io zzdB$R!Vfv^wc($u@W&f-C0^4<>pBqCLJ9GP+y|hmxHSsJ6tv2U zqG}3yTSehmPpr+>T7iBpZ+s2j{@__|y{RQQv>+cpu_N?3p9_bGEwWhgaIdZ)1$s0_ zZ)#Dya|-ks7O)^6NwSm;ij)G2Jblh1&z z>T?`KAEQ8(s?WjiXk#PUvm;?+B1lNrRTb!EUifR*di7+7V}V{~M(_h3ejT2N8}Q`o z@D-~M_~h%RzwYP9e`=@_5eYC2Kv!X%XB$_5cSM^YIhEKQ*XI zUtq7uD6rh=3(~=5NG&K(ThJHGuwW`xU+{^r8TnMIzF@TlQ>prbt8(suj4D}QP$5i5 z?5c97FZj$-S*7X=K1D3&P!%K$;yXut$se?nd)Zh(@oPQs`^UyX6=M5L+BTM7`h&*O zPseia8+4GX5t!gl3jq%pBR><(8p{{lpl`S~`!}inSo6ah;9QRnMhn>$STE(a;ixQp z)My?i(IgMIS5h^j`C^H-=61Je^Q?G%%H1;EUz#%AHTdrq{C5-l3FrQo;KrIh*5GKkAs3?IlkeS%Uwk|QYjZK!Cf)&*D*DyLDb@Jy-4O+JW>LK!R39A1-*hLcFjD}`5J_#4WLMG@zvIJE*(Q+;xR&8Tw0S^}*2Tk|=hC}+a9 zX1SoMvB0c4*?s_gaRQ#&;QUU(Uo`ez9nLCaF6QNi{5atqEMrb?$nUC@3;OgyHhrJh z#2oCCB$wcIi>Ibs8)UG6ZI@sDfFaxE&6hz{+U+aRWmzD^ zuzd&K!kuxuyiQZmbKVQ+EPOpB4@G>iGNhEl^dm|B&`AZUuj>chQ6606?y`&;eGqrP3kyv(ctC#B z34g@|JOF=42tKjr;K9Jw-$s1^`0!sZJ8|WcL1R9?2Zg^wqe#e}oeKI{j^yY!f~GlF z=axm^iAiYVL$6Vwr+h^|V+jF`e~o^lV~XTT%<*Q;6LP#!b2P`U=J7dRr+I9S*J>WK z$MineXUKgI3H^3#zWM*O>rr8^dV>QD~c^2tVhRKIq&_kZvTe5cN3~O_WY}R>F{sko8nU!^R~Z4ZXlr#iQ2F? zEYMpVo%(Z1&3A2=CrUoi$(Ie!#5Y|YpL(68QwEib(&E zyM9dJTuP{GG8Ac`uE|iSfx0Gx(m-94fqvJ4(oolAU|0Y2gVzGP7)<_&D30P=F!u7R zVTT6lnjBN9fx0HcHVxD@88RBEYclW;KO{=1Ych~?VFK!!4CLCDfVw7wtAV;E!#W?; zf1-r?CevCSMSYWDjRxwP3~3G2H5pbglu6fQUancXCi7Cw(lwb=nx$(pFVZYsb1=2P z(gj)|eUlaDYaW9x5id<@mafV1^E6A>WS*;8x+e2%&D=Gmzji3;vb{1+{z&dIn#iL5IoV&zcIV}yxO<7+xj7kkF_F#A$+(+|tXobN%*ld~ z(QWELEP$hh;>Wl8KIZBI7SkQl;94{z4jt$ufASsQyB~MY@^bE;(owxFdgZ#8ip<-f zS3W@B(8LDlEr|5+G|)L@x9`xS`+38k++>oiy>CdJA-jF2G}U)SevEufM(XODDV?m<&%PE%Tcj7CSxFyV5@meUbyF($STg21qe$y__rq8QrZ%Sc~q~FX1p$eqDbZ#;yx< zNOxsttmNDL9{tmQsu^^5WpUN5Fo%-qbMx`yQ^ zpv_u30hNb}OOv}Kpx-gwv!|nNJLd1cKF&33d_`vY&_P_H*wAx0C?7glXcz~H(iXW> z+k#W0bxS$fX2{Aby#5=j@D|dSS9tw5RxyGGc(Ld8-*_p#?_-%snRp$TUZg>>yu$0i zu?lZjM0thRe`6KFoWUeITD){nPUdxH`hJj;d7YV-)#YT|nMZKBXkA@S==ElLgO`(e zy*XYgAFipMD!eTgu?krt%`$I;MXaKzV41mxcGM3`l=ec~p)oUO&}&ce+@66%sn?!p zI@1@8tKVx+G^;_@a9Qyf=d%K%iRqGr_A<|O`Qop~b=Di7y=~H7YpJuXv0{Cwrf^>x#74)Yn!oEbi&Nl|W_^a7u8ifofkOqTY-HzH!1{a!(r(zmx|~ef4a?T%WYu~*aAoIZy5CsUE^VHCv1Fj+F5KEjm>TQ ziOS?;(&#wn89A9WI+n#CqhWWyJG2K3sGGMLS?|!M8kPpCPy3KIG)M4cLgFIt8pM|P zb9v3zmzwk9Z$PZMzm4X4*#D@|XmNx^`cqaF#%J=9uY_LsB|U1YT6X>t?NcJx?hm|I zCXs9R)Xj8xxCeOco<2B2mV2V*@sk$}t>7lgBP0)W)B#4uXR;`vBQ75wU&Uu}d3->G zLoT`YL&Jam?UYuuobNSVAF*3#gho8Clk}`FXX|-uZ^+>S4X0t+s??yB>=E>O4ZXv0 zMi&`P3sTO_MMkTWcx>jn$Q9U6g5^9i$IDV|brj01U;Z2pyUwN}qrKUiz9ZH+t>^lM zM3gAw2(ggRcJLx}z!_Zr@&TuF5F0?FI#VAZ8rAtqdR;L-xmoUtdtEU;xd~+D<)+sY zW99s0u1%GD{V=BATZlogAJSt;&Y<)|ZbIRlL9Y|W%4H2E-|Ki?FjhWjZ@rW0xk#2_ z)>Mo@k*?yfm#KZK9o>}>D7bo0*TyW_CH&lTb^6S9viCH=9cHyu*ZhBVRPjb z(jw?yr9xJEvP@b8%lhcyjK>V`deZHpw^NSp7jcpEmkf{eWW@o_AyGOaCukvps3$n! zdfoEeO7B>Ow^+Aauk<$AOst}Mt?pD*EPd0|<16P{Efa4Uc|(Rb3fVQPn_m{!iO*zV zqKuE^y22X;bobYz9FJlrdj@8(fy=3iu*z-dZBw?IFJH_3WD{+qdkq^Z^)6O^+uNt1 z(W=9#yv~tIc-?JNzBG%M^S%vwMW3hs6G!tF9%oKNqhsF~XY#B*L%!wIZ@P6a^>zW$ z4K)pZQ(0{?{h51N=)Gj7Y*wD&g#AX-BFS{+$(jr<(m=n_(mbW^_w-^=ckqTKuZXRL zwiqwt>=XJJFXQt~=%ZILdL*PFP+w6Von#d*4~r@%Yl1m3F}VfFYAlvM=>vMGsm;Ua zl6g+o21Zj~lMkE$4UB*}YqLD=9B8@p+tAtXa_O;D*vdtu@p6bO=%@IzW4QQp_()Fg zIJ$p4UD=^JpS7gNV;C(wE|E5_R~}a{d*1)5=ZHQ%USuqbd*~|J`!1#aH&;iSRF1g) zo32AP*e#dIZpaR>JQ}C*pRA6itr7X_9le#dUdxYA?NyzqJDWUBd5cj0yB1EHaqW0F zw>pScPSe%NTZuS=OW@s%Cu*)}=IcF&6%u89lohQB{p0rWvSFN%KYmL`Ii-{h=TCUL zk+zp5tW?)Bt?hT^^^{F}_BadQ_O-14HS`+tQgU90ZHiTWcf!wy^rn>a?F+qqPNxsY z9^iD!SRtX0Vk)5x()S`xcs7}>c{<(la_+?{2R;*n&Lm#uytv-i#_Z1O_0ZnetaZbi6x18v~c*PwbS zC+AEqx*I;Tso$#Yfw&tl<8`tLeT-|Lr@4K<`Gxc9lUI&&)+kFSK0)srC*t_AjOFxV zn*%W_?o?@qwT|Fpyo_6ZLLcMWJ8ISUHG08+upqq+S*Dv}J-gSe!tE$ehcbDdC6@pw@Ce$-g!X| z6t7nqOn zGQEuXz%9zF8gI@2HcGgk21RTB`2x=5=tLPG$-1e5Gl`dx4`zzsqqHdc8mzBQdpe4T zWWHgeH&Ly*h3Nat{q7mqdk)Qz#Xp-vd5?L`%Kv3Ql|PAO-mssfzw>9Y0JT@zbI5sA zPdcoWH-~QK*cK$xjWT~Vzqy!I<8xReQN~AE$4&be_1_ygW&R|}>icHzvRd`b!)228 z&+4-DruKTa&58+qjF+)(r{^Z$!TXt2C7ZmtZ7t{Urzg0EWA}T4a(-p3kkH3?8JkMz zW4tWQ3G-)F$vA&j)oZ>Fd~Va;=5uqpzfZI3a<=&I&#L+|(ziOgLoVks)SOk9veD{U zm6da|>PPD+^W3a@I?t-wSoN%`?bVo7*7BB zeBf)QPbyKyrxq{c=1iMp_1_CP?SI?EIG?TMy)DX3P+e+Fj7e6j9vSyDF**-@Kwm|+ zqasjHxcsU1??^Tjyn2f|{TBO2bJcm60 zaT0p;WNF!LbgVk?^ygKJw^3vwCpq8+DljQ)J^!(8qKuD{6@41ke@|c=@_M&s4IOy? z^NO;+ttAnv4sZUW{PhGF|R3-759G@uTqnJV7t{+o;WFHtJb z!8|AO0wa!1l&(W;-29)~pVXlPLii%~WYmz=E z(wdfm&z(kzcX>};v>9br!7J3CJMs&zB}DT`2e2q`b2rEY_1*)q$^OLhpb zKC4sfIa{y8%#Eh8rId(W|6W$Dl5n!Q9@+|t7h2EDW8+5(1L=TSBuZu($}VSw3dd-kSN(WB~zdqLMvoUi(b9I>=gaA zYHI;Kj}2a1#Vv&^DA8{MVS?^}OEUaJ2y|KE;_#rng0GIgG!+k_vy@lJMWSn0k@UJ( zu}KYvlleI)&nd?$KG&JB%u|k4Y|Y8M*jUATIrCm@tYTwM=EcS;JZ}=^x!70*`I0zS zm$Ez;9jo{umkCAV9CqboUTmzQDwl~D8>^@!nRsoFv@%+m6Llvg_u*$Y;jR{+KEV@A z_oCv{$L3^SY<&8doXm@jPY>xDC1bhR`1D>mnHL+Mz9^UW1TQ*1eL+rGt+*>EtJcdp zCmd~bAU8v+sv5HI@z>*P6Emjs+8w^&@tCbox+Ke|qn)KgYkgwIa#;<*TCu&gv>)@= z`ct;n(Q9J8ckT4uk;ZrJ^ssa*ucv*P zSBmMZ?)G%vZ{_Mvn;Y-=(y@nlJ$5f2PWm)p>oU`*4Uh5O2hWlEUi@EkUVl*mJFh?F z-}hdhKZ{7&coz9<@AW;}8-cEQ-s@Lh#pnLo-rno`B!=Ytf)&3|%lWLm(Xv%9?R|kg zlbQQZ;cRMebm;84viBT?i&MAL#l2V!ANib%)9qN}=sJD+^mx6v;T)&*SmUsI+C!Z7 zfMz;6l}8twX%=TCY_*~=Fkxgg)W^x92blPO=d?C~=h^|IWZb4=IAdEh=@ zb8|%QeEy5BvNH#Cl}$6z0X=1tEA7qyfvaqL#hyL;^BC zQ!)+v)P1$?Pj!E;OOwt_+~Z)o8USJnR2kkOjIaLS#oT0y0fd6UvtJG4dm6*Zi4*YL?bfah9D zBR2sh)n;-J$iWx)U&VP&xmWG1L+#9Yu%j{H-*?Tu=r3GzFQ~GrOXWR?UXU-6vUkxU zdTgrUn!5|VY0YmS?3$Y|@cjJCGar{{ew-YI=UuiWnHnnHePJ)=>0@~`rw_aPbs>IB zaj|}1S*wHAQvxJQWlTa=vdrda}#^MPxCJ3a4Y}9Shz42J#5qWFuh)A_VB-Sc{9d0lnEyzyX2zDSDS5h8j3%X$C)k36einV*NW zgopA)Qju5Zi=-qyszteq3_g3HZhUtaqqWm&p|3Cbk*CCe>H9s`0L6jlf5BVopEyfB zG4cPrrRvJv%Uf!Do-?Jg|9|1to;O?k?|8N6Z5;gk>J5tQ)xKE^meS{7I?^fw*2o)H z9qs0R#NO%1&3&^ASxT!Da_MMwg8rK~f9PS87h!7PZj#V{$_B(-Ebm5?K~?W3ikER+ z&Qm-eR~gN_PzJCfD823G zVV*Xui1+@QF8Dnk{v-DC;V&Nd*+8EA|8r`%|37uupLp*du6KM&rp4!KsCMN~{<`To znbw%apY?S%d1Fykp6mH3w42)7dCkxE%j?lWw(3>=wL|(4TbqFQA2dtt z)rHkfjQreFmFO3y$C5O6^RsIE;q+pohr7HsNnfDb0M)P$EraO9$#ospB2irLF+{KB zC|YPjN7;%<3rbk|P0~Yyq`VpjkXid`u^xK-ZCJT9Ps&d4`vq9)eYVpBfcb)c*+R<& z`Bt9Cl@_eSpPu$9ysQD_ayyfjlcW9HdK=9~aUIfH8#>A*Nazb8Th-}Tt+kwYqS5js z{WrHJTAoBl+BE(OKZeK74RO%$x&ICS@F)G1fB5QR3^}(h-F0)phMecT95TAl&Z%!h z#z~#@%L8^+pNqes?pp6$y0ha6sy%*dY0(ci3@J9+G!l1My-Cd1j#_;mXXxoh<5T(8 zJU)1b9<}vVjqw);k|auY@LQ(FXwH;Ed}WQVHZfS6xN?Fvv8}3SUQEujRqiELjNeW2 zOMAY`lGAS@(U0x&8DdM7U2Q}>N9E-=Oy}2=_jK`V_`Lk89Sv3Iw@q7@7YdRexzRe^ zIFj5#tvKB{VqZ5}`&JGw*NqRBHwt2cKfRDdzhGbcuT&22sE7|O+;Y znc^`ti<7N=D@R(+qC6AQa^zWkL4M_k2d=y;S)=95&oAu$Do0w5ydlVMImtu`y&;&N zD53WU^YSZ4d~)UGSEJ?3&ChRtl_M=@cHWuoa3+=LmNTz}Dre(gSB|tCdGyb3IWuTe zFhAa&T-~jta;~jz_fk1mOUs#>U)cRsjCue73%TTl~es4Ot+kw6Ihd{4au_7`Khnbi5gFvGmUotw|es;pIniCMqBvt8e6jl zEa$#{#(w>HeMV`-j~CyD=T+KNr$v9-G$MYyIUD0-WVdNsEG#eMBVWy!xb3394&c;F>;0&E8|(cff0>lnbK6y( zbNTf@;nb^!PcJ$N?(_|xb9!v^H6rI;Hw`iZC-X0+^D_%S^@#%sJc#7HanWncef@no zZ&Tueo1C5O@9TfXtCy}j-eERRUp@B5kr7$%f7Pp3n)EMPEuS89-yBzVcih27SKmj! zI>r#=ci*C49N$?+>(CW_see)ea@({fbkXYghJN&Eoqmm&zErxE_x|#`M2be@_Dtm& zq}s4vzxZqY;=|Wg9{$d<%g!=rb6}Q6;H8DsyeWF#Sv1MhKjz?(WSRUIMCpFnqENL` zY5|2Vg=;9}ue-Y_OrM}slk*J~py#Gx6lN)$K%w28(ovYCmu2%gq`RuMET_+m8z~H4 zLN46TCwC5+F-o<+fDBwkg`hA^VT8gA&0H3RVS3D6PNBL%sdW@aZdPg=g~?l$D!h;i zbh}cWD9l(?01AT-D0Lf!p+}WUa{MZ##*ib3&}yZoQW#i61)?zWfl`}Cnq)Ym)Nds4 z)1rVj@9E zC8T#I6@z9ff_?$mcoe?+ILZnG0&zmr!X~#3QA#MF4?6pLt&QX^C*MD%gHePC`~g8Q^^7q zq%ivsT`LNM^Qq(%h8`_YQ3|ccsfH+wK2f0NQD{F&HO0J;YKp?ta|LQQh2a+qRCn4) zWWQXXA{4r-C>@3BAEeLW#samO!mRm0f!e_eA5uZ+<}UIz6@_9R5LP zMxnch8V!X>!>3XdW^4J>T9()GsVx)+5B4elIFgeyt3DLEjeTk)h0()&D$4RBd}=m@ z$re7ffI>5MG#Q{j{Ox_}HwuG6p9)?{8J_4zt5kXx+Ig1QEW+!HwD7R(`cO%Ayw>#(PUe3^(%J$P^gk0u=Q zAi^PcB@Vf-aTsbL@^EwLb(GK!N|-?y=?Zy7!YF+*)b{T2i5(jKm=!HYC@GQcm5{7q5$YTn{QymVI1eq}sa@XO6{t@6y zCFDM@4cC>>rBzhS?iMk~eV;kpP{PbdBF`#e9@IGAZX>KZaY)mz{h37Y7{Cg_4iZK) zBInVO<@0dnk0Io-faUI)68fizUa$=I#!DC}bvl$8$8-oBAvF|1V~>J)qGCIt)e`Tn zT6RmB@kfC#dZlyAbmOSwRV#_$n+sNq&=wT_=Y^q|TpAbg;qJ~G(~SqZMd>Dl_4($5 zLv@OTZZ8Sbr%4zsM*JD{T8l=QCP(}GLBgr%UuJMk_Mf%votSZJah+^OMT1?ZWy9Vu z0tLRzan6lz8WVhOw`DutG&&d5PoAWV!Ym)s-JN6JGOqTedOCC7GQMtU6;r|#W#~J; z?9q$BOW0Eg( zkEs{*-}-3L6h^VDoJAXqhZ>~TFeRy_6&AW*ITyY|ccjUk&K>USYdrrsQ)xJ=rvrdP1jlRD0ch2A5HF`Bje@|9bMj!26&Wd-9 zc0PBP^ToSHH=q53bHqmDI-m8UbH_%byD#;lvv#8~!k78cIr=^0?Apnn*uJyj#=_># z?Dvc#1|@%GV`+VK^)Y4n*t|X_OZDG$R7U@C>X)WN$0@7XdE>%Ys%gy%l|7xKvvQ32 zoL}EFy0^`gleX_hwV~NKm2O{HXw6_HTOZw-{CE0JpEF_;l{RTRcWg2y`cf56(fh_p z4cx~#I{7poQ_nbq-lwy*7waU;_-H@x-2J}MxhSA@V*_~ogEvKi^Q6;Hm zE8q3e(U)E}PCd|K^!1mH8#hkP>|I!xdW7TCOPpq#jmdm%=WRAlY+yaBrOWt8)<4~B zT;$8Fa8CQcXx%*d5=&hj8t48Gj9K07*R*t<*51I!>?S_i zTeSQ$K3ZSs<92=A$;ad_=ZX)F>km!-%#{6|kM86`I;N%oz(QOj+sx#!sN4jOw&>MhF-0bZRjEmyiz^ZhU_h8wdC`BOuw)!u!Y`V z`%*7DLq9g|4rErc*nN|aSyvz5;bU@>mTz+Ed}6dM%4o{I?{xdbC~ltGto8IU^@09d zA5$MXcYb2@@?}4C-ulEit+~C096@LFTFN;S>JKjj425Zyi`5ZY1HN8Z@7N!8JCo( zFGf(N-?F(BA5|vnw8|LGkFmaEa)02M3?G&CBmbS=t&hL5#N9&<+>PP}+0t4>$*FwI z*iI^AoO*QXE~YdcWel3rnfvg4ok>H-Wbbkser5!Ywr6WSI*Q)=TJK}h%jy`KaEE?o zyy|o3IEQaFS`?)m(l2x!=hUr6kD@G-a_2gewi?ZvXYOIL?q!YaJU%8L;G_GXliF&u zX>UEm@o73rUcYtaGR2OkGI30yJzvK^=KQwR7+REhjAh9M&hXEvx1|;`Wu9UUd$DuR z=f+vbSZO9}wbuIw|DAn}|F+ig-$_0e+Uu7!*k&A5(8%7*n3-Igh12MJme2VvX>@Zg z{=z7#n~JkIRbJb<_6y@_BXvh@C-9}wzFBG^%abWSW)^cIzJBX_IHMmmMlM_Nr4cWv zon1k4>I4rKwsx+mG-lP#uGZE`aFo+~My*=Tu~o)^2I)80NcuB<-0GB88NC}ME4BIU zd`x}gyj^AV^Vz>U&9)nNG_%U1r+Nq6vv^MLMTbyXtxS~<2ye=ER zQy(kpa&f+0Vw~v&zccRfSqq#uzcVH_&o1O>JH^NJ-}#t*jgOhvor}IVIu+UP>G=1Z zitmkeMXC3RROU(NvVR&SE$oG~dqL06>(1d;_|7@hGD$|Q>nZ2ee;TJ3rJiDIJdx;?YL~#kH*Qh&D1%;V5%SxuzZ<B1+x-%~#_&&7BFhT1mVEwuMbK9|i)gMd1^0_E_O#=pKzT2z3zd3yy;4g45uI;0*W; zFx|810=A+>Xk0*7Gu@|mhJfF7@fnQq6u=LIz1!5y;4p4O52NqXY|y(c9SG)kWo*v^ zd$+64g7s}H<*$B$z`K7vDJ%xP``GDV?|$|}u%g>c&Y%(PCglQnceiJOy}R2PUOeT) z`fG`~M*Zi|a|#Q7fgnTz=Ht#51q*xuI0>Es&Vru-t6`FU6W9-KNP7Abg8PA!!{|AQ zGn@fI3JPn%Suh)71BzZVau5cGz%g(H{3D z!{AD=1wM*GHjo030%yVZg9GP@y%)h@@Ymp^2|+yy*`N#V2=t2TEft2~K`6N3 z7r}vuB-jiNfwSN!xQGhI8K%J(fc>K-{Q__pyoZ_lUlfA#=v4+ANP<^`)8HO-CLHgA z=YzB0!>QmLukgy^OmF}^791KQ1zJpOa)KxXzd#`k?oMaI14{c88c_W zM}qxhC4MN_0?z^`!LN^|{?7(n2r8kV#)*LwsN@{)2ZzBy@EzbNcq2Fo&VpU=p_ihD zt`z${FEvFFfWU%61pF1)0uP~@&@}*F3C@BGE<=H@k_?Un^Jfq`4|N^b0zYO#kc410 zI1Sznj*J%rT`rdlZ15m(8hjNv3!V*DS4;Y@z+tf2o30(7Q51r?;3W8Ua2otI*ae5^ z(sBAM_-=6M8p-e@a1`8@E`_c^VN(rd9wp{R7Y2Wb_$c^$uni7T)$2wIzJZuC z2wgAsmVo(-6JLTK!AZ?@{ZF8(<^=8pQMdxkpQbp$LU8CN;dS6JxHVPvQKaa-(C)Vv zU$z%d(rk%7<*)9CATm)hcm-^MKLC4g&b>RD(Cwnn*P2ft3hqvqg4u6L{A6OTq4Z?o zXAqwy*7N@w2m(_?;X`nAmhg|@R^aOz&+lfnM`ga?Du4-1b0M;^ia z@7+{p=ZiwAXW&ucSHaP=@WFJgxd2J)u7m!&!fn7dcqTZyQR1HfEAu@OyaquApEkY(r&{9W>)#}U z2;I+ffd_*_rwBg((^{{s-6vx2DF<@utGJkx38)z?;GR)sQpnPQ8H>M2m%! zVE$^z@xOpW{e}D9D2*;~j_??8>SE!^!lrT|SWN=XATUZ4j-l?w906Yrw!x1O>uv{r zLo>B<@b};hxGwc3wwH>C{c)P<`ez}ighF7nDD=5m5`@7kz$tutX?}~uXTUDlPoF)x zMlQTn;zQt1!BOxfx6uihq?v?ZIt%i6{$Bi&W-F(^1)M_q0_y+V&-uG67oZt2pK$Vm;4HWm)i%fbua*LhH>v%x zAPB(>D1^Zoa1`9jk^qt&7Homn z67v}*!F}h7z6*YknBz0xBkzH|o5cQNaO5UBf6lNi-8gVJv7zt;I1TPXHxeB0f>(q6 z6UAWHc@iH4-wY0czX2z~6YdxN)I>UeF2Fw_aG{WRKoqjzm0&-4HDUcT5(_*B z@n#Z&Hz5e#CI)tZL*Vvw@5YxP3LXPagC7RF;LTwF?PBkUM`r6D-;Q8CENl*q1n1{_5j`4OB1 zw|q?WQ{ZXf40sWkmpie&_rW1c_%~*XQ#J%`9*05jrC=BQBsdGM0{ctFVEYA~7_txr08av^!5hFXxXmKb&w{T6`>`rzIoJm80;j-B&!_9p1;{|q=qX`; zOwQBE|~U;8CVAGjA|b2|uv_lm+ua2RZZQ{XjV7yJh}3-121WZ=I~?A-_s zffs`#CIs6du)(cYih(qE6gUfB4Gzqc488;h!GW}-4};GIN5Bt*O&fyxt0X}R+zqVm zmkh222f)t~>v02I1&)B*z9RNA;LC_vUp*l9Qo^PRK+s_|41(tqa~p^}C<)rE5w^fl zunqnZoC4qQ4-^2r3hYmcy%S#Lc#~cfLabSYGW$5 zssO8pgb#aN^n>7Mm`&0QL(udMseuUiWUvLE15SbiZ;E~zypWh{Ec38r*lV4zdPMjh zupb%hOs~p_&ZDAYyFgOh!v>q9P*Mrr3$*|Owct7|RZ~$De0rNjE$mS{= zyFn6I;6K1A@Pc>bj9u_=;4HZGU5WS0B1~0#qu2{RCiW}9VemH_>H6z4hG5crC;+(L zCgBwLa&QJ*3HCpZ4BkhE;KrMU!{9VH0{+#6APPbE4^RN`17H{2`9q0U3nat$iMd+^ zz$bhp90EJUe1d849&iS1-mpa!{7;C%Pr*U(z>g)K*T(ZDS`AiD3itR#;)CFO!69() zQ=|u%fq9KR*)!Fr5M-b*I3o$vLSzUIfPwhf-R!S76gCmQDz0YPg*!#qi278}aT(I}uFR(AN(CS1g`fvE&=!$aF&?IA2keu^inZsf&I@3KMM|m zv*0ke-8RV}0=@{Gd_mGb0d~P3gM%+({%`Vy7~l;ST%dEoftQ8v0Y|`_iFK=ACGm~F zL;=7C-$NUsr|0k&TgeiEDkSAx}AiEmda=>y;!h`E3v z@FK)Vz#G6}^K~)sBLo)s%qlUM0)Gh(ydnDaw@Z8w+#ehUmw|2Y6W|nh9oTdsVE6Rg zEwbQYVE>zv;jQ2xI0+7e8|{$v7Pt>M3BD4n)``74giRHI;3X(T!Iys{RhR`oM9c+r z-x33#fz{i>t-eK#fJcLE@H5~f_y^6@|6B-K?1X{!Vz3w-2Ag0D{0=w^{uZoUNq=%y z?D@eJ;4t`WX6}D31ns|*1R3x};J^kk_!>9}KK6UjkAkOwZSafWB)G{xML!K5NUWd# zT?ocPAp?F4tlp6Vd;<1^kK82&gW#*cVem?D8hrQ-<1rOlY;Ko;GIZd zfjj&t29n@$U>Cd;%p0+|TOaw8=v&~6z)A4^KhgDXK$>X?4%#i81)mJ|zb6Jqfdk;V z;1Kvda0VRwS?sAzl71FA2p(kqA_@@*J_6g|Q+`DO!K=Yp@POYWKJdO|@BugsKKFNt zx4_?mQ($x2AEMwwVC)gjf?om$HcJL2RIyxRVenhvC^%Fg@k#LC!LAqYlX&%kwr8pe z2m&Hdzk|czQw>QF0h{0`cr(}r4=fb@6nG9e4OX=zKC79o|40bZAIcfd0rTcPZbU9P z{E=|u+G4;0_X8)vi@^5BqJMZD(NBY)24|Qle-$Vah2STWU>Z0K-VM%xFRLs1{!c}J z2RI0xbdbb{!C!-;;9m74K1FQu8GZpl1`3zfM+O(_)0Q7thvO8 z!Slfu_!n>rTzZ7)XTWt@Xf~Ci^s?vk(-umjr=t z#Q^_uHphp---0dh1;MK6nN=1#aF|;$3hlI18?09$%pEc>IQB&=wp7d+}j#?Gr>l3Z6-1{?y9KS>fq!HrHvhTsZt3f#N9#Jk|zz!~r|a8}q< z&3j0KP;Du|B5)LZc28soeh-`mKXHo0`|IEYz#(wwUJ@S#A9|`V@2%I*|0kX%f+RNJ zegSqHh(WWr#4BvTZ59#^g6D%n*tmN_vBXEf{{Sb!!P6x^O`G}k{NLaV5%BJQz64i- zd6z%)qhJervNK>CJgpB5f`^m{hYywXZ-6auNnhv_^Z29Qhd_}#0p{z^6onvI^@BmM z17`OFtbbyEi4Qato(s0XKZBFt2?IpmZAw39zy@j$6hWw&7#IZ(gTDYrz>@}veiGbt zFbZ(Eq^|%6!Nw4YkAj~BTZfZ}0xm%RvqT{ch1y}^EcijNzq#l)8HxK2Rd9(v zxljyRZG>+fDV#c1xbPz340s0Ek8SOBE|&N}N6{|>hrqQ*!9IATW}5#~5G;d&3qB+w z39`qbfZ#A(B3wTj2EiRJ5%zZx{W;(ecn{bDTbGhP_rEj*b;lq>a2ePi6od6HlX!OK z!8JA)oB?kKhq_99&&x$W0-g`H!ELX={I8Ce1Xq)QClfz-D>wkYax4sjzXxZ)7mkzo zEO-Stc!JnJ`$~xqfiqWP{LwZ7akc3C!A-A0hTtSP z0&agT)jywc27;%r6;>yT!DFMs0q{bw4L<%liD$nmd`a#Dhffmz0~`V0`Zv+Hz*!T5 zBm{l07lkzV3UC%20|!o)44wmr!9Reb-~kiFUJ_gZPJ_+YNx-jMTnN5`LKa+ngBS>Q zmkb{#X8kbu_#1IX;JL&cZ-ZOkB=K4B8nC~Iwr8r6iJ}k^f!YL)g2&yA48RB7BAf=7 zfivI_!CCNyw~Btar<}k}a6~ip|66ZE22cpxE@zMgj|Q{P9KObnfTO*HSAcEsdzxun z0sn@0kK0T_jdMId|DOUu775NH){XL1$>2$_I!*YW;2^j+8gUrB2pskF!8W*;g&HKL zD5bnT8W|`ogF>*kWa#aBvB1Zdih&e(5;zU^HY#Pn-bN)A5_{er5`PHuzqg4b2nBBw zNd)X|%dx@Uwwx3=w+#oJ+lEst8NPx72EhKwasts}QxtB2API%{z%DpAMG|De8^OWT zC4JYa5+4RX3bw&U8EOpd?IB5<5L^re{~2QNF>n}Mdzu)qz!Sj1KBB)J90FfAUGyX1 z4PXm=Voc)ABm@sZkOsGii$WGW4;(0w44alqe6X+ZRB#x)3mgGon-F~q?4O~T=6?vT z6M@QrKOp9T#5z+lIAf+5NQ0jz=J-@UiEnua3e;ct4saO!GdK#4-^u#a|7-|8)&lCc z;6b(+biu2MIm0aYxC#_#fMhrioCVjLCGmlQ5`Pmo1pb1V`(FftVRykGcmvo4_nj^A zY7jC6N5J*wNW2A}3{HZx;57K+yD|S;gT-JK33%X9Lxg)f!eQ`}VD=8iY6s7i_~2Q> zqroBYbHrR@VQ`CkL_YlzF6W_gzWSD-)@Nr{45}T2^<2S^LL4lfGfcn@U2T>aI~a1o)r#&XMt_- zG0#anJMZK1N6mvEe2EySzYH0I?*?1oX3Hf$3BDDa2JZxC!DY{je)v+c{|DH*6!ZU0 zFTfxamU?`dBslU#iFd(|fz{;_U$jEv1K@e!FgW;<#7DvRfRmS-V!-#ZD5Rk<1e^h< z!2T;lzi_4K2f_WpA@D|U6kMJb{Uo@-Dq+`zU={>faKS605Ev^NM!{k5`(O*)W;HSZ z&j7pNH^3Qi%Qd2Js&SIR9S{V-8^J;F*Wf6)@E>9z1wIm-1)l^CUMcp^0!P7D6Vu#a zs_5OKPzDA6cHz0;0QecO1%4Hr0)OJ^e=X_%3AVupzbXZe?vVJ_nhR;{-?8kK;=&>I z%p@&c;_lFl{x_sQ*!3&(ap06A+y@*0Ujz={CGiu%!CQsz1oKS8_LATbt?go7B1~H$ zZx_L9P>8?)t>@7NN_{5r^jTeV1O@I(R=B_}_E~$%*(+kT4TZ7fUYywko~!EJ1~0z=J*h? z$qMWam<8uUf!zf&|IOnTl3^J*3BC`U#wC0joQg^MH^A(_nC*40B?V%?#>^$PXek62 zfc*=z;9@AG49W00F#8?m`1N4+Kg_({i?1Wxw>HkWmhc!b`zdDqsUFiJ5$1Wd>H2d4 zB4r|20tNpx;k95FoB^k&OZ;wd=t#++Q5~@tKn)xRjvg!V{lV#vB>h+u0*jV3a*3va z*(EgdV$VQ(G4K|c9V>Hury|La9WFD+!AV?_$HD9yo8wd9C>pi7LJKVAxu0dHRSgU1 z34>Ola)M3ZbaTnza~KHUBJn?Z@igJHeyzHa-g8&mSTi+3=yw3Kt7+1wt=LH5`L!Jc zg*1&QY;ZI}pzn3OP;-s0Mn8!dYO? zaqeU!P^U=ze8hVWbzet3yOib(j;kj%;5pho+vA=Re}iV~e%*-qR_GoG*f%vBcm)aI znOE&bJo~8T__6in4A`eN^Bm>|^h&iuq2{M_yhShgq{dvZ=h$}#*uRw*9+82A4we#o zo_^bdgC{#jpHtY`O!t?J9@lbySQK6f&Vt_uXTUo>{o$g2I2Dq68#~YDd`rNQbA)dN zvy*L(e@@s`>97dadj`Oj;1CQHG?Wb3i#Ho+4h{_vJ_+mxpAAld$AhEbX_`%H8!ev+%*?|4D9bH{36)%h5QcK^NCyq_IxAr?@)1Xvm=uJV9nH9S_`*l<~btSNd#v= zfqb>lJvh}$_){?Z#OE5?363JeJzy954G+N_Vb75}h+ZV%YZ$&) zcq~|f=YZW~#E7hRcoV-ac$rNzV5`Nf(AcYZZB{+Z)@>7pHN-N(34k5lJjs5zP zA-*@5o$hl1M{A}XjweZmlM(MC-b{J|j9@Fl8I<@la0DebXma5U6$;Q6oJ9PY;7E5V zz&LP_M?^{%_qda0Q#}a*{~Q1-yyY=U_$@dk36#I76d(&e0USI|(w_(BpBZ3#7MOpQ zfcXh#Y7^Yd{(U;>rNAu5uJqPoLA0_dg zqxs=S=|Pb0%6^v&Y$(_xr476Y_B_si0rou4`&+``MWWvo964Y3Y_R8%ej=DX({mfU zzojV#JP-A*mtd|Gs8&GY`R6G(K~J#fxqc$p^I*Rm?0K^P8SHtq@77A}@o%oMy{kzYp_KbvB7pU;qfK#T;E>-_FUjE00%D-eX}mju$;j2 zi9Z~iqW4H_umbG)$Y13#y{O{&U0}~={<5}W55Du&g~#9ohRL+ixt%av>6_}r_9F0n z>VFFMeCt1REaLG#>4px%p0EApbjzU6xUOW-g>EUBJ>UDaj{|R!0w2;@SbXu*^^bRg+ZFtf7EZB4I|HMfW?>YG|J{kJ>eDfmMbMil=J2IFe1)L4`oc{0e;>Xj20$;=K)Ec?U z_(xoruLpa-2JoC0Pc^~uKY_hp2e`7Qr1yR$;8k#Fwde;sY2=L=&gT~w V4)&!_n11}I!ez&gsx{!t{|_Cr^d|rS diff --git a/rtl/obj_dir/VVortex.cpp b/rtl/obj_dir/VVortex.cpp index 9d9c8db9..76ae0b84 100644 --- a/rtl/obj_dir/VVortex.cpp +++ b/rtl/obj_dir/VVortex.cpp @@ -99,17 +99,18 @@ void VVortex::_initial__TOP__1(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC = 0U; vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid[1U] = 0U; vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid[0U] = 1U; - // INITIAL at VX_context.v:68 + // INITIAL at VX_context.v:71 vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall = 0U; - // INITIAL at VX_m_w_reg.v:39 + // INITIAL at VX_m_w_reg.v:41 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd = 0U; vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb = 0U; vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next = 0U; + vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num = 0U; // INITIAL at VX_csr_handler.v:27 vlTOPp->Vortex__DOT__vx_csr_handler__DOT__cycle = VL_ULL(0); vlTOPp->Vortex__DOT__vx_csr_handler__DOT__instret = VL_ULL(0); vlTOPp->Vortex__DOT__vx_csr_handler__DOT__decode_csr_address = 0U; - // INITIAL at VX_e_m_reg.v:77 + // INITIAL at VX_e_m_reg.v:79 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next = 0U; @@ -123,6 +124,7 @@ void VVortex::_initial__TOP__1(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest = 0U; + vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__a_reg_data[0U] = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data[0U] = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid[0U] = 0U; @@ -131,7 +133,7 @@ void VVortex::_initial__TOP__1(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data[1U] = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid[1U] = 0U; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result[1U] = 0U; - // INITIAL at VX_d_e_reg.v:83 + // INITIAL at VX_d_e_reg.v:87 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data[0U] = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[0U] = 0U; @@ -158,6 +160,10 @@ void VVortex::_initial__TOP__1(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal_offset = 0U; + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num = 0U; + // INITIAL at VX_fetch.v:35 + vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num = 0U; + vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_state = 0U; } void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { @@ -316,7 +322,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0x14U) : 0x55U)); - // ALWAYS at VX_decode.v:397 + // ALWAYS at VX_decode.v:404 vlTOPp->__Vtableidx1 = (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)); vlTOPp->Vortex__DOT__vx_decode__DOT__mul_alu = @@ -434,15 +440,20 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data [0U]; vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd - = ((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))); + = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num))); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd - = ((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))); + = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num))); vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result[1U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data [1U]; @@ -561,7 +572,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { [1U]; vlTOPp->Vortex__DOT__m_w_mem_result[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_mem_result [0U]; - // ALWAYS at VX_decode.v:328 + // ALWAYS at VX_decode.v:335 vlTOPp->Vortex__DOT__decode_itype_immed = ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction) ? ( @@ -701,7 +712,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { | (1U != (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall))) & (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_clone)); - // ALWAYS at VX_decode.v:280 + // ALWAYS at VX_decode.v:287 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -789,7 +800,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { } else { vlTOPp->Vortex__DOT__decode_jal_offset = 0xdeadbeefU; } - // ALWAYS at VX_decode.v:339 + // ALWAYS at VX_decode.v:346 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -875,18 +886,23 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__d_e_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data [0U]; vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd - = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd))); - vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd - = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)))) & (0U + = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))); + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))); + vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd + = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))); vlTOPp->Vortex__DOT__memory_mem_result[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result [1U]; vlTOPp->Vortex__DOT__memory_mem_result[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result @@ -1117,11 +1133,13 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data[0U] = vlTOPp->Vortex__DOT__d_e_b_reg_data[0U]; vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd - = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)))) & (0U - != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) + = (((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) + & ((IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))) & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd))) & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd))); vlTOPp->Vortex__DOT__forwarding_fwd_stall = ((((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd) @@ -1133,13 +1151,15 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { & (2U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb)))); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_wb_fwd - = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)))) & (0U - != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd))); + = (((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd))) + & ((IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))); vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_mem_result[1U] = vlTOPp->Vortex__DOT__memory_mem_result[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_mem_result[0U] @@ -1160,7 +1180,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid[0U] = vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid [0U]; - // ALWAYS at VX_decode.v:280 + // ALWAYS at VX_decode.v:287 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -1225,7 +1245,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { } else { vlTOPp->Vortex__DOT__decode_jal = 0U; } - // ALWAYS at VX_decode.v:339 + // ALWAYS at VX_decode.v:346 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -2011,6 +2031,83 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Variables // Begin mtask footprint all: + VL_SIG8(__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0,0,0); + VL_SIG8(__Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v2,0,0); + VL_SIG8(__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2,0,0); + VL_SIG8(__Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v3,0,0); + // Body + vlTOPp->__Vdly__Vortex__DOT__vx_fetch__DOT__warp_num + = vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num; + __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0 = 0U; + __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 = 0U; + // ALWAYS at VX_fetch.v:40 + vlTOPp->__Vdly__Vortex__DOT__vx_fetch__DOT__warp_num + = (3U & (((IData)(vlTOPp->reset) | ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_state))) + ? 0U : ((IData)(1U) + (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num)))); + // ALWAYS at VX_warp.v:62 + vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC + = ((IData)(vlTOPp->reset) ? 0U : ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall) + ? vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC + : ((IData)(4U) + + vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC))); + // ALWAYS at VX_f_d_reg.v:36 + if (vlTOPp->reset) { + __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0 = 1U; + } else { + if ((1U & (~ ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall) + | (IData)(vlTOPp->Vortex__DOT__decode_clone_stall))))) { + __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 + = vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid + [1U]; + __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 = 1U; + __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v3 + = vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid + [0U]; + } + } + // ALWAYSPOST at VX_f_d_reg.v:42 + if (__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0) { + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[0U] = 0U; + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[1U] = 0U; + } + if (__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2) { + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[1U] + = __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v2; + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[0U] + = __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v3; + } + vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid[1U] + = vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid[0U] + = vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid + [0U]; + vlTOPp->Vortex__DOT__f_d_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid + [1U]; + vlTOPp->Vortex__DOT__f_d_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid + [0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid[1U] + = vlTOPp->Vortex__DOT__f_d_valid[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid[0U] + = vlTOPp->Vortex__DOT__f_d_valid[0U]; + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid[1U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid[0U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid + [0U]; + vlTOPp->Vortex__DOT__decode_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid + [1U]; + vlTOPp->Vortex__DOT__decode_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid + [0U]; +} + +VL_INLINE_OPT void VVortex::_sequent__TOP__4(VVortex__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__4\n"); ); + VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; + // Variables + // Begin mtask footprint all: VL_SIG8(__Vdly__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall,5,0); VL_SIG8(__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0,4,0); VL_SIG8(__Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0,0,0); @@ -2079,28 +2176,28 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) __Vdlyvset__Vortex__DOT__vx_csr_handler__DOT__csr__v0 = 0U; __Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers__v0 = 0U; __Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers__v1 = 0U; - // ALWAYS at VX_m_w_reg.v:60 + // ALWAYS at VX_m_w_reg.v:63 __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__valid__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid [1U]; __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__valid__v1 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid [0U]; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__b_reg_data__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data [1U]; __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__b_reg_data__v1 = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data [0U]; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__valid__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid [1U]; __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__valid__v1 = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid [0U]; - // ALWAYS at VX_context.v:69 + // ALWAYS at VX_context.v:72 if (((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_clone) & (0U == (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall)))) { __Vdly__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall = 0xaU; @@ -2115,21 +2212,21 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) } } } - // ALWAYS at VX_m_w_reg.v:60 + // ALWAYS at VX_m_w_reg.v:63 __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_alu_result [1U]; __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v1 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_alu_result [0U]; - // ALWAYS at VX_m_w_reg.v:60 + // ALWAYS at VX_m_w_reg.v:63 __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__mem_result__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_mem_result [1U]; __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__mem_result__v1 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_mem_result [0U]; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__upper_immed = (0xfffffU & ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : ((0x37U == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) @@ -2153,25 +2250,25 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT__vx_csr_handler__DOT__instret = (VL_ULL(1) + vlTOPp->Vortex__DOT__vx_csr_handler__DOT__instret); } - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src = (1U & ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : (1U & (((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_itype) | (0x23U == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction))) ? 1U : 0U)))); - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__alu_result__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_alu_result [1U]; __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__alu_result__v1 = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_alu_result [0U]; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__branch_type; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__valid__v0 = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid_z @@ -2182,36 +2279,24 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid_z [0U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid [0U]); - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__mem_read; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_write = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__mem_write; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest = (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal_offset); - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed; - // ALWAYS at VX_m_w_reg.v:60 + // ALWAYS at VX_m_w_reg.v:63 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next; - // ALWAYS at VX_register_file.v:39 - if ((((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)) - & (0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))) - & vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_valid - [0U])) { - __Vdlyvval__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0 - = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_write_data - [0U]; - __Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0 = 1U; - __Vdlyvdim0__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0 - = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd; - } - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__a_reg_data__v0 = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z @@ -2222,6 +2307,18 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z [0U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data [0U]); + // ALWAYS at VX_register_file.v:40 + if (((((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)) + & (0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))) + & vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_valid + [0U]) & (0U == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num)))) { + __Vdlyvval__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0 + = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_write_data + [0U]; + __Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0 = 1U; + __Vdlyvdim0__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0 + = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd; + } // ALWAYS at VX_csr_handler.v:43 if (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__is_csr) { __Vdlyvval__Vortex__DOT__vx_csr_handler__DOT__csr__v0 @@ -2230,11 +2327,23 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) __Vdlyvdim0__Vortex__DOT__vx_csr_handler__DOT__csr__v0 = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__csr_address; } - // ALWAYS at VX_register_file_slave.v:44 - if (((((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)) - & (0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))) - & vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_valid - [1U]) & (~ (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_clone)))) { + // ALWAYS at VX_d_e_reg.v:145 + __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v0 + = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) + ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z + [1U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data + [1U]); + __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v1 + = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) + ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z + [0U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data + [0U]); + // ALWAYS at VX_register_file_slave.v:45 + if ((((((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)) + & (0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))) + & vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_valid + [1U]) & (~ (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_clone))) + & (0U == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num)))) { __Vdlyvval__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers__v0 = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_write_data [1U]; @@ -2344,68 +2453,62 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) [0U]; } } - // ALWAYS at VX_d_e_reg.v:139 - __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v0 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z - [1U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data - [1U]); - __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v1 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z - [0U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data - [0U]); - // ALWAYSPOST at VX_m_w_reg.v:69 + // ALWAYSPOST at VX_m_w_reg.v:72 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__valid[1U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__valid__v0; vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__valid[0U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__valid__v1; - // ALWAYSPOST at VX_e_m_reg.v:137 + // ALWAYSPOST at VX_e_m_reg.v:139 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data[1U] = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__b_reg_data__v0; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data[0U] = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__b_reg_data__v1; - // ALWAYSPOST at VX_e_m_reg.v:146 + // ALWAYSPOST at VX_e_m_reg.v:148 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid[1U] = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__valid__v0; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid[0U] = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__valid__v1; - // ALWAYSPOST at VX_m_w_reg.v:62 + // ALWAYSPOST at VX_m_w_reg.v:65 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result[1U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v0; vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result[0U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v1; - // ALWAYSPOST at VX_m_w_reg.v:63 + // ALWAYSPOST at VX_m_w_reg.v:66 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__mem_result[1U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__mem_result__v0; vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__mem_result[0U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__mem_result__v1; - // ALWAYSPOST at VX_e_m_reg.v:128 + // ALWAYSPOST at VX_e_m_reg.v:130 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result[1U] = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__alu_result__v0; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result[0U] = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__alu_result__v1; - // ALWAYSPOST at VX_d_e_reg.v:161 + // ALWAYSPOST at VX_d_e_reg.v:167 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid[1U] = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__valid__v0; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid[0U] = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__valid__v1; - // ALWAYSPOST at VX_register_file.v:42 - if (__Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0) { - vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers[__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0] - = __Vdlyvval__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0; - } - // ALWAYSPOST at VX_d_e_reg.v:144 + // ALWAYSPOST at VX_d_e_reg.v:150 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data[1U] = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__a_reg_data__v0; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data[0U] = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__a_reg_data__v1; + // ALWAYSPOST at VX_register_file.v:43 + if (__Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0) { + vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers[__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0] + = __Vdlyvval__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers__v0; + } // ALWAYSPOST at VX_csr_handler.v:45 if (__Vdlyvset__Vortex__DOT__vx_csr_handler__DOT__csr__v0) { vlTOPp->Vortex__DOT__vx_csr_handler__DOT__csr[__Vdlyvdim0__Vortex__DOT__vx_csr_handler__DOT__csr__v0] = __Vdlyvval__Vortex__DOT__vx_csr_handler__DOT__csr__v0; } - // ALWAYSPOST at VX_register_file_slave.v:47 + // ALWAYSPOST at VX_d_e_reg.v:151 + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[1U] + = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v0; + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[0U] + = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v1; + // ALWAYSPOST at VX_register_file_slave.v:48 if (__Vdlyvset__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers__v0) { vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers[__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers__v0] = __Vdlyvval__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers__v0; @@ -2478,11 +2581,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) } vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall = __Vdly__Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall; - // ALWAYSPOST at VX_d_e_reg.v:145 - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[1U] - = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v0; - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[0U] - = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v1; vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_valid[1U] = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__valid [1U]; @@ -2519,10 +2617,10 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result[0U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result [0U]; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal = ((~ (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling)) & (IData)(vlTOPp->Vortex__DOT__decode_jal)); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__branch_type = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : (IData)(vlTOPp->Vortex__DOT__decode_branch_type)); @@ -2533,28 +2631,28 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid [0U]; vlTOPp->out_cache_driver_in_mem_read = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__mem_read = (7U & ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 7U : ((3U == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) ? (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU) : 7U))); vlTOPp->out_cache_driver_in_mem_write = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_write; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__mem_write = (7U & ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 7U : ((0x23U == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) ? (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU) : 7U))); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal_offset = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : vlTOPp->Vortex__DOT__decode_jal_offset); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0xdeadbeefU : vlTOPp->Vortex__DOT__decode_itype_immed); @@ -2566,8 +2664,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next; vlTOPp->Vortex__DOT__vx_forwarding__DOT__use_writeback_PC_next[1U] = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out; + vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data[1U] + = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data[0U] + = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data + [0U]; vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_regs[0x1fU] = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers [0x1fU]; @@ -2664,18 +2768,12 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_regs[0U] = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data[1U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data[0U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data - [0U]; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__csr_address = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__csr_address; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__is_csr = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__is_csr; - // ALWAYS at VX_e_m_reg.v:126 + // ALWAYS at VX_e_m_reg.v:128 vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__csr_result = ((0xdU == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__csr_mask @@ -2686,16 +2784,19 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) ? (vlTOPp->Vortex__DOT__csr_decode_csr_data & ((IData)(0xffffffffU) - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__csr_mask)) : 0xdeadbeefU))); - // ALWAYS at VX_m_w_reg.v:60 - vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd; - // ALWAYS at VX_m_w_reg.v:60 - vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb; vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data[1U] = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data [1U]; vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data[0U] = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data [0U]; + // ALWAYS at VX_m_w_reg.v:63 + vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num + = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num; + // ALWAYS at VX_m_w_reg.v:63 + vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd; + // ALWAYS at VX_m_w_reg.v:63 + vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb; vlTOPp->Vortex__DOT__m_w_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_valid [1U]; vlTOPp->Vortex__DOT__m_w_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_valid @@ -2724,6 +2825,10 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) [1U]; vlTOPp->Vortex__DOT__d_e_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_valid [0U]; + vlTOPp->Vortex__DOT__d_e_a_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data + [1U]; + vlTOPp->Vortex__DOT__d_e_a_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data + [0U]; vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__clone_regsiters[0x1fU] = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_regs [0x1fU]; @@ -2820,10 +2925,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__clone_regsiters[0U] = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_regs [0U]; - vlTOPp->Vortex__DOT__d_e_a_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data - [1U]; - vlTOPp->Vortex__DOT__d_e_a_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data - [0U]; vlTOPp->Vortex__DOT__csr_decode_csr_data = ((0xc00U == (IData)(vlTOPp->Vortex__DOT__vx_csr_handler__DOT__decode_csr_address)) ? (IData)(vlTOPp->Vortex__DOT__vx_csr_handler__DOT__cycle) @@ -2893,10 +2994,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next; vlTOPp->Vortex__DOT__vx_forwarding__DOT__use_memory_PC_next[1U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : ((IData)(4U) + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC)); + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data[1U] + = vlTOPp->Vortex__DOT__d_e_a_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data[0U] + = vlTOPp->Vortex__DOT__d_e_a_reg_data[0U]; vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellinp__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__in_regs[0x1fU] = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__clone_regsiters [0x1fU]; @@ -2993,19 +3098,15 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellinp__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__in_regs[0U] = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__clone_regsiters [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data[1U] - = vlTOPp->Vortex__DOT__d_e_a_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data[0U] - = vlTOPp->Vortex__DOT__d_e_a_reg_data[0U]; - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__csr_address = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : (IData)(vlTOPp->Vortex__DOT__decode_csr_address)); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__is_csr = ((~ (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling)) & (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_csr)); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__csr_mask = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : (((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_csr) @@ -3014,7 +3115,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) >> 0xfU)) : vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data [0U])); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0xfU : (((vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction @@ -3022,14 +3123,17 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction))) ? (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__mul_alu) : (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__temp_final_alu))); - // ALWAYS at VX_e_m_reg.v:126 - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd; - // ALWAYS at VX_e_m_reg.v:126 - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb; vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data[1U] = vlTOPp->Vortex__DOT__d_e_b_reg_data[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data[0U] = vlTOPp->Vortex__DOT__d_e_b_reg_data[0U]; + // ALWAYS at VX_e_m_reg.v:128 + vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num + = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num; + // ALWAYS at VX_e_m_reg.v:128 + vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd; + // ALWAYS at VX_e_m_reg.v:128 + vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb; vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__VX_Context__in_valid[1U] = vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_wb_valid [1U]; @@ -3136,14 +3240,32 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out; vlTOPp->Vortex__DOT__vx_forwarding__DOT__use_execute_PC_next[1U] = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out; - // ALWAYS at VX_d_e_reg.v:139 + vlTOPp->Vortex__DOT__execute_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data + [1U]; + vlTOPp->Vortex__DOT__execute_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data + [0U]; + vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__0__KET____DOT__vx_alu__DOT__mult_signed_result + = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [0U]), + VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__0__KET____DOT__vx_alu__DOT__ALU_in2)); + vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__1__KET____DOT__vx_alu__DOT__mult_signed_result + = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U]), + VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__1__KET____DOT__vx_alu__DOT__ALU_in2)); + // ALWAYS at VX_d_e_reg.v:145 + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num + = (3U & ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) + ? 0U : (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))); + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd = (0x1fU & ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 7U))); - // ALWAYS at VX_d_e_reg.v:139 + // ALWAYS at VX_d_e_reg.v:145 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : @@ -3189,20 +3311,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_csr)) ? 1U : 0U)))); - vlTOPp->Vortex__DOT__execute_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data - [1U]; - vlTOPp->Vortex__DOT__execute_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data - [0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__0__KET____DOT__vx_alu__DOT__mult_signed_result - = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data - [0U]), - VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__0__KET____DOT__vx_alu__DOT__ALU_in2)); - vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__1__KET____DOT__vx_alu__DOT__mult_signed_result - = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data - [1U]), - VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__genblk1__BRA__1__KET____DOT__vx_alu__DOT__ALU_in2)); vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid[1U] = vlTOPp->Vortex__DOT__memory_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid[0U] @@ -3507,116 +3615,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__execute_alu_result[0U]; } -VL_INLINE_OPT void VVortex::_sequent__TOP__4(VVortex__Syms* __restrict vlSymsp) { - VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__4\n"); ); - VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; - // Variables - // Begin mtask footprint all: - VL_SIG8(__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0,0,0); - VL_SIG8(__Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v2,0,0); - VL_SIG8(__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2,0,0); - VL_SIG8(__Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v3,0,0); - // Body - __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0 = 0U; - __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 = 0U; - // ALWAYS at VX_warp.v:62 - vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC - = ((IData)(vlTOPp->reset) ? 0U : ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall) - ? vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC - : ((IData)(4U) - + vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC))); - // ALWAYS at VX_f_d_reg.v:33 - if (vlTOPp->reset) { - vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC = 0U; - } else { - if ((1U & (~ ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall) - | (IData)(vlTOPp->Vortex__DOT__decode_clone_stall))))) { - vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC - = vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC; - } - } - // ALWAYS at VX_f_d_reg.v:33 - if (vlTOPp->reset) { - __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0 = 1U; - } else { - if ((1U & (~ ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall) - | (IData)(vlTOPp->Vortex__DOT__decode_clone_stall))))) { - __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 - = vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid - [1U]; - __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 = 1U; - __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v3 - = vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid - [0U]; - } - } - // ALWAYSPOST at VX_f_d_reg.v:38 - if (__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0) { - vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[0U] = 0U; - vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[1U] = 0U; - } - if (__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2) { - vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[1U] - = __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v2; - vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[0U] - = __Vdlyvval__Vortex__DOT__vx_f_d_reg__DOT__valid__v3; - } - // ALWAYS at VX_warp.v:49 - vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC - = ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal) - ? vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest - : ((1U & ((4U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((~ (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - & (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU))) - : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU) : - (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU)))) - : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU) : - (0U != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U])) : ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type) - & (0U == vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U]))))) - ? (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC - + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset - << 1U)) : vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC)); - vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid[1U] - = vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid[0U] - = vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid - [0U]; - vlTOPp->curr_PC = vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC; - vlTOPp->Vortex__DOT__f_d_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid - [1U]; - vlTOPp->Vortex__DOT__f_d_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid - [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid[1U] - = vlTOPp->Vortex__DOT__f_d_valid[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid[0U] - = vlTOPp->Vortex__DOT__f_d_valid[0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid - [0U]; - vlTOPp->Vortex__DOT__decode_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid - [1U]; - vlTOPp->Vortex__DOT__decode_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid - [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[1U] - = vlTOPp->Vortex__DOT__decode_valid[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[0U] - = vlTOPp->Vortex__DOT__decode_valid[0U]; -} - VL_INLINE_OPT void VVortex::_combo__TOP__5(VVortex__Syms* __restrict vlSymsp) { VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_combo__TOP__5\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; @@ -3649,22 +3647,22 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp) VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__6\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Body - // ALWAYS at VX_register_file_slave.v:60 + // ALWAYS at VX_register_file_slave.v:61 vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__out_src1_data = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xfU))]; - // ALWAYS at VX_register_file.v:46 + // ALWAYS at VX_register_file.v:47 vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_src1_data = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xfU))]; - // ALWAYS at VX_register_file_slave.v:60 + // ALWAYS at VX_register_file_slave.v:61 vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__out_src2_data = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__gen_code_label__BRA__1__KET____DOT__vx_register_file_slave__DOT__registers [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0x14U))]; - // ALWAYS at VX_register_file.v:46 + // ALWAYS at VX_register_file.v:47 vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_src2_data = vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__vx_register_file_master__DOT__registers [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction @@ -3683,7 +3681,31 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__7\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Body - // ALWAYS at VX_f_d_reg.v:33 + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[1U] + = vlTOPp->Vortex__DOT__decode_valid[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[0U] + = vlTOPp->Vortex__DOT__decode_valid[0U]; + // ALWAYS at VX_f_d_reg.v:36 + if (vlTOPp->reset) { + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC = 0U; + } else { + if ((1U & (~ ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall) + | (IData)(vlTOPp->Vortex__DOT__decode_clone_stall))))) { + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC + = vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC; + } + } + // ALWAYS at VX_f_d_reg.v:36 + if (vlTOPp->reset) { + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num = 0U; + } else { + if ((1U & (~ ((IData)(vlTOPp->Vortex__DOT__forwarding_fwd_stall) + | (IData)(vlTOPp->Vortex__DOT__decode_clone_stall))))) { + vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num + = vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num; + } + } + // ALWAYS at VX_f_d_reg.v:36 if (vlTOPp->reset) { vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction = 0U; } else { @@ -3694,6 +3716,33 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) ? 0U : vlTOPp->fe_instruction); } } + // ALWAYS at VX_warp.v:49 + vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC + = ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal) + ? vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest + : ((1U & ((4U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((~ (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + & (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU))) + : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU) : + (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU)))) + : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU) : + (0U != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U])) : ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type) + & (0U == vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U]))))) + ? (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC + + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset + << 1U)) : vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC)); + vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num = vlTOPp->__Vdly__Vortex__DOT__vx_fetch__DOT__warp_num; + vlTOPp->curr_PC = vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC; vlTOPp->Vortex__DOT__vx_decode__DOT__is_itype = ((0x13U == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) | (3U == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction))); @@ -3712,7 +3761,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0x14U) : 0x55U)); - // ALWAYS at VX_decode.v:397 + // ALWAYS at VX_decode.v:404 vlTOPp->__Vtableidx1 = (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)); vlTOPp->Vortex__DOT__vx_decode__DOT__mul_alu = @@ -3747,20 +3796,25 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) & (4U == (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)))); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd - = ((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))); + = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num))); vlTOPp->Vortex__DOT__vx_decode__DOT__is_jalrs = ((0x6bU == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) & (6U == (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)))); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd - = ((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))); - // ALWAYS at VX_decode.v:328 + = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num))); + // ALWAYS at VX_decode.v:335 vlTOPp->Vortex__DOT__decode_itype_immed = ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction) ? ( @@ -3901,12 +3955,15 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) != (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__VX_Context__DOT__state_stall))) & (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_clone)); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd - = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)))) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd))); - // ALWAYS at VX_decode.v:280 + = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))); + // ALWAYS at VX_decode.v:287 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -3994,7 +4051,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) } else { vlTOPp->Vortex__DOT__decode_jal_offset = 0xdeadbeefU; } - // ALWAYS at VX_decode.v:280 + // ALWAYS at VX_decode.v:287 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -4059,7 +4116,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) } else { vlTOPp->Vortex__DOT__decode_jal = 0U; } - // ALWAYS at VX_decode.v:339 + // ALWAYS at VX_decode.v:346 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -4118,7 +4175,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) } else { vlTOPp->Vortex__DOT__decode_branch_type = 0U; } - // ALWAYS at VX_decode.v:339 + // ALWAYS at VX_decode.v:346 if ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x20U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { if ((0x10U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) { @@ -4169,18 +4226,22 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT__decode_change_mask = ((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jalrs) | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jmprt)); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd - = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)))) & (0U - != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))); - vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) + >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU)))) & (0U - != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) + >> 0x14U)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))) + & ((IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))); + vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd + = (((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) + & ((IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))) & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd))) & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd))); vlTOPp->Vortex__DOT__vx_decode__DOT__temp_final_alu @@ -4273,13 +4334,15 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) & (2U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__wb)))); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_wb_fwd - = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) - & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U)))) & (0U - != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))) - & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd))); + = (((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd)) + & (0U != (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U)))) & (0U + != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_exe_fwd))) + & (~ (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd))) + & ((IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__warp_num) + == (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))); vlTOPp->Vortex__DOT__forwarding_src1_fwd = (((IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd) | (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd)) | (IData)(vlTOPp->Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd)); @@ -4577,11 +4640,11 @@ void VVortex::_eval(VVortex__Syms* __restrict vlSymsp) { VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_eval\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Body - if (((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk)))) { - vlTOPp->_sequent__TOP__3(vlSymsp); - } if ((((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk))) | ((IData)(vlTOPp->reset) & (~ (IData)(vlTOPp->__Vclklast__TOP__reset))))) { + vlTOPp->_sequent__TOP__3(vlSymsp); + } + if (((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk)))) { vlTOPp->_sequent__TOP__4(vlSymsp); } vlTOPp->_combo__TOP__5(vlSymsp); @@ -4919,6 +4982,8 @@ void VVortex::_ctor_var_reset() { Vortex__DOT____Vcellinp__vx_forwarding__in_execute_alu_result[__Vi0] = VL_RAND_RESET_I(32); }} Vortex__DOT__vx_fetch__DOT__stall = VL_RAND_RESET_I(1); + Vortex__DOT__vx_fetch__DOT__warp_num = VL_RAND_RESET_I(2); + Vortex__DOT__vx_fetch__DOT__warp_state = VL_RAND_RESET_I(2); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_fetch__DOT__warp_valid[__Vi0] = VL_RAND_RESET_I(1); }} @@ -4938,6 +5003,7 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_f_d_reg__DOT__valid[__Vi0] = VL_RAND_RESET_I(1); }} + Vortex__DOT__vx_f_d_reg__DOT__warp_num = VL_RAND_RESET_I(2); Vortex__DOT__vx_decode__DOT__is_itype = VL_RAND_RESET_I(1); Vortex__DOT__vx_decode__DOT__is_csr = VL_RAND_RESET_I(1); Vortex__DOT__vx_decode__DOT__is_clone = VL_RAND_RESET_I(1); @@ -5027,6 +5093,7 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_d_e_reg__DOT__valid_z[__Vi0] = VL_RAND_RESET_I(1); }} + Vortex__DOT__vx_d_e_reg__DOT__warp_num = VL_RAND_RESET_I(2); Vortex__DOT__vx_d_e_reg__DOT__stalling = VL_RAND_RESET_I(1); Vortex__DOT__vx_execute__DOT____Vcellout__genblk1__BRA__0__KET____DOT__vx_alu__out_alu_result = VL_RAND_RESET_I(32); Vortex__DOT__vx_execute__DOT____Vcellout__genblk1__BRA__1__KET____DOT__vx_alu__out_alu_result = VL_RAND_RESET_I(32); @@ -5059,6 +5126,7 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_e_m_reg__DOT__valid[__Vi0] = VL_RAND_RESET_I(1); }} + Vortex__DOT__vx_e_m_reg__DOT__warp_num = VL_RAND_RESET_I(2); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_m_w_reg__DOT__alu_result[__Vi0] = VL_RAND_RESET_I(32); }} @@ -5071,6 +5139,7 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_m_w_reg__DOT__valid[__Vi0] = VL_RAND_RESET_I(1); }} + Vortex__DOT__vx_m_w_reg__DOT__warp_num = VL_RAND_RESET_I(2); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_writeback__DOT__out_pc_data[__Vi0] = VL_RAND_RESET_I(32); }} @@ -5104,4 +5173,5 @@ void VVortex::_ctor_var_reset() { __Vtable1_Vortex__DOT__vx_decode__DOT__mul_alu[5] = 0x15U; __Vtable1_Vortex__DOT__vx_decode__DOT__mul_alu[6] = 0x16U; __Vtable1_Vortex__DOT__vx_decode__DOT__mul_alu[7] = 0x17U; + __Vdly__Vortex__DOT__vx_fetch__DOT__warp_num = VL_RAND_RESET_I(2); } diff --git a/rtl/obj_dir/VVortex.h b/rtl/obj_dir/VVortex.h index ddbe3dd4..c320c44c 100644 --- a/rtl/obj_dir/VVortex.h +++ b/rtl/obj_dir/VVortex.h @@ -47,6 +47,9 @@ VL_MODULE(VVortex) { VL_SIG8(Vortex__DOT__forwarding_src1_fwd,0,0); VL_SIG8(Vortex__DOT__forwarding_src2_fwd,0,0); VL_SIG8(Vortex__DOT__vx_fetch__DOT__stall,0,0); + VL_SIG8(Vortex__DOT__vx_fetch__DOT__warp_num,1,0); + VL_SIG8(Vortex__DOT__vx_fetch__DOT__warp_state,1,0); + VL_SIG8(Vortex__DOT__vx_f_d_reg__DOT__warp_num,1,0); VL_SIG8(Vortex__DOT__vx_decode__DOT__is_itype,0,0); VL_SIG8(Vortex__DOT__vx_decode__DOT__is_csr,0,0); VL_SIG8(Vortex__DOT__vx_decode__DOT__is_clone,0,0); @@ -64,6 +67,7 @@ VL_MODULE(VVortex) { VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__branch_type,2,0); VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__is_csr,0,0); VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__jal,0,0); + VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__warp_num,1,0); VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__stalling,0,0); VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__rd,4,0); VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__wb,1,0); @@ -72,8 +76,10 @@ VL_MODULE(VVortex) { VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__is_csr,0,0); VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__branch_type,2,0); VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__jal,0,0); + VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__warp_num,1,0); VL_SIG8(Vortex__DOT__vx_m_w_reg__DOT__rd,4,0); VL_SIG8(Vortex__DOT__vx_m_w_reg__DOT__wb,1,0); + VL_SIG8(Vortex__DOT__vx_m_w_reg__DOT__warp_num,1,0); VL_SIG8(Vortex__DOT__vx_forwarding__DOT__src1_exe_fwd,0,0); VL_SIG8(Vortex__DOT__vx_forwarding__DOT__src1_mem_fwd,0,0); VL_SIG8(Vortex__DOT__vx_forwarding__DOT__src1_wb_fwd,0,0); @@ -95,14 +101,14 @@ VL_MODULE(VVortex) { VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__PC_next_out,31,0); VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__itype_immed,31,0); VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__upper_immed,19,0); + }; + struct { VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__csr_mask,31,0); VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__curr_PC,31,0); VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__jal_offset,31,0); VL_SIG(Vortex__DOT__vx_execute__DOT__genblk1__BRA__0__KET____DOT__vx_alu__DOT__ALU_in2,31,0); VL_SIG(Vortex__DOT__vx_execute__DOT__genblk1__BRA__1__KET____DOT__vx_alu__DOT__ALU_in2,31,0); VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__PC_next,31,0); - }; - struct { VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__csr_result,31,0); VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__curr_PC,31,0); VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__branch_offset,31,0); @@ -161,6 +167,8 @@ VL_MODULE(VVortex) { VL_SIG(Vortex__DOT__vx_writeback__DOT__out_pc_data[2],31,0); VL_SIG(Vortex__DOT__vx_forwarding__DOT__use_execute_PC_next[2],31,0); VL_SIG(Vortex__DOT__vx_forwarding__DOT__use_memory_PC_next[2],31,0); + }; + struct { VL_SIG(Vortex__DOT__vx_forwarding__DOT__use_writeback_PC_next[2],31,0); VL_SIG16(Vortex__DOT__vx_csr_handler__DOT__csr[4096],11,0); }; @@ -171,6 +179,7 @@ VL_MODULE(VVortex) { struct { // Begin mtask footprint all: VL_SIG8(__Vtableidx1,2,0); + VL_SIG8(__Vdly__Vortex__DOT__vx_fetch__DOT__warp_num,1,0); VL_SIG8(__Vclklast__TOP__clk,0,0); VL_SIG8(__Vclklast__TOP__reset,0,0); VL_SIG(Vortex__DOT__vx_decode__DOT__VX_Context__DOT____Vcellout__vx_register_file_master__out_src2_data,31,0); @@ -233,9 +242,9 @@ VL_MODULE(VVortex) { VL_SIG(Vortex__DOT____Vcellout__vx_forwarding__out_src1_fwd_data[2],31,0); VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_writeback_mem_data[2],31,0); VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_writeback_alu_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_memory_mem_data[2],31,0); }; struct { + VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_memory_mem_data[2],31,0); VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_memory_alu_result[2],31,0); VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_execute_alu_result[2],31,0); VL_SIG8(Vortex__DOT__vx_fetch__DOT____Vcellout__VX_Warp__out_valid[2],0,0); diff --git a/rtl/obj_dir/VVortex__ALL.a b/rtl/obj_dir/VVortex__ALL.a index 4bcfefdd8a9bbbc1cd3314e73250482cce1f80c9..21307b59ce5fe14cdb9e16a7d26567a3047066e8 100644 GIT binary patch literal 72744 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%0DIk+Eq^AdENUXy?8i| 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 yty!N=&As7