`timescale 1us/1us module par_to_ser_tb ( ); logic clk_i; logic rst_i; logic data_valid_i; logic [7:0] dat_i; logic dat_o; par_to_ser uut ( .clk_i(clk_i), .rst_i(rst_i), .data_valid_i(data_valid_i), .dat_i(dat_i), .dat_o(dat_o), .dat_valid_o() ); string filename; initial begin `ifdef DUMP_FILE_NAME filename=`DUMP_FILE_NAME; `else filename="par_to_ser.lxt2"; `endif $dumpfile(filename); $dumpvars(); clk_i = 0; rst_i = 1'b1; data_valid_i = 1'b0; #1 rst_i = 1'b0; #1 rst_i = 1'b1; end always #10 clk_i = ~clk_i; bit sollbit = 1'b0; initial begin #13 @(negedge clk_i); for (integer i = 0; i < 255; i++) begin // clock data in dat_i = i; data_valid_i = 1'b1; @(negedge clk_i); data_valid_i = 1'b0; for (integer j = 0; j < 8; j++) begin sollbit = (i >> j) & 1; assert(dat_o == sollbit) else $error("Expected bit to be %d, but was %d", sollbit, dat_o); @(negedge clk_i); end repeat(2) @(negedge clk_i); end $finish(); end endmodule