Icache interface

This commit is contained in:
felsabbagh3
2019-09-08 17:36:09 -04:00
parent 5e6804703f
commit c310e7381f
20 changed files with 43 additions and 206 deletions

BIN
rtl/.DS_Store vendored

Binary file not shown.

Binary file not shown.

View File

@@ -16,9 +16,9 @@ module VX_fetch (
input wire in_interrupt,
input wire in_debug,
input wire[`NW_M1:0] in_memory_warp_num,
input icache_response_t icache_response,
VX_icache_response_inter icache_response,
output icache_request_t icache_request,
VX_icache_request_inter icache_request,
output wire out_delay,
output wire out_ebreak,
output wire[`NW_M1:0] out_which_wspawn,

View File

@@ -1,6 +1,5 @@
`include "VX_define.v"
`include "buses.vh"
module Vortex(
input wire clk,
@@ -16,11 +15,6 @@ module Vortex(
output wire out_ebreak
);
// 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;
wire decode_clone_stall;
wire decode_branch_stall;
wire[11:0] decode_csr_address;
@@ -72,8 +66,7 @@ assign total_freeze = fetch_delay || memory_delay;
assign out_ebreak = fetch_ebreak;
icache_response_t icache_response_fe;
icache_request_t icache_request_fe;
VX_inst_meta_inter fe_inst_meta_fd();
VX_inst_meta_inter fd_inst_meta_de();
@@ -98,6 +91,9 @@ VX_forward_mem_inter VX_fwd_mem();
VX_forward_wb_inter VX_fwd_wb();
VX_forward_response_inter VX_fwd_rsp();
VX_icache_response_inter icache_response_fe;
VX_icache_request_inter icache_request_fe;
assign icache_response_fe.instruction = icache_response_instruction;
assign icache_request_pc_address = icache_request_fe.pc_address;

View File

@@ -1,63 +0,0 @@
`include "VX_define.v"
`ifndef BUSES
`define BUSES
typedef struct packed
{
// logic valid;
logic[31:0] pc_address;
} icache_request_t;
typedef struct packed
{
// logic ready;
// logic stall;
logic[31:0] instruction;
} icache_response_t;
// typedef struct packed
// {
// logic[31:0] instruction;
// logic[31:0] inst_pc;
// logic[`NW_M1:0] warp_num;
// logic[`NT_M1:0] valid;
// } fe_inst_meta_de_t;
`endif
// wire flush = 1'b0;
// wire stall = in_fwd_stall == 1'b1 || in_freeze == 1'b1 || in_clone_stall;
// fe_inst_meta_de_t meta_out;
// VX_generic_register #(.N(72)) f_d_reg
// (
// .clk (clk),
// .reset(reset),
// .stall(stall),
// .flush(flush),
// .in ({fe_inst_meta_de}),
// .out ({meta_out})
// );
// genvar index;
// generate
// for (index = 0; index <= `NT_M1; index = index + 1) assign out_valid[index] = meta_out.valid[index];
// endgenerate
// // assign out_valid[`NT_M1:0] = meta_out.valid[`NT_M1:0];
// assign out_instruction = meta_out.instruction;
// assign out_curr_PC = meta_out.inst_pc;
// assign out_warp_num = meta_out.warp_num;
// always @(*) begin
// $display("Inst: %x, PC: %x, Valid: %x, warpNum: %x", fe_inst_meta_de.instruction, fe_inst_meta_de.inst_pc, fe_inst_meta_de.valid, fe_inst_meta_de.warp_num);
// end

Binary file not shown.

View File

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

View File

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

Binary file not shown.

View File

@@ -1,7 +1,6 @@
// DESCRIPTION: Generated by verilator_includer via makefile
#define VL_INCLUDE_OPT include
#include "VVortex.cpp"
#include "VVortex___024unit.cpp"
#include "VVortex_VX_mem_req_inter.cpp"
#include "VVortex_VX_inst_mem_wb_inter.cpp"
#include "VVortex_VX_inst_meta_inter.cpp"

View File

@@ -1,10 +1,9 @@
VVortex__ALLcls.o: VVortex__ALLcls.cpp VVortex.cpp VVortex.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h VVortex__Syms.h \
VVortex___024unit.h VVortex_VX_mem_req_inter.h \
VVortex_VX_inst_mem_wb_inter.h VVortex_VX_inst_meta_inter.h \
VVortex_VX_frE_to_bckE_req_inter.h VVortex_VX_warp_ctl_inter.h \
VVortex_VX_wb_inter.h VVortex___024unit.cpp VVortex_VX_mem_req_inter.cpp \
VVortex_VX_inst_mem_wb_inter.cpp VVortex_VX_inst_meta_inter.cpp \
VVortex_VX_frE_to_bckE_req_inter.cpp VVortex_VX_warp_ctl_inter.cpp \
VVortex_VX_wb_inter.cpp
VVortex_VX_mem_req_inter.h VVortex_VX_inst_mem_wb_inter.h \
VVortex_VX_inst_meta_inter.h VVortex_VX_frE_to_bckE_req_inter.h \
VVortex_VX_warp_ctl_inter.h VVortex_VX_wb_inter.h \
VVortex_VX_mem_req_inter.cpp VVortex_VX_inst_mem_wb_inter.cpp \
VVortex_VX_inst_meta_inter.cpp VVortex_VX_frE_to_bckE_req_inter.cpp \
VVortex_VX_warp_ctl_inter.cpp VVortex_VX_wb_inter.cpp

Binary file not shown.

View File

@@ -1,7 +1,6 @@
VVortex__ALLsup.o: VVortex__ALLsup.cpp VVortex__Syms.cpp VVortex__Syms.h \
/usr/local/share/verilator/include/verilated.h \
/usr/local/share/verilator/include/verilatedos.h VVortex.h \
VVortex___024unit.h VVortex_VX_mem_req_inter.h \
VVortex_VX_inst_mem_wb_inter.h VVortex_VX_inst_meta_inter.h \
VVortex_VX_frE_to_bckE_req_inter.h VVortex_VX_warp_ctl_inter.h \
VVortex_VX_wb_inter.h
VVortex_VX_mem_req_inter.h VVortex_VX_inst_mem_wb_inter.h \
VVortex_VX_inst_meta_inter.h VVortex_VX_frE_to_bckE_req_inter.h \
VVortex_VX_warp_ctl_inter.h VVortex_VX_wb_inter.h

View File

@@ -3,7 +3,6 @@
#include "VVortex__Syms.h"
#include "VVortex.h"
#include "VVortex___024unit.h"
#include "VVortex_VX_mem_req_inter.h"
#include "VVortex_VX_inst_mem_wb_inter.h"
#include "VVortex_VX_inst_meta_inter.h"

View File

@@ -11,7 +11,6 @@
// INCLUDE MODULE CLASSES
#include "VVortex.h"
#include "VVortex___024unit.h"
#include "VVortex_VX_mem_req_inter.h"
#include "VVortex_VX_inst_mem_wb_inter.h"
#include "VVortex_VX_inst_meta_inter.h"

View File

@@ -1 +1 @@
obj_dir/VVortex.cpp obj_dir/VVortex.h obj_dir/VVortex.mk obj_dir/VVortex_VX_frE_to_bckE_req_inter.cpp obj_dir/VVortex_VX_frE_to_bckE_req_inter.h obj_dir/VVortex_VX_inst_mem_wb_inter.cpp obj_dir/VVortex_VX_inst_mem_wb_inter.h obj_dir/VVortex_VX_inst_meta_inter.cpp obj_dir/VVortex_VX_inst_meta_inter.h obj_dir/VVortex_VX_mem_req_inter.cpp obj_dir/VVortex_VX_mem_req_inter.h obj_dir/VVortex_VX_warp_ctl_inter.cpp obj_dir/VVortex_VX_warp_ctl_inter.h obj_dir/VVortex_VX_wb_inter.cpp obj_dir/VVortex_VX_wb_inter.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/bin/verilator_bin /usr/local/bin/verilator_bin VX_alu.v VX_context.v VX_context_slave.v VX_csr_handler.v VX_decode.v VX_define.v VX_execute.v VX_fetch.v VX_forwarding.v VX_front_end.v VX_generic_register.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 interfaces//VX_forward_exe_inter.v interfaces//VX_forward_mem_inter.sv interfaces//VX_forward_reqeust_inter.v interfaces//VX_forward_response_inter.v interfaces//VX_forward_wb_inter.v interfaces//VX_frE_to_bckE_req_inter.v interfaces//VX_inst_mem_wb_inter.v interfaces//VX_inst_meta_inter.v interfaces//VX_mem_req_inter.v interfaces//VX_mw_wb_inter.v interfaces//VX_warp_ctl_inter.v interfaces//VX_wb_inter.v pipe_regs//VX_d_e_reg.v pipe_regs//VX_e_m_reg.v pipe_regs//VX_f_d_reg.v pipe_regs//VX_m_w_reg.v
obj_dir/VVortex.cpp obj_dir/VVortex.h obj_dir/VVortex.mk obj_dir/VVortex_VX_frE_to_bckE_req_inter.cpp obj_dir/VVortex_VX_frE_to_bckE_req_inter.h obj_dir/VVortex_VX_inst_mem_wb_inter.cpp obj_dir/VVortex_VX_inst_mem_wb_inter.h obj_dir/VVortex_VX_inst_meta_inter.cpp obj_dir/VVortex_VX_inst_meta_inter.h obj_dir/VVortex_VX_mem_req_inter.cpp obj_dir/VVortex_VX_mem_req_inter.h obj_dir/VVortex_VX_warp_ctl_inter.cpp obj_dir/VVortex_VX_warp_ctl_inter.h obj_dir/VVortex_VX_wb_inter.cpp obj_dir/VVortex_VX_wb_inter.h obj_dir/VVortex__Syms.cpp obj_dir/VVortex__Syms.h obj_dir/VVortex__ver.d obj_dir/VVortex_classes.mk : /usr/local/bin/verilator_bin /usr/local/bin/verilator_bin VX_alu.v VX_context.v VX_context_slave.v VX_csr_handler.v VX_decode.v VX_define.v VX_execute.v VX_fetch.v VX_forwarding.v VX_front_end.v VX_generic_register.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 interfaces//VX_forward_exe_inter.v interfaces//VX_forward_mem_inter.sv interfaces//VX_forward_reqeust_inter.v interfaces//VX_forward_response_inter.v interfaces//VX_forward_wb_inter.v interfaces//VX_frE_to_bckE_req_inter.v interfaces//VX_icache_request_inter.v interfaces//VX_icache_response_inter.v interfaces//VX_inst_mem_wb_inter.v interfaces//VX_inst_meta_inter.v interfaces//VX_mem_req_inter.v interfaces//VX_mw_wb_inter.v interfaces//VX_warp_ctl_inter.v interfaces//VX_wb_inter.v pipe_regs//VX_d_e_reg.v pipe_regs//VX_e_m_reg.v pipe_regs//VX_f_d_reg.v pipe_regs//VX_m_w_reg.v

View File

@@ -8,7 +8,7 @@ S 1563 1573428 1567973468 0 1567973468 0 "VX_csr_han
S 17085 1574349 1567973680 0 1567973680 0 "VX_decode.v"
S 1676 1565244 1567474434 0 1567474434 0 "VX_define.v"
S 3835 1573272 1567973378 0 1567973378 0 "VX_execute.v"
S 6600 1578782 1567975942 0 1567975942 0 "VX_fetch.v"
S 6600 1582732 1567978356 0 1567978356 0 "VX_fetch.v"
S 6148 1573159 1567972050 0 1567972050 0 "VX_forwarding.v"
S 2016 1579094 1567976858 0 1567976858 0 "VX_front_end.v"
S 399 1565278 1567537322 0 1567537322 0 "VX_generic_register.v"
@@ -18,43 +18,42 @@ S 1655 1572598 1567702916 0 1567702916 0 "VX_registe
S 1599 1572597 1567702888 0 1567702888 0 "VX_register_file_slave.v"
S 1915 1565256 1567474434 0 1567474434 0 "VX_warp.v"
S 1597 1573170 1567969318 0 1567969318 0 "VX_writeback.v"
S 6668 1579320 1567976886 0 1567976886 0 "Vortex.v"
S 1356 1578785 1567975942 0 1567975942 0 "buses.vh"
S 6476 1582723 1567978530 0 1567978530 0 "Vortex.v"
S 528 1573270 1567972030 0 1567972030 0 "interfaces//VX_forward_exe_inter.v"
S 610 1573271 1567971856 0 1567971856 0 "interfaces//VX_forward_mem_inter.sv"
S 377 1573266 1567971920 0 1567971920 0 "interfaces//VX_forward_reqeust_inter.v"
S 377 1582724 1567978250 0 1567978250 0 "interfaces//VX_forward_reqeust_inter.v"
S 520 1573373 1567970758 0 1567970758 0 "interfaces//VX_forward_response_inter.v"
S 595 1573167 1567968126 0 1567968126 0 "interfaces//VX_forward_wb_inter.v"
S 1689 1571958 1567565366 0 1567565366 0 "interfaces//VX_frE_to_bckE_req_inter.v"
S 279 1578590 1567975102 0 1567975102 0 "interfaces//VX_icache_request_inter.v"
S 315 1578593 1567975152 0 1567975152 0 "interfaces//VX_icache_response_inter.v"
S 679 1573336 1567972210 0 1567972210 0 "interfaces//VX_inst_mem_wb_inter.v"
S 444 1571666 1567552516 0 1567552516 0 "interfaces//VX_inst_meta_inter.v"
S 995 1572568 1567701364 0 1567701364 0 "interfaces//VX_mem_req_inter.v"
S 654 1573355 1567969270 0 1567969270 0 "interfaces//VX_mw_wb_inter.v"
S 603 1571976 1567568452 0 1567568452 0 "interfaces//VX_warp_ctl_inter.v"
S 450 1572588 1567702406 0 1567702406 0 "interfaces//VX_wb_inter.v"
T 1194320 1582198 1567976890 0 1567976890 0 "obj_dir/VVortex.cpp"
T 42410 1582441 1567976890 0 1567976890 0 "obj_dir/VVortex.h"
T 1791 1582210 1567976890 0 1567976890 0 "obj_dir/VVortex.mk"
T 1133 1581329 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_frE_to_bckE_req_inter.cpp"
T 1208 1581324 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_frE_to_bckE_req_inter.h"
T 882 1581381 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_inst_mem_wb_inter.cpp"
T 1008 1581335 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_inst_mem_wb_inter.h"
T 865 1582396 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_inst_meta_inter.cpp"
T 987 1582338 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_inst_meta_inter.h"
T 883 1581333 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_mem_req_inter.cpp"
T 1005 1581331 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_mem_req_inter.h"
T 902 1581492 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_warp_ctl_inter.cpp"
T 1017 1581475 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_warp_ctl_inter.h"
T 821 1582458 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_wb_inter.cpp"
T 954 1582457 1567976890 0 1567976890 0 "obj_dir/VVortex_VX_wb_inter.h"
T 2343 1581095 1567976890 0 1567976890 0 "obj_dir/VVortex__Syms.cpp"
T 1466 1581031 1567976890 0 1567976890 0 "obj_dir/VVortex__Syms.h"
T 754 1581319 1567976890 0 1567976890 0 "obj_dir/VVortex___024unit.cpp"
T 873 1581313 1567976890 0 1567976890 0 "obj_dir/VVortex___024unit.h"
T 1524 1582512 1567976890 0 1567976890 0 "obj_dir/VVortex__ver.d"
T 0 0 1567976890 0 1567976890 0 "obj_dir/VVortex__verFiles.dat"
T 1444 1581964 1567976890 0 1567976890 0 "obj_dir/VVortex_classes.mk"
T 1194320 1582760 1567978534 0 1567978534 0 "obj_dir/VVortex.cpp"
T 42410 1582757 1567978534 0 1567978534 0 "obj_dir/VVortex.h"
T 1791 1591287 1567978534 0 1567978534 0 "obj_dir/VVortex.mk"
T 1133 1591204 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_frE_to_bckE_req_inter.cpp"
T 1208 1583850 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_frE_to_bckE_req_inter.h"
T 882 1582868 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_inst_mem_wb_inter.cpp"
T 1008 1582850 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_inst_mem_wb_inter.h"
T 865 1582946 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_inst_meta_inter.cpp"
T 987 1582923 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_inst_meta_inter.h"
T 883 1582842 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_mem_req_inter.cpp"
T 1005 1582838 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_mem_req_inter.h"
T 902 1591209 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_warp_ctl_inter.cpp"
T 1017 1591205 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_warp_ctl_inter.h"
T 821 1591283 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_wb_inter.cpp"
T 954 1591210 1567978534 0 1567978534 0 "obj_dir/VVortex_VX_wb_inter.h"
T 2312 1582736 1567978534 0 1567978534 0 "obj_dir/VVortex__Syms.cpp"
T 1435 1582735 1567978534 0 1567978534 0 "obj_dir/VVortex__Syms.h"
T 1534 1591288 1567978534 0 1567978534 0 "obj_dir/VVortex__ver.d"
T 0 0 1567978534 0 1567978534 0 "obj_dir/VVortex__verFiles.dat"
T 1423 1591284 1567978534 0 1567978534 0 "obj_dir/VVortex_classes.mk"
S 6179 1572602 1567698562 0 1567698562 0 "pipe_regs//VX_d_e_reg.v"
S 1538 1573254 1567973402 0 1567973402 0 "pipe_regs//VX_e_m_reg.v"
S 776 1578922 1567975942 0 1567975942 0 "pipe_regs//VX_f_d_reg.v"
S 755 1591921 1567978394 0 1567978394 0 "pipe_regs//VX_f_d_reg.v"
S 688 1573273 1567972184 0 1567972184 0 "pipe_regs//VX_m_w_reg.v"

View File

@@ -18,7 +18,6 @@ VM_TRACE_THREADED = 0
# Generated module classes, fast-path, compile with highest optimization
VM_CLASSES_FAST += \
VVortex \
VVortex___024unit \
VVortex_VX_mem_req_inter \
VVortex_VX_inst_mem_wb_inter \
VVortex_VX_inst_meta_inter \

View File

@@ -1,5 +1,3 @@
`include "buses.vh"
`include "VX_define.v"
module VX_f_d_reg (

View File

@@ -3,5 +3,5 @@
# of forwarding stalls: 0
# of branch stalls: 0
# CPI: 1.01056
# time to simulate: 2.19754e-314 milliseconds
# time to simulate: 2.181e-314 milliseconds
# GRADE: Failed on test: 4294967295