目前我使用这种方式,当运行时错误发生时,vcs将打印调用堆栈。效率很低。还有更好的方法吗?
function void anyFunctionIWouldLikeToSeeCallStack();
uvm_object a;
// a == null
a.print();
endfunction;
答案 0 :(得分:2)
Cadence incisive(ncsim)有一个可以调用的$ stacktrace系统任务。如果其他供应商也有类似的话,我不会感到惊讶。
答案 1 :(得分:1)
,它是$stack()
但它只有大约8个级别的堆栈,我不认为这是可配置的
答案 2 :(得分:0)
这是模拟器在设置断点时通常提供的东西。在达到某个断点后,您的模拟将停止,您将能够运行模拟器特定命令来打印调用堆栈,或者您将在某个GUI窗口中显示调用堆栈。
您必须在VCS文档中查找完全如何完成此操作。
答案 3 :(得分:0)
在 RivieraPro 中,命令是 $callstack()。您可以传递几个选项来配置输出。
查看文档: R-PRO:用户指南 | SystemVerilog 仿真 | SystemVerilog 非标准扩展 | $callstack 系统函数