Vivado 2016.3のIP Integratorの挙動が微妙に違う

OpenCoresで公開したワイヤーフレーム3D CG IPコア(wf3d)には、ZedBoard用のVivado実行サンプル環境が含まれています。このサンプル環境は、Tclスクリプトを使ってbitstreamを生成しているのですが、Vivadoのバージョンを2016.3にアップデートするとエラーが発生しました。

3DCG IPコアとZedBoard

3DCG IPコアとZedBoard

Vivado 2016.3のエラー

Vivado 2016.3を実行すると、論理合成で次のようなエラーが発生します。

zed_base_rst_processing_system7_0_50M_0_board.xdcというファイルが読み込めないために、エラーが発生しているようです。

Vivado 2016.2と2016.3のIP Integratorの違い

Vivado 2016.2とVivado 2016.3のIP Integratorの結果をGUIで確認してみます。

Vivado 2016.2の結果

まず、Vivado 2016.2の結果

Vivado 2016.2のBlock Design GUI

Vivado 2016.2のBlock Design GUI

Vivado 2016.3の結果

そして、Vivado 2016.3の結果

Vivado 2016.3のBlock Design GUI

Vivado 2016.3のBlock Design GUI

どうやら、Processor System Resetのモジュール名がrst_processing_system7からrst_ps7に変わったようです。このため、Tclスクリプト中で指定したファイルが見つからず、エラーが発生していました。
しかし、Vivado 2016.2と2016.3の違いはこれだけではないようで、Vivado 2016.3では次のようなワーニングが論理合成中に表示されます。

Block DesignのモードをNone(Global)に設定する必要があるようです。この設定を行わないと、Block Designで使用しているIPコアの関連ファイルが生成されないようです。

解決方法

Tclスクリプトに次の変更を行うことで、Vivado 2016.3でも正しくbitstreamを生成できるようになりました。

  • Block Designへのプロパティ追加
  • Vivadoのバージョンに応じてProcessor System Resetの名前を変更

Block Designへのプロパティ追加

次のようにTclスクリプトを変更します。Vivadoのバージョンが2016.3以上の場合、synth_checkpoint_mode Noneを設定してからgenerate_targetとexport_ip_user_filesを実行します。

Vivadoのバージョンに応じてProcessor System Resetの名前を変更

Vivadoのバージョンが2016.3以上の場合、Processor System Resetの名前をrst_processing_system7からrst_ps7に変更します。

スポンサーリンク







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