Intel® Quartus® Prime Pro Edition用户指南: 设计编译

ID 683236
日期 12/16/2019
Public
文档目录

1.9.3. 自动门控时钟转换

时钟门控通过向电路中添加更多逻辑以修剪时钟树来节省ASIC设计的功耗。修剪时钟树会禁用部分电路,因此无需触发器(flip-flop)切换状态。使用 Intel® 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 
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 
end 

endmodule

与其手动转换RTL中的门控时钟,不如指定Auto Gated Clock Conversion设置将设计中的门控基础时钟自动转换为时钟使能。可对设计中的所有门控基础时钟全局应用该设置,或仅对1个或多个指定时钟信号加以应用。

表 18.  门控时钟转换设置

设置范围

说明

Global(全局) Assignments > Settings > Compiler Settings > Advanced Settings (Synthesis)处使能Auto Gated Clock Conversion选项。或者将全局约束添加到工程.qsf
set_global_assignment –name SYNTH_GATED_CLOCK_CONVERSION on
Instance-specific(指定实例) 在Assignment Editor (Assignments > Assignment Editor)中将Auto Gated Clock Conversion指定用于1个或多个实例。或者,将实例约束添加到工程.qsf
set_instance_assignment –name SYNTH_GATED_CLOCK_CONVERSION on –to clk_in
设计综合后,在Gated Clock Conversion Details报告中查看门控时钟转换结果。该报告列出所有已转换和未转换的门控时钟及其基础时钟。对于未转换的门控时钟,报告中会说明未转换时钟的原因。
注: 自动门控时钟转换支持显式(explicit)RAM(例如,WYSIWYG RAM和FPGA存储器IP),但不支持推断式RAM。
图 48. 门控时钟转换详情报告