summaryrefslogtreecommitdiff
path: root/nandgame/instruction_decode_tb.sv
diff options
context:
space:
mode:
Diffstat (limited to 'nandgame/instruction_decode_tb.sv')
-rw-r--r--nandgame/instruction_decode_tb.sv47
1 files changed, 47 insertions, 0 deletions
diff --git a/nandgame/instruction_decode_tb.sv b/nandgame/instruction_decode_tb.sv
new file mode 100644
index 0000000..8f5cfc6
--- /dev/null
+++ b/nandgame/instruction_decode_tb.sv
@@ -0,0 +1,47 @@
+`timescale 1us/1us
+
+module instruction_decode_tb;
+
+logic [15:0] tst_instruction, tst_result;
+logic tst_destination_A, tst_destination_D, tst_destination_pA;
+logic [15:0] tst_data_A, tst_data_D, tst_data_pA;
+logic tst_should_jump;
+
+instruction_decode uut (
+ .instruction_in(tst_instruction),
+ .dst_A_out(tst_destination_A),
+ .dst_D_out(tst_destination_D),
+ .dst_pA_out(tst_destination_pA),
+ .A_in(tst_data_A),
+ .D_in(tst_data_D),
+ .pA_in(tst_data_pA),
+ .result_out(tst_result),
+ .do_jump_out(tst_should_jump)
+);
+
+string filename;
+initial begin
+`ifdef DUMP_FILE_NAME
+ filename=`DUMP_FILE_NAME;
+`else
+ filename="instruction_decode.lxt2";
+`endif
+ $dumpfile(filename); $dumpvars();
+end
+
+initial begin
+ #10
+ tst_instruction = 0;
+ tst_data_A = 0;
+ tst_data_D = 0;
+ tst_data_pA = 0;
+ #1
+ assert(tst_result==0);
+ assert(tst_destination_A == 0);
+ assert(tst_destination_D == 0);
+ assert(tst_destination_pA == 0);
+ assert(tst_should_jump == 0);
+ $finish();
+end
+
+endmodule