AR# 2449

12.1 制約/タイミング - 配置制約およびタイミング制約の基本的なユーザー制約ファイル (UCF) の構文例

説明

よく使用されるユーザー制約ファイル (UCF) の構文例を示します。詳細については『制約ガイド』を参照してください。
http://japan.xilinx.com/support/software_manuals.htm

さらに (ザイリンクス アンサー 3416)(ザイリンクス アンサー 3753)、および (ザイリンクス アンサー 6662) も参照してください。

ソリューション

タイミング用の基本 UCF 構文例

PERIOD 制約

PERIOD 制約は、パッド デスティネーションを除くリファレンス ネットでクロックされるレジスタ、ラッチ、同期 RAM を開始点または終点とするタイミング パスすべての対象にします。また、フリップフロップなどのほかの同期エレメントと相対する同期エレメントのセットアップ要件も考慮されます。

メモ : デフォルトの単位はナノ秒です。

NET clk20MHz PERIOD = 50 ;
NET clk50mhz TNM = registers_50mhz ;
TIMESPEC TS01 = PERIOD registers_50mhz 20 ;

FROM:TO 制約

FROM:TO はタイム グループ間のパスの制約を設定するのに使用することができます。

メモ : キーワード RAMS、FFS、PADS、LATCHES は、あらかじめ定義されたタイム グループで、デザイン内の各タイプのエレメントを指定するために使用します。


TIMESPEC TS02 = FROM : PADS : TO : FFS : 36 ;
TIMESPEC TS03 = FROM : FFS : TO : PADS : 36 ns ;
TIMESPEC TS04 = FROM : PADS : TO : PADS : 66 ;
TIMESPEC TS05 = FROM : PADS : TO : RAMS : 36 ;
TIMESPEC TS06 = FROM : RAMS : TO : PADS : 35.5 ;


メモ : あらかじめ定義されているタイム グループ、LATCHES および RAMS は CPLD デザインには適用できません。


OFFSET 制約

OFFSET の詳細は、ザイリンクス ホワイトペーパ WP237、『What are OFFSET Constraints』を参照してください。
http://japan.xilinx.com/xlnx/xweb/xil_publications_display.jsp?category=White+Papers

PADS:TO:<synchronous element> または <synchronous element>:TO:PADS にクロック バッファ/配線遅延を自動的に含めるには、FROM:TO 制約ではなく OFFSET 制約を使用します。


駆動デバイスの最大 clock-to-out (Tco) が 10 ns の入力の場合は次のようになります。

NET in_net_name OFFSET = IN : 10 : AFTER : clk_net_name ;


駆動されているデバイスの最小セットアップ時間 (Tsu) が 5 ns の出力の場合は次のようになります。

NET out_net_name OFFSET = OUT : 5 : BEFORE : clk_net_name ;


タイミングの無視

パスのタイミングを無視できる場合は、Timing Ignore (TIG) を使用します。

メモ : バス名には、ワイルドカードとしてアスタリスク (*) を使用できます。疑問符 (?) は 1 文字のワイルド カードとして使用できます。


ネット「reset_n」のタイミングを無視する場合 :

NET : reset_n : TIG ;


インスタンス「mux_mem」にあるネット data_reg(7:0) を無視する場合 :

NET : mux_mem/data_reg* : TIG ;


インスタンス「mux_mem」にあるネット data_reg(7:0) を TS01 という名前のタイムスペックに関連してのみ無視する場合 :

NET : mux_mem/data_reg* : TIG = TS01 ;


「data1_sig」および「data2_sig」ネットを無視する場合 :

NET : data?_sig : TIG ;


例外パス

ほかの出力よりも遅い出力がある場合、出力ネット out_data(7:0) および irq_n を設定した次の例のように、例外の TIMESPEC を作成できます。


TIMEGRP slow_outs = PADS(out_data* : irq_n) ;
TIMEGRP fast_outs = PADS : EXCEPT : slow_outs ;
TIMESPEC TS08 = FROM : FFS : TO : fast_outs : 22 ;
TIMESPEC TS09 = FROM : FFS : TO : slow_outs : 75 ;


複数サイクルの FF-to-FF パスがある場合は、TIMEGRP または TNM を使用してタイム グループを作成できます。


注意 : VHDL/Verilog 合成プログラムでは、フリップフロップの Q 出力ネットにわかりづらい名前が付けられる場合が多いのですが、フリップフロップのインスタンスにはわかりやすい名前が付けられます。


TIMEGRP 例 :

TIMEGRP slowffs = FFS(inst_path/ff_q_output_net1* :
inst_path/ff_q_output_net2*);


インスタンスに付けられている TNM の例 :

INST inst_path/ff_instance_name1_reg* TNM = slowffs ;
INST inst_path/ff_instance_name2_reg* TNM = slowffs ;


FF クロック イネーブルが複数サイクル パスのフリップフロップすべてで使用されている場合は、このクロック イネーブル ネットに TNM を設定できます。

メモ : ネットに設定された TNM は、そのネットに接続されている FF、LATCH、RAM、PAD すべてに順方向に伝搬されます。


NET ff_clock_enable_net TNM = slowffs ;


上記 3 つのいずれかの方法で、FROM:TO TIMESPEC にタイム グループ slowffs を使用した例は次のとおりです。

TIMESPEC TS10 = FROM : slowffs : TO : FFS : 100 ;


スキューの制御

ネットに関連するスキューまたは遅延に制約を設定するには、次のように指定します。

NET any_net_name MAXSKEW = 7 ;
NET any_net_name MAXDELAY = 20 ns;


優先順位

詳細は、(ザイリンクス アンサー 5747) を参照してください。

このアンサー レコードのフィードバックをお願いします。


ロジックまたは I/O の配置制約

I/O ピン番号の割り当てと使用禁止

I/O ピン番号は、次のように割り当てます。

PLCC/PQFP タイプのパッケージ :

NET io_net_name LOC = P111 ;
NET HIERARCHY_BLOCK/io_net_name LOC = P44 ;


PGA/BGA タイプのパッケージ :

NET io_net_name LOC = A11 ;
NET HIERARCHY_BLOCK/io_net_name LOC = C12 ;

メモ : 「P」は、PLCC/PQFP タイプのパッケージでのみ使用されます。


I/O ピンを複数のピン位置に割り当てるには、次のように指定します。

次の例では、io_net_name を P4、P5、または P6 に割り当てます。

NET io_net_name LOC = P4, P5, P6 ;


I/O ピン C26 または CLBR5C3 を使用禁止 :

CONFIG PROHIBIT = C26 ;
CONFIG PROHIBIT = CLB_R5C3 ;


メモ : モード ピン (MD0、MD1、MD2) とバウンダリ スキャン ピン (TCK、TDI、TDO、TMS) は、割り当てたり、使用禁止にすることができません。これらのサイトを UCF ファイルで使用禁止にすると、エラーが発生することがあります。これらのサイトは予約されており、デザイン内で指定された場合にのみ使用されます。


特定ロジック ロケーションの割り当て

0 を配置します。

特定の CLB での基本エレメント (BEL) 。BEL = FF、LUT、RAM など:

INST io_buf_name LOC = P110 ;
INST instance_path/BEL_name LOC = CLB_R17C36 ;

エリア制約の割り当て

XC3000 - 行 F と 列 F を境界とするデバイスの左上隅に CLB ロジックを配置します。

INST logic_name LOC=AA:FF ;


XC4000 - 行 5、列 5 を境界とするデバイスの左上隅の 5 X 5 の領域内にロジックを配置します。

INST logic_name LOC=CLB_R1C1:CLB_R5C5 ;


XC4000、XC5200 - 行 1、列 1 と行 2、列 8 で囲まれた領域内に BUFT を配置します。

INST logic_name LOC=TBUF_R1C1:TBUF_R2C8 ;


XC5200 - 行 4 と列 4 を境界とするデバイスの左上隅にあるいずれかのスライスにロジックを配置します。


INST logic_name LOC=CLB_R1C1.LC3:CLB_R4C4..LC0 ;

複数の LOC 制約の例:

XC4000 - 上辺または下辺にデコーダを配置します。

INST logic_name LOC=T,B ;


XC4000、Virtex、Spartan - デバイスの左上隅の 5 X 5 の領域内で、行 5、列 5 の CLB 以外にロジックを配置します。

INST logic_name LOC=CLB_R1C1:CLB_R5C5 ;
INST logic_name PROHIBIT=CLB_R5C5 ;


XC4000、Virtex、Spartan - 列 8 の CLB にロジックを配置します。

INST logic_name LOC=CLB_R*C8;


ロジックまたは I/O に対するその他の制約

FAST または SLOW 属性

OBUF を FAST または SLOW に指定します。

INST obuf_name FAST ; #Alternate: NET pad_net FAST;
INST obuf_name SLOW ; #Alternate: NET pad_net SLOW;


MEDDELAY および NODELAY

IOB 入力の FF 遅延を宣言します (デフォルトは MAXDELAY)。

メモ : MEDDELAY/NODELAY 属性は、map -pr i オプションで IOB にプッシュされる CLB フリップフロップに設定できます。


INST input_ff_name MEDDELAY ;
INST input_latch_name NODELAY ;


バージョン 3.1i で、IOB 入力の FF 遅延が変更されました。


INST input_ff_name IOBDELAY = Both;
INST input_latch_name IOBDELAY = IFD;


KEEP

ネットがロジック ブロックに組み込まれないよう指定します。

NET net_name KEEP ;


ネット フラグ (S 属性)

未接続のロジックが最適化で削除されないよう指定します (FPGA のみ)。

NET net_name S;


INIT

ROM、RAM、レジスタを初期化するには、次を使用します。

INST ROM_name INIT = 5555;
INST FF_name INIT = S;
AR# 2449
日付 01/28/2013
ステータス アクティブ
種類 一般
ツール 詳細 概略