6

DPI を使用して C ソースに接続された Verilog ベースのテストベンチがあります。現在、DPI を使用して、ファームウェア全体を作成する予定です。これを行うには、3つのことが必要です

  • レジスタ読み取り
  • レジスタ書き込み
  • 割り込みハンドラ 理解したとおり、レジスタの読み取りと書き込みは、RTL テストベンチからエクスポートする必要があるタスクです。そして、割り込みハンドラー ('C から関数をインポートして実装しました)。

ほとんどのケイデンス ドキュメントを確認しましたが、有用なヒントは見つかりませんでした。ケイデンスユーザーコミュニティにも登録しましたが、登録が承認されるまで質問できないようです。

誰かがこれを知っている場合に備えて、助けていただければ幸いです。

4

2 に答える 2

3

実際、私はこのようなことを理解しました。

//--From RTL ---
export "DPI" task reg_read;

task reg_read;
   input int nAddr;
   output int nVal;

 // -- read implementation --

endtask

// -- From C code
extern void reg_read (int nAddr, int *pVal);

void test_read (void)
{
   int nRegVal;

   // Dummy checking !!
   reg_read (0x100, &nRegVal);
}

// -- Again in RTL --
import "DPI" context task test_read ();

これは、ncverilog を使用して動作します。

于 2009-04-08T01:48:46.387 に答える
2

クール...私は実際にこのトピックに関する記事を書きました。 リンク

この論文では、実際に DPI 全体でレジスタの読み取りと書き込みなどをエクスポートし、それに TCL インタープリターを追加して、TCL を使用してシムを制御できるようにしています。すべてのツールが既に Tcl に含まれているため、これはラボの担当者が気に入っていたものです。

指示に従って、C から SV への関数呼び出しを DPI を介して統合し、TCL の処理が開始されたら停止することができます。

于 2009-10-21T21:09:51.010 に答える