diff options
author | bd <bdunahu@operationnull.com> | 2025-04-01 22:06:42 -0400 |
---|---|---|
committer | bd <bdunahu@operationnull.com> | 2025-04-01 22:06:42 -0400 |
commit | d4e3a7a3b1cff6885978093d5cc125e38cc397b3 (patch) | |
tree | 92caf723e7eadfa063fafe2291ca6ec4ed9513e0 /tests | |
parent | 68324683cde10c636a4a602644f3e64d24b0e412 (diff) |
Finish adding initial tests for full pipeline
Diffstat (limited to 'tests')
-rw-r--r-- | tests/controller.cc | 10 | ||||
-rw-r--r-- | tests/ex.cc | 39 |
2 files changed, 19 insertions, 30 deletions
diff --git a/tests/controller.cc b/tests/controller.cc index c36eba6..c7e3c93 100644 --- a/tests/controller.cc +++ b/tests/controller.cc @@ -187,7 +187,6 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]") CHECK(i->get_instr_bits() == b3); delete i; - i = this->ct->advance(WAIT); REQUIRE(i == nullptr); i = this->ct->advance(WAIT); @@ -259,7 +258,6 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]") CHECK(i->get_time_of(WRITE) == 22); CHECK(i->get_s1() == 0xE); CHECK(i->get_s2() == 0x7); - CHECK(i->get_s3() == 0x0); // doesn't exist CHECK(this->ct->get_gprs().at(2) == 0x200); CHECK(this->ct->get_gprs().at(6) == 0x1); CHECK(i->get_pc() == 0x7); @@ -332,11 +330,11 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]") REQUIRE(i != nullptr); CHECK(i->get_mnemonic() == NOP); + delete i; - i = this->ct->advance(WAIT); REQUIRE(i != nullptr); // it was already in cache - + CHECK(i->get_time_of(FETCH) == 29); // clear out pipe (4) CHECK(i->get_time_of(DCDE) == 30); CHECK(i->get_time_of(EXEC) == 31); @@ -366,8 +364,8 @@ TEST_CASE_METHOD(ControllerPipeFixture, "two num adder", "[full pipe]") CHECK(i->get_time_of(EXEC) == 34); CHECK(i->get_time_of(MEM) == 35); CHECK(i->get_time_of(WRITE) == 36); - CHECK(i->get_s1() == 0x0); - CHECK(i->get_s2() == 0x200); + CHECK(i->get_s1() == 0x1); + CHECK(i->get_s2() == 0x0); CHECK(i->get_s3() == 0x0); CHECK(this->ct->get_gprs().at(2) == 0x200); CHECK(this->ct->get_gprs().at(6) == 0x1); diff --git a/tests/ex.cc b/tests/ex.cc index a0af6fe..13437f7 100644 --- a/tests/ex.cc +++ b/tests/ex.cc @@ -640,8 +640,7 @@ TEST_CASE_METHOD(EXFixture, "JRL", "[ex]") InstrDTO *i; m = JRL; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 69, s3 = 0; i = execute_instr(s1, s2, s3, m); CHECK(i->get_s1() == 69); @@ -675,11 +674,10 @@ TEST_CASE_METHOD(EXFixture, "BEQ no cond", "[ex]") InstrDTO *i; m = BEQ; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 50, s3 = 0; i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 42096); + CHECK(i->get_s1() == -1); delete i; } @@ -691,12 +689,11 @@ TEST_CASE_METHOD(EXFixture, "BEQ", "[ex]") InstrDTO *i; m = BEQ; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 50, s3 = 0; this->ct->set_condition(EQ, true); i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 69); + CHECK(i->get_s1() == 50); delete i; } @@ -708,11 +705,10 @@ TEST_CASE_METHOD(EXFixture, "BGT no cond", "[ex]") InstrDTO *i; m = BGT; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 50, s3 = 0; i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 42096); + CHECK(i->get_s1() == -1); delete i; } @@ -724,12 +720,11 @@ TEST_CASE_METHOD(EXFixture, "BGT", "[ex]") InstrDTO *i; m = BGT; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 50, s3 = 0; this->ct->set_condition(GT, true); i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 69); + CHECK(i->get_s1() == 50); delete i; } @@ -742,10 +737,9 @@ TEST_CASE_METHOD(EXFixture, "BUF no cond", "[ex]") m = BUF; s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 42096); + CHECK(i->get_s1() == -1); delete i; } @@ -757,12 +751,11 @@ TEST_CASE_METHOD(EXFixture, "BUF", "[ex]") InstrDTO *i; m = BUF; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 50, s3 = 0; this->ct->set_condition(UF, true); i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 69); + CHECK(i->get_s1() == 50); delete i; } @@ -775,10 +768,9 @@ TEST_CASE_METHOD(EXFixture, "BOF no cond", "[ex]") m = BOF; s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 42096); + CHECK(i->get_s1() == -1); delete i; } @@ -790,12 +782,11 @@ TEST_CASE_METHOD(EXFixture, "BOF", "[ex]") InstrDTO *i; m = BOF; - s1 = 100, s2 = -42027, s3 = 0; - this->ct->set_pc(42096); + s1 = 100, s2 = 50, s3 = 0; this->ct->set_condition(OF, true); i = execute_instr(s1, s2, s3, m); - CHECK(i->get_s1() == 69); + CHECK(i->get_s1() == 50); delete i; } |