I/O およびクロック バッファー - 2022.1 日本語

Vivado Design Suite ユーザー ガイド: 階層デザイン (UG905)

Document ID
UG905
Release Date
2022-04-20
Version
2022.1 日本語

I/O およびクロック バッファーは OOC モジュール内でサポートされますが、使用方法によっては特別な注意が必要なこともあります。

I/O バッファー
OOC ポートが最上位の I/O バッファーに直接接続される場合、このバッファーを OOC モジュール内に移動すると結果が改善することがあります。ただし、すべての状況のおいてこれが可能なわけではありません。たとえば、OOC ポートが最上位の IBUF に直接接続されているのに、IBUF が OOC モジュール以外のその他のロジックも駆動する場合などです。このような場合、OOC モジュール内のロジックを HD.PARTPIN_LOCS 制約で制御する必要があります。詳細は、アウト オブ コンテキスト コマンドおよび制約 を参照してください。
リージョナル クロック バッファー
BUFR または BUFHCE が OOC モジュール内にある場合、特定の位置にロックする必要があります。これにより、バッファーで駆動されるロジックが適切に配置されるようになります。ただし、BUFR または BUFHCE が最上位デザインに含まれ、OOC Pblock がバッファーでアクセスできるよりも多くのクロック領域にまたがる場合、さらに多くの情報を供給する必要があります。入れ子の Pblock は、OOC Pblock で定義された範囲のサブセットである範囲で作成する必要があります。この入れ子の Pblock には、BUFR または BUFHCE で駆動されるすべてのセルが含まれ、次のコマンドで作成できます。
create_pblock -parent <parent_pblock_name> <nested_pblock_name>
add_cells_to_pblock <nested_pblock_name> -cells [get_cells -of [get_nets -segments -of [get_ports [list <clock_port> <clock_port>]]] -filter "(IS_PRIMITIVE)"]
resize_pblock <nested_pblock_name> -add {SLICE_Xx1Yy1:SLICE_Xx2Yy2}

これを、最上位の BUFR または BUFHCE で駆動される各モジュール ポートに対して実行する必要があります。複数の OOC クロック ポートのロードが同じクロック領域に含まれる場合、該当するすべてのポートを上記の add_cells_to_pblock コマンドでリストできます。入れ子の Pblock の範囲は、最上位インプリメンテーションの BUFR または BUFHCE 位置に対応する必要があります。最上位のバッファー位置と OOC モジュールの対応する Pblock 範囲が一致しないと、最上位インプリメンテーション中に配線不可能な状態になることがあります。

グローバル クロック バッファー
グローバル バッファーは OOC モジュール内でサポートされます。BUFR が OOC インスタンス内にあると、OOC インプリメンテーションでクロック ネットがグローバル配線に配線されます。OOC ポートが最上位のクロック ネットで駆動される場合、クロック ネットは OOC インプリメンテーション中には配線されず、クロック遅延/スキューを決定するのにタイミング見積もりが使用されます。この場合、タイミング見積もりを改善するため HD.CLK_SRC 制約を使用する必要があります。この制約により、ドライバーの位置およびタイプ (BUFG または BUFR など) がツールに示され、タイミング見積もりを改善するため CPR (Clock Pessimism Removal) が計算されます。CPR の詳細は、 『Vivado Design Suite ユーザー ガイド: デザイン解析およびクロージャ テクニック』 (UG906) を参照してください。