华为FPGA设计流程指南

上传人:人*** 文档编号:505327521 上传时间:2022-09-11 格式:DOCX 页数:16 大小:215.47KB
返回 下载 相关 举报
华为FPGA设计流程指南_第1页
第1页 / 共16页
华为FPGA设计流程指南_第2页
第2页 / 共16页
华为FPGA设计流程指南_第3页
第3页 / 共16页
华为FPGA设计流程指南_第4页
第4页 / 共16页
华为FPGA设计流程指南_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《华为FPGA设计流程指南》由会员分享,可在线阅读,更多相关《华为FPGA设计流程指南(16页珍藏版)》请在金锄头文库上搜索。

1、华为FPGA设计流程指南LG GROUP system office room【LGA16H-LGYY-LGUA8Q8-LGA162】FPGA设计流程指南前言本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是:在于规范整个设计流程,实现开发的合理性、一致性、高效性。形成风格良好和完整的文档。实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。便于新员工快速掌握本部门FPGA的设计流程。由于目前所用到的FPGA器件以Altera的为主,所以下面的例子也以Alt era为例,工具组合为modelsim +LeonardoSpec tr

2、um/FPGAComp il erII + Quar tus,但原则和方法对于其 他厂家和工具也是基本适用的。目录1. 基于HDL的FPGA设计流程概述设计流程图关键步骤的实现功能仿真逻辑综合前仿真布局布线后仿真(时序仿真)2. Verilog HDL设计编程风格(Coding Style)要求文件大小写标识符参数化设计空行和空格对齐和缩进注释参考C语言的资料可视化设计方法可综合设计设计目录3. 逻辑仿真 测试程序(test bench) 使用预编译库4. 逻辑综合 逻辑综合的一些原则关于 LeonardoSpectrum大规模设计的综合必须重视工具产生的警告信息调用模块的黑盒子(Black

3、box )方法参考 修订纪录 1.基于HDL的FPGA设计流程概述设计流程图(1)设计定义(2) HDL实现(3)功能仿真逻辑仿真器(4)逻辑综合逻辑综合器(5)前仿真逻辑仿真器(6)布局布线FPGA厂家工具(8)静态时序分(7)后仿真逻辑仿真器(9)在系统测试说明:逻辑仿真器主要指modelsim, Verilog-XL等。逻辑综合器主要指 LeonardoSpectrum、Synplify、FPGAExpress/FPGA Compiler 等。FPGA厂家工具指的是如Altera的Max+PlusII、Quartusll, Xilinx 的 Foundation、 Alliance、等。

4、关键步骤的实现测试数据说明:“调用模块的行为仿真模型”指的是RTL代码中引用的由 厂家提供的宏模块/IP,如Altera提供的LPM库中的乘法器、 存储器等部件的行为模型。逻辑综合说明:=iRTL代码调用模块口设置综合目EDIF 网 表(netli标和约束条丿勺导入,是由丁 rtL代码调用了“调用模块的黑盒HDL网表 (netli st)般来说,对FPGA设计这一步可以跳过不做,但可用于debug 综合有无问题。布局布线基于将来设计转向ASIC的方便,本部门的设计统一采用Verilog HDL,但针对混合设计和混合仿真的趋势,所有开发人 员也应能读懂VHDL。Verilog HDL的学习可参考

5、。编程风格(Coding Style)要求文件(1)每个模块(module)一般应存在于单独的源文件中,通常源文件名与所包含模块名相同。(2)每个设计文件开头应包含如下注释内容: 年份及公司名称。作者。文件名。所属项目。顶层模块。模块名称及其描述。修改纪录。请参考标准示例程序3。大小写(1) 如无特别需要,模块名和信号名一律采用小写字 母。(2) 为醒目起见,常数(define定义)/参数(parameter定义)采用大写字母。标识符(1) 标识符采用传统C语言的命名方法,即在单词之间 以 “_” 分开,如:max_delay、data_size 等等。(2) 采用有意义的、能反映对象特征、作

6、用和性质的单 词命名标识符,以增强程序的可读性。(3) 为避免标识符过于冗长,对较长单词的应当采用适 当的缩写形式,如用buff代替buffer,ena代替 enable,addr代替 address 等。参数化设计为了源代码的可读性和可移植性起见,不要在程序中直接 写特定数值,尽可能采用define语句或parama ter语句定义 常数或参数。空行和空格(1)适当地在代码的不同部分中插入空行,避免因程序拥挤不利阅读。(2)在表达式中插入空格,避免代码拥挤,包括:赋值符号两边要有空格;双目运算符两边要有空格; 单目运算符和操作数之间可没有空格 示例如下:a = b;c = a + b;if

7、(a = b) then .a = a & c;对齐和缩进(1)不要使用连续的空格来进行语句的对齐。(2)采用制表符Tab对语句对齐和缩进,Tab键采用4个字符宽度,可在编辑器中设置。(3)各种嵌套语句尤其是if.else语句,必须严格的逐层缩进对齐。注释必须加入详细、清晰的注释行以增强代码的可读性和可移植性,注释内容占代码篇幅不应少于30%。参考C语言的资料要形成良好的编程风格,有许多细节需要注意,可以参考 资料4,虽然它是针对C语言的讨论,但由于Verilog HDL和 C语言的形式非常近似,所以里面提到的很多原则都是可以借 鉴的。可视化设计方法为提高设计效率和适应协同设计的方式,可采用可

8、视化的 设计方法,Mentor Grahpics的Renoir软件提供了非常好的设 计模式。可综合设计用HDL实现电路,设计人员对可综合风格的RTL描述的掌 握不仅会影响到仿真和综合的一致性,也是逻辑综合后电路可 靠性和质量好坏最主要的因素,对此应当予以充分的重视。学习可综合的HDL请参考56 7。 学习设计的模块划分请参考8。设计目录采用合理、条理清晰的设计目录结构有助于提高设计的效 率、可维护性。建议采用类似下面的目录结构:(1)2)design考源到性能和易用性,(布局的逻辑仿真器是综Men tor仿(布局布码) 合) 真) 线) 码) 合) 真) 线)Graphics 的 models

9、im。测试程序(test bench)测试程序对于设计功能和时序的验证有着举足轻重的影 响,测试激励的完备性和真实性是关键所在,有以下原则须遵 循:(1)测试激励输入和响应输出采集的时序应当兼顾功能 仿真(无延时)和时序仿真(有延时)的情况。(2)对于周期较多的测试,为提高效率,尽可能采用程 序语句来判断响应与标准结果是否一致,给出成功或 出错标志,而不是通过观察波形来判断。(3)采用基于文件的测试是很好的办法,即由matlab或 spw等系统工具产生测试数据,测试程序将其读入产生 激励,再把响应结果写入到文件,再交给上述工具进 行处理或分析。(4)仿真器支持几乎所有的Verilog HDL语

10、法,而不仅 仅是常用的RTL的描述,应当利用这一点使测试程序 尽可能简洁、清楚,篇幅长的要尽量采用task来描 述。使用预编译库在进行功能仿真和后仿真时都需要某些模块的行为仿真模 型和门级仿真模型,如Alt era Quar tus里的(LPM模块行为仿 真模型)和(20KE系列门级仿真模型),为避免在不同的设计 目录中多次编译这些模型,应当采用一次编译,多次使用的方 法。具体做法如下(以20KE门级库为例):1:在某个工作目录下新建一库名apex20ke,将编译到其 中。2:在图形界面中的Load Design对话框中装入仿真设计 时,在Verilog标签下指定预编译库的完整路径。(见下图)

11、4.逻辑综合目前可用的FPGA综合工具有Men tor Graphics的 LeonardoSpectrum, Synplicity 的 Synplify 和 Synopsys 的 FPGA Compilerll/FPGA Express, LeonardoSpectrum 由于性能 和速度最好,成为我们首选的综合器,FPGA Compilerll/FPGA Express由于可以和Design Compiler代码兼容也可用。见参 考9逻辑综合的一些原则HDL代码综合后电路质量的好坏主要取决于三个方面:RTL 实现是否合理、对厂家器件特点的理解和对综合器掌握的程 度。参考10中有比较全面的讨

12、论。关于 LeonardoSpectrumLeonardoSpectrum对综合的控制能力比较强,但使用也略 为复杂,故需要在使用前尽量熟悉其功能,才能取得较好的综 合结果。当出现综合结果不能满足约束条件时,不要急于修改设计 源文件,应当通过综合器提供的时序和面积分析命令找出关键 所在,然后更改综合控制或修改代码。在LeonardoSpectrum以前的版本输出的.v网表都不能 用于仿真。大规模设计的综合分块综合当设计规模很大时,综合也会耗费很多时间。如果设计只 更改某个模块时,可以分块综合。如有设计 包含和两个模 块,当只修改的话,可以先单独综合,输出其网表,编写一个 b模块的黑盒子接口,每

13、次修改后只综合、,将综合后的网 表和送去布线,可以节约综合b模块的时间。米用脚本命令当设计规模比较大时,综合控制也许会比较复杂,可以考虑 采用脚本控制文件的方式进行综合控制,modelsim、LeonardoSpectrum 和 Quartus 都支持 TCL (Tool Command Language)语言,采用脚本控制可以提供比图形界面更灵活和 更方便的控制手段。必须重视工具产生的警告信息 综合工具对设计进行处理可能会产生各种警告信息,有些 是可以忽略的,但设计者应该尽量去除,不去除必须确认每条 警告的含义,避免因此使设计的实现产生隐患。这个原则对仿真和布局布线同样适用。调用模块的黑盒子

14、(Black box)方法使用黑盒子方法的原因主要有两点:一是HDL代码中调用了一些FPGA厂家提供的模块(如Alt era的LPM模块)或第三方提供的IP,这些模块不需要综 合,而且有些综合器也不能综合(如FPGA CompilerII/FPGA Express可以综合包含LPM的代码而LeonardoSpectrum不 能)。因此须提供一个黑盒子接口给综合器,所调用的模块到 布局布线时才进行连接。二是方便代码的移植,由于厂家提供的模块或第三方提供 的IP通常都是与工艺有关的,直接在代码中调用的话将不利于 修改,影响代码移植。F面以调用Alt era的LPM库中的乘法器为例来说明。调MegaWizer Plug-inManager 产生)ataa (dataa),.datab(datab),.aclr(1b0),.clock(1b0),.clken(1b0),.sum (1b0),.result(result)用这样一个模块需要这样一个文件:(可由Quartus的,代码如下:);defparam= 8,= 8,= 16,= 16,= SIGNED,/ exemplar translate_on/ synopsys transla

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号