Skip to content

Commit f77e373

Browse files
Fixup simple_system_cosim
1 parent 2762d66 commit f77e373

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

dv/verilator/simple_system_cosim/ibex_simple_system_cosim_checker.sv

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@ module ibex_simple_system_cosim_checker #(
88
parameter bit PMPEnable = 1'b0,
99
parameter int unsigned PMPGranularity = 0,
1010
parameter int unsigned PMPNumRegions = 4,
11-
parameter int unsigned MHPMCounterNum = 0
11+
parameter int unsigned MHPMCounterNum = 0,
12+
parameter int unsigned DmBaseAddr = 32'h1A110000,
13+
parameter int unsigned DmAddrMask = 32'h00000FFF
1214
) (
1315
input clk_i,
1416
input rst_ni,
@@ -26,7 +28,8 @@ module ibex_simple_system_cosim_checker #(
2628
);
2729
import "DPI-C" function chandle get_spike_cosim;
2830
import "DPI-C" function void create_cosim(bit secure_ibex, bit icache_en,
29-
bit [31:0] pmp_num_regions, bit [31:0] pmp_granularity, bit [31:0] mhpm_counter_num);
31+
bit [31:0] pmp_num_regions, bit [31:0] pmp_granularity, bit [31:0] mhpm_counter_num,
32+
bit [31:0] DmStartAddr, bit [31:0] DmEndAddr);
3033

3134
import ibex_pkg::*;
3235

@@ -35,8 +38,11 @@ module ibex_simple_system_cosim_checker #(
3538
initial begin
3639
localparam int unsigned LocalPMPGranularity = PMPEnable ? PMPGranularity : 0;
3740
localparam int unsigned LocalPMPNumRegions = PMPEnable ? PMPNumRegions : 0;
41+
localparam int unsigned DmStartAddr = DmBaseAddr;
42+
localparam int unsigned DmEndAddr = DmBaseAddr + (DmAddrMask + 1);
3843

39-
create_cosim(SecureIbex, ICache, LocalPMPNumRegions, LocalPMPGranularity, MHPMCounterNum);
44+
create_cosim(SecureIbex, ICache, LocalPMPNumRegions, LocalPMPGranularity, MHPMCounterNum,
45+
DmStartAddr, DmEndAddr);
4046
cosim_handle = get_spike_cosim();
4147
end
4248

dv/verilator/simple_system_cosim/simple_system_cosim.cc

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,16 @@ class SimpleSystemCosim : public SimpleSystem {
2020
~SimpleSystemCosim() {}
2121

2222
void CreateCosim(bool secure_ibex, bool icache_en, uint32_t pmp_num_regions,
23-
uint32_t pmp_granularity, uint32_t mhpm_counter_num) {
23+
uint32_t pmp_granularity, uint32_t mhpm_counter_num,
24+
uint32_t DmStartAddr, uint32_t DmEndAddr) {
2425
_cosim = std::make_unique<SpikeCosim>(
2526
GetIsaString(), 0x100080, 0x100001, "simple_system_cosim.log",
2627
secure_ibex, icache_en, pmp_num_regions, pmp_granularity,
27-
mhpm_counter_num);
28+
mhpm_counter_num, DmStartAddr, DmEndAddr);
2829

29-
_cosim->add_memory(0x100000, 1024 * 1024);
30-
_cosim->add_memory(0x20000, 4096);
30+
// Add a memory device that covers the entire address space.
31+
// This will only be sparsely populated.
32+
_cosim->add_memory(0x00000000, 0xFFFF0000);
3133

3234
CopyMemAreaToCosim(&_ram, 0x100000);
3335
}
@@ -70,10 +72,13 @@ void *get_spike_cosim() {
7072
void create_cosim(svBit secure_ibex, svBit icache_en,
7173
const svBitVecVal *pmp_num_regions,
7274
const svBitVecVal *pmp_granularity,
73-
const svBitVecVal *mhpm_counter_num) {
75+
const svBitVecVal *mhpm_counter_num,
76+
const svBitVecVal *DmStartAddr,
77+
const svBitVecVal *DmEndAddr) {
7478
assert(simple_system_cosim);
7579
simple_system_cosim->CreateCosim(secure_ibex, icache_en, pmp_num_regions[0],
76-
pmp_granularity[0], mhpm_counter_num[0]);
80+
pmp_granularity[0], mhpm_counter_num[0],
81+
DmStartAddr[0], DmEndAddr[0]);
7782
}
7883
}
7984

0 commit comments

Comments
 (0)