sv2v/test/core/inside_exhaust.vh

47 lines
1.2 KiB
Systemverilog

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