131 lines
2.9 KiB
Coq
131 lines
2.9 KiB
Coq
|
|
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
|