华为_FPGA设计流程指南

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

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

1、FPGA 设计流程指南前言本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型 验证。编写本流程的目的是: 在于规范整个设计流程,实现开发的合理性、一致性、高效性。 形成风格良好和完整的文档。 实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。 便于新员工快速掌握本部门FPGA的设计流程。由于目前所用到的FPGA器件以Altera的为主,所以下面的例子也以Altera为例,工 具组合为 modelsim + LeonardoSpectrum/FPGACompilerll + Quartus,但原则和方法对于其他 厂家和工具也是基本适用的。目录1. 基于H

2、DL的FPGA设计流程概述11.1 设计流程图11.2 关键步骤的实现21.2.1 功能仿真21.2.2 逻辑综合21.2.3 前仿真31.2.4 布局布线31.2.5 后仿真(时序仿真)42. Verilog HDL 设计42.1编程风格(Coding Style)要求42.1.1 文件42.1.2 大小写52.1.3 标识符52.1.4 参数化设计52.1.5 空行和空格52.1.6 对齐和缩进52.1.7 注释52.1.8参考C语言的资料52.1.9 可视化设计方法62.2 可综合设计62.3 设计目录63. 逻辑仿真63.1 测试程序(test bench)73.2 使用预编译库74.

3、 逻辑综合84.1 逻辑综合的一些原则84.1.1 关于 LeonardoSpectrum 84.1.1 大规模设计的综合84.1.3 必须重视工具产生的警告信息84.2调用模块的黑盒子(Black box)方法8参考 10修订纪录101.基于HDL的FPGA设计流程概述1.1 设计流程图(4)逻辑综合逻辑仿真器逻辑综合器(5)前仿真逻辑仿真器1r(6)布局布线FPGA厂家工具B(7)后仿真q逻辑仿真器(8)静态时序分析(9)在系统测试说明: 逻辑仿真器主要指modelsim, Verilog-XL等。 逻辑综合器主要指 LeonardoSpectrum、Synplify、FPGA Expre

4、ss/FPGA Compiler等。 FPGA 厂家工具指的是如 Altera 的 Max+PlusII、 QuartusII, Xilinx 的 Foundation、 Alliance、 ISE4.1 等。1.2 关键步骤的实现1.2.1 功能仿真说明:“调用模块的行为仿真模型”指的是RTL代码中引用的由厂家提供的宏模块/IP,如 Altera 提供的 LPM 库中的乘法器、存储器等部件的行为模型。1.2.2 逻辑综合说明:“调用模块的黑盒子接口”的导入,是由于RTL代码调用了一些外部模块,而这些外 部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块 的接口。

5、1.2.3 前仿真说明:一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题。1.2.4 布局布线1.2.5 后仿真(时序仿真)2. Verilog HDL 设计基于将来设计转向ASIC的方便,本部门的设计统一采用Verilog HDL,但针对混合设 计和混合仿真的趋势,所有开发人员也应能读懂 VHDL。Verilog HDL的学习可参考1 2。2.1编程风格(Coding Style)要求2.1.1 文件(1)每个模块(m odule) 般应存在于单独的源文件中,通常源文件名与所包含模 块名相同。2) 每个设计文件开头应包含如下注释内容: 年份及公司名称。 作者。 文件

6、名。 所属项目。 顶层模块。 模块名称及其描述。 修改纪录。 请参考标准示例程序3。2.1.2 大小写(1) 如无特别需要,模块名和信号名一律采用小写字母。(2)为醒目起见,常数(define定义)/参数(parameter定义)采用大写字母。2.1.3 标识符(1) 标识符采用传统C语言的命名方法,即在单词之间以分开,女口: max_delay、 data_size 等等。(2) 采用有意义的、能反映对象特征、作用和性质的单词命名标识符,以增强程序 的可读性。(3) 为避免标识符过于冗长,对较长单词的应当采用适当的缩写形式,如用buff代替buffer, ena代替enable, addr代

7、替address等。2.1.4 参数化设计为了源代码的可读性和可移植性起见,不要在程序中直接写特定数值,尽可能采用 define 语句或 paramater 语句定义常数或参数。2.1.5 空行和空格(1) 适当地在代码的不同部分中插入空行,避免因程序拥挤不利阅读。( 2)在表达式中插入空格,避免代码拥挤,包括:赋值符号两边要有空格; 双目运算符两边要有空格;单目运算符和操作数之间可没有空格,示例如下: a = b; c = a + b; if (a = b) then . a = a & c;2.1.6 对齐和缩进(1) 不要使用连续的空格来进行语句的对齐。(2) 采用制表符Tab对语句对齐

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

9、设计模式。2.2 可综合设计用 HDL 实现电路,设计人员对可综合风格的 RTL 描述的掌握不仅会影响到仿真和综合 的一致性,也是逻辑综合后电路可靠性和质量好坏最主要的因素,对此应当予以充分的重视。学习可综合的HDL请参考。学习设计的模块划分请参考8。2.3 设计目录采用合理、条理清晰的设计目录结构有助于提高设计的效率、可维护性。建议采用类似 下面的目录结构:(布局布线)仿真)综合)(1)源代码)2)仿真) (布局布线)源代码)仿真)(布局布线)综合)源代码)(综合)3. 逻辑仿真考虑到性能和易用性,首选的逻辑仿真器是Mentor Graphics的modelsim。3.1 测试程序(test

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

11、描述,应 当利用这一点使测试程序尽可能简洁、清楚,篇幅长的要尽量采用task来描述。3.2 使用预编译库在进行功能仿真和后仿真时都需要某些模块的行为仿真模型和门级仿真模型,如 Altera Quartus 里的 220model.v(LPM 模块行为仿真模型)和 apex20ke_atoms.v(20KE 系列门级仿 真模型),为避免在不同的设计目录中多次编译这些模型,应当采用一次编译,多次使用的 方法。具体做法如下(以20KE门级库为例):1:在某个工作目录下新建一库名apex20ke,将apex20ke_atoms.v编译到其中。2:在图形界面中的 Load Design 对话框中装入仿真

12、设计时,在 Verilog 标签下指定预编 译库的完整路径。(见下图)4. 逻辑综合目前可用的 FPGA 综合工具有 Mentor Graphics 的 LeonardoSpectrum,Synplicity 的 Synplify 和 Synopsys 的 FPGA CompilerII/FPGA Express,LeonardoSpectrum 由于性能和速度 最好,成为我们首选的综合器,FPGA CompilerII/FPGA Express由于可以和Design Compiler 代码兼容也可用。见参考94.1 逻辑综合的一些原则HDL代码综合后电路质量的好坏主要取决于三个方面:RTL实

13、现是否合理、对厂家器 件特点的理解和对综合器掌握的程度。参考10中有比较全面的讨论。4.1.1 关于 LeonardoSpectrumLeonardoSpectrum 对综合的控制能力比较强,但使用也略为复杂,故需要在使用前尽量 熟悉其功能,才能取得较好的综合结果。当出现综合结果不能满足约束条件时,不要急于修改设计源文件,应当通过综合器提供 的时序和面积分析命令找出关键所在,然后更改综合控制或修改代码。在 LeonardoSpectrum 2000.1b 以前的版本输出的 .v 网表都不能用于仿真。4.1.1 大规模设计的综合 分块综合 当设计规模很大时,综合也会耗费很多时间。如果设计只更改某

14、个模块时,可以分块综合。如有设计top.v包含a.v和b.v两个模块,当只修改a.v的话,可以先单独综合b.v,输 出其网表b.edf,编写一个b模块的黑盒子接口 b_syn.v,每次修改a.v后只综合top.v、a.v、 b_syn.v,将综合后的网表和b.edf送去布线,可以节约综合b模块的时间。 采用脚本命令 当设计规模比较大时,综合控制也许会比较复杂,可以考虑采用脚本控制文件的方式进行综合控制, modelsim、 LeonardoSpectrum 和 Quartus 都支持 TCL(Tool Command Language) 语言,采用脚本控制可以提供比图形界面更灵活和更方便的控制

15、手段。4.1.3 必须重视工具产生的警告信息综合工具对设计进行处理可能会产生各种警告信息,有些是可以忽略的,但设计者应该 尽量去除,不去除必须确认每条警告的含义,避免因此使设计的实现产生隐患。这个原则对仿真和布局布线同样适用。4.2调用模块的黑盒子(Black box)方法使用黑盒子方法的原因主要有两点:一是HDL代码中调用了一些FPGA厂家提供的模块(如Altera的LPM模块)或第三 方提供的IP,这些模块不需要综合,而且有些综合器也不能综合(如FPGA CompilerII/FPGA Express可以综合包含LPM的代码而LeonardoSpectrum不能)。因此须提供一个黑盒子接口 给综合器,所调用的模块到布局布线时才进行连接。二是方便

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

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

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