Files
sv2v/test/core/enum_method.sv

65 lines
1.8 KiB
Systemverilog

module top;
localparam type T = enum integer unsigned {
A = 5,
B[3],
C,
D = 100,
E
};
T x = x.first;
initial begin
T y;
localparam A = 0, B = 0, B0 = 0, B1 = 0, B2 = 0, C = 0, D = 0, E = 0;
$display("first = %0d", x.first);
$display("last = %0d", x.last);
$display("num = %0d", x.num);
while (1) begin
$display("%2s = %0d", x.name, x);
if (x == x.last)
break;
x = x.next;
end
while (1) begin
$display("%2s = %0d", x.name(), x);
if (x == x.first())
break;
x = x.prev();
end
while (1) begin
$display("%2s = %0d", x.name, x);
if (x == x.last.prev)
break;
x = x.next(2);
end
$display("name = %2s", y.name);
$display("next = %0d", y.next);
$display("prev = %0d", y.prev);
$display("next(2) = %0d", y.next(2));
$display("prev(2) = %0d", y.prev(2));
end
localparam type U = enum byte {
X, Y, Z
};
initial begin
localparam X = 0, Y = 0, Z = 0;
localparam U x = x.first;
localparam U y [2] = '{y[0].first, y[1].last};
$display("first = %b %b", x.first, y[0].first);
$display("last = %b %b", x.last, y[0].last);
$display("num = %b %b", x.num, y[0].num);
for (integer i = -3; i <= 3; i += 1) begin
$display("next(%0d) = %b %b", i, x.next(i), y[0].next(i));
$display("prev(%0d) = %b %b", i, x.prev(i), y[0].prev(i));
end
$display("next(%0d) = %b %b", 4, x.next(.N(4)), y[0].next(.N(4)));
$display("prev(%0d) = %b %b", 4, x.prev(.N(4)), y[0].prev(.N(4)));
end
endmodule