2.6 FPGA常用开发工具
FPGA开发工具包括软件工具和硬件工具。其中硬件工具主要是FPGA厂商或者第三方厂商的FPGA开发板或者下载线。此外,还包括示波器、逻辑分析仪等板级的调试仪器。在软件方面,针对FPGA设计的各个阶段,FPGA厂商和EDA软件公司提供了很多优秀的EDA工具。如何充分的利用各种工具的优点,如何进行多种EDA工具的协同设计,对FPGA的开发非常重要,能够提高系统性能和开发效率。FPGA开发可能使用的软件工具如表2-5所示。
在FPGA设计的各个环节都有不同公司提供不同的EDA工具。每种EDA工具都有自己的特点,一般由FPGA厂商提供的集成开发环境,如Altera的Quartus II和Xilinx的ISE,厂商提供的EDA工具在逻辑综合和设计仿真方面都不是非常优秀,因此一般都会主动提供第三方的EDA工具接口,让用户更方便地利用EDA工具。为了提高设计效率,优化设计结果,很多厂家提供了各种专业软件,以便配合CPLD/FPGA芯片厂家提供的工具进行更高效的设计。比较常见的方式有FPGA厂商提供的集成开发环境与专业逻辑仿真软件与专业逻辑综合软件一起使用,进行多种EDA工具的协同设计,例如Quartus II+ModelSim+FPGA CompilerII、ISE+ModelSim+Synplify Pro。
Xilinx、Altera、Lattice、Actel这几个主要的FPGA厂商都推出各自的FPGA器件集成开发环境软件,并且都在自己的开发软件中为一些第三方软件预留接口。其他EDA厂商为这些FPGA厂商提供各自产品的定制版本,例如Mentor Graphics公司的逻辑仿真软件ModelSim、Aldec公司的逻辑仿真软件Active HDL、Synopsys公司的逻辑综合工具Synplify Pro、Synopsys公司的综合工具FPGA Compiler II等。
下面从代码输入工具、综合工具、仿真工具和实现与优化工具等几个方面来介绍FPGA的常用开发工具。
2.6.1 代码输入工具
设计输入是工程设计的第一步,常用的设计输入方法有HDL语言输入、原理图输入、IP Core输入和其他输入方法。
(1)HDL语言输入。HDL语言输入的方法应用最广泛,目前业界最流行的HDL语言是Verilog和VHDL语言。一般来说,任何文本编辑器都可 以 完 成 HDL 语 言 的 输 入 。 Quartus II 内 嵌 的 文 本 编 辑 器 是 TextEditor,它能根据语法来彩色显示关键字。另外一款比较常用的文本编辑器还有Ultra Edit,通过谢盖Ultra Edit的WORDFILE.TXT也可以支持彩色语法显示。
(2)原理图设计输入。原理图设计输入方式在早起应用广泛,目前已经逐渐被HDL语言输入方式所取代,仅仅在有些设计的顶层描述时才会用。Quartus II内嵌的原理图编辑器是Schematic Editor。
(3)IP Core输入。IP Core输入方式是FPGA设计中的一个重要设计输入方式。所谓IP Core是指MegaFunction/Mega Wizard,它能生成的IP核功能之多,从简单的基本设计模块到复杂的处理器等一应俱全,适当地使用IP核,能大幅度地减轻工程师的设计工作量,提高设计质量。
(4)其他辅助性设计。其他辅助型设计输入方法还有状态机输入、真值表输入和波形图输入等。比较流行的状态机输入工具是StateCAD,设计者只须画出状态转移图,状态机编辑器就能自动生成相应的VHDL、ABEL或Verilog语言模型。并且状态机编辑器能生成状态转移的测试激励文件,验证寄存器传输级(RTL)模型,优化并分析状态机设计结果。合理使用状态机输入方式,能在一定程度上缓解设计者的工作量。使用真值表输入方法时,用户在工具中填充设计对应的真值表,即可自动生成HDL代码。波形输入方法如下:用户画出输入的激励波形和输出的相应波形,波形输入工具自动生成输入/输出关系的功能代码。这些输入方式目前已经被逐步淘汰。
2.6.2 综合工具
主 流 的 综 合 工 具 主 要 有 Synopsys 公 司 的 FPGA CompilerII/Express 和 Synplify/Synplify Pro 、 Exemplar Logic 公 司 的LeonardoSpecteum。此外,Quartus II还内嵌了自己的综合工具。
1)Synplify/Synplify Pro
Synplify/Synplify Pro作为新兴的综合工具在综合策略和优化手段上有较大幅度的提高,特别是其先进的Timing Driven(时序驱动)和BEST(Behavior Extraction Synthesis Technology,行为级综合提取技术)算法引擎,使其综合结果往往面积较小、速度较快,在业界口碑很好。如果结合Synplcity公司的Amplify物理约束功能,对很多设计就能大幅度减少资源,优化面积达到30%以上。
2)FPGA Express
Synopsys公司的FPGA Express是最早的LeonardoSpectrum也是一款非常流行的综合工具。它的综合结果比较忠实于原设计,其升级版本FPGA Compiler II是最好的ASIC/FPGA设计工具之一。
3)LeonardoSpectrum
Mentor的子公司Exemplar Logic出品的LeonardoSpectrum也是一款非常流行的综合工具。它的综合优化能力也非常高,随着ExemplarLogic与Altera的合作日趋紧密,LeonardoSpectrum对Altera器件的支持也越来越好。
4)Quartus II内嵌综合工具
虽然Altera设计综合软件的经验还不够丰富,但是只有Altera自己对其芯片的内部结构最了解,因此其内嵌综合工具的一些优化策略甚至由于其他专业综合工具。
2.6.3 仿真工具
业界最流行的仿真工具之一是ModelSim。此外,Aldec公司的ActiveHDL也有相当广泛的用户群。其他如Cadence Verilog-XL、NCVerilog仿真工具,Synopsys VCS/VSS等仿真工具也具备一定的影响力。还有一些小工具和仿真相关,例如激励测试生成器等。
1)ModelSim
ModelSim主要特点是仿真速度快,仿真精度高。ModelSim支持VHDL、Verilog HDL及VHDL和Verilog HDL混合变成的仿真。ModelSim的PC版仿真速度也很快,甚至和工作站不相上下。
2)ActiveHDL
ActiveHDL也是一款比较有特色的仿真工具。其状态机分析视图在调试状态及时非常方便。此外,值得一提的是,Aldec公司还开发了许多比较著名的软硬件联合仿真工具。
3)测试激励生成器
测试激励生成器是一种根据电路设计输入,自动生成测试激励的工具,它可以在一定程度上分担工程师书写测试激励文件的繁重工作。比较常用的激励生成器是HDLBencher。
2.6.4 实现与优化工具
实现与优化工具包含面比较广。如果能较好地掌握这些工具,将大幅度提高设计者的水平,使设计工作更加游刃有余。Quartus II集成 的 实 现 工 具 主 要 有 Assignment Editor ( 约 束 编 辑 器 ) 、LogicLock(逻辑锁定工具)、FowerFit Fitter(布局布线器)、Timing Analyzer( 时 序 分 析 器) 、 Floorplan Editor ( 布 局 规 划器)、Chip Editor(底层编辑器)、Design Space Explorer(设计空间管理器)和Design Assistant(检查设计可靠性)等。
1)Assignment Editor
Assignment Editor是图形化界面的用户约束输入工具。约束文件包含时钟属性、延时特性、管教位置、寄存器分组、布局布线要求和特殊属性等信息,这些信息知道实现过程,室友用户设计的决定电路实现的目标与标准。设计约束文件有较高的技巧性,如果约束文件设计得当,就会帮助Quartus II达到用户的设计目标,如果约束不得当,就会影响电路的性能。
2)LogicLock
Quartus II内嵌的LogicLock用以完成模块化设计流程,通过划分每个模块的设计区域,然后单独设计和优化每个模块,最后将每个模块融合到顶层设计中。模块化设计方法是团队协作、并行设计的集中体现。LogicLock支持模块化设计流程、增量设计流程、团队设计流程等设计方法,合理利用这些方法,能在最大限度地继承以往设计成果,并行分工协作,有效利用开发资源,缩短开发周期。
3)PowerFit Fitter
PowerFit Fitter是Quartus II内嵌的布局布线器。
4)Timing Analyzer
Timing Analyzer是Quartus II 内嵌的STA分析工具,用以定位、分析并改善设计的关键路径,从而提高设计的工作频率。
5)Floorplan Editor
Floorplan Editor用以观察、规划、修改芯片内部实际布局布线情况,是用户分析设计结构和指导布局布线的重要工具。
6)Chip Editor
Chip Editor也是分析修改芯片内部布线情况的重要工具。通过Chip Editor 可 以 观 察 芯 片 时 序 的 关 键 路 径 , 将 Chip Editor 与SignalTap II和SignalProbe调试工具配合使用,可以加快设计验证及强化修改在设计验证器件未解决的错误。
7)DSE
DSE(Design Space Explorer:设计空间管理器)是控制QuartusII布局布线的另一种有效方法。DSE创建一个名为dse.tcl的脚本,可以使用guarcus_sh可执行文件从命令行运行它,用以优化设计。DSE界面能自动实验一系列的Quartus II选项和设置,从而确定优化设计的最佳参数设置。
8)Design Assistant
Design Assistant 内 嵌 工 具 , 用 以 检 查 设 计 的 可 靠 性 , 在HardCopy设计流程中非常有用。
2.6.5 EDA工具
20世纪90年代,电子和计算机技术较先进的国家一直在积极探索新的电子电路设计方法,并在设计方法、工具等方面进行了彻底的变革,取得了巨大的成功。在电子技术设计领域,可编程逻辑器件如CPLD和FPGA的应用,已得到广泛的普及,这些器件为数字系统的设计带来了极大的灵活性。这些器件可以通过软件编程而对其硬件结构和工作方式进行重构,从而使得硬件的设计可以如同软件设计一样方便快捷。这一切极大地改变了传统数字系统设计方法、设计过程和设计观念,促进了EDA技术的迅速发展。
EDA(Electronic Design Automation:电子设计自动化),在20世纪90年代初从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术就是以计算机为工具,设计者在EDA软件平台上,用硬件描述语言HDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局布线、仿真,甚至对于特定目标芯片的适配编译、逻辑映射和变成下载等工作。EDA技术的出现,极大地提高了电路设计的效率和可行性,减轻了设计者的劳动强度。EDA技术就是依赖功能强大的计算机,在EDA工具软件平台上,对以硬件描述语言HDL为系统逻辑描述手段完成的设计文件,自动地完成逻辑编译、化简、分割、综合、布局布线,以及逻辑优化和仿真测试,直至实现既定的电子线路系统功能。FPGA的EDA开发步骤:
(1)文本/原理图编辑与修改。首先利用EDA工具的文本或图形编辑器将设计者的设计意图用文本或图形表达出来。
(2)编译。完成设计描述后即可通过编译器进行排错编译,变成特定的文本格式,为下一步的综合做准备。
(3)综合。这是将软件设计与硬件的可实现性关联起来,将软件转化成硬件电路的关键步骤。综合后HDL综合器可生成ENIF、XNF、或VHDL等格式的网标文件,它们从门级开始描述了最基本的门电路结构。
(4)行为方针和功能仿真。利用产生的网标文件进行功能仿真,以便了解设计描述与设计意图的一致性。
(5)适配。利用FPGA/CPLD布局布线适配器将综合后的网标文件针对某一具体的目标器件进行逻辑映射操作,其中包括底层器件配置、逻辑分割、逻辑优化、布局布线。该操作完成后,EDA软件将产生针对此项设计的适配报告和JED下载文件等多项结果。适配报告指明了芯片内资源的分配与利用、引脚锁定、设计的布尔方程描述情况。
(6)功能仿真和时序仿真。该仿真接近真实器件运行,仿真过程已经将器件的硬件特性考虑进去,因此仿真精度要高很多。
(7)下载。如果以上所有的过程都没有发现问题,就可以将适配器产生的下载文件通过下载电缆载入目标芯片中。
(8)硬件仿真与测试。