6

私は、DPIを使用してCソースにインターフェイスされた、Verilogベースのテストベンチを持っています。今はDPIを使用して私は私のファームウェア全体を書くつもりです。私は登録読む DPIを使用したCへのタスクのエクスポート

  • 登録が
  • 割り込みハンドラを書く3つの事
    • を必要とするこれを行うには 私が理解したように、レジスタの読み出しと書き込みは、私はRTLテストベンチからエクスポートする必要があるタスクです。そして割り込みハンドラ(私は 'C'から関数をインポートして実装しました)。

    私はほとんどのケイデンス文書をチェックし、有用なヒントは見つからなかった。 私はケイデンスユーザーコミュニティにも登録していますが、私の登録を承認するまでは質問できません。

    誰かがこれを認識している場合は、その助けに感謝します。

  • +1

    Cの前にアポストロフィはありますか?それはCとは異なる言語ですか? – unwind

    答えて

    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を使用して私の作品です。

    2

    クール...私は実際にこのトピックに関する記事を書いています。 link

    この論文は実際にレジスタの読み書きをDPIにエクスポートしてから、TCLインタープリタを追加して、TCLを使ってシムを制御できるようにしています。これは、すべてのツールがすでにTclに入っているので、研究室の皆さんが大好きなものでした。

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

    +0

    指定されたリンクは無効です。 –

    +1

    ああ... ICジャーナルはもはや存在しないようです。ここでは、それがどのように動作するかの概要へのリンクですが、それはかなり高いレベルです:https://www.eejournal.com/article/20080826_vmm/ どこにでも投稿された元の記事を見つけることができますここにリンクを残す。 – SDGator

    関連する問題