はじめに
インテル® Quartus® Prime 開発ソフトウェア のタイミング・アナライザーを実行しても、タイミングエラーが発生していないがコンパイルを行うと誤動作してしまう場合があるという経験をお持ちではないでしょうか?
この場合、SDC 制約が正しく記載されていない場合が要因の一つとして考えられますので、無視されている制約がないか、あるいは未制約のパスがないか確認を行う必要があります。
作成した SDC ファイルが Quartus に正しく登録されているか確認
インテル® Quartus® Prime 開発ソフトウェア の Assignments メニュー -> Settings.. を選択し、「Category:」から Timing Analyzer を選択します。
SDC ファイルが表示されていない場合は、SDC ファイルを追加します。
デザインに IP を組み込んでいる場合は、qip ファイルが登録されていることを確認します。
(qip ファイル内に、SDC ファイルが登録されています)
※参考:インテル® Quartus® Prime 開発ソフトウェアに登録する SDC ファイルが複数ある場合の登録順序
②未定義のクロックパスの確認
Tools メニュー -> Timing Analyzer を選択します。
Tasks ペインから、Report Unconstrained Paths をダブルクリックして実行します。
実行後、View ペインにサマリが表示されます。
Report ペインの Clock Status Summary をクリックすると、View ペインに Path の詳細が表示されます。
未定義のクロックがあると、赤く表示されるため、正しいクロック周波数を設定してください。
③無視されているクロック制約の確認
クロック信号のスペル間違い、認識違いなどにより、間違ったクロック制約が与えられてしまっている場合があります。
その場合は、Tasks ペインにある、Ignored Constrains をダブルクリックで実行して確認することができます。
如何でしょうか?
自分では正しく設定しているつもりでも、仕様が変わり RTL を修正するうちにクロック構成が変わることで、クロック設定が無視されたりスケールがありますので、気を付けてみてくださいね。