AR# 63740

Vivado タイミング クロージャ – Vivado で見られるタイミング問題の解決方法提案

説明

このアンサーでは、Vivado で発生する タイミング違反の解決方法に関する提案を示します。

ソリューション

ファンアウトが多いことが原因で発生するタイミング違反 :

  • ファンアウトの多い信号の元の位置とグローバル バッファーをフロアプランして、LOC 制約を付けます。
  • ドライバーを複製し、合成ツールでその複製ロジックを削除されないように指定します。
  • リセット、セット、クロック イネーブルなど、制御信号以外の信号に対しては、合成に max_fanout を使用します。
  • ファンアウトで最適化を実行できる phys_opt_design を使用します。詳細は (Xilinx Answer 53986) を参照してください。

ステート マシン最適化が原因で発生するタイミング違反 :

  • ステートにワンホット エンコーディングを使用します。スピードを最適化するにはよい選択肢です。
  • 合成ステート マシン コーディング ツールを可能であれば使用します。
  • 入力信号の数を減らし、入力信号をプリデコードしておきます。
  • 入力および出力信号にレジスタを付けます。
  • カウンター値をプレデコードおよび保存します。
  • ステート マシンからデータ フローを削除し、制御信号を作成して、データ フローを制御します。
  • 多くのステート遷移の行われる箇所にステートを複製し、ステート等式のステート数を減らします。
  • IF-ELSE 文ではなく、CASE 文を使用します。

キャリー チェーンが長い場合の提案 :

  • 小型カウンターを使用してほかのカウンターを駆動し、最初のカウンターが 2 つ目のカウンターをイネーブルにするように、それらをカスケード接続します。

ロジック レベルに関する提案 :

これは、タイミング エンドポイント間にロジックが多すぎることを示唆する、合計パス遅延のある割合をロジックが超えてしまうケースを対象にしています。タイミング要件を満たすには、ロジックを低減する必要があります。

ロジック レベル数を低減するには、ソースに戻り次の方法を試してみてください。

  1. ステート マシン最適化の提案を考慮します。
  2. IF-ELSE 文ではなく CASE 文を使用します。
  3. 大型マルチプレクサではなく (入力が 7 以上の)、トライステートを使用します。
  4. 2 で乗算するのではなくシフトを使用します。
  5. コンパレータではなくデコーダを使用します。
  6. レジスタ周辺のロジックのバランスを取ってみます。
  7. シリアル インプリメンテーションではなく、括弧を使用しロジックをピラミッド化してみます。
  8. パイプライン レジスタを追加。
  9. IF-THEN-ELSE 文を次の目的にのみに使用します。
  • カウンター値のプレデコードおよび保存
  • 入力信号をプレデコードおよび保存するためのパイプライン段を追加
AR# 63740
日付 05/23/2016
ステータス アクティブ
種類 一般
ツール