LOCK_PINS はセル プ ロ パテ ィ で、 論理 LUT 入力 (I0、I1、I2、…) と LUT 物理入力ピ ン (A6、A5、A4、…) のマ ッ プ
を指定 し ます。
通常、 タ イ ミ ン グ ク リ テ ィ カルな LUT 入力を高速の A6 お よ び A5 物理 LUT 入力にマ ッ プす る ために使用 さ れます。
LOCK_PINS 制約の例 1
次の例では、I1 を A6 に、I0 を A5 にマ ッ プ し てい ます (デフ ォ ル ト のマ ッ プ を ス ワ ッ プ)。
% set myLUT2 [get_cells u0/u1/i_365]
% set_property LOCK_PINS {I0:A5 I1:A6} $myLUT2
# Which you can verify by typing the following line in the Tcl Console:
% get_property LOCK_PINS $myLUT2
LOCK_PINS 制約の例 2
次の例では、LUT6 の I0 を A6 にマ ッ プ し てい ます。I1 ~ I5 のマ ッ プは固定 さ れません。
I/O 制約
I/O 制約は次の も のに設定 し ます。
• ポー ト
• ポー ト に接続 さ れてい る セル 一般的な制約は、 次の と お り です。
• I/O 規格
• I/O ロ ケーシ ョ ン
Vivado Design Suite では、ISE® Design Suite の I/O 制約の多 く がサポー ト さ れてい ます。 次の I/O プ ロ パテ ィ の リ ス ト には、 すべてのプ ロ パテ ィ が含まれてい る わけではあ り ません。
° I/O プ ロ パテ ィ の完全 リ ス ト 、I/O ポー ト や I/O セルのプ ロ パテ ィ の詳細、 コ ー ド の構文例は、 『Vivado
Design Suite プ ロ パテ ィ リ フ ァ レ ン ス ガ イ ド 』 (UG912) [参照11] を参照 し て く だ さ い。
注記:特に指定 さ れていない限 り 、 すべてのプ ロ パテ ィ はポー ト オブジ ェ ク ト に適用 さ れます。
° こ れ ら のプ ロ パテ ィ の適用方法な ど については、 『7 シ リ ーズ FPGA SelectIO リ ソ ース ユーザー ガ イ ド 』 (UG471) の [参照13] な ど、 デバ イ ス の SelectIO の資料を参照 し て く だ さ い。
• DRIVE
出力バ ッ フ ァ ーの駆動電流を mA で指定 し ます。 一部の I/O 規格でのみ使用可能です。
• IOSTANDARD
I/O 規格を設定 し ます。
• SLEW
デバ イ ス出力の スルー レー ト (遷移レー ト) を設定 し ます。
• IN_TERM
入力ポー ト の入力終端抵抗の コ ン フ ィ ギ ュ レーシ ョ ン を設定 し ます。
• DIFF_TERM
IBUFDS_DIFF_OUT な ど のプ リ ミ テ ィ ブに対 し て 100 オームの差動終端のオン/オ フ を切 り 替え ます。
• KEEPER
ト ラ イ ス テー ト 出力ま たは双方向ポー ト に ウ ィ ー ク ド ラ イ バーを適用 し 、 駆動 さ れていない場合に値を保持 し ます。
• DCI_CASCADE
マ ス タ ーお よ びス レーブバン ク のセ ッ ト を定義 し ます。DCI 基準電圧は、 マ ス タ ーバン ク か ら ス レーブに チ ェーン接続 さ れます。DCI_CASACDE は IOBANK オブジ ェ ク ト に設定 さ れます。
• INTERNAL_VREF
I/O バン ク の Vref ピ ン を解放 し 、 代わ り に内部で生成 さ れた Vref を使用 し ます。INTERNAL_VREF は IOBANK
オブジ ェ ク ト に設定 さ れます。
• IODELAY_GROUP
IDELAY お よ び IODELAY セルのセ ッ ト を IDELAYCTRL と グループに し 、 デザ イ ンの IDELAYCTRL が自動的に 複製お よ び配置 さ れ る よ う に し ます。
• IOB
フ リ ッ プ フ ロ ッ プ を フ ァ ブ リ ッ ク ス ラ イ ス ではな く I/O ロ ジ ッ ク に配置す る よ う 試みます。 こ のプ ロ パテ ィ は、
ポー ト ではな く レ ジ ス タ に設定す る 必要があ り ます。
重要:IOB の処理方法は、ISE Design Suite と Vivado Design Suite で異な り ます。Vivado ツールでは、IOB を ポー ト お よ びポー ト に接続 さ れてい る レ ジ ス タセルの両方に設定で き ます。 ポー ト と その レ ジ ス タ に競合す る 値が設定 さ れ てい る 場合、 レ ジ ス タ に設定 さ れてい る 値が使用 さ れます。Vivado ツールで使用で き る 値は、TRUE お よ び FALSE のみです。FORCE は TRUE と し て処理 さ れ、AUTO は無視 さ れます。IOB の TRUE 設定を適用で き ない場合、ISE
と は異な り 、Vivado ツールではエ ラ ーではな く ク リ テ ィ カル警告が生成 さ れます。
• IOB_TRI_REG
UltraScale+ デバ イ ス の HDIO 用で、HDIO バン ク の IOB の ト ラ イ ス テー ト 信号を駆動す る IOB フ リ ッ プ フ ロ ッ
プ を、 フ ァ ブ リ ッ ク ス ラ イ ス ではな く 、I/O ロ ジ ッ ク に配置す る よ う 試みます。 こ のプ ロ パテ ィ は、 ポー ト では な く レ ジ ス タ に設定す る 必要があ り ます。
配置制約
配置制約はセルに適用 し 、 デバ イ ス内での ロ ケーシ ョ ン を制御 し ます。Vivado IDE では、ISE Design Suite お よ び PlanAhead™ ツールの配置制約の多 く がサポー ト さ れてい ます。
• LUTNM
2 つの LUT に固有の名前を指定 し 、1 つの LUT サ イ ト に配置 し ます。HLUTNM と は異な り 、LUTNM は、 異な る
階層セルに属 し てい る LUT を ま と め る ために使用で き ます。
• HLUTNM
• PBLOCK
論理ブ ロ ッ ク に設定 し 、 デバ イ ス の物理領域に制約 し ます。
PBLOCK は、 読み取 り 専用のセルプ ロ パテ ィ で、 セルが割 り 当て ら れてい る Pblock の名前です。 セル Pblock の メ ンバーを変更す る には、XDC Tcl コ マ ン ド add_cells_to_pblock お よ び remove_cells_from_pblock を使用 し ます。
• PACKAGE_PIN
タ ーゲ ッ ト デバ イ ス パ ッ ケージの ピ ンのデザ イ ン ポー ト の ロ ケーシ ョ ン を指定 し ます。
• LOC
ネ ッ ト リ ス ト の論理エ レ メ ン ト をデバ イ ス上のサ イ ト に配置 し ます。
• BEL
ネ ッ ト リ ス ト の論理エ レ メ ン ト をデバ イ ス上の ス ラ イ ス内の特定の BEL に配置 し ます。
詳細は、 次を参照 し て く だ さ い。
• 第7章 「XDC の優先順位」
• 第9章 「相対配置マ ク ロ の定義」
配置 タ イ プ
次の 2 種類の配置があ り ます。
• 「固定配置」
• 「固定 さ れていない配置」
固定配置
固定配置 と は、 次のいずれかの方法でユーザーが指定 し た配置の こ と です。
• 手動配置
• XDC 制約
• メ モ リ に読み込まれたデザ イ ンのセル オブジ ェ ク ト に IS_LOC_FIXED ま たは IS_BEL_FIXED を使用 し ます。
固定 さ れていない配置
固定 さ れていない配置は、 イ ンプ リ メ ン テーシ ョ ン ツールで実行 さ れ る 配置です。 配置が固定 と 設定 さ れてい る と 、 制約が設定 さ れてい る セルは イ ンプ リ メ ン テーシ ョ ンで移動で き ません。 固定配置は、 単純な LOC ま たは BEL と し て XDC フ ァ イ ルに保存 さ れます。
配置制約の例 1
次の例では、 ブ ロ ッ ク RAM を RAMB18_X0Y10 に配置 し 、 その位置に固定 し てい ます。
% set_property LOC RAMB18_X0Y10 [get_cells u_ctrl0/ram0]
配置制約の例 2
次の例では、LUT を ス ラ イ ス の C5LUT BEL に配置 し 、 その BEL 割 り 当て を固定 し てい ます。
% set_property BEL C5LUT [get_cells u_ctrl0/lut0]
配置制約の例 3
次の例では、 入力遅延を短 く す る ため入力バ ス レ ジ ス タ を ILOGIC セルに配置 し てい ます。
% set_property IOB TRUE [get_cells mData_reg*]
配置制約の例 4
次の例では、2 つの小型の LUT を、O5 お よ び O6 出力の両方を使用す る 1 つの LUT6_2 に ま と めてい ます。
% set_property LUTNM L0 [get_cells {u_ctrl0/dmux0 u_ctrl0/dmux1}]
配置制約の例 5
次の例では、 ブ ロ ッ ク RAM の最初の列が使用 さ れない よ う に し てい ます。
% set_property PROHIBIT TRUE [get_sites {RAMB18_X0Y* RAMB36_X0Y*}]
配置制約の例 6
次の例では、 配置で ク ロ ッ ク 領域 X0Y0 が使用 さ れない よ う に し てい ます。
% set_property PROHIBIT TRUE [get_sites -of [get_clock_regions X0Y0]]
配置制約の例 7
次の例では、SLR0 が使用 さ れない よ う に し てい ます。
% set_property PROHIBIT TRUE [get_sites -of [get_slrs SLR0]]
重要:1 つのセルに BEL と LOC の両方のプ ロ パテ ィ を割 り 当て る 場合、 まず BEL を割 り 当ててか ら 、LOC を割 り 当
て る 必要があ り ます。
配線制約
配線制約はネ ッ ト オブジ ェ ク ト に適用 し 、 配線 リ ソ ース を制御 し ます。
固定配線
固定配線は、ISE の指定配線 (Directed Routing) と 同様、 配線を固定す る 機能です。 ネ ッ ト の配線 リ ソ ース の固定に は、3 つのネ ッ ト プ ロ パテ ィ が関係 し ます。表8-1 を参照 し て く だ さ い。
ネ ッ ト の配線が確実に固定 さ れ る よ う にす る には、 その配線のすべてのセルを固定 し てお く 必要があ り ます。
次に、 配線を完全に固定す る 例を示 し ます。 こ の例では、図8-1 のデザ イ ンのネ ッ ト netA (青色でハ イ ラ イ ト) の配 線を固定す る 制約を作成 し ます。
イ ンプ リ メ ン ト 済みデザ イ ン を メ モ リ に読み込む と 、 ネ ッ ト の配線情報を ク エ リ で き る よ う にな り ます。
% set net [get_nets netA]
% get_property ROUTE $net
{ CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 { IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 }
表 8-1:ネ ッ ト プ ロパテ ィ
プ ロパテ ィ 機能
ROUTE 読み取 り 専用のネ ッ ト プ ロ パテ ィ
IS_ROUTE_FIXED 配線全体を固定す る よ う マー ク
FIXED_ROUTE ネ ッ ト の一部を固定配線
X-Ref Target - Figure 8-1
図 8-1:配線制約の例を示すためのシ ン プルなデザイ ン
制約を今後のために XDC フ ァ イ ルにバ ッ ク ア ノ テー ト す る には、 固定 さ れたネ ッ ト に接続 さ れてい る すべてのセル の配置 も 保持す る 必要があ り ます。 こ の情報は、[Schematic] ま たは [Device] ウ ィ ン ド ウ でセルを選択 し 、[Properties]
ウ ィ ン ド ウ の LOC/BEL プ ロ パテ ィ 値で確認す る か、 ま たは、Tcl コ ン ソ ールで こ れ ら の値を直接 ク エ リ で き ます。
% get_property LOC [get_cells {a0 L0 L1}]
SLICE_X0Y47 SLICE_X0Y47 SLICE_X0Y47
% get_property BEL [get_cells {a0 L0 L1}]
SLICEL.CFF SLICEL.A6LUT SLICEL.B6LUT
固定 さ れた配線は タ イ ミ ン グ ク リ テ ィ カルであ る こ と が多いので、LUT ピ ンのマ ッ プ も LUT の LOCK_PINS プ ロ パ テ ィ で指定 し 、 配線時に ピ ンが ス ワ ッ プ さ れない よ う にす る 必要があ り ます。
各論理ピ ンのサ イ ト ピ ンは、Tcl コ ン ソ ールで ク エ リ で き ます。
% get_site_pins -of [get_pins {L0/I1 L0/I0}]
SLICE_X0Y47/A4 SLICE_X0Y47/A2
% get_site_pins -of [get_pins {L1/I1 L1/I0}]
SLICE_X0Y47/B3 SLICE_X0Y47/B2
netA の配線を固定す る のに必要な完全な XDC 制約は、 次の と お り です。
set_property BEL CFF [get_cells a0]
set_property BEL A6LUT [get_cells L0]
set_property BEL B6LUT [get_cells L1]
set_property LOC SLICE_X0Y47 [get_cells {a0 L0 L1}]
set_property LOCK_PINS {I1:A4 I0:A2} [get_cells L0]
set_property LOCK_PINS {I1:A3 I0:A2} [get_cells L1]
set_property FIXED_ROUTE { CLBLL_LL_CQ CLBLL_LOGIC_OUTS6 FAN_ALT5 FAN_BOUNCE5 { IMUX_L17 CLBLL_LL_B3 } IMUX_L11 CLBLL_LL_A4 } [get_nets netA]
XDC ではな く 、 イ ン タ ラ ク テ ィ ブな Tcl コ マ ン ド を使用 し てい る 場合、 次の よ う に、1 つの place_cell コ マ ン ド
で一度に複数の配置制約を指定で き ます。
place_cell a0 SLICE_X0Y47/CFF L0 SLICE_X0Y47/A6LUT L1 SLICE_X0Y47/B6LUT
place_cell の詳細は、『Vivado Design Suite Tcl コ マ ン ド リ フ ァ レ ン ス ガ イ ド 』 (UG835) [参照10] を参照 し て く だ さ い。
コ ン フ ィ ギ ュ レーシ ョ ン制約
コ ン フ ィ ギ ュ レーシ ョ ン制約は、 ビ ッ ト ス ト リ ーム生成用のグ ロ ーバル制約で、 現在のデザ イ ンに適用 し ます。 コ ン フ ィ ギ ュ レーシ ョ ン モー ド な ど の制約が こ れに含まれます。
コ ン フ ィ ギ ュ レーシ ョ ン制約の例 1
コ ン フ ィ ギ ュ レーシ ョ ン制約の例 2
次の例は、 デバ ッ グ ビ ッ ト ス ト リ ーム をオンに し ます。
% set_property BITSTREAM.GENERAL.DEBUGBITSTREAM Yes [current_design]
コ ン フ ィ ギ ュ レーシ ョ ン制約の例 3
次の例では、CRC チ ェ ッ ク をデ ィ ス エーブルに し てい ます。
% set_property BITSTREAM.GENERAL.CRC Disable [current_design]
ビ ッ ト ス ト リ ーム生成プ ロ パテ ィ お よ び定義の リ ス ト は、 『Vivado Design Suite ユーザー ガ イ ド: プ ロ グ ラ ムお よ びデ バ ッ グ』 (UG908) [参照12] のこ のセ ク シ ョ ンを参照 し て く だ さ い。