1.4 综合
在工程中添加设计文件及设置引脚锁定后,下一步就是对工程进行综合了。随着FPGA/CPLD越来越复杂,性能要求越来越高,高级综合在设计流程中也成为了一个重要的部分,综合结果的优劣直接影响布局布线的结果。综合的主要功能是将HDL语言翻译成最基本的与门、或门、非门,RAM,触发器等基本逻辑单元的连接关系(网络表),并根据要求(约束条件)优化所生成的门级逻辑连接,输出网络表文件,供下一步的布局布线用。好的综合工具能够使设计占用芯片的物理面积更小,工作频率更快,这也是评定综合工具优劣的两个重要指标。本节主要介绍QuartusⅡ软件中集成的综合工具的使用方法和特点。
1.使用QuartusⅡ软件集成综合
在QuartusⅡ软件中,可以使用Analysis & Synthesis分析综合VHDL和Verilog设计,Analysis & Synthesis完全支持VHDL和Verilog HDL语言,并提供控制综合过程的一些可选项。用户可以在“Settings”对话框中选择适用语言标准,同时还可以指定QuartusⅡ软件将非QuartusⅡ软件函数映射到QuartusⅡ软件函数的库映射文件(.lmf)上。
Analysis & Synthesis的分析阶段将检查工程的逻辑完整性和一致性,并检查边界链接和语法错误。它使用多种算法来减少门的数量,删除冗余逻辑,以及尽可能有效地利用器件体系结构。分析完成后,构建工程数据库,此数据库中包含有完全优化且合适的工程,工程将用于为时序仿真、时序分析、器件编程等建立一个或多个文件。QuartusⅡ的综合设计流程如图1-4-1所示。
图1-4-1 QuartusⅡ的综合设计流程
2.控制综合
可以使用编译器指令和属性、QuartusⅡ软件逻辑选项、QuartusⅡ软件综合网络表优化选项来控制Analysis & Synthesis。
1)使用编译器指令和属性 QuartusⅡ软件的Analysis & Synthesis支持编译器指令,这些指令也称为编译指令。例如,可以在Verilog HDL或VHDL代码中包括translate_on和translate_off等编译器指令作为备注。这些指令不是Verilog HDL或VHDL的命令,但综合工具使用它们以特定方式推动综合过程。仿真器等其他工具则忽略这些指令,并将它们作为备注处理。
2)使用QuartusⅡ软件逻辑选项 QuartusⅡ软件除了支持一些编译器指令外,还允许用户在不编辑源代码的情况下设置属性。这些属性用于保留寄存器,指定上电时的逻辑电平,删除重复或冗余的逻辑,优化速度或区域,设置状态机的编码级别,以及控制其他许多选项,如图1-4-2所示。
图1-4-2 综合的参数设置对话框
• Optimization Technique:有Speed(速度)、Balanced(平衡)和Area(面积)3个选项。这里“面积”指的是一个设计所消耗的FPGA/CPLD的逻辑资源数量。“速度”是指设计在芯片上可以稳定运行所达到的最高工作频率,这个频率由设计的时序状况决定,并且和设计满足的时钟周期、PAD to PAD Time、Clock Setup Time、Clock Hold Time、Clock-to-Output Delay等众多时序特征量密切相关。这两个概念在FPGA/CPLD中是一对矛盾的统一体,要求一个设计既要工作频率高又要占用资源少是不现实的。一般来说,科学的目标是在满足要求的工作频率下使用尽量少的资源,或者是在规定面积下,使设计的时序裕量更大,工作频率更高。但是当二者冲突时,满足时序要求,比达到要求的工作频率更重要,即速度优先的原则。默认选项Balanced是指编译器综合的时候把设计的一部分综合成面积最小,一部分以速度为优化目标综合,其综合后的结果比优化目标选择速度时的工作频率慢的情况下消耗资源要少。用户可以根据自己的需要和所选器件来选择优化目标
• Power Up Don’t Care:把上电初值状态中没有要求的寄存器设置为对设计最有利的逻辑电平
• PowerPlay power optimization:可以进行功耗优化的设置
• HDL Message Level:用于设置HDL信息级别,单击“Advanced…”按钮可以进行更高级的设置
上述综合的逻辑选项设置好后,单击“More Settings…”按钮,可以设置更多的选项。在“Analysis & Synthesis”的下拉菜单“VHDL Input”、“Verilog HDL Input”和“Default Parameters”选项里可以选择语言的标准和一些参数的设定。
3)使用综合网络表优化选项 QuartusⅡ软件综合优化选项,在许多ALtera件系列的综合期间优化网络表。这些优化选项对标准编译期间出现的优化进行补充,并且是在全编译的Analysis & Synthesis阶段出现的,它们对综合网络表进行更改,通常有利于面积和速度的改善。
选中“Settings”对话框中的“Analysis & Synthesis Settings”选项,进入综合网络表优化选项设置。不管是用第三方综合工具还是用QuartusⅡ软件集成的综合工具,这些参数都将改变综合网络表,从而根据用户选择的优化目标对面积或是速度有所改善。综合网络表的优化主要是“Perform WYSIWYG Primitive resynthesis”,表示进行WYSIWYG基本单元再综合。它是将第三方工具综合结果中的在atom网络表中的逻辑单元LE解映射成逻辑门,然后再重新由QuartusⅡ软件将逻辑门映射成Altera特定原语。由于网络表中的原语被分开再重新映射,因此它使得由第三方工具生成的网络表文件中的节点名称有很大的变化。寄存器会减少或是复制后被删除,但是没有被删除的寄存器其重新映射后的名称不会改变。不会被设置成“Never Allow”的节点信号不受此选项的影响。
按照上面的介绍设置好综合逻辑选项后,就可以开始对工程进行综合。综合之前,可以使用QuartusⅡ软件的Design Assistant(设计辅助,一种检查工具)来帮助检查设计中潜在的问题。选中“Settings”对话框的“Design Assignment”选项,则进入了辅助检查条件设置对话框,如图1-4-3所示,在此对话框中列出了很多可检查项。
图1-4-3 辅助检查条件设置对话框
3.第三方综合工具
QuartusⅡ软件除了集成的综合工具外,和目前流行的综合工具都有链接接口。这些第三方工具主要有Synplify/Synplify Pro、Mentor Graphics LeonardoSpectrum、Synopsys FPGA ComplierⅡ等。
Synplify/Synplify Pro是Syplicity公司出品的综合工具,以综合速度快、优化效果好而成为目前业界最流行的高效综合工具之一。Synplify/Synplify Pro采用了很多独特的整体性能优化策略和方法,使它们对设计的综合无论在物理面积还是工作频率上都能达到较理想的效果。
LeonardoSpectrum是Mentor Graphics公司出品的综合工具。Synopsys是最早的EDA工具厂商之一,其FPGA ComplierⅡ是一个比较成熟的FPGA、ASIC设计平台。
虽然第三方综合工具一般来说功能强大,优化效果好,但是QuartusⅡ软件自身集成的综合工具也有其自身的优点。因为只有Altera自己对其器件的底层设计与内部结构最为了解,所以使用QuartusⅡ软件集成综合常常会有意想不到的良好效果。