我想使用模块参数作为 Vector 的大小参数,其中包含寄存器,我尝试下一个代码:
package Test;
import Vector :: *;
(* synthesize *)
module mkTest #(
parameter UInt#(32) qsize
) (Empty);
Vector#(qsize,Reg#(Bit#(8))) queue <- replicateM (mkReg (0));
endmodule
endpackage
但是用 bsc 编译这个模块我得到下一条错误消息:
Verilog generation
bsc -verilog -remove-dollar Test.bsv
Error: "Test.bsv", line 9, column 11: (T0008)
Unbound type variable `qsize'
bsc 版本:
Bluespec Compiler (build e55aa23)
如果我使用 not Registers 作为一种 Vector 元素,一切正常。下一个代码不会产生错误:
package Test;
import Vector :: *;
(* synthesize *)
module mkTest #(
parameter UInt#(32) qsize
) (Empty);
Vector#(qsize,Bit#(8)) queue = replicate(0);
endmodule
endpackage
我无法理解,为什么qsize
它Unbound
被明确声明为参数?如果我做错了什么,请你帮我解释一下,如何正确地制作 Regs 的参数化大小向量?