0

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()

この実行スクリプトに、コアでトレースをオンにする引数を与えたいと思います。これは、コアでトレース属性を設定することで実行できます。そして、Python の optparse を使用してスクリプトのオプションを読み取ることができることを知っています。

私が抱えている問題は、エラボレーションの終了前に属性を設定する必要があることですが、エラボレーションの前にシミュレーションにアクセスできる唯一の場所はテストベンチです...しかし、パラメーターを渡す方法がないようです (たとえば、スクリプト引数) をテストベンチに追加します。

スクリプトからテストベンチに引数を渡して、条件付きでコア トレースをオンまたはオフにするにはどうすればよいですか?

4

1 に答える 1

1

したがって、答えは次のとおりだと思います。

1) 関係のないことにテストベンチを使用しようとしないでください ... テストベンチ

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()
于 2014-08-07T04:15:09.970 に答える