mirror of
https://github.com/openhwgroup/cva6.git
synced 2025-04-23 13:47:13 -04:00
Define RVFI as cva6 parameter
Change police style by adopting Camel style for parameters Signed-off-by: Jean-Roch Coulon <jean-roch.coulon@thalesgroup.com>
This commit is contained in:
parent
033669025f
commit
bd4de7ea44
4 changed files with 75 additions and 14 deletions
|
@ -34,9 +34,11 @@ import "DPI-C" function read_elf(input string filename);
|
|||
import "DPI-C" function byte get_section(output longint address, output longint len);
|
||||
import "DPI-C" context function void read_section(input longint address, inout byte buffer[]);
|
||||
|
||||
module cva6_tb_wrapper
|
||||
import uvmt_cva6_pkg::*;
|
||||
#(
|
||||
module cva6_tb_wrapper import uvmt_cva6_pkg::*; #(
|
||||
// RVFI
|
||||
parameter type rvfi_instr_t = logic,
|
||||
parameter int unsigned NrCommitPorts = 0,
|
||||
//
|
||||
parameter int unsigned AXI_USER_WIDTH = 1,
|
||||
parameter int unsigned AXI_USER_EN = 0,
|
||||
parameter int unsigned AXI_ADDRESS_WIDTH = 64,
|
||||
|
@ -47,7 +49,7 @@ module cva6_tb_wrapper
|
|||
input logic rst_ni,
|
||||
input logic [XLEN-1:0] boot_addr_i,
|
||||
output logic [31:0] tb_exit_o,
|
||||
output ariane_pkg::rvfi_port_t rvfi_o,
|
||||
output rvfi_instr_t [NrCommitPorts-1:0] rvfi_o,
|
||||
input cvxif_pkg::cvxif_resp_t cvxif_resp,
|
||||
output cvxif_pkg::cvxif_req_t cvxif_req,
|
||||
uvma_axi_intf axi_slave,
|
||||
|
@ -60,10 +62,14 @@ module cva6_tb_wrapper
|
|||
static uvm_cmdline_processor uvcl = uvm_cmdline_processor::get_inst();
|
||||
string binary = "";
|
||||
|
||||
ariane_pkg::rvfi_port_t rvfi;
|
||||
rvfi_instr_t [NrCommitPorts-1:0] rvfi;
|
||||
assign rvfi_o = rvfi;
|
||||
|
||||
cva6 #(
|
||||
// RVFI
|
||||
.rvfi_instr_t ( rvfi_instr_t ),
|
||||
.NrCommitPorts ( NrCommitPorts ),
|
||||
//
|
||||
.ArianeCfg ( ariane_soc::ArianeSocCfg )
|
||||
) i_cva6 (
|
||||
.clk_i ( clk_i ),
|
||||
|
@ -86,10 +92,12 @@ module cva6_tb_wrapper
|
|||
//----------------------------------------------------------------------------
|
||||
|
||||
rvfi_tracer #(
|
||||
.NrCommitPorts(NrCommitPorts),
|
||||
.rvfi_instr_t(rvfi_instr_t),
|
||||
//
|
||||
.HART_ID(8'h0),
|
||||
.DEBUG_START(0),
|
||||
.DEBUG_STOP(0),
|
||||
.NR_COMMIT_PORTS(ariane_pkg::NR_COMMIT_PORTS)
|
||||
.DEBUG_STOP(0)
|
||||
) rvfi_tracer_i (
|
||||
.clk_i(clk_i),
|
||||
.rst_ni(rst_ni),
|
||||
|
|
|
@ -14,7 +14,12 @@
|
|||
//
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0
|
||||
|
||||
module uvmt_cva6_dut_wrap # ( parameter int unsigned AXI_USER_WIDTH = 1,
|
||||
module uvmt_cva6_dut_wrap # (
|
||||
// RVFI
|
||||
parameter type rvfi_instr_t = logic,
|
||||
parameter int unsigned NrCommitPorts = 0,
|
||||
//
|
||||
parameter int unsigned AXI_USER_WIDTH = 1,
|
||||
parameter int unsigned AXI_USER_EN = 0,
|
||||
parameter int unsigned AXI_ADDRESS_WIDTH = 64,
|
||||
parameter int unsigned AXI_DATA_WIDTH = 64,
|
||||
|
@ -28,12 +33,16 @@ module uvmt_cva6_dut_wrap # ( parameter int unsigned AXI_USER_WIDTH = 1,
|
|||
uvmt_axi_switch_intf axi_switch_vif,
|
||||
uvme_cva6_core_cntrl_if core_cntrl_if,
|
||||
output logic[31:0] tb_exit_o,
|
||||
output ariane_pkg::rvfi_port_t rvfi_o
|
||||
output rvfi_instr_t [NrCommitPorts-1:0] rvfi_o
|
||||
);
|
||||
|
||||
|
||||
|
||||
cva6_tb_wrapper #(
|
||||
// RVFI
|
||||
.rvfi_instr_t ( rvfi_instr_t ),
|
||||
.NrCommitPorts ( NrCommitPorts ),
|
||||
//
|
||||
.AXI_USER_WIDTH (AXI_USER_WIDTH),
|
||||
.AXI_USER_EN (AXI_USER_EN),
|
||||
.AXI_ADDRESS_WIDTH (AXI_ADDRESS_WIDTH),
|
||||
|
|
|
@ -30,6 +30,36 @@ module uvmt_cva6_tb;
|
|||
import uvmt_cva6_pkg::*;
|
||||
import uvme_cva6_pkg::*;
|
||||
|
||||
// cva6 Configuration
|
||||
// RVFI
|
||||
localparam int unsigned ILEN = 32;
|
||||
localparam int unsigned NRET = 1;
|
||||
typedef struct packed {
|
||||
logic [NRET-1:0] valid;
|
||||
logic [NRET*64-1:0] order;
|
||||
logic [NRET*ILEN-1:0] insn;
|
||||
logic [NRET-1:0] trap;
|
||||
logic [NRET*riscv::XLEN-1:0] cause;
|
||||
logic [NRET-1:0] halt;
|
||||
logic [NRET-1:0] intr;
|
||||
logic [NRET*2-1:0] mode;
|
||||
logic [NRET*2-1:0] ixl;
|
||||
logic [NRET*5-1:0] rs1_addr;
|
||||
logic [NRET*5-1:0] rs2_addr;
|
||||
logic [NRET*riscv::XLEN-1:0] rs1_rdata;
|
||||
logic [NRET*riscv::XLEN-1:0] rs2_rdata;
|
||||
logic [NRET*5-1:0] rd_addr;
|
||||
logic [NRET*riscv::XLEN-1:0] rd_wdata;
|
||||
logic [NRET*riscv::XLEN-1:0] pc_rdata;
|
||||
logic [NRET*riscv::XLEN-1:0] pc_wdata;
|
||||
logic [NRET*riscv::VLEN-1:0] mem_addr;
|
||||
logic [NRET*riscv::PLEN-1:0] mem_paddr;
|
||||
logic [NRET*(riscv::XLEN/8)-1:0] mem_rmask;
|
||||
logic [NRET*(riscv::XLEN/8)-1:0] mem_wmask;
|
||||
logic [NRET*riscv::XLEN-1:0] mem_rdata;
|
||||
logic [NRET*riscv::XLEN-1:0] mem_wdata; } rvfi_instr_t;
|
||||
localparam int unsigned NrCommitPorts = cva6_config_pkg::CVA6ConfigNrCommitPorts;
|
||||
|
||||
localparam AXI_USER_WIDTH = ariane_pkg::AXI_USER_WIDTH;
|
||||
localparam AXI_USER_EN = ariane_pkg::AXI_USER_EN;
|
||||
localparam AXI_ADDRESS_WIDTH = 64;
|
||||
|
@ -53,8 +83,10 @@ module uvmt_cva6_tb;
|
|||
);
|
||||
uvmt_axi_switch_intf axi_switch_vif();
|
||||
uvme_cva6_core_cntrl_if core_cntrl_if();
|
||||
uvma_rvfi_instr_if#(uvme_cva6_pkg::ILEN,uvme_cva6_pkg::XLEN)
|
||||
rvfi_instr_if [uvme_cva6_pkg::RVFI_NRET-1:0]();
|
||||
uvma_rvfi_instr_if #(
|
||||
uvme_cva6_pkg::ILEN,
|
||||
uvme_cva6_pkg::XLEN
|
||||
) rvfi_instr_if [uvme_cva6_pkg::RVFI_NRET-1:0] ();
|
||||
|
||||
uvma_rvfi_csr_if#(uvme_cva6_pkg::XLEN) rvfi_csr_if [uvme_cva6_pkg::RVFI_NRET-1:0]();
|
||||
|
||||
|
@ -71,7 +103,11 @@ module uvmt_cva6_tb;
|
|||
.rst_n(clknrst_if.reset_n)
|
||||
);
|
||||
// DUT Wrapper Interfaces
|
||||
uvmt_rvfi_if rvfi_if(
|
||||
uvmt_rvfi_if #(
|
||||
// RVFI
|
||||
.rvfi_instr_t ( rvfi_instr_t ),
|
||||
.NrCommitPorts ( NrCommitPorts )
|
||||
) rvfi_if(
|
||||
.rvfi_o(),
|
||||
.tb_exit_o()
|
||||
); // Status information generated by the Virtual Peripherals in the DUT WRAPPER memory.
|
||||
|
@ -81,6 +117,10 @@ module uvmt_cva6_tb;
|
|||
*/
|
||||
|
||||
uvmt_cva6_dut_wrap #(
|
||||
// RVFI
|
||||
.rvfi_instr_t ( rvfi_instr_t ),
|
||||
.NrCommitPorts ( NrCommitPorts ),
|
||||
//
|
||||
.AXI_USER_WIDTH (AXI_USER_WIDTH),
|
||||
.AXI_USER_EN (AXI_USER_EN),
|
||||
.AXI_ADDRESS_WIDTH (AXI_ADDRESS_WIDTH),
|
||||
|
|
|
@ -21,8 +21,12 @@
|
|||
`define __UVMT_CVA6_TB_IFS_SV__
|
||||
|
||||
|
||||
interface uvmt_rvfi_if (
|
||||
output ariane_pkg::rvfi_port_t rvfi_o,
|
||||
interface uvmt_rvfi_if #(
|
||||
// RVFI
|
||||
parameter type rvfi_instr_t = logic,
|
||||
parameter int unsigned NrCommitPorts = 0
|
||||
) (
|
||||
output rvfi_instr_t [NrCommitPorts-1:0] rvfi_o,
|
||||
output logic[31:0] tb_exit_o
|
||||
);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue