Verification Engineerの戯言
vmm_scenario_adapterクラスは、OVM sequencerの中でvmm_scenariosを使うためのものです。
ソースコードを見てみると、メンバー変数としてvmm_scenarioクラスのインスタンスであるscenarioを持ちます。
ソースコードを見てみると、メンバー変数としてvmm_scenarioクラスのインスタンスであるscenarioを持ちます。
rand vmm_scenario #(VMM) scenario;
vmm_scenario_adapterクラスは、ovm_sequenceクラスを継承するので、bodyタスクを定義する必要があります。
bodyタスク内でscenario.apply(this.chan, num_trans)を実行します。
bodyタスク内でscenario.apply(this.chan, num_trans)を実行します。
virtual task body();
ovm_report_info(get_full_name(),
{"VMM generator sequence (",get_type_name(),") starting"},OVM_HIGH);
num_trans = m_sequencer.max_random_count;
// if null, create a new one
if (scenario == null)
scenario = new;
// randomize scenario
if (!scenario.randomize()) begin
`OVM_REPORT_FATAL("Random Fail","Could not randomize sequence");
end
else begin
// copy ids
scenario.scenario_id = get_inst_id();
scenario.stream_id = m_sequencer.get_inst_id();
copy_scenario_ids(scenario);
// apply specified number of times (default: 1 time)
repeat (scenario.repeated + 1)
scenario.apply(this.chan, num_trans);
end
ovm_report_info(get_full_name(),
{"VMM generator sequence (",get_type_name(),") finishing"},OVM_HIGH);
endtask
例題は、sv/examples/ovm_interop/02_interconnected/08_vmm_scenario_adapter.sv
検証、Verification、SystemVerilog、VMM、OVM、Verification Methodology Manual、Open Verification Methodology