【发布时间】:2014-06-27 14:32:48
【问题描述】:
在调用函数时,该函数是否可以获取调用位置的层次范围?
让我举个例子。我有以下代码:
package some_pkg;
function void some_function();
$display("%m");
endfunction
endpackage
module top;
import some_pkg::*;
initial
some_function();
endmodule
运行时会显示“some_pkg::some_function”。有什么办法可以让功能显示“顶部”?或者如果我有一些其他的子模块从中调用它,它会显示“top.submodule”吗?
【问题讨论】:
-
我认为您可以在不借助模拟器特定功能的情况下通过 VPI 在 C 中实现您的功能来做到这一点 - 这是一种选择吗?
-
是的,但我想避免编译任何额外的 C 代码。无论如何,我在模拟器系统功能($ nc_force/$ signal_force)之上构建了一个层来处理白盒信号,我也不想实现这些。无论如何,代码都会有很多`ifdefs。
-
您是否找到任何适用于 VCS 的解决方案?
-
@Ari 我不使用 VCS。
-
我今天在使用
"%m"甚至svGetScope()使用 DPI-C 时遇到了完全相同的问题。如果有兴趣,请参阅下面的my comment 了解详细信息,如果您最终能够将当前范围作为字符串检索,请告诉我。谢谢!
标签: system-verilog