バックナンバーはこちら

today&tomorrow

Technology Update

2017 Aug Summer vol.107

マルチFPGA環境で信号の同期分配を自動化するHAPS ProtoCompiler

著者:シノプシス HAPSプロトタイピング・ソリューション Christoph Kuznik、Rutger Carlsson

Prototyping Newsletter購読のお申し込みはこちら

タイミング・クリティカルなイベントで同期分配が必要な理由

マルチFPGA環境で同期を正しく実装しないと、特定のシステム・クロック・ドメインに同期しているはずのグローバル・システム・リセットを使用してもリセット解放の動作が不正となり、(出力信号が0と1の中間電位になる)メタスタビリティが発生する可能性があります。

大規模なデザインを複数のFPGAに分割した場合、分割サイズ、配置配線の制約、ロジック構造の違いなどによってリセット・ツリーの深さと内部リセット・ネットワークのスキューがFPGAごとに異なってきます。また、1つのFPGA内でも内部クロック・ツリーの深さとクロック・ネットワークのスキューは一定でないため、すべてのFPGAのリセット・サブツリーにまたがるデザイン全体のリセット・ツリーで考えると、すべてのフリップフロップが1クロック・サイクル以内にリセット解放されることは保証されません。同じ状況は、(1)シンクロナイザを複製した場合、(2)リセット信号の複数のコピーがそれぞれデザインの異なる部分を別々にトリガーした場合、(3)リセット信号が自分自身の動作するクロック・ドメインに同期していない場合にも起こります。

デザインのすべてのフリップフロップがセットアップ・タイム違反なしに同じクロック・サイクル内でリセット解放を受信するようなタイミングで非同期リセット信号がトリガーされるとデザインは正常に動作しますが、そのようなタイミングになるかどうかは完全に運任せです。同じ非同期リセットでも、一部のFPGAまたは一部のクロック・ドメインの一部のフリップフロップでクロック・エッジ上またはその近傍でリセット解放されるようなタイミングでトリガーされた場合、デザインは誤動作する可能性があります。

図1に、考えられる3つのケースを示します。緑の期間でリセットを受信したフリップフロップは次の立ち上がりクロック・エッジでアクティブになりますが、赤の期間でリセットを受信したフリップフロップは アクティブになるため、1クロック・サイクル後の立ち上がりクロック・エッジでアクティブになるため、誤動作となります。

画像(仮)

図1:リセット信号が正しく分配されない場合の影響

フリップフロップが緑と赤の間のオレンジ色の期間にリセットを受信した場合、セットアップ・タイム違反によりメタスタビリティが発生する可能性があるため、値の定義は困難です。また、マルチFPGAシステムではシステム・レベルでのリセット挿入遅延時間(図1の「?」)が指定または保証されないことがあります。リセット条件を満たしていない場合の主な理由としては、タイミング制約が正しくない(または不足している)こと、あるいは位相関係のない非同期クロック・ドメイン間で適切な同期が確保されていないことが挙げられます。このようにして生じる回路の誤動作は、タイミング・レポートでは見つからないことがあります。

分配の課題

1つのデザインを複数のFPGAに分割する場合、同期リセット信号のようにデザイン全体で同期が必要なグローバル信号の分配が大きな課題となります。

  • リセット入力が1つのRTLデザインは、分割した後もリセット入力は1つしかなく、いずれか1つのFPGAにシステム・リセット入力を印加します。この1つのFPGAから、分割したデザインの中でリセットを必要とするすべてのFPGAにリセットを分配する必要があります。入力されるリセットは非同期と見なされるため、それ自身が動作するクロック・ドメインに同期させる必要もあります。
  • リセット信号が複数あるデザインは、各リセットの分配およびそれぞれのクロック・ドメインへの同期をそれぞれ個別に扱う必要があります。また、現在のFPGAは容量が大きいため、クロック周波数を最大限に高めるにはFPGA全体での信号分配にフリップフロップ・パイプライン構造をインプリメントする必要があります。

どちらの場合も、HAPS ProtoCompilerに新しく導入されたPCFコマンドreset_synchronizeを使用すると、この作業の大部分を自動化できます。

カテゴリートップ