| 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 |
| |
| |
| reg [1:0] adr = 0; |
| reg [1:0] din = 0; |
| wire [1:0] q; |
| reg mem_init = 0; |
| |
| always @(posedge clk) begin |
| #3; |
| din <= din + 1; |
| adr <= adr + 1; |
| end |
| |
| always @(posedge adr) begin |
| #10; |
| if(adr == 2'b11) |
| mem_init <= 1; |
| end |
| |
| top uut (adr,clk,din,q); |
| |
| uut_mem_checker port_b_test(.clk(clk), .init(mem_init), .A(q)); |
| |
| endmodule |
| |
| module uut_mem_checker(input clk, input init, input [1:0] A); |
| always @(posedge clk) |
| begin |
| #1; |
| if (init == 1 & A === 2'bXX) |
| begin |
| $display("ERROR: ASSERTION FAILED in %m:",$time," ",A); |
| $stop; |
| end |
| end |
| endmodule |