FPGA软件测试技术
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 FPGA软件设计特点

FPGA软件设计手段主要有两种:一种是采用原理图输入方式(传统的FPGA软件设计手段),另一种是采用硬件描述语言(Hardware Description Language,HDL)输入方式。

最初的FPGA软件设计是采用传统的原理图输入方式进行的,通过调用FPGA厂家所提供的相应物理元件库,在电路原理图中绘制所设计的系统,然后再通过原理图对应的网表经转换产生某一特定FPGA/CPLD厂家布局布线器所需网表,通过布局布线完成设计。原理图绘制完成后,可采用门级仿真和时序仿真进行功能验证。

与上述传统的原理图输入方式相比较,采用HDL输入方式的FPGA软件设计主要有两种设计流程:一种是自顶向下(Top-down)的设计流程,另一种是自底向上(Bottom-up)的设计流程。设计流程是指从一个项目开始的项目需求分析、架构设计,到功能验证、综合、时序验证,再到硬件验证等的整个过程。

自顶向下的设计流程如图1-3所示:先定义顶层模块功能,进而分析要构成顶层模块的必要子模块;然后进一步对各个模块进行分解、设计,直到到达无法进一步分解的底层功能模块。这样,可以把一个较大的系统细化成多个小系统,从时间、工作量上分配给更多的人员去设计,从而提高了设计速度,缩短了开发周期。一般一个系统的Verilog HDL设计包含测试激励文件(Testbench.v)、顶层模块、子模块等,每个子模块也含有类似的结构,便于设计、仿真与验证。

图1-3 自顶向下的设计流程

与自顶向下的设计流程正好相反,自底向上的设计流程是从底层子模块开始设计、仿真与验证,然后由各级子模块组装成系统。一般比较复杂,模块较多,需要多人甚至多团队联合设计、仿真与验证的系统都采用自顶向下的设计方法。先由系统架构工程师分析系统架构,编写架构文件,划分功能模块,定义模块接口,进行行为仿真,最后一级级分配到各组及个人。但是,当系统规模较小、架构简单清晰、从事设计的人员较少(甚至只有一两个人从事项目设计)时,往往采用自底向上的设计方法,这样避免因为对早期架构理解不透彻,定义不准确,频繁修改架构而浪费时间。

自顶向下的设计方法具体有以下优点。

(1)完全符合设计人员的设计思路。

(2)功能设计可完全独立于物理实现。在采用传统的原理图输入方式时,FPGA/CPLD器件的采用受到元件库的制约。由于不同厂家FPGA/CPLD的结构完全不同,甚至同一厂家不同系列的产品也存在结构上的差别,因此在设计一开始,设计人员的设计思路就受到最终所采用器件的约束,大大限制了设计人员的思路和器件选择的灵活性。而采用自顶向下的设计方法,功能输入采用国际标准的HDL,HDL不含有任何器件的物理信息,因此设计人员可以有更多的空间去集中精力进行功能描述,设计人员可以在设计过程的最后阶段任意选择或更改物理器件。

(3)设计结果可再利用。设计结果完全可以以一种知识产权(Intellectual Property,IP)核的方式作为设计人员或设计单位的设计成果,应用于不同的产品设计中,做到成果的再利用。

(4)易于设计的更改。设计人员可在极短的时间内修改设计,对各种FPGA/CPLD结构进行设计结果规模(门消耗)和速度(时序)的比较,选择最优方案。

(5)设计大规模、复杂电路。目前的FPGA/CPLD器件正向高集成度、深亚微米工艺发展,为设计系统的小型化、低功耗、高可靠性等提供了集成的手段。设计少于一万门左右的电路,自顶向下的设计方法具有很大的帮助;而设计更大规模的电路,自顶向下的设计方法则是必不可少的手段。

(6)提高生产率。采用自顶向下的设计方法可使设计周期缩短,生产率大大提高,产品上市时间提前,性能明显提高,产品竞争力加强。据统计,采用自顶向下的设计方法的生产率可达到传统设计方法的2~4倍。

采用自顶向下的设计方法,其核心是采用HDL进行功能描述,由逻辑综合(Logic Synthesis)把行为(功能)描述转换成某一特定FPGA/CPLD的网表,送到厂家的布局布线器完成物理实现。在设计过程的每一个环节中,仿真器的功能仿真、门级仿真和时序仿真保证设计功能和时序的正确性。

采用自顶向下的设计方法进行FPGA/CPLD设计,其设计结果的优劣取决于3个重要的因素:描述手段(即HDL)、设计方法(Style)和设计工具。描述手段是基础,设计方法需要工程经验,而设计工具则是自顶向下设计的关键。一套完整、强大、性能卓越的设计工具,可帮助设计人员最大限度地发挥其设计能力。