パーシャル リコンフィギュレーション可能なデザインの基本要件の 1 つに、RM 間の一貫性があります。1 つのモジュールを別のモジュールに置き換えるので、スタティック デザインと RM の間の接続が、論理的および物理的に同一である必要があります。この一貫性を得るため、パーティション境界を越える最適化および境界そのものの最適化は実行できません。
効率をできる限り高めるため、RP のすべてのポートがスタティック デザイン側でアクティブに使用されるようにします。たとえば、RP のスタティック ドライバーが定数 (0 または 1) で駆動される場合、LUT インスタンスを作成し、ローカルで定数ドライバーに接続してインプリメントし、最適化で削除されないようにします。同様に、未接続の出力が RP の出力にあると、デザイン全体に無駄が出ます。これらの方法はインプリメンテーション ツールで適用されるようにし、デザイン アセンブリの段階ですべての RM が同じポートを持つようにする必要があります。
合成後にすべての RP のインターフェイスを確認し、定数ポートまたは未接続のポートの数をできるだけ少なくしてください。無駄なロジックをなくすことにより、リソース使用率が下がり、配線密集やタイミング クロージャの問題に対処しやすくなります。
パーティション インターフェイスを使用する場合、次の 6 つの状況が考えられます。
- スタティック側とリコンフィギャラブル モジュール側の両方がアクティブ ロジック
- (パーティションの入力または出力)
これが最適な状況です。パーティション ピンが挿入されます。
パーティション入力が VCC または GND で駆動される場合は、これらの制約を RM に設定してください。これにより LUT の使用数が削減され、インプリメンテーション ツールによりこれらの定数を RM ロジックと共に最適化できるようになります。
- スタティック側にはアクティブ ドライバーがあるが、リコンフィギャラブル モジュールにはアクティブ ロードがない
- (パーティションの入力)
すべての RM の I/O 要件が同じであるとは限らないので、この状況が認められます。パーティション ピンが挿入され、未使用の入力ポートは未接続のままになります。
たとえば、1 つのモジュールで CLK_A が必要で、2 番目のモジュールで CLK_B が必要な場合、クロック スパインは RP のクロック領域にあらかじめ配線されますが、モジュールは必要なクロック ソースのみを使用します。ただし、パーティション入力が RM で使用されない場合は、パーティション インスタンシエーションから削除する必要があります。
- スタティック側にはアクティブ ロードがあるが、リコンフィギャラブル モジュールにはアクティブ ドライバーがない
- (パーティションの出力)
これは先ほどの状況と似ており、認められます。パーティション ピンが挿入され、RM 内でグランド (論理 0) により駆動されます。
- スタティック側にはアクティブ ドライバーがないが、リコンフィギャラブル モジュールにはアクティブ ロードがある
- (パーティションの入力)
この状況ではエラーが発生するので、パーティション インターフェイスを変更して解決する必要があります。次に、表示されるエラー メッセージの例を示します。
ERROR: [Opt 31-65] LUT input is undriven either due to a missing connection from a design error, or a connection removed during opt_design.
このエラー メッセージの後に、RM 内の LUT インスタンスが続きます。
- リコンフィギャラブル モジュールにはアクティブ ドライバーがあるが、スタティック側にはアクティブ ロードがない
- (パーティションの出力)
この状況ではエラーは発生しませんが、RM ロジックが残るので、最適ではありません。パーティション ピンは挿入されません。これらのパーティション出力は削除する必要があります。
- スタティック側とリコンフィギャラブル モジュール側のどちらにもパーティション ポート用のドライバーまたはロードがない
- (パーティションの入力または出力)
何も挿入されず、使用されないので、インプリメンテーションが非効率になることはありませんが、インスタンシエーション ポート リストの面では不要です。
パーティション インターフェイスに関する基本的な要件の 1 つに、各ピンを一方向にするというのがあります。モジュール境界での双方ポート (inout 型) の使用は、サポートされません。この要件は、ザイリンクス FPGA 内では配線リソースが基本的に一方向で、方向の変更を管理しやすくする内部トライステート リソースが存在しないためです。モジュール ポートが合成後に入力または出力になる場合でも、Vivado ではまだポートが双方向になる可能性があると判断されます。inout ポートは明示的に入力または出力に変更してください。