0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

带skew的时序计算基础分析

冬至子 来源:黑的路白的路 作者:黑的路白的路 2023-12-01 14:55 次阅读

一、时序计算基础

组合逻辑的延迟T c ,从FF1/CK到FF1/Q的延迟为T q ,定义Treal = Tq + T c ,从建立时间和保持时间这两个标准去考察T real

图片

现在假设clk1和clk2相位对齐且没有skew。我们考虑D2,当clk1的第一个上升沿a发出数据1时,需要经过Treal的时间1才变成2;

在clk2的f沿,我们要想稳定地采到2,需要在采样窗口内到达,即2要在采样沿f之前一段时间就到达;因此要求Treal < Tperiod - Tsetup

图片

另外,要想采到f沿的数据2,除了2要提前一点到之外,2还不能马上变成3,即2要在采样沿之后稳定一段时间;

我们考虑e沿,e沿采1,要求a沿打出的2不能很快就到,即1变成2的时间要在Thold之后;因此要求Treal > T hold

所以,T2 = Thold < T real < (Tperiod - T setup )=T 1 ;T1和T2之间就是数据可以到达的范围;

二、带skew的时序分析

现在我们考虑skew对setup和hold的影响。

对于setup,当 Tcapture > Tlaunch时(正skew)

如果没有skew,那么要求在A点之前1就要变成2,此时不符合要求。

但是有skew存在,setup检查的点从A点延迟到B点,setup检查就满足了。

此时,Treal < (Tperiod - Tsetup + T skew ),即正的skew对setup有好处。

图片

对于hold,当 Tcapture > Tlaunch时(正skew)

不考虑skew的情况下,c沿应该采0,要求0在A之后再变化才算是采稳了。当有skew之后,采样点变成了c沿再加上一个Thold的时间即B点,0可能会采不稳。

此时的要求变成了,Thold + Tskew < T real ,即正的skew让hold更严格。

因此,T2 = (Thold + T skew ) < Treal < (Tperiod - Tsetup + T skew )=T 1

当skew为负的时候,上述公式不变,只是 Tskew的值变成负数。

三、从慢速到快速

setup

图片

clk_slow是9ns,clk_fast是6ns;取最小公倍数,工具只考虑前18ns;

a打出数据1,b打出数据2,c打出数据3,d打出4;

f采1,g采2,i采3,j采4;

对于建立时间来讲,g采2的窗口是最短的;对于g沿,还是一样的分析方法,T2 < Treal < T1

此时T1 = Tb - Tsetup

hold

图片

考虑hold,f沿采1,要求1在f沿到达之后还要保持Thold的时间,实际上很好满足;事实上,2还要到b沿之后并经过Treal的时间才会到;同理,g沿的hold也很好满足;

最严苛的就是在e沿,要求0在Thold时间之后再变化。实际上是有可能发生违反的。此时T2 = T hold ,所以,T2 = T hold < T real < Tb - Tsetup =T 1

从慢到快和同频同相的区别:

从慢到快,天然会存在重复采样的问题。例如在上面的例子中,e采0,f采1,g采2,h采2(因为3还要等Treal时间之后才能到达),i采3,j采4。

即launch发出了:1 2 3 4,Capture采到了:1 2 2 3 4。

更为常见的例子是分频的例子,例如clk1 6ns,clk2 12ns。那么capture采到的就是11 22 33 44。

可以通过修改RTL的方式来避免这样的问题,见后续讨论;

四、从快速到慢速

图片

这里可以看到a沿发出bbb,c沿发出ccc;

如果clk_fast每一拍都发一个数据,那么clk_slow必然会漏采数据;

因此实际的数据周期并没有那么快,在这个例子中,数据周期是12ns;即a和b沿发出bbb,c和d沿发出ccc;

此时我们的分析范围是12ns和9ns的公倍数,即36ns;3个周期的data,4个周期的clk_low;此时相当于将从快到慢的问题转化为了从慢到快的问题;

图片

又看到了重复采样的问题,h采到bbb,i采到ccc,j采到ddd,k也采到ddd;

我们可以想办法消掉一个采样沿。例如,在e沿发出j沿来采,setup最紧张,我们让j沿不采,那么e沿发出k沿来采。

如下图所示,在设计中做相应的修改,工具会自动插入一个门控时钟,将clk1中没有用到的时钟沿屏蔽掉了(红色虚线)。

图片

在这个例子中,(1)产生了一个counter,我们的目的是对clk2每四个上升沿去掉一个上升沿;看到一个上升沿加1,大于等于4的时候再从1开始;

图片

再利用counter产生一个D2_vld信号,当cnt为3的时候,D2_valid为0,其余情况都为1。

我们最终是要得到Q2。遇到一个clk2上升沿,先看D2_valid信号。G沿采到aaa,H沿采到bbb,I采到ccc;

到J的时候,D2_valid信号无效,没有采样,毕竟k也可以采到ddd;K采到ddd。

上述RTL也会在clk2上的分支上插入一个icg用来控制这个触发器,将J沿消掉,icg由D2_vld信号控制。

图片

五、multicycle约束

当clk1和clk2是倍数关系的时候,使用multicycle的方式更合适。

从慢到快

例如,Clk1的A沿打2,但是Treal很大(组合逻辑很长,也可以插入FF,变成两条path),大于Tb,到达endpoint的时候,clk2已经过去一个周期了;

图片

工具默认E应该采2,但是现在只能采到1,于是就会报违例;例如可以在F处分析,F处才需要变成2;

以clk2周期为单位(-end),我们以第一个上升沿为起点,向右移动2个clk1周期,即在F分析setup:

set_multicycle_path 2 -setup -endrom clk1 -to clk2

上面这句话,不光移动了setup的检查沿,还移动了hold的检查沿;

未设置multicycle_path 2时,A是第一个launch沿,E是第一个capture沿,D是第零个capture沿;

当设置multicycle_path 2时,第一个capture沿从E移动到F,那么第零个capture沿从D移动到E(工具默认在setup检查沿的上一个上升沿检查hold);

此时,Tb + T hold < Treal < Tb - T setup ~ + Tb~;

即要求,数据1要一直保持到Tb + Thold之后才能变;其实数据1在clk2第一个上升沿D之后就可以变了;因此还需要做如下设置:

set_multicycle_path 1end –hold -from clk1 –to clk2

这条command只会移动hold的检查沿,以clk2周期为单位移动向左移动1个周期,将检查沿移回到D;

即使设置了multicycle path,告诉工具了E沿不去check,RTL代码也需要做相应的修改(考虑计数器,生成使能信号);以避免输出在有触发沿的时候翻转,造成亚稳态的问题;

从快到慢

假设clk2是clk1的二分频。如前所述,从快到慢的问题应该先转换为从慢到快的问题,再转换为相同周期的问题。

例如,如果clk1是6ns,那么clk2是12ns,D2也是12ns,就和clk2有相同的周期了。因此,尽管从B到G是setup检查最严格的,但实际上rtl也要做相应修改,B沿不发数据,A沿发1,C沿发2。

图片

我们以clk1的周期为单位,将F沿向右移动2个周期,即在G处分析setup:

set_multicycle_path 2 -setup -start -from Clk1 -to Clk2

然后,以clk1的周期为单位,将hold的检查沿移回到F处:

set_multicycle_path 1 -hold -setup -from Clk1 -to Clk2
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • RTL
    RTL
    +关注

    关注

    1

    文章

    377

    浏览量

    59082
  • 触发器
    +关注

    关注

    14

    文章

    1694

    浏览量

    60432
  • 时序分析
    +关注

    关注

    2

    文章

    126

    浏览量

    22473
  • 门控时钟
    +关注

    关注

    0

    文章

    27

    浏览量

    8897
  • CLK
    CLK
    +关注

    关注

    0

    文章

    122

    浏览量

    16913
收藏 人收藏

    评论

    相关推荐

    介绍FPGA设计中时序分析的一些基本概念

    时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)、占空比失真(Duty Cycle Distortion)3点。
    的头像 发表于 03-16 09:17 1479次阅读

    FPGA时序约束之Skew讲解

    针对第2章节时序路径中用到skew,在本章再仔细讲解一下。
    发表于 08-14 17:50 642次阅读
    FPGA<b class='flag-5'>时序</b>约束之<b class='flag-5'>Skew</b>讲解

    哪些因此会导致时钟skew过大呢?FPGA中降低时钟skew的几种方法

    时序报告中,会显示出clock path skew,如果时钟偏移超过0.5ns,就需要额外关注了。
    的头像 发表于 03-13 09:06 603次阅读
    哪些因此会导致时钟<b class='flag-5'>skew</b>过大呢?FPGA中降低时钟<b class='flag-5'>skew</b>的几种方法

    还是时序分析,但是skew - 1

    电路分析
    皮特派
    发布于 :2022年12月07日 11:51:17

    还是时序分析,但是skew - 2

    电路分析
    皮特派
    发布于 :2022年12月07日 11:52:53

    系统时序基础理论之源同步时序要求

    上引起的差异,为了更好地说明这些Skew时序的具体影响,下面我们还是通过时序分析的方法来计算一下源同步时钟系统中信号的建立时间裕量和保持
    发表于 12-30 14:05

    如何减小clock skew

    求助大神,clock skew太大,导致时序违规怎么破?时钟由DCM输出,已经过BUFG
    发表于 01-14 17:00

    FPGA时序时序分析中的基本概念

    时序约束的目的是:规范设计的时序行为,表达设计者所期望满足的时序条件,指导综合和布局布线阶段的优化算法等,作用:提高系统设计的fmax、得到正确的时序
    发表于 07-03 02:11

    FPGA时序时序分析中的基本概念

    时序约束的目的是:规范设计的时序行为,表达设计者所期望满足的时序条件,指导综合和布局布线阶段的优化算法等,作用:提高系统设计的fmax、得到正确的时序
    发表于 07-09 09:16

    使用时钟PLL的源同步系统时序分析

    使用时钟PLL的源同步系统时序分析一)回顾源同步时序计算Setup Margin = Min Clock Etch Delay – Max Data Etch Delay – Max
    发表于 10-05 09:47 31次下载

    SOC时序分析中的跳变点

      跳变点是所有重要时序分析工具中的一个重要概念。跳变点被时序分析工具用来计算设计节点上的时延与过渡值。跳变点的有些不同含义可能会被
    发表于 09-15 10:48 1490次阅读
    SOC<b class='flag-5'>时序</b><b class='flag-5'>分析</b>中的跳变点

    时序分析之useful skew的作用分析

    对于positive skew来说,它可以减少T的时间,相当于提升芯片的performace。但是它的hold时间会变得更加难以满足对于negative skew来说,它的hold时间更加容易满足,取而代之的是,它会降低芯片的性能。
    的头像 发表于 07-23 17:15 1.6w次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>之useful <b class='flag-5'>skew</b>的作用<b class='flag-5'>分析</b>

    时序分析基础

    时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)、占空比失真(Duty Cycle DistorTIon)3点。对于低速设计,基本不用考虑这些特征;对于高速设计,由于时钟本身的原因造成的时序问题很普遍,因此必须关注。
    的头像 发表于 03-08 14:59 3489次阅读

    FPGA设计中时序分析的概念分析

    时钟的时序特性主要分为抖动(Jitter)、偏移(Skew)、占空比失真(Duty Cycle Distortion)3点。对于低速设计,基本不用考虑这些特征;对于高速设计,由于时钟本身的原因造成的时序问题很普遍,因此必须关注。
    的头像 发表于 11-15 09:35 1045次阅读

    时序分析基本概念介绍&lt;Skew&gt;

    今天要介绍的时序分析基本概念是skew,我们称为偏差。
    的头像 发表于 07-05 10:29 2393次阅读
    <b class='flag-5'>时序</b><b class='flag-5'>分析</b>基本概念介绍&lt;<b class='flag-5'>Skew</b>&gt;