mirror of
https://github.com/zachjs/sv2v.git
synced 2026-09-03 08:33:46 +02:00
support case inside with basic side effects
This commit is contained in:
@@ -1,5 +1,11 @@
|
||||
module top;
|
||||
|
||||
function integer sideEffect;
|
||||
input integer inp;
|
||||
$display("sideEffect(%b)", inp);
|
||||
sideEffect = inp;
|
||||
endfunction
|
||||
|
||||
initial
|
||||
for (logic [1:0] a = 0; a < 3; a++) begin
|
||||
if (a inside {2'b01, 2'b00})
|
||||
@@ -13,6 +19,9 @@ module top;
|
||||
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});
|
||||
// TODO: Add support for inside expressions with side effects.
|
||||
// initial $display("F", sideEffect(3'bz11) inside {3'b?11});
|
||||
// initial $display("G", 3'bz11 inside {sideEffect(3'b?11)});
|
||||
|
||||
generate
|
||||
begin : patterns
|
||||
@@ -53,7 +62,7 @@ module top;
|
||||
|
||||
function integer test3;
|
||||
input integer inp;
|
||||
case (inp) inside
|
||||
case (1 + sideEffect(inp)) inside
|
||||
[16:23]: return 1;
|
||||
[32:47]: return 2;
|
||||
default: return 0;
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
module top;
|
||||
|
||||
function integer sideEffect;
|
||||
input integer inp;
|
||||
begin
|
||||
$display("sideEffect(%b)", inp);
|
||||
sideEffect = inp;
|
||||
end
|
||||
endfunction
|
||||
|
||||
initial begin : foo
|
||||
reg [1:0] a;
|
||||
for (a = 0; a < 3; a++) begin
|
||||
@@ -15,6 +23,14 @@ module top;
|
||||
initial $display("C", 1'bx);
|
||||
initial $display("D", 1'bx);
|
||||
initial $display("E", 1'bx);
|
||||
// TODO: Add support for inside expressions with side effects.
|
||||
// initial begin : bar
|
||||
// integer tmp;
|
||||
// tmp = sideEffect(3'bz11);
|
||||
// $display("F", 1'b1);
|
||||
// tmp = sideEffect(3'b?11);
|
||||
// $display("G", 1'b1);
|
||||
// end
|
||||
|
||||
function test1;
|
||||
input [2:0] inp;
|
||||
@@ -54,6 +70,7 @@ module top;
|
||||
function [0:31] test3;
|
||||
input integer inp;
|
||||
begin
|
||||
inp = 1 + sideEffect(inp);
|
||||
if (16 <= inp && inp <= 23) test3 = 1;
|
||||
else if (32 <= inp && inp <= 47) test3 = 2;
|
||||
else if (inp == 0 || (60 <= inp && inp <= 61) || inp == 4) test3 = 3;
|
||||
|
||||
Reference in New Issue
Block a user