在设计输入阶段,因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 HDL库。因此,在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快速设计专用系统或作为检验手段已经成为数字系统设计中不可或缺的一种方式,了解并熟悉其设计流程应成为现今电子工程师的一种必备知识。