时序约束的基础概念

时序约束和时序分析,在FPGA设计当中,是相当重要的基本功。但是市面上的教材、资料都相当的枯燥,不易理解,而且内容不多(最多就一章),不能写成一本书。于是,笔者尝试用通俗易懂的文字来解释这部分的内容。

1、什么是时序?

时序是指时间的先后顺序。在绝大多数的数字电路当中,都是依靠时钟来驱动各种电路工作的。时钟就像个领导一样,告诉各种电路,在什么时刻做什么事情。做的事情也是有先后顺序的,如果你不按常规出牌的话,就会出错,然后被领导骂了。

2、什么是约束?

校规就是一种约束,叫你不要逃课,你就不要逃。

3、什么是时序约束?

告诉各种电路,要按照我安排的先后顺序做事,不能乱。这里,电路就像是按照课表上课的学生。

4、什么是时序分析?

仅仅发号司令还不行,总会有些电路不按常规出牌,这时,就要分析一下原因了,就像是分析学生为什么逃课一样。

5、为什么需要做时序约束?

HDL只是描述我们需要什么样的电路,但是电路总得要布局布线的。如果只有HDL而不约束的话,就像是手里拿着元件,但是没有人画PCB一样。幸好综合器,会给我们约束,其实就像是自动布线一样。画过PCB的人,都知道自动布线弄出来的PCB有多烂了吧,所以才需要我们做时序约束。

6、什么是竞争、冒险?

学过数电的人,都很熟悉这个概念,还不清楚的,可以翻翻书,这里就不详细说明了。竞争、冒险的意思就是走线延时可能引起逻辑出错,当然,你做的是低速电路(交通灯之类的),会觉察不到这种问题。但是弄到100M以上的高速数字电路,一点点问题,都有可能导致整个系统不能正常工作。那么在FPGA上面考虑的时序问题,本质上,就是竞争、冒险。

7、Review边沿触发器。



由于笔者比较懒,具体的,可以看一下D触发器的百度百科。特别要注意是,实际方波的边沿不是直的,而是有过渡过程的。此外,数据打入D触发器内部并不是立马生效,而是需要时间的(走线延时,MOS管的反应时间等)。

为了让数据准确无误地进出触发器,于是提出了三个重要概念:建立时间、保持时间、输出延时。

8、建立时间tsu。


如上图所示,建立时间

其中Micro_tsu是触发器内部固有的建立时间,是常数,一般小于1ns,在大多数情况下可以忽略不计。

Data Delay和Clock Delay分别指数据延时和时钟延时,这里用延时一词并不能准确地描述这个概念,应该用停留、暂留。(后面均用暂留时间)

所以,数据进入触发器之前建立时间=输入数据暂留时间-时钟暂留时间,一般来说,数据会比时钟提前到达,而时钟会采集到数据的中部,所以建立时间大于0才是合理的。

9、保持时间th。


如上图所示,保持时间

其中Micro_th是触发器内部固有的保持时间,是常数,一般小于1ns,在大多数情况下可以忽略不计。

所以,数据进入触发器之后保持时间=时钟暂留时间-输入数据暂留时间,因为时钟不稳定的话,触发器输出也不稳定,所以时钟要比数据更晚离开,一般,保持时间大于0才是合理的。


上图让你更容易理解建立时间和保持时间。

9、输出延时tco


如上图所示,输出延时

其中Micro_tco是触发器内部固有的输出延时,是常数,一般小于1ns,在大多数情况下可以忽略不计。

所以,输出延时=时钟暂留时间+输出数据暂留时间。触发器输出的数据是给后级的触发器使用的,所以输出总得要维持一段时间,这个时间就是输出延时了。如果要保持输出的数据稳定的话,就要让时钟和输出数据同时稳定,因为时钟不稳定的话,触发器输出也不稳定。一般,输出延时大于0才是合理的。

10、引脚到引脚的延迟tpd

画过PCB的人,都知道电路板,走线也会带来延时,所以这个tpd也很好理解,就是引脚到引脚的走线延时。

11、时钟偏斜slew


偏斜又有不对称的意思。如上图,同一个时钟到达两个DFF所需要的延时不同,分别是1.2ns和5.6ns。

这说明了走线的长度不对称(这里特指长度,而不是指几何形状),时钟偏斜t_slew = tcd1 - tcd2 = 1.2--5.6=-4.4ns。

由于全局时钟的slew很小,一般是忽略不计的。

12、时钟抖动jitter。


把时钟送到示波器那里观察发现,每个时钟周期总会有点差异,这种差异是具有随机性的,被称为抖动。

幸好这个抖动,一般影响不大,也是可以忽略不计的。

13、时序余量slack。

时序余量是用来判断设计出来的电路的时序是否满足要求。


时序余量=需要的时钟周期-实际的时钟周期。

比如,我设计了一个乘法器,需要它能跑200M(周期5ns),但是经过综合器自动布线之后,最高只能跑180M(周期5.6ns)。

所以时序余量=5ns-5.6ns=-0.6ns,不能满足需求。一般,时序余量为正,才是合理的。

14、时序违规Timing violation。

时序余量为负,时序不满足要求,就是时序违规了。

  • 72
    点赞
  • 386
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
1. 2 2. 什么是同步逻辑和异步逻辑? 2 3. 同步电路和异步电路的区别: 2 4. 时序设计的实质: 2 5. 建立时间与保持时间的概念? 2 6. 为什么触发器要满足建立时间和保持时间? 2 7. 什么是亚稳态?为什么两级触发器可以防止亚稳态传播? 2 8. 系统最高速度计算(最快时钟频率)和流水线设计思想: 2 9. 同步复位和异步复位的有何区别? 3 10. 写出一段代码,用来消除亚稳态。 3 11. 写出一段代码,对时钟进行3分频。 4 12. 设计一个glitch free的时钟切换电路逻辑,比如从20m切到50m,讲明理由。 4 13. 如何跨时钟域同步多位信号?有哪些技术? 4 14. 异步FIFO为什么用格雷码 5 15. 时序约束概念和基本策略? 5 16. 附加约束的作用? 6 17. 锁存器(latch)和触发器(flip-flop)区别? 6 18. FPGA 芯片内有哪两种存储器资源? 6 19. 什么是时钟抖动? 6 20. FPGA 设计中对时钟的使用?(例如分频等) 6 21. IC 设计中同步复位与异步复位的区别 6 22. MOORE 与 MEELEY 状态机的特征 6 23. FPGA 中可以综合实现为 RAM/ROM/CAM 的三种资源及其注意事项? 6 24. 什么是竞争与冒险现象?怎样判断?如何消除? 7 25. 查找表的原理与结构 7 26. 寄生效应在IC设计中怎样加以克服和利用 7 27. 设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零, 7 28. 数字IC(ASIC)设计流程: 8 29. SERDES的高速串行接口 8 30. 什么是状态编码技术? 解释一下。 8 31. FIFO简单讲解(*) 9 32. IC设计前端到后端的流程和EDA工具? 12 33. FPGA设计中如何实现同步时序电路的延时? 12
时序约束是在数字电路设计中用于确保设计在时序要求下正确运行的一种方法。Lattice是时序约束的一种类型。它是由Lattice Semiconductor公司提出并广泛使用的一种约束关系。Lattice时序约束主要用于确保设计满足条件时钟的时序要求。 Lattice时序约束主要涉及到时钟、数据路径和时序意图。时钟是指设计中使用的周期性信号,数据路径是指信号在电路中传输的路径,而时序意图是指设计者对信号在电路中的传输方式的理解和意图。 时序约束主要包括最大延迟和最小延迟。最大延迟是指信号传输经过的最长时间,而最小延迟是指信号传输经过的最短时间。通过对时钟、数据路径和时序意图进行合理的约束设置,可以确保设计在时序要求下正常运行。 Lattice时序约束的设置包括时钟频率、时钟起始时间、时钟边沿、数据路径延迟等方面。设计人员需要详细了解设计的时序要求,根据具体的应用情况来设置约束。通过合理设置时序约束,可以更好地控制时序和时钟的关系,从而提高电路的稳定性和可靠性。 总结来说,Lattice时序约束是一种用于确保电路设计在时序要求下正确运行的方法。通过合理设置时钟、数据路径和时序意图的约束,可以确保设计在时序要求下正常工作。Lattice时序约束的设置对于电路的稳定性和可靠性至关重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值