简体   繁体   English

在verilog中在generate块下修改实例化名称

[英]instantiation name modification in verilog under generate block

Some body suggest me how to get the instantiation name without "." 有人建议我如何获取不带“。”的实例化名称。 like "genblk1.name" if i use generate for loop for creating more module instantiations. 如“ genblk1.name”,如果我使用generate for循环来创建更多模块实例。

I want instantiation names like addr_1,addr_2 (addr my module name) 我想要类似addr_1,addr_2的实例化名称(addr我的模块名称)

You'll always get a "." 您总会得到一个“。” when you instantiate modules inside generate blocks. 当您实例化内部模块时会生成块。 This is because every generate block creates a new level of hierarchy. 这是因为每个generate块都会创建一个新的层次结构。 The first string is the name of the generate block, while the second is the name of the instance. 第一个字符串是generate块的名称,而第二个字符串是实例的名称。 The only thing you can do is control the name of the generate block: 您唯一可以做的就是控制generate块的名称:

module some_module;
endmodule // some_module


module top;
  parameter a = 1;
  if (a) begin : if_gen_block
    some_module inst();
  end

  genvar i;
  for (i = 0; i < 5; i++) begin : loop_gen_block
    some_module inst();
  end
endmodule // top

The if generate block will create "if_gen_block.inst", whereas the for gen block will create 'loop_gen_block[0].inst', 'loop_gen_block[1].inst', etc. This behavior is specified in the SystemVerilog LRM. if生成块将创建“ if_gen_block.inst”,而for gen块将创建“ loop_gen_block [0] .inst”,“ loop_gen_block [1] .inst”等。此行为在SystemVerilog LRM中指定。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM