mirror of
https://github.com/openhwgroup/cva6.git
synced 2025-04-24 22:27:10 -04:00
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:
commit
2dc44c2b8c
4 changed files with 34 additions and 35 deletions
|
@ -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 (
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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),
|
||||||
|
|
|
@ -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,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue