Correctly support reset for spiketile

This commit is contained in:
Jerry Zhao
2023-01-06 16:53:20 -08:00
parent 2a08ca9c70
commit 2badb7e3f6
2 changed files with 10 additions and 1 deletions

View File

@@ -150,6 +150,13 @@ std::map<int, tile_t*> 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,

View File

@@ -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,