From 7f23257873c8a62c93e4447876457a5772010362 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 17 Mar 2014 15:35:17 -0700 Subject: [PATCH 1/4] Print out random seed if test fails --- csrc/emulator.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/csrc/emulator.cc b/csrc/emulator.cc index 6b90d469..f7d73aaa 100644 --- a/csrc/emulator.cc +++ b/csrc/emulator.cc @@ -139,7 +139,7 @@ int main(int argc, char** argv) 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(); } else if (trace_count == max_cycles) From 0d124d283a8850061e8e738eddcc67dbb9ee1c73 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Mon, 17 Mar 2014 17:02:28 -0700 Subject: [PATCH 2/4] Write our own vcs main() routine --- chisel | 2 +- csrc/vcs_main.cc | 82 ++++++++++++++++++++++-------------------------- 2 files changed, 38 insertions(+), 46 deletions(-) diff --git a/chisel b/chisel index f8c3c094..a2388fee 160000 --- a/chisel +++ b/chisel @@ -1 +1 @@ -Subproject commit f8c3c094a685c1f5630bd2f61ba0434c2dfbd58f +Subproject commit a2388fee713e67b5b4f490ae203093dd8d9a5d33 diff --git a/csrc/vcs_main.cc b/csrc/vcs_main.cc index a406a826..9efcd6fb 100644 --- a/csrc/vcs_main.cc +++ b/csrc/vcs_main.cc @@ -8,12 +8,41 @@ #include #include -static htif_emulator_t* htif = NULL; -static unsigned htif_bytes; -static mm_t* mm = NULL; - 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(int code) +{ + delete htif; + htif = NULL; + exit(code); +} + +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(argv + 1, argv + argc)); + + vcs_main(argc, argv); + abort(); // should never get here +} + void memory_tick( vc_handle mem_req_val, vc_handle mem_req_rdy, @@ -62,55 +91,18 @@ void memory_tick( ); } -void htif_init -( - vc_handle htif_width, - vc_handle mem_width, - vc_handle argv, - vc_handle loadmem, - vc_handle dramsim -) +void htif_init(vc_handle htif_width, vc_handle mem_width) { 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); mm->init(MEM_SIZE, mw/8, LINE_SIZE); + if (loadmem) + load_mem(mm->get_data(), loadmem); + vec32* w = vc_4stVectorRef(htif_width); assert(w->d <= 32 && w->d % 8 == 0); // htif_tick assumes data fits in a vec32 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 args]\"\n"); - exit(-1); - } - } - - std::vector args; - std::stringstream ss(argv_str); - std::istream_iterator begin(ss), end; - std::copy(begin, end, std::back_inserter>(args)); - - htif = new htif_emulator_t(args); -} - -void htif_fini(vc_handle failure) -{ - delete htif; - htif = NULL; - exit(vc_getScalar(failure)); } void htif_tick From d2c32b048a2facb667e24962b1f8549315d3f777 Mon Sep 17 00:00:00 2001 From: Yunsup Lee Date: Tue, 18 Mar 2014 01:35:08 -0700 Subject: [PATCH 3/4] fix bug in htif_fini, need to use vc_handle! --- csrc/vcs_main.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/csrc/vcs_main.cc b/csrc/vcs_main.cc index 9efcd6fb..cc9e4a06 100644 --- a/csrc/vcs_main.cc +++ b/csrc/vcs_main.cc @@ -17,11 +17,11 @@ static unsigned htif_bytes; static mm_t* mm; static const char* loadmem; -void htif_fini(int code) +void htif_fini(vc_handle failure) { delete htif; htif = NULL; - exit(code); + exit(vc_getScalar(failure)); } int main(int argc, char** argv) From 51808d998257cef9a82d00b45dd2c8c908a18acf Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 18 Mar 2014 18:37:53 -0700 Subject: [PATCH 4/4] Fix minor FP bugs --- hardfloat | 2 +- riscv-tests | 2 +- rocket | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/hardfloat b/hardfloat index 2a05ecbb..8415eba0 160000 --- a/hardfloat +++ b/hardfloat @@ -1 +1 @@ -Subproject commit 2a05ecbb351304464cfedd02890dafb80bfad6d7 +Subproject commit 8415eba06ffac9dfa5203bfca9b10afae2316961 diff --git a/riscv-tests b/riscv-tests index ea6edc71..7e146003 160000 --- a/riscv-tests +++ b/riscv-tests @@ -1 +1 @@ -Subproject commit ea6edc71edb84d9eb9241decd04ee3374a895f0c +Subproject commit 7e1460032cf6f522ce4bc7e8a347c1f08a4476d2 diff --git a/rocket b/rocket index ddb2db3f..09f42649 160000 --- a/rocket +++ b/rocket @@ -1 +1 @@ -Subproject commit ddb2db3f69ffabf9c985f76614603b4b0265c815 +Subproject commit 09f426491ec357cdffee10071a4e3c3b8ba779b3