From a3a3b21de79788789acc0b9d84cb9a8fa66d4ff5 Mon Sep 17 00:00:00 2001 From: felsabbagh3 Date: Sat, 30 Mar 2019 22:09:03 -0400 Subject: [PATCH] Using verilog For-loops + Passing all tests --- rtl/VX_alu.v | 7 +- rtl/VX_d_e_reg.v | 26 +- rtl/VX_decode.v | 13 +- rtl/VX_e_m_reg.v | 22 +- rtl/VX_execute.v | 46 +- rtl/VX_memory.v | 2 +- rtl/Vortex.v | 58 +- rtl/obj_dir/VVortex | Bin 381412 -> 381468 bytes rtl/obj_dir/VVortex.cpp | 1281 ++++++++++++++--------------- rtl/obj_dir/VVortex.h | 164 ++-- rtl/obj_dir/VVortex__ALL.a | Bin 61920 -> 61792 bytes rtl/obj_dir/VVortex__ALLcls.o | Bin 58684 -> 58556 bytes rtl/obj_dir/VVortex__verFiles.dat | 30 +- rtl/obj_dir/debug.txt | 506 +++++++++--- rtl/obj_dir/test_bench.o | Bin 64228 -> 64740 bytes rtl/test_bench.cpp | 2 +- rtl/test_bench.h | 31 +- 17 files changed, 1204 insertions(+), 984 deletions(-) diff --git a/rtl/VX_alu.v b/rtl/VX_alu.v index 1eda2d0b..7a35fc9b 100644 --- a/rtl/VX_alu.v +++ b/rtl/VX_alu.v @@ -2,7 +2,8 @@ `include "VX_define.v" module VX_alu( - input wire[31:0] in_reg_data[1:0], + input wire[31:0] in_1, + input wire[31:0] in_2, input wire in_rs2_src, input wire[31:0] in_itype_immed, input wire[19:0] in_upper_immed, @@ -22,9 +23,9 @@ module VX_alu( assign which_in2 = in_rs2_src == `RS2_IMMED; - assign ALU_in1 = in_reg_data[0]; + assign ALU_in1 = in_1; - assign ALU_in2 = which_in2 ? in_itype_immed : in_reg_data[1]; + assign ALU_in2 = which_in2 ? in_itype_immed : in_2; assign upper_immed = {in_upper_immed, {12{1'b0}}}; diff --git a/rtl/VX_d_e_reg.v b/rtl/VX_d_e_reg.v index ed342586..def0e650 100644 --- a/rtl/VX_d_e_reg.v +++ b/rtl/VX_d_e_reg.v @@ -7,7 +7,8 @@ module VX_d_e_reg ( input wire[4:0] in_rd, input wire[4:0] in_rs1, input wire[4:0] in_rs2, - input wire[31:0] in_reg_data[`NT_T2_M1:0], + 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 @@ -34,7 +35,8 @@ module VX_d_e_reg ( output wire[4:0] out_rd, output wire[4:0] out_rs1, output wire[4:0] out_rs2, - output wire[31:0] out_reg_data[`NT_T2_M1:0], + 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 @@ -54,7 +56,8 @@ module VX_d_e_reg ( reg[4:0] rd; reg[4:0] rs1; reg[4:0] rs2; - reg[31:0] reg_data[`NT_T2_M1:0]; + reg[31:0] a_reg_data[`NT_M1:0]; + reg[31:0] b_reg_data[`NT_M1:0]; reg[4:0] alu_op; reg[1:0] wb; reg[31:0] PC_next_out; @@ -72,7 +75,7 @@ module VX_d_e_reg ( reg[31:0] jal_offset; reg valid[`NT_M1:0]; - reg[31:0] reg_data_z[`NT_T2_M1:0]; + reg[31:0] reg_data_z[`NT_M1:0]; reg valid_z[`NT_M1:0]; integer ini_reg; @@ -81,10 +84,11 @@ module VX_d_e_reg ( rs1 = 0; for (ini_reg = 0; ini_reg < `NT; ini_reg = ini_reg + 1) begin - reg_data[ini_reg] = 0; - reg_data_z[ini_reg] = 0; - valid[ini_reg] = 0; - valid_z[ini_reg] = 0; + a_reg_data[ini_reg] = 0; + b_reg_data[ini_reg] = 0; + reg_data_z[ini_reg] = 0; + valid[ini_reg] = 0; + valid_z[ini_reg] = 0; end rs2 = 0; alu_op = 0; @@ -111,7 +115,8 @@ module VX_d_e_reg ( assign out_rd = rd; assign out_rs1 = rs1; assign out_rs2 = rs2; - assign out_reg_data = reg_data; + assign out_a_reg_data = a_reg_data; + assign out_b_reg_data = b_reg_data; assign out_alu_op = alu_op; assign out_wb = wb; assign out_PC_next = PC_next_out; @@ -135,7 +140,8 @@ module VX_d_e_reg ( rd <= stalling ? 5'h0 : in_rd; rs1 <= stalling ? 5'h0 : in_rs1; rs2 <= stalling ? 5'h0 : in_rs2; - reg_data <= stalling ? reg_data_z : in_reg_data; + a_reg_data <= stalling ? reg_data_z : in_a_reg_data; + b_reg_data <= stalling ? reg_data_z : in_b_reg_data; alu_op <= stalling ? `NO_ALU : in_alu_op; wb <= stalling ? `NO_WB : in_wb; PC_next_out <= stalling ? 32'h0 : in_PC_next; diff --git a/rtl/VX_decode.v b/rtl/VX_decode.v index 0b1d892b..a87c6eb8 100644 --- a/rtl/VX_decode.v +++ b/rtl/VX_decode.v @@ -27,7 +27,8 @@ module VX_decode( output wire[4:0] out_rd, output wire[4:0] out_rs1, output wire[4:0] out_rs2, - output wire[31:0] out_reg_data[`NT_T2_M1:0], + output wire[31:0] out_a_reg_data[`NT_M1:0], + output wire[31:0] out_b_reg_data[`NT_M1:0], output wire[1:0] out_wb, output wire[4:0] out_alu_op, output wire out_rs2_src, @@ -212,13 +213,11 @@ module VX_decode( // ch_print("DECODE: PC: {0}, INSTRUCTION: {1}", in_curr_PC, in_instruction); genvar index_out_reg; - genvar index_out_reg_2; generate - for (index_out_reg = 0; index_out_reg <= `NT; index_out_reg = index_out_reg + 2) + for (index_out_reg = 0; index_out_reg < `NT; index_out_reg = index_out_reg + 1) begin - assign index_out_reg_2 = index_out_reg / 2; - assign out_reg_data[index_out_reg] = ( (is_jal == 1'b1) ? in_curr_PC : ((in_src1_fwd == 1'b1) ? in_src1_fwd_data[index_out_reg_2] : rd1_register[index_out_reg_2])); - assign out_reg_data[index_out_reg+1] = (in_src2_fwd == 1'b1) ? in_src2_fwd_data[index_out_reg_2] : rd2_register[index_out_reg_2]; + assign out_a_reg_data[index_out_reg] = ( (is_jal == 1'b1) ? in_curr_PC : ((in_src1_fwd == 1'b1) ? in_src1_fwd_data[index_out_reg] : rd1_register[index_out_reg])); + assign out_b_reg_data[index_out_reg] = (in_src2_fwd == 1'b1) ? in_src2_fwd_data[index_out_reg] : rd2_register[index_out_reg]; end endgenerate @@ -244,7 +243,7 @@ module VX_decode( // end assign out_is_csr = is_csr; - assign out_csr_mask = (is_csr_immed == 1'b1) ? {27'h0, out_rs1} : out_reg_data[0]; + assign out_csr_mask = (is_csr_immed == 1'b1) ? {27'h0, out_rs1} : out_a_reg_data[0]; assign out_wb = (is_jal || is_jalr || is_e_inst) ? `WB_JAL : diff --git a/rtl/VX_e_m_reg.v b/rtl/VX_e_m_reg.v index 7523239c..0718771d 100644 --- a/rtl/VX_e_m_reg.v +++ b/rtl/VX_e_m_reg.v @@ -10,7 +10,8 @@ module VX_e_m_reg ( input wire[1:0] in_wb, input wire[4:0] in_rs1, input wire[4:0] in_rs2, - input wire[31:0] in_reg_data[`NT_T2_M1:0], + input wire[31:0] in_a_reg_data[`NT_M1:0], + input wire[31:0] in_b_reg_data[`NT_M1:0], input wire[2:0] in_mem_read, // NEW input wire[2:0] in_mem_write, // NEW input wire[31:0] in_PC_next, @@ -33,7 +34,8 @@ module VX_e_m_reg ( output wire[1:0] out_wb, output wire[4:0] out_rs1, output wire[4:0] out_rs2, - output wire[31:0] out_reg_data[`NT_T2_M1:0], + output wire[31:0] out_a_reg_data[`NT_M1:0], + output wire[31:0] out_b_reg_data[`NT_M1:0], output wire[2:0] out_mem_read, output wire[2:0] out_mem_write, output wire[31:0] out_curr_PC, @@ -50,7 +52,8 @@ module VX_e_m_reg ( reg[4:0] rd; reg[4:0] rs1; reg[4:0] rs2; - reg[31:0] reg_data[`NT_T2_M1:0]; + reg[31:0] a_reg_data[`NT_M1:0]; + reg[31:0] b_reg_data[`NT_M1:0]; reg[1:0] wb; reg[31:0] PC_next; reg[2:0] mem_read; @@ -87,13 +90,12 @@ module VX_e_m_reg ( branch_type = 0; jal = `NO_JUMP; jal_dest = 0; + for (ini_reg = 0; ini_reg < `NT; ini_reg = ini_reg + 1) begin - reg_data[ini_reg] = 0; - // reg_data_z[ini_reg] = 0; + a_reg_data[ini_reg] = 0; + b_reg_data[ini_reg] = 0; valid[ini_reg] = 0; - // valid_z[ini_reg] = 0; - // alu_result_z[ini_reg] = 0; alu_result[ini_reg] = 0; end end @@ -108,7 +110,8 @@ module VX_e_m_reg ( assign out_PC_next = PC_next; assign out_mem_read = mem_read; assign out_mem_write = mem_write; - assign out_reg_data = reg_data; + assign out_a_reg_data = a_reg_data; + assign out_b_reg_data = b_reg_data; assign out_csr_address = csr_address; assign out_is_csr = is_csr; assign out_csr_result = csr_result; @@ -130,7 +133,8 @@ module VX_e_m_reg ( PC_next <= in_PC_next; mem_read <= in_mem_read; mem_write <= in_mem_write; - reg_data <= in_reg_data; + a_reg_data <= in_a_reg_data; + b_reg_data <= in_b_reg_data; csr_address <= in_csr_address; is_csr <= in_is_csr; csr_result <= in_csr_result; diff --git a/rtl/VX_execute.v b/rtl/VX_execute.v index 0d1c9dec..3fb0119a 100644 --- a/rtl/VX_execute.v +++ b/rtl/VX_execute.v @@ -5,7 +5,8 @@ module VX_execute ( input wire[4:0] in_rd, input wire[4:0] in_rs1, input wire[4:0] in_rs2, - input wire[31:0] in_reg_data[`NT_T2_M1:0], + 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 @@ -32,7 +33,8 @@ module VX_execute ( output wire[1:0] out_wb, output wire[4:0] out_rs1, output wire[4:0] out_rs2, - output wire[31:0] out_reg_data[`NT_T2_M1:0], + output wire[31:0] out_a_reg_data[`NT_M1:0], + output wire[31:0] out_b_reg_data[`NT_M1:0], output wire[2:0] out_mem_read, output wire[2:0] out_mem_write, output wire out_jal, @@ -57,28 +59,46 @@ module VX_execute ( // ); // genvar index; - // genvar index_2; + // reg[5:0] index_2; // generate - // assign index_2 = 0; - // for (index=0; index <= `NT; index=index+2) + // for (index=0; index < `NT; index=index+1) // begin: gen_code_label + // assign index_2 = index * 2; // VX_alu vx_alu( - // .in_reg_data (in_reg_data[index+1:index]), + // .in_reg_data (in_reg_data[(index_2+1):(index_2)]), // .in_rs2_src (in_rs2_src), // .in_itype_immed(in_itype_immed), // .in_upper_immed(in_upper_immed), // .in_alu_op (in_alu_op), // .in_csr_data (in_csr_data), // .in_curr_PC (in_curr_PC), - // .out_alu_result(out_alu_result[index_2]) + // .out_alu_result(out_alu_result[index]) // ); - // index_2 = index_2 + 1; // end // endgenerate + // genvar index_out_reg; + // generate + // for (index_out_reg = 0; index_out_reg < `NT; index_out_reg = index_out_reg + 1) + // begin + // VX_alu vx_alu_0( + // // .in_reg_data (in_reg_data[1:0]), + // .in_1 (in_a_reg_data[index_out_reg]), + // .in_2 (in_b_reg_data[index_out_reg]), + // .in_rs2_src (in_rs2_src), + // .in_itype_immed(in_itype_immed), + // .in_upper_immed(in_upper_immed), + // .in_alu_op (in_alu_op), + // .in_csr_data (in_csr_data), + // .in_curr_PC (in_curr_PC), + // .out_alu_result(out_alu_result[index_out_reg]) + // ); + // end + // endgenerate VX_alu vx_alu_0( - .in_reg_data (in_reg_data[1:0]), + .in_1 (in_a_reg_data[0]), + .in_2 (in_b_reg_data[0]), .in_rs2_src (in_rs2_src), .in_itype_immed(in_itype_immed), .in_upper_immed(in_upper_immed), @@ -89,7 +109,8 @@ module VX_execute ( ); VX_alu vx_alu_1( - .in_reg_data (in_reg_data[3:2]), + .in_1 (in_a_reg_data[1]), + .in_2 (in_b_reg_data[1]), .in_rs2_src (in_rs2_src), .in_itype_immed(in_itype_immed), .in_upper_immed(in_upper_immed), @@ -99,7 +120,7 @@ module VX_execute ( .out_alu_result(out_alu_result[1]) ); - assign out_jal_dest = $signed(in_reg_data[0]) + $signed(in_jal_offset); + assign out_jal_dest = $signed(in_a_reg_data[0]) + $signed(in_jal_offset); assign out_jal = in_jal; always @(*) begin @@ -125,7 +146,8 @@ module VX_execute ( assign out_mem_read = in_mem_read; assign out_mem_write = in_mem_write; assign out_rs1 = in_rs1; - assign out_reg_data = in_reg_data; + assign out_a_reg_data = in_a_reg_data; + assign out_b_reg_data = in_b_reg_data; assign out_rs2 = in_rs2; assign out_PC_next = in_PC_next; assign out_is_csr = in_is_csr; diff --git a/rtl/VX_memory.v b/rtl/VX_memory.v index 9a169a67..0721bebf 100644 --- a/rtl/VX_memory.v +++ b/rtl/VX_memory.v @@ -38,7 +38,7 @@ module VX_memory ( always @(in_mem_read, in_cache_driver_out_data) begin if (in_mem_read == `LW_MEM_READ) begin - // $display("PC: %h ----> Received: %h", in_curr_PC, in_cache_driver_out_data); + $display("PC: %h ----> Received: %h for addr: ", in_curr_PC, in_cache_driver_out_data[0], in_alu_result[0]); end end diff --git a/rtl/Vortex.v b/rtl/Vortex.v index 8fe84096..c77ab0c8 100644 --- a/rtl/Vortex.v +++ b/rtl/Vortex.v @@ -5,8 +5,9 @@ module Vortex( input wire clk, input wire reset, input wire[31:0] fe_instruction, - input wire[31:0] in_cache_driver_out_data_0, - input wire[31:0] in_cache_driver_out_data_1, + // input wire[31:0] in_cache_driver_out_data_0, + // input wire[31:0] in_cache_driver_out_data_1, + input wire[31:0] in_cache_driver_out_data[`NT_M1:0], output wire[31:0] curr_PC, output wire[31:0] out_cache_driver_in_address[`NT_M1:0], output wire[2:0] out_cache_driver_in_mem_read, @@ -15,10 +16,10 @@ module Vortex( output wire[31:0] out_cache_driver_in_data[`NT_M1:0] ); -wire[31:0] in_cache_driver_out_data[`NT_M1:0]; +// wire[31:0] in_cache_driver_out_data[`NT_M1:0]; -assign in_cache_driver_out_data[0] = in_cache_driver_out_data_0; -assign in_cache_driver_out_data[1] = in_cache_driver_out_data_1; +// assign in_cache_driver_out_data[0] = in_cache_driver_out_data_0; +// assign in_cache_driver_out_data[1] = in_cache_driver_out_data_1; assign curr_PC = fetch_curr_PC; @@ -42,7 +43,8 @@ wire[31:0] decode_csr_mask; wire[4:0] decode_rd; wire[4:0] decode_rs1; wire[4:0] decode_rs2; -wire[31:0] decode_reg_data[`NT_T2_M1:0]; +wire[31:0] decode_a_reg_data[`NT_M1:0]; +wire[31:0] decode_b_reg_data[`NT_M1:0]; wire[1:0] decode_wb; wire[4:0] decode_alu_op; wire decode_rs2_src; @@ -63,7 +65,8 @@ wire[31:0] d_e_csr_mask; wire[4:0] d_e_rd; wire[4:0] d_e_rs1; wire[4:0] d_e_rs2; -wire[31:0] d_e_reg_data[`NT_T2_M1:0]; +wire[31:0] d_e_a_reg_data[`NT_M1:0]; +wire[31:0] d_e_b_reg_data[`NT_M1:0]; wire[4:0] d_e_alu_op; wire[1:0] d_e_wb; wire d_e_rs2_src; @@ -89,14 +92,15 @@ wire[4:0] execute_rd; wire[1:0] execute_wb; wire[4:0] execute_rs1; wire[4:0] execute_rs2; -wire[31:0] execute_reg_data[`NT_T2_M1:0]; +wire[31:0] execute_a_reg_data[`NT_M1:0]; +wire[31:0] execute_b_reg_data[`NT_M1:0]; wire[2:0] execute_mem_read; wire[2:0] execute_mem_write; wire execute_jal; 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 execute_valid[`NT_M1:0]; // From e_m_register @@ -110,8 +114,9 @@ wire[4:0] e_m_rd; wire[1:0] e_m_wb; wire[4:0] e_m_rs1; /* verilator lint_off UNUSED */ -wire[31:0] e_m_reg_data[`NT_T2_M1:0]; +wire[31:0] e_m_a_reg_data[`NT_M1:0]; /* verilator lint_on UNUSED */ +wire[31:0] e_m_b_reg_data[`NT_M1:0]; wire[4:0] e_m_rs2; wire[2:0] e_m_mem_read; wire[2:0] e_m_mem_write; @@ -119,7 +124,7 @@ wire[31:0] e_m_curr_PC; 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 e_m_valid[`NT_M1:0]; // From memory @@ -133,7 +138,7 @@ wire[1:0] memory_wb; wire[4:0] memory_rs1; wire[4:0] memory_rs2; wire[31:0] memory_PC_next; -wire memory_valid[`NT_M1:0]; +wire memory_valid[`NT_M1:0]; // From m_w_register wire[31:0] m_w_alu_result[`NT_M1:0]; @@ -235,7 +240,8 @@ VX_decode vx_decode( .out_rd (decode_rd), .out_rs1 (decode_rs1), .out_rs2 (decode_rs2), - .out_reg_data (decode_reg_data), + .out_a_reg_data (decode_a_reg_data), + .out_b_reg_data (decode_b_reg_data), .out_wb (decode_wb), .out_alu_op (decode_alu_op), .out_rs2_src (decode_rs2_src), @@ -257,7 +263,8 @@ VX_d_e_reg vx_d_e_reg( .in_rd (decode_rd), .in_rs1 (decode_rs1), .in_rs2 (decode_rs2), - .in_reg_data (decode_reg_data), + .in_a_reg_data (decode_a_reg_data), + .in_b_reg_data (decode_b_reg_data), .in_alu_op (decode_alu_op), .in_wb (decode_wb), .in_rs2_src (decode_rs2_src), @@ -284,7 +291,8 @@ VX_d_e_reg vx_d_e_reg( .out_rd (d_e_rd), .out_rs1 (d_e_rs1), .out_rs2 (d_e_rs2), - .out_reg_data (d_e_reg_data), + .out_a_reg_data (d_e_a_reg_data), + .out_b_reg_data (d_e_b_reg_data), .out_alu_op (d_e_alu_op), .out_wb (d_e_wb), .out_rs2_src (d_e_rs2_src), @@ -304,7 +312,8 @@ VX_execute vx_execute( .in_rd (d_e_rd), .in_rs1 (d_e_rs1), .in_rs2 (d_e_rs2), - .in_reg_data (d_e_reg_data), + .in_a_reg_data (d_e_a_reg_data), + .in_b_reg_data (d_e_b_reg_data), .in_alu_op (d_e_alu_op), .in_wb (d_e_wb), .in_rs2_src (d_e_rs2_src), @@ -331,7 +340,8 @@ VX_execute vx_execute( .out_wb (execute_wb), .out_rs1 (execute_rs1), .out_rs2 (execute_rs2), - .out_reg_data (execute_reg_data), + .out_a_reg_data (execute_a_reg_data), + .out_b_reg_data (execute_b_reg_data), .out_mem_read (execute_mem_read), .out_mem_write (execute_mem_write), .out_jal (execute_jal), @@ -349,7 +359,8 @@ VX_e_m_reg vx_e_m_reg( .in_wb (execute_wb), .in_rs1 (execute_rs1), .in_rs2 (execute_rs2), - .in_reg_data (execute_reg_data), + .in_a_reg_data (execute_a_reg_data), + .in_b_reg_data (execute_b_reg_data), .in_mem_read (execute_mem_read), .in_mem_write (execute_mem_write), .in_PC_next (execute_PC_next), @@ -372,7 +383,8 @@ VX_e_m_reg vx_e_m_reg( .out_wb (e_m_wb), .out_rs1 (e_m_rs1), .out_rs2 (e_m_rs2), - .out_reg_data (e_m_reg_data), + .out_a_reg_data (e_m_a_reg_data), + .out_b_reg_data (e_m_b_reg_data), .out_mem_read (e_m_mem_read), .out_mem_write (e_m_mem_write), .out_curr_PC (e_m_curr_PC), @@ -384,10 +396,10 @@ VX_e_m_reg vx_e_m_reg( .out_valid (e_m_valid) ); -wire[31:0] use_rd2[`NT_M1:0]; +// wire[31:0] use_rd2[`NT_M1:0]; -assign use_rd2[0] = e_m_reg_data[1]; -assign use_rd2[1] = e_m_reg_data[3]; +// assign use_rd2[0] = e_m_reg_data[1]; +// assign use_rd2[1] = e_m_reg_data[3]; VX_memory vx_memory( .in_alu_result (e_m_alu_result), @@ -397,7 +409,7 @@ VX_memory vx_memory( .in_wb (e_m_wb), .in_rs1 (e_m_rs1), .in_rs2 (e_m_rs2), - .in_rd2 (use_rd2), + .in_rd2 (e_m_b_reg_data), .in_PC_next (e_m_PC_next), .in_curr_PC (e_m_curr_PC), .in_branch_offset (e_m_branch_offset), diff --git a/rtl/obj_dir/VVortex b/rtl/obj_dir/VVortex index e29855717aab2c3cb851e6f14c55b2ffe8ccbe84..66696e66d2f2108e39f6306938f4103e44c5e949 100755 GIT binary patch delta 62124 zcmaG}2V7Lg*58@SDyRrbTR&KGSWqmhYp>V~)?h5rsL`khibU3RZ6l6}CL)?x zVn@7a#IB&RU^m7nv0h>cCKjxG=gi$@SzmtN%VY1%ng6NN=N9j8@L9XjXIWn5JZFuD zXf&GN$2h^SMw92f{BEmC+a@^)>Jycy*~S`>)|FOIRjHdL0oAN#^MD#XL#2iWs?=z9 z5vZeAsnp{hDs^;5F#SxTRVuSZ+U{Y_VOq_0s?l5-q}3Q_Xf)*k)Kdj&%7Z!h7Xp9v z7%3A-Zm{4ot=;$B)@KhK)BMOUDQT|5JIY>ca+ydP)P!v zZOSr|5$)nhNOu-fE~nyNvy;Xs84``A9HmMet5x2w>f|4RWX=pPE-qH|pF!FZF&j~U z@c4|4C?Dosd9;(J!K<8Tr>XAI&yD8nnF#&B(#m@dQAVjn6=aPj(N=UBh=;(0#GGjN zM~NDcuCn}MrSHnoa45EsHzL`+*sU-}6B2ZU*vJ;sb-#X3GR5Uoa)RV?jq2S3yrsWh}4Imk>GQp=&on#<9k33FIZ)>o&U5tXLEkuNckK z^Nprs%Akxe_h*ERXS&LLeP0d5Lc?aG$p8QZMMVAJq*2bYJ_iebQVL#|_pF@ z$K3*>H8Doh17p&YaHA={2m%Oy5y2d7i_cf`x@c^XH{=_&Y0w)`wFw09pdYChd++Pq zBMx%H1zQ~zDkR2UM>iCxB8^*MBK&H4DruvozH;8q+DGxm%jibV2FQdi(3iOg7s;iWIW_{@uxA=3J#Z{MM^7 zj0|FyDt>jk^tHKax(JQyhN;^XXf63lBcMCjd_(ELE>~GilG%i+w`i@ttaHF1vX=cA zpeHTZ`G8v_m;D?#m^5c)gY@JH3lF+Q#xmF7!7wh23)Yi#wj%fzb?V6`R~tmWV!u|? zlfLXlwOdedF=PrUV(mipfj zvA=5cpk+I=7B&5WwSUcRuyfJ3I|@n41QmAyvgXXtci7@`l++HQ@Rqf34`NNp zdKB^)>JWtdz^>Ff=YCPeJsYnIIhL`zb}JIKy{(gGk#kD7N9O4-l1{;Z5`RPa)=GOQ zXjIUWt+WS%CJEXUR;TWUI_{=!FMudo;JG$vOVplmU|_c=Fh=AX&C4{8z?o$kPA7?W+lbvQn#dVjD*>cWi+RtB)5IN z$|t=o>$X7aNH@pinyw|zX%MP$TksbOu(OCFbKl*1Q%s&!ij7po6q9h)L9)gzISAP; zF?nV~UiD%~n+$p8>41vQQkFzROI+wEUbTpP!Uv3{_=X@~=l|lP4cwCJ3WZT!;xI6I z=9se(8~^qgN-$!2o(X8Gev@IZqKjth>+2G7la3IRA-CWZ4m_49H{b=XOYNLAIffG; z547(}ia!AX{1s-pQqcf&%ZUKu3|NY8jyX{hz=>F7iMdj`c=`#`YxA`IRZP>*f;9=) z^v1OY8|`s++c%|L(nkoO5!9OvSE?t%HK_sZCAwix6vY3R0_v807VI;c zqgLVAZi)D1EKF`j(X=DpVPs(51OH)WG~)z_*GQu|K{1++8p#_N>;RBfd`+#hG{~%0 z?qH-W5lJ8k1NR=9gL(QDOrBIrDp*VILW$AhdJ?)X4DH@%fN6S>(bTOF94G>1aBT+4 zK$}g~GEjw8g#p}+5ovEWoM;boN8dx9pgg5urSPV74}u2Zx24rH6l4G6$idS+B_nq0aI(^u}Mge`>wG@@p2G&+M0vYG!M1nX7U9OTIg%ywkanDoMV%ic> z7hzCw3o(muli`Rm`cZLlj&|4rCon^!Ii>Bx-ZZK~)4aVLHcMA@k-ka z1-UKo1Sw{11IS>2w0cMslml9h)|WMo2y$=V3>JydvQ``$#dElu=vQY^dNB;ChV#l)$Y zSS!YhEp8e{<>5?jnyw3LD#Y|uAx0~tK~pv*QcsJAu{DwDIztnIiBvJ+R!p}hET);B z8i%ojX6d>S5dssWVsuu_xCqv)xt^{V%0@L$*Tpv$7-touv0{=Nv#Krh^yU!Ou|>M> z+eQLY__=UP!3(&xz7ZoW^`siB)pCO_v!Q_8P$79%NOnW^prxLUAI#jM(sdUb2+R=` zlV!#H)_|Rk($kDV>|ek<4HuZrDkjZ}c^S^Ox6;%11KIUf={_zhW|@jfv0^H*Wv#<# z`+@A2*6F(H^@W(3DrB-1Qnx;v9<8T~2e5U~>AE)c1SVF+46tH4)nfzO=;_t|EU8Vp zZfISBF{+qoD`rex7S&cys<5$bH|V~uBOu`_L~n)6tHXlZ>FMZxtV_FeU21KC(Ww}B zE9U#!Oxs>he~w}G+o$Vx*Af_wiYXeW26=xiRsfiP`!Wwhy6#+%8p_5bZ>UJW4bQ5 zrVx{+LRMQLVKv#;Mm?#-(v2H*Q8ff4MTI0YvTE#?KG2ezTm#%u! zkTvYOLASk{faq07kQI_yjXmwEr?a~=pKj^8)4>Acu40_6n2W*eVmCcK-i^Hj%!43- zDT)(8F2oD8_NPHCv%8*DV7I$(@F6NBUxnPTLR{GD9$~a!S9ZKdx~^)VkdmuHj#wep z16h1eaJ&oK)H7YzEI?p(shG`HOq&2UqL-dN>def&(seOa1!lF1S!Tryt;!6&^(354 z>b*fXrHX(gs*ssh$k$a^SRXx|*@^Y(ldiM)3rw7fiM3)<{h4cDJw0k2n>RpD!r0aU z8*~xgLdp#ll4pfPd9yJC_4Ld3Z0W#sT`wo<6V&g3B=%T!2;6|&reRT`qF-P^JjL(+9WRu-6iTu^Gd|LUK_f>}5(&W|0Qc z4LBx%Wzyi??D+66>2^2PG&Y9zb7M(MU4831v4* z#8@JFi$y{ytM z`VoyR&z_AA4)H4g$^KeV9y*t>#pEhaGFZbgHE8<`HfW5$Z_Ny=qO3?*4T~*)K5p^L zvn6AK%NKw!SkV+JJ)PNsF#}ti?gaUyBXDR?7FJ&Q$~_m1lHrEBp@%a9jo9oLnsCDi zYzfE@TPJ0HdDeYwq;DBC&gTW4aa23X|UW?oH1*T=q4Jg zR};0(ijuw>wsOiTT2I48Ova<}^L=Vm+s=qUj%) zGOY<6_JIXW51_3+u;}Sw#Djf4J<#Rf_qf#5&S}n8Ob?+^@0mP3fHY;-rtc<%rF_+q zn%;rTVRYa-)?h{)z4w-_nNeMT@GWwQlQg3_)mfaC!G`A=WW?duT2Zd8&XgIU^x+#; zab^&`-IRsTjH%t=4X_FqWAT{mNfAnlXdqUMUViGrQItf!VY_CIqoZCi|F8XNhgTVq zUsoWsMiJ{UYXDvJnx(;I!Rw5-v-(q7_9bM!*|_+|^v(;mE`ABU(}2~VtEX%JWdr9n zrhgZ*rE|S#&*vFG&Amp5hQ%jZ=*;J=!n`GPTOnIJZzl<4UFWxFtfOb?^^@Yty zg$=_Ok_uHHNg8wfS~yaC_mGWGX-XeHWE)dL>E?&*Oo|^}@sK?PVxNaB&{Um9K4cwC zU48$0AZbj=Cm>D*XSBGI&yK^G^?JyDHuZ3u52fbp(Le#ALmx1gMRVxm`)uK&r=G7K zf{87XS3{Y)?^a&jV=3k~wVwiy8vOw%X)|Wc5l_Y9#Os>6MiC`19U8S6PiEtqUCnDHkoyW|hLI-fmUGMm=S<6IDG69~8@(?AL*pQ| z8Mg1>kEQ^R1e8g)Gu)R~p)~e3tH+wr>c6vbtOFf)D`PjCK)i?FL=!DppuxNw4{f1) zH@e9hrPd5A`ptUEXtWq$LsxPR-5k~d%IV+O*QuY=sNdOx)Y|1LB;iy6XU=7r->NG# z?j|c-HMr5`8z8_R4S_%05$W()JR7McY%ce&u-m3sseP0E$g72w z1tV3K(&*aPB-^ofs%X;n=4BM}gOuL7&USoPo&I(u(8 zLqX}3$9_wTtm2|F!Kw$D;4mT{{vs?DfeF?e>zmX47udM<1L?2}?8JIQjsE8yqZ6N^ zJo(k`j|lqTU$Oe>GZT*DaD?+h7WibeXftg2&1(M5Ki2ZqYChFgo}%VcZ26gLezq+i zr{*Ww@&nZT2wNUblR#fXZC@K9QU!Fh<@IX5g)OgB^Yz()4SKrwJe$9voz4P|ij$~N zEQFIoqj}~`rOo+_KQ;`bw8tA3^^;$@sI$$>RGWS>Z-A`3Wc_#m)uX1h=1UL?k&5TJ=xsZl4wOT@v_Ln{E-B0@9=P+Nx zF_iM*460D9O;`JumHhAwYriSPu>Mp@>|<^yo2EcRQcwDAC;QPUMbKB^FTxMB;ORuM zvJ1`@khsWz#}!&{wrx`j`sg()*wnA-_pi}~HYrEi)`t>r?#9Mu_qm1KaK3|YbkIL1vX zD(99|PmMw?C^se*Laeocto!a@qGgkJ2f98eQ$oI3hOOPLOUOcsq}`7fF^Xt^!ek@u zCPC4r;l-?7j+dkPO^s&PZ$z@d#psd?utZVr`n4ebS<%=a7gUZCMD1un%nt>ofg)K@ z1({6RE}|U9tR&wPu|tpJD5RYIr6g`Ko0UsrS=T*LZch(Gz>ns`*k~wH@(*XM-ZPrg zv-{b{y@B-S{VXtZhEKhXPU7Uyes9eb{{oiY+cT@tH(41MGyfvqV-%>)`1eNB^g{D= zxa7b&AoK`TAe*YNX3lebIB5M%1FMLOz5e#tit7% z^t-jJ^W_ki>1)wW?dn_XtIPFuqrNK%R%+T0(7whR;HT*i8QGV6QTp+>4EJmO2<^R^ z#a+Ke7jxF(#!0$q6?6TqE?u>Xwft=(y_A}9_cwz?m#@eO`y+^uMy&Jg5VvtFL5n5I z8E0;bD`9hP*K>KrMCRAuSjO!-^zyQdKW{IQ=m-m&ayOUq#jM4>Z)naEcKqHM|GzII zG$IYE5(h?DQyQ-p7sKHA*1|U5uT^C$mYXaCZsJ&w9V;%Gm{V>nV$bfMq6-eNeGk^? z8khiQ&JF@*7&CNufia_*iH&<0-S^@m`#_+%fmM@v<2s0_iA->R9MHB-E9fpjw-GiY zuqee&ID&*nDeS|;F1qh*bO-c;6c+o)lTJ!uUp;C@o29VbkGx^5%6$|{UoFgd_GlcT zpMApy7SyDzzR8$hFo}leCJ94!U9lQs6NknsSD~;V86J^ZoOJE(a{v`Y3 zpBi-M9H#wu0qr;^!~Aa)CC(YAU-kf_W-`CmGid9XjJ-VX`n%K)w8%@9gzzy8Uo&YXwD)W5bk``@Xz2C2-e|^c6_jRaY1M~int~)aY z{mPC6E@*+_c!3spX$s5x;O}7qk+w>8$LKtqlJW5a98~pKk9K(FrLp?OzVy4vtaEVy zoi&+#UK~PWCbOl*%}G0UrZ_avZ<4+L>OibGsARfF51%#Juso3nK|aUL4UJzYst502%5 zs%%m4%}74Xl~k*r5^I;8i%QMqi;Ks8vcR49BpjY0f)Q*O-|0%8(wW2g4;4ujI%v3j zup+rl=(7>>T6dB`NL}8uG70r73mYN07b!Lylf)7x>Lu)Xlvc5PNoBD2n+Lq8GWoiE zc_4PRxEd^yh8KGf@9@vvG@8Vyd$7H+v3GXCYLB`IBxte$fHYcCcY$xvWFHRW$2`c0 z@&lm|#B5t^6%(3O5ydnpC1$m=5EBTb21j5&^wlsP=SfDD-+fQ8J~rDda2Kp5Alob` zgr_pVf*C*p3vL1uEWl+6Sg?2~ui^z36yFtM;%s904_>5<-*uqcq_hGl2gHpbi|diQ z{E!#%p_}gV>t3WLJv(HTHyP|4tO{YgjSuk+O00lBy!q2EBDM^OfGp^Dz5Ays;`E<9 z(;GxQ8_aKmjPmUO51}{#qUACPw-55k8>M$;$OOpEDm)leqI=d`Mdo%0K#$ z4Z1)3fotaM0niMf-(VBOepAqo@7EFkDrp03jTnX%Y+D}?Zplu8G`|=x`S7y7WN*lU zZ;YY_4tUMGS0%4_Y*pgK+Xs+2bYvfXEP#xrZ@Y7SAn8DV>dq$zl8LleZ+<6` zG^E#i%N{}G9HrfR@VnK>1bV77?-@c`(~ur~c?hT<+gaWhLShJUlPgpwmnE8N;D72# z0C8OvMmo{s;k-*28A#*8<)6YxS3;|`lV8*#oe4dk#G~twZC*H_9D>^w=(QHdD~oH? zG*0T0X0(Zcx2#K2Neh0dE(xQr+sPm5l9r_0yS4y>4Rzhtyj^_~OgAU;vGqw4IysU5 zP#;1Q(Uu>sPil~w{9%3QEr$|#&v2rrv)b@k;iR2+54@eD#SJJvDm8B&)RRTqoL>$n z&FR80?$&^W)8f{=4Lk%`u?}J_nL}`O`>_>Y(tsFA6Mnq`neWjD?&c^pT9wqQHoYdF z(2!U>+*;UcAQBlXKjak}k@gkN0@xh?9@bS#ARp2QqGzeW=QRS6?f98Sq&F?B&I1~g zsjjo}_Kh|LEHrn^Gh6WMjY*4uSCJ*EVwNfI?|pRGUCVi` zp^=iW`G6)Q$je{tO}(HKL3gYOIi*Jn9?*~Yl)VA19wt~m$C*^)=bAt$lUwi~+mQ9m zXNU^P%g2k?mYk2!q~V83_M4%Cqt!Ll z`08~9&YN#)OWM&(SLL-)#EUrna>c>=@b+N6`*>l!t2OpF>R_{y!y}**(Np92<`&?> zrP40Ug`6_Hw(5crGL9~!*5=x#B&|g;%-lwcYqU7d@!Bt!_)xKyu&p%|SbYc*6m1h2 zCV`{kMYa80ttoI1^LSB5(w3&@p%dOjf`g?}HIUc|d^j@3!G{#!Eb-y1(Yz=cd^lIy zhwhM5+-j&k=pf_hgQ14%!%nqHxWgF-)Wf(vB|aPq6}GwI;fLA>@&rZuus0UC-u_kf zA-S5s?faD*yMYg1{wjBk#EKXU%i2;-~PonpK-5o@k zyB&dtYVhF=d?w_Ec);Vw03O_nbfg=H@y~m~z%nLCUfPRvBApsTo9JeC>1u)}a7@{F z_LUgb@f3uiD?AbkQn>rvg0-|yyzK znbKn4VBuj?aa7?o`R9_DoUAH*Z2|?RUSx-KZ%r(Fbx_9UOupLn>e_7}K<6Fj0X zX&dz83C!X_UN#zKG$m&tuMtsZ?To>k_XVdStI7xal4c~#XHbb#;07L%Bt~^UUb=3h zAg3Ji7j^4Y7BW2Q9~fO`d*Q+*c^I?%=9oGUNrzH5Ob}NTU*&X2%2bOfj;nxz2Hf8#tTuU5Z z+mHD3SA$4Gi$Iv=!M^-#ymtT;SnMH#9-2a z^ycMBDgDbB)75MRypzdA; zPDT-bTG*8bj3UN*a{#UC1+{3VIJ;V0&aN>HH7?BrjjZ^2A4{R*TDjRD0ir9~uKoiN9R<+cBW_btmpKmUL*83}^?n;#e)UtX(ahxhbn* zfKkSkN9r;;Z4^%6F+A%t5I0ktX$CX+E)Q0KkahJaY?By^2_V;xzos{s(-zwP#jS= zSXf*n!WRj@&}}cg=M$%s?5gf6q)$*Oh)#vPe8)R}MGjPH22WOklsSQ=AVshy0x1D< z)fuD=arSvDAg;XjOyWyly^%Z2gnp*qQAD9r?FDQ>Ft$ZY#5#S65OeBURZmJ0-}^PG z;l8y>Ng0UlUBv(Tnncl;uX)%k(%bi54Jfrl{97F_uKAEVPz1|rr7B-Ji*!m@_k*O# z3IZi?)7#>;7K%Z}=GUMfj@%Nl{GK1?zFMr^ME;IC|%x2 zw0=q(@v{?1HR;3)%AZdl_2~A7@`!lo0KUbAz+le)qyv%ND?J;-bTe$>KW6Uw-xt>7#Wy=ppj0z2(k} zVYTZ#xw6QI@Kg(#3H!T>OJEpvS?n&TgFN`GrKF|*SGU2}q!aE#kK69Uz+p3Na+I*U z^2MdlTWMAR@3)-PrKSL$yqpA<>zlLIvRetA_SCHp)-Yq_gkqA2N6#tHqnxQUtzzkDzG;|md zOQTt&fs_KIMXp^=!Bk4VBpy|}L5n!0tqXa$zYsM5Cn}3qA&j>Wit5~JCFx3kKDlYs zN%J#_=5G)uS_RHYW{N;+6WAa*sKac7WDITAE3p{ZH znM7}$=Y@EkaGu9*B*RDr`S3je?M|W)Ls!tS8ETBMF67QJIu*0(xv?>;8wdx9nqh&cVTIw zjS7BXP?Rr#U{0=r^)T-QJQoGqNGKB6zK8j;UBol2m5s;RO0sVtWA|*ki-qW7uQ+~g z7aR+X%$8s6BCiO&eV9MnLqe-B8VjR>CJ07_10V^S7apZqZPreN!c*EY-|)YVkZ_OL z2f^qns=fH~fb#i4J}ZL+dVF!ft_>EQ#mbjs__hoDHS&qtI-prR z_=WG@M_Rk<WRnFRZvS#J{(>j=tS&p*hd8nvwF!C5d5u2|1oX2A-g8;{K*{$wDZ z1G!qRzz&Zm!G0x2S^oyCNQw#r5;#{EqiK$+0y$+N1c&cDKy>b1o_s7W5Df#K)ljbP z=g+fg#DsdtMFGrA5 z#-vje?wu)ML`b4AqLMHI9@}W4^#h9AH(imC6y>BAhlpbB>jZED?y7^l8*U3+1Q8yU z&x1;^n{owma7*yl1j!Hl0+A+dF7lb9_KVB(BIQyRf3_do8Bl<2A!<3$m9<&Oh8v8i zc`B|D*2h>LF(rZ5JwU4UAG*#S!{@Id2xe_>B(*RUS+P zl!7QMwM6AAAl2d(`v5Pl#}xk40b(5Gmtl|K4JByU$6_(|TePbIj&Cxk&vjU|D;)Ch z>Yw#SBn)3?VD^XRr6`raIzbzBJ&5{>lf0_ecB$oqC92RP`>dO*bKvj z@e8R=g87qQ$Snzs;gdE{UwVJ9{O}+gqI-O?vxF-(PV}!qeA^+IMCR|5uN@*~2?^r2 z50eKq3ua21{n(jJXOyy_3cB-=Qr-Cs6ra)_Tdj8I+#R2EXL$#&dlb6!!EJVRut_Oa z4)^E7kCMhtHSatNzF@=uI;b`XplM)hd`>Ce;0`i-!7MrVIPrGs z4kmJ!A+&LzH>3oI1DnQ1<-tR!Pd(JB{Qk28(wwcJg2!9z&f?IgJnJimpCEyRHrp=u zI!Oi-dTq13;}o3V(qA|6KXOP_dT0}Wp942&Hg5un)*CeL$jdkJZnGBira+dUI@DOG_ykiSPytZMNl)yLZZ%lNr5mK0XUF+MODr<^-xOL}@@6++Hr=tBkGw%v5S{$;1{osJ z>A&(mx5#*UVg)~P3pTW8SMY1MNVRrft+a+6n(%E{tU%SfE=#=Gr>TS|c7q#5VVCw~ftLAc^eH&&Y%KyAg zx_I1LVvoRTlzOKbZ+(Y&d%7-ltXzxs$60*b9TM)o^aQ9g<2!H1U=Q+i1>bT9PAg#d zd4Wq7vo9>d`u6KdQ+WdMfl{?-etqA?;IA3@ldQPE5{^>sP zpdLLI+HF~ew)Aeu&psr+c#Gp9M7H=#+3gX5CqR>?$YzBcCa%S>q_K)^og(-Di<~C3 z$w6N22~>91Z{*HTQ0&hMcCkhjyQ3DL{EXD~UNRn*$8O2DV8yAP0Um{_7$j#rBUK5h z%rE{8>ygXzK&0ogdtRYR&pU71^4 z6F-xe{6nC3cAUeP{|g5-1LOIHe_>hhb~gX(U$WH4WwsEKi`+0+T7^{N%U;0IQ(GwmK8K@abSKr^M=h<2PIM-}0r-j?Zn z`WvW0FTVE;Y!te0<>lX!blufyYBXS51CA8o1)}lCG=B0eY{>3U+xHG@{nT_G{hl=Q z7&q1CN&u`ij23PFCcgMREY_}nDQ|y|YMM>q4?e(#y^*m3a=|1k`1-o^l9ByUTag!5mP6FiYO)@Cp*(-9-*JvqWK%_2q2oKwfv$p4Rl*E7UZbklz`o$ zJMYyC9xKRROe)GjF4URO7o&Nta=#I-h%t@BjNF?^6KZR^otBsk)&&i;8IUWph9j}y?U9xY?-ZG0v~MQL4L zzT--3Ni=5!FJFny^XfSajS`PxWBbFAxzjMdz7qAOwTJQjm1uQ1#Jf|8hI_mjY?q}V z4h|WsRi{+LC@hfDiSi?dkLZe1kWgMR)h-fj%^b4(iXp@}d1{S!;e* zKQ%wJpC~6~_*ETEqo@1w8NRd*E$GjG^o16+tv|o(OMB9>{dr?QTAMcO&qw&ts&r8w zp6Exb*V@!tOh$<~L9gL38JWcmcjf0k)>dI7ROT1_z|1kN`Ex&7gXY9=Uw^uSj%X!s z_owR!apv8s(ss0OAHJe0-RN%J+fEnPfjkt58C>Q(izXNDUc;^Lz@rJS-Oanxg6_KwbBEdWzS@Mjg89`9E zOL60E18Jz=!{)+2>^jQL6~ezrOpolr69Z`=&1}xs2hti)eYt^@(cR7Dp+VG>(l5Ho zQ>)Q1IGt(2e+Z#>XuGaF0iMRA-*=IHo6tx}{z6Y15c*F?zMwhnP<9!%tH&Mq#pd*P z`AjV=;s$=FCEX$aTnBUe+VLZ;sE_=zF4Yr{$F1z)iA2_C1w6byZA^<=!L524<8=Ur zokM?!CqulN;1C2SmeYA&eL9RzZo|XF!SrTrd9QF9;q@>~xLAl{4$KqliQmKcnsBJ4 zZqfXBIMkA?m-{!MUbK7=-1IYDD?Vk4@RnyZqGbtvRh=io>lJi)3qB$O{CnIS{Tt^5 z&u%0&r(J2YCNlU`fzr&zGPrYx&?^nmlbf#pz&#(+nWSUH+l@n2ySUl*XRb-!b;38dLc%wLcG8f zFtQepHqdHtG&9OT>ygIy2Vy9^#=zy!M~IHne57@JF~UIxR&4z+Tf>EC?U4|`Pj;YP zbrA-q|4=$3b?@yzbD7u_5zJNKXu3B4J_3wuI=K1iO>i>`!2iU3ag&{@P=j_*T@ z30*db&yAs1bo+elAu@uS%Kl>?;JImk`SX4-%+Tt-^78(41a+#?_0!!^Q$A-9bq{&v zDI#?Px@@T}(np}0vs>cM#O%R$4x*v$)_9kM!mE8344lJmX^y>E-7Vb#5w-=N*e#v+ z6uYJ1Ssg{xE4LRz`d_e)x530t=#B^14xy2OKYDx;Vj*Oyjaq8&^tp|u%CYX9W>vCB zW)}`f@dx?(Av6>>v_oh(MDq0zI*riv@8pTY=w2r}#K1#F(TPrT+kP6VNbWzHdWZBX zFG96U4b^JAK%*K6RC9J?4Anyy-gh(&ZTPA}iR)fU8xbnp&cTX04-L6qQVeIwNQf-Q zw*uezw2}gg*G-jAr*25aiPk)Oake1bFIS>R-7j7)MG&fvl_H4U@@^nN&FT2|WAGTv zoG~;xcxaTUkC)9veVl7+uMbqN9CP8-#?sh&u`Zv~huEQZ{*)@zHg@5=#!^o>$vrui zhK9Xyc3?GU??SI#%GxU^4ha?Z@XDXj9=-`s0DI2vt>FUC@v93_SmFEgS)b84er?N$ z;$LCVgW{}`;%~}v_c$6xx0jJy#L?CgjcdW@jHe0>FC&kgKz}Uf+UPB@Hc7Kq%XKqg zhB+O{ht7bWH9At>GlO;}9u;1al8t88Td>M4jk|qKQ|R{B^0!~pU1eye=e$cI<+NuZ zzn@4g^!KNH>O5MVE_y0|H;)b>ejT3L)L1g}!7&(!a?!t9&$xRM?e4MlFS`m+|JzgL zDM_?QA|CSR3+c2nUOv9yn<*J@S?RYkpJ%XcRG*;{AJN&05G=S#cl}{~!F^ksD=i`>s z-t^8NJbO9aN^9TY<5tjgYP!W;8P&nNR&q^7afNwH?w3jjY3bc-e9w3ETYCDc+-(g# zPw0#*yz2M#5Ouq3B|N&wx38l=&@Op4#09x(I_(b7vwY$P>POq0=cWx59u|=2Y=qwE zuFEZn4ZL>}Fm>Ng^k1p6{|TbLGh=<{V4Rj~x6%f5UydBPmBN8>&l5a+8}+B{j?3M) z(KnQKJtiA>(sdGDb676eLq}8icv<&MaEpeHkl)Jmcj6TU)dWF4@{c{p=Vkuae%h~> zF4G=l*pb+R-1Dg|$fJ;G_6il3>;XVmzLbf0KQ%cE1ez>+;TK{piVQMeet_1e_xH)i z4$vRqvAliq$b(=MP1!By9-><){kgw9^(d8ySHgW^RpCp!RdsiA^D(e$#x}cEZfLw( z^_mi^jy(}pC5cP6Gg@_Vht(lAn(80x?e@vkFGPwB7Jt0pvqPrB~ad1}`UOt8m8K3ozHd)NIOiDr04MZ`mN z-LL1VUAHSJv~}HS@oLvCOqAhnCafwg+47&yDZD6rG+uW7myU#kiCOZL7xWyVduQ_K zSMZYZue0U9Ur~5BmV9l6u<2IFiK%kwL$8_Bg`HK(qkwk9~ z-~)*C1wB1UK24-;)Ps#Ht|bQJ%)k<_n=M+DsqQ-^T#Mkz?1W{}NfV zq9To4yORX{Vd!g_&ydzj?s@;fZ5QjuC6_7JzL$-&r4ht^_;WjXmojE8-#aHt z6XK=nboq0c#Y+bWH5Kw62~u6U>p7pBAa(L+^Q?p|6_v-T0} zH>`8`iF?A1@yWPQ(}B8hxI!Ubly<<8vxF{|3l~YB6Pj|54_OS2q0<9CZ?UwUj=s;s zEz(A*@1NGFboe&+rM+&+byrD2W$ElIyvO&_ zEPDE~{Ok8pD<^vR0xzE~%_6SyH|f$hgdRM{D{h2*IoY&P@}l(SX*umD$xNgfxf;15 z4vyrcynKrUW8=!>Joaa4P3Y0>1imx!<~@WiYPtkwTeLfX1UtiyeSip0t*<-D1Gh<4 zLYJ2yEm75x!J?h3BFkEl!>!11|BLLWB6E7HG6Pj)aGMgOIVzi?+K758av>m+Y1}8{UT4Z;RSxQ%tgw-gk0CyNus@1~Wa!MjlOA*TF7@nv~o`8}tND4=l zfhufN419_tQ@GmIJ5;>L2_`=&I9HqipLsJVDy!mPU!btB8+;GYW}Y5yMho*4VIF*P zPUX7~e0Zl_Rr$zCST-u=zD?y~Zw!Fha9=RrFE|5%$}!{%Wz2)d1&gpw&4yb- zw(RBLCkw-Yo__=cg-bHy5}Je51o!Ni%s4er6y-Zm5Q z6RYr|zF^I>x_4G(J?p?4rLw{oKvmX+1&d(51KzWO_pFsSSLKComX@ksYBL%hG_cvM z6U@1SIajSJplFn9)S;0!uztu>e8sa=MePg%9Jq4AX3v5}FdTz9w(ljL<>oz-U&1sM z2E&2P<4^%RA`~C7T76Kp`k;f=%~VT9#T>L-T}Ln<6wC*$k@?MyGzV)YsPfb7 z@&^dkG{KryaF(CnEBOs;pu*PLVX*?XR>0O;jb5#4SnUwkSHR&2Z5!46r*3sATU9hZKIVM2^uM5{)5_B=>gPI zu!tPPG8~m)#8~DK96jK`qGfiArU{Fd35%9lyjfur3y?i><8q zb{S|*!GQ7DeUgjU9^ey|nPQJtD4)Ae(tAy}6)mtA)!@JEll&7L0v>6@CE9WN5bQvS zLV2Rv9+Kz4ydd;vV+uq>Ku(=hUVc!mNW~Jnlv*f7@Sz})C^!TN-b)zb{Kc-d-wRd}XGjVYK9aSq@Tv zh1cIeH$HW5k9d0_6=^~$CP3<}EGbAg5AYb~)HuO`{T;h|SH34psu=>Yup1nqiXQDC zx+j01B{kMPerFXE>mX(TH}02eVy)Oiy3Ph2;s6~aY($!{5fdV$ImrVc2?5h2Wn;?0 zq&^@EyhXa*+aW>{(uAY|#m&)O$mS&XgBhv@m(RQYQ&U-#;G6+j7Pd%<76QTX+jbv3Yx0M<8h}d3R4cE!c-uIVJYnb7heUt?cK<#1{@E<^ocPF*1r9;_buAquy zSa%B*kq# zA-w8g2#bAiIsH<&Qo#XsONd395Q_ItU66T68CAW4{rCH5ivzL149Aqx`) zqB27regte0K=8#&+m~yD(RFEVrRBs^JVx||ekS1hd0xNmfF)*={ zs{9tv?6pycKRgD5Tk&&Y*bRrW#ytEulx3=AR~*V(@>$0nLN*>y!k|2Xvl-N07=$!o z5GEjGH;#infvViI4swmW;t9}s72Y6#Q8L$|tS29UWoEVPghSZ?o(^RRZPc@dEuGxWt#&s zC6o`%m3$IlF$&MH141nLpbFKsRZ8b3$~Q<2g7Q+-rpjcb;>S>ITH8)mhWrOIQt4o$ zmLR7o4L_kJnA*-%0+5J?lmO=_Oyp9pNqA4m>@R4H(CB?qbSAXtgm z`3n%dt28)440kD=TPWYz$TlP9lMVL8X`UTOKEfz+iz*%z{O$MTn6m;(`flh*v{W6@@7WQNuwmR2I_hl627e z%;FQOLJ}6L5yn_4b%3Q`DO;m+l2?`}z?4HB7XKv_Al_;+M=g|0uDeI9Q z1oTouIx1$Bnovs0T9h))CZ$Ap8j^?phY+LE5vV1&jeyHZUJMRF0$LfS90mnnK!XjV zQnAE3D2#+n=4MfONEDTa3G1kk0!dXErW~5VIe2^<+8NSq7A#n_O-MqTkc0_X@w7fK zd6(KZBmt)|V}ancP0@P=FVX}rCWIC0D9|04J`G|gCDKN(ruP5SOjlFLKj1thz};Lqrpr_s**6} zAnEZ#Vbe@(=5|rJLKK39C`_os0njx{7Vvx;>Mlw;QXRSzo_8u{8@ZHoU6tubEj>EJ z*=6T$%5WtAPY;PzIwCy?#FY}#U1?yW+6SCgwk9J9l5$gEZkBCagon=n`R=a%hAh zsCtwI={5^sTPGwTO-LGzEmU<48;DYPPt==(6MdAM|3U4mocIrFjI!fDsQr}H|3U2! z|8UTIXrcBs=YX8#Sg=P84yGLZi2)hl57O=a6bgTkCj7yKwR;YMq$&wh4wA~Nl8~NY z7gZ!gAyJ6JgjLi4NUEYRCYg*jTSx7{pkcf$b{jk>-!>aNW*sKGr^-;fh`5;rdigb0x zw9yr$yCNMs?O4-T+x@b!rd}hJmw&!5j!uC!oPbBC>~;>p_jk@MBpUZq+8nr4I;A}d zm&&KKzre-glr|GCo~N`s;o@~ly9F-Zr?ea3;sft}<6U9#4l3)p$Cuvwjn}>;H6qLS z@JmuCTozoC8v3Sxj}wC--4M>AGr|_=$4Ribz zB@~GkZRBN*=1>$`WN~c{X)p{Q>iz06*I$vob2|VF5UZT~%Fuj%@rvXTWXu<=LoNYp zUzK$(q^+#qUE)qxrBS{v5ZI*W#ldhpFTT)iUk?}c%FFTKYm$zyzAAYT7ryN(%wg~z zHGw9g0y;Y5$CL%nQj`&#E4~))f{O5s>(?DIVE~avXZ5;FsQRZk_@bKc397JsS2;A{ zRdMh?E*F#Dzzf|aGLpJlh24ZNe;5Nm*`kghEWR*hAhvt`EfBlJMbF zB7Rs}lNkRLtn-7^BEvIyCZRB89?};X;O07J5U&bAGNw{eY6|rz)K;33QbSJqO-d&T zY8h}Y|5qsLR=8++4S`1*-v36qi%LpUmJhU+E-EQaSw5hIW-CouUb}>5D@|FB_exZG z)>0iP(F#LRiLE$gxf4J5yVNEj4EjKd;gJaPLOjq(F+9YKdFcs|WaWB>7@QnAs#@I=; z2l&=0ytQaDY~)*RN%fr43R-LUQGX{LKXFU)2wW@vsW>cOD;^^;8`hc(X=XzjFqna- z`X5qj6355|AVClU4TOh08x05w7!?#1?M@(}tD8WBz`>Ex z9tRN_)CQ5DgV-PNp?pH4#bd|7kQRjm$Z+o3BD0y8vUVL3hmJX~6b+9%uYfNh3^?v= zbLA9xZ0~o0#B+4)QIHBpie%D)RDR|j&p2>C&t6Q6NO(<=u#P)N)gKK4Z4WO0QS)SO z5N~zUoA`%g9+iWtUiqyy?=p?Jm&w$Ta6!Z>(BBoulg{QH@Ljqf(!r^sT5RR3e2|gy9zz3yy>eVJJgyhrWP(LxnJu5y<^a0Sskm z^0K24BY*r80q&7Qg)o#+>@5kZ2_&Q#3}qDiPy!gr6A-;C5sYO7NeN&qBaj<88eCQx zd;#l2!SX7ybGi>FTA($U;UM1oYG2v?i5f6d9=5UY$%+xfX~kPdJy0 zAz#2&Bwx(^!ugTDKn(fP*`&(?NTj~mhFuW_tyn#~Qn)I?%2z&53_0oS?Ks?CEIkPh zqs8JQfbiYutZHYwdOj@GA3$>N9U}ILvxyj2?VQ_Ux?R?@`=2}p-~U4lLYjE%I-`m3 z^)#BLQB!UabH8*B@J~SjwG4(w6vJ2Rfdjis2%jT94s<+Z!N!9nl<%xE-0NS;JN++s zxLv(e4n9UFc@4s4c-Vu{R@rV*=ajQkZnzBR0kP(BSB1+q*}P)xsw+-82kJ#)?kT5R z_X=^!d3D>-SQXh%RCkF%Iqa43)+!f+TN};%&uOq_CGGg;NhQO1MLeIKBTX+X7#=fV ztS7XK<`>)scYzza;?fM0T=Y31oixQT{XmUW1C*Jk@DdnNgG6?z13#Hp~Y?DW&Q*j8DQ z&ErnF?8I5N zpc)*|&CG+DV2_R9t_?K}ti}e^dcFAL8Rs?4&f7}@9xYM1E;!&HL!8a^z9RFivw2!y zx#aW}-OoC^JHw^*#eoGz<3Z`NByxq6`v1iWiH;7Z;4Ac?7T!6kMohJ&??bpePn4f^ z4%6M@)w9n2ox7=(0mZ_>JWyvmbFDKK-<2wjr0DmKfaE=h$eXoMnflg*=nguD-J9t|Yqz017NMjA#- zQo)UH**qFV$V=Efmg@`5FKlLwAX??Y_Zpro!^ihKkXhc8TPhsHb=s+ zSe5mWDZi8;yO#Oz>Pu1KaulF1Kfs3{lw#l4v+=O+;C9- za`!>29OJ_>w8}O3e*bsQ=AAIHCv*K_PvA@4ley<`+k@5ybWR9^1m=eh5aIH4k$DcB z(bYt<%FfBk;_8M9s9{sg3x(7)3WiE;-g>?Zh5~k48e(6m#eL>PT|O8w8I4+G7V!!YE~U|jW2408snKMW zq5~(DL5(JBh>IAXa2c#2ImDnYKusg;RI&?vP-d$%pP8Yx)CX9M?lzD50D0Z)#1U>0 zt28B7I&6v>-Z|#M=B{ew56)w{U!J7N7e2LB97-#%>P)Mwvs8}5M0KWBmTU8(*f9sI zH^8e|jV@G?A1>Plg~_)Lj(~snf{v@c4P^FvfM@-~diE3S$_-Z|ffG24A8Ey_&%$?S zYO8_&T(C+LvQGFWx&<<;?h0zevXRE+{sd}GtF85@)QTY}#b{Jojvupu_5@XENx>B* zKNOiLs{psb2p&T)mpWN;J2N*Np=iC3-i5+QeK!LFQc}=VQh`h(p zqEFXN7LlKvmtRRL_n|7N1-ZY8cw2Hw?fCyW7LIc3HJN5D%HdsjZIlJ_!=LsIzMcor1fkR^0W?H2lB1T&2T%!IuMq=4wjMoN`7v-3zUSxHvoPi$jZ;nf+L)| zlSHD>mI$VxI zqyTj?ABN)fd{zFc5Iz(OUbCd->fe_Y%{^FF zr0;xgZ77y`VF+*55Y{yLWyPw@UAfFtF#flV@2nL~HXKqFmI|Q?G7Ai$@#Q^+YFuA% z7(I0tt|z`UT$!!PA`vo-R{gyoRBH-j9HzmQBnG`O6Rh}<;PB41IJDx1mK;ZqmLY1RHScdR9 zXL*mIRo+*8W*BY9=VAIw*0f8CvqTmL1!2!mY2|%id7m%uF{B1`(Q31$y;x-$Ic_&Z z)LLy&wY}OLhQrv4R~tz6p=q>fh^gRRp_WouZSpf*kXkJ??>#D})-hV%fIQ6kqD6&j z08H647!8XGN?Ol$1EsvEbcS2Gs7PMzMFnGcP3bs>)|6aYQ(UyBxIiFWj-geaEAKJ1 z%5!K<$)+`hih*ki_A9R`*-{)stGo$>Jis?jhBXBfz$P5IHN%>;;F=gwyhv6 z)j;0BfzLHdeto&7%%h~ZreIRJrley$ttoh0-N?YfX25N&d8)Fc0V&rM4b#CqMT%<* zrhpwga$$2jsIJkjp-R<@3wmCZ)HRx3N$gs!Fcel+{Ae2Nc_D=4@*YF0{2crqoo)=i zMJ0muMb;YEm%llGv%aJt(Z4VEX;cg4MvChTrU;i~XqDp^*=nsXT~!6Tas^Ic{BJwL z3DM%V8;zEJEHA3V&?>Jln*>9i3UX+|v<}jf4>l~pRW^?XF7hHaPu*ET7w_Z3b_y$) zWAiw63?x2kCsxr`@QBS*Y9M3YenDYajTHI7l{hFWi@n%&TQsLv9 zVfeiDai2I|&wvjW`b18BV`9@kqmT>66#OqNe4rCH#?{+=qN2Vrt;wk0M)j@wzP{03 z&)zb#Ms*UC6`qDq1+Shd+!;phuo25oyY}vXe*g3K{~w3_S#S^A2rzJs%|>FaxghI? zj3&f5&x`>p!7=@jEF-6A&F|PgBcI6;6oAb^ui-!cil^MXT96*tAFVwt72pa&s*qRB zyv#l0M)ym=TPPWThGO!{LBk;fdy^Ahi(WLe#*``z;hp&MX)QU8OAW3u1*c)x0;PDQ z0PR9JCMa9%f3MxIlr8c`+dLI(1>M8#K2*_Gu$#@R5nN{TYUGw8Z}}nDjF%!J(9r1R zm+hHvtyB$~AHG($D6mwM=7-jh)#ElMI*7&qs9QWJ@&U64dEa)KJwIP2t}yr z!73i1gIKVpMyTPDH%~SM@~Cx?C+*^XC~7D|jf2c@<-Ds9}&thoExd zl8uGDV$LKSBuf(V=x`I|f}nZ%XC7&Eh7Z}mbU?1y-OSkQxbJ&$Hrr@XwX(SZ-;25M zT@|1vy5q}lh1t^h6h1h6CfjIP^>a&OhtscK*9X(uSv9!L+%pr7*q0& z!!kV#bx1`^8}jONtQDa}5P7t$p&YGh$WvOZNKmxSGMZQQZfi`|{c(Im!5=={URjBT zV}%Z{MC&j|$S0YN4%HHSWhGjm@efrTUWs;QPK1_U{F4#adYHSZ7Wb9;E2FjH${n@P z;gx91WwpE2?JFzMl!$*+WHj^Dpja(*cqJO?IsLO@V0&XrdS;syQd%V28|~WAV7RY3 zxDo~f3RZ_!(ojL(f~vN;MzIc`8m;JHyyUnePmJnVvnW^7qFm9@sBk)5pNTbHVa@5( z1=bw>k*d{Qji$P8i7nlXla4=pN|9T;8xN)FxngKk4_9FSBhRXc$yQtf=Quc!h_{1zp3r`BK|p2u$vg_Tq5b58Ai3M@ z^f+`V{a%}gV~}{eZQkxSvWGGA^Bf(nAfpuWz$o=zKckNy2LdLAoXHd_bH?GtTr!1X z$#Ha1F7xbMaL5v`*yfRW88h+OJRHj;H{Iq%pnz~rje>NTjF}*lc<}2}PY*U)igGpQyF+^gL0`3v?>P51q#cmI?$@<%RJ~byZ?gw z$y7=WO11W5J9}&est2u#Je#L_(5i6PD7CvLxSuSMQmN`1(3x$gSAAnu)VF!6Z!A|u zy3JIbV^uVgW~L9qq+EL5S-{v8E_Hr{%edDerj~=z!F=9 zYBH;0K@E@ZtcrAKZEV`G-DFmU!8~X@yTyY0l~oY9s==V1nw=h63=haL^DLXGnhYvm zqttG(;C?bX$;MMH21?i4LsB)FRY7l{SWwks797E%q+W>o5WLt4G%Tr zc)JXE*dp-SJGMsj5+m$H@&>8eg92{*qQ|xUcK7F5?k9%auehZ9B`Aw%2}oGWgh)nqpKe$lT{c5pUCH+-?is& zg<$`U5a5o+S{dWJ%stmmLJmxxYbWQ|g~p`&DR4go-&_C&$M!}F61`M(&x@i*B0IcN zzAz>I{SFU-vxUk$qpn}_t0ezRf4^^me_%-9GaYs{;Pnkj?5J;QMZH@0wYo4ZrT=-a zy5O@Y?|RlfQd6G(#JqL_M;6&)6Kjk4^DsWV@H)OySYWCVIDS_SCNda)JODqSJF7S4W3VYotfLGXYU9=nn7+KY?91uN68GcN- zYm_mw;U&@69uRFu8{NQqeUXKBAS(W!SZFuB2q(?|(n5==z|aFB4dWbPTWBZbK(S6O z$FW{H=<(^b9&P{o7FzLOq0!rMKCKEYu8no9;TL0!(aou8q@PpG!8t^Z7;CIVp|{2w zZJVEX0gub2uTgC~rl{*RyeKryYvdvYL*#SJ6TbL*>GBVqusBHmzw(8Q}WDA&hx5&tX^uIBC9V(J$udXgx z9z3*;Vz){QS1A<(m=~G7#IlLdQ%yB##}XNn;7AT~IWh@)3lmtC+py_sdJ7`EPKMqB zx_dJ8mc9pjYxBkJ3z4TML;C`~W(xEc(Bdh^f~Hgi*<099vbWwAUraIDqDcDnlw|7l z&?SKHzTOz>r>fvTh^XZy7{u3VZ0=Anmm5A9OffGU!QqUtaGb(-;fT@#$1cnZ*;;}@ zd^ab3N=q= z9xS($mj5W$PBq#!Lmwuqaw#@)ma1oPm3VckG28(!%?+m+otrI#bXMhpi)B`bvD1w4 zX@(QyiiK~6(Z1ONDd@XcaIyGo8jQ(RB4fJIU7s!nPB*S>hHt>&j()LZP?SzLhNt2C zyH)8$l}$vKX+~xZMHcyIpE*2>f56*zBgW~WE$a;#{ zF$=P$8uz_ea+T;elWJT#)2?y1i)B`b7iZcv&aGWz*TsU1#kg6r#`n*HY>O#dsxg{h zYc+IGd^5|gan^5Yj3&KW(gAUo4+?-j_g1Ar1)zGPakQ3TiKshU*1OMaqr2Y+O@k9P zTsocatkQtJ4VYr{mf5^wo43^FDJ@p%Vw;HAYpBCOpMP zeq%Y@3s2YDo30X~7|yd{cE4W?XH0T-7ba^7tPmMK`7z__fj zoZ*G<))HPU!gGvPFuk9c1IO8Fgn>(>n1$NqurEAXD?w1C%{2zmEH6AHJ}x#~jpYO{ zjMtJ1i2LV48RS?m+h&R8t6QiQ2D) zL2+`P-4ZKmx5P!S5@P0jV|Y5v`lYZ}pJBASoTmL^+_2Rw+a)kn(7yNWy=I!pm)Shn zMfvwYx&@lH4X6uFosIyFZql@+_ZogJ_6WRf-D_wik89fWWsu<$APCg`q^6w%nza)O za-X3E{-SBCfJWcfw4*>%@G}Jq{GjkMUE2ZFlc8&;5%<)!q5!1J)3qp2*GyeY0`<(+ zwQi+Ai*;=&Q1?x`cBm8*L>Iz`AIc0Zd7rLL2kKg{YukWo59!)Dps~kwZSis_;7(mL zR)Avod7FHo@GI`x3ZO~w=S%>N{~7d@8=7|?=s^l!O*jHH>!7ZsSAg6hT?+yYyb64v z@i*Y368@DS_^z(`fW|(A5(D)mb!~JIGCZkkn}E8`>e>mQN%*NHp9S$hK#hS$G922n zFch?l4(%w?sSeGx8sv)|S`?`FR)^-FvIZEX z4sAEk*eVzZ5m4}`L+b|A{g^{5LL7q(kREerzICAJONX`tX!MLjI}bDoPp8}mKu>$8 zRtz-S%c-pbn)Erfy+9N9IJFZ%OO`pc-1Sg_`#=t;H|Xr5#o#6tc50sh&06Qwj17RF zbZSAM-ghA(;)RBmEAD>M80`1L`*3oaru*O}J!^)hyJtX=fhK?^!F$Scqoze~1pb|x zGwIiKZ&=e3Yk;>=(~}z^&F?fl`mm;XAJOzwRMXsBK-U(~@wldY;7G!?9n!p{)o~rt z^w`Ug?sd@p2FU-Y>8_tNzu|@74=w>SY)La+_rgg@vWu>Jy2AddJ774+E13fE({#f( zQ#ZV`bv=2bo|b@Ll}&+})wNhp%UYs4+;@R&Sl8U^phq7DnTMh0x9M8oPoV25(D{_E z`(iMhcItZ8E*M_BbUg($@QfdVJ-X(Bv6rf5|qHN(fYt3 znfyK6Z*w?Y?*sl66nzT36AnEA?oxqM4m}HYd%g>xr=?SK=Q#C57pLhRHIYt_a~0cq+kMgFfbnl;DzYBp;{ug7FWe2p>Zj?;1`t&ePM=nsDS{lJkrw99=>* z^&|29`20czK3IH^#&}d~u)raXa?Q6h#pfFG;{l?s6(kquCXL@s7@xN&x0}=LXL^L` z+eCY7flO+`1XJ8XU_#vUAjLfp(oZ`bMeGfdAD^=ppB6j7gPGo~)4U6|%Ey@u%srsJ7TXF8W@3DbL+ zu3);F=_W~G`FNBWJDBca8fW?%(|4I3V_MDhTc#J7*5S#U#k3{UT&6vk_C=ZpO*@ns zqnS=(>SKB{)5S~^Vt$p;<|^E5W6$7b8Yv!B;-8}Kz0|Nt*mTSIx#IaMI&4oOQi)SU2`sXF&h z1Acow-dHsI$yn@2wyIk7lhHx1A84aFjf4z3h!-vx3mx%JqTA2L*KHy_Az=!hJC3Ug z?$mx?wqj@av>ox?0@mU`U*xncRwH^jQU z*&MdwN5v|KnbRzWo@Fv_dn1fn*%@}fN5y`JIoy$WL)3Aa12YnT0j*j}hS7xZI?Yaw zWJ28SH1iy>x5U#<^EOBHZPCs!`#KVDi|K|r#SwT%>@m#oj`%y`GSlogD)15Nh{`Y~ z!(_tSWx5bV$ zv&<2BN4V3?-i@N~N$v+2CjJU98BVc(nwc;DoNhLC#6A^orGYve|MkkSDY?&Dz$BO5VHMkQy9yx)#t^cflM6F=28?`RS~ zDC3V{82gKic~_KO1~IX}O7yXeKaOGYdr`NZSu!B?Pl@^OE+qORL}`gF7^WVp+Fj4QQm+%;hLRg^Gz&zJ248Szj9vqO6145HXsaioDcq;=}7L@5kYGK_sA?;(VlbMNhD3*pHy+c;w1irE?F zH7%3hVRZ6)45RIv~yL$hE1$aYMff>3i5&tG^4 zsNU3b-u#>9LCv@Kgxc=F_$Y=(AVMpre!M3Dx#1`b(i`b2}JW`=0q+I%xT z@}P`+P@HLPhMe&&4TP(e*;Z_BV-{s656HMLF^qnVVd6W`;Si%vf?H!3mpP1{x9G>k+ID7BeXV%Bo!K`%atz`$m<}h~nFTq~ZLq7AyMd=B;LzPY0VWgh zV9;+DBifro)8pF_#dnBx?aeD%MxO#?Bx1-*$}qB1-tQFewKt2K_Ac=D>@{i9t+y|p zvvk(133o5NLwjkG7?W!@cSUxgVC>JBVXxncg+(~mY|-NPaN_RB`)%|K;)Pr@yJI|> z1xgYxVizf0TmeT?k2$j3UU#%^e0rA8T~d z2Q)a|rPs^sQN$?Wx4I6D)fRLb<2Y|g?_iu@9AF&jN;}3!7^fJ&z&OrF4j(g47W0;~ zni+V2jMZyBnhKO;Je{$|d)sx4eT)-~1B}f=N*`t1pRw8#-^#eezko8_%?!0kPALVv zSspTm6#976yq+;`p0U738RK~g;<{r=UhScWGuA>BU&h#9!ly55n1M&)sKDtZ1(8Px z_hlSoyinqrldE-?;HNLaM>xGY={iZ+ua#`24C;^L3>mj)td7X~GfwRy`I`X4X}jin zhVU}RUdHPfM-Ec_Q;ZWY6Fw|4G?(WvF+OF1tk(&jWn9A898VdRyi4&pjI-V&+>fz~ z--o@7y^QBE_V58-1!6qjNigHA5^&KA^@ItOp|3sRC5)qtk13o>@jo(lcOaZyMCk*3 zGI%v(H`o%ei;DpJaUP~x(^0_fz-SFIS(6E`lQ>}G7-Kibf5Y+t#@Q383l;V-j&l5D ziJ{B*pl;bj7_OM1Vmx?>z%Evx;@@KIW(7YmMk4~&sKF#EKx`S|K8zELZ)OY!#!~*- zNznh;0$KMF<2@E|GrnRn#d{f-OAPO{jGIis_!_+K65Q%~O0VR%N~~#7PT$){^r*#O2~#|Y56XDIwvZWKVrWk=_B})j z&M^)!UNnnagmE?F#P2ynAH}B_&t;s&2W{Ulc1sNXzic)o@I^^Mf^mTH#2Yw6#vd`p zS9xraK49#@8lu4p@$VR;;R^9i#<8u0j{(MoD~=fQ*M4M%hfnew6_bFA&nCMAmVL@+ zpz|1` zF-DUe7C@U%Ef(29xH;nlV>jb0FzKN@oJYtm@IDDf9Aw;}6tKX(N&({s0b`A{_eg#x z$EWJi8Q3AlT7AMFGxjn5mT`pfWj9j+G=Bq1(1sZ$jQcV6W>EZCz_I{fgv0{h#PQ(0 zAo2Z5p7BP;5ynq4jx&B4u>tEpn%7a`2h2b-JK|G}(cF&s0%J70BhI{q6rlMXaXZFn zhDY3+F`DBMk6?^udBoEQ`=xyz8H-o|?evIC8Kb=(@p{H+w@3UqW3b;#{5)ec<750A zjM1ErILR2z`iQ@i80H_^_mNQtwqn>MXy-@Vf-&0r5qD#Zc7Mc!8KeCl@p#7Q2Y`4E zWAq0=yp(ZKfN&Tw#A#7xJj?<~#yc6K!vHEc#26h15P!h<5aX{HqaOjr|H2sk2@p40 zNEJlC0>m8w`?1F8V1SJNEP##%h{rHCRuH~{aX#Za8Lwa*VvLRmnEqkL=#YST7h`lx zKzw*1JpZu(=%Ij&k5~Xb6%e0cj2;V!9gC<2=(&Kn8RI5!kcYSnV{~Ldd<|oCXh1xk zF*-INp1TP89}9pU4#>EN1<=z0@oJ?IJRJ}}${0N#5bt4(9uSCMV~m~tNwj|jxy zGDgn`#C80)QUTCK0vRnCqpJks9*ogt0`XAB=sJOT5@YnBKzuV}^rS$1KV$T$K)jAI zdR8FzZ)FC$SRe!ct4ekW$(LjNzjL}yE@gm0Pvw^sbG5T&G-pCkTI1q1VjIJDr_cKP94#aOWM%NB$ zUOvGL^zlG}9~kFuB%FR5)S`YsE2$zph;f|p?TnL*4>BIHm-PY8XaHL_#uIKQd=4=_ z|DR!o_8cYngmF6K?-|!+oOuT+$YR`?v5WCKh5t(WepdLOgzsET>0K>Mdj4->MqglH z3+!X;VSJ476vmDvq`=2Gm+?}@BNzu5-^_RuR*GXZ$_m4;g3Q zNd-tU?#1{#V=rT^B~@q<<7~#O8M|8gN#HSNcv#>yh5J+dS;iw6H@=Gs;AISU3oR3x zE`BAydNGb(Pq;hd)GPF^n9tbfX9nz=rGk=|NB~~zCH6i+cn#y^J)|(IH^tw|IQ|S}P|Db~oA3jSqm1Dl zQ>I6cIJiakFp1-JNq!Mwzm|ai{z3tGA&~+uE-`H13D2bX-HcO5Nx_>co-tU7qN2=8U=^Ag5Y5nCwHn{X$_B_6^a#_$VN!w6DG}2bFh(as z#4{PYZYI1(#TOHP6R;m^gkFf4;42o0LuVr%UWYP>!T*ONE@q6*iilS*_KYXInQ`P< zD$p(!zlZP<##$BOWF1)lu>dJ%fIWvWw@9Nj!d`BH?h5aw3`a6ff$JLGG_TMjD6trhXoqQ^2!Tr zG{+~llK$C@(V-RP{Uw|L{XUWLfKo7nUM|4`BMYG1$G&8&+{n@{;}!siQ%v7o;(+a5 zHkPq+GXs;1Y%y0-%KNn~ETH_)US$DvFqI1HQ2~@++IYt7pQbI5Sd$*DDE}a1bW}xr zkmb=o6fqb^WC74|RmUH|m~X@dA~NGe7RYK$0v|Be7@t)NuB7-D8B`H; zvBeAu7`xfS?_L!@gyQ!wPPQNnCKPB0m=RHCRI@-9E6_7316<58gO-eaT%bOT-HgXG zPB31;IKsF>;(+ZjxB;;rM!Rwy+{yypZZulac7n4(xe~t3Sh*CQVys*XwJefXE`|*x zhV=&g#<2pO8EZWV4+BgqVs~Q9WPv~q;ky~T@(91lIK_sDjH7)BKimjTFtGr!w#4|0Qt($&@C)PEr-XYzO;JA4hU8~5j^+|x&Dit4cx@=m zE)SoeG-|>%|A6%LVVqb%=|(Y5y+iRc73LF}+f;hiSH>8tjlT6z~@zvhb( z<1Hn?{;+2lyLqL|Xv!4>PiIuvgRz(6$1v8w6CdLjF-8x3#1V-DTCAAz+bJ>5E*5x` z6Qqt)f-?$piL;tf0q|?XsPHPrSzLf3#tDwUQ_1s6zKL-OI3{8Gy@+wYk>V2nl?CvB z15n@s;}{pPRdXsp$zF;d%s9sQ2F5AI6^!wJ4p86IjPZXI5Pt|*oX9ux+TnjMAg5b4 z<`B@7%kMCWVMFq&=wD#AZkXhhYnh)E^9#&2H~6?l$CWr2;Gc}~zc^5R6PT59cJagV zN{Jymj=zrMV_cj$9Pi#EzJl!iZuV%dV!m=feuuGgM8?^V)ld$}4Pka;zW6^5Ncu|* z_D*(Gp3GQdv&9mYkF%Xb5C+$4PVgKjP@c^nFjgMU=UD-G(8~-v!*YWKQl8J(GFBeY zH!)V8&?_0I*c18*iT$uLGvjs1fT6=H_ZgLdU8Wns`iM0yVVCTyC58g9m+Y$wvm5TL zR#ZUcNqvH`@}M5k8shOupj@d}AOo;+p?;CEa;5%?v3D(ZeH)TjuGNDXD;H}YW94dH z${1a)vCAF@3{Qf9?RtHb1(XZ+uL^IZCeL$GhRP*-K4axE{kXyr%HSkpk7~W{mb7D7|vE{*tkBxej$?{gt$W&+vER z0=lx-DHOUb$$G?8=y3wP(Vv0xPIowtK@vAF=iWwW!|% z+X7@LAMP`Zl`r?fD=A+2bgyy~R=(XuJqarx@1GefUvIq^>t8}OeuXjne*3ipc_g5G zz^C^ntbD=S^dYQ#!aroJe8WqwW_k7r|BA8l4Zp81#Va52ml%_;IP`yyek7or#&2S* zoW~z!tbD}3V61$_r}U@v%4d8xW92)ZF@WNg5BWUA^QnXFDD#K3 ziLlGn;MH6k4ObytW8s2Vb8P}#li->R*A%$$utE+feW4i+WT;Q0M|!weJo}dnT@ad3~v7h zmm5k2|1qO|0ry|RbrPyJ`NSL7n}h4#1Giu! z*X|RuCz*eeKRpUdhNlOx;4h%AK7fb9RRq^WxF*4MJzTTkx)CmT{^4IhU2_4$BTbtJ z*S&Dv50@XV09>VT1>yP^-8}UF_w)aeey-X#)r>V1X^Tvkn7IJF`hK^-ydOUKkX&T8 z7U>JkEOG5ZGcK|hny#u&i_A%V#jLGnnseTqrB(B{n)BM|{lp&+o4Jl&d7|E7^J+)0 veqs;croH=V*A5#tYtGUe=aej-wRrXo3+D8>O6+*q>`=AlusN|F^!on*G$W{+ delta 62117 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

pX`~MXrz8gANZ*U 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 Lf8S+JYWhC_l&q2% diff --git a/rtl/obj_dir/VVortex.cpp b/rtl/obj_dir/VVortex.cpp index 525b0898..67de734d 100644 --- a/rtl/obj_dir/VVortex.cpp +++ b/rtl/obj_dir/VVortex.cpp @@ -237,16 +237,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) VL_SIG16(__Vdlyvval__Vortex__DOT__vx_csr_handler__DOT__csr__v0,11,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers__v0,31,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers__v0,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v0,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v1,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v2,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v3,31,0); + VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__a_reg_data__v0,31,0); + VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__a_reg_data__v1,31,0); + VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v0,31,0); + VL_SIG(__Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__b_reg_data__v1,31,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__alu_result__v0,31,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__alu_result__v1,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v0,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v1,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v2,31,0); - VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v3,31,0); + VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__b_reg_data__v0,31,0); + VL_SIG(__Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__b_reg_data__v1,31,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__mem_result__v0,31,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__mem_result__v1,31,0); VL_SIG(__Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v0,31,0); @@ -262,26 +260,20 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) __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:123 + // ALWAYS at VX_e_m_reg.v:126 + __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 __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_e_m_reg.v:123 - __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v0 - = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data - [3U]; - __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v1 - = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data - [2U]; - __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v2 - = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data - [1U]; - __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v3 - = vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data - [0U]; // ALWAYS at VX_m_w_reg.v:60 __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v0 = vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_alu_result @@ -296,7 +288,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) __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:133 + // ALWAYS at VX_d_e_reg.v:138 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)) @@ -320,23 +312,23 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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:133 + // ALWAYS at VX_d_e_reg.v:138 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:123 + // ALWAYS at VX_e_m_reg.v:126 __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:123 + // ALWAYS at VX_e_m_reg.v:126 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:133 + // ALWAYS at VX_d_e_reg.v:138 __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 @@ -347,25 +339,25 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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:123 - 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:123 + // ALWAYS at VX_e_m_reg.v:126 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:123 + // ALWAYS at VX_e_m_reg.v:126 + 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 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:123 + // ALWAYS at VX_e_m_reg.v:126 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:123 + // ALWAYS at VX_e_m_reg.v:126 + 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 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 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next; - // ALWAYS at VX_e_m_reg.v:123 - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest - = (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [0U] + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal_offset); // ALWAYS at VX_register_file.v:36 if (VL_UNLIKELY((((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)) & (0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd))) @@ -394,6 +386,17 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) __Vdlyvdim0__Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers__v0 = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd; } + // ALWAYS at VX_d_e_reg.v:138 + __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 + [1U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data + [1U]); + __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__a_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_a_reg_data + [0U]); // 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 @@ -402,46 +405,32 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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_d_e_reg.v:133 - __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v0 + // ALWAYS at VX_d_e_reg.v:138 + __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 - [3U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data - [3U]); - __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v1 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z - [2U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data - [2U]); - __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v2 - = ((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_reg_data + [1U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data [1U]); - __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v3 + __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_reg_data + [0U] : vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data [0U]); // ALWAYSPOST at VX_m_w_reg.v:69 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:142 + // ALWAYSPOST at VX_e_m_reg.v:137 + 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 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_e_m_reg.v:133 - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data[3U] - = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v0; - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data[2U] - = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v1; - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data[1U] - = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v2; - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data[0U] - = __Vdlyvval__Vortex__DOT__vx_e_m_reg__DOT__reg_data__v3; // ALWAYSPOST at VX_m_w_reg.v:62 vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result[1U] = __Vdlyvval__Vortex__DOT__vx_m_w_reg__DOT__alu_result__v0; @@ -452,12 +441,12 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = __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:125 + // ALWAYSPOST at VX_e_m_reg.v:128 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:154 + // ALWAYSPOST at VX_d_e_reg.v:160 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] @@ -472,44 +461,39 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers[__Vdlyvdim0__Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers__v0] = __Vdlyvval__Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers__v0; } + // ALWAYSPOST at VX_d_e_reg.v:143 + 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_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_d_e_reg.v:138 - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data[3U] - = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v0; - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data[2U] - = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v1; - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data[1U] - = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v2; - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data[0U] - = __Vdlyvval__Vortex__DOT__vx_d_e_reg__DOT__reg_data__v3; + // ALWAYSPOST at VX_d_e_reg.v:144 + 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]; vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_valid[0U] = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__valid [0U]; + vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data[1U] + = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data[0U] + = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data + [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[1U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid [1U]; vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[0U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[3U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [3U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[2U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [2U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[1U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[0U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_alu_result[1U] = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__alu_result [1U]; @@ -528,7 +512,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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:133 + // ALWAYS at VX_d_e_reg.v:138 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)); @@ -538,21 +522,21 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_valid[0U] = 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:133 - 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:133 + // ALWAYS at VX_d_e_reg.v:138 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:133 + vlTOPp->out_cache_driver_in_mem_read = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read; + // ALWAYS at VX_d_e_reg.v:138 + 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))); + // ALWAYS at VX_d_e_reg.v:138 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal = ((~ (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling)) & ((0x6fU == @@ -576,28 +560,11 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) (0xfffU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0x14U)))))))); - // ALWAYS at VX_d_e_reg.v:133 + // ALWAYS at VX_d_e_reg.v:138 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); - vlTOPp->Vortex__DOT__memory_branch_dest = (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC - + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset - << 1U)); - // ALWAYS at VX_d_e_reg.v:133 - 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); - vlTOPp->Vortex__DOT__vx_writeback__DOT__out_pc_data[0U] - = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next; - vlTOPp->Vortex__DOT__vx_writeback__DOT__out_pc_data[1U] - = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next; - vlTOPp->Vortex__DOT__vx_forwarding__DOT__use_writeback_PC_next[0U] - = 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:123 - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out; - // ALWAYS at VX_d_e_reg.v:133 + // ALWAYS at VX_d_e_reg.v:138 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal_offset = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : ((0x6fU == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) @@ -629,16 +596,39 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) >> 0x14U)))) ? 0xb0000000U : 0xdeadbeefU) : 0xdeadbeefU)))); + vlTOPp->Vortex__DOT__memory_branch_dest = (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC + + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset + << 1U)); + // ALWAYS at VX_d_e_reg.v:138 + 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); + vlTOPp->Vortex__DOT__vx_writeback__DOT__out_pc_data[0U] + = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next; + vlTOPp->Vortex__DOT__vx_writeback__DOT__out_pc_data[1U] + = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next; + vlTOPp->Vortex__DOT__vx_forwarding__DOT__use_writeback_PC_next[0U] + = 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 + vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__PC_next = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out; // 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; - // ALWAYS at VX_e_m_reg.v:123 + 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 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:123 + // ALWAYS at VX_e_m_reg.v:126 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:123 + // ALWAYS at VX_e_m_reg.v:126 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 @@ -649,34 +639,24 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) ? (vlTOPp->Vortex__DOT__csr_decode_csr_data & ((IData)(0xffffffffU) - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__csr_mask)) : 0xdeadbeefU))); - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[3U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data - [3U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[2U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data - [2U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[1U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data + 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_reg_data[0U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data + 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]; 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 [0U]; + vlTOPp->Vortex__DOT__e_m_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data + [1U]; + vlTOPp->Vortex__DOT__e_m_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data + [0U]; vlTOPp->Vortex__DOT__e_m_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid [1U]; vlTOPp->Vortex__DOT__e_m_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid [0U]; - vlTOPp->Vortex__DOT__e_m_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__e_m_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__e_m_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [1U]; - vlTOPp->Vortex__DOT__e_m_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [0U]; vlTOPp->Vortex__DOT__m_w_alu_result[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_alu_result [1U]; vlTOPp->Vortex__DOT__m_w_alu_result[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_alu_result @@ -693,6 +673,10 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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__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) @@ -715,13 +699,9 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) : vlTOPp->Vortex__DOT__vx_csr_handler__DOT__csr [vlTOPp->Vortex__DOT__vx_csr_handler__DOT__decode_csr_address])))); - vlTOPp->Vortex__DOT__d_e_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__d_e_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__d_e_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data + vlTOPp->Vortex__DOT__d_e_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data [1U]; - vlTOPp->Vortex__DOT__d_e_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data + 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____Vcellinp__vx_decode__in_wb_valid[1U] = vlTOPp->Vortex__DOT__m_w_valid[1U]; @@ -731,14 +711,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__m_w_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_valid[0U] = vlTOPp->Vortex__DOT__m_w_valid[0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[1U] + = vlTOPp->Vortex__DOT__e_m_b_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[0U] + = vlTOPp->Vortex__DOT__e_m_b_reg_data[0U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid[1U] = vlTOPp->Vortex__DOT__e_m_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid[0U] = vlTOPp->Vortex__DOT__e_m_valid[0U]; - vlTOPp->Vortex__DOT__use_rd2[0U] = vlTOPp->Vortex__DOT__e_m_reg_data - [1U]; - vlTOPp->Vortex__DOT__use_rd2[1U] = vlTOPp->Vortex__DOT__e_m_reg_data - [3U]; vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_alu_result[1U] = vlTOPp->Vortex__DOT__m_w_alu_result[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_alu_result[0U] @@ -770,32 +750,36 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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:133 + // ALWAYS at VX_d_e_reg.v:138 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)); - // ALWAYS at VX_e_m_reg.v:123 + // 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:123 + // 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; - // ALWAYS at VX_d_e_reg.v:133 + 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:138 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:133 + // ALWAYS at VX_d_e_reg.v:138 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:133 + // ALWAYS at VX_d_e_reg.v:138 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) & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xeU)) ? (0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xfU)) - : vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data + : vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data [0U])); - // ALWAYS at VX_d_e_reg.v:133 + // ALWAYS at VX_d_e_reg.v:138 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 @@ -803,14 +787,16 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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))); - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[3U] - = vlTOPp->Vortex__DOT__d_e_reg_data[3U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[2U] - = vlTOPp->Vortex__DOT__d_e_reg_data[2U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[1U] - = vlTOPp->Vortex__DOT__d_e_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[0U] - = vlTOPp->Vortex__DOT__d_e_reg_data[0U]; + 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]; + vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[1U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[0U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 + [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid[1U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid [1U]; @@ -823,10 +809,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_valid[0U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[1U] - = vlTOPp->Vortex__DOT__use_rd2[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[0U] - = vlTOPp->Vortex__DOT__use_rd2[0U]; vlTOPp->Vortex__DOT____Vcellout__vx_writeback__out_write_data[1U] = ((3U == (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)) ? vlTOPp->Vortex__DOT__vx_writeback__DOT__out_pc_data @@ -905,30 +887,26 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_valid[0U] = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[3U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [3U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[2U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [2U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data + vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data[1U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data + vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data[0U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data [0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2 + = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) + ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed + : vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data + [0U]); + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 + = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) + ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed + : vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data + [1U]); + vlTOPp->out_cache_driver_in_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data [1U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data + vlTOPp->out_cache_driver_in_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data [0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [3U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [2U]; vlTOPp->out_cache_driver_in_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid [1U]; vlTOPp->out_cache_driver_in_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid @@ -937,12 +915,6 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) [1U]; vlTOPp->Vortex__DOT__memory_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 - [0U]; vlTOPp->Vortex__DOT__writeback_write_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_writeback__out_write_data [1U]; @@ -965,14 +937,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(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:133 + // ALWAYS at VX_d_e_reg.v:138 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:133 + // ALWAYS at VX_d_e_reg.v:138 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__wb = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__stalling) ? 0U : @@ -1017,32 +989,24 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_csr)) ? 1U : 0U)))); - vlTOPp->Vortex__DOT__execute_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__execute_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__execute_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data + vlTOPp->Vortex__DOT__execute_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data [1U]; - vlTOPp->Vortex__DOT__execute_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data + 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__vx_alu_0__DOT__ALU_in2 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed - : vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data - [1U]); - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed - : vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [1U]); + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__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__vx_alu_0__DOT__ALU_in2)); + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__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__vx_alu_1__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] = vlTOPp->Vortex__DOT__memory_valid[0U]; - vlTOPp->out_cache_driver_in_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data - [1U]; - vlTOPp->out_cache_driver_in_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data - [0U]; vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_write_data[1U] = vlTOPp->Vortex__DOT__writeback_write_data [1U]; @@ -1061,25 +1025,11 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__execute_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid[0U] = vlTOPp->Vortex__DOT__execute_valid[0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[3U] - = vlTOPp->Vortex__DOT__execute_reg_data[3U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[2U] - = vlTOPp->Vortex__DOT__execute_reg_data[2U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[1U] - = vlTOPp->Vortex__DOT__execute_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[0U] - = vlTOPp->Vortex__DOT__execute_reg_data[0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__mult_signed_result - = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data - [0U]), - VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)); - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__mult_signed_result - = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U]), - VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)); - // ALWAYS at VX_alu.v:47 + vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data[1U] + = vlTOPp->Vortex__DOT__execute_b_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data[0U] + = vlTOPp->Vortex__DOT__execute_b_reg_data[0U]; + // ALWAYS at VX_alu.v:48 if ((0x10U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { if ((8U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result = 0U; @@ -1089,42 +1039,42 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] : VL_MODDIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] : VL_MODDIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 0xffffffffU : VL_DIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 0xffffffffU : VL_DIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)))); } else { if ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result = ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (IData)((((QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U])) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) >> 0x20U)) : (IData)( (((((QData)((IData)( VL_NEGATE_I((IData)( (1U - & (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + & (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] >> 0x1fU)))))) << 0x20U) | (QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U]))) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) >> 0x20U))); @@ -1138,7 +1088,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = (IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__mult_signed_result); VL_WRITEF("(%x) %x * %x = %x\n", 32,vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC, - 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U],32,vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2, 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result); } @@ -1164,7 +1114,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) (vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__upper_immed << 0xcU) : - ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] >= vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 0U @@ -1174,26 +1124,26 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2 - & vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + & vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U]) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] | vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)))) : ((4U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? VL_SHIFTRS_III(32,32,5, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)) - : (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + : (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] >> (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) - ? (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] ^ vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) - : ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + : ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] < vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 1U : 0U))) : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) @@ -1202,12 +1152,12 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (VL_LTS_III(1,32,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 1U : 0U) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] << (0x1fU @@ -1216,15 +1166,15 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))))); } - // ALWAYS at VX_alu.v:47 + // ALWAYS at VX_alu.v:48 if ((0x10U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { if ((8U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result = 0U; @@ -1234,43 +1184,43 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] : VL_MODDIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] : VL_MODDIV_III(32, + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] : VL_MODDIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] : VL_MODDIVS_III(32, + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 0xffffffffU : VL_DIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 0xffffffffU : VL_DIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)))); + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)))); } else { if ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result = ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (IData)((((QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U])) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U])) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) >> 0x20U)) : (IData)( (((((QData)((IData)( VL_NEGATE_I((IData)( (1U - & (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + & (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] >> 0x1fU)))))) << 0x20U) | (QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U]))) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U]))) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) >> 0x20U))); } else { @@ -1283,8 +1233,8 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = (IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__mult_signed_result); VL_WRITEF("(%x) %x * %x = %x\n", 32,vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC, - 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U],32,vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2, + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U],32,vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2, 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result); } } @@ -1309,8 +1259,8 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) (vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__upper_immed << 0xcU) : - ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] >= vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 0U : 0xffffffffU)) @@ -1319,27 +1269,27 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 - & vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U]) + & vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U]) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] | vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)))) : ((4U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? VL_SHIFTRS_III(32,32,5, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) - : (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] >> (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) + : (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] >> (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) - ? (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] ^ vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) - : ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] < vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] ^ vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) + : ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] < vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 1U : 0U))) : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? @@ -1347,13 +1297,13 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (VL_LTS_III(1,32,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 1U : 0U) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] << (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) @@ -1361,12 +1311,12 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))))); } vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result[0U] @@ -1387,65 +1337,14 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__2(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__execute_alu_result[0U]; } -VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) { - VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__3\n"); ); +VL_INLINE_OPT void VVortex::_combo__TOP__3(VVortex__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_combo__TOP__3\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Body - // ALWAYS at VX_writeback.v:43 - if (VL_UNLIKELY((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))) { - VL_WRITEF("[%x] WB Data: %x {%x}, to register: %2# [%1# %1#]\n", - 32,(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next - - (IData)(4U)),32,vlTOPp->Vortex__DOT____Vcellout__vx_writeback__out_write_data - [0U],32,vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_mem_result - [0U],5,vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd, - 1,vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_valid - [0U],1,vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_valid - [1U]); - } - // ALWAYS at VX_register_file.v:43 - vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src2_data - = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers - [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U))]; - // ALWAYS at VX_register_file.v:43 - vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src2_data - = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers - [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0x14U))]; - // ALWAYS at VX_register_file.v:43 - vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src1_data - = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers - [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU))]; - // ALWAYS at VX_register_file.v:43 - vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src1_data - = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers - [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction - >> 0xfU))]; - vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register[1U] - = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src2_data; - vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register[0U] - = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src2_data; - vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register[1U] - = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src1_data; - vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register[0U] - = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src1_data; -} - -VL_INLINE_OPT void VVortex::_combo__TOP__4(VVortex__Syms* __restrict vlSymsp) { - VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_combo__TOP__4\n"); ); - VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; - // Body - vlTOPp->Vortex__DOT__in_cache_driver_out_data[0U] - = vlTOPp->in_cache_driver_out_data_0; - vlTOPp->Vortex__DOT__in_cache_driver_out_data[1U] - = vlTOPp->in_cache_driver_out_data_1; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[1U] - = vlTOPp->Vortex__DOT__in_cache_driver_out_data - [1U]; + = vlTOPp->in_cache_driver_out_data[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[0U] - = vlTOPp->Vortex__DOT__in_cache_driver_out_data - [0U]; + = vlTOPp->in_cache_driver_out_data[0U]; // ALWAYS at VX_memory.v:62 if (VL_UNLIKELY((0xbabebabeU != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data [0U]))) { @@ -1459,6 +1358,14 @@ VL_INLINE_OPT void VVortex::_combo__TOP__4(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result[0U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data [0U]; + // ALWAYS at VX_memory.v:39 + if (VL_UNLIKELY((2U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read)))) { + VL_WRITEF("PC: %x ----> Received: %x for addr: %x\n", + 32,vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC, + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data + [0U],32,vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U]); + } 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 @@ -1473,14 +1380,14 @@ VL_INLINE_OPT void VVortex::_combo__TOP__4(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__memory_mem_result[0U]; } -void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { - VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_settle__TOP__5\n"); ); +void VVortex::_settle__TOP__4(VVortex__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_settle__TOP__4\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Body - vlTOPp->Vortex__DOT__in_cache_driver_out_data[0U] - = vlTOPp->in_cache_driver_out_data_0; - vlTOPp->Vortex__DOT__in_cache_driver_out_data[1U] - = vlTOPp->in_cache_driver_out_data_1; + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[1U] + = vlTOPp->in_cache_driver_out_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[0U] + = vlTOPp->in_cache_driver_out_data[0U]; vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_valid[1U] = vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__valid [1U]; @@ -1531,7 +1438,7 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0x14U) : 0x55U)); - // ALWAYS at VX_decode.v:393 + // ALWAYS at VX_decode.v:392 vlTOPp->__Vtableidx1 = (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)); vlTOPp->Vortex__DOT__vx_decode__DOT__mul_alu = @@ -1557,7 +1464,7 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)))); - // ALWAYS at VX_decode.v:343 + // ALWAYS at VX_decode.v:342 vlTOPp->Vortex__DOT__decode_branch_type = ((0x63U == (0x7fU @@ -1588,11 +1495,18 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { ? 2U : 1U))) : 0U); - vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[1U] - = vlTOPp->Vortex__DOT__in_cache_driver_out_data + // ALWAYS at VX_memory.v:62 + if (VL_UNLIKELY((0xbabebabeU != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data + [0U]))) { + VL_WRITEF("MEM: data read from cache_driver: %x\n", + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data + [0U]); + } + vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result[1U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data [1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[0U] - = vlTOPp->Vortex__DOT__in_cache_driver_out_data + vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result[0U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data [0U]; vlTOPp->Vortex__DOT__m_w_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_m_w_reg__out_valid [1U]; @@ -1610,7 +1524,7 @@ void VVortex::_settle__TOP__5(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:332 + // ALWAYS at VX_decode.v:331 vlTOPp->Vortex__DOT__decode_itype_immed = ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction) ? ( @@ -1826,18 +1740,9 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { >> 0x19U))) ? 0U : 1U)))))))))); - // ALWAYS at VX_memory.v:62 - if (VL_UNLIKELY((0xbabebabeU != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data - [0U]))) { - VL_WRITEF("MEM: data read from cache_driver: %x\n", - 32,vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data - [0U]); - } - vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data + vlTOPp->Vortex__DOT__memory_mem_result[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data + vlTOPp->Vortex__DOT__memory_mem_result[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_mem_result [0U]; vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_wb_valid[1U] = vlTOPp->Vortex__DOT__m_w_valid[1U]; @@ -1867,16 +1772,6 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__m_w_mem_result[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_forwarding__in_writeback_mem_data[0U] = vlTOPp->Vortex__DOT__m_w_mem_result[0U]; - 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 - [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____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] @@ -1885,6 +1780,12 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__memory_mem_result[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_forwarding__in_memory_mem_data[0U] = vlTOPp->Vortex__DOT__memory_mem_result[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 @@ -1895,6 +1796,51 @@ void VVortex::_settle__TOP__5(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__decode_valid[0U]; } +VL_INLINE_OPT void VVortex::_sequent__TOP__5(VVortex__Syms* __restrict vlSymsp) { + VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__5\n"); ); + VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; + // Body + // ALWAYS at VX_writeback.v:43 + if (VL_UNLIKELY((0U != (IData)(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__wb)))) { + VL_WRITEF("[%x] WB Data: %x {%x}, to register: %2# [%1# %1#]\n", + 32,(vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__PC_next + - (IData)(4U)),32,vlTOPp->Vortex__DOT____Vcellout__vx_writeback__out_write_data + [0U],32,vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_mem_result + [0U],5,vlTOPp->Vortex__DOT__vx_m_w_reg__DOT__rd, + 1,vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_valid + [0U],1,vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_valid + [1U]); + } + // ALWAYS at VX_register_file.v:43 + vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src2_data + = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers + [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U))]; + // ALWAYS at VX_register_file.v:43 + vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src2_data + = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers + [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0x14U))]; + // ALWAYS at VX_register_file.v:43 + vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src1_data + = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers + [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU))]; + // ALWAYS at VX_register_file.v:43 + vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src1_data + = vlTOPp->Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers + [(0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction + >> 0xfU))]; + vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register[1U] + = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src2_data; + vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register[0U] + = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src2_data; + vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register[1U] + = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src1_data; + vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register[0U] + = vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src1_data; +} + void VVortex::_initial__TOP__6(VVortex__Syms* __restrict vlSymsp) { VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_initial__TOP__6\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; @@ -1920,7 +1866,7 @@ void VVortex::_initial__TOP__6(VVortex__Syms* __restrict vlSymsp) { 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:74 + // INITIAL at VX_e_m_reg.v:77 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; @@ -1934,19 +1880,23 @@ void VVortex::_initial__TOP__6(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__reg_data[0U] = 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; vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result[0U] = 0U; - vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data[1U] = 0U; + vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__a_reg_data[1U] = 0U; + 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:79 + // INITIAL at VX_d_e_reg.v:82 vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rd = 0U; - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data[0U] = 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; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z[0U] = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid[0U] = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid_z[0U] = 0U; - vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data[1U] = 0U; + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__a_reg_data[1U] = 0U; + vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[1U] = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data_z[1U] = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid[1U] = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid_z[1U] = 0U; @@ -2023,7 +1973,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:393 + // ALWAYS at VX_decode.v:392 vlTOPp->__Vtableidx1 = (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)); vlTOPp->Vortex__DOT__vx_decode__DOT__mul_alu = @@ -2049,7 +1999,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) (7U & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0xcU)))); - // ALWAYS at VX_decode.v:343 + // ALWAYS at VX_decode.v:342 vlTOPp->Vortex__DOT__decode_branch_type = ((0x63U == (0x7fU @@ -2090,7 +2040,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) >> 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))); - // ALWAYS at VX_decode.v:332 + // ALWAYS at VX_decode.v:331 vlTOPp->Vortex__DOT__decode_itype_immed = ((0x40U & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction) ? ( @@ -2439,29 +2389,23 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { : vlTOPp->Vortex__DOT__vx_csr_handler__DOT__csr [vlTOPp->Vortex__DOT__vx_csr_handler__DOT__decode_csr_address])))); - vlTOPp->out_cache_driver_in_mem_read = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read; vlTOPp->out_cache_driver_in_mem_write = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_write; + vlTOPp->out_cache_driver_in_mem_read = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read; vlTOPp->Vortex__DOT__memory_branch_dest = (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset << 1U)); + vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data[1U] + = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data[0U] + = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__b_reg_data + [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[1U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid [1U]; vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[0U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[3U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [3U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[2U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [2U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[1U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[0U] - = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__reg_data - [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result[1U] = vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__alu_result [1U]; @@ -2481,17 +2425,17 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_valid[0U] = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[3U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data - [3U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[2U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data - [2U]; - vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[1U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data + 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_reg_data[0U] - = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__reg_data + 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____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]; vlTOPp->Vortex__DOT__vx_forwarding__DOT__use_execute_PC_next[0U] = vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__PC_next_out; @@ -2521,18 +2465,14 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { ? vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_alu_result [0U] : vlTOPp->Vortex__DOT____Vcellinp__vx_writeback__in_mem_result [0U])); + vlTOPp->Vortex__DOT__e_m_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data + [1U]; + vlTOPp->Vortex__DOT__e_m_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data + [0U]; vlTOPp->Vortex__DOT__e_m_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid [1U]; vlTOPp->Vortex__DOT__e_m_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_valid [0U]; - vlTOPp->Vortex__DOT__e_m_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__e_m_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__e_m_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [1U]; - vlTOPp->Vortex__DOT__e_m_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data - [0U]; vlTOPp->Vortex__DOT__e_m_alu_result[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result [1U]; vlTOPp->Vortex__DOT__e_m_alu_result[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result @@ -2541,13 +2481,13 @@ void VVortex::_settle__TOP__8(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_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__d_e_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__d_e_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data + 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_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data + 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__d_e_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data + [1U]; + 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__src2_mem_fwd = (((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction @@ -2568,14 +2508,14 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__writeback_write_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_writeback__out_write_data [0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[1U] + = vlTOPp->Vortex__DOT__e_m_b_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[0U] + = vlTOPp->Vortex__DOT__e_m_b_reg_data[0U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid[1U] = vlTOPp->Vortex__DOT__e_m_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid[0U] = vlTOPp->Vortex__DOT__e_m_valid[0U]; - vlTOPp->Vortex__DOT__use_rd2[0U] = vlTOPp->Vortex__DOT__e_m_reg_data - [1U]; - vlTOPp->Vortex__DOT__use_rd2[1U] = vlTOPp->Vortex__DOT__e_m_reg_data - [3U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result[1U] = vlTOPp->Vortex__DOT__e_m_alu_result[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result[0U] @@ -2584,14 +2524,14 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__d_e_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_valid[0U] = vlTOPp->Vortex__DOT__d_e_valid[0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[3U] - = vlTOPp->Vortex__DOT__d_e_reg_data[3U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[2U] - = vlTOPp->Vortex__DOT__d_e_reg_data[2U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[1U] - = vlTOPp->Vortex__DOT__d_e_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data[0U] - = vlTOPp->Vortex__DOT__d_e_reg_data[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]; + 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]; 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)) @@ -2622,6 +2562,12 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_write_data[0U] = vlTOPp->Vortex__DOT__writeback_write_data [0U]; + vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[1U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 + [1U]; + vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[0U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 + [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid[1U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid [1U]; @@ -2634,10 +2580,14 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_valid[0U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_valid [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[1U] - = vlTOPp->Vortex__DOT__use_rd2[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2[0U] - = vlTOPp->Vortex__DOT__use_rd2[0U]; + // ALWAYS at VX_memory.v:39 + if (VL_UNLIKELY((2U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__mem_read)))) { + VL_WRITEF("PC: %x ----> Received: %x for addr: %x\n", + 32,vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC, + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data + [0U],32,vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U]); + } vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_address[1U] = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result [1U]; @@ -2702,30 +2652,22 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_valid[0U] = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[3U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [3U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[2U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [2U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data + vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data[1U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data + vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data[0U] + = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data [0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [1U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [3U]; - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_reg_data - [2U]; + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2 + = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) + ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed + : vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data + [0U]); + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 + = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) + ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed + : vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data + [1U]); vlTOPp->Vortex__DOT__forwarding_src2_fwd = (((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_forwarding__DOT__src2_wb_fwd)); @@ -2750,6 +2692,10 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { 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)); + vlTOPp->out_cache_driver_in_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data + [1U]; + vlTOPp->out_cache_driver_in_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data + [0U]; vlTOPp->out_cache_driver_in_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid [1U]; vlTOPp->out_cache_driver_in_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid @@ -2758,12 +2704,6 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { [1U]; vlTOPp->Vortex__DOT__memory_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_valid [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[1U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 - [1U]; - vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[0U] - = vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_rd2 - [0U]; vlTOPp->out_cache_driver_in_address[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_address [1U]; vlTOPp->out_cache_driver_in_address[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_address @@ -2786,24 +2726,20 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { [1U]; vlTOPp->Vortex__DOT__execute_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_valid [0U]; - vlTOPp->Vortex__DOT__execute_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__execute_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__execute_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data + vlTOPp->Vortex__DOT__execute_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_b_reg_data [1U]; - vlTOPp->Vortex__DOT__execute_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_reg_data + 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__vx_alu_0__DOT__ALU_in2 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed - : vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data - [1U]); - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 - = ((IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__rs2_src) - ? vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__itype_immed - : vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [1U]); + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__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__vx_alu_0__DOT__ALU_in2)); + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__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__vx_alu_1__DOT__ALU_in2)); vlTOPp->Vortex__DOT____Vcellout__vx_fetch__out_valid[0U] = (1U & ((~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)) & (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__valid))); @@ -2815,10 +2751,6 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__memory_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid[0U] = vlTOPp->Vortex__DOT__memory_valid[0U]; - vlTOPp->out_cache_driver_in_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data - [1U]; - vlTOPp->out_cache_driver_in_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data - [0U]; vlTOPp->curr_PC = vlTOPp->Vortex__DOT__vx_fetch__DOT__temp_PC; vlTOPp->Vortex__DOT____Vcellinp__vx_m_w_reg__in_alu_result[1U] = vlTOPp->Vortex__DOT__memory_alu_result[1U]; @@ -2832,29 +2764,11 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT__execute_valid[1U]; vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid[0U] = vlTOPp->Vortex__DOT__execute_valid[0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[3U] - = vlTOPp->Vortex__DOT__execute_reg_data[3U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[2U] - = vlTOPp->Vortex__DOT__execute_reg_data[2U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[1U] - = vlTOPp->Vortex__DOT__execute_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[0U] - = vlTOPp->Vortex__DOT__execute_reg_data[0U]; - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__mult_signed_result - = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data - [0U]), - VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)); - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__mult_signed_result - = VL_MULS_QQQ(64,64,64, VL_EXTENDS_QI(64,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U]), - VL_EXTENDS_QI(64,32, vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)); - vlTOPp->Vortex__DOT__fetch_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_fetch__out_valid - [1U]; - vlTOPp->Vortex__DOT__fetch_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_fetch__out_valid - [0U]; - // ALWAYS at VX_alu.v:47 + vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data[1U] + = vlTOPp->Vortex__DOT__execute_b_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data[0U] + = vlTOPp->Vortex__DOT__execute_b_reg_data[0U]; + // ALWAYS at VX_alu.v:48 if ((0x10U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { if ((8U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result = 0U; @@ -2864,42 +2778,42 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] : VL_MODDIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] : VL_MODDIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 0xffffffffU : VL_DIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 0xffffffffU : VL_DIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)))); } else { if ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result = ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (IData)((((QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U])) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) >> 0x20U)) : (IData)( (((((QData)((IData)( VL_NEGATE_I((IData)( (1U - & (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + & (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] >> 0x1fU)))))) << 0x20U) | (QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U]))) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) >> 0x20U))); @@ -2913,7 +2827,7 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = (IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__mult_signed_result); VL_WRITEF("(%x) %x * %x = %x\n", 32,vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC, - 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U],32,vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2, 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result); } @@ -2939,7 +2853,7 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { (vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__upper_immed << 0xcU) : - ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] >= vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 0U @@ -2949,26 +2863,26 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2 - & vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + & vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U]) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] | vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)))) : ((4U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? VL_SHIFTRS_III(32,32,5, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2)) - : (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + : (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] >> (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) - ? (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] ^ vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) - : ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + : ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] < vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 1U : 0U))) : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) @@ -2977,12 +2891,12 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (VL_LTS_III(1,32,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) ? 1U : 0U) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] << (0x1fU @@ -2991,15 +2905,15 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data [0U] + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2))))); } - // ALWAYS at VX_alu.v:47 + // ALWAYS at VX_alu.v:48 if ((0x10U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { if ((8U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result = 0U; @@ -3009,43 +2923,43 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] : VL_MODDIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] : VL_MODDIV_III(32, + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) - ? vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] : VL_MODDIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) + ? vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] : VL_MODDIVS_III(32, + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 0xffffffffU : VL_DIV_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) : ((0U == vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 0xffffffffU : VL_DIVS_III(32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)))); + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)))); } else { if ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op))) { vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result = ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (IData)((((QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U])) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U])) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) >> 0x20U)) : (IData)( (((((QData)((IData)( VL_NEGATE_I((IData)( (1U - & (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + & (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] >> 0x1fU)))))) << 0x20U) | (QData)((IData)( - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U]))) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U]))) * (QData)((IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) >> 0x20U))); } else { @@ -3058,8 +2972,8 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { = (IData)(vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__mult_signed_result); VL_WRITEF("(%x) %x * %x = %x\n", 32,vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__curr_PC, - 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U],32,vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2, + 32,vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U],32,vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2, 32,vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result); } } @@ -3084,8 +2998,8 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { (vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__upper_immed << 0xcU) : - ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] >= vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 0U : 0xffffffffU)) @@ -3094,27 +3008,27 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 - & vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U]) + & vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U]) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] | vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)))) : ((4U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? VL_SHIFTRS_III(32,32,5, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2)) - : (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] >> (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) + : (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] >> (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) - ? (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] ^ vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) - : ((vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] < vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] ^ vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) + : ((vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] < vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 1U : 0U))) : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? @@ -3122,13 +3036,13 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? (VL_LTS_III(1,32,32, - vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) + vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U], vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) ? 1U : 0U) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] << (0x1fU & vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))) @@ -3136,22 +3050,26 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { ((1U & (IData)(vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__alu_op)) ? - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] - vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2) : - (vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data - [0U] + (vlTOPp->Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data + [1U] + vlTOPp->Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2))))); } - vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid[1U] - = vlTOPp->Vortex__DOT__fetch_valid[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid[0U] - = vlTOPp->Vortex__DOT__fetch_valid[0U]; + vlTOPp->Vortex__DOT__fetch_valid[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_fetch__out_valid + [1U]; + vlTOPp->Vortex__DOT__fetch_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_fetch__out_valid + [0U]; vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result[0U] = vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result; vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result[1U] = vlTOPp->Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result; + vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid[1U] + = vlTOPp->Vortex__DOT__fetch_valid[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid[0U] + = vlTOPp->Vortex__DOT__fetch_valid[0U]; vlTOPp->Vortex__DOT__execute_alu_result[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result [1U]; vlTOPp->Vortex__DOT__execute_alu_result[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result @@ -3300,46 +3218,46 @@ void VVortex::_settle__TOP__8(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data[0U] = vlTOPp->Vortex__DOT__forwarding_src1_fwd_data [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[1U] + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data[0U] = ((IData)(vlTOPp->Vortex__DOT__forwarding_src2_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register [0U]); - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[3U] + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data[1U] = ((IData)(vlTOPp->Vortex__DOT__forwarding_src2_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data - [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register - [0U]); - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[0U] + [1U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register + [1U]); + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data[0U] = ((0x6fU == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) ? vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC : ((IData)(vlTOPp->Vortex__DOT__forwarding_src1_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register [0U])); - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[2U] + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data[1U] = ((0x6fU == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) ? vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC : ((IData)(vlTOPp->Vortex__DOT__forwarding_src1_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data - [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register - [0U])); - vlTOPp->Vortex__DOT__decode_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__decode_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__decode_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data + [1U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register + [1U])); + vlTOPp->Vortex__DOT__decode_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data [1U]; - vlTOPp->Vortex__DOT__decode_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data + vlTOPp->Vortex__DOT__decode_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[3U] - = vlTOPp->Vortex__DOT__decode_reg_data[3U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[2U] - = vlTOPp->Vortex__DOT__decode_reg_data[2U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[1U] - = vlTOPp->Vortex__DOT__decode_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[0U] - = vlTOPp->Vortex__DOT__decode_reg_data[0U]; + vlTOPp->Vortex__DOT__decode_a_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data + [1U]; + vlTOPp->Vortex__DOT__decode_a_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data + [0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data[1U] + = vlTOPp->Vortex__DOT__decode_b_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data[0U] + = vlTOPp->Vortex__DOT__decode_b_reg_data[0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data[1U] + = vlTOPp->Vortex__DOT__decode_a_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data[0U] + = vlTOPp->Vortex__DOT__decode_a_reg_data[0U]; } VL_INLINE_OPT void VVortex::_combo__TOP__9(VVortex__Syms* __restrict vlSymsp) { @@ -3482,46 +3400,46 @@ VL_INLINE_OPT void VVortex::_combo__TOP__9(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data[0U] = vlTOPp->Vortex__DOT__forwarding_src1_fwd_data [0U]; - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[1U] + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data[0U] = ((IData)(vlTOPp->Vortex__DOT__forwarding_src2_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register [0U]); - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[3U] + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data[1U] = ((IData)(vlTOPp->Vortex__DOT__forwarding_src2_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data - [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register - [0U]); - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[0U] + [1U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd2_register + [1U]); + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data[0U] = ((0x6fU == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) ? vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC : ((IData)(vlTOPp->Vortex__DOT__forwarding_src1_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register [0U])); - vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data[2U] + vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data[1U] = ((0x6fU == (0x7fU & vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction)) ? vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC : ((IData)(vlTOPp->Vortex__DOT__forwarding_src1_fwd) ? vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data - [0U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register - [0U])); - vlTOPp->Vortex__DOT__decode_reg_data[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data - [3U]; - vlTOPp->Vortex__DOT__decode_reg_data[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data - [2U]; - vlTOPp->Vortex__DOT__decode_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data + [1U] : vlTOPp->Vortex__DOT__vx_decode__DOT__rd1_register + [1U])); + vlTOPp->Vortex__DOT__decode_b_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data [1U]; - vlTOPp->Vortex__DOT__decode_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_reg_data + vlTOPp->Vortex__DOT__decode_b_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_b_reg_data [0U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[3U] - = vlTOPp->Vortex__DOT__decode_reg_data[3U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[2U] - = vlTOPp->Vortex__DOT__decode_reg_data[2U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[1U] - = vlTOPp->Vortex__DOT__decode_reg_data[1U]; - vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[0U] - = vlTOPp->Vortex__DOT__decode_reg_data[0U]; + vlTOPp->Vortex__DOT__decode_a_reg_data[1U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data + [1U]; + vlTOPp->Vortex__DOT__decode_a_reg_data[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_a_reg_data + [0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data[1U] + = vlTOPp->Vortex__DOT__decode_b_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data[0U] + = vlTOPp->Vortex__DOT__decode_b_reg_data[0U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data[1U] + = vlTOPp->Vortex__DOT__decode_a_reg_data[1U]; + vlTOPp->Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data[0U] + = vlTOPp->Vortex__DOT__decode_a_reg_data[0U]; } void VVortex::_eval(VVortex__Syms* __restrict vlSymsp) { @@ -3535,10 +3453,10 @@ void VVortex::_eval(VVortex__Syms* __restrict vlSymsp) { if (((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk)))) { vlTOPp->_sequent__TOP__2(vlSymsp); } + vlTOPp->_combo__TOP__3(vlSymsp); if (((~ (IData)(vlTOPp->clk)) & (IData)(vlTOPp->__Vclklast__TOP__clk))) { - vlTOPp->_sequent__TOP__3(vlSymsp); + vlTOPp->_sequent__TOP__5(vlSymsp); } - vlTOPp->_combo__TOP__4(vlSymsp); if ((((IData)(vlTOPp->clk) & (~ (IData)(vlTOPp->__Vclklast__TOP__clk))) | ((IData)(vlTOPp->reset) & (~ (IData)(vlTOPp->__Vclklast__TOP__reset))))) { vlTOPp->_sequent__TOP__7(vlSymsp); @@ -3569,7 +3487,7 @@ void VVortex::_eval_settle(VVortex__Syms* __restrict vlSymsp) { VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_eval_settle\n"); ); VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp; // Body - vlTOPp->_settle__TOP__5(vlSymsp); + vlTOPp->_settle__TOP__4(vlSymsp); vlTOPp->_settle__TOP__8(vlSymsp); } @@ -3599,8 +3517,9 @@ void VVortex::_ctor_var_reset() { clk = VL_RAND_RESET_I(1); reset = VL_RAND_RESET_I(1); fe_instruction = VL_RAND_RESET_I(32); - in_cache_driver_out_data_0 = VL_RAND_RESET_I(32); - in_cache_driver_out_data_1 = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + in_cache_driver_out_data[__Vi0] = VL_RAND_RESET_I(32); + }} curr_PC = VL_RAND_RESET_I(32); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { out_cache_driver_in_address[__Vi0] = VL_RAND_RESET_I(32); @@ -3613,9 +3532,6 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { out_cache_driver_in_data[__Vi0] = VL_RAND_RESET_I(32); }} - { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { - Vortex__DOT__in_cache_driver_out_data[__Vi0] = VL_RAND_RESET_I(32); - }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__fetch_valid[__Vi0] = VL_RAND_RESET_I(1); }} @@ -3623,16 +3539,22 @@ void VVortex::_ctor_var_reset() { Vortex__DOT__f_d_valid[__Vi0] = VL_RAND_RESET_I(1); }} Vortex__DOT__decode_csr_address = VL_RAND_RESET_I(12); - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT__decode_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__decode_a_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__decode_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} Vortex__DOT__decode_itype_immed = VL_RAND_RESET_I(32); Vortex__DOT__decode_branch_type = VL_RAND_RESET_I(3); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__decode_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT__d_e_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__d_e_a_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__d_e_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__d_e_valid[__Vi0] = VL_RAND_RESET_I(1); @@ -3641,8 +3563,8 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__execute_alu_result[__Vi0] = VL_RAND_RESET_I(32); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT__execute_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__execute_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__execute_valid[__Vi0] = VL_RAND_RESET_I(1); @@ -3650,8 +3572,8 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__e_m_alu_result[__Vi0] = VL_RAND_RESET_I(32); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT__e_m_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__e_m_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__e_m_valid[__Vi0] = VL_RAND_RESET_I(1); @@ -3701,8 +3623,11 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_decode__out_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellout__vx_decode__out_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellout__vx_decode__out_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellout__vx_decode__out_a_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data[__Vi0] = VL_RAND_RESET_I(32); @@ -3722,20 +3647,26 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_d_e_reg__out_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_execute__out_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellout__vx_execute__out_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellout__vx_execute__out_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_execute__out_alu_result[__Vi0] = VL_RAND_RESET_I(32); @@ -3743,14 +3674,17 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellinp__vx_execute__in_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellinp__vx_execute__in_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result[__Vi0] = VL_RAND_RESET_I(32); @@ -3758,15 +3692,12 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellinp__vx_e_m_reg__in_alu_result[__Vi0] = VL_RAND_RESET_I(32); }} - { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { - Vortex__DOT__use_rd2[__Vi0] = VL_RAND_RESET_I(32); - }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid[__Vi0] = VL_RAND_RESET_I(1); }} @@ -3887,8 +3818,11 @@ void VVortex::_ctor_var_reset() { Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers[__Vi0] = VL_RAND_RESET_I(32); }} Vortex__DOT__vx_d_e_reg__DOT__rd = VL_RAND_RESET_I(5); - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT__vx_d_e_reg__DOT__reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__vx_d_e_reg__DOT__a_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} Vortex__DOT__vx_d_e_reg__DOT__alu_op = VL_RAND_RESET_I(5); Vortex__DOT__vx_d_e_reg__DOT__wb = VL_RAND_RESET_I(2); @@ -3908,7 +3842,7 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_d_e_reg__DOT__valid[__Vi0] = VL_RAND_RESET_I(1); }} - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_d_e_reg__DOT__reg_data_z[__Vi0] = VL_RAND_RESET_I(32); }} { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { @@ -3916,13 +3850,7 @@ void VVortex::_ctor_var_reset() { }} Vortex__DOT__vx_d_e_reg__DOT__stalling = VL_RAND_RESET_I(1); Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result = VL_RAND_RESET_I(32); - { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { - Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data[__Vi0] = VL_RAND_RESET_I(32); - }} Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result = VL_RAND_RESET_I(32); - { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { - Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data[__Vi0] = VL_RAND_RESET_I(32); - }} Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__ALU_in2 = VL_RAND_RESET_I(32); Vortex__DOT__vx_execute__DOT__vx_alu_0__DOT__mult_signed_result = VL_RAND_RESET_Q(64); Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__ALU_in2 = VL_RAND_RESET_I(32); @@ -3931,8 +3859,11 @@ void VVortex::_ctor_var_reset() { Vortex__DOT__vx_e_m_reg__DOT__alu_result[__Vi0] = VL_RAND_RESET_I(32); }} Vortex__DOT__vx_e_m_reg__DOT__rd = VL_RAND_RESET_I(5); - { int __Vi0=0; for (; __Vi0<4; ++__Vi0) { - Vortex__DOT__vx_e_m_reg__DOT__reg_data[__Vi0] = VL_RAND_RESET_I(32); + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__vx_e_m_reg__DOT__a_reg_data[__Vi0] = VL_RAND_RESET_I(32); + }} + { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { + Vortex__DOT__vx_e_m_reg__DOT__b_reg_data[__Vi0] = VL_RAND_RESET_I(32); }} Vortex__DOT__vx_e_m_reg__DOT__wb = VL_RAND_RESET_I(2); Vortex__DOT__vx_e_m_reg__DOT__PC_next = VL_RAND_RESET_I(32); diff --git a/rtl/obj_dir/VVortex.h b/rtl/obj_dir/VVortex.h index 90aad2ba..5d031d33 100644 --- a/rtl/obj_dir/VVortex.h +++ b/rtl/obj_dir/VVortex.h @@ -26,9 +26,8 @@ VL_MODULE(VVortex) { VL_OUT8(out_cache_driver_in_mem_read,2,0); VL_OUT8(out_cache_driver_in_mem_write,2,0); VL_IN(fe_instruction,31,0); - VL_IN(in_cache_driver_out_data_0,31,0); - VL_IN(in_cache_driver_out_data_1,31,0); VL_OUT(curr_PC,31,0); + VL_IN(in_cache_driver_out_data[2],31,0); VL_OUT(out_cache_driver_in_address[2],31,0); VL_OUT8(out_cache_driver_in_valid[2],0,0); VL_OUT(out_cache_driver_in_data[2],31,0); @@ -115,18 +114,19 @@ VL_MODULE(VVortex) { VL_SIG64(Vortex__DOT__vx_execute__DOT__vx_alu_1__DOT__mult_signed_result,63,0); VL_SIG64(Vortex__DOT__vx_csr_handler__DOT__cycle,63,0); VL_SIG64(Vortex__DOT__vx_csr_handler__DOT__instret,63,0); - VL_SIG(Vortex__DOT__in_cache_driver_out_data[2],31,0); VL_SIG8(Vortex__DOT__fetch_valid[2],0,0); VL_SIG8(Vortex__DOT__f_d_valid[2],0,0); - VL_SIG(Vortex__DOT__decode_reg_data[4],31,0); + VL_SIG(Vortex__DOT__decode_a_reg_data[2],31,0); + VL_SIG(Vortex__DOT__decode_b_reg_data[2],31,0); VL_SIG8(Vortex__DOT__decode_valid[2],0,0); - VL_SIG(Vortex__DOT__d_e_reg_data[4],31,0); + VL_SIG(Vortex__DOT__d_e_a_reg_data[2],31,0); + VL_SIG(Vortex__DOT__d_e_b_reg_data[2],31,0); VL_SIG8(Vortex__DOT__d_e_valid[2],0,0); VL_SIG(Vortex__DOT__execute_alu_result[2],31,0); - VL_SIG(Vortex__DOT__execute_reg_data[4],31,0); + VL_SIG(Vortex__DOT__execute_b_reg_data[2],31,0); VL_SIG8(Vortex__DOT__execute_valid[2],0,0); VL_SIG(Vortex__DOT__e_m_alu_result[2],31,0); - VL_SIG(Vortex__DOT__e_m_reg_data[4],31,0); + VL_SIG(Vortex__DOT__e_m_b_reg_data[2],31,0); VL_SIG8(Vortex__DOT__e_m_valid[2],0,0); VL_SIG(Vortex__DOT__memory_alu_result[2],31,0); VL_SIG(Vortex__DOT__memory_mem_result[2],31,0); @@ -137,18 +137,19 @@ VL_MODULE(VVortex) { VL_SIG(Vortex__DOT__writeback_write_data[2],31,0); VL_SIG(Vortex__DOT__forwarding_src1_fwd_data[2],31,0); VL_SIG(Vortex__DOT__forwarding_src2_fwd_data[2],31,0); - VL_SIG(Vortex__DOT__use_rd2[2],31,0); VL_SIG8(Vortex__DOT__vx_f_d_reg__DOT__valid[2],0,0); VL_SIG(Vortex__DOT__vx_decode__DOT__rd1_register[2],31,0); VL_SIG(Vortex__DOT__vx_decode__DOT__rd2_register[2],31,0); VL_SIG(Vortex__DOT__vx_decode__DOT__vx_register_file_0__DOT__registers[32],31,0); VL_SIG(Vortex__DOT__vx_decode__DOT__vx_register_file_1__DOT__registers[32],31,0); - VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__reg_data[4],31,0); + VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__a_reg_data[2],31,0); + VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__b_reg_data[2],31,0); VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__valid[2],0,0); - VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__reg_data_z[4],31,0); + VL_SIG(Vortex__DOT__vx_d_e_reg__DOT__reg_data_z[2],31,0); VL_SIG8(Vortex__DOT__vx_d_e_reg__DOT__valid_z[2],0,0); VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__alu_result[2],31,0); - VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__reg_data[4],31,0); + VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__a_reg_data[2],31,0); + VL_SIG(Vortex__DOT__vx_e_m_reg__DOT__b_reg_data[2],31,0); VL_SIG8(Vortex__DOT__vx_e_m_reg__DOT__valid[2],0,0); VL_SIG(Vortex__DOT__vx_m_w_reg__DOT__alu_result[2],31,0); VL_SIG(Vortex__DOT__vx_m_w_reg__DOT__mem_result[2],31,0); @@ -162,70 +163,77 @@ VL_MODULE(VVortex) { // LOCAL VARIABLES // Internals; generally not touched by application code - // Begin mtask footprint all: - VL_SIG8(__Vtableidx1,2,0); - VL_SIG8(__Vclklast__TOP__clk,0,0); - VL_SIG8(__Vclklast__TOP__reset,0,0); - VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src2_data,31,0); - VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src1_data,31,0); - VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src2_data,31,0); - VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src1_data,31,0); - VL_SIG(Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result,31,0); - VL_SIG(Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result,31,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_fetch__out_valid[2],0,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_f_d_reg__out_valid[2],0,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid[2],0,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_decode__out_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_decode__out_reg_data[4],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data[2],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_decode__in_wb_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_decode__in_write_data[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_decode__in_valid[2],0,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_d_e_reg__out_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_d_e_reg__out_reg_data[4],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_d_e_reg__in_reg_data[4],31,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_execute__out_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_execute__out_reg_data[4],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_execute__out_alu_result[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_execute__in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_execute__in_reg_data[4],31,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_e_m_reg__out_reg_data[4],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_e_m_reg__in_reg_data[4],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_e_m_reg__in_alu_result[2],31,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[2],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_address[2],31,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_memory__out_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_mem_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_alu_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_memory__in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_memory__in_rd2[2],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_memory__in_alu_result[2],31,0); - VL_SIG8(Vortex__DOT____Vcellout__vx_m_w_reg__out_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellout__vx_m_w_reg__out_mem_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_m_w_reg__out_alu_result[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_m_w_reg__in_mem_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_m_w_reg__in_alu_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_writeback__out_write_data[2],31,0); - VL_SIG8(Vortex__DOT____Vcellinp__vx_writeback__in_valid[2],0,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_writeback__in_mem_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellinp__vx_writeback__in_alu_result[2],31,0); - VL_SIG(Vortex__DOT____Vcellout__vx_forwarding__out_src2_fwd_data[2],31,0); - 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); - 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_SIG(Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_0__in_reg_data[2],31,0); - VL_SIG(Vortex__DOT__vx_execute__DOT____Vcellinp__vx_alu_1__in_reg_data[2],31,0); + // Anonymous structures to workaround compiler member-count bugs + struct { + // Begin mtask footprint all: + VL_SIG8(__Vtableidx1,2,0); + VL_SIG8(__Vclklast__TOP__clk,0,0); + VL_SIG8(__Vclklast__TOP__reset,0,0); + VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src2_data,31,0); + VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_0__out_src1_data,31,0); + VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src2_data,31,0); + VL_SIG(Vortex__DOT__vx_decode__DOT____Vcellout__vx_register_file_1__out_src1_data,31,0); + VL_SIG(Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_0__out_alu_result,31,0); + VL_SIG(Vortex__DOT__vx_execute__DOT____Vcellout__vx_alu_1__out_alu_result,31,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_fetch__out_valid[2],0,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_f_d_reg__out_valid[2],0,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_f_d_reg__in_valid[2],0,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_decode__out_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_decode__out_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_decode__out_a_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_decode__in_src2_fwd_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_decode__in_src1_fwd_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_decode__in_wb_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_decode__in_write_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_decode__in_valid[2],0,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_d_e_reg__out_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_d_e_reg__out_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_d_e_reg__out_a_reg_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_d_e_reg__in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_d_e_reg__in_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_d_e_reg__in_a_reg_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_execute__out_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_execute__out_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_execute__out_alu_result[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_execute__in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_execute__in_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_execute__in_a_reg_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_e_m_reg__out_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_e_m_reg__out_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_e_m_reg__out_alu_result[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_e_m_reg__in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_e_m_reg__in_b_reg_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_e_m_reg__in_alu_result[2],31,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_data[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_cache_driver_in_address[2],31,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_memory__out_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_mem_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_memory__out_alu_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_memory__in_cache_driver_out_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_memory__in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_memory__in_rd2[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_memory__in_alu_result[2],31,0); + VL_SIG8(Vortex__DOT____Vcellout__vx_m_w_reg__out_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellout__vx_m_w_reg__out_mem_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_m_w_reg__out_alu_result[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_m_w_reg__in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_m_w_reg__in_mem_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_m_w_reg__in_alu_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_writeback__out_write_data[2],31,0); + VL_SIG8(Vortex__DOT____Vcellinp__vx_writeback__in_valid[2],0,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_writeback__in_mem_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellinp__vx_writeback__in_alu_result[2],31,0); + VL_SIG(Vortex__DOT____Vcellout__vx_forwarding__out_src2_fwd_data[2],31,0); + 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); + VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_memory_alu_result[2],31,0); + }; + struct { + VL_SIG(Vortex__DOT____Vcellinp__vx_forwarding__in_execute_alu_result[2],31,0); + }; static VL_ST_SIG8(__Vtable1_Vortex__DOT__vx_decode__DOT__mul_alu[8],4,0); // INTERNAL VARIABLES @@ -260,7 +268,7 @@ VL_MODULE(VVortex) { private: static QData _change_request(VVortex__Syms* __restrict vlSymsp); public: - static void _combo__TOP__4(VVortex__Syms* __restrict vlSymsp); + static void _combo__TOP__3(VVortex__Syms* __restrict vlSymsp); static void _combo__TOP__9(VVortex__Syms* __restrict vlSymsp); private: void _ctor_var_reset(); @@ -276,9 +284,9 @@ VL_MODULE(VVortex) { static void _initial__TOP__6(VVortex__Syms* __restrict vlSymsp); static void _sequent__TOP__1(VVortex__Syms* __restrict vlSymsp); static void _sequent__TOP__2(VVortex__Syms* __restrict vlSymsp); - static void _sequent__TOP__3(VVortex__Syms* __restrict vlSymsp); + static void _sequent__TOP__5(VVortex__Syms* __restrict vlSymsp); static void _sequent__TOP__7(VVortex__Syms* __restrict vlSymsp); - static void _settle__TOP__5(VVortex__Syms* __restrict vlSymsp); + static void _settle__TOP__4(VVortex__Syms* __restrict vlSymsp); static void _settle__TOP__8(VVortex__Syms* __restrict vlSymsp); } VL_ATTR_ALIGNED(128); diff --git a/rtl/obj_dir/VVortex__ALL.a b/rtl/obj_dir/VVortex__ALL.a index 2aff68e836f31b4ef7e0fa632903b937187c1cc4..aca837644e4560c1bbcbd2197d921b9d3dd6b932 100644 GIT binary patch literal 61792 zcmeIb4}4Wul`noNv?VPX9I->4YA=>5)lvz6TBxliG#3I*3Y0&^+IpcR6g2#ih7NU# zO-KUwZ0wbxpE?f?6%v-i%po0e}_vFf9jTvhbp$&-@duV~t|DKlnF zpEUV~WOCZ1$%xSCqDhmkpE@;}ESfUodgWerNjiPq!jD&!re-C=-x;8Xh9?rO7bX&Y z1{urnSc8)c-fhq`c-Y`6gMT(mk$ThWvyOV(|usoIoIFMMFleWgXI z`(x>ojedi%7fnv5m#kQ~cIE1OH*Tm(&Ck(uk0^;SSKYt7I(=VNO-*$^b2jgkwD7K8 zySire^6EUz+00YZE7q;KXI(nIXx{vEddhim&lrMxT6)E*w{HF55>u~7gRNP9PjyvM+O_!7d5hBN`!}U4t5&S5tV*XPyk=u{ zdU^H6R8~Wq$~Ku(qtnEM!Bd^Ka`oCg!CO$+x30+2e+$YphZJ;0*NaMBADpqIYQyU4 zm-PI9^ZJ0a%{Fc#WYtZoHm0ecE*8Uv^0_DwUL%uc*H7x^)<5 z-S6q&{_6J^ClbRj#3eACCNPvG_G7$EB=HZw%kggl!vp-59oL91<5_B9=uGh6MJAU< zQEjTR006p5YU!dd?66DP6r(=cl6*Rmn5%}>YK%V9>3dhKNLOuIQMJA%ji#8ZZ&aJ| z?J=R}o=hYL$p-Af;J0SoT4P7Jv}93<3ndaRUn4_O7Df}JKj^!!X2a^W_Zl(RzWr?) z@s`D}f65R8xweXZ>zA*nNpD>Hm#f!Srqku6QHlNS8rsW3!*BhuM1pm?{zr+#HA2bG zemY&XD!p<8+O$UI+E>=0^wCyAT7RtV3{>C$9{^ov! zyUM&b%ls6;#6 z;|HbUV40U`84q!_`1_=sGnBWk(3j8y~oRb zfA*{y$(2}q^N%)nN2Masxf&pM|Gy&07IgF^BWfwHh%z^2q@EviZ>i% zY10@#^+tW$Ffa8+-_vK$o{g~i&0gtcvg=!VcywavC{8Yc_>Q`NC>}oBs zNFFW`YJ_lUXX>=3aT;k{15~o@*j6k)UFLsV@?U=0ct3SoQaRoCeOTO?60Z8qy>Zr| z&Yg7={8X>V^@??!sZ*NbDac)$pW-Q(;`Ym!eLr;huQmo>2HT5$+M; z9uaZ1YnmMD&D+hKW4ES}JqZUa5uuq!BU;CUvHs(?p(&&-8O)rbnRB`l;t6ndhv; zx>dM4&cg1{!jU4{Eu!6)x#KE&JWlj@C^}k1kBjJW6YWybu6UEXLX*deaF+;oX+43W z^%QBTMV%=O5@5lfqDL(_N>Z4=Qp6Fs7$N8&Sb zB+SUQB78)Ik678as&H#ux)@nqx|2k-RYY4Y-9svRC{FZHC^}t44~gg@6FsP+2jfk~ zxUF4!`(?!6qpsI;joF>vkO*e@q(nJ#x z(^L&qH4%%`M0%*HR5Xz$nuwUDRX|k}F=&b@bH;>aUM{*w6J12C%qxMaE@E+3ksew# zUo?>>nuwTH%YdpTV)0fnCbVj)=ps#Y5izUo0;;-*#p_~BsOwJAMVja$V!D7QKvfg5 z`1~;@%-?>|MVja$V)>f@RCN)Hvx@Z4sso~lG|@!FtQrqgH4%%`M0%*{kZ2-JG!ZdP zNua8USbY8%6Xx%T=ps#Y5wZMT0aSGni?fRK(5g1kM4D(KVpfd>s+x$!X(Bz;)Fqlo z6HP=+(-@$tiCBF87!&5NTXc~ox`k3RCelO`5!3V*JTj_@Sez!(LrrHy6KSG}h-o?lR5cNcFDb@^C6yS@^%-fR zi-?uf8$eYTu{f(p53L#@nn)8(M9ivwpsI;joF>vkO`}8;X`+dUX*vy5H4%%?A7jG& zjS*d>i7q0Rzh0oKi&&ghq=#0G6-}gxCL(6lDWIx}Sez!(LrqE1M4D(KVw!q@swQIb z`D09&zX_s?G|@%G@^=!b>LM0r73rZ>*NP_6L=zFS>I6{LL@Z7d>7k~nqKP!oM8q^b z2UIl?i_=7UsOcurM4D(KVw$>vswQIbCB>Mqq)J5>X`+jWmDF*ds*6~hRiuYjm5CvkP3uJyX`+dUX*vW{H4%%` zM0%)clV~DMG!ZdP2Z5?4VsV;C4>i?_CelO`5z}-4sA?h>r-}4XQ${qACYp$drtrmD z-5bu!o0)sPx;K(YCF0Y%L8;i60r!YH<7Tdp<(wW;1J0Tl+9su`!^Jc{81hBZo{`VF zr51+7GT*3FenE1{Z)q5a`6HoCRm9>nksfN|ZWzCjG|@z4i1u)kmeDAr z5~-7$mCE+8((5q&E4>YOg(Vu{{%A;brfeC7l|~GCbUb-XK#n%SEn^)ylGw*O8}}ev zS}MenG5#OYohc1XyQNe}lTsmK<+~fGY9bb=iS$s@STsDpku=dnM9Y_EOLilc7I!x8 z1cT})7FU0yhx&Jme$qrg5wo-fsA?h>r-}4X(_Ya;nrI@DW9bv@L=kgK!s?1pXDSsX z71K4Y10QR?t0Gu^f!Iik5VmZ~4qo)`nE2=6TAWh-@A+(Kuvl4)F4GySB}lb}bG z%nqr65<0U(B>{PFKu!XS=qMBBfNvjSI~%v7aDia#Acne$89Nvgjvd@h;ftKq4kK;s z$OO8G#nm(E&VYud1EPsE(L}^rOaoB0idei=j0vqeB)UiwT|~sH$ZV2?#z=9@i7C=6 zT&ER}th01WG9VX2M?l_>K%SB^Zwo)xDLspwUvz|Q3c$$^kDZORFct{vfLL6)k?xXh zXlj+bk|ud2lG8sT*__+i_#hZmKe0Idq=)+3L_cYwpNQ4VCZMW`Sez!(LrvWE;y02e znuw^Spht=>V(zV4a9Q1uU(rHxgt=U)ITJvIQuBJ&GNmV>Eu!PLkm~H-!Y_U?WPU|d za+Y~*0hvigRL=`_M5yzH8l-g$GH~XjWPs3_4=ldHGbU{C-BPrqNzoFqZnz$(>LM0b zNu)ai8k(LHO{9q?B39kiKvfg5I8CI7nof!)(nJ%HoQ9b@a4(20qT92Js0%i9Hm-s; zHHKJx5iuq#qEliHX<`l$E22uEs*6}$#z+q{)+?Gw6HP=kW2|w_LQdT;jHND$r7n)8 zE{UbyA=F57TH4vT4CZKVh{ffG^e{L5k{i+_H$<$$?*gith{b6lJ=AnYG?6Bnh?u6O zKvfg5I8CI7nz*^kZzN4L5iw1RfKpT4r^c}ct9tw^0U{k^xSvUmEMATgkGG%DpRv_4*x+@duwfjm#D=UBlBjIpYAptdtL%ysW!}?j zjGyW$>#U_Te{R1RY@B3U#rnO9)3!@2&<3O@RO>c}Y4+Uaux?>kS$Jis?fuAz zUz)U(!}-KV^81A3*TWV&ZnN_rqH64b+T7nXd*sx!{BQrT!ba9tUjg%l7)jLjLX~x< zPOzc_da&uK{!C@z-?rDjdKUlxy4~rR3to|z6^fU7PIKV2vcUb#Mr^)t7gmf%Z>IX@ zw><(}cFR2}B7NL$7^F%$Exr29ClZCb+MMB)Xp&k7(eg>U`tF!Lau}3oIobv|WU1G( zWaaA^f_-o2mbX(bZ>Gje_4=EQ*nHumk05W0G;cov9+S6F&gHE)nzv7A-jZn2S^EPc z?ZYZmD!1_P?2#<6!ov?2pu5(;dUjlwhUXP1eB=_+UpqVQnSw6#fWii=aaRl}$d*9| zVTZ~brbIbF+?pZ5(kdHsaFymsb5K^QRf9xlibQ%)P@#l{U+7#XP9Mdb49i= zko9{d>j?@Emt;$v3MI-`)whrEDo&w~tHgr@9VIs)tr*FkKFnGyHl$SxOoV$lPD*k$ zfe>2<N$Y#Bk()BtpmH-6 zFC+ix*Qx%d%mg8v)(#|%sH{L_T#20QTNWyvAyFJ!T1Vi)QRSvEc77Pk0Rp2}-&nw+ zwnsV1VY@K$uwioj?-PZoc0^(~BZsrp2`_aLdoQ_qS=^tQJ6#!PW*2jJq_B=bn-o^J zpX%1a+Elyw6%@o}l1{3>qn5rbDcg?PMxwQwe}(vW18YjXOqom_=}jqYgJppHS|TJ9 z%Va(vU4y0MVlx?TBVuev@eF~5hv(l=|68c$c5X)aW$V3)<9(H;1vPQK6iZfoSKmj& z`04e}kIpLcV}0+=iXE91+t&AMOA5LnJ3?ab$f8}4C2^$hx~y1j6t03>`-lamw_;|b{L~>Y)#j(rN00fbV_vEYd)>X%aX*FKs_30{wW7VEziEe78!C0j>j6!x zjWli^rbJT^o7wSksZ`QjY-Y#OfaYQ|J3bW9Tx@2?2Lqam&Fr{Ps*n0yY-Yy@&}?{I znLR$%oi0ZIa8s@u(mJqxyCd~7{{0;GVtn3q&3N?P)QcM6x2{a;7Yz6hAA=2E1vacQ zz_09HMXRzsjzA{WrvZM+&u}y&+jJ=KDzKT80e+=Ifoour1h5g6G5ivSDrBJW@Vq%$ z?P_0N4GOcB%Wjsazas;z{)LBTbQda%AHC0VZyD<8pD`U~!)AzXtKmib-}qw3o+*x|5*_jw5- zruI?p$Fu=~ZL-X-yw*ryW1-`Y`>|F2eD+VV9HEMVaMT)dHqHsQU6Je>pl^HIn z?|GqEx6gPL%hvJ33J;^MSO%Y6Fyl8y=^FPh zN^7b>V&ndWGfcR|m9_aSYHGgu+s#;1CV@XnDy!FTStJIg`b!HB7cV%dt8Z=ljPWW? zpeLeHaD}uWlloOro0aD6GrEflcXbrk{$f~h;o%=B^??O5&P1pkwBX1~LW*Y%olO2I7TIhFER1uCo2iK~%O^(Gpa)pLtNE zTl`cDCSx_TB)ehx89HOVitQ1pO(M13Pi^;f@~wT~HgqH&h>`Nlv;wPp9-R|!#ot@$ zE$+bx2J=$=EB*P)5Po4$12d7NY9y%)w)|qCAJo8xh}3$KYVcDHm?WAiFkYhPH2oYI zX{x|@$$+?kQW!7M$hI6uj2wnyfUe1=3XGRzdqx5nFBuTeS_x2z~1D?(|lK^m+N zr5!RF7W+&ZbYkEi*p@lNt8YW-BL8^2|EZjy@BD*c3L!N@K3sWfiXCDt@ohSJR3 zOBo7AbG{6;@-V6G48M(Gh=^TTb1N6sv?H8bWqY`+kWIrTy!+~`DSOLRrR_cMx!9R4 zBYV?a8Ot+sFB!<38Y&ZWhM%K3>nRb*kc1%%XC6^cwyFE_ly`%oe?591VxQnS(vsG7 zc-Hq^T#{)oM**cWb4v*^hhpCAKPxo<%R0;c?4i_*6KRwFrbCJclU07Z& zsQX1?q&DMHe+y|P?Y$_69v-hQE$AqCv*0%cU0x&oN_`j6Fji@vVO$7CTX2?PqpnW$ z(`g$THb&Kh2m|j{diQdlbmQ$Iz=2MZf0cUFvT$Yf-N~sMn52 zy}p{w!Te~wVgVP_>oeniV6U!?chLxG-b~8VFp@&^W|Ug#i>+D|z7&Yp$olf-Ny{

0p365PptS`0+={KZX~SId7iTss5ZJWgRtw**dN?T&^R}$Q(55ub zO-idY+DiYkpCo0a_t|BH&^udTX2WfS7zs*dv`1eu_P`dec@c|b2hi5Hi*2&%E#d3P z6%s~ID63|1U7AsW`4m`00eyiD1z<^{6|v%a@fSdx2v3Tk-CsD;?Mwy zdW}@<%hPM5RlYnQP2eK}Gk^sEn2GsYINK_1Sx_W8>5}g*qZK!OOJ`k{?zdK>XHf=J zop*)GcN*2H6EEd&3TQg~q%93-I{A{O zJ`mvRF530j!_nOOCu}>q=S}RqB2JxK*_e5KeF_*RXCMi%#fiFIZETH51TW+w``K2&IFjnfcbRkm{Ny(oY2PcbV1RmPG;0wM}o!{D2nn)daMV zZ+$>>ZP?pV9?)DH_O_G-w2-elpoM&^0-9^==cv)CbOhRS>rUQm%Y6z177wXzKW&V>qkfwc8UO0>v%z4g; zsWd_dcD&(!r|eFznIylFPdWF`8Dp-@9JW@}lGt$bI21vrG|B!O51ry!C~R;w z1p7bgHIJvNpu7&3eN0JyBO^2=U($PYICSzP@W%ekk`e-ctBwd8`@OAuq&`T~5rMSb z0Zn@@X(s}j_FU4QGg{M^wBI6uFFg~`wAYf>9neC)p9i#%@08IB56`+idjY`Zi`SfF zmg!1q#V~;Skog>rn&?u2&1q|YUl z*F5$d(&rfDHIKeaNRS+oI@96@<@Np;D6q>jcE?s~HJ z1$YUc^corO%hPL2ke68w+;?!LR`jb3dXjVF!C~j^BC{_dYNRiwM%=ZNbue`!xVPmE zDRd67v_acSztNhS-1wbostagt^v*QZ2C~}I*v>KmO?w(?4Ms!TyG3d>bg}P5#=PdY zxS1tv(v(!9-^eI!M*F2~W$cO9awb~~ZStB))RR%F<)CTt>$KOSF_v7*D8Ej-JP8v> zfSX6`=45cS6120EFkT7T(?Qs=SY~fZX-_9@kjRqW7G52%Nl+79xA01m zN^pI`E4e}mT3^&u7D#D*kydK7rX5;ev|?gF)A}Oq+Ca9&%EPPUE-FnUq`hIZV7zxT z+8ZouH)uO=&c$9c>3$=h^*vWQXH7AiRo=YSPZghoA^0G1AFOzc@7qV$i9O+4uY8Rd z@QpX-TLs+N`1c#WrN zpIZK-qyV0tRDX%zDj9h3p&7rAM895A09OyA4@xv9)7K)=&z2Ox&x2@u+PxWg z3BP&agSFV^%TsgYOTN5DR)H^1*+nMb7hI)b;lokE^=EI(1Zgv*x&G{J86VL0vbX65 zo=_K6z}do{TZ(;VUSkgu>_sSXv=|TXP4C+$X~Hf(vFD7@bG$a;h-$$HF|V#05<1rJ zLs~IBrM`C%Jf+_EkWzPEO2;K7K9LfmT}rG~=s#ilOPgA>GvmWbriGs_nJTE-orOBV zsD6v~=TyHJe2wv2v_F$JUq%qlPug2ab{HQKGk8h$D@ z8?|E#^+=Gm)*RD07SOcjNNY118VwrcX!+9iqv5I%4Ys8IdHss-dV6Q>6_DVs@4scS z>F4~n%a9?nE<|-&{4JPipsLep@pGWL>5mO0y3mov)ZB$Sk|hyE>s!eLE;j-lW2}3@ z^lK@?iY)rqH@`_vZx*c{yKSDMXw_au<6?RY)VRbTzUi?GH zC!;S<)$L0PUSlg2{1Pm=Ie!4O?6hSV!PE^)4^c`!sl{dbAY%u~bR!vjd8#U36nc#Z zD0ur|3GXMzx#X9Ode%zS`l4L(>r1X#4_+NxN#9l(AY9FBYuFo8CKHY3XQb}&1qTC7 zlT_sQ$_l^nq;p#Aqm^^BnA`gzK3J~}<4pStNqrR%T^(fwuW3-!bwJ$@%GzH_dfi?l z)%o&_*v#QRr_Qi6d+jX#|MipZt7p=f;P#M#N!%Wk@-mX~dd4^3{I2zwN|aZ=>XR4a z6ANeu`H1;D_L3P`sbA;Xu`jJyi5@wNW2HTH>|)a=Z+CYCB8Ek7O#o zoX7G?$B(wp!SW>~^7!@eXx_AAds%g)y*MKlW!GEqMYgQkYu?R@Sdhh~{W^KR?QA-cI@V zgSVAEOC3n~&@Y9K#`PFm!;Ie--h%m&ta=2@Fx-kzua>1-vBHQ0^Ij7vZxn zdAlf~2VuO%^_1p|f38hoiK!*2{wY=@)f8df*kVb#dw$)_MBR`TUzG6Fl<*x+@KscC zX-w(RrI~9Et_Su2W3O}>D2q< z(`zipGi!>EPrZz6Ia8h{!YQ6I)<4JyKXjlQ-%128rGlZRcujjWw8=mOZ#SjFDW36> zOy9)VK{DM)1~|^~R8?@C3qGBK(J4MJ;i=>}m;90u&dES69HoLYzwpiDsqKob4n{+KD=r3N2_)YAY{d_U6}v}{h(9+V9sr+7-haYAZiFP=lRCRa8e zva&fvk^I&)JQD3Ul1a70bt5>-1I{(U*_z;*#xop>rQgZx2Qe?RT}B@+Np&0|ttFs2 z%*!Ng73BvKc!>#UF4oH&4`f}em+1;Ve)F=mTt@iH0G>W&p-i7V#;dATPHHViI|kX?c*a}&1}|$b$6f4lS^VN&Pp@hh*ANeeDY-|QIKtR>f=!2o z-vAA7L(7wpDVumvB;-gMg0=O&HMhwQ~u_+Fjiq#IV#ax z{G7M3yRadm_^nX!@u=eCruevD(LJsmr*Ot~;h<(gyVn(eJ^|-Hv)hx)CaMT;;NQz> zPi$r|()*rkP}sqWGff{!VV~X}w@I#D+m@Z@O12(-?C4{;Cm_VnJZ~(4_wZZNL*RIx zH%19(jPQ|d#Q51K$G7kvlpYoqr_;9OTl!K9neDBfdp^;_xUNv`bSIn^wWMhRr1csN zTj6>4R@-}eu)e*`4S0op{9_=_{Nx&!J^!eZ9HzIH2X)aN?Hc6d^?;+TD&Vfda z;6O7!7(mnr(#ivxi}f;-g2BSYdYNkjTFCccKnwXcktQ8T`%m3z4)anvc#9hj{HS;> zbI<+BuDaP$Kc(I_S3#xzY^foTG{^V~(e$wH9R`|tShq0=Rd){yb&MDW)ZaEriW{i6 ztwpjb)G;A-XGk3#QZpfSY)IYis7(*+!7fQnj|c&6dbq(cWFFQ-LXz4Ev<cPX5_9&Mo>dp8$_|K zIQU-F{_?2$UtG*jMnSPZGp<`U`ZCjHH|OZVMzep{huuLb3# zou6swhB20%c74)x!x(AW@ky(+H2jQqd(w0xm@D`C=ZmHC>jF;JZ2j{|p)Sm!s-Nj? z;E;XIJXCvi4vRXVBP`v0Tup`j!W|NgupIAuHit#MqW_pfRmbpyS=1~?LVHi_er>l) zTsM-pzc?Iw$}})UIn!Fy_r=U?$chRbPx6YOAd?r zp(88@`~E(MMJph?sNIemw+qK@5{P`P8K44sF!W1l%TE6GS1!ggnKpegBrz1htTUnvfj}Oy)nni?XR;-EGb^P*$*~X4keJy%026hd;v}H!1Pu2$4LfPZnZnud z{6C1#Mtzr{r^TNW#-x&Hy%Z08KOrZVSn)@Mg_G}!dU~kutFlCsk83x}$hnHD&@R#J zxqj!MDjQUWbN`=6v)$wS2h;f=nV})^D2gocm~NA#2S~(T8CCz{aAcqq86dkmwp2~g z%V{Dqlz8+iJi-x;yE0#m?8$sfL$(pS7EY9*=9h}X%1i2Ow_GR!jK}vSyKEEPYM6I-J#F39C;D#sW=-C=Q?&D7Su;%nckDleyV_VS! zZrZT%nGc-Nb9iox(8sh>>AHp+{q$`Ob-6{?HKgg=8qX8Dz4#e9>`d9FCSBJo#!=F8 zG)bj}d~O?ll&^HWeKZPX-iF?za`u-&keL{v#x){=71LR)daMVZ+$@1 zb&}*Qpy@h^H13DhG(x`WfEMzt3TUp>aC9V~xl;4C=({k>H00BFVbVfAc^8&4b)}JM z(t90PF0M2(O?s~bX)ZR?q_;kh=3+BVBcxB0=3+BVJesd{*~LSCb%PRnumUo1Ri;h^EdY3mVz!2 zOX_<^V0Dh*=WmiiBl;yRd!U7fKZ#>p8=KFxwM+7mH6~HyVz|d+jN&3x14J zZ;b4q;P_DL-8FtRwo{Dda11;NocpH`Q8Rv0=<7fpDtg>dJ%$eSe}%(rXJ#zAHpY$~ zuSH+`@>n$1`kr*Z7yjG;#LE#NIDFv4q5*8^!TJ+DQb6r?%TUW>XN zNOM}e7I9G2ADjP)l24+J!~3>k{3^JY=p*%Aay6<9T%x;t_KGG%v+Q-5sHJ zZsQp~$J4p(KqS<$Z9hY*^^ik5xAAafD8X}qVd!8a)UoaBPN-uWul_JQN(|04dsnnZF6taHXSB6_hz=~FiDyYlcdQo3BKBgcz|{iGR%i~ zDxY(n%8>3=@Mg3DJe86WdMaH;;yjgzlb!8@c`8{)^i)Rmgq}*XCh`ul4uz|Yi`5WW z%}+ou%Tw7K^A3{g&i7Qt^NHi;xbswob|md}#r3nUd{1Sp!mi+&F#3#~bl@<;HAg)6 z)|*)}NovvRcnrSNF^u=vV!QzDv@=D*VsD6J;7{QVL>l$mac7KwW){(DUlP?`IJEY{ zp|yW+T$j_nFw|b(Q!F1C&ADg=SfA}&45)d&tv2Ue3|R8q97mjUF<{AabF@0=V!)E+ zTnwmL&PAgR<~tXy4Md%by#qTJ4@KP}hs+&v2p+E}{h-lthh6k; zyf&YA(GBcNE5~3Pb{JOy=3ER)Ag==UIp<=)l2-wHopUi@$*X`p&bb({WH}cDs#buT zSe~gb!eNHWXmtsj1Ejlfv9t<>5YF@c)ch1EidwJ!Oan8kn zCCj-OP_Y$*=rTfF~U_tKga%@ zveI1MpF`DLek_Z6F5S<(jOs{>BrT3LXoF9PXykGm^+f7rH_AXy+PQd1yp;MQ_v121 z=ZWl9Ph>C7RYBRHo=A@1&J!t4wx}nvSKmC%Q6w2rPh=&_FzShn;T(me%?)OrNUjm{ zJ&`6F>xmRU*$1I0-xJvz4QJdtsevD}B!w;cHm`!STG;0N+V2Bi@3M3&P+sVwzGN*Fq0?_Mb*b9SGJtX;%v zE{fgP(^#uZsiSEitHlz&gXskvS)R!3X5&1OH&NgFAQ5^ZE#3C0Cz5REeziyRnwe~G zCEc@ePTJ6O`6$nfKE@T^(G@i7Y>Bi-SsgFNLUHcLaCa3JiqhS1-4m8CB;X+CopVdW z>$k9W=Ji{>DZ75F{g-2Kh1Qj&yn;&?{*d@l>9`Y4_|}1=mXy@Leip2u4R>VOz$KJZ zGq??ff3OV;^K4j@Wka+a7W^^gaQo2Z;PQG$o=r=|CY%di=y;Zt76e5+Gy8h9Xz6Qa zP=|Mv6#T@L+<9wBSf9L3Ej8{bXbWp$iZHsC5UGWkD1o-@7e%%NcSRU#p$9DiuaZGa zXvg(vX7WswKoEsy^qX;K%%IOMtbg-t7+NHu(457_Hgk#NzoQ@!U0QG^H3zsq zv?v-qN20?CC3;p`8g+@j)o^6xVPW^q%Nya)Gvup_jJlDy?-qQopxct2JEfq@p+yB< zpNs!IOYr!vI`<=ZOYRvKsB0R36<_XQ5*kDnUwhxM9M-Fi zHPzG$eCW%xyCQN>(-nCS)|=OL_YNIYvNg4r z8&^}OBUhBwifQ~l!n))a3-3>IbDX<=%RD=90M_;(0omgOIQx)p|K%UNPm2VAbobZ))D4@}Cue383 z>u(KdZy60&@ywd>B(9(8be9oP2H%cmm6aB>$+b&T2DpHVWpI?PYe6$dKM@*AhqzJo zVmFo#{oy2fTUP}}?G9*_0gaw=-5n$dKOB!8AhJ8z$lWeC7j^tQ2E% zi+tJdq-J;1H}Aic$t@@ZWWE!Vn=qjqX5u1nS3VXM77HCiFe3xg+I!70bPh?{e448_ zE=k-E^+W#M2r(LskAD82CZq>zmte|f{dIh!F^ zu9RStkn{u{E%d?`xwS;DOA6KWqOfuM{7|XQ7u~usNe0ynKTbyfG=RCbnI~_neZ)k0 zy50hsyjHV}U2pNWPB$8xqqPq78@**t8ma3npcV)6uD5twrv^0FTfD84LY+ao&K%WS z+(f5q*U&jOkarE++p4esw9_?gZ|lf_&oyi>xR}e|>Ke8eT+HR#QMBn|b^M1nU98Xt zYGPQS_hW?~>EU+_)RYG|VTh(YhzVGr=a{faP0)777O_4kLDx3Ct<@pTFqAZ!mCCxd z;cXpZG_;bSX=IMN3(7!sO#?NW2;^PcK&=Ec*EUegq0XRbWRB_uQPN6W(}2#M!NBF( zhPQQJKyz)w+qyTPjS2FzC!mcEXuAWNjyBO&!qxj9JiuY~K2$4V*>X<6`%6xhEoBs9 zWLP2#USFa^CvG;>d+u^ZRjF#wZo4B@fK#xd{x&q0??(8aPL1oznuMlk9p{g>gXe#U zCK}DZj<%YoB@6j&uiFBPBoL0ni`5p_LcOhvg8FeS)Z02gpt%-0_(gkYl|ci|9CcUi zf$AD4+Eusd%;wcgxTFn6cuyHG>ZP2QOtLE8JS+cx-RW-en913q`R4uCVu_WsnZqCK z=*zy~=*zy`qc7TNxM{jalIE^A?KGsFG#XaW^W3Ipw_Q|ex~jfftdN!VJlsJiQ%CmY zcKB-~Vzw^Fp-h+FZtWP{VCPlriQLddOXwlRwRRQJ-J!et{Ah}{wlB}34Vb`A`zuMD zaC0xQOYQVi*ooTG#~kT(H#mhf@ZEKb)myqd`_GH~-*I1EIQw%8LiS&k;MfETHlVT; zyt@5TbdhW7a)qORCxU~WSCPRU)*Me3w-K!ep5j^W@n^9~tg6kiG)Z_pBz znKz9P92hDzx+p7p4#|3#c;2U1iTVx)mpnH?cGRo6UIIpAD;JyuhN+K$fzr&p8 zM!W0Qva@*J7rW8aZ#@Jmxtvr(&Z#F=XFnURD8@7QwisQoV`US)0FR7ux3`BI z(seAm0v+cMxGhEoAWR#JV=si0Pf~NOQ1$MutPjEGc_Cc*=_+FL_w(y4|Il{Qn1;9z zZp8Z{OHKTlw{D2J+hSNiOg8Jb7%g%T^Dl&(&U(@d;idwW+hT+ky)A|@{~5Q%OhP(C z-xhN%xvsRL8sI`W^5kDYZWoN7G+FIGx@KOHMbpt_Y>)=`gSPWRxbaN;{Rp)J8T>*x zvbx*GlN9@SOcG%>*mpRbxeMX0pvb$8n13N0qw_E8j^1momuUaVZ;R2k1W!$PA>0_) zVzMq9~DL9{YQT88mTZ~H$yRKNF=vlEB!o7t%R|YSeGrThgWkbl@Vkn_ES$lFd z@(``bm5sX)uAd3!wyOe%3TpO|WEZxIn z`;_}TYm*q8`1?P6A>3)^HJt7E0)$z~?LX*cY&hHPv+**#5RMFf%tgniC>WjMsW|^S zx*oFSO!1lsr##A7{~)6;w;6kl)Q#JE@bnr_Qo&GDyrw-G+GHT|8c$Gaz)U~K*g-Pg zNCsb?s>&CIdIfUU6rY#yajHI-{F2dcCwso!$i;vH5(b_!F>FKf19S;R+>Yyq?77o5!KA2Hqr0@#J+= zJo)mbcx_^w;+c6y2N%K}W0C6=-v(5sc%en7c*gu^Oz}sM&d^hQE4jkCaj#^F{YNHZ zz4MhkdRK7v{mF+Y`$tUi2PvO7#cTO;8e#d`g>YnbHzgmS*x*yV)=YRI+!&H)v!=b71mOot!Mz2;3U_|dKiGE}TYce!y58OqI8ERF7v4WD&6 zx^K#`@&tjOVfP!g=pwxS^*4tVkLe>an1(b8Cpa{hGCh~c!TGR~qL z&T2_~S++$y5bZUSi2ay&;?TU{eCjpCd4+hFFz|^>0tDw18>a>5lO^KS-38TJHYH1B z2h|Yu#tjhogOQMrB+1HGqPrS-5gE?6-nd%?2k9v~M7{B}wbxvpZAEQBbQc6umAjz0 zjLhd-Z~Qx!_)~px7Uk62DoMOJ+oJUW(cKbEReFW5CwBhptGH+TTcYR}4=jL!{mo#kTI8UZnkP5=DooH|=lNW?P~CjYPN| z@WkIe6P!=HmE#$$x5cp*<XXvCtB+Px~8*S$FE5Z@p=M8%^E0rIb^{+TTWHTcQ1pM7;?W zehb0*^cqK!Inv+Gsou1|ji6|*MLG4R{VhSxuqw2_k%%{MJmIYnoKL$&H)PgA%3)2pkMd5K?wTyOO19t>!%roFmN0nKUg>S_X-)8f?? z%Unx+PK#G}Q$TZC@C7QMIW73pQ%1v|ikc?lLHI$MD)5)MkkLp{wIF>Z>eauR%WDVL zLgVlUrn0r{6fNP!xR0)riE%MDd`=QoSoKHG+Jr`J2cy?4SO3loC)26YxkE1I%4_De zzY)_jk|>GzLrQq!4=D-GXT*T1=VE}|9z2KvENZV=E({J^&UP_?#QbZ5wH&8Q+N?<} z2F|nzNHNy0bEWLny(L*E%}IE5X9Ak$fU<7{G^YhEC`iL;!Jjt^Xif`SWI%IT&>~3- zuLCYl*nO%K2H0G!OM{QWio7LV_$^kZ7`qKpmWR5YtKjZn>=f>MrxbvEqt#_xb&ft6 zbV7YHtyG-St$tV<*nGDjhfU@b9C@dgN|Tid1=oY{l0n_3e6p{_VuKZ1ZsIb&go(=x zQgI?L@fv?WU{cm*m}&q7e}eJ(c~?~hA3~D8Y=XL zUd^}+X%)x))Nv12-kooG%XEO9)HkwP1}<-z3$TSc%#=(76?(3fTbg-A-uafdjQka? zd5Pzgw+#E(Y#JsmV}3>SlDX&}Q!SB$vd8p@pE`na!G3lvZ#QUT$kZj&5aq4yTMzDP zd24MR@KbULUZlKr*_7MFavH9-?|pe$&SBH`y*H9&ZQpzS)Lt*OPp(_r6D@C@X>$|L zDM)SKyYmvyVbk`l_uOfowSDXEBJLLA9;2`}v_y0-k?wQakMoyW-fluX*Yei(y*;8` zYm=LOaPwT>4dHmA<;}?_IzHtTq_*#dye#LiY5UIFCBkKVMYu~uFXQ?H7dM;m72wLGtRYeFQ`20! z2{&eOq{|v^TZt64E^A2i<%Ye;s^XlMHI-C1$f`n@HQWRdNmQ3LB<3Hwj2LiE%bL4} zFhG|zOS28oWeth>_tj}Rx<$(W)ytatV-xOvO4c*M{a8=5aP^*ZZ4i%`WuGs@-zRYE zAMw(^H}*{)q+NrH@z*H$SMYO$_Jd4T%r)!5ehx6eC|=O{7z2Nee*B!*AD1{k?`JUB5K|0FF2YVnUTU&X&+9v(UJ*L`@& zl64zusy1D>V*UEWlBx}>tC!bQRVLT0tE{R{R<5pG`+=I|igj!6ui9{L)j;v3w}dRW z&$=;r$A;B4tJmI}yn0izW?k~?$yZ&Hm~i!`YZ(3@A2;K1NunZEabvP_dCl_VhN|V2 z$(0+{tx2v}zG78Xx^ly6q<5om&A){(IT62)CU37=QH7{VA+21uA-TM=()d1c^`^U% zcg#$dLZL+e)zzCeU(572RNcG!z8cXt`Ksh6t}ePNiGO!rg2D)Yzf-itQAV{Hrp26i zhXyU=xDtt^QGSXBk6&K===Uox*8lwF#TQ$=is#3#xA=cl`4R<*#Hu#Ml595k@vm#+ zm#=?__+=LV9|OoQo1hUt93Z}!O%K28H08YX*MCss*`V>ui?6l#_YDw#(BkI|5TE#v zMobzYev-xS7$FRK>33U)y!pEL_|dpejlZ`m$dgZ6{GtKkYc1Z2F;D)W#jhPeKAF~t zf#O>%{+R*f*Duou19|CpTg1Z}lNZ129+lr(C@?R+|1%o@W5kS0T#y&veV@kj7#V(f z@ol{71i#nN!GY0lmn)x*pRs(0z?Zy7`LvlMV=?(X z3BHlWXX9xs-w5=@(Z*-vYAoNi;G1rIHonI4EdpP$@!2>V%l9DoT32d5Y`l%-<0;|p zoyuq9ZY&>|D=2z&*kUxQC1Ias;>cjdmmRm8`op?9RS~nmz2-O_gKE? zz*qaa^4T~W%l8)eGR8O9crgCLP~Twfr5t=tpN;>q>DGX6?>X4F2YmaD&*p`ay-)JdjAdH<5VHcQ>e95g_F*#H7M} zy#Lb*M}JD;!>bg&vQqhf1W5jeDpk)e;26LQ03kB*O>`{Q!!He<0>q2!#1nwzd)mTJ0=^&NF9Rk4cL0tC zd;kzb%*3gHG0Qerj1%Our76D@J znRpo>R7@NR2-7G2ZwM6uo(7x>_w(wU0-v;_MfL8%t3dkb80PuRiSD^g8NUGQ1 z^9Fxx@L7Y$4gODqM-{I58X&4-;=>0267X7t(*`FP{U_sFz2H$OPgu$0#B=wyz z_@u!D1|Kju(cszlDSw~AXASN(xWwQk22YMt{tkl&4gR&kEe1braIwLg4SvAjI}H97 zl|_3`8T_Wfdkx-b@M41}uGI2r2c+EBE&K%w|CPZ?gSQ#H+~CuwEXvgzTx{@T1}7MN zhr$0qBO?FL3?4Ul*x+7+O$P5Xc(=h>1}7POx4{?D$*A`$2G<+B+2HGcq46CCzhQ8< z!8(JVGPua#O$Og@aJ0dnqVqDnFB+U}@N$C}7(9*6O}_tS@Ck$a4SvDk=L~+z;1Ywy z2Cp@EnL!R3)cbu5HiY#CXBd11gA(a~Z}1Za-(j#5gB9a98!R&TBEEH#{uP4@4PI>U zaSRfSzt7+Y4E_{@9qC^*INRXwFxZj)KMbxm_#T7LVvu6IXYgi&uVWA+{p$wrHuz41 z-^Kej<2M_eVz3W`66s$txX@sM!N)Q9F#bM+*BJciD5ZbV;2eX$yHx4lG#gUA7VWkyv5)Z1}`%B@57Xj*P@gEiw4&kTxxKp!QUiwUiu~AHQ+x1$a(2$K+a2F z0YsCY_!+?K0Pg_&0N~Al(*Ti1ViI62@&}a{Ei+hbFljJhum|}fAM;PR*I=!|Wd@54 zCJiPG_8^}kZ*Z@{T7%0B78^_&Oc?Beu*e(SYp~YfGK0kilLiw8dyrqC7quB|1%&F0 z4g%hQseZ4~YYi?lSZpw95W|nip__^vfat|=z;MMXw7a)M@u)V&Bof6IUezYS#4(iT z+hK_FD;8MT`3Zl5@?yO6D{i)U=O| zcQ4a$k?}h}-a_Mde&O+8BYzVA_+$TK*!d;XCf}CP_@fqfe#d_@e&+}NE0_L*S@ zUY$dmwi1dQaYpdXY+7a2Jsa;e-dl^N1rZhNDmPYFOm$A~KP<56HqgPhXzkgv(QPJ}1)%UJN_N&u1ESR-_xh961Ra~o< zuf4Ylh4q<@Rrl4T=EL-;{_N77o@V)_SFgnfLBQ&D>(&o0F--&p=P8gOf`XTwV z^-mjuKgay3L$GI;&6FXyb2B^nJo$@a`OAxn(6=iVmoH2&Sg>IA>eXx3u)UR|4VI@< zOBbbXD`gDmG2}S`d0NOlXZCIB1&)0Z=;ezRrsvE7@9Ix|N|j6nbz#|@S&MGZjiE86 zbCxJM%3d+AG>;xNk@`)0jxBQ>ow{#J%`RD#O3x8i3@GL4+e>aMP2Zkcm|6s@Xa~^W+pF%|xTcEf z+?LbLZ$SmQp$4O@u(bo%~H>B_1V*yE5+OL)!3>h$vJ zjj6=!TW(2LZCX*az9ubl*F#_W-c6g*>#H{0w+_Sp>Y4}A_fN{>!&*9V34T`!8#9 zp8oBxet$8hIxIb8zQZ(~7>Tt?B8h+a;dME|4NU|6dMs`NW$<%h=%l}x%Y6Bz(F``# zSO5TH75Y^eb{N-z{869Sf(KsV7^o$1KNQ}I6_FCn)o077M6n6*TaB6MRAfOk;&p4* zFJDoU-l$D9U0xbx7;X71HsW*?7|W~-_Thj2vec*3Rjbk~H(+Yk$Xxs8o4yu}PHZxL zT!%C2Qf$SrC;^l4CaR-!#T~7YuGiBZnfp+&&pX_|{H+GkKmvzh<$spL4;GU+>jh4U4B}{$7S%0kf z?x(zG$~#&ek{f8-!=`FII3%R zdyViRg?WN-ugPzy@9!BLW#P}#NsPQj!)M+1FViz7&=>#xy~p&JJ$c`M+98j&H1Tf$ zM*@BU5M?m29uVzj;zmHUor(7VVre`v1&DSuF$st!ClHyuDEc0Y0)_WT+TKN6k0V@h z5t#TM8!ack$Lu8|ew*=+VfR}Mgzp`$pYS~;5>4NHRv7NFtngDgVai73XXb?abHW_< p^H=$UEUVp4H!iC&DRI^RC!HTL2f7K)&2Hy0g`UF%cy6=O{|CBXS}_0s literal 61920 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 Kj}Lq4#Qz4FMPYsb literal 58684 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 Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = ff00ff ****** -[800000c0] WB Data: 80002000 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 00ff00ff +PC: 800000c4 ----> Received: 00ff00ff for addr: 80002000 +[800000c0] WB Data: 80002000 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002000 = ff00ff ****** RF: Writing 80002000 to 1 MEM: data read from cache_driver: 00ff00ff @@ -38653,12 +38657,16 @@ RF: Writing 00000002 to 28 ---- ****** RF: Writing 800020d8 to 1 +PC: 800000e0 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[800000dc] WB Data: 80002000 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 800000e0 ----> Received: ff00ff00 for addr: 80002004 +[800000dc] WB Data: 80002000 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** RF: Writing 80002000 to 1 MEM: data read from cache_driver: ff00ff00 @@ -38712,12 +38720,16 @@ RF: Writing 00000003 to 28 ---- ****** RF: Writing 800020f4 to 1 +PC: 800000fc ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ff00ff0 ****** -[800000f8] WB Data: 80002000 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 0ff00ff0 +PC: 800000fc ----> Received: 0ff00ff0 for addr: 80002008 +[800000f8] WB Data: 80002000 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002008 = ff00ff0 ****** RF: Writing 80002000 to 1 MEM: data read from cache_driver: 0ff00ff0 @@ -38771,12 +38783,16 @@ RF: Writing 00000004 to 28 ---- ****** RF: Writing 80002110 to 1 +PC: 80000118 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = f00ff00f ****** -[80000114] WB Data: 80002000 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: f00ff00f +PC: 80000118 ----> Received: f00ff00f for addr: 8000200c +[80000114] WB Data: 80002000 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 8000200c = f00ff00f ****** RF: Writing 80002000 to 1 MEM: data read from cache_driver: f00ff00f @@ -38830,12 +38846,16 @@ RF: Writing 00000005 to 28 ---- ****** RF: Writing 8000212c to 1 +PC: 80000134 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = ff00ff ****** -[80000130] WB Data: 8000200c {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 00ff00ff +PC: 80000134 ----> Received: 00ff00ff for addr: 80002000 +[80000130] WB Data: 8000200c {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002000 = ff00ff ****** RF: Writing 8000200c to 1 MEM: data read from cache_driver: 00ff00ff @@ -38889,12 +38909,16 @@ RF: Writing 00000006 to 28 ---- ****** RF: Writing 80002148 to 1 +PC: 80000150 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[8000014c] WB Data: 8000200c {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 80000150 ----> Received: ff00ff00 for addr: 80002004 +[8000014c] WB Data: 8000200c {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** RF: Writing 8000200c to 1 MEM: data read from cache_driver: ff00ff00 @@ -38948,12 +38972,16 @@ RF: Writing 00000007 to 28 ---- ****** RF: Writing 80002164 to 1 +PC: 8000016c ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ff00ff0 ****** -[80000168] WB Data: 8000200c {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 0ff00ff0 +PC: 8000016c ----> Received: 0ff00ff0 for addr: 80002008 +[80000168] WB Data: 8000200c {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002008 = ff00ff0 ****** RF: Writing 8000200c to 1 MEM: data read from cache_driver: 0ff00ff0 @@ -39007,12 +39035,16 @@ RF: Writing 00000008 to 28 ---- ****** RF: Writing 80002180 to 1 +PC: 80000188 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = f00ff00f ****** -[80000184] WB Data: 8000200c {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: f00ff00f +PC: 80000188 ----> Received: f00ff00f for addr: 8000200c +[80000184] WB Data: 8000200c {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 8000200c = f00ff00f ****** RF: Writing 8000200c to 1 MEM: data read from cache_driver: f00ff00f @@ -39073,12 +39105,16 @@ RF: Writing 8000219c to 1 ---- ****** RF: Writing 80002000 to 1 +PC: 800001a8 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = ff00ff ****** -[800001a4] WB Data: 80001fe0 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 00ff00ff +PC: 800001a8 ----> Received: 00ff00ff for addr: 80002000 +[800001a4] WB Data: 80001fe0 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002000 = ff00ff ****** RF: Writing 80001fe0 to 1 MEM: data read from cache_driver: 00ff00ff @@ -39139,12 +39175,16 @@ RF: Writing 800021bc to 1 ---- ****** RF: Writing 80002000 to 1 +PC: 800001c8 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[800001c4] WB Data: 80001ffd {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 800001c8 ----> Received: ff00ff00 for addr: 80002004 +[800001c4] WB Data: 80001ffd {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** RF: Writing 80001ffd to 1 MEM: data read from cache_driver: ff00ff00 @@ -39212,12 +39252,16 @@ RF: Writing 00000000 to 4 ---- ****** RF: Writing 800021e4 to 1 +PC: 800001ec ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ff00ff0 ****** -[800001e8] WB Data: 80002004 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 0ff00ff0 +PC: 800001ec ----> Received: 0ff00ff0 for addr: 80002008 +[800001e8] WB Data: 80002004 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002008 = ff00ff0 ****** RF: Writing 80002004 to 1 MEM: data read from cache_driver: 0ff00ff0 @@ -39310,12 +39354,16 @@ RF: Writing 00000002 to 5 ---- ****** RF: Writing 800021e4 to 1 +PC: 800001ec ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ff00ff0 ****** -[800001e8] WB Data: 80002004 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 0ff00ff0 +PC: 800001ec ----> Received: 0ff00ff0 for addr: 80002008 +[800001e8] WB Data: 80002004 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002008 = ff00ff0 ****** RF: Writing 80002004 to 1 MEM: data read from cache_driver: 0ff00ff0 @@ -39422,12 +39470,16 @@ RF: Writing 00000000 to 4 ---- ****** RF: Writing 80002214 to 1 +PC: 8000021c ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = f00ff00f ****** -[80000218] WB Data: 80002008 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: f00ff00f +PC: 8000021c ----> Received: f00ff00f for addr: 8000200c +[80000218] WB Data: 80002008 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 8000200c = f00ff00f ****** RF: Writing 80002008 to 1 MEM: data read from cache_driver: f00ff00f @@ -39521,12 +39573,16 @@ RF: Writing 00000002 to 5 ---- ****** RF: Writing 80002214 to 1 +PC: 8000021c ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = f00ff00f ****** -[80000218] WB Data: 80002008 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: f00ff00f +PC: 8000021c ----> Received: f00ff00f for addr: 8000200c +[80000218] WB Data: 80002008 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 8000200c = f00ff00f ****** RF: Writing 80002008 to 1 MEM: data read from cache_driver: f00ff00f @@ -39634,12 +39690,16 @@ RF: Writing 00000000 to 4 ---- ****** RF: Writing 80002248 to 1 +PC: 80000250 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[8000024c] WB Data: 80002000 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 80000250 ----> Received: ff00ff00 for addr: 80002004 +[8000024c] WB Data: 80002000 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** RF: Writing 80002000 to 1 MEM: data read from cache_driver: ff00ff00 @@ -39734,12 +39794,16 @@ RF: Writing 00000002 to 5 ---- ****** RF: Writing 80002248 to 1 +PC: 80000250 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[8000024c] WB Data: 80002000 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 80000250 ----> Received: ff00ff00 for addr: 80002004 +[8000024c] WB Data: 80002000 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** RF: Writing 80002000 to 1 MEM: data read from cache_driver: ff00ff00 @@ -39848,12 +39912,16 @@ RF: Writing 00000000 to 4 ---- ****** RF: Writing 80002280 to 1 +PC: 80000288 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ff00ff0 ****** -[80000284] WB Data: 80002004 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 0ff00ff0 +PC: 80000288 ----> Received: 0ff00ff0 for addr: 80002008 +[80000284] WB Data: 80002004 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002008 = ff00ff0 ****** RF: Writing 80002004 to 1 MEM: data read from cache_driver: 0ff00ff0 @@ -39929,12 +39997,16 @@ RF: Writing 00000002 to 5 ---- ****** RF: Writing 80002280 to 1 +PC: 80000288 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ff00ff0 ****** -[80000284] WB Data: 80002004 {babebabe}, to register: 1 [1 0] MEM: data read from cache_driver: 0ff00ff0 +PC: 80000288 ----> Received: 0ff00ff0 for addr: 80002008 +[80000284] WB Data: 80002004 {babebabe}, to register: 1 [1 0] ---- +READING - Addr: 80002008 = ff00ff0 ****** RF: Writing 80002004 to 1 MEM: data read from cache_driver: 0ff00ff0 @@ -40031,12 +40103,16 @@ RF: Writing 800022ac to 1 ---- ****** RF: Writing 80002008 to 1 +PC: 800002b8 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = f00ff00f ****** -[800002b4] WB Data: 00000000 {babebabe}, to register: 0 [1 0] MEM: data read from cache_driver: f00ff00f +PC: 800002b8 ----> Received: f00ff00f for addr: 8000200c +[800002b4] WB Data: 00000000 {babebabe}, to register: 0 [1 0] ---- +READING - Addr: 8000200c = f00ff00f ****** MEM: data read from cache_driver: f00ff00f ---- @@ -40118,12 +40194,16 @@ RF: Writing 800022ac to 1 ---- ****** RF: Writing 80002008 to 1 +PC: 800002b8 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = f00ff00f ****** -[800002b4] WB Data: 00000000 {babebabe}, to register: 0 [1 0] MEM: data read from cache_driver: f00ff00f +PC: 800002b8 ----> Received: f00ff00f for addr: 8000200c +[800002b4] WB Data: 00000000 {babebabe}, to register: 0 [1 0] ---- +READING - Addr: 8000200c = f00ff00f ****** MEM: data read from cache_driver: f00ff00f ---- @@ -40225,12 +40305,16 @@ RF: Writing 80002000 to 1 ---- ****** +PC: 800002ec ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[800002e8] WB Data: 00000000 {babebabe}, to register: 0 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 800002ec ----> Received: ff00ff00 for addr: 80002004 +[800002e8] WB Data: 00000000 {babebabe}, to register: 0 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** MEM: data read from cache_driver: ff00ff00 ---- @@ -40318,12 +40402,16 @@ RF: Writing 80002000 to 1 ---- ****** +PC: 800002ec ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = ff00ff00 ****** -[800002e8] WB Data: 00000000 {babebabe}, to register: 0 [1 0] MEM: data read from cache_driver: ff00ff00 +PC: 800002ec ----> Received: ff00ff00 for addr: 80002004 +[800002e8] WB Data: 00000000 {babebabe}, to register: 0 [1 0] ---- +READING - Addr: 80002004 = ff00ff00 ****** MEM: data read from cache_driver: ff00ff00 ---- @@ -40398,12 +40486,16 @@ RF: Writing 00000002 to 5 ---- ****** RF: Writing 80002308 to 3 +PC: 80000310 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = ff00ff ****** -[8000030c] WB Data: 80002000 {babebabe}, to register: 3 [1 0] MEM: data read from cache_driver: 00ff00ff +PC: 80000310 ----> Received: 00ff00ff for addr: 80002000 +[8000030c] WB Data: 80002000 {babebabe}, to register: 3 [1 0] ---- +READING - Addr: 80002000 = ff00ff ****** RF: Writing 80002000 to 3 MEM: data read from cache_driver: 00ff00ff @@ -40467,12 +40559,16 @@ RF: Writing 00000012 to 28 ---- ****** RF: Writing 80002324 to 3 +PC: 8000032c ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = ff00ff ****** -[80000328] WB Data: 80002000 {babebabe}, to register: 3 [1 0] MEM: data read from cache_driver: 00ff00ff +PC: 8000032c ----> Received: 00ff00ff for addr: 80002000 +[80000328] WB Data: 80002000 {babebabe}, to register: 3 [1 0] ---- +READING - Addr: 80002000 = ff00ff ****** RF: Writing 80002000 to 3 MEM: data read from cache_driver: 00ff00ff @@ -46959,8 +47055,8 @@ RF: Writing 80002002 to 1 RF: Writing 80002204 to 4 ---- ****** -[80000208] WB Data: 80002009 {babebabe}, to register: 4 [1 0] MEM: data read from cache_driver: ffffff98 +[80000208] WB Data: 80002009 {babebabe}, to register: 4 [1 0] ---- ****** @@ -50056,11 +50152,15 @@ RF: Writing beef1000 to 2 ---- ****** RF: Writing beef0aa0 to 2 +PC: 80000118 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = beef0aa0 ****** MEM: data read from cache_driver: beef0aa0 +PC: 80000118 ----> Received: beef0aa0 for addr: 80002004 ---- +READING - Addr: 80002004 = beef0aa0 ****** MEM: data read from cache_driver: beef0aa0 ---- @@ -50616,8 +50716,8 @@ RF: Writing 8000200b to 1 RF: Writing 80002230 to 4 ---- ****** -[80000234] WB Data: 80002012 {babebabe}, to register: 4 [1 0] MEM: data read from cache_driver: 00003098 +[80000234] WB Data: 80002012 {babebabe}, to register: 4 [1 0] ---- ****** @@ -87376,11 +87476,15 @@ STORING aa00aa in 80002000 ---- ****** RF: Writing 00aa00aa to 2 +PC: 800000d0 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = aa00aa ****** MEM: data read from cache_driver: 00aa00aa +PC: 800000d0 ----> Received: 00aa00aa for addr: 80002000 ---- +READING - Addr: 80002000 = aa00aa ****** MEM: data read from cache_driver: 00aa00aa ---- @@ -87456,11 +87560,15 @@ STORING aa00aa00 in 80002004 ---- ****** RF: Writing aa00aa00 to 2 +PC: 800000f8 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = aa00aa00 ****** MEM: data read from cache_driver: aa00aa00 +PC: 800000f8 ----> Received: aa00aa00 for addr: 80002004 ---- +READING - Addr: 80002004 = aa00aa00 ****** MEM: data read from cache_driver: aa00aa00 ---- @@ -87536,11 +87644,15 @@ STORING aa00aa0 in 80002008 ---- ****** RF: Writing 0aa00aa0 to 2 +PC: 80000120 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = aa00aa0 ****** MEM: data read from cache_driver: 0aa00aa0 +PC: 80000120 ----> Received: 0aa00aa0 for addr: 80002008 ---- +READING - Addr: 80002008 = aa00aa0 ****** MEM: data read from cache_driver: 0aa00aa0 ---- @@ -87616,11 +87728,15 @@ STORING a00aa00a in 8000200c ---- ****** RF: Writing a00aa00a to 2 +PC: 80000148 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = a00aa00a ****** MEM: data read from cache_driver: a00aa00a +PC: 80000148 ----> Received: a00aa00a for addr: 8000200c ---- +READING - Addr: 8000200c = a00aa00a ****** MEM: data read from cache_driver: a00aa00a ---- @@ -87696,11 +87812,15 @@ STORING aa00aa in 80002010 ---- ****** RF: Writing 00aa00aa to 2 +PC: 80000170 ----> Received: babebabe for addr: 80002010 ---- +READING - Addr: 80002010 = aa00aa ****** MEM: data read from cache_driver: 00aa00aa +PC: 80000170 ----> Received: 00aa00aa for addr: 80002010 ---- +READING - Addr: 80002010 = aa00aa ****** MEM: data read from cache_driver: 00aa00aa ---- @@ -87776,11 +87896,15 @@ STORING aa00aa00 in 80002014 ---- ****** RF: Writing aa00aa00 to 2 +PC: 80000198 ----> Received: babebabe for addr: 80002014 ---- +READING - Addr: 80002014 = aa00aa00 ****** MEM: data read from cache_driver: aa00aa00 +PC: 80000198 ----> Received: aa00aa00 for addr: 80002014 ---- +READING - Addr: 80002014 = aa00aa00 ****** MEM: data read from cache_driver: aa00aa00 ---- @@ -87856,11 +87980,15 @@ STORING aa00aa0 in 80002018 ---- ****** RF: Writing 0aa00aa0 to 2 +PC: 800001c0 ----> Received: babebabe for addr: 80002018 ---- +READING - Addr: 80002018 = aa00aa0 ****** MEM: data read from cache_driver: 0aa00aa0 +PC: 800001c0 ----> Received: 0aa00aa0 for addr: 80002018 ---- +READING - Addr: 80002018 = aa00aa0 ****** MEM: data read from cache_driver: 0aa00aa0 ---- @@ -87936,11 +88064,15 @@ STORING a00aa00a in 8000201c ---- ****** RF: Writing a00aa00a to 2 +PC: 800001e8 ----> Received: babebabe for addr: 8000201c ---- +READING - Addr: 8000201c = a00aa00a ****** MEM: data read from cache_driver: a00aa00a +PC: 800001e8 ----> Received: a00aa00a for addr: 8000201c ---- +READING - Addr: 8000201c = a00aa00a ****** MEM: data read from cache_driver: a00aa00a ---- @@ -88023,11 +88155,15 @@ STORING 12345678 in 80002020 ---- ****** RF: Writing 80002000 to 4 +PC: 80000214 ----> Received: babebabe for addr: 80002020 ---- +READING - Addr: 80002020 = 12345678 ****** MEM: data read from cache_driver: 12345678 +PC: 80000214 ----> Received: 12345678 for addr: 80002020 ---- +READING - Addr: 80002020 = 12345678 ****** MEM: data read from cache_driver: 12345678 ---- @@ -88132,12 +88268,16 @@ RF: Writing 8000201d to 1 ---- ****** RF: Writing 80002240 to 4 +PC: 80000248 ----> Received: babebabe for addr: 80002024 ---- +READING - Addr: 80002024 = 58213098 ****** -[80000244] WB Data: 80002024 {babebabe}, to register: 4 [1 0] MEM: data read from cache_driver: 58213098 +PC: 80000248 ----> Received: 58213098 for addr: 80002024 +[80000244] WB Data: 80002024 {babebabe}, to register: 4 [1 0] ---- +READING - Addr: 80002024 = 58213098 ****** RF: Writing 80002024 to 4 MEM: data read from cache_driver: 58213098 @@ -88228,11 +88368,15 @@ STORING aabbccdd in 80002000 ---- ****** RF: Writing 80002000 to 2 +PC: 80000278 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = aabbccdd ****** MEM: data read from cache_driver: aabbccdd +PC: 80000278 ----> Received: aabbccdd for addr: 80002000 ---- +READING - Addr: 80002000 = aabbccdd ****** MEM: data read from cache_driver: aabbccdd ---- @@ -88330,11 +88474,15 @@ STORING aabbccdd in 80002000 ---- ****** RF: Writing 80002000 to 2 +PC: 80000278 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = aabbccdd ****** MEM: data read from cache_driver: aabbccdd +PC: 80000278 ----> Received: aabbccdd for addr: 80002000 ---- +READING - Addr: 80002000 = aabbccdd ****** MEM: data read from cache_driver: aabbccdd ---- @@ -88452,11 +88600,15 @@ STORING daabbccd in 80002004 STORING daabbccd in 80002004 ---- ****** +PC: 800002b4 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = daabbccd ****** MEM: data read from cache_driver: daabbccd +PC: 800002b4 ----> Received: daabbccd for addr: 80002004 ---- +READING - Addr: 80002004 = daabbccd ****** MEM: data read from cache_driver: daabbccd ---- @@ -88560,11 +88712,15 @@ STORING daabbccd in 80002004 STORING daabbccd in 80002004 ---- ****** +PC: 800002b4 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = daabbccd ****** MEM: data read from cache_driver: daabbccd +PC: 800002b4 ----> Received: daabbccd for addr: 80002004 ---- +READING - Addr: 80002004 = daabbccd ****** MEM: data read from cache_driver: daabbccd ---- @@ -88688,11 +88844,15 @@ STORING ddaabbcc in 80002008 STORING ddaabbcc in 80002008 ---- ****** +PC: 800002f4 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ddaabbcc ****** MEM: data read from cache_driver: ddaabbcc +PC: 800002f4 ----> Received: ddaabbcc for addr: 80002008 ---- +READING - Addr: 80002008 = ddaabbcc ****** MEM: data read from cache_driver: ddaabbcc ---- @@ -88802,11 +88962,15 @@ STORING ddaabbcc in 80002008 STORING ddaabbcc in 80002008 ---- ****** +PC: 800002f4 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = ddaabbcc ****** MEM: data read from cache_driver: ddaabbcc +PC: 800002f4 ----> Received: ddaabbcc for addr: 80002008 ---- +READING - Addr: 80002008 = ddaabbcc ****** MEM: data read from cache_driver: ddaabbcc ---- @@ -88924,11 +89088,15 @@ STORING cddaabbc in 8000200c ---- ****** RF: Writing 80002000 to 2 +PC: 80000330 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = cddaabbc ****** MEM: data read from cache_driver: cddaabbc +PC: 80000330 ----> Received: cddaabbc for addr: 8000200c ---- +READING - Addr: 8000200c = cddaabbc ****** MEM: data read from cache_driver: cddaabbc ---- @@ -89032,11 +89200,15 @@ STORING cddaabbc in 8000200c ---- ****** RF: Writing 80002000 to 2 +PC: 80000330 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = cddaabbc ****** MEM: data read from cache_driver: cddaabbc +PC: 80000330 ----> Received: cddaabbc for addr: 8000200c ---- +READING - Addr: 8000200c = cddaabbc ****** MEM: data read from cache_driver: cddaabbc ---- @@ -89160,11 +89332,15 @@ STORING ccddaabb in 80002010 STORING ccddaabb in 80002010 ---- ****** +PC: 80000370 ----> Received: babebabe for addr: 80002010 ---- +READING - Addr: 80002010 = ccddaabb ****** MEM: data read from cache_driver: ccddaabb +PC: 80000370 ----> Received: ccddaabb for addr: 80002010 ---- +READING - Addr: 80002010 = ccddaabb ****** MEM: data read from cache_driver: ccddaabb ---- @@ -89274,11 +89450,15 @@ STORING ccddaabb in 80002010 STORING ccddaabb in 80002010 ---- ****** +PC: 80000370 ----> Received: babebabe for addr: 80002010 ---- +READING - Addr: 80002010 = ccddaabb ****** MEM: data read from cache_driver: ccddaabb +PC: 80000370 ----> Received: ccddaabb for addr: 80002010 ---- +READING - Addr: 80002010 = ccddaabb ****** MEM: data read from cache_driver: ccddaabb ---- @@ -89402,11 +89582,15 @@ STORING bccddaab in 80002014 ---- ****** RF: Writing 80002000 to 2 +PC: 800003b0 ----> Received: babebabe for addr: 80002014 ---- +READING - Addr: 80002014 = bccddaab ****** MEM: data read from cache_driver: bccddaab +PC: 800003b0 ----> Received: bccddaab for addr: 80002014 ---- +READING - Addr: 80002014 = bccddaab ****** MEM: data read from cache_driver: bccddaab ---- @@ -89516,11 +89700,15 @@ STORING bccddaab in 80002014 ---- ****** RF: Writing 80002000 to 2 +PC: 800003b0 ----> Received: babebabe for addr: 80002014 ---- +READING - Addr: 80002014 = bccddaab ****** MEM: data read from cache_driver: bccddaab +PC: 800003b0 ----> Received: bccddaab for addr: 80002014 ---- +READING - Addr: 80002014 = bccddaab ****** MEM: data read from cache_driver: bccddaab ---- @@ -89632,11 +89820,15 @@ STORING 112233 in 80002000 ---- ****** RF: Writing 00112233 to 1 +PC: 800003e8 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = 112233 ****** MEM: data read from cache_driver: 00112233 +PC: 800003e8 ----> Received: 00112233 for addr: 80002000 ---- +READING - Addr: 80002000 = 112233 ****** MEM: data read from cache_driver: 00112233 ---- @@ -89734,11 +89926,15 @@ STORING 112233 in 80002000 ---- ****** RF: Writing 00112233 to 1 +PC: 800003e8 ----> Received: babebabe for addr: 80002000 ---- +READING - Addr: 80002000 = 112233 ****** MEM: data read from cache_driver: 00112233 +PC: 800003e8 ----> Received: 00112233 for addr: 80002000 ---- +READING - Addr: 80002000 = 112233 ****** MEM: data read from cache_driver: 00112233 ---- @@ -89856,11 +90052,15 @@ STORING 30011223 in 80002004 STORING 30011223 in 80002004 ---- ****** +PC: 80000424 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = 30011223 ****** MEM: data read from cache_driver: 30011223 +PC: 80000424 ----> Received: 30011223 for addr: 80002004 ---- +READING - Addr: 80002004 = 30011223 ****** MEM: data read from cache_driver: 30011223 ---- @@ -89969,11 +90169,15 @@ STORING 30011223 in 80002004 STORING 30011223 in 80002004 ---- ****** +PC: 80000424 ----> Received: babebabe for addr: 80002004 ---- +READING - Addr: 80002004 = 30011223 ****** MEM: data read from cache_driver: 30011223 +PC: 80000424 ----> Received: 30011223 for addr: 80002004 ---- +READING - Addr: 80002004 = 30011223 ****** MEM: data read from cache_driver: 30011223 ---- @@ -90102,11 +90306,15 @@ STORING 33001122 in 80002008 STORING 33001122 in 80002008 ---- ****** +PC: 80000464 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = 33001122 ****** MEM: data read from cache_driver: 33001122 +PC: 80000464 ----> Received: 33001122 for addr: 80002008 ---- +READING - Addr: 80002008 = 33001122 ****** MEM: data read from cache_driver: 33001122 ---- @@ -90216,11 +90424,15 @@ STORING 33001122 in 80002008 STORING 33001122 in 80002008 ---- ****** +PC: 80000464 ----> Received: babebabe for addr: 80002008 ---- +READING - Addr: 80002008 = 33001122 ****** MEM: data read from cache_driver: 33001122 +PC: 80000464 ----> Received: 33001122 for addr: 80002008 ---- +READING - Addr: 80002008 = 33001122 ****** MEM: data read from cache_driver: 33001122 ---- @@ -90338,11 +90550,15 @@ STORING 23300112 in 8000200c ---- ****** RF: Writing 23300112 to 1 +PC: 800004a0 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = 23300112 ****** MEM: data read from cache_driver: 23300112 +PC: 800004a0 ----> Received: 23300112 for addr: 8000200c ---- +READING - Addr: 8000200c = 23300112 ****** MEM: data read from cache_driver: 23300112 ---- @@ -90446,11 +90662,15 @@ STORING 23300112 in 8000200c ---- ****** RF: Writing 23300112 to 1 +PC: 800004a0 ----> Received: babebabe for addr: 8000200c ---- +READING - Addr: 8000200c = 23300112 ****** MEM: data read from cache_driver: 23300112 +PC: 800004a0 ----> Received: 23300112 for addr: 8000200c ---- +READING - Addr: 8000200c = 23300112 ****** MEM: data read from cache_driver: 23300112 ---- @@ -90574,11 +90794,15 @@ STORING 22330011 in 80002010 STORING 22330011 in 80002010 ---- ****** +PC: 800004e0 ----> Received: babebabe for addr: 80002010 ---- +READING - Addr: 80002010 = 22330011 ****** MEM: data read from cache_driver: 22330011 +PC: 800004e0 ----> Received: 22330011 for addr: 80002010 ---- +READING - Addr: 80002010 = 22330011 ****** MEM: data read from cache_driver: 22330011 ---- @@ -90698,11 +90922,15 @@ STORING 22330011 in 80002010 STORING 22330011 in 80002010 ---- ****** +PC: 800004e0 ----> Received: babebabe for addr: 80002010 ---- +READING - Addr: 80002010 = 22330011 ****** MEM: data read from cache_driver: 22330011 +PC: 800004e0 ----> Received: 22330011 for addr: 80002010 ---- +READING - Addr: 80002010 = 22330011 ****** MEM: data read from cache_driver: 22330011 ---- @@ -90836,11 +91064,15 @@ STORING 12233001 in 80002014 ---- ****** RF: Writing 12233001 to 1 +PC: 80000520 ----> Received: babebabe for addr: 80002014 ---- +READING - Addr: 80002014 = 12233001 ****** MEM: data read from cache_driver: 12233001 +PC: 80000520 ----> Received: 12233001 for addr: 80002014 ---- +READING - Addr: 80002014 = 12233001 ****** MEM: data read from cache_driver: 12233001 ---- @@ -90950,11 +91182,15 @@ STORING 12233001 in 80002014 ---- ****** RF: Writing 12233001 to 1 +PC: 80000520 ----> Received: babebabe for addr: 80002014 ---- +READING - Addr: 80002014 = 12233001 ****** MEM: data read from cache_driver: 12233001 +PC: 80000520 ----> Received: 12233001 for addr: 80002014 ---- +READING - Addr: 80002014 = 12233001 ****** MEM: data read from cache_driver: 12233001 ---- @@ -100088,7 +100324,7 @@ RF: Writing 0000000f to 1 ****** RF: Writing 0000000b to 2 (80000378) 0000000f * 0000000b = 000000a5 -(80000378) 0000000f * 0000000b = 000000a5 +(80000378) 00000000 * 0000000b = 00000000 ---- ****** [80000370] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -100152,7 +100388,7 @@ RF: Writing 0000000f to 1 ****** RF: Writing 0000000b to 2 (80000378) 0000000f * 0000000b = 000000a5 -(80000378) 0000000f * 0000000b = 000000a5 +(80000378) 00000000 * 0000000b = 00000000 ---- ****** [80000370] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -100403,7 +100639,7 @@ RF: Writing 0000000e to 1 ---- ****** (800003d4) 0000000e * 0000000b = 0000009a -(800003d4) 0000000e * 0000000b = 0000009a +(800003d4) 00000000 * 0000000b = 00000000 ---- ****** [800003cc] WB Data: 0000000b {babebabe}, to register: 2 [1 0] @@ -100467,7 +100703,7 @@ RF: Writing 0000000e to 1 ---- ****** (800003d4) 0000000e * 0000000b = 0000009a -(800003d4) 0000000e * 0000000b = 0000009a +(800003d4) 00000000 * 0000000b = 00000000 ---- ****** [800003cc] WB Data: 0000000b {babebabe}, to register: 2 [1 0] @@ -100567,7 +100803,7 @@ RF: Writing 0000000f to 1 ---- ****** (80000404) 0000000f * 0000000b = 000000a5 -(80000404) 0000000f * 0000000b = 000000a5 +(80000404) 00000000 * 0000000b = 00000000 ---- ****** [800003fc] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -100631,7 +100867,7 @@ RF: Writing 0000000f to 1 ---- ****** (80000404) 0000000f * 0000000b = 000000a5 -(80000404) 0000000f * 0000000b = 000000a5 +(80000404) 00000000 * 0000000b = 00000000 ---- ****** [800003fc] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -101024,7 +101260,7 @@ RF: Writing 0000000b to 2 ****** RF: Writing 0000000f to 1 (80000488) 0000000f * 0000000b = 000000a5 -(80000488) 0000000f * 0000000b = 000000a5 +(80000488) 0000000f * 00000000 = 00000000 ---- ****** [80000480] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -101088,7 +101324,7 @@ RF: Writing 0000000b to 2 ****** RF: Writing 0000000f to 1 (80000488) 0000000f * 0000000b = 000000a5 -(80000488) 0000000f * 0000000b = 000000a5 +(80000488) 0000000f * 00000000 = 00000000 ---- ****** [80000480] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -101339,7 +101575,7 @@ RF: Writing 0000000b to 2 ---- ****** (800004e4) 0000000e * 0000000b = 0000009a -(800004e4) 0000000e * 0000000b = 0000009a +(800004e4) 0000000e * 00000000 = 00000000 ---- ****** [800004dc] WB Data: 0000000e {babebabe}, to register: 1 [1 0] @@ -101403,7 +101639,7 @@ RF: Writing 0000000b to 2 ---- ****** (800004e4) 0000000e * 0000000b = 0000009a -(800004e4) 0000000e * 0000000b = 0000009a +(800004e4) 0000000e * 00000000 = 00000000 ---- ****** [800004dc] WB Data: 0000000e {babebabe}, to register: 1 [1 0] @@ -101503,7 +101739,7 @@ RF: Writing 0000000b to 2 ---- ****** (80000514) 0000000f * 0000000b = 000000a5 -(80000514) 0000000f * 0000000b = 000000a5 +(80000514) 0000000f * 00000000 = 00000000 ---- ****** [8000050c] WB Data: 00000000 {babebabe}, to register: 0 [1 0] @@ -101567,7 +101803,7 @@ RF: Writing 0000000b to 2 ---- ****** (80000514) 0000000f * 0000000b = 000000a5 -(80000514) 0000000f * 0000000b = 000000a5 +(80000514) 0000000f * 00000000 = 00000000 ---- ****** [8000050c] WB Data: 00000000 {babebabe}, to register: 0 [1 0] diff --git a/rtl/obj_dir/test_bench.o b/rtl/obj_dir/test_bench.o index 75b01f5bcf60a25218b2a692baacac229799fd61..7d6d8cf939dbc1805f9010d230c6442d4547e3b4 100644 GIT binary patch delta 10393 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 : vortex->in_cache_driver_out_data_1; - - if ((vortex->out_cache_driver_in_mem_read != NO_MEM_READ) && vortex->out_cache_driver_in_valid[0]) + + if ((vortex->out_cache_driver_in_mem_read != NO_MEM_READ) && vortex->out_cache_driver_in_valid[curr_th]) { - addr = (uint32_t) vortex->out_cache_driver_in_address[1]; + addr = (uint32_t) vortex->out_cache_driver_in_address[curr_th]; ram.getWord(addr, &data_read); if (vortex->out_cache_driver_in_mem_read == LB_MEM_READ) { - in_data_use = (data_read & 0x80) ? (data_read | 0xFFFFFF00) : (data_read & 0xFF); + vortex->in_cache_driver_out_data[curr_th] = (data_read & 0x80) ? (data_read | 0xFFFFFF00) : (data_read & 0xFF); } else if (vortex->out_cache_driver_in_mem_read == LH_MEM_READ) { - in_data_use = (data_read & 0x8000) ? (data_read | 0xFFFF0000) : (data_read & 0xFFFF); + vortex->in_cache_driver_out_data[curr_th] = (data_read & 0x8000) ? (data_read | 0xFFFF0000) : (data_read & 0xFFFF); } else if (vortex->out_cache_driver_in_mem_read == LW_MEM_READ) { // printf("Reading mem - Addr: %x = %x\n", addr, data_read); - // std::cout << "Reading mem - Addr: " << std::hex << addr << " = " << data_read << "\n"; + std::cout << "READING - Addr: " << std::hex << addr << " = " << data_read << "\n"; std::cout << std::dec; - in_data_use = data_read; + vortex->in_cache_driver_out_data[curr_th] = data_read; } else if (vortex->out_cache_driver_in_mem_read == LBU_MEM_READ) { - in_data_use = (data_read & 0xFF); + vortex->in_cache_driver_out_data[curr_th] = (data_read & 0xFF); } else if (vortex->out_cache_driver_in_mem_read == LHU_MEM_READ) { - in_data_use = (data_read & 0xFFFF); + vortex->in_cache_driver_out_data[curr_th] = (data_read & 0xFFFF); } else { - in_data_use = 0xbabebabe; + vortex->in_cache_driver_out_data[curr_th] = 0xbabebabe; } } else { - in_data_use = 0xbabebabe; + vortex->in_cache_driver_out_data[curr_th] = 0xbabebabe; } } @@ -321,13 +319,16 @@ bool Vortex::simulate(std::string file_to_simulate) // cycle++; // } + bool istop; + bool dstop; + // for (int i = 0; i < 500; i++) while (this->stop && (!(stop && (counter > 5)))) { // std::cout << "************* Cycle: " << cycle << "\n"; - bool istop = ibus_driver(); - bool dstop = !dbus_driver(); + istop = ibus_driver(); + dstop = !dbus_driver(); vortex->clk = 1; vortex->eval();