1.4 VHDL在EDA中的应用
以VHDL为硬件描述语言对数字系统进行开发,必须依赖于支持这种语言的开发工具。目前,几乎所有的EDA开发环境都支持VHDL语言,因此VHDL可以以计算机为硬件平台,在多种EDA工具软件设计环境中运行。
VHDL工程设计流程主要包括设计输入、综合、仿真、适配、下载、硬件测试等步骤,如图1-3所示。VHDL的最初目的就是用于大规模及超大规模集成电路的设计,作为一种标准硬件描述语言,在工程应用上需要EDA工具的支持。一般地,VHDL的设计文件程序需依靠EDA软件转换为实际可用的电路网表,最后生成用于IC生产的版图,或者由适配软件用此网表对FPGA /CPLD进行布线。接下来,我们将针对流程图的每一个步骤进行简单阐述。
图1-3 VHDL工程设计流程
进行数字系统和数字电路的设计,首先需要设计者根据系统功能要求和VHDL语法要求,将设计意图在EDA工具的文本编辑器或图形编辑器中用文本方式或图形方式表达出来。大多数的EDA工具都能够提供上述两种编辑器,即设计者即可以直接输入VHDL源代码,又可以采用图形的方式(如电路原理图、状态图以及波形图等)来进行设计,EDA工具自动将它转换成VHDL程序。采用图形输入方式比较直观,容易接受,但是可修改性及可移植性差,当设计规模较大时可读性变得难以接受。因此,最通用的输入方法仍是采用VHDL程序的文本方式,任何支持VHDL的EDA工具都支持文本方式的编辑和编译。
设计输入完成后,可以先对VHDL程序描述的内容进行综合前仿真。仿真包括对设计文件在不同层次上的仿真。综合前的仿真称为行为仿真,即将VHDL程序直接送入VHDL仿真器,只根据VHDL的语义对VHDL所描述的内容进行仿真,与实际的硬件电路无关。在行为仿真中,可以充分发挥VHDL中的适用于仿真控制的语句、有关的预定义函数和库文件。其目的是对VHDL的系统描述作可行性的评估测试。
利用VHDL综合器对设计进行综合是十分重要的一步,因为综合过程将把VHDL的软件设计与硬件的可实现性挂钩,是软件转化为硬件电路的关键步骤。EDA工具中的综合器将VHDL程序设计转换成实际的硬件电路结构,也就是将采用VHDL描述的设计,进行编译、优化、转换和综合,得到门级电路甚至更底层的电路描述文件——VHDL网表文件。值得注意的是,VHDL综合器并不能支持VHDL全部语句程序,而只能支持其中部分语句,这一部分语句被称为VHDL的可综合子集,综合器不支持的语句在综合时将被忽略掉。不同的VHDL综合器所支持的VHDL子集不完全相同,这样,对于相同的VHDL源代码,不同的综合器可能综合出在结构和性能上有差异的电路系统,设计者在进行电路或系统设计时要充分考虑这一点,在编写代码和选用综合器时,应该根据所设计系统的指标要求进行选择。综合后的结果是可以为硬件系统所接受具有硬件可实现性的。
综合之后,VHDL综合器一般都可以生成一个VHDL网表文件。网表文件采用VHDL语法,首先描述了最基本的门电路,然后将这些门电路用例化语句连接起来,这样的VHDL网表文件再送到VHDL仿真器中进行所谓功能仿真。功能仿真仅对VHDL描述的逻辑功能进行测试模拟,以了解其实现的功能是否满足原设计的要求,仿真过程不涉及具体器件的硬件特性(如延时特性等),仿真结果与门级仿真器的功能仿真结果基本一致。
读者可能会对流程图中的两个仿真器:VHDL仿真器和门级仿真器的关系有所疑惑。二者都能进行功能仿真和时序仿真,它们之间唯一的区别就是网表文件格式的不同。
随后,通过针对具体器件的布线/适配器将目标器件进行逻辑映射操作,即将综合后的电路具体在某一器件上进行布局、布线及优化等配置,从而得到时序仿真的仿真文件。此时的网表文件中已经包含了较为精确的延时信息,因此时序仿真的结果十分接近真实器件运行的仿真。
如果在编译、综合、布线/适配过程中都没有出现问题,且行为仿真、功能仿真和时序仿真均满足设计预期和要求时,则可以进入设计流程的最后一个步骤:硬件仿真或硬件测试。首先将由FPGA/CPLD布线/适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片(如FPGA或CPLD)中,然后对得到的硬件电路进行测试看其是否完全满足系统设计的要求。其中,硬件仿真主要是针对ASIC设计而言,比如利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现;而硬件测试则是针对FPGA/CPLD直接用于应用系统的检测而言。
至此,我们已经对VHDL在EDA工具中的工程设计流程有了大致的了解。随着EDA工具日新月异的发展,上述各步骤只能说具备基本的、普遍的指导意义,并非在所有的工程设计中都能得到千篇一律的应用。