前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vivado综合设置之-gated_clock_conversion

Vivado综合设置之-gated_clock_conversion

作者头像
黑马Amos
发布2023-03-21 13:37:40
3210
发布2023-03-21 13:37:40
举报
文章被收录于专栏:李家杂货铺zi李家杂货铺zi

本文验证-gated_clock_conversion设置为on或off时,给Schematic带来的差异。

-gated_clock_conversion设置为on时,用于移除门控时钟,门控时钟是由门电路而非专用时钟模块(例如MMCM或PLL)生成的时钟。

门控时钟会对设计带来一些负面影响。

典型的危害包括:时钟信号可能会有毛刺;时钟歪斜(Clock Skew)会恶化。

  1. 当时钟负载少且时钟频率低(比如小于5MHz)时,可以适当使用门控时钟,此时建议手工插入BUFG。
  2. 设计中应该尽量避免使用门控时钟,时钟信号应尽可能由MMCM/PLL产生。

UG901有如下图的描述:

 上图说明:要实现门控时钟的转换必须在综合设置中将-gated_clock_conversion设置为on或auto,且要在Verilog代码中设置gated_clock属性,两者缺一不可。设置gated_clock属性指定了门控时钟逻辑的输入时钟(而非输出时钟),比如:(* gated_clock = “true” *) input clk;中的clk就是输入时钟。

下图是门控时钟的测试代码。

测试代码1

代码语言:javascript
复制
module top(
    (* gated_clock = "true" *) input clk,
    input clk_en,
    output reg cnt
);
    wire pll_out;               
    assign pll_out = clk_en & clk;

    always @(posedge pll_out)
    begin
        cnt <= cnt + 1;
    end
endmodule

其中,assign pll_out = clk_en & clk;就是一个典型的门控时钟代码,上述代码经过综合后的原理图见下图:

-gated_clock_conversion设置为off时的原理图1

 上图中时钟pll_out是通过LUT2产生的,从硬件设计的角度看,不建议这样产生时钟,显得不够专业,这里我们将-gated_clock_conversion设置为off了,导致Vivado综合器即使看这个图不舒服,甚至还有点想笑,但也不会做什么~

  -gated_clock_conversion设置为on时的原理图1

 当我们将-gated_clock_conversion设置为on后,Vivado综合器看上上图不舒服,说,让开,老子来给你改改图,就改成了上图的样子,上图已经没有门控时钟了,这个图看起来也专业~

测试代码2
代码语言:javascript
复制
module top(
    (* gated_clock = "true" *) input clk,
    input clk_en,
    input rst,
    output reg [3:0] cnt
);
    wire gate_clock;
    reg [3:0] cnt_i;
    assign gate_clock = clk_en & clk;

    always @(posedge gate_clock)
    begin
        if(rst)
            cnt_i <= 0;
        else
         cnt_i <= cnt_i + 1;
         cnt   <= cnt_i;
    end
endmodule

-gated_clock_conversion设置为off时的原理图2

-gated_clock_conversion设置为on时的原理图2

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试代码1
  • -gated_clock_conversion设置为off时的原理图1
  •   -gated_clock_conversion设置为on时的原理图1
  • -gated_clock_conversion设置为off时的原理图2
  • -gated_clock_conversion设置为on时的原理图2
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档