電気回路/HDL/VivadoのXDC制約文法

(853d) 更新

公開メモ

Vivado の制約文法は ISE と異なる

今までの UDC ファイルをXDCに直さなければならないらしいです。

情報源

日本語版は版が古いので、利用する際には英語版の更新履歴をチェックする必要がありそうです。

制約ガイドは論理だっていないし例も少ないしで非常に読みにくいです。

むしろ移行ガイドの3章を見ると、XDC文法の概略を見渡せるようです。 むしろこれ、UDC文法のガイドとしても役立ちそう。。。

tcl入門

XDC ファイルは tcl として実行可能なプログラムソースになっています。

このあたりが分かりやすそう。

ただし、次の制約があります。

XDC フ ァ イルで使用可能なビル ト イ ン Tcl コマン ドは、 set、 list、 および expr のみです。

concat とかも使えないようですね。。。

[DRC 23-20] Rule violation (CFGBVS-1)

新規プロジェクトを作成して bitstream を生成したところ、 次のような警告が表示されました。

[DRC 23-20] Rule violation (CFGBVS-1) Missing CFGBVS and CONFIG_VOLTAGE Design Properties - Neither the CFGBVS nor CONFIG_VOLTAGE voltage property is set in the current_design. Configuration bank voltage select (CFGBVS) must be set to VCCO or GND, and CONFIG_VOLTAGE must be set to the correct configuration voltage, in order to determine the I/O voltage support for the pins in bank 0. It is suggested to specify these either using the 'Edit Device Properties' function in the GUI or directly in the XDC file using the following syntax:

set_property CFGBVS value1 [current_design]
#where value1 is either VCCO or GND


set_property CONFIG_VOLTAGE value2 [current_design]
#where value2 is the voltage provided to configuration bank 0


Refer to the device configuration user guide for more information.

このエラーの対処は制約ガイドには載っていません。 「制約」ではなく「設定」のようです?

こちらに解説を見つけました。 http://japan.xilinx.com/support/answers/57045.html

例えば、次のように設定します。

set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property CFGBVS VCCO [current_design]

設定内容は XDC ファイルに直接記述しても良いですが、

https://forums.xilinx.com/t5/Design-Entry/Setting-CONFIG-VOLTAGE-and-CFGBVS-using-Vivado-2014-1-GUI/td-p/442462

によれば、Flow Navigator で Synthesized Design を開いた状態で、 メニューの [Tools]-[Edit Device Properties...]-[Configuration]-[Configuration Setup] に対応する項目がありますので、GUI で設定することも可能です。

ピンの指定

LANGUAGE:tcl
set_property PACKAGE_PIN T20 [get_ports switch1]
set_property IOSTANDARD LVCMOS33 [get_ports switch1]
set_property PULLDOWN true [get_ports switch1]
set_property PROHIBIT true [get_sites Y11]

クロックの指定

LANGUAGE:tcl
create_clock -period 20 [get_ports clk]

Counter: 5429 (from 2010/06/03), today: 7, yesterday: 0