Я хочу использовать параметр модуля в качестве параметра размера вектора, который регистрируется, и я пытаюсь следующий код:
package Test;
import Vector :: *;
(* synthesize *)
module mkTest #(
parameter UInt#(32) qsize
) (Empty);
Vector#(qsize,Reg#(Bit#(8))) queue <- replicateM (mkReg (0));
endmodule
endpackage
Но при компиляции этого модуля с помощью bs c я получаю следующее сообщение об ошибке:
Verilog generation
bsc -verilog -remove-dollar Test.bsv
Error: "Test.bsv", line 9, column 11: (T0008)
Unbound type variable `qsize'
bs c версия:
Bluespec Compiler (build e55aa23)
Если я не использую регистры как тип векторных элементов, все в порядке. Следующий код не выдаст ошибок:
package Test;
import Vector :: *;
(* synthesize *)
module mkTest #(
parameter UInt#(32) qsize
) (Empty);
Vector#(qsize,Bit#(8)) queue = replicate(0);
endmodule
endpackage
И я не могу понять, почему qsize
является Unbound
, поскольку он явно объявлен как параметр? Если я сделал что-то не так, не могли бы вы мне помочь и объяснить, как правильно сделать параметризованный размер Vector of Regs?