sync up master
This commit is contained in:
commit
7bbcf920be
2
chisel
2
chisel
@ -1 +1 @@
|
|||||||
Subproject commit f8c3c094a685c1f5630bd2f61ba0434c2dfbd58f
|
Subproject commit d151bbeff7bd9917415257482e26760d5fdc1166
|
@ -139,7 +139,7 @@ int main(int argc, char** argv)
|
|||||||
|
|
||||||
if (htif->exit_code())
|
if (htif->exit_code())
|
||||||
{
|
{
|
||||||
fprintf(stderr, "*** FAILED *** (code = %d) after %lld cycles\n", htif->exit_code(), (long long)trace_count);
|
fprintf(stderr, "*** FAILED *** (code = %d, seed %d) after %lld cycles\n", htif->exit_code(), random_seed, (long long)trace_count);
|
||||||
ret = htif->exit_code();
|
ret = htif->exit_code();
|
||||||
}
|
}
|
||||||
else if (trace_count == max_cycles)
|
else if (trace_count == max_cycles)
|
||||||
|
@ -8,12 +8,41 @@
|
|||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
|
|
||||||
static htif_emulator_t* htif = NULL;
|
|
||||||
static unsigned htif_bytes;
|
|
||||||
static mm_t* mm = NULL;
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
||||||
|
extern int vcs_main(int argc, char** argv);
|
||||||
|
|
||||||
|
static htif_emulator_t* htif;
|
||||||
|
static unsigned htif_bytes;
|
||||||
|
static mm_t* mm;
|
||||||
|
static const char* loadmem;
|
||||||
|
|
||||||
|
void htif_fini(vc_handle failure)
|
||||||
|
{
|
||||||
|
delete htif;
|
||||||
|
htif = NULL;
|
||||||
|
exit(vc_getScalar(failure));
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char** argv)
|
||||||
|
{
|
||||||
|
bool dramsim = false;
|
||||||
|
|
||||||
|
for (int i = 1; i < argc; i++)
|
||||||
|
{
|
||||||
|
if (!strcmp(argv[i], "+dramsim"))
|
||||||
|
dramsim = true;
|
||||||
|
else if (!strncmp(argv[i], "+loadmem=", 9))
|
||||||
|
loadmem = argv[i]+9;
|
||||||
|
}
|
||||||
|
|
||||||
|
mm = dramsim ? (mm_t*)(new mm_dramsim2_t) : (mm_t*)(new mm_magic_t);
|
||||||
|
htif = new htif_emulator_t(std::vector<std::string>(argv + 1, argv + argc));
|
||||||
|
|
||||||
|
vcs_main(argc, argv);
|
||||||
|
abort(); // should never get here
|
||||||
|
}
|
||||||
|
|
||||||
void memory_tick(
|
void memory_tick(
|
||||||
vc_handle mem_req_val,
|
vc_handle mem_req_val,
|
||||||
vc_handle mem_req_rdy,
|
vc_handle mem_req_rdy,
|
||||||
@ -62,55 +91,18 @@ void memory_tick(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void htif_init
|
void htif_init(vc_handle htif_width, vc_handle mem_width)
|
||||||
(
|
|
||||||
vc_handle htif_width,
|
|
||||||
vc_handle mem_width,
|
|
||||||
vc_handle argv,
|
|
||||||
vc_handle loadmem,
|
|
||||||
vc_handle dramsim
|
|
||||||
)
|
|
||||||
{
|
{
|
||||||
int mw = vc_4stVectorRef(mem_width)->d;
|
int mw = vc_4stVectorRef(mem_width)->d;
|
||||||
mm = vc_getScalar(dramsim) ? (mm_t*)(new mm_dramsim2_t) : (mm_t*)(new mm_magic_t);
|
|
||||||
assert(mw && (mw & (mw-1)) == 0);
|
assert(mw && (mw & (mw-1)) == 0);
|
||||||
mm->init(MEM_SIZE, mw/8, LINE_SIZE);
|
mm->init(MEM_SIZE, mw/8, LINE_SIZE);
|
||||||
|
|
||||||
|
if (loadmem)
|
||||||
|
load_mem(mm->get_data(), loadmem);
|
||||||
|
|
||||||
vec32* w = vc_4stVectorRef(htif_width);
|
vec32* w = vc_4stVectorRef(htif_width);
|
||||||
assert(w->d <= 32 && w->d % 8 == 0); // htif_tick assumes data fits in a vec32
|
assert(w->d <= 32 && w->d % 8 == 0); // htif_tick assumes data fits in a vec32
|
||||||
htif_bytes = w->d/8;
|
htif_bytes = w->d/8;
|
||||||
|
|
||||||
char loadmem_str[1024];
|
|
||||||
vc_VectorToString(loadmem, loadmem_str);
|
|
||||||
if (*loadmem_str)
|
|
||||||
load_mem(mm->get_data(), loadmem_str);
|
|
||||||
|
|
||||||
char argv_str[1024];
|
|
||||||
vc_VectorToString(argv, argv_str);
|
|
||||||
if (!*argv_str)
|
|
||||||
{
|
|
||||||
if (*loadmem_str)
|
|
||||||
strcpy(argv_str, "none");
|
|
||||||
else
|
|
||||||
{
|
|
||||||
fprintf(stderr, "Usage: ./simv [host options] +argv=\"<target program> [target args]\"\n");
|
|
||||||
exit(-1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<std::string> args;
|
|
||||||
std::stringstream ss(argv_str);
|
|
||||||
std::istream_iterator<std::string> begin(ss), end;
|
|
||||||
std::copy(begin, end, std::back_inserter<std::vector<std::string>>(args));
|
|
||||||
|
|
||||||
htif = new htif_emulator_t(args);
|
|
||||||
}
|
|
||||||
|
|
||||||
void htif_fini(vc_handle failure)
|
|
||||||
{
|
|
||||||
delete htif;
|
|
||||||
htif = NULL;
|
|
||||||
exit(vc_getScalar(failure));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void htif_tick
|
void htif_tick
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit 2a05ecbb351304464cfedd02890dafb80bfad6d7
|
Subproject commit 8415eba06ffac9dfa5203bfca9b10afae2316961
|
@ -1 +1 @@
|
|||||||
Subproject commit ea6edc71edb84d9eb9241decd04ee3374a895f0c
|
Subproject commit 7e1460032cf6f522ce4bc7e8a347c1f08a4476d2
|
2
rocket
2
rocket
@ -1 +1 @@
|
|||||||
Subproject commit ddb2db3f69ffabf9c985f76614603b4b0265c815
|
Subproject commit 489d3b1cd57bbdcf443247a359214b644c5c1e9f
|
Loading…
Reference in New Issue
Block a user