module testbench; reg clk; initial begin // $dumpfile("testbench.vcd"); // $dumpvars(0, testbench); #5 clk = 0; repeat (10000) begin #5 clk = 1; #5 clk = 0; end $display("OKAY"); end reg a = 0; reg b = 0; reg rst; reg en; wire s; wire bs; wire f; top uut ( .clk(clk), .rst(rst), .en(en), .a(a), .b(b), .s(s), .bs(bs), .f(f)); always @(posedge clk) begin #2 a <= ~a; end always @(posedge clk) begin #4 b <= ~b; end initial begin en <= 1; rst <= 1; #5 rst <= 0; end assert_expr s_test(.clk(clk), .A(s)); assert_expr bs_test(.clk(clk), .A(bs)); assert_expr f_test(.clk(clk), .A(f)); endmodule module assert_expr(input clk, input A); always @(posedge clk) begin //#1; if (A == 1'bZ) begin $display("ERROR: ASSERTION FAILED in %m:",$time," ",A); $stop; end end endmodule