各 RP には、RM に使用可能な物理リソースを定義するため Pblock が必要です。この Pblock は RP に設定するので、次の制限および要件が適用されます。
- Pblock には、有効なリコンフィギャラブル エレメント タイプのみを含めます。領域がほかのサイト タイプと重なる可能性もありますが、これらのほかのサイトは
resize_pblock
コマンドに含めないようにする必要があります。 - 各コンポーネント タイプの複数の Pblock 矩形を使用して RP 領域を作成できますが、配線性が高くなるよう、これらの矩形は連続している必要があります。リコンフィギャラブルでないリソース用のギャップを含めることは可能ですが、一般的には、全体の形をシンプルにした方がデザインを配置配線しやすくなります。
-
7 シリーズ デバイスで
RESET_AFTER_RECONFIG
プロパティを使用する場合は、Pblock の高さをクロック領域の境界に揃える必要があります。詳細は、リコンフィギュレーション後にリセットを適用 を参照してください。 - 7 シリーズ デバイスでは、Pblock の幅および構成ためにインターコネクト列が分割されないようにする必要があります。詳細は、7 シリーズ デバイスでの Pblock の作成 を参照してください。
- 一部のパーツで Pblock を定義する際は、最大の RM のリソース使用量を考慮する必要があります。最大の RM で使用されるリソース数がターゲット デバイスの資料に記載されている最大リソース数を超えている場合は、
write_bitstream
コマンドでエラーが生成されます。 - Pblock がデザインのほかの Pblock と重ならないようにする必要があります。
- RP 内のフロアプラン ロジックの標準 Pblock およびネストされた Pblock はサポートされています。
- Pblock のサイズおよび境界は固定したままにする必要があるので、リコンフィギャラブル Pblock の IS_SOFT プロパティは自動的に FALSE に設定されます。このプロパティを TRUE にすると、エラーになります。
- リコンフィギャラブル Pblock 内の入れ子の Pblock には、IS_SOFT = FALSE プロパティが継承されます。これは変更できません。
表 1. Pblock のコマンドとプロパティ コマンド/プロパティ名 説明 create_pblock
各 RP インスタンスの初期 Pblock を作成します。 add_cells_to_pblock
Pblock に含まれるインスタンスを指定します。通常、ボトムアップ合成で定義される階層レベルを指定します。 resize_pblock
Pblock のサイト タイプ (SLICE、RAMB36 など) とサイト位置を定義します。 RESET_AFTER_RECONFIG
リコンフィギャラブル領域での専用 GSR イベントの使用を制御する Pblock プロパティです。このプロパティを使用することを強くお勧めします。ただし、7 シリーズおよび Zynq デバイスの場合は、Pblock の高さがクロック領域の境界に揃えられている必要があります。 CONTAIN_ROUTING
Pblock に含まれない配線リソースが使用されないようにする Pblock プロパティです。このプロパティは PR では必須で、RP に対して自動的に TRUE に設定されます。スタティック配線に Pblock 内のリソースを使用することは可能です。 EXCLUDE_PLACEMENT
定義された Pblock 範囲内に Pblock に含まれないロジックが配置されないようにする Pblock プロパティです。このプロパティは PR では必須で、RP に対して自動的に TRUE に設定されます。 PARTPIN_SPREADING
INT タイルごとの PartPin の最大数を制御します。デフォルトは 5 です。
値を小さくすると (3 など)、パーティション ピンの配置が分散されます。これにより PartPin が多く配置されているエリアの配線密集を緩和できますが、RP インターフェイスのタイミングに悪影響を与える可能性があります。
次に、RP の制約例を示します。
#define a new pblock
create_pblock pblock_count
#add a hierarchical module to the pblock
add_cells_to_pblock [get_pblocks pblock_count] [get_cells [list inst_count]]
#define the size and components within the pblock
resize_pblock [get_pblocks pblock_count] -add {SLICE_X136Y50:SLICE_X145Y99}
resize_pblock [get_pblocks pblock_count] -add {RAMB18_X6Y20:RAMB18_X6Y39}
resize_pblock [get_pblocks pblock_count] -add {RAMB36_X6Y10:RAMB36_X6Y19}