Я недавно переключился с VHDL на SystemVerilog, и я конвертирую некоторые из моих кодов. Я хочу создать массив локальных параметров на основе 3 параметров SZ, L, макс.
L%7D%7B2%7D%5Cright%20%5Crfloor%5C%3B%5C%3B%5C%3B%5Ctext%7Bwhere%7D%5C%3B%5C%3Bn_%7B0%7D%3D%5Ctext%7BSZ%7D%2C%20i%3C%5Ctext%7BMAX%7D)
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
Я пытался использовать функцию для генерации локальных параметров, но получаю ошибку это назначение элемента в функции не является постоянным. У меня никогда не было этой проблемы в VHDL.
Единственный другой вариант, который я могу придумать, - создать параметры внутри for, но как бы я сослался на начальное значение? Есть ли другое решение?
Я использую симулятор Verilator, но я также хочу, чтобы дизайн работал в Xilinx Vivado.
Редактировать: я не хочу генерировать параметры из внешнего сценарий, потому что я теряю способность использовать способность Vivado запускать несколько процессов синтеза / реализации в одном проекте с разными параметрами. Это было то, что я делал в VHDL.