1. 株式会社PALTEK
  2. TECHブログ
  3. 技術情報
  4. 【Vivado®で使用するXDCファイルの基本的な記述例】第5回 XDCファイルの基本的な記述について

TECHブログ

【Vivado®で使用するXDCファイルの基本的な記述例】第5回 XDCファイルの基本的な記述について

【Vivado®で使用するXDCファイルの基本的な記述例】第5回 XDCファイルの基本的な記述について

このブログでは、Vivado® ML EditionsおよびVivado® design Suiteで使用する、「XDCファイル」の基本的な記述について解説します。

XDCとは、Xilinx Design Constraint(頭文字)の略です。
XDCファイルは、AMD社のFPGAおよび適応型SoCに対して制約を与えることができるファイルで、以下の項目で制約設定が可能です。

  • ・端子配置設定
  • ・クロック設定
  • ・コンフィグレーション設定
  • ・タイミング設定

など

今回は、UCF制約からXDC制約への移行について記載します。

目次

はじめに

まず、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設計などでお困りのことなどがありましたら、下記よりお問い合わせください。

お問い合わせはこちら

弊社ではFPGA設計や回路図設計、レイアウト設計、ソフトウェア設計、筐体設計などを受託開発しています。サービス内容をWEBサイトに掲載していますので、ぜひご覧ください。

詳細はこちら

このブログのシリーズ

関連ブログ