我正在使用VLAB MPC5xxx工具箱。
我有一个运行脚本来控制我的模拟,它以通常的方式加载平台,然后运行它:
import vlab
import os
import sysc
image_path = os.path.join('o5e',
'firmware.open5xxxecu-e6009bbcfcd1',
'bin', 'o5e_dbg.elf')
vlab.load('mpc.mpc5674f.sim', args=['--testbench=o5e_testbench',
"--image=%s" % image_path,
"--debugger-config=GHS_MULTI",
"--trace=+src:sc_report",
])
vcd_sink = vlab.trace.sink.vcd("mpc.mpc5674f.sim.vcd")
vlab.add_trace("mpc5674f.PBRIDGE.EDMA_B", sink=vcd_sink)
for i in range(32):
vlab.add_trace("mpc5674f.PBRIDGE.ETPU.CH_OUT_A[%d]" % i, sink=vlab.trace.sink.console)
vlab.run(11, "ms", blocking=True)
vlab.exit()我想给这个run脚本一个参数,以便在核心中启用跟踪,我知道您是通过在核心上设置跟踪属性来实现的。我知道我可以使用python的optparse读取脚本的选项。
我的问题是,你必须在精化结束之前设置属性,但是在精化之前我唯一可以访问模拟的地方是在testbench中……但是似乎没有办法将参数(例如脚本参数)传递给测试平台。
我应该如何将脚本中的参数传递到测试平台中,以便它有条件地启用或禁用核心跟踪?
发布于 2014-08-07 12:15:10
所以,我认为答案是:
1)不要尝试使用testbench来做与…无关的事情。一个测试平台
2)使用“阶段断点”来做需要在……发生的事情模拟中的特定阶段
例如:
from optparse import OptionParser
parser = OptionParser()
parser.add_option("--core-instrumentation", dest="core_instrumentation",
action = "store_true",
help="turn on core instrumentation")
(options, args) = parser.parse_args()
if options.core_instrumentation:
vlab.add_phase_breakpoint("before_end_of_elaboration",
action = lambda bp: vlab.write_attribute("mpc5467f.Core0.log_filter","+instr"))
image_path = os.path.join('o5e',
'firmware.open5xxxecu-e6009bbcfcd1',
'bin', 'o5e_dbg.elf')
vlab.load('mpc.mpc5674f.sim', args=['--testbench=o5e_testbench',
"--image=%s" % image_path,
"--debugger-config=GHS_MULTI",
])
vcd_sink = vlab.trace.sink.vcd("mpc.mpc5674f.sim.vcd")
vlab.add_trace("mpc5674f.PBRIDGE.EDMA_B", sink=vcd_sink)
for i in range(32):
vlab.add_trace("mpc5674f.PBRIDGE.ETPU.CH_OUT_A[%d]" % i, sink=vlab.trace.sink.console)
vlab.run(11, "ms", blocking=True)
vlab.exit()https://stackoverflow.com/questions/25133582
复制相似问题