如何根据模块参数计算生成循环控制值?

问题描述 投票:0回答:1

我有一个带有整数参数的模块。该参数控制生成循环。当参数值为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

那么,如何根据模块参数计算生成控制值?

verilog
1个回答
0
投票

试试这个:

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
© www.soinside.com 2019 - 2024. All rights reserved.