iverilog/ivtest/ivltests/pr2350934b.v

63 lines
1.3 KiB
Verilog

module test ();
parameter param = 3;
reg [2:0] dummy;
initial dummy = block.f(0);
generate
case (param)
1, 2: if (param==1) begin : block
function [2:0] f;
input i;
begin
$display ("if param==1");
f = param;
end
endfunction
end else begin : block
function [2:0] f;
input i;
begin
$display ("else if param==2");
f = param;
end
endfunction
end
4: begin : block
function [2:0] f;
input i;
begin
$display ("if param==4");
f = param;
end
endfunction // f
end
endcase
endgenerate
endmodule
module top ();
test #(1) a();
test #(2) b();
test #(4) c();
initial begin
#1 if (a.dummy !== 1) begin
$display("FAILED -- a.dummy = %d", a.dummy);
$finish;
end
if (b.dummy !== 2) begin
$display("FAILED -- b.dummy = %d", b.dummy);
$finish;
end
if (c.dummy !== 4) begin
$display("FAILED -- c.dummy = %d", c.dummy);
$finish;
end
$display("PASSED");
end // initial begin
endmodule