From 96dac5e1ce79aef6e70db9b83b2e2c042b039450 Mon Sep 17 00:00:00 2001 From: felsabbagh3 Date: Wed, 8 May 2019 16:32:49 -0700 Subject: [PATCH] Warp + Context Aware Design - Global Stalling --- rtl/VX_fetch.v | 12 ++- rtl/Vortex.v | 2 + rtl/obj_dir/VVortex | Bin 411004 -> 411004 bytes rtl/obj_dir/VVortex.cpp | 122 +++++++++++++++++------------- rtl/obj_dir/VVortex.h | 2 +- rtl/obj_dir/VVortex__ALL.a | Bin 72744 -> 72904 bytes rtl/obj_dir/VVortex__ALLcls.o | Bin 69608 -> 69768 bytes rtl/obj_dir/VVortex__verFiles.dat | 20 ++--- rtl/results.txt | 2 +- 9 files changed, 94 insertions(+), 66 deletions(-) diff --git a/rtl/VX_fetch.v b/rtl/VX_fetch.v index b314d3ef..090b80f8 100644 --- a/rtl/VX_fetch.v +++ b/rtl/VX_fetch.v @@ -18,6 +18,8 @@ module VX_fetch ( input wire[31:0] in_instruction, input wire in_thread_mask[`NT_M1:0], input wire in_change_mask, + input wire[`NW_M1:0] in_decode_warp_num, + input wire[`NW_M1:0] in_memory_warp_num, output wire[31:0] out_instruction, output wire out_delay, @@ -53,15 +55,19 @@ module VX_fetch ( wire[31:0] warp_pc; wire warp_valid[`NT_M1:0]; + + wire warp_zero_change_mask = in_change_mask && (in_decode_warp_num == 0); + wire warp_zero_jal = in_jal && (in_memory_warp_num == 0); + wire warp_zero_branch = in_branch_dir && (in_memory_warp_num == 0); VX_warp VX_Warp( .clk (clk), .reset (reset), .stall (stall), .in_thread_mask(in_thread_mask), - .in_change_mask(in_change_mask), - .in_jal (in_jal), + .in_change_mask(warp_zero_change_mask), + .in_jal (warp_zero_jal), .in_jal_dest (in_jal_dest), - .in_branch_dir (in_branch_dir), + .in_branch_dir (warp_zero_branch), .in_branch_dest(in_branch_dest), .out_PC (warp_pc), .out_valid (warp_valid) diff --git a/rtl/Vortex.v b/rtl/Vortex.v index 4397c718..b7ddee77 100644 --- a/rtl/Vortex.v +++ b/rtl/Vortex.v @@ -212,6 +212,8 @@ VX_fetch vx_fetch( .in_instruction (fe_instruction), .in_thread_mask (decode_thread_mask), .in_change_mask (decode_change_mask), + .in_decode_warp_num (decode_warp_num), + .in_memory_warp_num (memory_warp_num), .out_instruction (fetch_instruction), .out_delay (fetch_delay), diff --git a/rtl/obj_dir/VVortex b/rtl/obj_dir/VVortex index 2f091fee716f60cc1a2d30b0027a9c08e61b9e97..fb1f5621a128ad78bfa1828db23c8e44893fb36a 100755 GIT binary patch delta 44594 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
DM-rXANm{yNENr>FzKtWt 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 MThV8H!{J;12TX{$;{X5v delta 44596 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 diff --git a/rtl/obj_dir/VVortex.cpp b/rtl/obj_dir/VVortex.cpp index 76ae0b84..8d6a0f68 100644 --- a/rtl/obj_dir/VVortex.cpp +++ b/rtl/obj_dir/VVortex.cpp @@ -161,7 +161,7 @@ void VVortex::_initial__TOP__1(VVortex__Syms* __restrict vlSymsp) { vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__jal_offset = 0U; vlTOPp->Vortex__DOT__vx_d_e_reg__DOT__warp_num = 0U; - // INITIAL at VX_fetch.v:35 + // INITIAL at VX_fetch.v:37 vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num = 0U; vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_state = 0U; } @@ -859,8 +859,10 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { } else { vlTOPp->Vortex__DOT__decode_branch_type = 0U; } - vlTOPp->Vortex__DOT__decode_change_mask = ((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jalrs) - | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jmprt)); + vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask + = (((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jalrs) + | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jmprt)) + & (0U == (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))); 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 @@ -1327,26 +1329,34 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { [0U]; // ALWAYS at VX_warp.v:49 vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC - = ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal) + = (((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal) + & (0U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))) ? vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest - : ((1U & ((4U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((~ (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - & (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU))) - : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU) : - (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU)))) - : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU) : - (0U != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U])) : ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type) - & (0U == vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U]))))) + : ((((4U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((~ (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + & (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU))) : ( + (1U + & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? + (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] + >> 0x1fU) + : + (~ + (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] + >> 0x1fU)))) + : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU) : (0U != + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U])) + : ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type) + & (0U == vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U])))) & (0U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))) ? (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset << 1U)) : vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC)); @@ -1984,7 +1994,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT____Vcellinp__vx_fetch__in_thread_mask [0U]; // ALWAYS at VX_warp.v:35 - if (vlTOPp->Vortex__DOT__decode_change_mask) { + if (vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask) { vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid[1U] = vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellinp__VX_Warp__in_thread_mask [1U]; @@ -1993,13 +2003,13 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) { [0U]; } vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellout__VX_Warp__out_valid[0U] - = ((IData)(vlTOPp->Vortex__DOT__decode_change_mask) + = ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask) ? vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellinp__VX_Warp__in_thread_mask [0U] : ((~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)) & vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid [0U])); vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellout__VX_Warp__out_valid[1U] - = ((IData)(vlTOPp->Vortex__DOT__decode_change_mask) + = ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask) ? vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellinp__VX_Warp__in_thread_mask [1U] : ((~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)) & vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid @@ -2040,7 +2050,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__3(VVortex__Syms* __restrict vlSymsp) = vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num; __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0 = 0U; __Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v2 = 0U; - // ALWAYS at VX_fetch.v:40 + // ALWAYS at VX_fetch.v:42 vlTOPp->__Vdly__Vortex__DOT__vx_fetch__DOT__warp_num = (3U & (((IData)(vlTOPp->reset) | ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num) == (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_state))) @@ -3718,26 +3728,34 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) } // ALWAYS at VX_warp.v:49 vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__temp_PC - = ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal) + = (((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal) + & (0U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))) ? vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__jal_dest - : ((1U & ((4U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((~ (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - & (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU))) - : ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU) : - (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU)))) - : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) - ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U] >> 0x1fU) : - (0U != vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U])) : ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type) - & (0U == vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result - [0U]))))) + : ((((4U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((~ (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + & (~ (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU))) : ( + (1U + & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? + (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] + >> 0x1fU) + : + (~ + (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] + >> 0x1fU)))) + : ((2U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? ((1U & (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type)) + ? (vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U] >> 0x1fU) : (0U != + vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U])) + : ((IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_type) + & (0U == vlTOPp->Vortex__DOT____Vcellinp__vx_memory__in_alu_result + [0U])))) & (0U == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__warp_num))) ? (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__curr_PC + (vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__branch_offset << 1U)) : vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__real_PC)); @@ -4223,8 +4241,10 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__7(VVortex__Syms* __restrict vlSymsp) } else { vlTOPp->Vortex__DOT__decode_branch_stall = 0U; } - vlTOPp->Vortex__DOT__decode_change_mask = ((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jalrs) - | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jmprt)); + vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask + = (((IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jalrs) + | (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__is_jmprt)) + & (0U == (IData)(vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num))); vlTOPp->Vortex__DOT__vx_forwarding__DOT__src2_mem_fwd = ((((((0x1fU & (vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction >> 0x14U)) == (IData)(vlTOPp->Vortex__DOT__vx_e_m_reg__DOT__rd)) @@ -4594,7 +4614,7 @@ VL_INLINE_OPT void VVortex::_combo__TOP__8(VVortex__Syms* __restrict vlSymsp) { = vlTOPp->Vortex__DOT____Vcellinp__vx_fetch__in_thread_mask [0U]; // ALWAYS at VX_warp.v:35 - if (vlTOPp->Vortex__DOT__decode_change_mask) { + if (vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask) { vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid[1U] = vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellinp__VX_Warp__in_thread_mask [1U]; @@ -4603,13 +4623,13 @@ VL_INLINE_OPT void VVortex::_combo__TOP__8(VVortex__Syms* __restrict vlSymsp) { [0U]; } vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellout__VX_Warp__out_valid[0U] - = ((IData)(vlTOPp->Vortex__DOT__decode_change_mask) + = ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask) ? vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellinp__VX_Warp__in_thread_mask [0U] : ((~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)) & vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid [0U])); vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellout__VX_Warp__out_valid[1U] - = ((IData)(vlTOPp->Vortex__DOT__decode_change_mask) + = ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask) ? vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellinp__VX_Warp__in_thread_mask [1U] : ((~ (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)) & vlTOPp->Vortex__DOT__vx_fetch__DOT__VX_Warp__DOT__valid @@ -4747,7 +4767,6 @@ void VVortex::_ctor_var_reset() { Vortex__DOT__decode_valid[__Vi0] = VL_RAND_RESET_I(1); }} Vortex__DOT__decode_clone_stall = VL_RAND_RESET_I(1); - Vortex__DOT__decode_change_mask = VL_RAND_RESET_I(1); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__decode_thread_mask[__Vi0] = VL_RAND_RESET_I(1); }} @@ -4987,6 +5006,7 @@ void VVortex::_ctor_var_reset() { { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_fetch__DOT__warp_valid[__Vi0] = VL_RAND_RESET_I(1); }} + Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask = VL_RAND_RESET_I(1); { int __Vi0=0; for (; __Vi0<2; ++__Vi0) { Vortex__DOT__vx_fetch__DOT____Vcellout__VX_Warp__out_valid[__Vi0] = VL_RAND_RESET_I(1); }} diff --git a/rtl/obj_dir/VVortex.h b/rtl/obj_dir/VVortex.h index c320c44c..e6668355 100644 --- a/rtl/obj_dir/VVortex.h +++ b/rtl/obj_dir/VVortex.h @@ -41,7 +41,6 @@ VL_MODULE(VVortex) { VL_SIG8(Vortex__DOT__decode_branch_type,2,0); VL_SIG8(Vortex__DOT__decode_jal,0,0); VL_SIG8(Vortex__DOT__decode_clone_stall,0,0); - VL_SIG8(Vortex__DOT__decode_change_mask,0,0); VL_SIG8(Vortex__DOT__execute_branch_stall,0,0); VL_SIG8(Vortex__DOT__forwarding_fwd_stall,0,0); VL_SIG8(Vortex__DOT__forwarding_src1_fwd,0,0); @@ -49,6 +48,7 @@ VL_MODULE(VVortex) { VL_SIG8(Vortex__DOT__vx_fetch__DOT__stall,0,0); VL_SIG8(Vortex__DOT__vx_fetch__DOT__warp_num,1,0); VL_SIG8(Vortex__DOT__vx_fetch__DOT__warp_state,1,0); + VL_SIG8(Vortex__DOT__vx_fetch__DOT__warp_zero_change_mask,0,0); VL_SIG8(Vortex__DOT__vx_f_d_reg__DOT__warp_num,1,0); VL_SIG8(Vortex__DOT__vx_decode__DOT__is_itype,0,0); VL_SIG8(Vortex__DOT__vx_decode__DOT__is_csr,0,0); diff --git a/rtl/obj_dir/VVortex__ALL.a b/rtl/obj_dir/VVortex__ALL.a index 21307b59ce5fe14cdb9e16a7d26567a3047066e8..8712c3475c9284e57682ce814873300b4539be92 100644 GIT binary patch delta 3049 zcmaKue^6A{702&gc9(tV{xU4PU}YCDz(^NYe(r+NHAO`u7W{=toldApHKC!VO^kNp zfP!X$QPk6!RmY4tNoF+0DeOytO(6l3Dxhh!nv9yHLYh(21Vvipmp^*m-m}vF)Az^y z-0wN(-goc0Ki)gmrtS`^_r|N;nOT|5i80*zYz$|^5sWGP8_}g^kf4e7SDLs^F6U|L zcz0%|+u_J|WjGv;3>OxTIWAXDR+ht&0VMJoBX=C(UZC z4#HM#t|e?;CYZN^mavTi!`X&q83b)^HYwSptkWp)gRz!HkT31yM<;}LZfH!jKy9KGS`wGRD~T3E{+XSJA3S`h^jqC=7)nxN<2LtU z1wj*-zO}&Nem&2ZgR2cwa6HEA2j#M|{hFvbJ%#nF2Wxk9&V&jE|5sxPoAT>YQe7bdO$6}yqF#+E17fcZ-snEV>pvBAPWkPmEF%j3lBjV-?` z_1y6q|9Hk*b%T42EuSZJ%m3Q=4mal%))x<NY#smSn;47oXs{aO1^=wruHq*ead( z`c5mt>wDP^9f5Qx4LIce6gZe3(6ygJphQ zGOo(6>Skkof2ba;yCB!s&yV09IJ+l7@+es~w!D@H!+Vm^_LGJ@Y*5;;l4r{&8ZO3R zqATB>YsbvC_mp61=(S^1dT&-Dj(j1uEY6fJRNr}6-OsDXn6V~9S+|g*&5ZY}r7&zw6MJ-O(xr1Tf^OZ`XH zp@k1BNqrTEv;r)a^T^)O~B*FyqEdZEoTAPZ@_zSr&Qq4M!wq zbMq}Frz5wNoG!VIIh7l3ADPVOuZNU;?jBO|*`d_s?}pw}@k_98_=t)P$QgH+bAA@K zk60ydHO>tm11uP|=}4@A{^3U=75Lppq9PPlBidBJ(P699N$Lw&Fk;i~6s}*wQ53tv zqH9ttgt8GUZ-U^cT{7YMQl87ukFOvR1zmToiL6Vw3gScLLQR&%*C1~!Uh4com>v)H zKw>)dkJ))@Xmnn>u;ztS6)6lKw!zrgVpXReo*ZAK+G2pZ@nqE|0|XGq+;DX~S!!}W z3_UYp-#A`e6FOC!8)i+UV{W%kBx#~?P%f;c;H!>f$>737imELS#wU`c&V12Uhi#{8 zzsAsG`LOgJc1n&VA;(YgdcB+vhwde-`tsov`hD|6!?SSbo}IhEd_RTTz=LHmlwr9R zn(rrR3h-iV#9E5#<{r3uKbbcIe~`j2W0|D+4xJ__LG6aESZ;!&Sf)bHgOn&!ujsxY zULJpt&MOaKM)Zt1XCbE`IWip?yvdk^tR-%_fLA)|(a!~soD=-;tl-V|bBQI)_>r)1c$44@BT!-xq-_AOfFn4h1@2Z4z;D z?=hxU267^F{X4%T29Sz`BfrAM&hDZ!~{IQ7ZWJoBqnhFw_*Z)6=DKCzY%fmF5L?C-!%;@jWiJ7(&4iT7>7 zE)!oM+KFFSg}?euqiB{rg7U8cJtaRp*VIW#K-XfL~^~6se6aKA4C-EP6 z0W0%4NGu{o5QApne~Fkxykb)9xU#!L73TaIam*+hoFuL%#u7g>2!A!vLma>Zq739M z;?qPuu?x44;(v{prf?k^`lkqopIAhUAhzOuO2fEvqMdjVPo84mOI%5`5x?i)`u|8fLCJpRXerMj(#51#QhXojd8CVL zM7*AK_)|0@+OJ@ZJ4HYW1+ZO0H`5DDKMH+~bogsgPVwRI#SYR<{wq_toe%oQrtY5sU!69> zj9Ce&%MSeNH6VpkcVQB|$Oi-HRMq{BR(z>KTqBiCX5_yt(z7+9D=i4Aj!6^fzw zo<=TZuC{%FPo7<_NM+yXa4L^0`(k6tyr9s(%8Qk zN5@uMV>`848eg7^dFNuAsnvSq0JXeFUYv_H&&4*(#pZprbFq2fb}I#qXDc=~jWJ_$ zqPm>6sz96f&)8}?Jc&iQ^R9C3_02q@X_zaOweRz|Vs)ab$$&5ly+a;oD6 ztZ%5}uc=u6tG_8Ta|bN&*WmpXzZqR``wKI1?p4^cdYL@b^l+x>CT|+Y8_&9& z@Hc;+MYvoW!`b-n7H944J3mlXe71zkSebD3GGI+@8oYm{h?goiu6&U2?VlaCZu&kv zxEZa)e(lrXREFJ0p<=|M7V{@Kk!Ns1D%Tako{`)nhdeN=$Z8%tb` zA2ZI_mP->n>fxzA);Yx(3IKT zFH|TkOf189ukNqlpX2GW<(>#8SiSP3U^T629eCd|+^Q7*X+@b$zq zQnC@A3R$ICBdkZ@#%Ksx#XUfL6!#AV-6+!1`f?0mSlLLaEe#}@pV`;kcjOnmn=ueDAA?g7mvAS>~KM^xql@$rwv0&edS3rO817U0<_7SORnEMV`O z!dF*^zDgYMm)nI=LaHl`e_a^Qye3w97#V@_I^wew&n6ww+ahsuq`WMZu_fr!`g)?c z$#W`2$SuT$#7~n&+(RrP-ZP2#3F0QAo_Hxqfv zj}o6JMiBe(1yLuolbA*P0=J18KTND324gV(GA2Gy8^~9QDa6llAF1(1ViEBUzHw^& z*Th<4F7Xk*NoxLz?}UuMa68Fu#BAbSe9=_f8R8ydF>w-inVP>yY$mQIE+7s?3g6F( zJBd#VrrLEB_*^55oy6MSnrOaB^347%nS=ux@bqxs7w7dc^cnCxoc;U^;PzIv8(%H; zI!2n2eu4b6pP`kcS+nr#N$(;Z6#dt;>I1@HBSSao9(us8dm{gD(p{wM$UjW_9n!JB zdObJuYTr>kUll+50W;&$j5z)7uY7m)eBIL6gJRSh6nA@t-bcENzIAJ7`}O diff --git a/rtl/obj_dir/VVortex__ALLcls.o b/rtl/obj_dir/VVortex__ALLcls.o index 188da6a1823d8a630f12a450e525bcce0d39be65..3b8332b2a995bd6c07fee833a2a53f2a571f6c96 100644 GIT binary patch delta 3223 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 U?#$`k_^pR diff --git a/rtl/obj_dir/VVortex__verFiles.dat b/rtl/obj_dir/VVortex__verFiles.dat index 43ac704a..8abc1a82 100644 --- a/rtl/obj_dir/VVortex__verFiles.dat +++ b/rtl/obj_dir/VVortex__verFiles.dat @@ -10,7 +10,7 @@ S 1574 12890307906 1557343909 0 1557343909 0 "VX_defi S 4267 12889457992 1557345117 0 1557345117 0 "VX_e_m_reg.v" S 3405 12889457993 1557348460 0 1557348460 0 "VX_execute.v" S 1751 12889457994 1557344924 0 1557344924 0 "VX_f_d_reg.v" -S 2030 12890309989 1557348839 0 1557348839 0 "VX_fetch.v" +S 2362 12890309989 1557358323 0 1557358323 0 "VX_fetch.v" S 6293 12889457996 1557348346 0 1557348346 0 "VX_forwarding.v" S 1866 12889457997 1557348551 0 1557348551 0 "VX_m_w_reg.v" S 3847 12890309990 1557348518 0 1557348518 0 "VX_memory.v" @@ -18,12 +18,12 @@ S 1118 12889457999 1557354753 0 1557354753 0 "VX_regi S 1428 12889458000 1557354772 0 1557354772 0 "VX_register_file_slave.v" S 1499 12890308905 1557267602 0 1557267602 0 "VX_warp.v" S 1568 12890307909 1557348531 0 1557348531 0 "VX_writeback.v" -S 18162 12890307910 1557354587 0 1557354587 0 "Vortex.v" -T 276843 12890339974 1557354791 0 1557354791 0 "obj_dir/VVortex.cpp" -T 16753 12890339973 1557354791 0 1557354791 0 "obj_dir/VVortex.h" -T 1800 12890339976 1557354791 0 1557354791 0 "obj_dir/VVortex.mk" -T 530 12890339972 1557354791 0 1557354791 0 "obj_dir/VVortex__Syms.cpp" -T 711 12890339971 1557354791 0 1557354791 0 "obj_dir/VVortex__Syms.h" -T 512 12890339977 1557354791 0 1557354791 0 "obj_dir/VVortex__ver.d" -T 0 0 1557354791 0 1557354791 0 "obj_dir/VVortex__verFiles.dat" -T 1159 12890339975 1557354791 0 1557354791 0 "obj_dir/VVortex_classes.mk" +S 18244 12890307910 1557357447 0 1557357447 0 "Vortex.v" +T 277561 12890339974 1557358338 0 1557358338 0 "obj_dir/VVortex.cpp" +T 16771 12890339973 1557358338 0 1557358338 0 "obj_dir/VVortex.h" +T 1800 12890339976 1557358338 0 1557358338 0 "obj_dir/VVortex.mk" +T 530 12890339972 1557358338 0 1557358338 0 "obj_dir/VVortex__Syms.cpp" +T 711 12890339971 1557358338 0 1557358338 0 "obj_dir/VVortex__Syms.h" +T 512 12890339977 1557358338 0 1557358338 0 "obj_dir/VVortex__ver.d" +T 0 0 1557358338 0 1557358338 0 "obj_dir/VVortex__verFiles.dat" +T 1159 12890339975 1557358338 0 1557358338 0 "obj_dir/VVortex_classes.mk" diff --git a/rtl/results.txt b/rtl/results.txt index 56fe2d32..dc381a3e 100644 --- a/rtl/results.txt +++ b/rtl/results.txt @@ -3,5 +3,5 @@ # of forwarding stalls: 0 # of branch stalls: 0 # CPI: 1.0001 -# time to simulate: 6.95313e-310 milliseconds +# time to simulate: 6.95312e-310 milliseconds # GRADE: Failed on test: 0