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 [7:0] data_a = 0; reg [7:0] data_b = 0; reg [5:0] addr_a = 0; reg [5:0] addr_b = 0; reg we_a = 0; reg we_b = 1; reg re_a = 1; reg re_b = 1; wire [7:0] q_a,q_b; reg mem_init = 0; top uut ( .data_a(data_a), .data_b(data_b), .addr_a(addr_a), .addr_b(addr_b), .we_a(we_a), .we_b(we_b), .re_a(re_a), .re_b(re_b), .clk(clk), .q_a(q_a), .q_b(q_b) ); always @(posedge clk) begin #3; data_a <= data_a + 17; data_b <= data_b + 5; addr_a <= addr_a + 1; addr_b <= addr_b + 1; end always @(posedge addr_a) begin #10; if(addr_a > 6'h3E) mem_init <= 1; end always @(posedge clk) begin //#3; we_a <= !we_a; we_b <= !we_b; end uut_mem_checker port_a_test(.clk(clk), .init(mem_init), .en(!we_a), .A(q_a)); uut_mem_checker port_b_test(.clk(clk), .init(mem_init), .en(!we_b), .A(q_b)); endmodule module uut_mem_checker(input clk, input init, input en, input [7:0] A); always @(posedge clk) begin #1; if (en == 1 & init == 1 & A === 8'bXXXXXXXX) begin $display("ERROR: ASSERTION FAILED in %m:",$time," ",A); $stop; end end endmodule