セルの手動配置では、デバイスの最大限のパフォーマンスを引き出せる可能性があります。この手法は通常、デザインの小さい部分でのみ使用されます。たとえば、高速 I/O インターフェイス周辺のロジックや、ブロック RAM および DSP を配置する場合などです。手動での配置には時間がかかります。
すべてのフロアプラン手法には、多大なエンジニアリング時間がかかります。作業を繰り返して調整する必要がある場合もあります。セル名が変更された場合、フロアプラン制約もアップデートする必要があります。
フロアプランの際は、最終的なピン配置を念頭においてください。I/O が固定されていると有益です。I/O はフロアプランを開始する際のアンカー ポイントとなります。I/O に接続されているロジックは、固定されているピンの近くに移動されます。
前の図のようなフロアプランは、タイミングには有益ではありません。ブロックを分離するか、ソース コードを変更するか、ブロック RAM および DSP のみを制約することを考慮してください。また、外部タイミング要件で許容される場合、I/O レジスタの配置を解除してみてください。
上記の Pblock は、次の XDC 制約で表されます。
create_pblock Pblock_usbEngine
add_cells_to_pblock [get_pblocks Pblock_usbEngine] [get_cells -quiet [list
usbEngine1]]
resize_pblock [get_pblocks Pblock_usbEngine] -add {SLICE_X8Y105:SLICE_X23Y149}
resize_pblock [get_pblocks Pblock_usbEngine] -add {DSP48_X0Y42:DSP48_X1Y59}
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB18_X0Y42:RAMB18_X1Y59}
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB36_X0Y21:RAMB36_X1Y29}
1 行目で Pblock が作成されます。2 行目 (add_cells_to_pblock
) で Pblock の階層レベルが指定されます。4 つのリソース タイプ (SLICE、DSP48、RAMB18、RAMB36) があり、それぞれグリッドがあります。グリッドで制約されていないロジックは、デバイスのどこにでも配置できます。階層レベルのブロック RAM のみを制約するには、ほかの Pblock グリッドをディスエーブルにします。
結果の XDC コマンドでは、Pblock が簡略化されます。
create_pblock Pblock_usbEngine
add_cells_to_pblock [get_pblocks Pblock_usbEngine] [get_cells -quiet [list
usbEngine1]]
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB18_X0Y42:RAMB18_X1Y59}
resize_pblock [get_pblocks Pblock_usbEngine] -add {RAMB36_X0Y21:RAMB36_X1Y29}
ブロック RAM がデバイスに制約されますが、スライス ロジックはデバイス上のどこにでも配置できます。