0

我在我的 specman 运行中运行配置文件,并得到 90% 是在外部代码上。我的运行环境也包括 SystemVerilog 代码。我怎样才能确定这个“外部代码”是什么以及是谁在调用它?

4

3 回答 3

0

您的系统 Verilog 模拟器可能是您的模拟的主控,因此如果您想分析“外部代码”,请查看您的模拟器的文档,了解如何启用系统 Verilog 分析。

如果 System Verilog 模拟器说它不会消耗太多模拟时间,那么启动一个 C/C++ 分析器,如Google Profiler,它会告诉您正在执行哪些确切的 C/C++ 函数。仅供参考,您可能希望/proc/<pid>/exe在进程仍在运行时运行后处理工具,以便dlopen'd在您的模拟环境中看到所有符号。

于 2014-06-04T13:00:29.027 回答
0

“外部代码”也可能包括非 Cadence 模拟器,甚至 IUS,如果仅对 Specman 启用分析器。如果您单击“代码块”表中的“外部代码”,您可能会看到一些“调用者”——端口、动态 C 例程等——导致 Specman 与外部代码通信的代码中的实体。如果这 90% 中的大部分都花在 Specman 滴答之间的模拟器上,或者花在从模拟器调用的 C/C++ 代码中,您可能不会在“调用者”中看到任何重要的 %s。但在这种情况下,您的大部分 CPU 时间都花在与 Specman 无关的代码上,而分析器无法帮助您。

于 2014-05-26T19:39:19.287 回答
0

“外部代码”通常考虑非规范和非模拟器代码,例如 c/c++ 代码、非 Cadence 模拟器等......特别是,如果您使用的是 C 接口(C-specman 接口),并且您定义您的 c 例程作为外部动态,并且您将模拟配置“-ignore_dyn_c_routine_signals”设置为 TRUE(这是默认值),那么所有外部动态 c 例程将被视为外部代码而不是 spacman 代码。

要查看 specman 模拟配置,请在 specman 提示符下发出以下命令:

specman > 显示配置模拟

如果您需要帮助分析分析器报告,您可以随时联系 Cadence 支持发送相关报告。

于 2014-05-26T15:27:14.237 回答