インテル® Quartus® Primeプロ・エディションのユーザーガイド: デザインのコンパイル

ID 683236
日付 6/26/2023
Public
ドキュメント目次

1.12.3. ゲート使用クロックの自動変換

クロックゲートにより、ASICデザインにおける電力消費を抑えます。その場合、回路にロジックを追加してクロックツリーを切り取ります。クロックツリーを切り取ることで回路の一部が無効になり、フリップフロップによる状態切り替えの必要がなくなります。 インテル® Quartus® Prime FPGAを使用してASICデザインのプロトタイプを作成している場合は、デザインでクロックゲートをクロックイネーブルに変換する必要があります。
ゲート使用クロックの変換例
ASICゲート使用クロック例 FPGAクロックイネーブル例
module infer_enable (clk, reset, d, en, q);

input d, en, clk, reset;
output q;

wire gated_clk;
reg q;

assign gated_clk = clk & en;
always@(posedge gated_clk or reset)
 begin
               if (!reset) 
                      q <= 1’b0;
              else 
                      q <= d ;
              end 
endmodule
module infer_enable (clk, reset, d, en, q);

input d, en, clk, reset;
output q;

reg q;

always@(posedge clk or reset)
 begin
               if (!reset) 
                     q <= 1’b0;
              else if (en)
                     q <= d;
              else 
                      q <= q ;
              end 
endmodule

RTLでゲート使用クロックを手動変換するのではなく、Auto Gated Clock Conversion 設定を指定して、デザイン内のゲート使用クロックをクロックイネーブルに自動変換することができます。この設定は、デザイン内のすべてのゲート使用クロックにグローバルに適用したり、1つもしくは複数の特定のクロック信号に適用したりすることができます。

表 33.  ゲート使用クロック変換の設定

設定の範囲

詳細

グローバル Assignments > Settings > Compiler Settings > Advanced Settings (Synthesis)Auto Gated Clock Conversion オプションを有効にします。または、次のようにグローバル割り当てをプロジェクトの .qsf に追加します。
set_global_assignment –name SYNTH_GATED_CLOCK_CONVERSION on
インスタンス固有 Assignment Editor (Assignments > Assignment Editor) で1つ以上のインスタンスに対して Auto Gated Clock Conversion を指定します。または、次のようにインスタンス割り当てをプロジェクトの .qsf に追加します。
set_instance_assignment –name SYNTH_GATED_CLOCK_CONVERSION on –to clk_in
デザインの合成後、ゲート使用クロック変換の結果をGated Clock Conversion Detailsレポートで確認します。このレポートには、すべての変換済みおよび未変換のゲートクロックとそのベースクロックが一覧表示されます。未変換のゲートクロックの場合、レポートには、クロックが変換されない理由が示されます。
注: ゲート使用クロックの自動変換では、明示的なRAM (WYSIWYG RAMやインテルFPGAメモリーIPなど) をサポートしますが、推論RAMはサポートしません。
図 105. Gated Clock Conversion Detailsレポート