`timescale 1ns/1ns module Vrmul8x8_tb(); reg [7:0] X, Y; wire [15:0] P; Vrmul8x8s UUT ( .X(X), .Y(Y), .P(P) ); // Instantiate the UUT task checkP; input i, j, P; integer i, j, prod; reg [15:0] P; begin prod = i*j; if (P !== prod) begin $display($time," Error: i=%d, j=%d, expected %d (%16b), got %d (%16b)", i, j, prod, prod, P, P); $stop(1); end; end endtask initial begin : TB // Start testing at time 0 integer i, j; for ( i=0; i<=255; i=i+1 ) for ( j=0; j<=255; j=j+1 ) begin X = i; Y = j; #10; // wait 10 ns, then check result checkP (i, j, P); end $stop(1); // end test end endmodule