当我在 VLAB 脚本中遇到断点时,我如何才能知道我是否已经导致精化完成?
我的脚本到达一个引发错误的语句:
Error: (E529) insert module failed: elaboration done
(导致这种情况的命令是vlab.instantiate("stim", "stim")
)
所以很明显,精心制作(对我来说)已经完成了。我需要以某种方式回到流程中并找出发生的地方 - 所以我需要某种方式来询问“详细说明是否完成?” 在我在脚本前面设置断点的地方。
SystemC 提供以下函数来查询当前的精化或仿真阶段。
sc_status sc_get_status();
它返回SC_ELABORATION
, SC_BEFORE_END_OF_ELABORATION
, SC_END_OF_ELABORATION
, SC_START_OF_SIMULATION
, SC_RUNNING
, SC_PAUSED
, SC_STOPPED
, 或SC_END_OF_SIMULATION
.
有关详细信息,请参阅 SystemC 语言参考手册中的第 4.5.8 节。请注意,此功能仅在最新版本的标准IEEE 标准 1666-2011中添加。
在 VLAB 中,SystemC API 可从sysc
Python 包中获得,因此可以使用以下脚本来测试当前阶段是否处于精细化阶段:
import sysc
print "Is elaboration phase:", sysc.sc_get_status() == sysc.SC_ELABORATION