System verilog 如何在系统verilog中实时显示调用堆栈?

System verilog 如何在系统verilog中实时显示调用堆栈?,system-verilog,System Verilog,目前我使用这种方式,当运行时出错时,vcs将打印调用堆栈。它的效率很低。有更好的办法吗 function void anyFunctionIWouldLikeToSeeCallStack(); uvm_object a; // a == null a.print(); endfunction; 这是模拟器在设置断点时通常提供的东西。到达某个断点后,您的模拟将停止,您将能够运行特定于模拟器的命令来打印调用堆栈,或者您将在某个GUI窗口中显示调用堆栈 您必须在VCS文档中查找具体的操作方法。Cad

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

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

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

您必须在VCS文档中查找具体的操作方法。

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

在VCS中,它是
$stack()


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

Modelsim/Questa中相同的$stacktrace。