セルの手動配置 - 2022.1 日本語

Vivado Design Suite ユーザー ガイド: デザイン解析およびクロージャ テクニック (UG906)

Document ID
UG906
Release Date
2022-05-04
Version
2022.1 日本語

セルの手動配置では、デバイスの最大限のパフォーマンスを引き出せる可能性があります。この手法は通常、デザインの小さい部分でのみ使用されます。たとえば、高速 I/O インターフェイス周辺のロジックや、ブロック RAM および DSP を配置する場合などです。手動での配置には時間がかかります。

すべてのフロアプラン手法には、多大なエンジニアリング時間がかかります。作業を繰り返して調整する必要がある場合もあります。セル名が変更された場合、フロアプラン制約もアップデートする必要があります。

フロアプランの際は、最終的なピン配置を念頭においてください。I/O が固定されていると有益です。I/O はフロアプランを開始する際のアンカー ポイントとなります。I/O に接続されているロジックは、固定されているピンの近くに移動されます。

ヒント: I/O と通信するブロックは、I/O の近くに配置してください。ピン配置によりブロックの I/O への接続が分散されてしまっている場合は、ピン配置または RTL を変更することを考慮してください。
図 1. 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 グリッドをディスエーブルにします。

図 2. 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 がデバイスに制約されますが、スライス ロジックはデバイス上のどこにでも配置できます。

ヒント: Pblock を配置する際は、階層を中央の Config ブロックをまたがるように配置しないでください。
図 3. Config ブロックをまたがるように配置しない