SystemVerilog DPI-Cを書いてみた。

SystemVerilog にて、Direct Programming Interface "C言語"(DPI-C)があります。

細かい説明などは「All of SystemVerilog」にて。
今回はその"DPI-C"を使った場合にシミュレーション速度はどうなるか?

シミュレータにもよりますが、異なる言語間はシミュレーションを劣化させる結果をもたらす場合もあります。SystemC-Verilogなどの環境だった場合にそういった思いをしたこともあります。

テスト環境は上記の関連サイトを参考にてみました。
レジスタに対してのWrite/Readを繰り返すもので、アドレスやレジスタをランダムで生成します。あとは気が済むまでシミュレーションをどS的まわすだけです。
① SystemVerilogのみの環境(SystemVerilog randmize())
② SystemVerilog+DPI-Cの環境(C RAND関数)
シミュレーション速度の結果ですが、
② < ①
という形でDPI-C(C関数にてランダム生成)したほうが20%ほど早かったです。DPI-Cはとても便利だと思います。
普及や「DPI-Cのあらたな可能性」については師匠にお任せですが、外部言語を使うことでシミュレーション速度が落ちるのでは?と疑問に思っている方にはこの結果は意外ではないでしょうか?

言語によって得意不得意があると思うので、効果的な使い分けが必要ではないかと思います。そうしないと逆に損してますよ!
関連記事

コメントの投稿

非公開コメント

プロフィール

Kocha

Author:Kocha
なんでもチャレンジ!(^o^)/
E-mail
github:Kocha
イベントカレンダー

カレンダー
09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -
カテゴリ
OVP (4)
最新記事
最新コメント
アーカイブ
リンク
Twitter
アクセス人数