diff --git a/generators/chipyard/src/main/resources/csrc/spiketile.cc b/generators/chipyard/src/main/resources/csrc/spiketile.cc index 65b4c978..cbac3196 100644 --- a/generators/chipyard/src/main/resources/csrc/spiketile.cc +++ b/generators/chipyard/src/main/resources/csrc/spiketile.cc @@ -150,6 +150,13 @@ std::map tiles; std::ostream sout(nullptr); log_file_t* log_file; +extern "C" void spike_tile_reset(int hartid) +{ + if (tiles.find(hartid) != tiles.end()) { + tiles[hartid]->proc->reset(); + } +} + extern "C" void spike_tile(int hartid, char* isa, int pmpregions, int icache_sets, int icache_ways, diff --git a/generators/chipyard/src/main/resources/vsrc/spiketile.v b/generators/chipyard/src/main/resources/vsrc/spiketile.v index 55699e7d..87254e35 100644 --- a/generators/chipyard/src/main/resources/vsrc/spiketile.v +++ b/generators/chipyard/src/main/resources/vsrc/spiketile.v @@ -1,3 +1,5 @@ +import "DPI-C" function void spike_tile_reset(input int hartid); + import "DPI-C" function void spike_tile(input int hartid, input string isa, input int pmpregions, @@ -320,7 +322,7 @@ module SpikeBlackBox #( __dcache_c_data_6_reg <= 64'h0; __dcache_c_data_7 = 64'h0; __dcache_c_data_7_reg <= 64'h0; - + spike_tile_reset(HARTID); end else begin spike_tile(HARTID, ISA, PMPREGIONS, ICACHE_SETS, ICACHE_WAYS, DCACHE_SETS, DCACHE_WAYS,