本文将介绍FPGA中和时钟有关的相关概念,阅读本文前需要对时序收敛的基本概念和建立、保持关系有一定了解,这些内容可以在时序收敛:基本概念建立时间和保持时间(setup time 和 hold time)中找到。

系列目录 

    时序收敛:基本概念

    建立时间和保持时间(setup time 和 hold time)

    OFFSET约束(OFFSET IN 和OFFSET OUT)

    Clock Skew , Clock uncertainly 和 Period

    特殊约束From To

    OFFSET IN 使用举例

    Achieving Timing Closure

0. 引言

    Intel 4790K的主频是4.0GHz,高通801的单核频率可达2.5GHz,A8处理器在1.2GHz,MSP430可以工作在几十MHz……这里的频率的意思都是类似的,这些处理器的频率都是厂商给定的。但是对于FPGA的工作频率而言却往往需要我们自己决定,在产品的设计初始就需要考虑FPGA工作在哪个频率,譬如250MHz。这个取值并不是瞎确定的,譬如如果定在1GHz,那显然是不可能的,有一本叫《XXXXX FPGA Data Sheet DC and Switch Characteristics》的手册给出了FPGA各个模块的直流供电特性和最高工作频率。这里给出的是理论工作上限制,Virtex-5各个模块工作频率最高大概在400-500MHz之间。当然还要考虑FPGA的输入clk了,即使有DCM等模块分频倍频,一般也不会选择一个很奇怪的分频比。

    一旦工作频率确定下来之后,问题就来了。你所建立的工程是否能在这一要求的工作频率下正常工作?只需要在UCF文件内添加时钟的周期约束,Place & Route之后就可以得到结果了。约束满足了,很好;没有满足,可以改,如何修改将在Achieving Timing Closure中介绍。

    谈到这里,有一个问题呼之欲出:除了器件本身的限制,还有什么会影响工作频率?下文将介绍相关概念。

1. Clock Skew

    考虑同步时序电路中的触发器,在时钟沿到达的时候,数据必须是稳定(非亚稳态)且有效的(符合设计需求)。同步时序电路中,对于两个相连的触发器(譬如下图,Figure6-26),我们自然希望这两个触发器的时钟相位完全一致,但这往往是不现实的。不同的延时将破坏这一关系,延时差称为Clock Skew,即时钟歪斜。

    Clock Skew = clock path delay to the destination synchronous element - clock path delay to te source synchronous element.

    时钟的不同路径延时将破坏其原本完美的相位关系。但并不是说Clock Skew的取值为0是最好的 。Clock Skew是如何影响时钟周期(频率)将在第三节介绍。

    注意,clock skew中只提到了path delay,但是实际上对于destination synchronous element 和source synchronous element而言,时钟的相位可能是不一样的。这一点表现出了时钟的相位和clock skew是独立的两个概念。在前文的OFFSET中,相位的表现为clock arrival time。

 

    上图是一个clock skew的例子,可以看到两个触发器的时钟不是同相的,但是计算clock skew的时候没有必要考虑。以DCM的输出作为参考,源同步元素的路径延时为0.852+0.860+0.639 = 2.351,目的同步元素的路径时延为0.860 + 0.860 +  0.639 = 2.359。故clock skew = 0.008 。

2. Clock Uncertainty

    Clock Uncertainty 的概念比较好理解,就是时钟的不确定性。时钟不确定性是时钟本身的不完美导致的。譬如对于100MHz时钟,上升沿本应该在0ns,10ns,20ns;实际上却在0ns,10.01ns,19.99ns,这个差距就是时钟的不确定性。时钟不确定性受到了多个因素的影响,其中一个因素是clock jitter,关于clock jitter,PERIOD约束中有一个INPUT JITTER的关键字告诉综合工具输入时钟的jitter。譬如

    不同情况下,Clock Uncertainty 的计算方式是不一样的,譬如DCM时钟下

Clock Uncertainty = [√(INPUT_JITTER² + SYSTEM_JITTER²) +  DCM_Discrete_Jitter]/2 + DCM_Phase_Error

    SYSTEM JITTER定义了整个系统的jitter,受到了电源噪声、板级噪声和系统任何外部jitter的影响。对于clock uncertainty和clock jitter来说,好像并没有什么太值得注意的地方。

3. Period 分析

Clock Domains

对于同步时序电路来说,不可避免的有时钟的存在,比较简单的就是所有的触发器都采用了一个时钟。那么可以认为整个设计中的路径都处于这个时钟的覆盖下,如下图,这两个触发器之间的路径是受到这一个时钟的时钟周期约束的。这种情况称为single clock domain。

 

    但是对于大多数设计来说,情况并不是这样的,譬如DCM可以分出不同相位的时钟。如下图,此时两个触发器的时钟不是一样的,而这两个触发器之间的数据路径连接了这两个时钟。什么是时钟域?域即是区域,时钟的区域,在我看来就是时钟覆盖的范围。下图中触发器之间的路径,一端属于clk20,一端属于clk20_90g,横跨了两个时钟域。注意这两个时钟是一个DCM产生的,时钟相关,因此XST能够对其进行分析。本节内容不谈跨时钟域的问题。

举例

    以上图(Figure6-6)为例,计算slack。Requirement取决于两个触发器时钟的相对相位关系。注意到第一个触发器在下降沿采样,第二个触发器相移为90,时钟周期为20ns。结合前文的setup和OFFSET提及的相关概念。这是很好理解的。和OFFSET约束不同的是,OFFSET主要是受到外部信号的相对关系影响,Period则基本取决于设计。通过分析可知,限制最小时钟周期的影响因素在于data path。data path包括了布线延时和逻辑延时。了解到这一点,对之后代码编写是由帮助的。譬如,不能有太复杂的逻辑。(这是因为FPGA的LUT结构输入有限,以4输入为例,逻辑复杂需要LUT级联,那么自然会影响到逻辑延时)

Slack (setup path): 13.292ns (requirement - (data path - clock path skew + uncertainty))

Source: IntC_2 (FF)

Destination: XorB_2 (FF)

Requirement: 15.000ns

Data Path Delay: 2.594ns (Levels of Logic = 1)

Clock Path Skew: -0.086ns

Source Clock: clk0 falling at 10.000ns

Destination Clock: clk90 rising at 25.000ns

Clock Uncertainty: 0.200ns

周期约束分析

    结合三节内容来看,注意式子Slack = requirement - (data path - clock path skew + uncertainty)) 。requirement是由时钟周期确定的,要判断时钟的周期约束是否得到满足,计算data path - clock path skew + uncertainty是否大于requirement 即可。data path是数据路径延时,另两个参数已经在1,2节介绍。

Clock Skew , Clock Uncertainty和 Period的更多相关文章

  1. linux下的clock skew detected

    今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误: make: warning: Clock skew detected. Your build may be incomplete 试了ma ...

  2. 解决的方法:warning: Clock skew detected. Your build may be incomplete.

    因为时钟同步问题.出现 warning:  Clock skew detected.  Your build may be incomplete.这种警告, 解决的方法: find . -type f ...

  3. ceph: health_warn clock skew detected on mon的解决办法

    造成集群状态health_warn:clock skew detected on mon节点的原因有两个,一个是mon节点上ntp服务器未启动,另一个是ceph设置的mon的时间偏差阈值比较小. 排查 ...

  4. Ceph 时钟偏移问题 clock skew detected 解决方案--- 部署内网NTP服务

    告警:HEALTH_WARN clock skew detected on mon.ip-10-25-195-6; 8 requests are blocked > 32 sec; Monito ...

  5. 关于warning: Clock skew detected. Your build may be incomplete. 的解决方法

    今天发现电脑的系统时间不对,因此将时钟进行了改动,回头编译Linux kernel的时候,提演示样例如以下的warning: warning:  Clock skew detected.  Your ...

  6. Linux GCC编译警告:Clock skew detected. 错误解决办法

    今天在虚拟机上用GCC编译一个程序的时候,出现了下面的错误: make: warning: Clock skew detected. Your build may be incomplete 试了ma ...

  7. 关于warning: Clock skew detected. Your build may be incomplete. 的解决方法【转】

    本文转载自:http://blog.csdn.net/jeesenzhang/article/details/40300127 今天发现电脑的系统时间不正确,因此将时钟进行了修改,回头编译Linux ...

  8. 编译时出现clock skew detected, your build may be incompeleted

    错误原因为文件修改时间大于系统时间,这时候如果date输出系统时间,会发现这个时间是错误的.在nachos实习时多次出现这个错误,简单的方法尝试make多次直到有一次出现'nachos' is up ...

  9. 解决warning: Clock skew detected. Your build may be incomplete

    原因:机器系统时间与文件时间不一致 解决:更新所有文件的时间后重新编译 find . -type f | xargs -n 5 touch make clean make xargs  -n num ...

随机推荐

  1. ORACLE查看表空间对象

    ORACLE如何查看表空间存储了那些数据库对象呢?可以使用下面脚本简单的查询表空间存储了那些对象: SELECT TABLESPACE_NAME       AS TABLESPACE_NAME    ...

  2. 烂泥:gpg加解密软件学习

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真 ...

  3. Linux磁盘管理之日志文件系统和非日志文件系统08

    略. 查看linux支持的文件系统命令: ls /lib/module/`uname -r`/x86/fs blkid查看文件系统的类型 mkfs.ext2  == mkfs –t ext2

  4. linux enc28j60网卡驱动移植(硬件spi和模拟spi)

    本来想移植DM9000网卡的驱动,无奈硬件出了点问题,通过杜邦线链接开发板和DM9000网卡模块,系统上电,还没加载网卡驱动就直接崩溃了,找不到原因...刚好手上有一个enc28j60的网卡模块,于是 ...

  5. ixgbe 82599 固定源与目标, UDP, 64字节小包, 1488w pps 单核CPU软中断sirq 100%

    ixgbe 82599 固定源与目标, UDP, 64字节小包, 1488w pps 单核CPU软中断sirq 100% 注: 测试使用, 正常应用不要开启 五元组不同, 开启ntupleethtoo ...

  6. ajax小结

    1. http是一种无状态协议 2. http请求:四部分组成 ① http 请求的方法或动作,如:GET / POST ② 正在请求的URL,总得知道请求的地址是什么 ③ 请求头,包含一些客户端环境 ...

  7. SpringMVC总结帖

    SpringMVC是基于MVC设计理念的一款优秀的Web框架,是目前最流行的MVC框架之一,SpringMVC通过一套注解,让POPJ成为处理请求的控制器,而无需实现任何接口,然后使用实现接口的控制器 ...

  8. NOIP2009 提高组T3 机器翻译 解题报告-S.B.S

    题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件会先 ...

  9. 移动测试会Ebay沙龙PPT

    Bill Liu --如何让你的测试更敏捷ebay沈斌峰 --Mobile Automation TestingJason Woo -- Full Stack Testing http://teste ...

  10. VIJOS P1037搭建双塔[DP]

    描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块 ...