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

Nar*_*mha 0 verilog system-verilog

有人建议我如何获取不带“。”的实例化名称。如“ genblk1.name”,如果我使用generate for循环来创建更多模块实例。

我想要类似addr_1,addr_2的实例化名称(addr我的模块名称)

Tud*_*imi 5

您总会得到一个“。” 当您实例化内部模块时会生成块。这是因为每个generate块都会创建一个新的层次结构。第一个字符串是generate块的名称,而第二个字符串是实例的名称。您唯一可以做的就是控制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
Run Code Online (Sandbox Code Playgroud)

所述if生成块将创建“if_gen_block.inst”,而for根块将创建“loop_gen_block [0] .inst”,“loop_gen_block [1] .inst”等此行为是在SystemVerilog的LRM指定。