我有一个带有整数参数的模块。该参数控制生成循环。当参数值为0时则不能使用,必须替换为1。我尝试使用函数,但该函数只能初始化一个变量,无法用于generate循环的控制。这是我的示例代码,它给出了带有生成指令的代码行的错误消息“无法绑定参数‘number’”:
module test
#(parameter
g_latency = 8
)
;
function integer get_number;
begin
if (g_latency==0) begin
get_number = 1;
end else begin
get_number = g_latency;
end
end
endfunction
genvar i;
integer number;
initial begin
number = get_number;
end
generate for (i=0; i<=number-1; i=i+1)
begin: step_g
// comment
end
endgenerate
endmodule
那么,如何根据模块参数计算生成控制值?
试试这个:
module test
#(parameter
g_latency = 8
)
;
function integer get_number;
begin
if (g_latency==0) begin
get_number = 1;
end else begin
get_number = g_latency;
end
end
endfunction
genvar i;
integer number;
// initial begin
// number = get_number;
// end
generate for (i=0; i<= get_number() - 1; i=i+1)
begin: step_g
// comment
end
endgenerate
endmodule