aboutsummaryrefslogtreecommitdiff
path: root/multiplier/tb_multiplier.cpp
diff options
context:
space:
mode:
authorfunctionpointersuss <joshua@joshuayun.com>2023-12-23 10:23:39 +0800
committerfunctionpointersuss <joshua@joshuayun.com>2023-12-23 10:23:39 +0800
commit5b04327dfa7a3005819045c9cc19e558e86d59d5 (patch)
tree7cc3ae2e9d5ed5129fcf0bc85c3d2fb600594489 /multiplier/tb_multiplier.cpp
parentc2f4f7dad93d68d2757b86ff28c1058982c22da5 (diff)
downloadriscv-processor-5b04327dfa7a3005819045c9cc19e558e86d59d5.tar.gz
renamed to sv
Diffstat (limited to 'multiplier/tb_multiplier.cpp')
-rw-r--r--multiplier/tb_multiplier.cpp93
1 files changed, 0 insertions, 93 deletions
diff --git a/multiplier/tb_multiplier.cpp b/multiplier/tb_multiplier.cpp
deleted file mode 100644
index 040df80..0000000
--- a/multiplier/tb_multiplier.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-#include <iostream>
-#include <iomanip>
-#include <bitset>
-#include <cstdint>
-
-#include "Vmultiplier.h"
-#include "verilated.h"
-
-#define BITWIDTH 32
-
-int main(int argc, char** argv, char** env) {
-
- if (false && argc && argv && env) {}
-
- Verilated::mkdir("logs");
- VerilatedContext* contextp = new VerilatedContext;
-
- contextp->debug(0);
- contextp->randReset(2);
- contextp->traceEverOn(true);
- contextp->commandArgs(argc, argv);
-
- Vmultiplier* dut = new Vmultiplier{contextp};
-
- uint32_t testsize = 0x1000;
-
- for (int i = 0; i < testsize; i++) {
- for (int j = 0; j < testsize; j++) {
- dut->a = (uint32_t) i;
- dut->b = (uint32_t) j;
- unsigned int answer = (unsigned int) (i * j);
-
- dut->eval();
- if (answer != dut->c) {
- std::bitset<BITWIDTH> in1(dut->a);
- std::bitset<BITWIDTH> in2(dut->b);
- std::bitset<BITWIDTH*2> expected(answer);
- std::bitset<BITWIDTH*2> actual(dut->c);
- std::cout << "Inputs: 1: " << in1 << " 2: " << in2 << '\n';
- std::cout << "Expected: " << expected << '\n';
- std::cout << "Actual: " << actual << '\n';
- return -1;
- }
- }
- }
-
-
- std::cout << "LOWER HALF PASSED\n";
-
- uint64_t top = 1;
- for (int i = 1; i < BITWIDTH; i++) {
- top <<= 1;
- top |= 1;
- }
- uint64_t bottom = top - testsize;
-
- for (uint64_t i = bottom; i < top; i++) {
- for (uint64_t j = bottom; j < top; j++) {
-
- dut->a = (uint32_t) i;
- dut->b = (uint32_t) j;
-
- uint64_t answer = i * j;
-
- dut->eval();
- if (answer != dut->c) {
- std::bitset<BITWIDTH> in1(dut->a);
- std::bitset<BITWIDTH> in2(dut->b);
- std::bitset<BITWIDTH*2> expected(answer);
- std::bitset<BITWIDTH*2> actual(dut->c);
- std::cout << "In 1: " << in1 << '\n';
- std::cout << "In 2: " << in2 << '\n';
- std::cout << "Expected: " << expected << '\n';
- std::cout << "Actual: " << actual << '\n';
-
- std::cout << "In 1: " << std::hex << (uint32_t) dut->a << '\n';
- std::cout << "In 2: " << std::hex << (uint32_t) dut->b << '\n';
- std::cout << "Expected: " << std::hex << (uint64_t) answer << '\n';
- std::cout << "Actual: " << std::hex << (uint64_t) dut->c << '\n';
- return -1;
- }
- }
- }
-
- std::cout << "UPPER HALF PASSED\n";
-
-
- std::cout << "Test Passed for " << BITWIDTH << " bit multiplier\n";
-
- delete dut;
- delete contextp;
- return 0;
-}