0

私の目的は、C から SV に配列を渡し、配列の内容を SV に出力することです。次の C プログラムを試して、いくつかのテキスト ファイル (data_file.txt) (以下のリンクにある完全なソースを参照) を配列に変換して試してみました。 SystemVeilog(SV) で DPI 呼び出しを使用して配列を読み戻すには、「C」で配列値をメイン関数内にある関数 (mydisplay) に渡しました (ここで間違っている場合は修正してください)。配列の値が SV 環境に読み戻されていないようです。その理由は何でしょうか。SV で配列を効率的に取得する方法はありますか?

cコード:

 void mydisplay(svOpenArrayHandle h) {
  int *a; 
  a =(int*)svGetArrayPtr(h);
  for( i=0;i<idx;i++) {
    io_printf("C: values[%2zu]=0x%02x\n",i,values[i]);
    a[i] = values[i];
    }   
  }   

SVコード:

program automatic top; 
   int a[32000];
   import "DPI-C" function void mydisplay(inout int h[]);
   initial begin
      mydisplay(a);
      foreach(a[i]) $display("SV after DPI: a[%0d]=%0d",i,a[i]);
   end 
endprogram

EDAplaygroundのソース

4

1 に答える 1