我有这个代码片段。这是一个标准的实例化,但是为什么要使用gen_srl16?
我一直认为SRL16E srl16e (...就足够了。
genvar i;
generate
for (i=0;i<WIDTH;i=i+1)
begin :
gen_srl16
SRL16E srl16e(
.Q(dataout[i]),
.A0(a[0]),.A1(a[1]),.A2(a[2]),.A3(a[3]),
.CE(write),.CLK(clk),.D(datain[i])); // CE -clock enable
end
endgenerate发布于 2015-08-18 22:40:05
在这种情况下,gen_srl16只是一个generate for-loop的名称。它与子模块实例化无关。
遵循Verilog规范(IEEE Std 1800-2012,ch.27.4):
循环中的生成块生成构造可以是命名的或未命名的(...) 如果生成块是命名的,它是生成块实例数组的声明。此数组中的索引值是genvar在细化过程中采用的值。这可以是一个稀疏数组,因为genvar值不必形成一个连续的整数范围。即使循环生成方案没有生成generate块的实例,也会认为该数组已声明。
https://stackoverflow.com/questions/32070991
复制相似问题