Quartus® Primeプロ・エディションのユーザーガイド: タイミング・アナライザー

ID 683243
日付 4/01/2024
Public
ドキュメント目次

2.3.5.2.1. エンティティーに結び付けられたSDC制約のスコープ

エンティティーに結び付けられるSDC手法では、制約に対してさまざまなスコープの設定が可能なため、それぞれの制約の影響範囲を決めることができます。
表 10.  エンティティーに結び付けられた制約のスコープ
制約のスコープタイプ 機能 インスタンスに結び付けられたスコープを有効にする方法
Automatic
  • デフォルトのモードで、 Quartus® Primeプロ・エディションGUIで定義されているエンティティー縛りのSDCファイルに適用されます。
  • 自動スコープでは、制約はプロジェクト全体において割り当てられているエンティティーのすべてのインスタンスに適用されます。
  • 任意の get コマンド (get_pinsget_ports など) で取得するSDCファイル内のそれぞれの結果には、インスタンスのパスが先頭に付加されます。
  • get コマンドはすべて、SDCファイルに関連付けられている、結び付けられているインスタンス内のターゲット要素に限定されます。
SDC_ENTITY_FILE のデフォルトモードです。手順を追加して行う必要はありません。
Manual
  • QSF割り当てによってのみアクセス可能です。
  • -no_sdc_promotion 設定では、自動スコープが無効になり、完全な階層パスでノードをターゲットにする必要があります。
  • エンティティー境界を越えてノードをターゲットにすることができます。
  • get_current_instance コマンドは、現在のインスタンスへの最上位パスを指定します。そのため、現在のインスタンス内の要素をターゲットとするフィルターと、エンティティー境界を越えて要素をアドレス指定するコマンドをマージすることができます。
-no_sdc_promotion を使用します。各コレクション・フィルターに get_current_instance を追加し、エンティティー境界内のノードをターゲットにします。

例えば、次のようになります。

get_registers [get_current_instance]|reg[*]
         
Disabled
  • QSF割り当てによってのみアクセス可能です。
  • -no_sdc_promotion-no_auto_inst_discovery 引数をともに使用するとスコープが無効になり、エンティティーに結び付けられているSDCがグローバルSDCファイルとして扱われるようになります。SDCファイルは、リンクされているそれぞれのインスタンスに対して繰り返し処理されるのではなく、コンパイル全体に対して1回だけ読み取られます。
  • このモードは、SDCと qdb ファイルとしてエクスポートするエンティティーをまとめ、それと同時にSDCのコレクション・フィルターにおいて get コマンドでグローバルな最上位パスを指定する機能を維持する場合に最適です。
-no_sdc_promotion および -no_auto_inst_discovery 引数を使用します。

エンティティーに結び付けられているSDCファイルをGUIまたは .qsf 割り当てを使用して定義する場合 (-no_sdc_promotion および -no_auto_inst_discovery 引数を除く)、制約では自動スコープを使用します。自動スコープでは、フィルターの先頭にインスタンスのパスが付けられます。次の表では、制約の自動スコープにより、さまざまなTclコマンドでパスがどのように解釈されるかを示しています。

表 11.  制約の自動スコープ
制約例 インスタンス X|Y の自動スコープ制約の解釈
set_false_path -from [get_keepers a] set_false_path -from [get_keepers X|Y|a]
set_false_path -from [get_registers a] -to [get_registers b] set_false_path -from [get_registers X|Y|a] -to [get_registers X|Y|b]
set_false_path –from [get_clocks clk_1] –to [get_clocks clk_2] set_false_path –from [get_clocks clk_1] –to [get_clocks clk_2]
set_max_delay –from [get_ports in] -to [get_registers A] 2.0 set_max_delay –from [get_ports in] -to [get_registers X|Y|A] 2.0
get_ports * get_ports *
get_clocks * get_clocks *
get_ports a get_ports a
get_clocks a get_clocks a

-no_sdc_promotion 引数の使用を含めて、.qsf 割り当てによって自動スコープが無効になっている場合は、最上位パスを手動で先頭に追加することにより自動スコープと同じ動作を実現する必要があります。このプロセスを単純に行うには、-get_current_instance コマンドを使用して、現在のインスタンスの最上位パスが返されるようにします。次の表は、-get_current_instance コマンドを使用して最上位パスを特定のTclコマンドに追加する場合に、パスがどのように解釈されるかを示しています。

表 12.  制約の手動スコープ
制約例 手動スコープ制約の解釈
set_false_path –from [get_current_instance]|d\
–to [get_current_instance]|e
set_false_path –from i1|inner|d –to i1|inner|e
set_false_path –from i2|inner|d –to i2|inner|e
set_false_path –from i3|d –to i3|e
create_generated_clock –divide_by 2 –source \
   [get_ports inclk] –name \
   [get_current_instance]_divclk \
   [get_current_instance]|div 
set_multicycle_path –from [get_current_instance]|a \ 
   –to [get_current_instance]|b 2
create_generated_clock –divide_by 2 –source \
[get_ports inclk] –name “i1_divclk” i1|div
set_multicycle_path –from i1|a –to i1|b 2 \
create_generated_clock –divide_by 2 –source \
[get_ports inclk] –name “i2_divclk” i2|div
set_multicycle_path –from i2|a –to i2|b 2