RAM によって生じる GCLK ジッターの Vivado によるモデル化

Versal アダプティブ SoC クロッキング リソース アーキテクチャ マニュアル (AM003)

Document ID
AM003
Release Date
2023-05-16
Revision
v1.5 日本語

Vivado ツールは、ベースライン GCLK ジッターをモデル化します。次に、最上位 (current_design) オブジェクトで定義した RAM アクティビティに基づいて、このベースライン ジッターが増加します。内部では、Vivado ツールは RAM_AVERAGE_ACTIVITY (RAA) と呼ばれる RAM アクティビティを記述するプロパティを使用します。

このパラメーターを簡単に定義すると、デバイスのすべての RAM の平均 RAM 周波数 (MHz) に等しくなります。この定義により、RAM の周波数、およびデバイスで使用される RAM の割合の両方がわかります。

Vivado ツールは、フラット デザインに対して不必要に悪い前提条件で RAM アクティビティを見積もります。計算で求めた値を、最上位の [current_design] オブジェクト RAM_AVERAGE_ACTIVITY プロパティに適用します。

USER_RAM_AVERAGE_ACTIVITY (URAA) プロパティを設定すると、Vivado ツールのデフォルトをオーバーライドできます。Vivado ツールのコマンドは次のとおりです。

set_property USER_RAM_AVERAGE_ACTIVITY ### [current_design]

以降のセクションでは、URAA の計算方法について説明します。

いくつの RAM を同時に有効/無効にできるか、およびそれがどれだけの頻度で可能かは、Vivado ツールでは判断できません。このため、Vivado ツールはすべての RAM が最小レートの 22MHz で同時に有効および無効にされるワースト ケース条件を前提とします。これらの前提条件については、URAA を軽減する方法 で詳しく説明します。

手計算で URAA を求める方法

デザインの URAA は、次の式から計算できます。ここで求めた値を URAA パラメーターに設定すると、Vivado ツールのデフォルトがオーバーライドされます。

URAA = RAM 周波数の合計 (SumRAMF) / 全 RAM サイト数。

説明:

SumRAMF = 0.5 * SumF(BRAM36) + 0.25 * SumF(BRAM18) + SumF(URAM)

説明:

SumF(BRAM36) = 各 BRAM36 サイトの周波数の合計
SumF(BRAM18) = 各 BRAM18 サイトの周波数の合計
SumF(URAM) = 各 URAM サイトの周波数の合計
全 RAM サイト数 = 0.5 * BRAM36 サイト数 + URAM サイト数
SumF(BRAM18) = 各 BRAM18 サイトの周波数の合計
SumF(URAM) = 各 URAM サイトの周波数の合計
全 RAM サイト数 = 0.5 * BRAM36 サイト数 + URAM サイト数
注記: 1 つの BRAM36 サイトには 2 つの BRAM18 サイトが含まれるため、この式では BRAM36 サイトのみをカウントします。

Vivado ツールで次のコマンドを実行すると、BRAM36 および URAM サイトの総数が表示されます。

llength [get_sites RAMB36*]
llength [get_sites URAM*]

次に、例として xcvc1902-viva1596-1LP-e-S デバイスの場合の全 RAM サイト数の計算結果を示します。

表 1. 全 RAM サイト数の計算結果の例
デバイス番号 BRAM36 URAM URAA の計算で使用する全 RAM サイト数
xcvc1902-viva1596-1LP-e-S 967 463 946.5

スクリプトを使用して URAA を求める方法

デザインの最上位でスクリプトを実行して URAA を計算することもできます。このスクリプトは、前のセクションで示した計算を実行し、URAA 値を指定する XDC ファイルを生成します。スクリプトは、最終的に完成した最上位デザインで実行する必要があります。RAM の使用状況 (インスタンス数、イネーブル ピンのステートなど) に影響するような変更があった場合は、スクリプトを再度実行してください。生成した XDC ファイルは、Vivado ツールの制約ソースとして使用できます。

定義上、イネーブルを High または Low に接続した RAM のスイッチング レートは 0MHz です。イネーブルをアクティブ信号に接続した RAM は、デザインのタイミング制約に基づき、RAM に到達する最高クロック周波数と同じ周波数として扱われます。

このスクリプトはクロック ゲーティングの影響を考慮していません。クロック ゲーティングを使用するデザインの場合、RAA の値をユーザーが手計算で求める必要があります。また、この計算には不必要に悪い前提条件が設定されています。詳細は、URAA を軽減する方法 を参照してください。

スクリプトは、アンサー 76369 から入手できます。