KEEP - 2022.1 日本語

Vivado Design Suite ユーザー ガイド: 合成 (UG901)

Document ID
UG901
Release Date
2022-06-06
Version
2022.1 日本語

KEEP 属性は、信号が削除されたりロジック ブロックに吸収されるような最適化が実行されないように指定します。この属性が設定された信号は保持され、ネットリストに含まれます。

たとえば、2 ビットの AND ゲートの出力で別の AND ゲートを駆動する信号に KEEP 制約を設定すると、信号は両方の AND ゲートを含む大型の LUT には統合されません。

注意: KEEP をほかの属性と共に使用する場合は注意が必要です。ほかの属性が KEEP 属性と競合する場合、通常 KEEP 属性が優先されます。

KEEP は、タイミング制約ともよく併用されます。通常は最適化される信号にタイミング制約が設定されている場合、 KEEP を設定すると最適化されなくなり、正しいタイミング規則が使用されます。

注記: KEEP 属性はモジュールまたはエンティティのポートには設定できません。特定のポートを保持する必要がある場合は、 -flatten_hierarchy none を使用するか、モジュールまたはエンティティ自体に DONT_TOUCH を設定します。

注意: ロードレス信号で KEEP 属性を使用する場合は注意が必要です。  合成でこれらの信号が保持されることで、フローの後半で問題が発生します。

次に例を示します。

ある信号に MAX_FANOUT 属性が設定されており、この信号で駆動される信号に KEEP 属性が設定されている場合、 KEEP 属性が設定されている信号ではファンアウト複製は実行されません。

RAM_STYLE="block" が使用されており、その RAM の一部となるべきレジスタに KEEP が設定されていると、 KEEP 属性のためにブロック RAM が推論されません。

有効な値は、次のとおりです。

TRUE : 信号を保持します。

FALSE : Vivado 合成で最適化できるようになります。 false を使用しても、信号が無条件に削除されることはありません。デフォルト値は false です。

この属性は信号、レジスタ、ワイヤに設定できます。

推奨: この属性は RTL のみで設定します。XDC ファイルが読み込まれる前に、保持する必要のある信号が最適化で削除されてしまうことがあるので、この属性が必ず使用されるように RTL で設定します。

注記: KEEP 属性を使用しても、配置配線では信号は保持されません。 DONT_TOUCH 属性を使用してください。