クリティカルな問題
Quartus® II ソフトウェア・バージョン 12.1 SP1 の問題により、プロジェクトの Quartus® II 設定ファイル(.qsf)の順序が予期せず変更される可能性があります。
この現象は、既存のプロジェクトを開くとき、または Upgrade IP コマンドを実行する際に発生することがあります。
プロジェクトに Synopsys Design Constraint(.sdc)ファイル順序の依存性がある場合、このリオーダリングにより、予期しない周波数設定やその他のタイミング・アサインメントが生じる可能性があります。複数レベルの Quartus® II IP(.qip)ファイルを持つプロジェクトを使用できます。 .qip ファイル内には、追加 の .qip または .sdc ファイルへの参照がある場合があります。例については、以下の回避策のセクションを参照してください。 sdc 設定が正しくないと、デザインが正しく動作しなくなるか、機能エラーが生じる可能性があります。
Tcl スクリプトファイルを使用して、デザインがこの問題の影響を受けているかどうかを確認できます。 qip_checker.tcl をダウンロードして、ファイル注文の問題があるかどうかを確認します。このスクリプトは、次のコマンドで実行できます。
quartus_sh -t qip_checker.tcl [-force]
このスクリプトの詳細な使用方法については、次のように入力します。
quartus_sh -t qip_checker.tcl
Quartus® II ソフトウェア・バージョン 12.1 SP1 でこの問題を解決するためのパッチが利用可能です。以下の該当するリンクからパッチ 1.33 をダウンロードしてインストールします。
- Windows 用バージョン 12.1 SP1 パッチ 1.33 (.exe) をダウンロードします。
- Linux 向けバージョン 12.1 SP1 パッチ 1.33 (.linux.
- インテル® Quartus® II ソフトウェア・バージョン 12.1 SP1 パッチ 1.33 (.txt) の Readme をダウンロードする
このパッチは、Quartus® II ソフトウェア・バージョン 12.1 SP1 (ビルド 243) と互換性があります。
パッチ 1.33 は、Stratix® V、Arria® V、Cyclone® V デバイス用 Quartus® II ソフトウェア・バージョン 12.1 SP1 デバイス・パッチ (1.dp)と互換性がありません。これらのデバイスを使用する場合は、以下の関連ソリューションのリンクを使用してデバイス・パッチ 1.dp6 以降にアップグレードすることで、この問題を解決できます。
このパッチを使用できない場合は、プロジェクト・ディレクトリーに quartus.ini というテキストファイルを作成することで (まだ存在しない場合) この問題を回避できます。ファイルの並べ替えを防ぐために、テキストファイルに次の行を追加します。
disable_ip_regen=on
このオプションは、IP の自動再生成機能の一部を無効にするため、コマンドライン操作を使用して IP を再生成する必要がある場合があります。
すでにこの問題が発生している場合は、次の手順を実行する必要があります。
- パッチを適用するか
disable_ip_regen=on
、ini 設定を直ちに適用します。 - または引数がある.qsf内の割り当てを削除します。
-qip
-sip
QIP_FILE
.qsf内の割り当てを確認し、トップレベルに属していない割り当てを削除します。- .qsfを変更して、.sdcおよび.qipファイルの順序を手動で修正します。
以下は、デザインに影響がある場合に手動で修正するリオーダリング効果の例です。
例えば、Quartus® II ソフトウェア・バージョン 12.1 SP1 の前に、デザインには次 の .sdc ファイルと .qip ファイルがプロジェクト の .qsf ファイルにリストされています。
a.qsf:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE a_after.sdc
a.qip:
set_global_assignment -name SDC_FILE aqip_before.sdc
set_global_assignment -name QIP_FILE asub.qip
set_global_assignment -name SDC_FILE aqip_after.sdc
asub.qip:
set_global_assignment -name SDC_FILE asub.sdc
メモリーからのファイルの順序は次のとおりです。
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip # from qip a.qip
set_global_assignment -name SDC_FILE asub.sdc # from qip asub.qip
set_global_assignment -name SDC_FILE aqip_after.sdc # from qip a.qip
set_global_assignment -name SDC_FILE a_after.sdc
そのため、プロジェクトは次の順序でSDC_FILE課題を読み取ります。
- a_before.sdc
- aqip_before.sdc
- asub.sdc
- aqip_after.sdc
- a_after.sdc
Quartus® II ソフトウェア・バージョン 12.1 SP1 では、ソフトウェアの問題を引き起こした後 (プロジェクトを開くか IP をアップグレード )、.qsf は次のようになります。
a.qsf:
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name SDC_FILE a_after.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name QIP_FILE asub.qip
メモリーからのファイルの順序は次のとおりです。
set_global_assignment -name SDC_FILE a_before.sdc
set_global_assignment -name SDC_FILE a_after.sdc
set_global_assignment -name QIP_FILE a.qip
set_global_assignment -name SDC_FILE aqip_before.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip # from qip a.qip
set_global_assignment -name SDC_FILE aqip_after.sdc # from qip a.qip
set_global_assignment -name QIP_FILE asub.qip
set_global_assignment -name SDC_FILE asub.sdc # qip asub.qip
そのため、プロジェクトは次の順序でSDC_FILE課題を読み取ります。
- a_before.sdc
- a_after.sdc
- aqip_before.sdc
- aqip_after.sdc
- asub.sdc
デザインが 読 み込まれる順序に依存している場合、この変更された順序はデザイン最適化結果およびタイミング解析に影響を与える可能性があります。問題を解決するには、上記のように ini 設定を追加し、元の正しい割り当て順序を使用するように .qsf を修正します。注文が変更されているかどうかを迅速に確認するには、Quartus® II ソフトウェア・バージョン 12.1 SP1 より前に生成された .qsf を参照してください。
この問題は、Quartus® II ソフトウェア・バージョン 13.0 から修正されています。