FPGA设计流程

FPGA设计人体分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个步骤,设计流程如图2所示。下面分别介绍各个设计步骤。

1 设计输入

设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与Verilog HDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL。HDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能特定综合器(如Synopsys公司的FPGA
Compiler II或FPGA Express)作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点,另外,在Altera公司Quartus软件环境下,可以使用Momory Editor对内部memory进行直接编辑置入数据。常用方式是以HDL语言为主,原理图为辅,进行混合设计以发挥二者各自特色。

通常,FPGA厂商软件与第三方软件设有接口,可以把第三方设计文件导入进行处理。如Quartus与Foundation都可以把EDIF网表作为输入网表而直接进行布局布线,布局布线后,可再将生成的相应文件交给第三方进行后续处理。

2 设计综合

综合,就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。也就是是说,被综合的文件是HDL文件(或相应文件等),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。

FPGA Compiler II是一个完善的FPGA逻辑分析、综合和优化工具,它从HDL形式未优化的网表中产生优化的网表文件,包括分析、综合和优化三个步骤。其中,分析是采用Synopsys标准的HDL语法规则对HDL源文件进行分析并纠正语法错误;综合是以选定的FPGA结构和器件为目标,对HDL和FPGA网表文件进行逻辑综合;而优化则是根据用户的设计约束对速度和面积进行逻辑优化,产生一个优化的FPGA网表文件,以供FPGA布局和布线工具使用,即将电路优化于特定厂家器件库,独立于硅持性,但可以被约束条件所驱动。

利用FPGA Compiler II进行设计综合时,应在当前Project下导入设计源文件,自动进行语法分析,在语法无误并确定综合方式、目标器件、综合强度、多层保持选择、优化目标等设置后,即可进行综合与优化。在此可以将两步独立进行,在两步之间进行约束指定,如时钟的确定、通路与端口的延时、模块的算子共享、寄存器的扇出等。如果设计模型较大,可以采用层次化方式进行综合,先综合下级模块,后综合上级模块。在进行上级模块综合埋设置下级模块为Don‘t
Touch,使设计与综合过程合理化。综合后形成的网表可以以EDIF格式输出,也可以以VHDL或Verilog HDL格式输出,将其导入FPGA设计厂商提供的可支持第三方设计输入的专用软件中,就可进行后续的FPGA芯片的实现。综合完成后可以输出报告文件,列出综合状态与综合结果,如资源使用情况、综合后层次信息等。

3 仿真验证

从广义上讲,设计验证包括功能与时序仿真和电路验证。仿真是指使用设计软件包对已实现的设计进行完整测试,模拟实际物理环境下的工作情况。前仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性;而在布局布线后,提取有关的器件延迟、连线延时等时序参数,并在此基础上进行的仿真称为后仿真,它是接近真实器件运行的仿真。

4 设计实现

实现可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。通常可分为如下五个步骤。

(1)转换:将多个设计文件进行转换并合并到一个设计库文件中。

(2)映射:将网表中逻辑门映射成物理元素,即把逻辑设计分割到构成可编程逻辑阵列内的可配置逻辑块与输入输出块及其它资源中的过程。 (3)布局与布线:布局是指从映射取出定义的逻辑和输入输出块,并把它们分配到FPGA内部的物理位置,通常基于某种先进的算法,如最小分割、模拟退火和一般的受力方向张弛等来完成;布线是指利用自动布线软件使用布线资源选择路径试着完成所有的逻辑连接。因最新的设计实现工具是时序驱动的,即在器件的布局布线期间对整个信号通道执行时序分析,因此可以使用约束条件操作布线软件,完成设计规定的性能要求。在布局布线过程中,可同时提取时序信息形成报靠。

(4)时序提取:产生一反标文件,供给后续的时序仿真使用。

(5)配置:产生FPGA配置时的需要的位流文件。

在实现过程中可以进行选项设置。因其支持增量设计,可以使其重复多次布线,且每次布线利用上一次布线信息以使布线更优或达到设计目标。在实现过程中应设置默认配置的下载形式,以使后续位流下载正常。

5 时序分析

在设计实现过程中,在映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。从某种程序来讲,静态时序分析可以说是整个FPGA设计中最重要的步骤,它允许设计者详尽地分析所有关键路径并得出一个有次序的报告,而且报告中含有其它调试信息,比如每个网络节点的扇出或容性负载等。静态时序分析器可以用来检查设计的逻辑和时序,以便计算各通中性能,识别可靠的踪迹,检测建立和保持时间的配合,时序分析器不要求用户产生输入激励或测试矢量。虽然Xilinx与Altera在FPGA开发套件上拥有时序分析工具,但在拥有第三方专门时序分析工具的情况下,仅利用FPGA厂家设计工具进行布局布线,而使用第三方的专门时序分析工具进行时序分析,一般FPGA厂商在其设计环境下皆有与第三方时序分析工具的接口。Synopsys公司的PrimeTime是一个很好的时序分析工具,利用它可以达到更好的效果。将综合后的网表文件保存为db格式,可在PrimeTime环境下打开。利用此软件查看关键路径或设计者感兴趣的通路的时序,并对其进行分析,再次对原来的设计进行时序结束,可以提高工作主频或减少关键路径的跹
时。与综合过程相似,静态时序分析也是一个重复的过程,它与布局布线步骤紧密相连,这个操作通常要进行多次直到时序约束得到很好的满足。

在综合与时序仿真过程中交互使用PrimeTime进行时序分析,满足设计要求后即可进行FPGA芯片投片前的最终物理验证。

6 下载验证

下载是在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,也叫芯片配置。FPGA设计有两种配置形式:直接由计算机经过专用下载电缆进行配置;由外围配置芯片进行上电时自动配置。因FPGA具有掉电信息丢失的性质,因此可在验证初期使用电缆直接下载位流,如有必要再将烧录配置芯片中(如Xilinx的XC18V系列,Altera的EPC2系列)。使用电缆下载时有多种直载方式,如对Xilinx公司的FPGA下载可以使用JTAG
Programmer、Hardware Programmer、PROM Programmer三种方式,而对Altera公司的FPGA可以选择JTAG方式或Passive Serial方式。因FPGA大多支持IEEE的JTAG标准,所以使用芯片上的JTAG口是常用下载方式。

将位流文件下载到FPGA器件内部后进行实际器件的物理测试即为电路验证,当得到正确的验证结果后就证明了设计的正确性。电路验证对FPGA投片生产具有较大意义。

基于多种EDA工具的FPGA设计

仿真工具Modelsim与综合工具FPGA Compiler II及布线工具Foundation Series或Quartus相配合实现FPGA设计流程图如图3所示。

在设计输入阶段,因Modelsim仅支持VHDL或Verilog HDL,所以在选用多种设计输入工具时,可以使用文本编辑器完成HDL语言的输入,也可以利用相应的工具以图形方式完成输入,但必须能够导出对应的VHDL或Verilog HDL格式。近年来出现的图形化HDL设计工具,可以接收逻辑结构图、状态转换图、数据流图、控制流程图及真值表等输入方式,并通过配置的翻译器将这些图形格式转化为HDL文件,如Mentor
Graphics公司的Renoir,Xilinx公司的Foundation Series都带有将状态转换图翻译成HDL文本的设计工具。在这方面,Summit公司(现在已经合并为Innoveda)的图形化界面友好程度较高,且可以导出相应的HDL格式。

从图3中可以看到有三处可以由Modelsim进行仿真:第一处是寄存器传输级(RTL)仿真,此级仿真是对设计的语法和基本功能进行验证(不含时序信息);第二处是针对特定的FPGA厂有技术的仿真,此级伪真是在综合后、实现前而进行的功能级仿真,功能级仿真一般验证综合后是否可以得到设计者所需要的正确功能;第三处仿真是门级仿真,此级仿真是针对门级时序进行的仿真,门级仿真体现出由于布局布线而产生的实际延时。

在RTL仿真阶段,应该建立一个测试台。此测试台可以在整个FPGA流程中进行仿真验证(RTL级、功能级、时序门级)。测试台不但提供测试激励与接收响应信息,而且可以测试HDL仿真流程中的关键功能(如运算部件输出值的正确性等)。测试台的产生可以直接使用文本编程得到,也可以使用图形化工具输入,再由软件翻译为HDL格式,例如使用HDL
Bencher软件利用其良好的波形输入界面输入测试激励,再由其自动转化为HDL格式而得到。

在功能级仿真阶段,一般验证综合后是否仍与RTL级仿真结果相同。

在门级仿真阶段,由于已经针对具体的FPGA厂家技术进行了功能级仿真,因此可以通过布局布线得到标准延格式下的时序信息进行门级仿真。

Mentor Graphics公司的Modelsim是业界较好的仿真工具,其仿真功能强大,且图形化界面友好,而且具有结构、信号、波形、进程、数据流等窗口。将FPGA设计(以HDL方式)输入后进行编译即可进行前仿真,其最新版本Modelsim SE/Plus 5.5支持VHDL与Verilog
HDL混合仿真。在仿真时可以编写HDL激励文件或执行组模式方式。组模式方式类似批处理方式,可以连续执行事先在文件中写好的多个执行命令,这对重新仿真或重复执行多个命令特别有效。在仿真过程中可以执行性能分析与代码覆盖分析。性能分析在程序代码执行过程中可以分析出各部分代码执行时占用整个执行时间的百分率。在此信息下,设计者可以找到设计的瓶颈并通过优化代码减少仿真时间。代码覆盖分析可以使设计者确切知道在测试台上正在进行的代码位置,以方便设计者调试。

由Modelsim进行仿真,需要导出VHDL或Verilog HDL网表。此网表是由针对特定FPGA器件的基本单元组成的。这些基本单元在FPGA厂家提供的厂家库中含有其定义和特性,且厂家一般提供其功能的VHDL或Verilog VDL库。因此,在Modelsim下进行仿真,需要设置厂家库信息。如使用Altera公司的Apex20ke系列,需要将Apex20ke_atoms.v(或.vhd)与Apex20ke_component.v文件设置或编译到工程项目的对应库中。除网表外,还需要布局布线输出的标准延时文件(sdf),将sdf文件加入仿真可以在窗口化界面设置加入,或通过激励指定。如使用Verilog
HDL时加入反标语句$sdf_annotate(“”,Top)通过参数路径指定即可。

在综合阶段,应利用设计指定的约束文件将RTL级设计功能实现并优化到具有相等功能且具有单元延时(但不含时序信息)的基本器件中,如触发器、逻辑门等,得到的结果是功能独立于FPGA的网表。它不含时序信息,可作为后续的布局布线使用。使用FPGA Compiler II进行综合后可以导出EDIF网络。

在实际阶段,主要是利用综合后生成的EDIF网表并基于FPGA内的基本器件进行布局布线。可以利用布线工具Foundation Series选用具体器件(如Virtex系列器件)进行布局布线加以实现,也可以使用布线工具Quartus选用Apex20ke系列器件进行布局布线加以实现,同时输出相应的VHDL或Verilog
HDL格式,以便在Modelsim下进行仿真。

在数字系统设计的今天,利用多种EDA工具进行处理,同时使用FPGA快速设计专用系统或作为检验手段已经成为数字系统设计中不可或缺的一种方式,了解并熟悉其设计流血应成为现今电子工程师的一种必备知识。

时间: 2024-10-16 20:21:49

FPGA设计流程的相关文章

VerilogHDL概述与数字IC设计流程学习笔记

一.HDL的概念和特征 HDL,Hard Discrimination Language的缩写,翻译过来就是硬件描述语言.那么什么是硬件描述语言呢?为什么不叫硬件设计语言呢?硬件描述语言,顾名思义就是描述硬件的语言,它用文本的形式来描述电子系统硬件结构和行为,是一种用形式化方法来描述数字电路和系统的语言.正是因为如此,硬件与软件不一样,他不像软件,你某天突发奇想,想实现某个的界面,搞搞代码就OK了.硬件它是由实实在在的物理器件搭载而成,用抽象的语言怎么可能弄出一个电路来呢? 一门语言,总有那么一

02-FPGA设计流程介绍——小梅哥FPGA设计思想与验证方法视频教程配套文档

芯航线——普利斯队长精心奉献 课程目标: 1.了解并学会FPGA开发设计的整体流程 2.设计一个二选一选择器并进行功能仿真.时序仿真以及板级验证 实验平台:芯航线FPGA开发板.杜邦线 实验内容: 良好的文件夹设置以及工程管理是一个好的FPGA设计的基础,在学习之初就建立俩良好的习惯,会少走一些弯路.因此我们首先在新建的工程文件夹下面,分别建立如图2-1所示的子文件夹. 图2-1 FPGA工程子文件夹 上图中,prj为工程文件存放目录:rtl为verilog可综合代码存放目录:testbench

FPGA开发流程1(详述每一环节的物理含义和实现目标)

要知道,要把一件事情做好,不管是做哪们技术还是办什么手续,明白这个事情的流程非常关键,它决定了这件事情的顺利进行与否.同样,我们学习FPGA开发数字系统这个技术,先撇开使用这个技术的基础编程语言的具体语法.使用工具和使用技巧不谈,咱先来弄清楚FPGA的开发流程是什么. FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照图1进行,有些步骤可能由于其在当前项目中的条件的宽度的允许,可以免去,比如静态仿真过程,这样来达到项目时间上的优势.但是,大部分的流程步

【转】 FPGA设计的四种常用思想与技巧

本文讨论的四种常用FPGA/CPLD设计思想与技巧:乒乓操作.串并转换.流水线操作.数据接口同步化,都是FPGA/CPLD逻辑设计的内在规律的体现,合理地采用这些设计思想能在FPGA/CPLD设计工作种取得事半功倍的效果. FPGA/CPLD的设计思想与技巧是一个非常大的话题,由于篇幅所限,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作.串并转换.流水线操作和数据接口的同步方法.希望本文能引起工程师们的注意,如果能有意识地利用这些原则指导日后的设计工作,将取得事半功倍的效果! 乒乓操作“乒乓

牛人的FPGA设计经验分享

在IC工业中有许多不同的领域,IC设计者的特征也会有些不同.在A领域的一个好的IC设计者也许会花很长时间去熟悉B领域的知识.在我们职业生涯的开始,我们应该问我们自己一些问题,我们想要成为怎样的IC设计者?消费?PC外围?通信?微处理器或DSP?等等? IC设计的基本规则和流程是一样的,无论啥样的都会加到其中.HDL,FPGA和软件等是帮助我们理解芯片的最好工具.IC的灵魂是知识.因此我们遇到的第一个挑战将是获得设计的相关信息,然后理解信息并应用它. 但是有些信息不是免费的,我们需要加入一些协会或

FPGA设计——VGA (Altera)

1. VGA概述 VGA(Video Graphics Array)是IBM在1987年推出的一种视频传输,具有分辨率高.显示速率快.颜色丰富等优点,在彩色显示器领域得到了广泛的应用.不支持热插拔,不支持音频传输. 2. VGA时序 下面以640*[email protected]为例说明VGA时序和FPGA设计,其他分辨率和帧率的可参考VESA中查找. 计算像素时钟pclk = 800*525*60 = 25200000,注意这里的HSYNC和VSYNC都是低电平有效,且HSYNC在数据行无效

数据库设计流程

数据库设计流程  目前数据库设计一般分为6个阶段, 即需求分析阶段,概念结构设计阶段,逻辑结构设计阶段,物理结构设计阶段,实施阶段,运行与维护阶段. (1) 需求分析阶段 需求分析阶段的主要任务是指通过充分调查现实世界要处理的对象, 详细了解计算机系统的工作情况, 明确用户的各种需求, 然后确定系统的各项功能.数据库系统不仅要按照当前的应用要求来设计, 而且必须充分考虑今后可能的扩充和改变. (2) 概念结构设计阶段 概念结构设计阶段的主要任务是将需求分析阶段所得到的用户需求抽象为概念模型, 而

产品新人必知的设计流程规范详解

大部分产品经理都存在一个非常严重的问题,从产品构思阶段开始,就上手做产品页面原型,忽略了中间太多的关于产品架构,功能模块设计,产品规则定义这些非常重要的工作.结果就是出来的页面原型逻辑不自洽,或者忽视了太多产品关键细节.使得研发拿到原型以后做不下去,不得不后期各种修补和返工,制造了产品经理和研发之间的矛盾. 当然我们的产品经理团队也普遍存在这个问题,为此,打算在公司内部给我们的产品经理培训一下.以下是完整的产品设计流程规范: 1. 产品构思 . 目标:搜集需求,整理产品思路,逐渐形成和完善产品构

FPGA设计经验谈

从大学时代第一次接触FPGA至今已有10多年的时间.至今记得当初第一次在EDA实验平台上完成数字秒表,抢答器,密码锁等实验时,那个兴奋劲.当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的.后来读研究生,工作陆陆续续也用过Quartus II,Foundation,ISE,Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理