6.3 ISE软件的设计流程
Xilinx公司的ISE软件是一套用以开发Xilinx公司的FPGA&CPLD的集成开发软件,它提供给用户一个从设计输入到综合、布线、仿真、下载的全套解决方案,并很方便地同其他EDA工具接口。
其中,原理图输入用的是第三方软件ECS;状态图输入用的是StateCAD;HDL综合可以使用Xilinx公司开发的XST、Synopsys公司开发的FPGA Express和Synplicity公司的Synplify/Synplify Pro等;测试激励可以是图形化的HDL Bencher,也可以由用户提供测试代码;通过ModelSim XE(Xilinx Edition)或ModelSim SE进行仿真。
Xilinx为ModelSim预留了接口,可以直接在ISE环境中打开,使用非常方便。并且ModelSim支持综合前、后仿真,以及时序仿真,功能很强大。
除了上述软件以外,也可以使用其他公司的相关EDA软件产品。
本节将对ISE的软件设计流程做一个全面的介绍。一般来说完整的ISE软件设计流程包括:电路设计与输入、功能仿真、综合、综合后仿真、实现、布局布线后仿真与验证以及下载调试等主要步骤,如图6.6所示。
具体讲解如下。
1.设置工作环境
这一步并不是总是需要。通常用在第一次使用ISE或需要对某些项目进行修改时,一般有以下几项需要设置:这些设置主要是在“Edit”/“Preferences”下完成的,如图6.7所示。
图6.6 ISE下FPGA设计流程图
图6.7 “Preferences”对话框
在ISE General中主要有下面几个选项可以进行设置。
(1)常用的。这主要是设置项目管理器中文件的显示方式、字体、窗口的显示方式等,一般用默认值就行。
(2)图形编辑器(Schematic Editor)。这里可设置跳格键(Tab)的字符个数、编辑器的字体等,另外除了直接用ISE提供的HDL编辑器外,也可以采用第三编辑器,如gvim就是一款非常优秀的代码编辑器,有兴趣的读者可以在网上查阅相关资料。
(3)流程设置。
(4)工具设置。主要设置仿真器ModelSim、HDL测试台生成工具HDL Bencher、状态图输入工具State CAD的工作目录。其实要设置的就是ModelSim的工作目录,因为后两项通常在安装完后ISE已经设好了。
2.新建工程
这一步和其他的软件开发一样,ISE要求在对文件进行综合或布线之前必须要有一个存在的工程,在新建工程时,需要设置以下几点。
(1)工程名,最好用英文不要有汉字,因为ISE下有些工具对于含有汉字的文件目录支持的不是很好。
(2)工程所在目录。ISE所产生的输出文件将全部放在该目录下,但对源文件的目录没有要求。
(3)器件家族。即设计中所采用的FPGA是Xilinx的哪一大类。
(4)器件型号。具体大类下的哪一种器件,此外还要设置封装和速度等级等,这些信息都可以从芯片上提供的信息直接得到。
(5)综合软件。由于ISE预置了4种可选的综合器接口(XST为Xilinx自己开发,FPGA Express是Synopsys公司的OEM版,在安装ISE时就已经装好了。而Synplify/Synplify Pro则需要另外购买并安装),所以必须选择一种作为该工程的综合器。4种综合器全部支持Verilog和VHDL。但有一点必须注意:如果设计中用到原理图,则只能选择XST或FPGA Express作综合器,因为Synplify Pro不支持原理图方式。
3.添加设计源文件
如果已有源文件,直接加入即可,否则可采用原理图方式或写HDL代码方式新建文件再加入。ISE下支持多种新建资源类型,包括:User Document(工程说明文件)、VHDL module(VHDL源代码文件)、VHDL Library(VHDL库)、VHDL Package(VHDL包)、VHDL Test Bench(VHDL测试激励)、Verilog Module(Verilog源代码文件)、Corgen Generator(IP核生成工具)、Schematic(原理图)、Test Bench Waveform(测试激励波形)、BMM文件(块RAM映射文件)、State Diagram(状态转移图)、UCF(用户约束文件)等。每种类型的资源在ISE都有对应的处理工具。
4.写测试文件
这一步可以利用HDL Bencher工具自动产生。测试台的主要功能是给被测实体加上输入激励,再比较其输出是否与期望值一致,并给出一些提示信息。但推荐大家自己写测试代码,通过写代码的测试灵活性更强,而且对于比较复杂的设计,有时在仿真时还需要读取文件数据,或将最终的仿真结果写进文件或打印,这在HDL Bencher下是很难完成的。
5.功能仿真
利用ModelSim来检查电路仿真结果是否正确。如果编译有错,则先将错误更改。如此反复直到仿真正确为止。这只是用于检查代码有无错误,ModelSim最主要的作用在于通过仿真观察波形来验证设计的功能是否正确,这部分工作对于一个设计来说是非常重要的,因为如果前期的功能仿真做的不到位,会直接影响到最终电路功能的实现,必须在确保功能仿真没有问题的前提下,再进行下面的步骤。
6.综合
通过这一步将设计转换成具体的电路图。如果设计有错,有可能综合通不过。这就要求用户必须按照可综合代码的风格来设计。另外,综合有很多属性是可以设置的,如果对设计中的某些项目(如速度)有要求的话需要预先设置好。在ISE的高级版本中,XST已经支持Veilog和VHDL混合语言代码输入,XST的输出文件是NGC网表。
7.综合后仿真
综合实现后要进行综合后仿真,检验综合后功能是否符合设计要求,如果不符合要求要判断是否是原理图设计的问题,进一步对代码进行优化,直到符合设计要求为止。
8.设计用户约束文件
用户约束文件主要包括时序约束文件和管脚约束文件,时序约束可以在ISE自带的Constraints Editor下完成,管脚约束是在PACE(约束编辑器)下完成的。约束设计完毕生成UCF文件。
9.实现
所谓实现(Implement)是将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的。实现主要分为3个步骤:翻译(Translate)逻辑网表、映射(Map)到器件单元与布局布线(Place&Route)。
10.布局布线后仿真
所谓布局布线仿真,是将Xilinx布线所产生的延迟加反标到电路后进行仿真。如果采用ModelSim仿真,在ISE下提供了4个仿真级别:Simulate Behavioral Model(行为仿真)、Simulate Post-Translate Verilog Model(翻译后仿真)、Simulate Post-Map Verilog Model(映射后仿真)、Simulate Post-Place&Route Verilog Model(布局布线后仿真)。
布局布线后生成的仿真时延文件包含的时延信息最全,不仅包含门延时,还包括实际布线延时,所以布线后仿真最准确,能较好地反映芯片的实际工作情况。
11.下载
把Xilinx布线后产生的结果转换成配置文件后置入FPGA中。下载成功后就可以测试实际电路了。如果需要脱机配置,则必须将配置文件写入外置存储器中。下载时需要将器件用JTAG线与PC机连接完成下载。
其实上面的10个步骤并不是一定要按部就班,这取决于设计者的熟练程度和设计水平。例如测试台的编写、前仿真、后仿真并不是必须的。但为了保证设计的正确性和节约查错所耗的时间,推荐设计者一步一步操作,这样能够及时发现错误及时更正。
ISE软件一个特点就是具有良好的开发界面,新建一个工程后,在“Processes for Source”对话框中即罗列出了ISE下FPGA设计流程中的各个环节,如图6.8所示,读者可将图中标注的内容与上面介绍的FPGA的设计流程中的各个步骤相对应,可以看出,界面上列出了设计流程的各个步骤,设计时只需要按照顺序依次实现就可以了,操作很简便。
图6.8 设计流程在ISE界面下的体现
由于ISE提供的集成开发环境非常好用,故推荐从ISE中来启动其他程序,当然也可以在各自的软件环境中完成上述步骤。
例如在Synplify中建工程、输入文件和综合,在ModelSim中新建工程并做仿真,用Xilinx的Design Manager(这个程序在ISE中是找不到的,因为ISE是通过命令行方式调用该程序使其在后台运行,但可以在安装目录下找到它),再运行JTAG编程器下载。
本节对ISE的FPGA设计流程做了一个简单的介绍,读者可对照2.6节加深对这一流程的理解。