summaryrefslogtreecommitdiff
path: root/nandgame/arith_unit_tb.sv
diff options
context:
space:
mode:
Diffstat (limited to 'nandgame/arith_unit_tb.sv')
-rw-r--r--nandgame/arith_unit_tb.sv71
1 files changed, 71 insertions, 0 deletions
diff --git a/nandgame/arith_unit_tb.sv b/nandgame/arith_unit_tb.sv
new file mode 100644
index 0000000..054e484
--- /dev/null
+++ b/nandgame/arith_unit_tb.sv
@@ -0,0 +1,71 @@
+`timescale 1us/1us
+
+// `include "nandgame_types.v"
+
+module arith_unit_tb (
+);
+
+logic [15:0] in1;
+logic [15:0] in2;
+ArithCode opcode;
+logic [15:0] result;
+
+ arith_unit uut (
+ .X(in1),
+ .Y(in2),
+ .operation(opcode),
+ .RES(result)
+);
+
+string filename;
+initial begin
+`ifdef DUMP_FILE_NAME
+ filename=`DUMP_FILE_NAME;
+`else
+ filename=" arith_unit.lxt2";
+`endif
+ $dumpfile(filename); $dumpvars();
+
+end
+
+initial begin
+ in1 = 13;
+ in2 = 17;
+ opcode = ARITH_PLUS;
+ #1
+ assert(result == 30);
+ #1
+ in1 = 12;
+ in2 = 4;
+ opcode = ARITH_MINUS;
+ #1
+ assert(result == 8);
+ #1
+ in1 = 12;
+ in2 = 13;
+ opcode = ARITH_MINUS;
+ #1
+ assert(result == 16'hffff);
+ #1
+ in1 = 13;
+ in2 = 17;
+ opcode = ARITH_INC;
+ #1
+ assert(result == 14);
+ #1
+ in1 = 13;
+ in2 = 17;
+ opcode = ARITH_DEC;
+ #1
+ assert(result == 12);
+ #1
+ in1 = 0;
+ in2 = 17;
+ opcode = ARITH_DEC;
+ #1
+ assert(result == 16'hffff);
+ #1
+ $finish();
+end
+
+endmodule