module lab3_tb(); // constant declarations localparam DATA_WIDTH = 8; // one reg type var for each input of the circuit reg clk; reg rst_n; reg use_seed; reg [DATA_WIDTH-1:0] data_i; reg valid_i; // one wire type var for the outputs wire [DATA_WIDTH+1:0] data_o; wire valid_o; lab3 lab3 ( .clk (clk), .rst_n (rst_n), .use_seed (use_seed), .data_i (data_i), .valid_i (valid_i), .data_o (data_o), .valid_o (valid_o) ); initial begin clk = 0; rst_n = 1; use_seed = 0; data_i = 0; valid_i = 0; end always begin clk = ~clk; #50; end task waitalot; begin @(negedge clk); @(negedge clk); @(negedge clk); @(negedge clk); @(negedge clk); @(negedge clk); @(negedge clk); @(negedge clk); @(negedge clk); end endtask initial begin waitalot; @(negedge clk); rst_n = 0; @(negedge clk); rst_n = 1; valid_i = 1'b1; data_i = 999; waitalot; // at some point in here there is going to be an overflow @(negedge clk); rst_n = 0; // let's start over use_seed = 1; @(negedge clk); rst_n = 1; valid_i = 1'b1; data_i = 123; waitalot; $finish(); end endmodule