`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