checkpoint: Added icache struct

This commit is contained in:
felsabbagh3
2019-09-03 16:19:06 -04:00
parent cde45648ea
commit 2d0e41db63
31 changed files with 544 additions and 101 deletions

Binary file not shown.

View File

@@ -262,7 +262,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:45
// INITIAL at VX_fetch.v:47
vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num = 0U;
vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_state = 0U;
vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_count = 1U;
@@ -4738,7 +4738,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) {
vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__genblk1__BRA__7__KET____DOT__VX_Context_one__in_write_data[0U]
= vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_write_data
[0U];
// ALWAYS at VX_fetch.v:170
// ALWAYS at VX_fetch.v:172
if ((0U == (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num))) {
vlTOPp->Vortex__DOT__vx_fetch__DOT__out_PC_var
= vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_glob_pc
@@ -4871,7 +4871,7 @@ void VVortex::_settle__TOP__2(VVortex__Syms* __restrict vlSymsp) {
vlSymsp->TOP__Vortex__DOT__vx_decode__DOT__genblk1__BRA__7__KET____DOT__VX_Context_one.in_write_data[0U]
= vlTOPp->Vortex__DOT__vx_decode__DOT____Vcellinp__genblk1__BRA__7__KET____DOT__VX_Context_one__in_write_data
[0U];
vlTOPp->curr_PC = vlTOPp->Vortex__DOT__vx_fetch__DOT__out_PC_var;
vlTOPp->icache_request_pc_address = vlTOPp->Vortex__DOT__vx_fetch__DOT__out_PC_var;
vlTOPp->Vortex__DOT__execute_alu_result[3U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result
[3U];
vlTOPp->Vortex__DOT__execute_alu_result[2U] = vlTOPp->Vortex__DOT____Vcellout__vx_execute__out_alu_result
@@ -6904,7 +6904,7 @@ VL_INLINE_OPT void VVortex::_settle__TOP__3(VVortex__Syms* __restrict vlSymsp) {
vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_glob_valid[7U][0U]
= vlTOPp->Vortex__DOT__vx_fetch__DOT____Vcellout__genblk1__BRA__7__KET____DOT__VX_Warp__out_valid
[0U];
// ALWAYS at VX_fetch.v:170
// ALWAYS at VX_fetch.v:172
if ((0U == (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num))) {
vlTOPp->Vortex__DOT__vx_fetch__DOT__out_valid_var[0U]
= vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_glob_valid
@@ -11854,7 +11854,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
? vlTOPp->Vortex__DOT__vx_fetch__DOT__genblk1__BRA__0__KET____DOT__VX_Warp__DOT__temp_PC
: ((IData)(4U)
+ vlTOPp->Vortex__DOT__vx_fetch__DOT__genblk1__BRA__0__KET____DOT__VX_Warp__DOT__temp_PC)));
// ALWAYS at VX_f_d_reg.v:36
// ALWAYS at VX_f_d_reg.v:50
if (vlTOPp->reset) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__curr_PC = 0U;
} else {
@@ -11948,7 +11948,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
:
((IData)(4U)
+ vlTOPp->Vortex__DOT__vx_fetch__DOT__genblk1__BRA__1__KET____DOT__VX_Warp__DOT__temp_PC))));
// ALWAYS at VX_fetch.v:63
// ALWAYS at VX_fetch.v:65
__Vdly__Vortex__DOT__vx_fetch__DOT__warp_num =
(0xfU & (((((IData)(vlTOPp->reset) | ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num)
>= (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_state)))
@@ -11973,7 +11973,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
}
}
}
// ALWAYS at VX_f_d_reg.v:36
// ALWAYS at VX_f_d_reg.v:50
if (vlTOPp->reset) {
__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0 = 1U;
} else {
@@ -11994,7 +11994,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
[0U];
}
}
// ALWAYS at VX_f_d_reg.v:36
// ALWAYS at VX_f_d_reg.v:50
if (vlTOPp->reset) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__warp_num = 0U;
} else {
@@ -12006,7 +12006,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
}
vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_count
= __Vdly__Vortex__DOT__vx_fetch__DOT__warp_count;
// ALWAYSPOST at VX_f_d_reg.v:42
// ALWAYSPOST at VX_f_d_reg.v:56
if (__Vdlyvset__Vortex__DOT__vx_f_d_reg__DOT__valid__v0) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[0U] = 0U;
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__valid[1U] = 0U;
@@ -12132,7 +12132,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
[1U];
vlTOPp->Vortex__DOT__f_d_valid[0U] = vlTOPp->Vortex__DOT____Vcellout__vx_f_d_reg__out_valid
[0U];
// ALWAYS at VX_fetch.v:170
// ALWAYS at VX_fetch.v:172
if ((0U == (IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_num))) {
vlTOPp->Vortex__DOT__vx_fetch__DOT__out_PC_var
= vlTOPp->Vortex__DOT__vx_fetch__DOT__warp_glob_pc
@@ -12181,7 +12181,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__6(VVortex__Syms* __restrict vlSymsp)
= vlTOPp->Vortex__DOT__f_d_valid[1U];
vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid[0U]
= vlTOPp->Vortex__DOT__f_d_valid[0U];
vlTOPp->curr_PC = vlTOPp->Vortex__DOT__vx_fetch__DOT__out_PC_var;
vlTOPp->icache_request_pc_address = vlTOPp->Vortex__DOT__vx_fetch__DOT__out_PC_var;
vlTOPp->Vortex__DOT____Vcellout__vx_decode__out_valid[3U]
= vlTOPp->Vortex__DOT____Vcellinp__vx_decode__in_valid
[3U];
@@ -12328,7 +12328,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__9(VVortex__Syms* __restrict vlSymsp)
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex::_sequent__TOP__9\n"); );
VVortex* __restrict vlTOPp VL_ATTR_UNUSED = vlSymsp->TOPp;
// Body
// ALWAYS at VX_f_d_reg.v:36
// ALWAYS at VX_f_d_reg.v:50
if (vlTOPp->reset) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction = 0U;
} else {
@@ -12336,7 +12336,7 @@ VL_INLINE_OPT void VVortex::_sequent__TOP__9(VVortex__Syms* __restrict vlSymsp)
| (IData)(vlTOPp->Vortex__DOT__vx_decode__DOT__temp_out_clone_stall))))) {
vlTOPp->Vortex__DOT__vx_f_d_reg__DOT__instruction
= ((IData)(vlTOPp->Vortex__DOT__vx_fetch__DOT__stall)
? 0U : vlTOPp->fe_instruction);
? 0U : vlTOPp->icache_response_instruction);
}
}
vlTOPp->Vortex__DOT__vx_decode__DOT__is_itype =
@@ -13971,11 +13971,11 @@ void VVortex::_ctor_var_reset() {
// Body
clk = VL_RAND_RESET_I(1);
reset = VL_RAND_RESET_I(1);
fe_instruction = VL_RAND_RESET_I(32);
icache_response_instruction = VL_RAND_RESET_I(32);
icache_request_pc_address = VL_RAND_RESET_I(32);
{ int __Vi0=0; for (; __Vi0<4; ++__Vi0) {
in_cache_driver_out_data[__Vi0] = VL_RAND_RESET_I(32);
}}
curr_PC = VL_RAND_RESET_I(32);
{ int __Vi0=0; for (; __Vi0<4; ++__Vi0) {
out_cache_driver_in_address[__Vi0] = VL_RAND_RESET_I(32);
}}

View File

@@ -37,8 +37,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_OUT8(out_ebreak,0,0);
VL_IN(fe_instruction,31,0);
VL_OUT(curr_PC,31,0);
VL_IN(icache_response_instruction,31,0);
VL_OUT(icache_request_pc_address,31,0);
VL_IN(in_cache_driver_out_data[4],31,0);
VL_OUT(out_cache_driver_in_address[4],31,0);
VL_OUT8(out_cache_driver_in_valid[4],0,0);

View File

@@ -33,6 +33,7 @@ VM_PREFIX = VVortex
VM_MODPREFIX = VVortex
# User CFLAGS (from -CFLAGS on Verilator command line)
VM_USER_CFLAGS = \
-std=c++11 \
# User LDLIBS (from -LDFLAGS on Verilator command line)
VM_USER_LDLIBS = \

Binary file not shown.

View File

@@ -1,4 +1,5 @@
// DESCRIPTION: Generated by verilator_includer via makefile
#define VL_INCLUDE_OPT include
#include "VVortex.cpp"
#include "VVortex___024unit.cpp"
#include "VVortex_VX_context_slave.cpp"

View File

@@ -1,5 +1,5 @@
VVortex__ALLcls.o: VVortex__ALLcls.cpp VVortex.cpp VVortex.h \
/usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.h \
/usr/local/Cellar/verilator/4.010/share/verilator/include/verilatedos.h \
VVortex__Syms.h VVortex_VX_context_slave.h \
VVortex_VX_context_slave.cpp
VVortex__Syms.h VVortex___024unit.h VVortex_VX_context_slave.h \
VVortex___024unit.cpp VVortex_VX_context_slave.cpp

Binary file not shown.

View File

@@ -1,4 +1,4 @@
VVortex__ALLsup.o: VVortex__ALLsup.cpp VVortex__Syms.cpp VVortex__Syms.h \
/usr/local/Cellar/verilator/4.010/share/verilator/include/verilated.h \
/usr/local/Cellar/verilator/4.010/share/verilator/include/verilatedos.h \
VVortex.h VVortex_VX_context_slave.h
VVortex.h VVortex___024unit.h VVortex_VX_context_slave.h

Binary file not shown.

View File

@@ -3,6 +3,7 @@
#include "VVortex__Syms.h"
#include "VVortex.h"
#include "VVortex___024unit.h"
#include "VVortex_VX_context_slave.h"
// FUNCTIONS

View File

@@ -10,6 +10,7 @@
// INCLUDE MODULE CLASSES
#include "VVortex.h"
#include "VVortex___024unit.h"
#include "VVortex_VX_context_slave.h"
// SYMS CLASS

View File

@@ -0,0 +1,34 @@
// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Design implementation internals
// See VVortex.h for the primary calling header
#include "VVortex___024unit.h"
#include "VVortex__Syms.h"
//--------------------
// STATIC VARIABLES
//--------------------
VL_CTOR_IMP(VVortex___024unit) {
// Reset internal values
// Reset structure values
_ctor_var_reset();
}
void VVortex___024unit::__Vconfigure(VVortex__Syms* vlSymsp, bool first) {
if (0 && first) {} // Prevent unused
this->__VlSymsp = vlSymsp;
}
VVortex___024unit::~VVortex___024unit() {
}
//--------------------
// Internal Methods
void VVortex___024unit::_ctor_var_reset() {
VL_DEBUG_IF(VL_DBG_MSGF("+ VVortex___024unit::_ctor_var_reset\n"); );
}

View File

@@ -0,0 +1,45 @@
// Verilated -*- C++ -*-
// DESCRIPTION: Verilator output: Design internal header
// See VVortex.h for the primary calling header
#ifndef _VVortex___024unit_H_
#define _VVortex___024unit_H_
#include "verilated.h"
class VVortex__Syms;
//----------
VL_MODULE(VVortex___024unit) {
public:
// PORTS
// LOCAL SIGNALS
// LOCAL VARIABLES
// INTERNAL VARIABLES
private:
VVortex__Syms* __VlSymsp; // Symbol table
public:
// PARAMETERS
// CONSTRUCTORS
private:
VL_UNCOPYABLE(VVortex___024unit); ///< Copying not allowed
public:
VVortex___024unit(const char* name="TOP");
~VVortex___024unit();
// API METHODS
// INTERNAL METHODS
void __Vconfigure(VVortex__Syms* symsp, bool first);
private:
void _ctor_var_reset();
} VL_ATTR_ALIGNED(128);
#endif // guard

View File

@@ -1 +1 @@
obj_dir/VVortex.cpp obj_dir/VVortex.h obj_dir/VVortex.mk obj_dir/VVortex_VX_context_slave.cpp obj_dir/VVortex_VX_context_slave.h obj_dir/VVortex__Syms.cpp obj_dir/VVortex__Syms.h obj_dir/VVortex__ver.d obj_dir/VVortex_classes.mk : /usr/local/Cellar/verilator/4.010/bin/verilator_bin /usr/local/Cellar/verilator/4.010/bin/verilator_bin VX_alu.v VX_context.v VX_context_slave.v VX_csr_handler.v VX_d_e_reg.v VX_decode.v VX_define.v VX_e_m_reg.v VX_execute.v VX_f_d_reg.v VX_fetch.v VX_forwarding.v VX_m_w_reg.v VX_memory.v VX_register_file.v VX_register_file_master_slave.v VX_register_file_slave.v VX_warp.v VX_writeback.v Vortex.v
obj_dir/VVortex.cpp obj_dir/VVortex.h obj_dir/VVortex.mk obj_dir/VVortex_VX_context_slave.cpp obj_dir/VVortex_VX_context_slave.h obj_dir/VVortex__Syms.cpp obj_dir/VVortex__Syms.h obj_dir/VVortex___024unit.cpp obj_dir/VVortex___024unit.h obj_dir/VVortex__ver.d obj_dir/VVortex_classes.mk : /usr/local/Cellar/verilator/4.010/bin/verilator_bin /usr/local/Cellar/verilator/4.010/bin/verilator_bin VX_alu.v VX_context.v VX_context_slave.v VX_csr_handler.v VX_d_e_reg.v VX_decode.v VX_define.v VX_e_m_reg.v VX_execute.v VX_f_d_reg.v VX_fetch.v VX_forwarding.v VX_m_w_reg.v VX_memory.v VX_register_file.v VX_register_file_master_slave.v VX_register_file_slave.v VX_warp.v VX_writeback.v Vortex.v buses.vh

View File

@@ -1,33 +1,36 @@
# DESCRIPTION: Verilator output: Timestamp data for --skip-identical. Delete at will.
C "-Wall -cc Vortex.v --exe test_bench.cpp"
C "-Wall -cc Vortex.v --exe test_bench.cpp -CFLAGS -std=c++11"
S 4608404 12889046060 1553037052 0 1548678579 0 "/usr/local/Cellar/verilator/4.010/bin/verilator_bin"
S 2785 12891069980 1560309956 0 1560309956 0 "VX_alu.v"
S 3553 12891069981 1560309956 0 1560309956 0 "VX_context.v"
S 4995 12891069982 1560309956 0 1560309956 0 "VX_context_slave.v"
S 1699 12891069983 1560311423 0 1560311423 0 "VX_csr_handler.v"
S 5512 12891069984 1560309956 0 1560309956 0 "VX_d_e_reg.v"
S 17808 12891069985 1560309956 0 1560309956 0 "VX_decode.v"
S 1676 12891069987 1560310232 0 1560310232 0 "VX_define.v"
S 4267 12891069988 1560309956 0 1560309956 0 "VX_e_m_reg.v"
S 3692 12891069989 1560309956 0 1560309956 0 "VX_execute.v"
S 1751 12891069990 1560309956 0 1560309956 0 "VX_f_d_reg.v"
S 6204 12891069991 1560310568 0 1560310568 0 "VX_fetch.v"
S 6293 12891069992 1560309956 0 1560309956 0 "VX_forwarding.v"
S 1866 12891069993 1560309956 0 1560309956 0 "VX_m_w_reg.v"
S 4352 12891069994 1560310451 0 1560310451 0 "VX_memory.v"
S 1249 12891069995 1560309956 0 1560309956 0 "VX_register_file.v"
S 1655 12891069996 1560309956 0 1560309956 0 "VX_register_file_master_slave.v"
S 1599 12891069997 1560309956 0 1560309956 0 "VX_register_file_slave.v"
S 1915 12891069999 1560309956 0 1560309956 0 "VX_warp.v"
S 1568 12891070000 1560309956 0 1560309956 0 "VX_writeback.v"
S 18828 12891070001 1560309956 0 1560309956 0 "Vortex.v"
T 937577 12891114882 1560311425 0 1560311425 0 "obj_dir/VVortex.cpp"
T 33907 12891114881 1560311425 0 1560311425 0 "obj_dir/VVortex.h"
T 1800 12891114886 1560311425 0 1560311425 0 "obj_dir/VVortex.mk"
T 597541 12891114884 1560311425 0 1560311425 0 "obj_dir/VVortex_VX_context_slave.cpp"
T 19362 12891114883 1560311425 0 1560311425 0 "obj_dir/VVortex_VX_context_slave.h"
T 3668 12891114880 1560311425 0 1560311425 0 "obj_dir/VVortex__Syms.cpp"
T 1547 12891114879 1560311425 0 1560311425 0 "obj_dir/VVortex__Syms.h"
T 635 12891114889 1560311425 0 1560311425 0 "obj_dir/VVortex__ver.d"
T 0 0 1560311425 0 1560311425 0 "obj_dir/VVortex__verFiles.dat"
T 1187 12891114885 1560311425 0 1560311425 0 "obj_dir/VVortex_classes.mk"
S 2785 1565236 1567474434 0 1567474434 0 "VX_alu.v"
S 3553 1565237 1567474434 0 1567474434 0 "VX_context.v"
S 4995 1565238 1567474434 0 1567474434 0 "VX_context_slave.v"
S 1699 1565239 1567474434 0 1567474434 0 "VX_csr_handler.v"
S 5512 1565240 1567474434 0 1567474434 0 "VX_d_e_reg.v"
S 17808 1565241 1567474434 0 1567474434 0 "VX_decode.v"
S 1676 1565244 1567474434 0 1567474434 0 "VX_define.v"
S 4267 1565245 1567474434 0 1567474434 0 "VX_e_m_reg.v"
S 3692 1565246 1567474434 0 1567474434 0 "VX_execute.v"
S 2537 1567951 1567541896 0 1567541896 0 "VX_f_d_reg.v"
S 6742 1567193 1567540852 0 1567540852 0 "VX_fetch.v"
S 6293 1565249 1567474434 0 1567474434 0 "VX_forwarding.v"
S 1866 1565250 1567474434 0 1567474434 0 "VX_m_w_reg.v"
S 4352 1565251 1567474434 0 1567474434 0 "VX_memory.v"
S 1249 1565252 1567474434 0 1567474434 0 "VX_register_file.v"
S 1655 1565253 1567474434 0 1567474434 0 "VX_register_file_master_slave.v"
S 1599 1565254 1567474434 0 1567474434 0 "VX_register_file_slave.v"
S 1915 1565256 1567474434 0 1567474434 0 "VX_warp.v"
S 1568 1565257 1567474434 0 1567474434 0 "VX_writeback.v"
S 19239 1565260 1567539986 0 1567539986 0 "Vortex.v"
S 1335 1565265 1567540424 0 1567540424 0 "buses.vh"
T 937657 1568790 1567541908 0 1567541908 0 "obj_dir/VVortex.cpp"
T 33938 1568786 1567541908 0 1567541908 0 "obj_dir/VVortex.h"
T 1814 1568896 1567541908 0 1567541908 0 "obj_dir/VVortex.mk"
T 597541 1568856 1567541908 0 1567541908 0 "obj_dir/VVortex_VX_context_slave.cpp"
T 19362 1568854 1567541908 0 1567541908 0 "obj_dir/VVortex_VX_context_slave.h"
T 3699 1568785 1567541908 0 1567541908 0 "obj_dir/VVortex__Syms.cpp"
T 1578 1568784 1567541908 0 1567541908 0 "obj_dir/VVortex__Syms.h"
T 754 1568852 1567541908 0 1567541908 0 "obj_dir/VVortex___024unit.cpp"
T 860 1568851 1567541908 0 1567541908 0 "obj_dir/VVortex___024unit.h"
T 702 1569200 1567541908 0 1567541908 0 "obj_dir/VVortex__ver.d"
T 0 0 1567541908 0 1567541908 0 "obj_dir/VVortex__verFiles.dat"
T 1208 1568895 1567541908 0 1567541908 0 "obj_dir/VVortex_classes.mk"

View File

@@ -16,6 +16,7 @@ VM_TRACE = 0
# Generated module classes, fast-path, compile with highest optimization
VM_CLASSES_FAST += \
VVortex \
VVortex___024unit \
VVortex_VX_context_slave \
# Generated module classes, non-fast-path, compile with low/medium optimization

Binary file not shown.

Binary file not shown.