博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FPGA之道(17)FPGA设计的时序分析
阅读量:2027 次
发布时间:2019-04-28

本文共 4751 字,大约阅读时间需要 15 分钟。

文章目录

前言

时序分析是FPGA开发中十分关键的一个过程,也是复杂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内部的连线延迟,因此其分析结果的意义不是很大,但是相对于布局布线后时序分析,它也有属于自己的一些优势。

  • 首先,由于只考虑到门延迟,所以映射后时序分析的速度明显要比布局布线后时序分析的速度快,尤其是在设计比较复杂的时候,这种优势就更加明显。
  • 其次,映射后时序分析中,有一个叫做40/60的分析原则。所谓40/60,主要指的是如果门延迟(或者叫逻辑延迟)占电路所允许最大延迟的百分比小于40%,即门延迟与时间余量的比值小于40/60,那么布局布线后仍能满足时序要求的可能性就会很大。因此,如果我们能够通过映射后时序分析先将数字电路的门延迟改到符合40/60原则后,那么再对设计进行布局布线,就更容易满足指定的时序约束。相比之下,如果直接做布局布线后时序分析,更容易出现改好了一处错误又冒出来另一处错误的问题。不过40/60原则的约束有些过于高,我们在进行映射后时序分析时也不可生搬硬套。

三、时序分析工具介绍。

通常来说,各个FPGA厂商都会在它们的FPGA软件集成开发环境中集成自己的静态时序分析工具。对于一般的时序验证来说,这些自带的工具就够用了。

与功能仿真环节类似,样样行就难以样样精,对于专业的FPGA验证来说,一般都是要采用更加专业的静态时序分析工具。例如Synopsys公司的Prime Time,它常被用来分析大规模、同步、数字ASIC以及FPGA设计。

四、时序约束与时序分析的关系。

这是两个比较容易混淆的概念,从本质上来说,时序约束与时序分析根本是两回事。时序约束是我们写给编译器的参考,编译器会参考时序约束信息完成布局布线。而时序分析是针对布局布线后的FPGA设计进行分析,看能否实现我们的一些时序要求。由于通常情况下,我们写给编译器的时序约束内容恰恰就等价于我们对布局布线后FPGA设计的时序要求,所以在进行时序分析的时候,并不需要我们再重新写一份时序要求文件。通常,FPGA软件集成开发环境都是这样做的,编译器默认时序约束文件中的内容即是时序分析时的时序要求,所以在进行时序分析的时候,编译器会自动根据时序约束信息生成一份时序要求然后传递给自带的静态时序分析工具,这也是为什么有人经常会将时序约束与时序分析混为一谈。但是在有些情况下,我们是要自己去编写时序要求文件的,并且时序要求文件也不一定就等同于时序约束文件。

  • 情况一:当我们使用专业的静态时序分析工具时,我们从编译器中可以得到FPGA设计的资源网表和延迟信息,此时我们就需要根据需求来编写详细的时序需求,并且还需要编写如何打印时序报告的内容。
  • 情况二:时序约束是布局布线的指导,但并不代表没有时序约束的时候布局布线就一定出错,这就好比你家的桌子上有一块奶油蛋糕,不用你多说,你的孩子十有八九也会把它吃个净光。对于一些比较复杂的FPGA设计,可能经常会发现时序约束文件中漏掉了一个小项,可是这不能说明我们的设计就一定出问题,如果打算修改时序约束文件,那么肯定会影响到整体的布局布线,消耗大量时间不说,可能还会引起更多的时序问题,如果在此之前,先对漏掉的环节进行一下时序分析,如果它满足时序要求,那么就不需要修改设计,直接进行上板调试即可。尤其是当协同工作的时候,开发者与验证者很难取得一致,此时验证者必须要找出实实在在的问题才能去要求开发者修改设计或约束,所以此时,开发者写时序约束,验证者写时序分析的时序要求,这两者之间很可能有很大的差别。
  • 情况三:由于软件无法完全模拟出外界的真实情况,所以为了保险起见,我们一般会将时序约束设计的“紧”一些。例如,本来系统时钟为100MHz,在时序约束的时候我们告诉编译器这是一个110MHz的时钟,那么布局布线后的设计性能就可能会更好一些。但是在时序分析的时候我们完全没有必要这么做,如果系统时钟为100MHz,那么我们就告诉时序分析工具系统时钟是100MHz好了,此时时序分析工具会告诉你当前的设计如果工作在100MHz的时钟下,还有多少时间余量。此时我们便可以根据这个时间余量计算出理论上的最大时钟频率,如果为120MHz,那么我们就说时钟具有20%的余量,系统具有比较好的对外界干扰的抵抗能力;如果为100.1MHz,那么我们就说时钟仅有0.1%的余量,余量过小,系统可靠性无法得到较好的保证。顺便一提,通常按照经验来说,时序分析时保证设计具有10%左右的余量即可。

五、时序分析的好处与隐患。

时序分析的好处,就在于它采用了形式化的验证方法,从而能够充分保证设计的时序性能正确性。它的基本思想是将整个FPGA设计划分为很多个逻辑锥,然后通过证明每一个逻辑锥都满足时序指标从而推导出整个FPGA设计也是100%满足时序指标的。能够100%确保设计的时序满足情况,就是时序分析最大的好处,关于时序分析详细的原理请参阅【时序分析篇->时序分析的原理】章节。

但是,需要注意的是,由于时序分析中的时序要求是人写的,由于相关人员性格、心情、能力等多方面的原因,导致其无法写出100%正确、100%全面的时序要求。例如,可能对于某些关键路径没有设置脚本进行观察,从而出现遗漏等。所以实际的时序分析结果一般也难以100%证明设计的时序正确性。除此以外,有些静态时序分析工具在进行分析的时候主动的去“加紧”时序约束,潜在的对FPGA设计进行了过于严格的时序要求,从而让原本可以通过时序分析的设计出现了时序问题。因此,以上两点就是时序分析环节存在的一些隐患,在实际的工作中应该要加以注意。

六、时序分析环节的输出。

时序分析环节输出的主要内容就是时序分析报告,当然了,如果不是按照编译器默认的方法进行时序分析的话,包含时序要求信息、分析方法以及报告生成的程序文件也算一个。通过阅读时序报告,我们可以判断FPGA设计是否满足给定的时序要求,并可看到一些FPGA内部详细的门延迟和线延迟信息,这些信息是发现问题时修改设计最直接的线索。

转载地址:http://eccaf.baihongyu.com/

你可能感兴趣的文章
ZooKeeper概述
查看>>
Docker(一):Docker入门教程
查看>>
Apach Hadoop 与 CDH 区别
查看>>
大数据学习笔记之大数据概述
查看>>
Docker(二):Docker入门教程
查看>>
Zookeeper实现哨兵机制
查看>>
大数据学习笔记之初识Hadoop
查看>>
Docker(三):Docker入门教程-CentOS Docker 安装
查看>>
Spring Cloud(1)相关概念
查看>>
JConsole和VisualVM远程访问JMX
查看>>
Spring Cloud(2)主要组件应用实例
查看>>
Linux kswapd0 进程CPU占用过高
查看>>
JSON Web Token
查看>>
CentOS搭建NodeJs服务器—Mongodb安装
查看>>
CentOS7 yum 安装git
查看>>
Docker(五):Dockerfile
查看>>
Docker(四):Docker常用命令
查看>>
Nginx静态文件服务器配置方法
查看>>
Spring Boot Starters 究竟是怎么回事
查看>>
MySQL——复制(Replication)
查看>>