有没有办法获取实例化 Verilog 模块的名称?
Is there a way to get the name a Verilog module was instantiated with?
我想在 Verilog 中做一些模拟调试,并想将 $display
添加到某些模块中。但是,我希望能够跟踪单个模块提供的输出。我希望能够获取实例化当前模块的名称以添加到 $display
.
例如:
module adder (...)
...
$display($magic_instance_name, " ", in0, " + ", in1);
...
adder memory_address (...);
adder fifo_nvals (...);
然后输出将如下所示:
memory_address 100 + 8
fifo_nvals 3 + 1
...
我可以这样做的一种方法是向每个模块添加一个 instance_name
参数。有没有更简单的方法?
您可以使用 %m
获取包含唯一实例名称的完整路径:
module tb;
adder memory_address ();
adder fifo_nvals ();
initial #5 $finish;
endmodule
module adder;
initial $display(" hello from ... %m");
endmodule
打印:
hello from ... tb.memory_address
hello from ... tb.fifo_nvals
我想在 Verilog 中做一些模拟调试,并想将 $display
添加到某些模块中。但是,我希望能够跟踪单个模块提供的输出。我希望能够获取实例化当前模块的名称以添加到 $display
.
例如:
module adder (...)
...
$display($magic_instance_name, " ", in0, " + ", in1);
...
adder memory_address (...);
adder fifo_nvals (...);
然后输出将如下所示:
memory_address 100 + 8
fifo_nvals 3 + 1
...
我可以这样做的一种方法是向每个模块添加一个 instance_name
参数。有没有更简单的方法?
您可以使用 %m
获取包含唯一实例名称的完整路径:
module tb;
adder memory_address ();
adder fifo_nvals ();
initial #5 $finish;
endmodule
module adder;
initial $display(" hello from ... %m");
endmodule
打印:
hello from ... tb.memory_address
hello from ... tb.fifo_nvals