| 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 |