大人の事情でVMMをもう一度 ② xvcの登録

「ベリフィケーション・メソドロジ・マニュアル」p300にある図8-3「定義済みXVCマネージャの構造」
に乗っている2個のxvcはどうやって接続するの??(記述が無いんだよな)と言うわけで調べてみた。

①VMMソースを見ると定義済みXVCマネージャの構造は、図8-2「XVCの構造に使用されるVMMクラス」の
方が近いと思うんだけど。。図8-2にあるxvc_managerに外枠を書いてvmm_xvc_managerとしテストシナリオファイルを入力する矢印を書いてxvc_actionのライブラリをxvc_xactorに変更した図。。
このほうがvmm_xvc_managerをよく表していると思う。

②図8-2にある2本のxvc_acton_cahnnelは??
ソースを見ると
vmm.sv line-1887
   xvc_action_channel action_chan;
   xvc_action_channel interrupt_chan;
片方は割り込みようだね。

③xvc_action_channelの接続はどうするの??
 ソースをなめ尽くしました。。(汗
vmm_xvc_manager.sv
line-1504 task vmm_xvc_manager::execute_actions(vmm_xvc_scenario sc,
                                      xvc_xactor   xvc);
......
line-1529      xvc.action_chan.put(act);  
......
引数でxvc_xactor xvcを持ってきてaction_chan.put()しているので、特別な記述はいらないのかな。。
(動的につながる??)

割り込みはactionQ[i]からもってくる見たいだね。。
line-1408
      vmm_xvc_action_block act_b = sc.actionQ[i];
      if (!act_b.is_interrupt) continue;
      act = act_b.action;
      xvc = act_b.xvc;


interrput_chan line-1425, 1451
      xvc.interrupt_chan.sneak(act);

④xvcをどうやって登録するの??
vmm_xvc_manager extends xvc_manager なので。。
マニュアルのp404にある
  function bit add_xvc(xvc_xactor xvc) ;
を使用する。

前回のdmac_testのソースではこんな感じになるのかな。
module dmac_test(h_bus h_bus_if) ; // module <-- modelSim_PE対応。。(汗
  ....
 vmm_log log ;
 string test_senario_file ;
 vmm_xvc_manager vmm_xvc_manager0 ;
 dmac_xvc dmac_xvc0 ;
 mem_xvc  mem_xvc0 ;
  ....
initial
   begin
     test_scnario_file = "test.snr" ; // テスト・シナリオ
     
     log = new("dmac_loging", "0") ;
// -- r8.25  ->  vmm_xvc_managerを拡張してはだめ --
     vmm_xvc_manager0 = new ;
     vmm_xvc_manager0.add_xvc(dmac_xvc0) ;
     vmm_xvc_manager0.add_xvc(mem_xvc0) ;
     vmm_xvc_manager0.run(test_scenario_file) ;
     ....
     $finish ;
 ...

こんな感じ。
コンパイルしてないので。。えらい勘違いがある??かも。

systemVerilog VMM 回路検証 LSI検証