一、IC设计过程及相应EDA开发工具
-
-
1、规格制定
- 芯片规格根据客户需求(具体功能和性能要求)制定Spec
-
2、详细设计
- 设计方案,具体实现架构,模块划分
-
3、HDL编码
- 通过实际的硬件电路功能HDL语言描述,形成
-
4、
- 检验编码设计的正确性,检验的标准就是第一步制定的规格,看设计是否满足了规格中的所有要求。
- 仿真验证工具:,,还有均可以对RTL设计验证等级代码。
- 这部分叫前仿真,下一个逻辑部分综合后再进行的仿真可以称为后仿真。
-
5、逻辑综合Design Compiler
- 。综合需要设定约束条件,即您希望综合电路在面积、时间顺序等目标参数上达到的标准。逻辑总和需要基于特定的综合数据库不同的数据库中,门电路的基本标准单元(standard cell)时序参数的面积不同。因此,选择的综合库不同,综合电路在时序和面积上也不同。
- 一般来说,(这也叫,以前叫前仿真),。
-
6、Static Timing Analysis,静态时序分析
- 属于验证范畴,主要在时间顺序上验证电路:检查电路是否有建立时间(setup time)和保持时间(hold time)的违例(violation)。
- 工具:
-
7、形式验证
- 也是验证的范畴,从功能上来说,(STA是时间序列)验证综合网表。常用的是等价检查方法,经功能验证后HDL设计作为参考,比较综合后的网表功能是否具有等价性——为了确保逻辑综合过程不会改变原来的HDL描述的电路功能。
-
-
-
1、DFT(Design For Test)可测性设计
- 芯片通常每一步都有自己的测试电路,DFT目的是在设计中考虑未来的测试。
- DFT常见的方法是将扫描链插入设计中,将非扫描单元(如寄存器)转换为扫描单元。
- 工具:
-
2、布局规划(Floor Plan)
- 布局规划是放置芯片的宏单元模块,通常确定各种功能电路的位置,如IP模块,RAM,I/O邓邓。布局规划可以直接影响芯片的最终面积。
-
3、CTS
- ,简单点说就是时钟的不限。由于时钟信号在数字芯片的全局指挥作用,它的分布应该是对称式的连接到各个寄存器单元,从而使时钟从同一个时钟源到达各个寄存器时,时钟延迟差异最小。这也是为什么时钟信号需要单独布线的原因。
-
4、布线(Place & Route)
- 这里的布线是普通信号布线,包括各标准单元(基本逻辑门电路)之间的布线。
- Xilinx有 Foundation Series 和 Alliance Series 两个系列。 Altera 的两个系列是 MaxPlusII 和 Quartus 。
-
二、静态时序分析和动态时序分析的比较
1、静态时序分析
是,根据给定工作条件(PVT)下的时序库.lib文件,,根据。
静态时序分析的优点:
- 不需要给输入激励;
- 几乎能找到(critical path);
- ,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计。因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中
静态时序分析的缺点:
- ;
- ;
- ;
静态时序分析的工具:
- Synopsys的prime time,
- Cadence的Encounter Timing System等
2、动态时序分析
通常是,,最后。 这里的仿真可以是,包括。()
如下图所示的spice中给激励的语句和波形:
动态时序分析的优点
- 晶体管级的仿真比较精确,直接基于工厂提供的spice 工艺库计算得到;
- ;
- ;
- 不需要很贵的时序分析工具。
动态时序分析的缺点:
- ,这使得在分析的过程中;随着规模增大,所需要的向量数量以指数增长,且这种方法难以保证足够的覆盖率。
- 。
动态时序的工具 :
从上面的分析可以看出,的主要缺点是,需要很贵的工具。这一点国内的公司也容易解决,要么融资很多不差钱,要么用盗版。
而有:意味着里面可能有fail的path,芯片流片出来无法工作;意味着你的schedule可能受到影响,无法按时交货。所以,通过给激励就能完成时序的检查,同时仿真的时间还能接受。 作者:IC君 链接:https://www.jianshu.com/p/c97a2dae9d97 来源:简书 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
三、ASIC和FPGA的区别是什么?具体说说FPGA的组成及开发流程?
(一)ASIC和FPGA的区别区别
1、概念区别
也是一种IC。顾名思义,只要有合适的工具和适当的专业基础,工程师就可以对FPGA进行。
2、开发流程区别
是利用和等EDA工具,的功能,而
基本都是的,还需要进行。当芯片存在任何问题时,必须再次重新投片,直到达到你想要的功能和性能。ASIC设计流程非常昂贵,至少需要几个月的时间才能完成。
这就是为什么设计师在大规模量产之前需要完全确保设计正确无误。工程师可以利用这一优势,进行ASIC的,以便在将设计发送到代工厂之前,可以在实际世界中对其进行全面的测试。
,具有。可以使用这些成你。如果有错误,可以在,而。然而,在。
3、成本区别
,因为在设计中浪费的材料非常少。对于FPGA,总是。这意味着。
尽管ASIC的重复成本非常低,但其。由于它是非重复性的,因此
所以,在ASIC量产到一定量之后,使用ASIC可以比使用FPGA更便宜。与FPGA相比,ASIC在功耗,性能,尺寸和成本方面具有很大优势。
(二)FPGA组成结构及功能
1、FPGA的基本结构组成
目前。FPGA芯片主要由以下6部分组成:
- 支持多种电平标准、LVDS、DDR2/3
- LUT、DFF、MUX
- GC、DCM、PLL、MMCM等
- FIFO、ECC
对于一款芯片,我们肉眼看到的如图所示,看不出它有任何特点。
当我们对其内部放大时,看到如图所示结构,密密麻麻小方格,仍然完全看不出有什么特点:
当我们再对其内部进行放大时,看到如图所示结构,这时可以看到芯片内部的最基本组成单元:。
2、FPGA各个基本结构的功能
目前大多数FPGA的I/O单元被设计为可编程模式,即通过软件的灵活配置,可适应不同的电器标准与I/O物理特性;可以调整匹配阻抗特性,上下拉电阻;可以调整输出驱动电流的大小等。
ILOGIC/LOGIC资源可支持以下操作(这些资源之间的所有连接均由所编写代码控制):
- 边沿触发D型触发器
- 电平敏感性锁存器
- 异步/组合
- IDDR/ODDR模式
FPGA的的,是实现。
- FPGA内部可配置为带、,也可以配置成为。
FPGA一般依赖寄存器完成同步时序逻辑设计。一般来说,,但不同厂商的寄存器和查找表的内部结构有一定的差异,而且寄存器和查找表的组合模式也不同。
学习底层配置单元的LUT和Register比率的一个重要意义在于器件选型和规模估算。由于FPGA内部除了基本可编程逻辑单元外,还有嵌入式的RAM、PLL或者是DLL,专用的Hard IP Core等,这些模块也能等效出一定规模的系统门,所以简单科学的方法是用器件的Register或LUT的数量衡量。
是一种专用互联网络,是专为覆盖对FPGA中各种资源的所有时钟输入设计的。这些时钟网络的设计旨在降低歪斜、占空比失真和功耗。其设计的目的还在于支持甚高频信号。
全局时钟控制资源和网络通常由以下通路和组件构成:
- 全局时钟输入
- 全局时钟缓冲器
- 时钟树和时钟网络-GCLK
- 时钟区域
每区域有2个区域时钟缓冲器BUFR和4个区域时钟树。区域时钟网络是一组独立于全局时钟网络的时钟网络。与全局时钟不同,区域时钟信号(BUFR)的跨度限于三个时钟区域,而IO时钟信号只驱动一个区域。
第三种时钟资源是,可以达到非常高的速度,可用于局部的IO串行器/解串器。
布线资源连通FPGA内部所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。布线资源的划分:
1):以完成器件内部的;
2):用以和一些第二全局时钟信号的布线(这里不懂什么是“第二全局时钟信号”);
3):用来完成;
4):在逻辑单元内部还有着。
由于在设计过程中,往往由布局布线器自动根据输入的逻辑网表的拓扑结构和约束条件选择可用的布线资源连通所用的底层单元模块,所以。其实布线资源的优化与使用和实现结果有直接关系。
目前大多数FPGA都有内嵌的块RAM。嵌入式块RAM可以配置为单端口RAM、双端口RAM、伪双端口RAM、CAM、FIFO等存储结构。
CAM,即为内容地址存储器。写入CAM的数据会和其内部存储的每一个数据进行比较,并返回与端口数据相同的所有内部数据的地址。简单的说,RAM是一种写地址,读数据的存储单元;CAM与RAM恰恰相反。
除了块RAM,Xilinx和Lattice的FPGA还可以灵活地将LUT配置成RAM、ROM、FIFO等存储结构。
底层嵌入功能单元是指。如、、和CPU等。
与“底层嵌入单元”是有区别的,这里指的主要是那些通用性相对较弱,不是所有FPGA器件都包含硬核。
(三)以CycloneⅡ为例介绍FPGA器件
CYCLONEⅡ系列FPGA器件由美国Altera公司出品,属于中端产品。采用了90nm的工艺,增加了片内逻辑单元数。为了方便说明,在此仅选用EP2C5进行分析讲解。
1、FPGA的命名规则
先了解一下FPGA的命名规则,这样就可以从芯片名字的角度来看这是怎么样性能的一款芯片了。
例如EP2C20F484C6,含义:
EP——工艺,
2C——cyclone2,
20——LE数量约为20K,
F——封装形式,
484——管脚数,
C——温度范围(确定其是工业级,军品级,还是商业级),
6——速度(数字越小速度越快)。
2、内部结构及组成
逻辑单元(Logic Element,LE)在FPGA器件内部,用于完成用户逻辑的最小单元。一个逻辑阵列包含16个逻辑单元以及一些其他资源, 在一个逻辑阵列内部的16个逻辑单元有更为紧密的联系,可以实现特有的功能。
一个主要由以下部件组成:
- 一个四输入的查询表(LookUp Table,LUT)
- 一个可编程的寄存器
- 一条进位链
- 一条寄存器级连链。
查询表: 用于完成用户需要的逻辑功能,CYCLONEⅡ系列的查询表是的,可以完成任意4输入1输出的组合逻辑。
可编程寄存器:可以配置成D触发器,T触发器,JK触发器,SR触发器。每个寄存器包含4个输入信号,数据输入、时钟输入、时钟使能、复位输入。
一个逻辑单元包含3个输出,两个用于驱动行连接、列连接、直接连接,另外一个用于驱动本地互联。 这三个输出是相互独立的。输出信号可以来自于查询表也可以来自于寄存器。
本地互连通路是逻辑阵列的重要组成部分,芯片级设计思路上的考虑与节省我们就不讨论,从实际运用出发,直接看看这个互连通路是干什么用的。本地互连通路提供了一种逻辑阵列内部的连接方式, 逻辑阵列内部还包含一种对外的高速连接通路,称之为直接连接通路。
直接连接通路连接的是相邻的逻辑阵列,或者与逻辑阵列相邻的M4K存储器块、乘法器、锁相环等。
- 普通模式适合于一般的逻辑运算。算数模式适用于实现加法器、计数器、累加器、比较器等。
- 逻辑阵列的主体是16个逻辑单元,另外还有一些逻辑阵列内部的控制信号以及互连通路。前面所讲的互联通路和直接连接通路就是逻辑阵列中的部分。
- 逻辑阵列还包括一些控制信号:两个时钟信号,两个时钟使能信号,两个异步复位信号,一个同步复位信号,一个同步加载信号。
在FPGA内部存在各种连接通路,连接不同的模块,比如逻辑单元之间、逻辑单元与存储器之间。FPGA内部资源是按照,所以连接通路也分为行列的。
- 。
- R4连接就是连接4个逻辑阵列,或者3个逻辑阵列和1个存储块, 或者3个逻辑阵列和1个乘法器。简单地说就是连接4个模块吧。R24就是24个模块。
- ,含义不用说了吧,是连接4个模块和16个模块。
CYCLONEⅡ系列FPGA有关时钟资源部分主要包括两部分。
- ,负责把。
- 。
- 全局时钟树是一种时钟网络结构,可以为FPGA内部的所有资源提供时钟信号,这些资源包括内部的寄存器、内部的存储器、输入输出管脚寄存器等。
- CYCLONEⅡ系列FPGA中每条全局时钟树都对应一个时钟控制模块,时钟控制模块的作用是从多个时钟源种选择一个连接到全局时钟树,进而提供给片内的各种资源。这些时钟源包括锁相环的输出,专用时钟引脚的输入,两用时钟引脚的输入或者内部逻辑。
- 是为时钟输入专门设计的引脚,在有可能的情况下应该尽量将时钟信号连接到专用管脚上。
- EP2C5有8个专用时钟引脚(CLK),4个位于芯片左侧,4个位于芯片右侧。
- 两用时钟引脚(DPCLK)通常用于介入时钟或者异步控制信号,EP2C5有8个两用时钟引脚,芯片每一侧两个。CYCLONEⅡ系列FPGA允许对两用时钟引脚的输入延时进行设置,是我们更好地控制时序。
CYCLONEⅡ系列FPGA的内部存储器是以块的形式存在的,每一个存储器块的大小为。,作用相信大家都知道。还拥有本地互联通路,作用前面讲过了哦。
好的。直接来看端口吧,从端口看作用,了解怎样去控制。
clock——输入——时钟信号
clock_en——输入——时钟使能信号
aclr——输入——异步复位信号
renwe——输入——读写使能信号
byteena——输入——字节使能信号
addressstall——输入——地址锁存信号
address——输入——地址
datain——输入——数据输入
dataout——输出——数据输出
看了这些端口以及端口说明,相信作用就不言而喻了吧,换言之,当我们想使用内部存储模块的时候,控制好这些端口的数据流就能够使用好这部分的资源了,当然存储器的使用离不开时序的控制,如果没有得到自己想要的结果,极有可能是时序控制部分出了问题。
CYCLONEⅡ系列FPGA中的M4K存储器可以被配置成以下模式:
单口模式:存储器不能同时进行读写操作。
简单双口模式:支持同时对存储器进行读写操作,读端口和写端口可以位宽不同,如果对同一地址进行读写,则输出端数据为改地址更新前的数据。
完全双口模式:两个端口可以任意组合,同时为写端口,同时为读端口,或者一个为写端口一个为读端口。存储器位宽不能为32或36。潜在威胁,如果两端口同时向一个地址写入数据的时候,会导致该地址中的数据出现不可预知的状况。
移位寄存器模式:节约用逻辑单元中构建寄存器而消耗。利用时钟下降沿写入数据,时钟上升沿读出数据,配置好该模式后是自动完成的哦。
只读存储器模式:存储器的内容通过存储器初始化文件(.mif)指定。
FIFO模式:用于数据的缓冲、多路数据的对齐、变换时钟域等。
在数字信号处理运算中,主要包括滤波、快速傅里叶变换、离散余弦变换等。在写运算常常会涉及到大量的乘法运算,所以在FPGA中设计了嵌入的乘法器,专门用在这方面的信号处理。如果使用逻辑单元来搭建乘法器,会消耗不少逻辑单元并且会抑制运算速度的提高。
嵌入的乘法器包含有可选的输入/输出寄存器。寄存器的使用会提高电路性能但是会产生延时。乘法模块还包括两个控制信号,signa和signb来控制乘数A和乘数B是否有符号。另外一个乘法器还可以拆开成两个并行的乘法器,例如EP2C5有1个18bit*18bit的乘法器,可以作为两个9bit*9bit的乘法器使用,但是需要注意的是,符号控制信号就一对,所以要求两个乘法器在相同位置的数据输入必须同时为符号数或者无符号数。
在输入/输出引脚和FPGA内部逻辑单元之间存在输入/输出单元(IOE),每个输入输出单元包含1个输出缓冲和3个寄存器。3个寄存器分别用于锁存输入数据、输出数据、和输出数据使能信号。
(四)FPGA开发流程
1、设计输入
:用基本逻辑门电路或晶体管搭建电路;
采用硬件描述语言描述电路;
- HDL语言具有不同层次上的抽象,这些抽象层有开关级、逻辑门级、RTL级、行为级和系统级,如图3。其中开关级、逻辑门级又叫结构级,直接反映的是结构上的特性,大量的使用原语调用,很类似最开始原理图转成门级网表。RTL级又可称为功能级。
什么是IP核?任何实现一定功能的模块叫做IP(Intellectual Property)。
- IP按照来源的不同可以分为三类,第一种是来自前一个设计的内部创建模块,第二种是FPGA厂家,第三种就是来自IP厂商;
- 原理图的优点就是结构直观性,HDL的优点是严密性、支持甚宽的抽象描述层次、易于移植、方便仿真调试等等,缺点就是不具备对方的优点。当时出现HDL的时候,人们确实是想着原理图该退出历史舞台了,但是到现在它还依然存在着。存在即是有道理的,存在就得用它,但是又得使用HDL,于是存在一种混合编程的形式。
- 除了,
2、编译
原理图、HDL、IP核这些都将通过编译后生成门级的网表
3、映射
我们通过编译得到一张之后,接下来就得考虑,毕竟我们使用的硬件平台是由一个一个的LUT(假设这类FPGA)组成的。那么这个。
- 我们把讲基于SRAM技术的FPGA的二选一多路器拿出来举个例子,如图6,可以按照红色线将二选一多路器完全劈成两边,原来的一个表就可以规划到其他两个表或表内容中,因为,。
再强调的是,映射是和器件有关的,即使是同一个系列,不同型号的FPGA内部就够也是有区别的,好比从外观看都是一个单元楼内的单元房,但是每个单元房内装修、家具摆设等都是不一样的。
4.1、布局
讲到这一块,正好有这么一个例子来讲解这个概念。近来报道朝鲜希望在俄罗斯远东地区租用数十万公顷的土地用来培育农产品。咱先撇开今后的购买的成功与否,假设成功了,并且有了这个详细的希望培育的农作物的品种及数量,有各式各样的蔬菜、主粮、禽类畜养场、果树等等。我们前面做的那些流程得到的LUT门级网表就好比这样的清单。
得到这样的清单之后,我们再假设在这十万公顷的土地上,阳光、水资源、温差都有一定的分布。大家知道农作物的的成长和高量产或者与阳关有关,或者与水资源有关,或者与温差有关,并且禽类的畜养材料与农作物的副产有关。所以接下来要做的事情就是根据现有的自然条件和农产品的所需环境特点合理布局,哪些地适合做什么。
紧接着我们回到FPGA开发中来,我们通过前面的步骤得到的清单就是LUT门级网表。网表里提供的仅仅是从逻辑关系上一些LUT结构的连接。我们需要将这些LUT结构配置到FPGA具体的哪个位置。需要说明的是,FPGA里任何硬件结构都是按照横纵坐标进行标定的,图中选中的是一个SLICE,SLICE里面存放着表和其他结构,它的位置在X50Y112上。不同的资源的坐标不一样,但是坐标的零点是公用的。
具体点就比如,,当然,硬件乘法器的硬件布局一般也是在存储器附近,有利于缩短乘法的延时时间,什么样的电路需要配置高速等等。
十万公顷的地布局规划好了,农产品就会有很好的丰收,同样FPGA开发布局布好了,由FPGA搭建起来的电路就会更加稳定和扩展性。
4.2、布线
上小节中,我们把十万公顷的地给安排好了,哪些地该种什么。具体实施之前还有一些是必须做的,比如农作物的浇灌,没有一个很好的灌溉系统是一个问题;再比如丰收了得采摘吧,这个时候,能够让大卡车到达每一块农地的公路枢纽也是需要解决的问题。将每一块或者相关的田地连接的灌水系统和公路的建设,就好比我们这个布线的过程。
我们在FPGA内通过布局,知道那些LUT具体分布到哪个SLICE,但是一方面,二方面,这就是布线这个环节需要完成的内容。要达到布线最优话,当然这里面设计到布线算法和很多细节问题,比如涉及到布线资源、PLL资源分布。但是这些对我们理解布线这个概念没有很多益处,暂且不深入,。
5、约束
约束,在图1上看到,在综合和布局布线这两个流程环节里都出现了,我们暂且规定其为约束一和约束二,或者说,。
,这些默认的设置对大部分情况下还是适用的,但是通常布局布线约束中的I/O约束是我们每一个工程都必须给定的。同时开发工具开放其他约束接口,允许我们设置这些规则,具体的有哪些约束怎么去做在后面介绍工具使用的时候进行讨论,这里先明白这些约束的基本概念。
相信大家已经下意识的将综合约束和综合过程挂在一起了,没错,,包括。我们已经知道
我们还是拿前面有过的例子来说明,。综合这么一个完成式Y=A1*A2+A3*A4的电路,没有加资源共享得到的电路如图8左边所示的电路,而加了后,得到的电路结构如图8右边的电路。
通过之前的分析,得到左边的电路结构,而右边的结构。
当然这只是一个例子,但是足以说明,。。
没错,你又想对了,,它就是指。根据所选择的FPGA平台现有硬件资源分布来决定我们布局。
其中。一个典型的系统是既有输入也有输出的,而不管是输入还是输出,都是从I/O上为端点的。输入从哪个端点进来,输出从哪个端点出去,输入是需要支持什么样的电气特性的端点,输出又是需要支持什么样的电气特定的端点。这些都是I/O约束做的事情。任何一个工程,都必须有这么一个约束。
还有一种典型的位置约束是在增量编译里涉及的物理界定。增量编译的出现就是因为在FPGA开发过程中综合和布局布线的长耗时性而提出的。思想就是把FPGA切成很多个小块的FPGA,然后约定具体哪块小FPGA放置什么模块,实现什么样的功能,从物理上进行界定。当修改工程后,开发平台就会检测哪些小FPGA内没有进行修改,哪些进行了修改,然后将修改过的部分重新进行综合布局布线步骤。这样一来,相比原来修改一点,全工程重新经过那些过程来讲,时间节省下来了。
估计没有多少悬念了,。为什么要做这个约束?
由于一方面信号在芯片内传递是需要消耗时间的,另一方面大量存在的寄存器有反应时间,而我们开发的最开始的时候这些时间都是理想化的。但是考虑到真实情况下,如果跑的速度比较高,达到了200M这么个速度,当然这个高速和具体的芯片有关,高性能的芯片本身跑的速度可以达到很高,200M相对来说就不是高速,对一些低性能芯片还可能达不到200M。这个时候,这些时间达到了同样一个系统时间数量级的时候,很可能影响电路的性能了。某一刻,该来的信号没有来,默认的话就会采集错误信号了。
为了让这些硬件本身带来的延时时间更理想化,我们就要对这些。对于寄存器本身的反应时间这个因素我们开发者是无能为力的,我们了。是走直线还是走其他,不仅仅决定于自身这条路径,还和整个系统布线有关,好比水桶原理,。
时序约束做的就是这些事情,但是时序约束并不是指具体去连接每一条线,这个工作就像前面那些流程一样都是由软件去实现的,,然后,的,我们。时序约束的添加,主要包括。
6、仿真
如果我们把FPGA开发形成电路当作一个产品的生产过程,那么在FPGA开发流程中含有的三种仿真()就好比产品线中的三道检测站。如图9,这三道工序,所以。
所谓testbench,即测试平台,详细的说就是。。刚开始的对于一些初学者,遇到的都是一些简单的东西,测试平台相应的也很简单,用一个文件就可以很清晰的呈现测试结构。对于一些复杂的项目,测试就没有那么简单了,由此还专门产生一个行业——测试行业。这个时候我们要用到一个概念就是结构化测试。
一个完整的测试平台如下图10所示,它是分结构组成的,其中
测试平台的设计是多种多样,可以使用灵活的,但是它也是基于硬件语言但是又服务于软件测试的语言,有时并行有时顺序,只有掌握这些关键点,才能很好服务测试。需要说明的一点是,不管大家是已经在用Verilog在写测试平台还是刚学习写测试平台,那么建议大家还是能用到中相对Verilog新的语法还是尝试的用,System Verilog是一种趋势,它本身就是向下兼容的第三代的Verilog。
这里RTL级仿真属于第一道检测,有些场合称作,为了突出和后面的静态仿真的区别,以免在后面介绍静态仿真的时候大家弄的很头大,我们还是这样称呼。它是对工程在寄存器转送级进行的描述时进行测试,
关于RTL级仿真,如果设计中涉及到原理图输入的话,在一些仿真工具中是不支持的,比如Modelsim,这个时候要进行功能上的验证,可以将原理图转换成HDL描述,或者直接把整个工程转换成LUT门级网表后进行后面要讲到的静态仿真完成。
。
静态仿真,有些地方给的外号叫,确切的说应该是。是在。有些开发平台下将静态仿真具体又分为编译仿真和映射仿真,比如ISE就是这样做的,但是个人觉得应该很少场合做这个编译仿真。
不管是Altera还是Xilinx的开发平台,都直接支持静态仿真,但是由于各自厂家的仿真器专业性不强,我们还是用第三方仿真工具比较多。这时候在第三方工具下的输入必须是经过综合工具综合出来的涵盖工程所有信息的LUT门级网表文件了。一般专业一点的第三方综合工具是不具备综合功能的,至少我们在使用Modelsim的时候,并没有要求我们添加工程用到的具体的哪一款型号FPGA的信息。这也是静态仿真的外号门级仿真指的是LUT门级网表仿真的依据。
,在前面介绍时序约束的时候讲到,布线延时问题影响到了电路的性能的时候可以做时序约束。那么这个延时问题的获得就可以通过时序仿真获得,当然还有一种获得延时出现超载情况,这个属于下面小节介绍的静态时序分析了。
一般情况下,电路过程后,会生成一个,Quartus平台下是以形式存在的。里面含有三种延时信息,分别为,存在的形式是最小值:典型值:最大值,一般缩写min:typ:max。这里也体现了,,因为本身同一器件中,不同的区域的逻辑门也很有可能和其他的区域内同种的逻辑门的延时不一样。我们这里举一个例子来说明一下这三种值的含义。
如上图,这是一个描述一段延时线的延时信息,给的延时信息从in端点到out端点,输入发生跳变后,分别以最小值、典型值和最大值将信号跳变传递到out端点。我们这里只是一段延时线,在延时信息文件里还有一类延时信息,就是一些具有逻辑功能的cell延时,这个时候信号跳变又分为由高变低和有低变高,因为这两种跳变在这些器件里的三种延时值是不一样的,得分别探讨,具体分别以某一种情况类推。
在做后仿真的时候,只需要在做完静态仿真后的基础上添加布线的延时信息后,再分析逻辑功能是否满足要求。后方针的平台 使用情况和前面一样,一般采用第三方仿真工具,典型的是,具体操作过程见软件相关操作章节。
7、静态时序分析
静态时序分析,简称STA(Static Timing Analysis),这个过程做的话一把是在是。在,该报告是分析工具利用从布线的路劲上提取出寄生参数后精确计算出来的。该报告中会提示出一些关键路径,,这个过程就是STA过程。
静态时序分析的特点就是。很多设计都可以在,就可以了,这是一种很有保障性的化简流程方式。
,
8、在线调试
在线调试也称作,它是将工程下载到FPGA芯片上后分析代码运行的情况。有人会以为,我们不是已经做了仿真了,甚至是时序仿真都通过了,还会存在问题么?在实际中,存在这么些情况我们需要用到在线调试:
- 仿真不全面而没有发现的FPGA设计错误。很多情况下,由于太复杂,无法做到100%的代码覆盖率;
- 在板级交互中,存在异步事件,很难做仿真,或者仿真起来时间很长,无法运行;
- 除了本身FPGA外,还可能存在板上互连可靠性问题、电源问题和IC之间的信号干扰问题,都可能导致系统运行出错;
- 其他潜在问题。
在线调试的方式主要有两种,,把内部信号传送到FPGA针脚上,然后用示波器或者逻辑分析仪观察信号;,在设计中插入逻辑分析仪,利用JTAG边缘数据扫描和开发工具完成数据交互。
9、配置及固化
在FPGA正常工作时,中,这个SRAM单元也被称为。由于SRAM是易失性存储器,因此在。在芯片配置完成之后,内部的寄存器以及I/O管脚必须进行,等到初始化完成以后,芯片才会按照用户设计的功能正常工作,即进入用户模式。
FPGA上电以后首先进入,在最后一个配置数据载入到FPGA以后,进入,在初始化完成后进入。在配置模式和初始化模式下,FPGA的用户I/O处于高阻态(或内部弱上拉状态),当进入用户模式下,用户I/O就按照用户设计的功能工作。
等3个过程。
- 这一块分成两部分,一部分是,另一块是,即将工程配置到相应存储单元中,上电后,通过存储在存储器中的内容配置FPGA。
- 第一部分在线调试配置过程是通过JTAG模式完成的,如图13所示,在JTAG模式中,PC和FPGA通信的时钟为JTAG接口的TCLK,数据直接从TDI进入FPGA,完成相应功能的配置。
- JTAG接口是一个业界标准接口,主要用于芯片测试等功能。FPGA基本上都可以支持JTAG命令来配置FPGA的方式,而且JTAG配置方式比其他任何方式优先级都高。JTAG接口有4个必需的信号TDI, TDO, TMS和TCK以及1个可选信号TRST构成,其中:
- TDI,用于测试数据的输入;
- TDO,用于测试数据的输出;
- TMS,模式控制管脚,决定JTAG电路内部的TAP状态机的跳变;
- TCK,测试时钟,其他信号线都必须与之同步;
- TRST,可选,如果JTAG电路不用,可以讲其连到GND。
- 第二部分固化程序到存储器中的过程可以分为两种方式,主模式和从模式。
- 主模式下FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程;从模式下则由外部计算机或控制器控制配置过程。主、从模式从传输数据宽度上,又分别可以分为串行和并行。
主串模式是最简单的固化模式,如图14所示,这个模式过程不需要为外部存储器提供一系列地址。它利用简单的脉冲信号来表明数据读取的开始,接着由FPGA提供给存储器时钟,存储器在时钟驱动下,将数据输入到FPGA Cdata_in端口。
主并模式其实和主串模式的一样机理,只不过是在主串的基础上,同周期数内传送的数据变成8位,或者更高,如图15。这样一来,主并行相比主串行的数度要优先了。现代有些地方已采用这种方式来配置FPGA的了。
从上面看到,主模式下的连接还是很简单的。但是有时候,系统可能用其他微处理器来对FPGA进行配置。这里的微处理器可以指FPGA内嵌的处理器,比如说Nios。微处理器控制着何时配置FPGA,从哪读取配置文件。如图16,这种方式的优点是处理器可以灵活随时变更FPGA配置,同时配置的速度也快。微处理器先从外部存储设备里读取一个字节的数,然后写到FPGA里。
理解了从并模式,从串模式就不用很多解释了,它的特点就是节约FPGA管脚I/O。
多片模式有两种,一种是采用菊花链的思想,多片FPGA共享一个存储器,另外一个是可以使用其他存储器配置不同的FPGA。如果所示是一个共享型的结构,显示启动了。这里分主FPGA和从FPGA,主FPGA和存储器是使用串行主模式来配置,而后面那个的配置是通过第一配置好的FPGA上微处理器进行协调的。
现今FPGA应该可以支持上面五种配置模式,是通过3个模式引脚来实现的,具体的映射如下表,在今后模式还是有可能增加的。
在PS模式下,如果你用电缆线配置板上的FPGA芯片,而这个FPGA芯片已经有配置芯片在板上,那你就必须隔离缆线与配置芯片的信号。一般平时调试时不会把配置芯片焊上的,这时候用缆线下载程序。只有在调试完成以后,才把程序烧在配置芯片中, 然后将芯片焊上.或者配置芯片就是可以方便取下焊上的那种。这样出了问题还可以方便地调试.。
对FPGA芯片的配置中,可以采用AS模式的方法,如果采用EPCS的芯片,通过一条下载线进行烧写的话,那么开始的”nCONFIG,nSTATUS”应该上拉,要是考虑多种配置模式,可以采用跳线设计。让配置方式在跳线中切换,上拉电阻的阻值可以采用10K一般在做FPGA实验板的时候,用AS+JTAG方式,这样可以用JTAG方式调试,而最后程序已经调试无误了后,再用AS模式把程序烧到配置芯片里去。
10、开发工具总结
在围绕图1把FPGA开发流程讲完后,这里对每个环节中设计的相关软件进行总结,如下表所示。毕竟充分利用各种工具的特点,进行多种EDA工具的协同设计,对FPGA的开发是非常重要的。充分利用了这些EDA工具的优点,能够提高开发效率和系统性能。
表中列出的每种EDA工具都有自己的特点。一般由FPGA厂商提供的集成开发环境,如Altera Quartus II和Xilinx ISE,在逻辑综合和设计仿真环节都不是非常优秀,因此一般都会提供第三方EDA工具的接口,让用户更方便地利用其他EDA工具。为了提高设计效率,优化设计结果,很多厂家提供了各种专业软件,用以配合FPGA芯片厂家提供的工具进行更高效的设计。
比较常见的使用方式是:FPGA厂商提供的集成开发环境、专业逻辑仿真软件、专业逻辑综合软件一起使用,进行多种EDA工具的协同设计。比如Quartus II+ModelSim+FPGA Compiler II,ISE+ModelSim+Synplify Pro等等。
四、如何理解Setup time 和 Hold time?
建立时间:数据在时钟上升沿到来之,必须保持稳定的时间
保持时间:数据在时钟上升沿到来之,必须保持稳定的时间
不满足建立时间和保持时间的电路,触发器在数据变化时无法采到真实的高低电平信号,并会将这种不确定性往下传播。
建立时间约束:Tsetup < Tclk - Tclkq - Tlogic + Tskew
保持时间约束:Thold < Tclkq + Tlogic - Tskew
五、名词解释之协议篇:SPI、SD、USB、LVDS、SERDES、DDR、MIPI、PCIe、MAC、SATA
SPI(Serial peripheral interface):串行外设接口
SD(Secure Digital):SD卡/TF卡
USB(Universal Serial Bus):通用串行总线
LVDS(Low - Voltage Differential Signal):低电压差分总线
SerDes(Serializer / Deserializer):串行器/解串器
DDR(Double Data Rate):双倍数据速率
PCIe(Peripheral Component Interconnect Express):高速串行扩展总线
MAC(Media Access Control):以太网数据链路层
SATA(Serial Advanced Technology Attachment):串行ATA接口
六、名词解释之存储篇:RAM、ROM、SRAM、DRAM、SSRAM、SDRAM、PROM、EPROM、E2PROM、Flash
模电/数电/单片机/计算机组成原理/电力电子常见笔试/面试题(合集)未完更新ing_Cheeky_man的博客-CSDN博客_电子电路原理
七、名词解释之设计流程篇:
DFT(Design For Test):可测性设计
APR(Auto Place & Route):自动布局布线
CTS(Clock Tree Synthesis):时钟树综合
ECO(Engineering Change Order):工程修改
DRC(Design Rule Check):设计规则检查
LVS(Layout Vs Schematic):版图与网表对比
DFM(Design For Manufacturing):可制造性设计
JDV(Job Deck VIew):在线掩模数数据检视
八、何为同步复位、异步复位?何为异步复位同步释放?
//同步复位
always@(posedge clk) begin
if(!rst_n)
q <= 'b0;
else
q <= d;
end
//异步复位
always@(posedge clk, negedge rst_n) begin
if(!rst_n)
q <= 'b0;
else
q <= d;
end
复位信号有效时,输出立即为0,复位