【Vivado®で使用するXDCファイルの基本的な記述例】第5回 XDCファイルの基本的な記述について
このブログでは、Vivado® ML EditionsおよびVivado® design Suiteで使用する、「XDCファイル」の基本的な記述について解説します。
XDCとは、Xilinx Design Constraint(頭文字)の略です。
XDCファイルは、AMD社のFPGAおよび適応型SoCに対して制約を与えることができるファイルで、以下の項目で制約設定が可能です。
- ・端子配置設定
- ・クロック設定
- ・コンフィグレーション設定
- ・タイミング設定
など
今回は、UCF制約からXDC制約への移行について記載します。
このブログは「FPGA設計ブログ一覧」の
4. インプリメント(配置配線)のひとつです。
目次
はじめに
まず、UCF/XDC制約について解説します。
UCF制約 | ISE® Design Suiteで使用する制約ファイルである。 |
---|---|
XDC制約 | Vivado® Design Suiteで使用する制約ファイルである。 |
Vivado® Design Suiteでは、UCF制約ファイルをサポートしていないため、UCF制約ファイル→XDC制約ファイルに移行する必要があります。
XDC制約ファイルに移行時発生するコマンドの違いについて
例)
UCF制約 | XDC制約 |
---|---|
TIMESPEC PERIOD | create_clock |
OFFSET = IN | set_input_delay |
OFFSET = OUT | set_output_delay |
TIG | set_false_path |
NET "信号名" LOC = 端子番号 | set_property PACKAGE_PIN 端子番号 [get_ports 信号名 ] |
NET "信号名" IOSTANDARD = LVCMOS33 | set_property IOSTANDARD LVCMOS33 [get_ports 信号名 ] |
NET "信号名" IOSTANDARD = LVDS | set_property IOSTANDARD LVCMOS33 [get_ports 信号名 ] |
記述例
クロック制約
(例:クロック周期:5.000 ns)
UCFの場合
NET "clka" TNM_NET = "clka";
TIMESPEC "TS_clka" = PERIOD "clka" 5.000 ns HIGH 50.00%;
XDCの場合
create_clock -period 5.000 -name clka [get_ports clka]
OFFSET IN
(例:クロック周期:10.000 ns)
UCFの場合:BEFORE
OFFSET = IN 8 BEFORE clka;
XDCの場合
set_input_delay -clock clka 2 [all_inputs]
UCFの場合:AFTER
OFFSET = IN 2 AFTER clka;
XDCの場合
set_input_delay -clock clka 2 [all_inputs]
OFFSET OUT
(例:クロック周期:20.000 ns)
UCFの場合:AFTER
OFFSET = OUT 12 AFTER clkc;
XDCの場合
set_output_delay -clock clkc -max 8 [all_outputs]
UCFの場合:BEFORE
OFFSET = OUT 8 BEFORE clkc;
XDCの場合
set_output_delay -clock clkc 8 [all_outputs]
TIG
UCFの場合
NET reset TIG;
XDCの場合
set_false_path -through [get_nets reset]
set_false_path -from [get_ports reset_port]
UCFの場合
INST reset TIG;
XDCの場合
set_false_path -from [get_cells reset]
set_false_path -through [get_cells reset]
set_false_path -to [get_cells reset]
配置制約
UCFの場合
NET test_pin[0] LOC= A18;
XDCの場合
set_property PACKAGE_PIN A18 [get_ports {test_pin[0]}]
UCFの場合:SLICE_X1Y4
INST a_reg[0] LOC = SLICE_X1Y4;
XDCの場合
set_property LOC SLICE_X1Y4 [get_cells a_reg[0]]
UCFの場合:RAMB18
INST ram0 LOC = RAMB18_X0Y5;
XDCの場合
set_property LOCRAMB18_X0Y5 [get_cells ram0]
UCFの場合:BUFGCTRL
INST cb[0] LOC = BUFGCTRL_X0Y20;
XDCの場合
set_property LOC BUFGCTRL_X0Y20 [get_cells cb[0]]
UCFの場合:IDELAY
INST idelay0 LOC = IDELAY_X0Y21;
XDCの場合
set_property LOC I DELAY_X0Y21 [get_cells idelay0]
UCFの場合:IDELAYCTRL
INST idelayctrl0 LOC = IDELAYCTRL_X0Y0;
XDCの場合
set_property LOC IDELAYCTRL_X0Y0 [get_cells idelayctrl0]
UCFの場合:CLOCK_DEDICATED_ROUTE=TRUE
NET clk0 CLOCK_DEDICATED_ROUTE = TRUE;
XDCの場合
set_property CLOCK_DEDICATED_ROUTE TRUE [get_nets clk0]
UCFの場合:CLOCK_DEDICATED_ROUTE=FALSE
NET clk0 CLOCK_DEDICATED_ROUTE = FALSE;
XDCの場合
set_property CLOCK_DEDICATED_ROUTE FALSE [get_net clk0]
UCFの場合:CLOCK_DEDICATED_ROUTE=BACKBONE
NET clk0 CLOCK_DEDICATED_ROUTE = BACKBONE;
XDCの場合
set_property CLOCK_DEDICATED_ROUTE BACKBONE [get_nets clk0]
おわりに
ここまでUCFとXDCのコマンドに関してお話してきましたが、他のコマンドを使用されている環境があるかと思います。
その場合、『ISE から Vivado Design Suite への移行ガイド』(UG911)の『UCF制約のXDCへ移行』の章を参考にしてください。
このブログは「FPGA設計ブログ一覧」の
4. インプリメント(配置配線)のひとつです。
最後までお付き合いいただき、ありがとうございました。
今回説明した内容でのご不明な点や、FPGA設計などでお困りのことなどがありましたら、下記よりお問い合わせください。
弊社ではFPGA設計や回路図設計、レイアウト設計、ソフトウェア設計、筐体設計などを受託開発しています。サービス内容をWEBサイトに掲載していますので、ぜひご覧ください。