module testbench; reg clk; initial begin // $dumpfile("testbench.vcd"); // $dumpvars(0, testbench); #0 clk = 0; repeat (10000) begin #5 clk = 1; #5 clk = 0; end $display("OKAY"); end wire [3:0] D; reg [1:0] S = 0; reg [3:0] control = 0; always @(posedge clk) case(S) 2'b00: begin end 2'b01: control <= 4'h2; 2'b10: control <= 4'h4; 2'b11: control <= 4'h8; default: control <= 4'h0; endcase top uut ( .clk (clk ), .I (S ), .O (D ) ); always @(posedge clk) begin //#3; S <= S + 1; end check_output out_test( .A(control), .B(D)); endmodule module check_output(input [3:0] A, input [3:0] B); always @(*) begin #1; if (A !== B) begin $display("ERROR: ASSERTION FAILED in %m:",$time," ",A," ",B); $stop; end end endmodule