「Icarus Verilog」+「IVI」の使い勝手を試す ――波形表示GUI付きのフリー・シミュレータ
● 論理合成とSystemVerilogへの対応について
前項の4)で使用したTV80のソース・コードを使って,Icarus Verilogの論理合成機能を試してみました.論理合成はiverilogコマンドのSオプションで行い,EDIF形式のネットリストが生成できるようです.しかし筆者が試した範囲では,記述に問題があるというエラーが出て,うまくいきませんでした.if文の解釈がうまくいかないようなのです.このコードはすでにASICとして実績があるものなので,コード側の問題とは考えにくいのですが....Icarus Verilogの合成時のコードの解釈のしかたに相違があるように思われます.エラーが出ているのは一部のコードだけなので,その部分の記述のしかたを修正すれば合成できるようになるものと思われます.おそらく,iverilogの合成のくせをつかめばいいのでしょうが,それに関するドキュメントは存在せず,今のところお手上げの状態です.
Icarus VerilogはVerilog 1995,Verilog 2001,System Verilogの三つのバージョンに対応しているので,System Verilogのテストもしてみようと思いましたが,手ごろなSystemVerilogのサンプル・コードが入手できず,断念しました.
なお,バージョンの選択はiverilogコマンドでコンパイルするときにオプションとして指定します.デフォルトの状態ではSystemVerilogが選択されます.SystemVerilogはVerilog 2001のスーパセットであり,Verilog 2001はVerilog 1995とほとんど上位互換なので,わざわざバージョンを指定してシミュレーションする必要はなさそうです.