インテル® Quartus® Prime プロ・エディションのユーザーガイド: デザインの推奨事項

ID 683082
日付 8/03/2023
Public
ドキュメント目次

1.4.4.2. デュアルクロックFIFOのタイミング制約

独自のデュアルクロックFIFOをコーディングする場合は、適切なタイミング制約をSynopsis Design Constraints形式 (.sdc) で作成する必要があります。

通常、set_clock_groups SDCコマンドを使用して読み出しクロックドメインと書き込みクロックドメインを相互に非同期に設定します。set_clock_groups コマンドは通常、トップレベルの .sdc で指定します。

読み出しおよび書き込みポインターのクロック・ドメイン・クロッシングを制約するには、スキュー制約およびネット遅延制約を使用します。

スキュー制約により、グレーコード化されたポインター値がクロックドメイン間で正しく転送されるようにします。ネット遅延制約は2つのクロックドメイン間の配線遅延を制限し、FIFOを介したレイテンシーを短縮します。

上のRTL例では、ポインターはクロックドメインを交差しています (ff_launch から ff_meta のレジスターパスにおいて、synchronizer_ff_r2 エンティティーの2つのインスタンスで)

次の制約例は、上のRTLに適したものです。-from および -to の名前は実装に応じてカスタマイズすることができます。

# Skew from read to write domain
set_max_skew -from rd2wr|ff_launch[*] -to rd2wr|ff_meta[*] \
     -get_skew_value_from_clock_period 
src_clock_period -skew_value_multiplier 0.8
# Skew from write to read domain
set_max_skew -from wr2rd|ff_launch[*] -to wr2rd|ff_meta[*] \
     -get_skew_value_from_clock_period 
src_clock_period -skew_value_multiplier 0.8
# Net delay from read to write domain
set_net_delay -from rd2wr|ff_launch[*] -to rd2wr|ff_meta[*] \
     -get_value_from_clock_period 
dst_clock_period -value_multiplier 0.8 -max
# Net delay from write to read domain
set_net_delay -from wr2rd|ff_launch[*] -to wr2rd|ff_meta[*] \
     -get_value_from_clock_period
dst_clock_period -value_multiplier 0.8 -max

スキュー制約とネット遅延制約を .sdc ファイルで記述したら、エンティティーに結び付けられる .sdc ファイルの .qsf 割り当てを指定して、FIFOのすべてのインスタンスのシンクロナイザー・レジスター・パスに制約を適用します。

.qsf で、それらの制約を含む .sdc ファイルの名前をエンティティーに結び付けられる .sdc ファイル割り当てに使用します。また、制約を適用するFIFOエンティティーの名前も指定します。

次の .qsf 割り当て例では、制約をプロジェクト・ディレクトリーの fifo_synchronizer.sdc に保存しており、その制約が dcfifo_example エンティティーに適用されると想定しています。

set_global_assignment -name SDC_ENTITY_FILE fifo_synchronizer.sdc \
     -entity dcfifo_example