iverilog/ivtest/ivltests/pr1704726b.v

131 lines
2.9 KiB
Coq
Raw Normal View History

module top;
reg pass = 1'b1;
parameter parm = 1;
/***********
* Check generate tasks.
***********/
// Only one is created.
generate
if (parm) begin: name_ti
task name_task;
$display("OK in task from scope name_ti");
endtask
end else begin: name_ti
task name_task;
begin
$display("FAILED in task from scope name_ti");
pass = 1'b0;
end
endtask
end
endgenerate
// Again only one is created.
generate
case (parm)
1: begin: name_tc
task name_task;
$display("OK in task from scope name_tc");
endtask
end
default: begin: name_tc
task name_task;
begin
$display("FAILED in task from scope name_tc");
pass = 1'b0;
end
endtask
end
endcase
endgenerate
// Two are created, but they are in a different scope.
genvar lpt;
generate
for (lpt = 0; lpt < 2; lpt = lpt + 1) begin: name_tf
task name_task;
$display("OK in task from scope name_tf[%0d]", lpt);
endtask
end
endgenerate
/***********
* Check functions.
***********/
// Only one is created.
generate
if (parm) begin: name_fi
function name_func;
input in;
name_func = ~in;
endfunction
end else begin: name_fi
function name_func;
input in;
name_func = in;
endfunction
end
endgenerate
// Again only one is created.
generate
case (parm)
1: begin: name_fc
function name_func;
input in;
name_func = ~in;
endfunction
end
default: begin: name_fc
function name_func;
input in;
name_func = in;
endfunction
end
endcase
endgenerate
// Two are created, but they are in a different scope.
genvar lpf;
generate
for (lpf = 0; lpf < 2; lpf = lpf + 1) begin: name_ff
function name_func;
input in;
name_func = (lpf % 2) ? in : ~in ;
endfunction
end
endgenerate
initial begin
name_ti.name_task;
name_tc.name_task;
name_tf[0].name_task;
name_tf[1].name_task;
if (name_fi.name_func(1'b1) !== 1'b0) begin
$display("FAILED in function from scope name_fi");
pass = 1'b0;
end else $display("OK in function from scope name_fi");
if (name_fc.name_func(1'b1) !== 1'b0) begin
$display("FAILED in function from scope name_fc");
pass = 1'b0;
end else $display("OK in function from scope name_fc");
if (name_ff[0].name_func(1'b1) !== 1'b0) begin
$display("FAILED in function from scope name_ff[0]");
pass = 1'b0;
end else $display("OK in function from scope name_ff[0]");
if (name_ff[1].name_func(1'b1) !== 1'b1) begin
$display("FAILED in function from scope name_ff[1]");
pass = 1'b0;
end else $display("OK in function from scope name_ff[1]");
if (pass) $display("PASSED");
end
endmodule