【发布时间】:2017-05-06 03:01:55
【问题描述】:
我想将设计中的所有信号都跟踪到 VCD 文件。可以自动化这个过程吗?我不想手动添加每个信号进行跟踪(使用 sc_trace (..))
【问题讨论】:
-
自动化这个过程是完全可能的。大多数 EDA 供应商工具已经提供了这样的解决方案。我要做的一件事是在我编写的所有可用模块中编写跟踪方法,并从最顶层的层次结构中调用跟踪方法。你可以看到一个尝试here,这不是我最漂亮的编码遗物之一。
-
我发现正确的解决方案是使用 lldb/gdb 脚本来使用 debuginfo 查找所有信号并将它们添加到跟踪中。但是我还没有时间去实现它。
-
我认为 EDA 供应商使用 gdb。
-
我认为 EDA 供应商不会因为许可问题而使用 GDB,他们对遗留代码库和专有代码魔法非常严格。每当您声明 sc_in/out 端口并绑定它们时,它们可能会使用类似的东西或只是调用 sc_trace,如果您敢于修改 OSCI SystemC 实现,这很容易做到。
-
现代商业模拟器支持追踪纯 C++ 变量(不仅是 sc_objects)。提取它们的唯一方法是使用调试信息和 RTTI。而且我认为 EDA 供应商没有足够的资源和专业知识来从头开始编写 gdb/lldb 克隆。所以我 99% 确信他们使用 GDB 脚本实现了跟踪。
标签: systemc