`timescale 1 ns/10 ps // time-unit = 1 ns, precision = 10 ps module sub_signed_tb; reg signed [7:0] a; reg signed [7:0] b; wire signed [8:0] o; integer k, j; localparam period = 20; `dut dut(a, b, o); //.input_a(a), .input_b(b), .cgp_circuit_out(o)); always begin for(k = -127; k < 128; k = k+1) begin for(j = -127; j < 128; j = j+1) begin assign a = k; assign b = j; #period; //$assert(b == 0); if ( k - j != o) begin $display("Invalid output: %d - %d = %d", a, b, o); end end; end; $finish; end endmodule