インテルのみ表示可能 — GUID: mwh1409959592244
Ixiasoft
インテルのみ表示可能 — GUID: mwh1409959592244
Ixiasoft
1.4.3. HDLコードでのシフトレジスターの推論
インテル® Stratix® 10および Intel Agilex® 7デバイスにおけるシフトレジスターの推論
インテル® Hyperflex™ アーキテクチャーの配線セグメントにはレジスターが多く含まれるため、 インテル® Stratix® 10および Intel Agilex® 7デバイスでは、コンパイラーのシフトレジスター推論のしきい値は増加します。このしきい値の増加は、前世代のFPGAでコンパイラーがシフトレジスターとして推論していた一部のロジックが、 インテル® Stratix® 10または Intel Agilex® 7デバイスをターゲットにしている場合にシフトレジスターとして推論されない可能性があることを意味します。このしきい値の増加により、レジスターのリタイミングをさらに行うことができるため、全体的なデザインのパフォーマンスが向上します。
次の基準は、 インテル® Stratix® 10および Intel Agilex® 7デバイスにおけるシフトレジスターの検出と推論に適用されます。
インテル® Stratix® 10および Intel Agilex® 7デバイスにおけるデフォルトのシフトレジスター推論要件
- シフトレジスターで推論されるレジスターの最小数は64です。レジスターチェーンの幅が1の場合、合成でシフトレジスターを推論するには、チェーンに少なくとも69個のレジスターが含まれている必要があります。この69個のレジスターについて、合成では、チェーンの最初と2番目のレジスターを推論シフトレジスターに含みません。合成では、この最初と2番目のレジスターをALMに配置します。合成では、3番目から66番目のレジスターで64ビット長のシフトレジスターを推論します。合成では、チェーンの最後の3つのレジスターを推論シフトレジスターに含みません。合成では、最後の3つのレジスターをALMに配置します。
- シフトレジスターで推論されるレジスターの最小深度は32です。レジスターチェーンの幅が2以上の場合、合成でシフトレジスターを推論するには、チェーンに少なくとも37のレジスターレベルが含まれている必要があります。最初の要件と同様に、合成では、各チェーンの最初と2番目のレジスターレベル、および最後の3つのレジスターレベルを推論シフトレジスターに含みません。
- 次の割り当てでは、必要なレジスターの総数 (深さ * 幅) は37に減少します。
set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION ON
注: 物理合成の最適化によってリタイミングされていないレジスターに対する領域が回復するため、初期のリタイミング・ステージで推論の追加ステージが行われます。 - 次の割り当てではどちらも、必要なレジスターの総数 (深さ * 幅) は13に減少します。
set_global_assignment -name ALLOW_ANY_SHIFT_REGISTER_SIZE_FOR_RECOGNITION ON set_global_assignment -name PHYSICAL_SHIFT_REGISTER_INFERENCE=OFF
インテル® Arria® 10および インテル® Cyclone® 10 GXデバイスにおけるシフトレジスターの推論
インテル® Arria® 10デバイスの場合、Analysis & Synthesisでは、同じ長さのシフトレジスターのグループを検出し、Shift Register Intel® FPGA IPを使用してレジスターを実装します。自動検出を行うには、すべてのシフトレジスターが次の特性を備えている必要があります。
- 同じクロックとクロックイネーブルを使用すること
- 他に二次信号がないこと
- 少なくとも3レジスター離れた等間隔のタップがあること
合成では、専用のRAMブロックを備えるデバイスファミリーでのみシフトレジスターを認識します。 インテル® Quartus® Prime プロ・エディション の合成では、次のガイドラインを使用します。
- インテル® Quartus® Prime開発ソフトウェアは、レジスターされるバスの幅 (W)、各タップ間の長さ (L)、またはタップ数 (N) に基づきShift Register Intel® FPGA IPを推論するかを決定します。
- Auto Shift Register Recognition オプションが Auto に設定されている場合、 インテル® Quartus® Prime プロ・エディション の合成では、次の方法を使用してロジックに向けたRAMブロックに実装するシフトレジスターを決定します。
- Optimization Technique の設定
- デザインに関するロジックとRAMの使用率の情報
- Timing-Driven Synthesis のタイミング情報
- レジスターされるバスの幅が1の場合 ( W = 1 )、 インテル® Quartus® Primeの合成では、タップ数に各タップ間の長さを掛けた値が64以上になる ( N x L > 64 ) 場合に、シフトレジスターIPを推論します。
- レジスターされるバスの幅が1より大きく ( W > 1 )、レジスターされるバスの幅にタップ数と各タップ間の長さを掛けた値が32以上になる ( W × N × L > 32 ) 場合に、 インテル® Quartus® PrimeではShift Register Intel® FPGA IPを合成します。
- 各タップ間の長さ (L) が2の累乗ではない場合、 インテル® Quartus® Primeの合成では、外部ロジック (LE または ALM) で読み出しおよび書き込みカウンターをデコードする必要があります。これは、シフトレジスターのサイズが異なるために必要なものです。この追加デコードロジックにより、メモリー内にシフトレジスターを実装することで得られるパフォーマンスと使用率における利点がなくなります。
インテル® Quartus® Primeの合成でShift Register Intel® FPGA IPにマッピングされ、RAMに配置されるレジスターは、シミュレーション・ツールに向けたVerilog HDLまたはVHDL出力ファイルでは利用できません。それらのノード名は合成後に存在しなくなります。
(* ramstyle = "mlab" *) my_shift_reg