Merge pull request #2080 from ThalesSiliconSecurity/cvvdev/dev/variant

Add variant into cva6 parameter
This PR is related to https://github.com/openhwgroup/cva6/pull/1320
This commit is contained in:
JeanRochCoulon 2023-08-22 14:17:48 +02:00 committed by GitHub
commit 2dc44c2b8c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 35 deletions

View file

@ -35,7 +35,8 @@ import "DPI-C" function byte get_section(output longint address, output longint
import "DPI-C" context function void read_section(input longint address, inout byte buffer[]); 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::*; #(
parameter ariane_pkg::cva6_cfg_t CVA6Cfg = ariane_pkg::cva6_cfg_empty, parameter config_pkg::cva6_cfg_t CVA6Cfg = config_pkg::cva6_cfg_empty,
parameter bit IsRVFI = 1'b0,
parameter type rvfi_instr_t = logic, parameter type rvfi_instr_t = logic,
// //
parameter int unsigned AXI_USER_EN = 0, parameter int unsigned AXI_USER_EN = 0,
@ -63,6 +64,7 @@ module cva6_tb_wrapper import uvmt_cva6_pkg::*; #(
cva6 #( cva6 #(
.CVA6Cfg ( CVA6Cfg ), .CVA6Cfg ( CVA6Cfg ),
.IsRVFI ( IsRVFI ),
// //
.ArianeCfg ( ariane_soc::ArianeSocCfg ) .ArianeCfg ( ariane_soc::ArianeSocCfg )
) i_cva6 ( ) i_cva6 (

View file

@ -15,7 +15,8 @@
// SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0 // SPDX-License-Identifier: Apache-2.0 WITH SHL-2.0
module uvmt_cva6_dut_wrap # ( module uvmt_cva6_dut_wrap # (
parameter ariane_pkg::cva6_cfg_t CVA6Cfg = ariane_pkg::cva6_cfg_empty, parameter config_pkg::cva6_cfg_t CVA6Cfg = config_pkg::cva6_cfg_empty,
parameter bit IsRVFI = 1'b0,
parameter type rvfi_instr_t = logic, parameter type rvfi_instr_t = logic,
// //
parameter int unsigned AXI_USER_EN = 0, parameter int unsigned AXI_USER_EN = 0,
@ -36,6 +37,7 @@ module uvmt_cva6_dut_wrap # (
cva6_tb_wrapper #( cva6_tb_wrapper #(
.CVA6Cfg ( CVA6Cfg ), .CVA6Cfg ( CVA6Cfg ),
.IsRVFI ( IsRVFI ),
.rvfi_instr_t ( rvfi_instr_t ), .rvfi_instr_t ( rvfi_instr_t ),
// //
.AXI_USER_EN (AXI_USER_EN), .AXI_USER_EN (AXI_USER_EN),

View file

@ -30,39 +30,33 @@ module uvmt_cva6_tb;
import uvmt_cva6_pkg::*; import uvmt_cva6_pkg::*;
import uvme_cva6_pkg::*; import uvme_cva6_pkg::*;
// cva6 configuration // CVA6 config
localparam ariane_pkg::cva6_cfg_t CVA6Cfg = { localparam config_pkg::cva6_cfg_t CVA6Cfg = cva6_config_pkg::cva6_cfg;
unsigned'(cva6_config_pkg::CVA6ConfigNrCommitPorts), // NrCommitPorts localparam bit IsRVFI = bit'(cva6_config_pkg::CVA6ConfigRvfiTrace);
unsigned'(cva6_config_pkg::CVA6ConfigRvfiTrace), // IsRVFI
unsigned'(cva6_config_pkg::CVA6ConfigAxiAddrWidth), // AxiAddrWidth
unsigned'(cva6_config_pkg::CVA6ConfigAxiDataWidth), // AxiDataWidth
unsigned'(cva6_config_pkg::CVA6ConfigAxiIdWidth), // AxiIdWidth
unsigned'(cva6_config_pkg::CVA6ConfigDataUserWidth) // AxiUserWidth
};
localparam type rvfi_instr_t = struct packed { localparam type rvfi_instr_t = struct packed {
logic [ariane_pkg::NRET-1:0] valid; logic [config_pkg::NRET-1:0] valid;
logic [ariane_pkg::NRET*64-1:0] order; logic [config_pkg::NRET*64-1:0] order;
logic [ariane_pkg::NRET*ariane_pkg::ILEN-1:0] insn; logic [config_pkg::NRET*config_pkg::ILEN-1:0] insn;
logic [ariane_pkg::NRET-1:0] trap; logic [config_pkg::NRET-1:0] trap;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] cause; logic [config_pkg::NRET*riscv::XLEN-1:0] cause;
logic [ariane_pkg::NRET-1:0] halt; logic [config_pkg::NRET-1:0] halt;
logic [ariane_pkg::NRET-1:0] intr; logic [config_pkg::NRET-1:0] intr;
logic [ariane_pkg::NRET*2-1:0] mode; logic [config_pkg::NRET*2-1:0] mode;
logic [ariane_pkg::NRET*2-1:0] ixl; logic [config_pkg::NRET*2-1:0] ixl;
logic [ariane_pkg::NRET*5-1:0] rs1_addr; logic [config_pkg::NRET*5-1:0] rs1_addr;
logic [ariane_pkg::NRET*5-1:0] rs2_addr; logic [config_pkg::NRET*5-1:0] rs2_addr;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] rs1_rdata; logic [config_pkg::NRET*riscv::XLEN-1:0] rs1_rdata;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] rs2_rdata; logic [config_pkg::NRET*riscv::XLEN-1:0] rs2_rdata;
logic [ariane_pkg::NRET*5-1:0] rd_addr; logic [config_pkg::NRET*5-1:0] rd_addr;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] rd_wdata; logic [config_pkg::NRET*riscv::XLEN-1:0] rd_wdata;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] pc_rdata; logic [config_pkg::NRET*riscv::XLEN-1:0] pc_rdata;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] pc_wdata; logic [config_pkg::NRET*riscv::XLEN-1:0] pc_wdata;
logic [ariane_pkg::NRET*riscv::VLEN-1:0] mem_addr; logic [config_pkg::NRET*riscv::VLEN-1:0] mem_addr;
logic [ariane_pkg::NRET*riscv::PLEN-1:0] mem_paddr; logic [config_pkg::NRET*riscv::PLEN-1:0] mem_paddr;
logic [ariane_pkg::NRET*(riscv::XLEN/8)-1:0] mem_rmask; logic [config_pkg::NRET*(riscv::XLEN/8)-1:0] mem_rmask;
logic [ariane_pkg::NRET*(riscv::XLEN/8)-1:0] mem_wmask; logic [config_pkg::NRET*(riscv::XLEN/8)-1:0] mem_wmask;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] mem_rdata; logic [config_pkg::NRET*riscv::XLEN-1:0] mem_rdata;
logic [ariane_pkg::NRET*riscv::XLEN-1:0] mem_wdata; logic [config_pkg::NRET*riscv::XLEN-1:0] mem_wdata;
}; };
localparam AXI_USER_EN = ariane_pkg::AXI_USER_EN; localparam AXI_USER_EN = ariane_pkg::AXI_USER_EN;
@ -120,6 +114,7 @@ module uvmt_cva6_tb;
uvmt_cva6_dut_wrap #( uvmt_cva6_dut_wrap #(
.CVA6Cfg ( CVA6Cfg ), .CVA6Cfg ( CVA6Cfg ),
.IsRVFI ( IsRVFI ),
.rvfi_instr_t ( rvfi_instr_t ), .rvfi_instr_t ( rvfi_instr_t ),
// //
.AXI_USER_EN (AXI_USER_EN), .AXI_USER_EN (AXI_USER_EN),

View file

@ -22,7 +22,7 @@
interface uvmt_rvfi_if #( interface uvmt_rvfi_if #(
parameter ariane_pkg::cva6_cfg_t CVA6Cfg = ariane_pkg::cva6_cfg_empty, parameter config_pkg::cva6_cfg_t CVA6Cfg = config_pkg::cva6_cfg_empty,
parameter type rvfi_instr_t = logic parameter type rvfi_instr_t = logic
) ( ) (
output rvfi_instr_t [CVA6Cfg.NrCommitPorts-1:0] rvfi_o, output rvfi_instr_t [CVA6Cfg.NrCommitPorts-1:0] rvfi_o,