Verification Engineerの戯言
Sequenceは、ovm_sequence/ovm_sequencer/ovm_driverの3つで構成されています。
Scenarioは、ovm_scenario/ovm_scenario_controller/ovm_scenario_driverの3つで構成されています。
Scenarioは、ovm_scenario/ovm_scenario_controller/ovm_scenario_driverの3つで構成されています。
Sequenceでは、bodyタスク内でovm_do/ovm_do_withマクロを使います。
Scenarioでは、bodyタスク内でapplyタスク、apply_withマクロ'''を使います。
Scenarioでは、bodyタスク内でapplyタスク、apply_withマクロ'''を使います。
Sequenceにも、applyタスクがあります。引数もScenarioと同じです。
Sequence : task apply(ovm_sequence_item req, output ovm_sequence_item rsp);
Scenario : virtual task apply(input REQ data_req, output RSP data_rsp, input bit randomize = 1););Scenarioでは、REQ/RSPになっていますが、ovm_sequenceのクラス定義で
virtual class ovm_scenario #(type REQ = ovm_transaction, type RSP = ovm_transaction) extends ovm_scenario_base;のようにしています。ovm_sequence_itemクラスは、ovm_transactionクラスを継承しています。
Scenarioでは、applyタスクの第3引数(randomize)を持っています。このrandomizeが1のとき、ランダム生成します。
デフォルトでは1になっているので、第3引数を指定しないときは、第1引数(req)のランダム生成をします。
ランダム生成をしたくない場合は、第3引数に0を指定します。
Sequenceのovm_doマクロを実行すると必ずランダム生成します。
デフォルトでは1になっているので、第3引数を指定しないときは、第1引数(req)のランダム生成をします。
ランダム生成をしたくない場合は、第3引数に0を指定します。
Sequenceのovm_doマクロを実行すると必ずランダム生成します。
共に、applyタスクが終了したときに、ドライバからの応答がある場合にはrspに値が設定されます。
検証、Verification、SystemVerilog、OVM、Open Verification Methodology