如何在系统verilog中运行时显示调用堆栈?

时间:2014-12-05 08:42:27

标签: system-verilog

目前我使用这种方式,当运行时错误发生时,vcs将打印调用堆栈。效率很低。还有更好的方法吗?

function void anyFunctionIWouldLikeToSeeCallStack();
uvm_object a;
// a == null
a.print();
endfunction;

4 个答案:

答案 0 :(得分:2)

Cadence incisive(ncsim)有一个可以调用的$ stacktrace系统任务。如果其他供应商也有类似的话,我不会感到惊讶。

答案 1 :(得分:1)

在VCS中

,它是$stack()

但它只有大约8个级别的堆栈,我不认为这是可配置的

答案 2 :(得分:0)

这是模拟器在设置断点时通常提供的东西。在达到某个断点后,您的模拟将停止,您将能够运行模拟器特定命令来打印调用堆栈,或者您将在某个GUI窗口中显示调用堆栈。

您必须在VCS文档中查找完全如何完成此操作。

答案 3 :(得分:0)

在 RivieraPro 中,命令是 $callstack()。您可以传递几个选项来配置输出。

查看文档: R-PRO:用户指南 | SystemVerilog 仿真 | SystemVerilog 非标准扩展 | $callstack 系统函数