summaryrefslogtreecommitdiff
path: root/nandgame/logic_unit_tb.sv
diff options
context:
space:
mode:
authoruvok2026-01-01 15:32:54 +0100
committeruvok2026-01-01 15:32:54 +0100
commit981f86a5b3ea6a05925c807bac26986e0c876dcf (patch)
treed7caeb81fdd8d362ca6e4af79fa4c15e8f67d4dd /nandgame/logic_unit_tb.sv
parent4792fb03e5d39da03633e71ff4b5375709bfb1d5 (diff)
Add nandgame files
need/want systemverilog
Diffstat (limited to 'nandgame/logic_unit_tb.sv')
-rw-r--r--nandgame/logic_unit_tb.sv58
1 files changed, 58 insertions, 0 deletions
diff --git a/nandgame/logic_unit_tb.sv b/nandgame/logic_unit_tb.sv
new file mode 100644
index 0000000..c1495c3
--- /dev/null
+++ b/nandgame/logic_unit_tb.sv
@@ -0,0 +1,58 @@
+`timescale 1us/1us
+
+`include "nandgame_types.v"
+
+module logic_unit_tb (
+);
+
+logic [15:0] in1;
+logic [15:0] in2;
+LogicCode opcode;
+logic [15:0] result;
+
+logic_unit uut (
+ .X(in1),
+ .Y(in2),
+ .operation(opcode),
+ .RES(result)
+);
+
+string filename;
+initial begin
+`ifdef DUMP_FILE_NAME
+ filename=`DUMP_FILE_NAME;
+`else
+ filename="logic_unit.lxt2";
+`endif
+ $dumpfile(filename); $dumpvars();
+
+end
+
+initial begin
+ in1 = 16'b1010;
+ in2 = 16'b1100;
+ opcode = LOGIC_AND;
+ #1
+ assert(result == 16'b1000);
+ #1
+ in1 = 16'b1010;
+ in2 = 16'b1100;
+ opcode = LOGIC_OR;
+ #1
+ assert(result == 16'b1110);
+ #1
+ in1 = 16'b1010;
+ in2 = 16'b1100;
+ opcode = LOGIC_XOR;
+ #1
+ assert(result == 16'b0110);
+ #1
+ in1 = 16'b1010101010101010;
+ opcode = LOGIC_NEGT;
+ #1
+ assert(result == 16'b0101010101010101);
+ #1
+ $finish();
+end
+
+endmodule