赞
踩
时序分析是FPGA开发中十分关键的一个过程,也是复杂FPGA系统开发必须进行的一步,下面摘自《FPGA之道》,一起看看对于时序分析的观点。
时序分析是形式化验证在FPGA领域中的一个非常好的应用典范,它和功能仿真环节一起,并称为FPGA基本开发流程中的验证双雄。对于大部分FPGA项目的开发来说,只要能够保证FPGA设计通过这两个环节的验证,那么项目成功的可能性就非常之大。在此,将对时序分析环节进行一些简要的概念介绍。
时序分析,也叫静态时序分析,英文全称Static Timing Analysis,简称STA。它经由完整的分析方式判断IC是否能在使用者的时序环境下正常工作,为确保IC品质提供了一个很好的解决方案。也许有人会问,我的FPGA设计已经通过了功能仿真,为什么实际测试的时候感觉结果总是相差甚远呢?其实,出现这种情况,十有八九就是因为你的FPGA不满足其目前运行环境中的时序要求,例如时钟频率、传输延迟等。下面,我们就从两个方面来看一下为什么需要对FPGA设计做时序分析?
首先,要搞清楚为什么功能正确的设计在实测的时候会出现问题?这是一个从理想到现实的差距。在理想世界里,我们认为电信号的传递是瞬间的,是不需要消耗时间的,但这仅仅是一个很好的近似。在理论的学习中恰当的近似能够帮我们更好的抓住事物的本质,但在现实生活中,我们就需要考虑更加具体和细节的问题。从理论到现实,有三点需要考虑:
1、任何信号的传播都是要受到速度限制的,目前所知最快的速度是光信号在真空中的传播速度,约为3X米每秒,而在电子器件中,电信号的传播速度可以近似认为接近光速,在这里我们姑且令其等于米每秒(注意,电信号的传播速度等于电磁波在导体中的传输速度,而非电子的传输速度,电子在导体中的运动速度其实比较慢,但是因为电磁波传输的很快,所以整个导体中的电子几乎同时开始运动,那么根据电流的定义——单位时间内通过导体横截面的电荷数——可知,整个导体内部几乎瞬间都充满了电流)。100MHz的时钟频率在FPGA的设计中算是比较常见的,那么它的时钟周期为10纳秒,众所周知,1纳秒 = 秒,因此对于100MHz的时钟来说,电信号每个时钟周期只能传输1米远的距离,那么如果两个寄存器之间的距离超过了1m,那么预期的功能势必在实测中会出现问题。
2、也许有人会说,一片FPGA芯片有时候也就指甲盖那么大,别说100MHz了,就算是1GHz的时钟频率,0.1米的传输距离也戳戳有余了吧。那么,首先我要告诉你,你的肚子也许并不大,但是你的小肠却可能有6、7米长。其次,FPGA中的资源归根到底都是由MOS管电路实现的,任何数字电路都是以模拟电路为载体,只不过让模拟器件工作在比较极端的条件下,从而呈现出数字电路的特性而已。那么了解摸拟电路的都知道,随着信号频率的越高,电路中寄生电容、电感等的影响就越明显。因此,对于如下电路,
如果逻辑0对应的模拟电平为0V,逻辑1对应的模拟电平为3.3V。那么当发送端的信号从逻辑0变为逻辑1时,首先传输路径中的电流要变大,可是寄生电感在抵抗这种变化,所以寄生电感的存在让电流增大的速度慢了;其次,如果逻辑电平的判决门限为1.8V的话,那么要保证接收端正确接收到发送端发出的逻辑1,接收端的输入电压必须大于1.8V,由于寄生电容的存在,要想让输入电压从0V增加到1.8V以上,必须要经历一定的充电时间。以上电路虽然可能是一个不太恰当的近似,但是也从侧面说明了寄生电容、电感等对数字电信号传递的时间影响。除此以外,电流的大小还跟电阻的倒数成正比,对于导线来说,横截面积越小、电阻越大,既然FPGA芯片有时候也就指甲盖那么大,其内部还具有非常丰富的布线资源,那么其连线的横截面积大小可想而知。因此由于内部连线的阻值较大,也会导致寄生电容的充电电流最大值偏低。所以,即使两个寄存器之间的距离满足电信号的传输能力,也可能由于寄生电容、电感以及连线电阻的影响而导致数字电信号不能如期到达。
3、以上两点的分析主要针对FPGA中的连线延迟,并没有考虑到数字电路本身的一些逻辑运算功能,例如与、或、非等,在实际情况下,任何逻辑运算都必须以电信号为载体,因此运算越复杂,延迟也就越大,这便是我们常说的门延迟。
由于以上三点的影响,导致即使通过功能仿真的FPGA设计,在实测的时候也很可能出现问题。而且环境的时序指标要求越高,FPGA设计越容易出现问题。
其次,在上一节讲用户约束的时候我们说过,编译器只是参考我们的约束文件来工作,并不一定能确保完成任务。而在各种布局布线约束中,尤其以时序约束最容易出现不满足的情况,更有甚者,对于某些协同开发的情况,实现设计的工程师不重视时序约束的编写,或者设置就没有编写时序约束。因此在上板调试FPGA设计前,必须先确保其是否满足我们要求的时序指标,否则一旦出现问题将会不知所措,因为难以判断设计是出了功能性的问题还是时序性的问题。
以上两方面就是为什么要做时序分析的原因。
FPGA的基本开发流程中,共有两处可以进行时序分析的地方。第一处是在对FPGA芯片完成映射后,称为映射后时序分析;第二处是对FPGA芯片完成布局布线后,称为布局布线后时序分析。因此时序分析也可以依据此分为两类,不过通常来说,我们只做布局布线后的时序分析即可,因为它最贴近于FPGA芯片真实的情况。因此在这里,我们仅简要介绍一下映射后时序分析。
映射后时序分析环节是FPGA基本开发流程中一个可选的环节,由于它只能利用映射后的电路信息,所以在进行分析时无法考虑到FPGA内部的连线延迟,因此其分析结果的意义不是很大,但是相对于布局布线后时序分析,它也有属于自己的一些优势。
通常来说,各个FPGA厂商都会在它们的FPGA软件集成开发环境中集成自己的静态时序分析工具。对于一般的时序验证来说,这些自带的工具就够用了。
与功能仿真环节类似,样样行就难以样样精,对于专业的FPGA验证来说,一般都是要采用更加专业的静态时序分析工具。例如Synopsys公司的Prime Time,它常被用来分析大规模、同步、数字ASIC以及FPGA设计。
这是两个比较容易混淆的概念,从本质上来说,时序约束与时序分析根本是两回事。时序约束是我们写给编译器的参考,编译器会参考时序约束信息完成布局布线。而时序分析是针对布局布线后的FPGA设计进行分析,看能否实现我们的一些时序要求。由于通常情况下,我们写给编译器的时序约束内容恰恰就等价于我们对布局布线后FPGA设计的时序要求,所以在进行时序分析的时候,并不需要我们再重新写一份时序要求文件。通常,FPGA软件集成开发环境都是这样做的,编译器默认时序约束文件中的内容即是时序分析时的时序要求,所以在进行时序分析的时候,编译器会自动根据时序约束信息生成一份时序要求然后传递给自带的静态时序分析工具,这也是为什么有人经常会将时序约束与时序分析混为一谈。但是在有些情况下,我们是要自己去编写时序要求文件的,并且时序要求文件也不一定就等同于时序约束文件。
时序分析的好处,就在于它采用了形式化的验证方法,从而能够充分保证设计的时序性能正确性。它的基本思想是将整个FPGA设计划分为很多个逻辑锥,然后通过证明每一个逻辑锥都满足时序指标从而推导出整个FPGA设计也是100%满足时序指标的。能够100%确保设计的时序满足情况,就是时序分析最大的好处,关于时序分析详细的原理请参阅【时序分析篇->时序分析的原理】章节。
但是,需要注意的是,由于时序分析中的时序要求是人写的,由于相关人员性格、心情、能力等多方面的原因,导致其无法写出100%正确、100%全面的时序要求。例如,可能对于某些关键路径没有设置脚本进行观察,从而出现遗漏等。所以实际的时序分析结果一般也难以100%证明设计的时序正确性。除此以外,有些静态时序分析工具在进行分析的时候主动的去“加紧”时序约束,潜在的对FPGA设计进行了过于严格的时序要求,从而让原本可以通过时序分析的设计出现了时序问题。因此,以上两点就是时序分析环节存在的一些隐患,在实际的工作中应该要加以注意。
时序分析环节输出的主要内容就是时序分析报告,当然了,如果不是按照编译器默认的方法进行时序分析的话,包含时序要求信息、分析方法以及报告生成的程序文件也算一个。通过阅读时序报告,我们可以判断FPGA设计是否满足给定的时序要求,并可看到一些FPGA内部详细的门延迟和线延迟信息,这些信息是发现问题时修改设计最直接的线索。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。