时序约束的基础概念

时序约束和时序分析,在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
    点赞
  • 387
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
时序约束是指在一定时间序列下,某些事件或活动必须按照特定的顺序和时间来进行。get_keeps是时序约束基础概念,它指的是系统需要保持一定的顺序和时间间隔来执行和处理特定的任务或事件。 在实际应用中,时序约束和get_keeps的概念常常用于生产制造、项目管理、系统集成等领域。例如,在生产制造中,某些工件的加工和组装必须按照特定的顺序和时间来进行,否则就会影响生产进度和产品质量。在项目管理中,项目的各个阶段和任务也需要按照一定的时序约束来进行,以确保项目能够按时完成。在系统集成中,不同的模块和子系统之间也需要保持一定的顺序和时间间隔来进行数据交换和通信,以确保整个系统的正常运行。 get_keeps的概念强调了时序约束对系统运行和任务执行的重要性,通过保持一定的时序关系可以提高系统的效率和稳定性。同时,get_keeps也为系统设计和优化提供了重要的参考和指导,帮助开发人员更好地设计和实现满足时序约束要求的系统和应用程序。 总之,时序约束和get_keeps的基础概念是系统和任务必须按照一定的顺序和时间来进行,这对于保证系统的正常运行和任务的顺利执行具有重要意义。 Get_keeps概念强调了时序约束对系统运行的重要性,同时也为系统设计和优化提供了重要的指导。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值