diff --git a/rtl/simulate/test_bench.cpp b/rtl/simulate/test_bench.cpp index 7c56ea0b..2becfb89 100644 --- a/rtl/simulate/test_bench.cpp +++ b/rtl/simulate/test_bench.cpp @@ -12,76 +12,77 @@ int main(int argc, char **argv) Verilated::traceEverOn(true); +#define ALL_TESTS +#ifdef ALL_TESTS + bool passed = true; + std::string tests[NUM_TESTS] = { + "../../emulator/riscv_tests/rv32ui-p-add.hex", + "../../emulator/riscv_tests/rv32ui-p-addi.hex", + "../../emulator/riscv_tests/rv32ui-p-and.hex", + "../../emulator/riscv_tests/rv32ui-p-andi.hex", + "../../emulator/riscv_tests/rv32ui-p-auipc.hex", + "../../emulator/riscv_tests/rv32ui-p-beq.hex", + "../../emulator/riscv_tests/rv32ui-p-bge.hex", + "../../emulator/riscv_tests/rv32ui-p-bgeu.hex", + "../../emulator/riscv_tests/rv32ui-p-blt.hex", + "../../emulator/riscv_tests/rv32ui-p-bltu.hex", + "../../emulator/riscv_tests/rv32ui-p-bne.hex", + "../../emulator/riscv_tests/rv32ui-p-jal.hex", + "../../emulator/riscv_tests/rv32ui-p-jalr.hex", + "../../emulator/riscv_tests/rv32ui-p-lb.hex", + "../../emulator/riscv_tests/rv32ui-p-lbu.hex", + "../../emulator/riscv_tests/rv32ui-p-lh.hex", + "../../emulator/riscv_tests/rv32ui-p-lhu.hex", + "../../emulator/riscv_tests/rv32ui-p-lui.hex", + "../../emulator/riscv_tests/rv32ui-p-lw.hex", + "../../emulator/riscv_tests/rv32ui-p-or.hex", + "../../emulator/riscv_tests/rv32ui-p-ori.hex", + "../../emulator/riscv_tests/rv32ui-p-sb.hex", + "../../emulator/riscv_tests/rv32ui-p-sh.hex", + "../../emulator/riscv_tests/rv32ui-p-simple.hex", + "../../emulator/riscv_tests/rv32ui-p-sll.hex", + "../../emulator/riscv_tests/rv32ui-p-slli.hex", + "../../emulator/riscv_tests/rv32ui-p-slt.hex", + "../../emulator/riscv_tests/rv32ui-p-slti.hex", + "../../emulator/riscv_tests/rv32ui-p-sltiu.hex", + "../../emulator/riscv_tests/rv32ui-p-sltu.hex", + "../../emulator/riscv_tests/rv32ui-p-sra.hex", + "../../emulator/riscv_tests/rv32ui-p-srai.hex", + "../../emulator/riscv_tests/rv32ui-p-srl.hex", + "../../emulator/riscv_tests/rv32ui-p-srli.hex", + "../../emulator/riscv_tests/rv32ui-p-sub.hex", + "../../emulator/riscv_tests/rv32ui-p-sw.hex", + "../../emulator/riscv_tests/rv32ui-p-xor.hex", + "../../emulator/riscv_tests/rv32ui-p-xori.hex", + "../../emulator/riscv_tests/rv32um-p-div.hex", + "../../emulator/riscv_tests/rv32um-p-divu.hex", + "../../emulator/riscv_tests/rv32um-p-mul.hex", + "../../emulator/riscv_tests/rv32um-p-mulh.hex", + "../../emulator/riscv_tests/rv32um-p-mulhsu.hex", + "../../emulator/riscv_tests/rv32um-p-mulhu.hex", + "../../emulator/riscv_tests/rv32um-p-rem.hex", + "../../emulator/riscv_tests/rv32um-p-remu.hex" + }; - // bool passed = true; - // std::string tests[NUM_TESTS] = { - // "../../emulator/riscv_tests/rv32ui-p-add.hex", - // "../../emulator/riscv_tests/rv32ui-p-addi.hex", - // "../../emulator/riscv_tests/rv32ui-p-and.hex", - // "../../emulator/riscv_tests/rv32ui-p-andi.hex", - // "../../emulator/riscv_tests/rv32ui-p-auipc.hex", - // "../../emulator/riscv_tests/rv32ui-p-beq.hex", - // "../../emulator/riscv_tests/rv32ui-p-bge.hex", - // "../../emulator/riscv_tests/rv32ui-p-bgeu.hex", - // "../../emulator/riscv_tests/rv32ui-p-blt.hex", - // "../../emulator/riscv_tests/rv32ui-p-bltu.hex", - // "../../emulator/riscv_tests/rv32ui-p-bne.hex", - // "../../emulator/riscv_tests/rv32ui-p-jal.hex", - // "../../emulator/riscv_tests/rv32ui-p-jalr.hex", - // "../../emulator/riscv_tests/rv32ui-p-lb.hex", - // "../../emulator/riscv_tests/rv32ui-p-lbu.hex", - // "../../emulator/riscv_tests/rv32ui-p-lh.hex", - // "../../emulator/riscv_tests/rv32ui-p-lhu.hex", - // "../../emulator/riscv_tests/rv32ui-p-lui.hex", - // "../../emulator/riscv_tests/rv32ui-p-lw.hex", - // "../../emulator/riscv_tests/rv32ui-p-or.hex", - // "../../emulator/riscv_tests/rv32ui-p-ori.hex", - // "../../emulator/riscv_tests/rv32ui-p-sb.hex", - // "../../emulator/riscv_tests/rv32ui-p-sh.hex", - // "../../emulator/riscv_tests/rv32ui-p-simple.hex", - // "../../emulator/riscv_tests/rv32ui-p-sll.hex", - // "../../emulator/riscv_tests/rv32ui-p-slli.hex", - // "../../emulator/riscv_tests/rv32ui-p-slt.hex", - // "../../emulator/riscv_tests/rv32ui-p-slti.hex", - // "../../emulator/riscv_tests/rv32ui-p-sltiu.hex", - // "../../emulator/riscv_tests/rv32ui-p-sltu.hex", - // "../../emulator/riscv_tests/rv32ui-p-sra.hex", - // "../../emulator/riscv_tests/rv32ui-p-srai.hex", - // "../../emulator/riscv_tests/rv32ui-p-srl.hex", - // "../../emulator/riscv_tests/rv32ui-p-srli.hex", - // "../../emulator/riscv_tests/rv32ui-p-sub.hex", - // "../../emulator/riscv_tests/rv32ui-p-sw.hex", - // "../../emulator/riscv_tests/rv32ui-p-xor.hex", - // "../../emulator/riscv_tests/rv32ui-p-xori.hex", - // "../../emulator/riscv_tests/rv32um-p-div.hex", - // "../../emulator/riscv_tests/rv32um-p-divu.hex", - // "../../emulator/riscv_tests/rv32um-p-mul.hex", - // "../../emulator/riscv_tests/rv32um-p-mulh.hex", - // "../../emulator/riscv_tests/rv32um-p-mulhsu.hex", - // "../../emulator/riscv_tests/rv32um-p-mulhu.hex", - // "../../emulator/riscv_tests/rv32um-p-rem.hex", - // "../../emulator/riscv_tests/rv32um-p-remu.hex" - // }; + for (std::string s : tests) { + Vortex v; - // for (int ii = 0; ii < NUM_TESTS; ii++) - // // for (int ii = 5; ii < 6; ii++) - // { - // std::cout << "TESTING: " << tests[ii] << '\n'; - // Vortex v; - // bool curr = v.simulate(tests[ii]); + std::cerr << s << std::endl; - // if ( curr) std::cerr << GREEN << "Test Passed: " << tests[ii] << std::endl; - // if (!curr) std::cerr << RED << "Test Failed: " << tests[ii] << std::endl; - // passed = passed && curr; + bool curr = v.simulate(s); + if ( curr) std::cerr << GREEN << "Test Passed: " << s << std::endl; + if (!curr) std::cerr << RED << "Test Failed: " << s << std::endl; + passed = passed && curr; + } - // std::cerr << DEFAULT; - // } + if( passed) std::cerr << DEFAULT << "PASSED ALL TESTS\n"; + if(!passed) std::cerr << DEFAULT << "Failed one or more tests\n"; - // if( passed) std::cerr << DEFAULT << "PASSED ALL TESTS\n"; - // if(!passed) std::cerr << DEFAULT << "Failed one or more tests\n"; + return !passed; + #else - // char testing[] = "../../emulator/riscv_tests/rv32ui-p-sw.hex"; + char testing[] = "../../emulator/riscv_tests/rv32ui-p-sw.hex"; Vortex v; const char *testing; @@ -91,13 +92,14 @@ int main(int argc, char **argv) testing = "../../kernel/vortex_test.hex"; } -std::cerr << testing << std::endl; + std::cerr << testing << std::endl; bool curr = v.simulate(testing); if ( curr) std::cerr << GREEN << "Test Passed: " << testing << std::endl; if (!curr) std::cerr << RED << "Test Failed: " << testing << std::endl; - return 0; + return !curr; +#endif } diff --git a/rtl/simulate/test_bench.h b/rtl/simulate/test_bench.h index 2ed39efe..0e25f84c 100644 --- a/rtl/simulate/test_bench.h +++ b/rtl/simulate/test_bench.h @@ -401,13 +401,13 @@ bool Vortex::simulate(std::string file_to_simulate) // std::cout << "Something: " << result << '\n'; - // uint32_t status; - // ram.getWord(0, &status); + uint32_t status; + ram.getWord(0, &status); this->print_stats(); - // return (status == 1); - return (1 == 1); + return (status == 1); + // return (1 == 1); } \ No newline at end of file diff --git a/runtime/mains/dev/vx_dev_main.c b/runtime/mains/dev/vx_dev_main.c index 8b906cd4..e0a464fb 100644 --- a/runtime/mains/dev/vx_dev_main.c +++ b/runtime/mains/dev/vx_dev_main.c @@ -106,7 +106,7 @@ int main() vx_print_mat(z, arguments.numRows, arguments.numColums); - return 1; + return 0; }