ModelSimのPLIで浮動小数点入力(cygwin)

Verilog PLIで浮動小数点の値をバイナリ値に変換する方法を紹介します。シミュレータはModelSim、動作環境はWindows上のcygwinです。
手順は次の4ステップです。

ステップ1: PLI用Cファイルの準備
ステップ2: Cファイルのコンパイル
ステップ3: テストベンチからの呼び出し
ステップ4: シミュレーションの実行

ステップ1:PLI用Cファイルの準備

$to_float32というtaskを追加します。
$to_float32は、第2引数で指定された浮動小数点値を、バイナリ値に変換して第1引数のレジスタにセットします。例えば、1.0という値は$to_float32で0x3f800000に変換されます。実際のコードは次の通りです。浮動小数点値のバイナリ変換は共用体で行っています。

ステップ2:Cファイルのコンパイル

Cファイルのコンパイルは、cygwinのgccではなくModelSimディレクトリに格納されているgccで行います。次の例では、taskを記述したCファイルmy_pli.cをコンパイルしてmy_pli.slを生成しています。

ステップ3:テストベンチからの呼び出し

テストベンチでPLI taskを呼び出します。次の例では0.0から9.0の浮動小数点値を$to_float32でバイナリに変換し、レジスタf32にセットしています。

ステップ4:シミュレーションの実行

pliライブラリを指定してvsimを実行します。

実行ログ

簡単なモジュールをつかったプロジェクト・サンプルはこちら

スポンサーリンク
広告大
広告大
  • このエントリーをはてなブックマークに追加
スポンサーリンク
広告大