Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

OVM-VMM : vmm_scenario_adapter

Verification Engineerの戯言

vmm_scenario_adapterクラスは、OVM sequencerの中でvmm_scenariosを使うためのものです。
ソースコードを見てみると、メンバー変数としてvmm_scenarioクラスインスタンスであるscenarioを持ちます。
    rand vmm_scenario #(VMM) scenario;

vmm_scenario_adapterクラスは、ovm_sequenceクラスを継承するので、bodyタスクを定義する必要があります。
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