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

ID 683082
日付 4/13/2020
Public

このドキュメントの新しいバージョンが利用できます。お客様は次のことを行ってください。 こちらをクリック 最新バージョンに移行する。

ドキュメント目次

1.4.1.4. RAMの推論と実装の制御 

インテル® Quartus® Prime合成は、同期メモリーブロックを備えたIntel FPGAデバイスのためのRAMの推論と実装を制御するオプションを提供します。 通常、合成ツールは小さなRAMブロックを推測しません。通常のロジックでレジスターを使用する場合、小さなRAMブロックを実装する方が効率的です。

インテル® Quartus® Primeソフトウェアを指示するすべてのサイズのRAMブロックをグローバルに推論するには、Advanced Analysis&Synthesis Settingsダイアログボックス(Assignments > Settings > Compiler Settings > Synthesis Settings (Advanced))Allow Any RAM Size for Recognitionオプションをイネーブルします。

または、 ramstyle RTL属性を使用して、メモリーブロックの種類や専用メモリーブロックの代わりに通常のロジックを使用するなど、推論されたRAMの実装方法を指定します。 インテル® Quartus® Prime合成は、HDLコードが適切なramstyle属性を指定しない限り、推定メモリーをMLABにマップしませんが、Fitterは一部のメモリーをMLABにマップします。

RTLまたは.qsfファイルでramstyle属性を設定します。
(* ramstyle = "mlab" *) my_shift_reg
set_instance_assignment -name RAMSTYLE_ATTRIBUTE LOGIC -to ram

RTLでRAMまたはROMを推論するためのメモリーブロックの最大深度を指定することもできます。デザインファイルでRAMまたはROMを表す変数の宣言にmax_depth合成属性を指定します。例えば:

// Limit the depth of the memory blocks implement "ram" to 512
// This forces the 
               インテル® 
               Quartus® Prime software to use two M512 blocks instead of one M4K block to implement this RAM
(* max_depth = 512 *) reg [7:0] ram[0:1023];

さらに、 no_ram合成属性を指定して、特定のアレイでRAMが推論されないようにすることができます。例えば: 

(* no_ram *)ロジック[11:0] my_array [0:12];