Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 23 additions & 1 deletion dv/verilator/simple_system_cosim/simple_system_cosim.cc
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,10 @@ class SimpleSystemCosim : public SimpleSystem {
// Use raw pointer as destruction outside main can cause segment fault (due to
// undefined instruction order vs VerilatorSimCtrl singleton).
SimpleSystemCosim *simple_system_cosim;

std::cout << "ISA: " << simple_system_cosim->GetIsaString() << "\n";
PrintIbexCosimConfig(secure_ibex, icache_en,
pmp_num_regions[0], pmp_granularity[0],
mhpm_counter_num[0], DmStartAddr[0], DmEndAddr[0]);
extern "C" {
void *get_spike_cosim() {
assert(simple_system_cosim);
Expand All @@ -69,13 +72,32 @@ void *get_spike_cosim() {
return static_cast<Cosim *>(simple_system_cosim->_cosim.get());
}

static void PrintIbexCosimConfig(bool secure_ibex, bool icache_en,
uint32_t pmp_num_regions,
uint32_t pmp_granularity,
uint32_t mhpm_counter_num,
uint32_t dm_start_addr,
uint32_t dm_end_addr) {
std::cout << "\nIbex configuration\n";
std::cout << "==================\n";
std::cout << "secure_ibex: " << secure_ibex << "\n";
std::cout << "icache_en: " << icache_en << "\n";
std::cout << "pmp_num_regions: " << pmp_num_regions << "\n";
std::cout << "pmp_granularity: " << pmp_granularity << "\n";
std::cout << "mhpm_counter_num: " << mhpm_counter_num << "\n";
std::cout << "DmStartAddr: 0x" << std::hex << dm_start_addr << std::dec << "\n";
std::cout << "DmEndAddr: 0x" << std::hex << dm_end_addr << std::dec << "\n";
}

void create_cosim(svBit secure_ibex, svBit icache_en,
const svBitVecVal *pmp_num_regions,
const svBitVecVal *pmp_granularity,
const svBitVecVal *mhpm_counter_num,
const svBitVecVal *DmStartAddr,
const svBitVecVal *DmEndAddr) {
assert(simple_system_cosim);


simple_system_cosim->CreateCosim(secure_ibex, icache_en, pmp_num_regions[0],
pmp_granularity[0], mhpm_counter_num[0],
DmStartAddr[0], DmEndAddr[0]);
Expand Down