【Vivado®で使用するXDCファイルの基本的な記述例】第3回 バススキュー制約、優先順位、物理的制約編
このブログでは、Vivado® ML EditionsおよびVivado® design Suite(以下「Vivado」といいます)で使用する、「XDCファイル」の基本的な記述について解説します。
XDCとは、Xilinx Design Constraint(頭文字)の略です。
XDCファイルとは、Xilinx社のFPGA及び適応型SoCに対して制約を与えることができるファイルで、以下の項目の制約設定が可能です。
- ・端子配置設定
- ・クロック設定
- ・コンフィグレーション設定
- ・タイミング設定など
第3回では、バススキュー制約、優先順位、物理的制約について進めます。
これまでの連載BLOGはこちらからご確認ください!
それでは始めましょう。
このブログは「FPGA設計ブログ一覧」の
4. インプリメント(配置配線)のひとつです。
目次
バススキュー制約
複数のクロック乗せ換えのパス間の最大スキューを設定するために使用します。
データ送信可能で、デスティネーションクロックの立ち上りで受信可能なソースクロックの立ち上りの数を制限するものです。
set_bus_slewコマンドの構文
set_bus_skew [-from <args>] [-to <args>] [-through <args>] <value>
-from | 始点のオブジェクト リストを指定する |
---|---|
-to | 終点のノード リストを指定する |
-through | ピンまたはネットのリストを指定する |
-from、-toオプションではクロックを参照することも可能ですが、始点および終点のリストを指定することで、制約が適用されるパスが多くなることを回避できます。
優先順位
XDCでは、順次解釈のため、後に宣言している制約が優先となります。
2行目 create_clock -name clock2 -period 20 [get_ports clk_in1]
とした場合、どちらも同じポートですが、1行目は無視されて、2行目の周期=20nsをclock2の名前で制約が与えられます。
複数のタイミング例外が同じパスに適用されているなど、制約が重複する場合、優先順位は次のようになります。
- クロックグループ (set_clock_groups)
- フォルスパス (set_false_path)
- 最大/最小遅延パス (set_max_delay/set_min_delay)
- マルチサイクルパス (set_multicycle_path)
オブジェクトの優先順位は次のようになります。
- ポート、ピン、およびセル
- クロック
フィルターの優先順位は次のようになります。
- -from -through -to
- -from -to
- -from -through
- -from
- -through -to
- -to
- -through
物理制約
以下のオブジェクトのプロパティ宣言(set_property)を行います。
- ・ロケーションや I/O規格などのI/O制約
- ・セルのロケーションなどの配置制約
- ・固定配置などの配線制約
- ・コンフィギュレーション制約
→各コマンドの使用方法は、 第1回 にて記載してあります。
上記以外に、ネットリスト制約には次の宣言があります。
- ・CLOCK_DEDICATED_ROUTE
- ・MARK_DEBUG
- ・DONT_TOUCH
この3つの宣言文を以下に説明します。
CLOCK_DEDICATED_ROUTE
クロックネットに使用し、デフォルトの配線ではなく新たなクロック配線を指定できます。
専用クロックが使用できない場合、FALSEに設定できます。
クロックポートからBUFG、MMCMなどのグローバルリソースではなく、汎用配線を使用できます。
MARK_DEBUG
ネットを保持し、コンパイル時にデバックツールに接続することができます。
DONT_TOUCH
ネットが最適化中に削除されないようにします。
設定されたネットは、合成orインプリメンテーションで最適化されないため、リソースが増える可能性があります。
手動で複製したロジックが統合されることを防ぐことができます。
ここまでXDCに関して話してきましたが、XDCファイルはVivado® 環境で使用します。
ISEの使用していたUCFファイルとはフォーマットが異なるため、変換が必要になります。
そのため、『ISE から Vivado® Design Suite への移行ガイド』(UG911) がありますので参考にしてください。
『UCF制約のXDCへ移行』の章にUCF→XDCファイルへの変換する方法が説明されています。
このブログは「FPGA設計ブログ一覧」の
4. インプリメント(配置配線)のひとつです。
以上となります。
最後までご覧いただきありがとうございました。
今回説明した内容でのご不明な点や、FPGA設計などでお困りのことなどがありましたら、下記よりお問い合わせください。