function [WIDTH-1:0] incr; input [WIDTH-1:0] inp; reg carry; integer idx; begin carry = 1; idx = 0; while (carry) begin carry = 0; if (inp[idx] === 1'b0) inp[idx] = 1'b1; else if (inp[idx] === 1'b1) inp[idx] = 1'bx; else if (inp[idx] === 1'bx) inp[idx] = 1'bz; else begin inp[idx] = 1'b0; idx = idx + 1; carry = idx < WIDTH; end end incr = inp; end endfunction reg [WIDTH-1:0] a, b, c; initial begin : x integer i, j, k; a = 0; b = 0; c = 0; for (i = 0; i < 4**WIDTH; ++i) begin for (j = 0; j < 4**WIDTH; ++j) begin $display("%b ==? %b = 1'b%b", a, b, test_weq(a, b)); $display("%b !=? %b = 1'b%b", a, b, test_wne(a, b)); for (k = 0; k < 4**WIDTH; ++k) begin $display("%b inside {%b, %b} = 1'b%b", a, b, c, test_inside(a, b, c)); c = incr(c); end b = incr(b); end a = incr(a); end end