AR# 51602

14.x 制約 - 配置制約を使用して基本的な RPM を作成する方法

説明

ザイリンクス ISE 制約を使用して基本的な RPM を作成できますか。この RPM を簡単に使用する方法を理解するための、基本的なサンプル デザインはありますか。

ソリューション


基本的な RPM は同じタイプのプリミティブから構成されているものがほとんどです。フリップフロップに LUT をプラスしたもの、RAM、または DSP がそのプリミティブで、これらはまとめることもできます。これらのプリミティブの RPM を作成するための基本的な方法、および関連制約がどのように機能するかを、このアンサーでは説明します。

RPM を作成するための基本的な制約がいくつかあります。
- RLOC : インスタンシエートされたプリミティブにロケーション情報を渡すために使用されます。このロケーションは、座標の原点、または RPM グループを形成するプリミティブに相対的です。
- U_SET : ユーザー定義の RPM 名です。1 つの RPM グループのメンバーはすべて同じ名前である必要があります。
- RLOC_ORIGIN : FPGA の特定ロケーションにプリミティブを配置する必要がある場合、1 つの RPM グループのメンバーすべてに対し、座標の原点を設定します。
つまり、RPM のエレメントの正確な位置を決定するため、この値が RLOC に追加されます。Finall_location = RLOC_ORIGIN + RLOC.
- RPM_GRID : このオプションは、FPGA Editor で定義されているロケーション値に絶対パスを使用できるようにします (RPM グリッド X_Y_ など)。
- RLOC_RANGE : 座標原点ではなく、FPGA の領域を指定することができます。ツールによるコンポーネント配置でさらに融通が利くようになります。

例をあげて、これらの制約の機能を分かりやすく説明します。


例 1
INST "out_val_6" U_SET=FF_rpm3;
INST "out_val_7" U_SET=FF_rpm3;
INST "out_val_6" RLOC= X0Y0;
INST "out_val_7" RLOC=X2Y1;

この例では、FPGA の任意位置に 2 つのフリップフロップが配置されますが、X2-X0= X2 ; Y1-Y0= Y1 のモジュールを含むスライス間の関係は保持されます。

FPGA Editor では、「out_val_6」の位置は「X0Y93」というサイトである表示されます。
placemnt_ff_rpm3_a.png
FPGA Editor では、「out_val_6」の位置は「X2Y94 = X0Y93 + X2Y1」というサイトであると表示されます。
placemnt_ff_rpm3_b.png


例 2 :DSP モジュールは絶対パスで配置されます。
INST "Maddsub_mult_val_mult00001" U_SET=dsp_rpm2; ###DSP_1
INST "Maddsub_mult_val_mult00002" U_SET=dsp_rpm2; ###DSP_2
INST "Maddsub_mult_val_mult00001" RLOC=X49Y0 | RPM_GRID = GRID | RLOC_ORIGIN=X0Y0;
INST "Maddsub_mult_val_mult00002" RLOC=X49Y5;

この例では、FPGA で絶対パスが使用されるので、コンポーネントをその位置に配置する必要があります。そうでないと、ロケーションがプリミティブに有効なものでないためプリミティブを配置できず、NGDBuild でエラー メッセージが表示されます。
RPM_GRID = GRID が使用されている場合のコンポーネント配置の値は、「site "DSP48_X0Y37", type = DSP48E (RPM grid X37Y185) 」というふうに FPGA Editor で表示されます。
RLOC_ORIGIN は、座標の原点を表します。誤解を招かないよう、RPM_GRID = GRID が使用されているときは常に RLOC_ORIGIN=X0Y0 を使用するようにしてください。



例 3 : DSP + フリップフロップ + LUT をまとめたものが絶対パスで配置されています。
INST "Maddsub_mult_val_mult00003" U_SET=dsp_ff_logic__rpm |RLOC =X73Y15 | RPM_GRID = GRID | RLOC_ORIGIN=X0Y0; ### DSP module
INST "out_val_4" U_SET=dsp_ff_logic__rpm | RLOC =X69Y12; ### FF_1
INST "out_val_5" U_SET=dsp_ff_logic__rpm | RLOC =X79Y16; ### FF_2
INST "out_val_2_cmp_eq00001" U_SET=dsp_ff_logic__rpm | RLOC =X69Y12; ### LUT_1
INST "out_val_3_cmp_eq00001" U_SET=dsp_ff_logic__rpm | RLOC =X79Y16; ### LUT_2


異なるタイプのプリミティブをいっしょに配置する必要がある場合は、絶対パスでの配置が必要です。RPM_GRID = GRID および RLOC_ORIGIN 制約を使用して、各プリミティブ 値アプリケーションに正しい配置を指定します。LUT およびフリップフロップは同じスライスにまとめられます。
placemnt_ff_luts_dsp_rpm.png




これらの制約の機能を理解するため、ソース コード、UCF ファイル、いくつかのサンプルがこのアンサーに添付されています。




example_wts.vhd
example_wts.ucf

添付ファイル

関連添付ファイル

タイトル サイズ ファイルタイプ
example_wts.vhd 1 KB VHD
example_wts.ucf 1 KB UCF

アンサー レコード リファレンス

関連アンサー レコード

Answer Number アンサータイトル 問題の発生したバージョン 修正バージョン
43534 14.x 制約 - RLOC_RANGE 制約を適用する方法 N/A N/A
AR# 51602
日付 03/02/2013
ステータス アクティブ
種類 デザイン アドバイザリ
デバイス
ツール