めでたくcvc_counter+vmmが動作したので中身を見てみる。
modelsimのInstanceウインドウへ
- counter_dut ----> counter本体
- counter_if_0 ----> interface記述(clockingも入ってた)
- utest_pgm -->検証プログラム本体
とりあえずutest_pgmをダブルクリック、ふむふむ53行目にある
Counter_en_0.run();
で検証を始めるのかな。
早速ブレークポイントを張りrun -allそしてStep実行。
task vmm_env::run()へ到達。
その後 Step OverそしてStep over実行
わからん。。プログラムの動きがさっぱり???
C言語止まりでC++へ到達できなかったオヤジにはむりなのか?
気を取り直してmodelsimのInstanceウインドウを眺める。
Counter_envと同じ階層にCounter_cmd_xactor, Counter_xactn_gen...
がある?? たしかclass Counter_envの中でinstanceしていたはずなのに??
わからんオブジェクト指向はわからん。
もう一度 Instanceをながめる。Counter_cmd_xactor->main->main_loop発見。
forever
begin : main_loop
Counter_xactn cur_xactn ;
this.count_op(...
end : main_loop
ふむふむ ここでchannelを介してデータを受け取り、counterを動かしているのか。
あれ cur_xactn=new();が無い。
これで.get(cur_xactn)なんて、データをどこへ置つもり??
=new();でデータの置き場所を確保するはずでは??
わからん!!今日は疲れたおわり。
検証 systemverilog vmm ovm ovl