我最近从 VHDL 切换到 SystemVerilog,并且正在转换我的一些代码。我想根据 3 个参数 SZ、L、max 生成一个局部参数数组。
module test #(
parameter int SZ = 1024,
parameter int L = 35,
parameter int MAX = 4
)()
//...
localparam int n[MAX:0] = ;//...
for(genvar i = 0; i < max; i++) begin: gg
//n[i] and n[i+1] will be used here
//There is a second generate loop here that uses n[i+1] and therefore n[i+1] has to be parameter.
end
我尝试使用函数来生成 localparams,但我得到一个错误,即函数中的元素分配不是恒定的。我在 VHDL 中从未遇到过这个问题。
我能想到的唯一其他选择是在 for generate 中创建参数,但我将如何引用初始值?还有其他解决方案吗?
我使用的模拟器是 Verilator,但我也希望该设计在 Xilinx Vivado 中工作。
编辑:我不想从外部脚本生成参数,因为我无法使用 Vivado 在具有不同参数的同一项目中运行多个综合/实现的能力。这就是我以前在 VHDL 中所做的。