ASIC シミュレータ内で System Verilog を実行しています。SV には、SV から C 関数を呼び出すためのインポート/エクスポート メカニズムと、C 内から SV 関数を呼び出すためのメカニズムがあります。
リアルタイムっぽい (非常に遅いストリーム) データを、シミュレーションから Java で作成するチャート作成プログラムに送信したいと考えています。シミュレーター/C プログラムからの定期的な更新で Java を呼び出す最良の方法は何ですか?
ASIC シミュレータ内で System Verilog を実行しています。SV には、SV から C 関数を呼び出すためのインポート/エクスポート メカニズムと、C 内から SV 関数を呼び出すためのメカニズムがあります。
リアルタイムっぽい (非常に遅いストリーム) データを、シミュレーションから Java で作成するチャート作成プログラムに送信したいと考えています。シミュレーター/C プログラムからの定期的な更新で Java を呼び出す最良の方法は何ですか?
ここでざっと見た後:http://java.sun.com/docs/books/jni/html/invoke.html、...
次に、これを考慮してください。
最も簡単な方法は、データをファイルに書き込み、Java プログラムを作成して、ファイルが大きくなるにつれてファイルから読み取ることです。この回答を参照してください: unix/linux "tail -f" の Java IO 実装
両方を別々にsystem()
起動するか、プラグインから Java プログラムを起動して、ファイル名を引数として渡します。
最善の方法は、Java プログラムが TCP ソケットをリッスンして、更新を送信できる C プログラムからの更新を受信するようにすることです。C プログラムは、開始時に Java プログラムに接続し、更新があるときはいつでも、接続されたソケットに沿ってそれを渡すことができます。その後、Java プログラムはデータを取得し、更新が必要なものをすべて更新できます。
これには、2 つのプログラムを同じマシンで実行する必要さえないという利点もあります。
C プログラムが Java オブジェクトと対話できるようにするJavaネイティブ インターフェイスがあります。ただし、これを ASIC シミュレーターに統合するには、いくつかの C コードを作成する必要があります。