mirror of https://github.com/zachjs/sv2v.git
64 lines
1.9 KiB
Systemverilog
64 lines
1.9 KiB
Systemverilog
module top;
|
|
|
|
initial
|
|
for (logic [1:0] a = 0; a < 3; a++) begin
|
|
if (a inside {2'b01, 2'b00})
|
|
$display("fizz");
|
|
if (a inside {2'b10})
|
|
$display("buzz");
|
|
end
|
|
|
|
initial $display("A", 3'bz11 inside {3'b?01});
|
|
initial $display("B", 3'bz11 inside {3'b1?1});
|
|
initial $display("C", 3'bz11 inside {3'b011});
|
|
initial $display("D", 3'bz11 inside {3'b1?1, 3'b011});
|
|
initial $display("E", 3'bz11 inside {3'b?01, 3'b011});
|
|
|
|
function test1;
|
|
input logic [2:0] inp;
|
|
return inp inside {3'b1?1};
|
|
endfunction
|
|
initial begin
|
|
// should match
|
|
$display("test1: %b %b", 3'b101, test1(3'b101));
|
|
$display("test1: %b %b", 3'b111, test1(3'b111));
|
|
$display("test1: %b %b", 3'b1x1, test1(3'b1x1));
|
|
$display("test1: %b %b", 3'b1z1, test1(3'b1z1));
|
|
// shouldn't match
|
|
$display("test1: %b %b", 3'b001, test1(3'b001));
|
|
$display("test1: %b %b", 3'b011, test1(3'b011));
|
|
$display("test1: %b %b", 3'b0x1, test1(3'b0x1));
|
|
$display("test1: %b %b", 3'b0z1, test1(3'b0z1));
|
|
end
|
|
|
|
integer arr [] = { 32'd60, 32'd61, 32'd63 };
|
|
function test2;
|
|
input integer inp;
|
|
// TODO: Add support for array value ranges.
|
|
test2 = 0;
|
|
for (integer i = 0; i < 3; ++i)
|
|
if (inp == arr[i])
|
|
return 1'b1;
|
|
return test2 || inp inside { [16:23], [32:47] };
|
|
endfunction
|
|
initial begin
|
|
for (integer i = 0; i < 64; ++i)
|
|
$display("test2(%02d) = %b", i, test2(i));
|
|
end
|
|
|
|
function integer test3;
|
|
input integer inp;
|
|
case (inp) inside
|
|
[16:23]: return 1;
|
|
[32:47]: return 2;
|
|
default: return 0;
|
|
0, [60:61], 4: return 3;
|
|
endcase
|
|
endfunction
|
|
initial begin
|
|
for (integer i = 0; i < 64; ++i)
|
|
$display("test3(%02d) = %b", i, test3(i));
|
|
end
|
|
|
|
endmodule
|