・トピック modelsimPE向け。。の補足

* req,rsp補足
 ovm_sequence, ovm_driverのソースは
virtual class ovm_sequence #(type REQ = ovm_sequence_item,
type RSP = REQ) extends ovm_sequence_base;
typedef ovm_sequencer_param_base #(REQ, RSP) sequencer_t;
sequencer_t param_sequencer;
REQ req;
RSP rsp;
.............
endclass

てな感じで req,rspインスタンスされている。
従って、ovm_sequenceを継承したclassでは
いきなり
  req = new("") ;
でovm_sequence_itemの機能が使える。
ovm_driverを継承したclassも同様だ。

* assert文は使用しないので削除。。。補足
ovm_doの中身は

`define ovm_do(OVM_SEQUENCE_ITEM) \
begin \
OVM_SEQUENCE_ITEM = new(""); \
`ovm_create(OVM_SEQUENCE_ITEM) \
start_item(OVM_SEQUENCE_ITEM); \
   assert(OVM_SEQUENCE_ITEM.randomize()) else begin \
    ovm_report_warning("RNDFLD", "Randomization failed in ovm_do action"); \
   end \
finish_item(OVM_SEQUENCE_ITEM); \
end

ここのassert文は
 OVM_SEQUENCE_ITEM.randomize()
が偽(0)をを返してきたときにwarning→「Randomization failed in ovm_do action」
をコンソールに出力する。更にリザルトへwarningを一個登録する。
modelSimPEではrandomize()は使用できないので、これに変わるrandomize_ptm()を
記述するが、普通、偽を返せるほど強力なアルゴリズムで実装しないでしょ。
   →まあQuesta並みのrandomize_ptm()プログラムをapach2-licenseで
    公開してくれるなら歓迎です。

systemverilog OVM OVM2.0 LSI検証 回路検証 テストベンチ 補足