为什么" gen_srl16"用于标准" SRL16E"实例?

时间:2015-08-18 11:21:10

标签: verilog instantiation

我已经获得了此代码片段。它是标准实例,但为什么使用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

1 个答案:

答案 0 :(得分:2)

在这种情况下,gen_srl16只是generate for-loop的名称。它与子模块实例化无关。

遵循Verilog规范(IEEE Std 1800-2012,ch.27.4):

  

在循环中生成块生成构造可以命名或未命名(...)如果生成块被命名,则它是生成块实例数组的声明。此数组中的索引值是精化过程中genvar假定的值。这可以是稀疏数组,因为genvar值不必形成连续的整数范围。即使循环生成方案没有生成生成块的实例,也认为该数组已被声明。