From 8b6a7f65dd76c10e6133ce4acd9f74f5c46e9053 Mon Sep 17 00:00:00 2001 From: Jerry Zhao Date: Sat, 7 Jan 2023 12:12:13 -0800 Subject: [PATCH] Fix spike interface --- .../src/main/resources/csrc/spiketile.cc | 26 ++++++++++++++----- sims/common-sim-flags.mk | 6 ++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/generators/chipyard/src/main/resources/csrc/spiketile.cc b/generators/chipyard/src/main/resources/csrc/spiketile.cc index cbac3196..06b57ab3 100644 --- a/generators/chipyard/src/main/resources/csrc/spiketile.cc +++ b/generators/chipyard/src/main/resources/csrc/spiketile.cc @@ -252,13 +252,24 @@ extern "C" void spike_tile(int hartid, char* isa, dcache_ways, dcache_sets, cacheable, uncacheable, readonly_uncacheable, executable, icache_sourceids, dcache_sourceids); + std::string* isastr = new std::string(isa); + cfg_t* cfg = new cfg_t(std::make_pair(0, 0), + nullptr, + isastr->c_str(), + "MSU", + "vlen:128,elen:64", + false, + endianness_little, + false, + pmpregions, + std::vector(), + std::vector(), + false); processor_t* p = new processor_t(isa_parser, - "vlen:128,elen:64", + cfg, simif, hartid, false, - endianness_little, - false, log_file->get(), sout); @@ -901,10 +912,11 @@ void spike_thread_main(void* arg) host->switch_to(); } while (tile->max_insns != 0) { - uint64_t last_bits = tile->proc->get_last_bits(); - if (insn_should_fence(last_bits) && !tile->simif->stq_empty()) { - host->switch_to(); - } + // TODO: Fences don't work + // uint64_t last_bits = tile->proc->get_last_bits(); + // if (insn_should_fence(last_bits) && !tile->simif->stq_empty()) { + // host->switch_to(); + // } tile->proc->step(1); tile->max_insns--; tile->proc->get_state()->mcycle->write(tile->simif->cycle); diff --git a/sims/common-sim-flags.mk b/sims/common-sim-flags.mk index 642004f6..3b4281c3 100644 --- a/sims/common-sim-flags.mk +++ b/sims/common-sim-flags.mk @@ -7,11 +7,11 @@ SIM_OPT_CXXFLAGS := -O3 # so don't link with libriscv if it doesn't exist # potentially breaks some configs -ifeq (,$(wildcard $RISCV/lib/libriscv.so)) +ifeq (,$(wildcard $(RISCV)/lib/libriscv.so)) $(warning libriscv not found) -LRISCV="" +LRISCV= else -LRISCV="-lriscv" +LRISCV=-lriscv endif SIM_CXXFLAGS = \