デバイス スタートアップの制御と同期化 - 2023.2 日本語

Versal アダプティブ SoC ハードウェア、IP、およびプラットフォーム開発設計手法ガイド (UG1387)

Document ID
UG1387
Release Date
2023-11-15
Version
2023.2 日本語

デバイスのコンフィギュレーションが完了すると、デバイスがコンフィギュレーション ステートを完了し、通常動作に移行するためにイベントのシーケンスが実行されます。ほとんどのコンフィギュレーション シーケンスでは、最後の手順の 1 つとしてグローバル セット/リセット (GSR) がディアサートされ、その後グローバル イネーブル (GWE) 信号がディアサートされます。これでデザインが既知の初期ステートになり、動作を開始できるようになります。

このディアサートが指定のクロック ドメインに同期していないか、クロックが高速で動作しているために GWE を安全にディアサートできない場合、デザインの一部が不明なステートになる可能性があります。これが問題とならないデザインもありますが、デザインによってはこれが原因で不安定な状態になったり、初期データ セットが正しく処理されなかったりする可能性があります。

デザインを既知のステートで開始させる必要がある場合は、AMDでは次のいずれかの方法を使用してスタートアップ時の同期プロセスを制御することをお勧めします。

  • ステート マシンなどのデザインのクリティカルな部分にクロック イネーブル、ローカル リセット (同期)、またはその両方を使用して、これらの部分のスタートアップを制御し、既知のものになるようにします。
  • クロック イネーブル機能を持つクロック バッファー コンポーネントをインスタンシエートします。

    デザイン クロックをイネーブルにする前に、必要なクロック数だけリセットのディアサートを遅らせます。次の例に、リセットを解放した後の最初のデザイン クロック エッジを遅延させる方法を示します。シンクロナイザー レジスタに ASYNC_REG=TRUE を設定することにより、すべてのレジスタが 1 つのスライスに配置されるので、グローバル クロック リソースで駆動する必要はありません。シンクロナイザー クロックにクロック バッファーが挿入されないようにするには、入力クロック ポートに CLOCK_BUFFER_TYPE=NONE プロパティを使用します。

    図 1. 安全にクロックを開始するためのリセットの同期化と遅延の例

  • MMCM を使用する場合は、Clocking WizardSafe Clock Startup オプションをオンにして、デザイン クロックが安定した後のにのみイネーブルになるようにします。

    次の例に、ユーザー ロジックを駆動する BUFGCE の CE ピンに接続された MMCM LOCKED 信号の同期化段を示します。2 番目の BUFGCE はファンアウトの大きい BUFGCE (ユーザー クロック) に並列に接続され、BUFGCE/CE ピンを制御するロジック専用に使用されます。このトポロジは、シンクロナイザーと BUFGCE ピンの間のクロック スキューを最小限に抑えることにより、BUFGCE/CE でタイミング クロージャを達成しやすくします。

    図 2. MMCM での安全なクロック開始例

    ヒント: MMCM の補正モードが BUF_IN に設定されている場合、CLKOUT0 からのすべてのクロックがフィードバック クロックと共にグループ化され、同じ CLOCK_ROOT が使用されます。これにより BUFGCE/CE でタイミング違反が発生する場合は、ファンアウトの大きいクロックとフィードバック クロックの間のみに CLOCK_DELAY_GROUP 制約を作成します。オプションで、ファンアウトの小さいクロック ネットに CLOCK_LOW_FANOUT 制約を設定し、BUFG および MMCM と同じクロック領域にロードを配置することもできます。