プログラマブル ユニット (PU) は、パーシャル リコンフィギュレーションに最低限必要なリソース セットです。粒度は、リソース タイプとアーキテクチャ ファミリによって異なります。7 シリーズの場合、この推奨される最低限のサイズは 1 つのリソースのクロック領域 High の列になります。クロック領域に揃えることで、専用の初期化ができるようになります。AMD UltraScale™ およびそれ以降のアーキテクチャでは隣接のサイトと配線リソース (インターコネクト タイル) が共有されるので、PU はペアで定義されます。詳細には、UltraScale および AMD Versal™ デバイスの「設計に関する考慮事項」の章を参照してください。
フロアプランに使用可能な手法の 1 つに、Pblock で必要とされる任意のサイトから基本的なプログラマブル ニットを構築する方法があります。基本的な PU は、次のようにサイトから外側に向かって特定していきます。
get_sites -of_objects [get_tiles -pu -of_objects [get_tiles -of_objects [get_sites <site>]]]
たとえば、隣り合った SLICE サイトのプログラマブル ユニットは次の方法で見つけることができます。
resize_pblock pblock_rp1 -add [get_sites -of_objects [get_tiles -pu -of_objects [get_tiles -of_objects [get_sites SLICE_X36Y259]]]]
この結果、SLICE 内の CLB のペアを示すベース PU と、それらの CLB 間の共有インターコネクトが返されます。
これは、通常問題のサイトがクロッキングや IO リソース、または Interlaken や PCIe® などのあまり頻繁に使用されない場合に便利な方法です。MMCM などのクロック調整ブロックが必要な場合、結果の PU はフル IO バンクになります。
resize_pblock pblock_rp1 -add [get_sites -of_objects [get_tiles -pu -of_objects [get_tiles -of_objects [get_sites MMCM_X0Y1]]]]
この IO PU の図では、MMCM が青色で示されています。
さらに詳しく見ると、CLB の列がこの PU の一部であることがわかります。