Quartus® Prime プロ・エディションのユーザーガイド: デザイン最適化

ID 683641
日付 7/08/2024
Public
ドキュメント目次

7.5. ECO コマンドの制限事項

ECO コマンドには、インテル FPGA デバイス内の接続依存関係により、次の制限事項があります。

新しい LUT を正確な場所に作成する

  • ECO コマンドを使用して専用接続を修正することはできません。
  • 単一の ALM 内で専用接続を修正することはできません。この制限は、LUT とフリップフロップ・ノード間の直接接続に適用されます。
  • Hyper-Register からの接続、または Hyper-Register への接続は可能です。ただし、Hyper-Register から接続を削除すると配線が宙に浮いたままになってしまうため、Hyper-Register からの接続や Hyper-Register への接続を削除することはできません。代わりに、make_connection を使用して、以前の接続を最初に削除せずに、Hyper-Register 接続を直ちに変更します。
  • place_node コマンドを location 引数と併用しても、パーシャル・リコンフィグレーションのエリア制約は上書きされません。
  • ノードが配置されている場所で、LAB にすでに最大数の正当な接続がすでにある場合、place_node または make_connection コマンドが失敗し、最初に配置された正当ではないノードへの接続が妨げられる可能性があります。その場合は、元のノードを別の場所に移動するか、他のノードを LAB から移動して、配線リソースを解放します。
  • フィッターによる modify_io_slew_ratemodify_io_current_strengthmodify_io_delay_chain などの I/O 関連の ECO 修正の適用は、コマンドライン Tcl スクリプトやインタラクティブなコンテキストで呼び出された場合、失敗することがあります。つまり、eco_load_design コマンドを直接呼び出した場合です。すべての I/O 修正が正常に適用されるようにするには、このドキュメントで説明している標準の ECO Tcl スクリプトの手法を使用してください。

新しい LUT または新しいフリップフロップの作成および配置に推奨される順序は次のとおりです。

  1. create_new_node コマンドを使用してノードを作成します。
  2. make_connection コマンドを使用してノード間の接続を確立します。
  3. modify_lutmask コマンドを使用して lutmask を更新します。
  4. create_new_node コマンドを使用してノードを配置します。

このフローにより、新しいノードの正当な配置を決定する際、解析にすべての配線要件が含まれるようになります。以下はその例です。

set lut_name new_lut
create_new_node –name $lut_name –type lut
make_connection –from input1 –to $lut_name –port DATAA
make_connection –from input2 –to $lut_name –port DATAB
make_connection –from $lut_name –to output_dest –port DATAD
modify_lutmask –to $lut_name –eqn {A&B}
place_node –name $lut_name –location “X80 Y80 X85 Y95”

新しいフリップフロップを正確な場所に作成する

set ff_name new_ff
create_new_node –name $ff_name –type ff
make_connection –from input1 –to $ff_name –port DATAA 
make_connection –from input2 –to $ff_name –port DATAB 
make_connection –from $ff_name –to output_dest –port DATAD 
modify_lutmask –to $ff_name –eqn {A&B} 
place_node –name $ff_name –location “X80 Y80 X85 Y95”

注: エスケープ文字による名前の一致に関する問題を最小限に抑えるには、エンティティー名を "" ではなく、文字 {} で囲むと有効です。この方法は、エンティティー名にバックスラッシュやその他の特殊文字が含まれている場合に特に有効です。