クロック・コンストレイン(続き)
 Timingタブにエラーの詳細があります。intra-Clock Paths -> clk_out1_clk_wiz_0 -> Setup...を見てみましょう。Slackが負の値になっており、FromからToまでのパスが間に合っていません。


 MuxIir.vを開き、Y1の部分を見てみます。このY1を出力するのが間に合っていないようです。


 回路図で表すと次のようになります。このパスが長すぎて10nsで終わらないということです(*2)。

(*2)多ビットの乗算器や加算器があるので演算に時間がかかる。セミナではクロックが11MHz(周期90ns)なので間に合っていた。


 対策として、乗算器と加算器の間にDF/Fを入れます。このようにラッチすることにより、遅延の伝搬を断ち切ることができます。


 MuxIir.vを開いて次のように変更し、Generate Bitstreamします。


 終わったらReloadをクリック。


 Project Summaryを見るとTimingの欄から赤字が消えました。DF/Fでラッチすると10nsに間に合うようです。


 タイミング的には間に合いましたが、論理的には修正が必要になります(*3)。もう一度シミュレーションをやり直してからFPGAに実装してください。

(*3)乗算器の出力が1サイクル遅れるので、後段の回路もそれに合わせる必要がある。レイテンシは1サイクル増える。

最初のページへ

戻る