在数字系统设计的今天,片上系统(SoC)技术的出现已经在设计领域引起深刻变革。为适应产品尽快上市的要求,设计者必须合理选择各EDA厂家提供的加速设计的工具软件,以使其产品在本领域良性发展。FPGA设计是当前数字系统设计领域中的重要方式之一。本文以多种EDA厂家工具为基础,系统介绍FPGA设计的流程。
1 数字逻辑划分与FPGA内部结构
图1所示为数字逻辑树状分类图,由其可以看出,现场可编程门阵列(FPGA)是专用集成电路中可编程逻辑器件的重要分支。
随着微电子工业的发展与进步,FPGA的集成度已经达到数百万门,如Xilinx公司的Xcv3200e最大门数为320万门,Altera公司的Apex20k1500e为150万门,且系统时钟频率已达到200MHz,支持多种I/O电压标准,并具有丰富的可重复利用的IP 核,便于加速系统设计。
FPGA的内部资源(以Xilinx公司为例)一般分为可编程逻辑块CLB、输入输出块IOB和可编程连线PI三部分。通过编程控制PI连接各CLB单元,可以形成具有特定功能的电路。使用各公司的专用设计软件设计FPGA,最终可形成由PI控制CLB单元的位流文件。
Xilinx公司主推的Virtex系列FPGA产品采用0.22微米工艺,具有如下特性:支持9种I/O标准、4个延时锁定环、块存储与分布存储并存、可编程流水延时存储、热控制、配置速率为500Mb/s。而Altera公司的Apex20ke系列同样是其公司主推的FPGA产品,在内部布线资源方面与Xilinx公司产品不同。在Virtex器件中,分为双长线、单长线、长线几种,在布线时可以按最近原则进行取舍;而在Apex20ke中,连线仅为一种等长,所以在时序分析时比较准确。
2 FPGA设计原理
FPGA设计大体分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个步骤,设计流程如图2所示。下面分别介绍各个设计步骤。
2.1 设计输入
设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与Verilog HDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL。HDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能在特定综合器(如Synopsys公司的FPGA Compiler II 或FPGA Express)作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点。另外,在Altera公司Quartus软件环境下,可以使用Memory Editor对内部memory进行直接编辑置入数据。常用方式是以HDL语言为主,原理图为辅,进行混合设计以发挥二者各自特色。
通常,FPGA厂商软件与第三方软件设有接口,可以把第三方设计文件导入进行处理。如Quartus与Foundation都可以把EDIF网表作为输入网表而直接进行布局布线,布局布线后,可再将生成的相应文件交给第三方进行后续处理。
2.2 设计综合
综合,就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。也就是说,被综合的文件是HDL文件(或相应文件等),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结果与综合器的工作性能有关。
FPGA Compiler II是一个完善的FPGA逻辑分析、综合和优化工具,它从HDL形式未优化的网表中产生优化的网表文件,包括分析、综合和优化三个步骤。其中,分析是采用Synopsys标准的HDL语法规则对HDL源文件进行分析并纠正语法错误;综合是以选定的FPGA结构和器件为目标,对HDL和FPGA网表文件进行逻辑综合;而优化则是根据用户的设计约束对速度和面积进行逻辑优化,产生一个优化的FPGA网表文件,以供FPGA布局和布线工具使用,即将电路优化于特定厂家器件库,独立于硅特性,但可以被约束条件所驱动。
利用FPGA Compiler II进行设计综合时,应在当前Project下导入设计源文件,自动进行语法分析,在语法无误并确定综合方式、目标器件、综合强度、层次保持选择、优化目标等设置后,即可进行综合与优化。在此可以将两步独立进行,在两步之间进行约束指定,如时钟的确定、通路与端口的延时、模块的算子共享、寄存器的扇出等。如果设计模型较大,可以采用层次化方式进行综合,先综合下级模块,后综合上级模块。在进行上级模块综合时设置下级模块为Don′t Touch,使设计与综合过程合理化。综合后形成的网表可以以EDIF格式输出,也可以以VHDL或Verilog HDL格式输出,将其导入FPGA设计厂商提供的可支持第三方设计输入的专用软件中,就可进行后续的FPGA芯片的实现。综合完成后可以输出报告文件,列出综合状态与综合结果,如资源使用情况、综合后层次信息等。 |