ターゲット クロック周期の設定 - 2023.2 日本語

Vivado Design Suite ユーザー ガイド: IP を使用した設計 (UG896)

Document ID
UG896
Release Date
2023-11-03
Version
2023.2 日本語

デフォルトでは、IP はスタンドアロンで合成され、デザインのほかの箇所からは独立し、OOC になります。

  • ユーザー ロジックの合成中、IP はブラック ボックスとして表示されます。
  • インプリメンテーション中、IP ネットリストはほかの IP ネットリストおよびユーザー ネットリストとリンクされます。

IP は最上位ファイルとは別に合成されるので、IP の合成オプションで説明しているように、IP のクロック定義を提供するため、OOC が終了したら get_runs <ip_name>_ooc.xdcVivado により作成されます。

ターゲット周期を指定しない場合、IP はデフォルトのクロック周期を使用します。このため、次のように、IP で使用されている周期が、最上位ファイルを合成するときに表示される周期とは異なることを知らせる警告メッセージが表示される場合あります。



この警告メッセージは、グローバル合成が使用されている場合に、OOC IP を合成するときに使用されるクロック周期とは別のクロック周期を使用して、IP が合成されることを知らせています。

IP には、さまざまなクロック オプションがあります。

  • IP には、カスタム GUI に、OOC 合成で使用されるターゲット周波数/周期を設定するオプションがあります。Tcl コンソールを使用して、IP の設定オプションを検索して設定することもできます。
  • IP には [Clocks] というタブがあることがあり、IP のターゲット周波数を設定できるようになっています。
  • ターゲットの設定がその他の設定に組み込まれていることもあります。通常は、設定を説明するツール ヒントがあります。
  • ターゲット クロック周波数や周期をカスタマイズする GUI オプションのない IP の場合は、その他のクロック ソースの周波数に依存します。

IP のクロック ポートには、FREQ_HZ で終わるプロパティがあります。これらのプロパティを変更すると、IP の出力ファイルが生成されるときに、IP の _ooc.xdc ファイルでそれらの値が使用されます。

Tcl コマンドを使用したターゲット クロック周期の設定

IP をカスタマイズするには、IP オブジェクトに独自のプロパティを設定します。Vivado IDE を使用して IP を設定する場合は、該当する Tcl コマンドが Vivado IDE により自動的に生成されます。OOC 合成で IP のターゲット周期を設定するオプションが GUI にない場合、手動で設定できます。

Tcl を使用して (または IP カスタマイズ GUI を使用して) 再び変更しない限り、IP のカスタマイズは恒久的で、IP をリセットおよび再生成しても、変更内容はそのままです。

次は、char_fifo という名前の FIFO Generator IP のターゲットクロックを設定する例で、Wave Generator サンプル デザインで使用されます。この IP は、読み出しおよび書き込みポート、それにネイティブ インターフェイスに共通のクロックを使用するようにカスタマイズされています。

  1. report_property コマンドを使用して IP に使用可能なプロパティをレポートします。Tcl コンソールに次のコマンドを入力します。
    report_property [get_ips char_fifo]
  2. 出力結果から、この IP には FREQ_HZ で終わるプロパティが 5 つあることがわかります。
    • CONFIG.core_clk.FREQ_HZ: 共通クロックを使用している場合に適用可能 (この例)
    • CONFIG.read_clk.FREQ_HZ: 独立クロックを使用している場合に適用可能
    • CONFIG.write_clk.FREQ_HZ: 独立クロックを使用している場合に適用可能
    • CONFIG.slave_aclk.FREQ_HZ: AXI を使用している場合に適用可能
    • CONFIG.master_aclk.FREQ_HZ: AXI を使用している場合に適用可能

    共通クロックを使用しているネイティブ インターフェイスには、最初の出力のみが適用可能です。CONFIG.core_clk.FREQ_HZ はデフォルトで 100000000 または 100MHz に設定されています。

    IP が既に生成されている場合は、char_fifo_ooc.xdc を開き、次の行を確認します。

    create_clock -period 10 -name clk [get_ports clk]

    周期 10 は、CONFIG.core_clk.FREQ_HZ の 100 MHz に相当します。

    この例でクロック周波数を 250 MHz にするには、次のように設定します。

  3. Tcl コンソールに次の Tcl コマンドを入力します。
    set_property CONFIG.core_clk.FREQ_HZ 250000000 [get_ips char_fifo]
  4. このプロパティを設定した後に、IP を生成します。これで、OOC run がリセットされ再実行されます。

run が完了したら、char_fifo_ooc.xdc ファイルを確認します。次のようになっているはずです。

create_clock -period 4 -name clk [get_ports clk]

これで、IP を合成するときにこのクロック周期/周波数が使用されます。

クロック制約の決定とクロック メッセージの解釈

Vivado には、階層制約、最上位ユーザー制約、IP で提供される制約を含めることができます。これらの制約を正しく機能させるには、満たすべき依存関係があります。クロック作成はこのような制約の 1 つです。

  • IP の中には、ほかの IP または最上位デザインで必要なクロックを作成するものがあります。
  • IP の中には、正しく機能させ、クリティカル警告が表示されないようにするために、クロックを必要とするものがあります。

必要なクロック制約が提供されていない場合、デザイン最上位の IP でターゲット クロック周期の設定に示すようなクリティカル警告メッセージが表示されます。

クロック要件のあるデザインを使用する場合の詳細は、 『Vivado Design Suite ユーザー ガイド: 制約の使用』 (UG903) を参照してください。

IP クロック依存性の Tcl コマンド例

次に set_max_delay コマンドを使用する IP 制約の例を示します。このコマンドは、ref_clk ポート上の IP によって提供される最上位クロックに依存します。

set_max_delay -from [get_cells data_reg] -to [get_cells synchro_stage0_reg]\ 
-datapath_only [get_property PERIOD [get_clocks -of_objects [get_ports ref_clk]]] 

『Vivado Design Suite ユーザー ガイド: 制約の使用』 (UG903) に、どのように get_ports コマンドが IP セル インスタンスの get_pins コマンドに変換されるかが説明されています。IP がデザインでどのように接続されているかによって、クロックはユーザー クロックか別の IP から供給できます。

  • 別の IP からクロックが供給される場合は、クロックが供給されているので、クリティカル警告は表示されません。
  • クロックがエンドユーザー ロジックから供給される場合、create_clock または create_generated_clock コマンドを使用してクロック オブジェクトが作成されていないと、クリティカル警告メッセージが表示されます。

クロックに関する Tcl コマンド

デザインで正しく生成されていないクロックを見つけるには、report_clock_networks Tcl コマンドを使用します。

report_clock_networks

このコマンドでは、制約されているクロックおよび制約されていないクロックを含め、デザインのクロック レポートが生成されます。このレポートを使用すると、IP に接続されるクロック モジュールにクロック定義があるかどうかを確認できます。

次のコマンドも便利です。

  • report_clocks

    デザインのすべてのクロックを含んだ表を表示します。現在の合成済みデザインまたはインプリメント済みデザインの伝搬クロック、生成クロック、自動生成クロック、仮想クロック、および反転クロックが含まれます。

  • report_compile_order
    report_compile_order -constraints

    このコマンドは、合成およびインプリメンテーションに使用される XDC ファイルと、その処理順序を表示します。クロックを作成する IP XDC ファイルが、そのクロックを必要とする IP XDC ファイルよりも後に処理されるような場合、このコマンドを実行するとその関係が明確になります。

IP からのクロックがない問題は、最上位の XDC タイミング制約ファイルに制約を追加すると解決できることがよくあります。たとえば XPS デザインで、シリアル トランシーバーなどのクロックを作成する IP に XDC ファイルがない場合などがそうです。

クロック供給に関するクリティカル警告および警告の例

次に、デザインで IP コアで必要とされるクロック制約が検出されない場合に表示される警告メッセージの例を示します。

CRITICAL WARNING: [Vivado 12-259] No clocks specified, please specify clocks using -clock, 
-fall_clock, -rise_clock options

[C:/Design/v_tc.xdc:1]INFO: [Vivado 12-1399] There are no top level ports directly connected 
to pins of cell 'system/v_tc', returning the pins matched for query '[get_ports s_axi_aclk]' 
of cell 'system/v_tc'.

[C:/Design/v_tc.xdc:1]Resolution: The get_ports call is being converted to a get_pins call 
as there is no direct connection to a top level port. This could be due to the insertion of 
IO Buffers between the top level terminal and cell pin. If the goal is to apply constraints 
that will migrate to top level ports it is required that IO Buffers manually be instanced.

CRITICAL WARNING: [Vivado 12-1387] No valid object(s) found for set_max_delay constraint 
with option 'from'.

[C:/Design/v_tc.xdc:1]Resolution: Check if the specified object(s) exists in the current 
design. If it does, ensure that the correct design hierarchy was specified for the object.