FPGA 设计流程指南
前言
本部门所承担的 FPGA 设计任务主要是两方面的作用:系统的原型实现和 ASIC 的原型
验证。编写本流程的目的是:
在于规范整个设计流程,实现开发的合理性、一致性、高效性。
形成风格良好和完整的文档。
实现在 FPGA 不同厂家之间以及从 FPGA 到 ASIC 的顺利移植。
便于新员工快速掌握本部门 FPGA 的设计流程。
由于目前所用到的 FPGA 器件以 Altera 的为主,所以下面的例子也以 Altera 为例,工
具组合为 modelsim + LeonardoSpectrum/FPGACompilerII + Quartus,但原则和方法对于其他
厂家和工具也是基本适用的。
目 录
1. 基于 HDL 的 FPGA 设计流程概述 ............................................................................................1
1.1 设计流程图.........................................................................................................................1
1.2 关键步骤的实现.................................................................................................................2
1.2.1 功能仿真..................................................................................................................2
1.2.2 逻辑综合..................................................................................................................2
1.2.3 前仿真......................................................................................................................3
1.2.4 布局布线..................................................................................................................3
1.2.5 后仿真(时序仿真)..............................................................................................4
2. Verilog HDL 设计 .........................................................................................................................4
2.1 编程风格(Coding Style)要求........................................................................................4
2.1.1 文件..........................................................................................................................4
2.1.2 大小写......................................................................................................................5
2.1.3 标识符......................................................................................................................5
2.1.4 参数化设计..............................................................................................................5
2.1.5 空行和空格..............................................................................................................5
2.1.6 对齐和缩进..............................................................................................................5
2.1.7 注释..........................................................................................................................5
2.1.8 参考 C 语言的资料.................................................................................................5
2.1.9 可视化设计方法......................................................................................................6
2.2 可综合设计.........................................................................................................................6
2.3 设计目录.............................................................................................................................6
3. 逻辑仿真.......................................................................................................................................6
3.1 测试程序(test bench) ....................................................................................................7
3.2 使用预编译库.....................................................................................................................7
4. 逻辑综合.......................................................................................................................................8
4.1 逻辑综合的一些原则.........................................................................................................8
4.1.1 关于 LeonardoSpectrum..........................................................................................8
4.1.1 大规模设计的综合..................................................................................................8
4.1.3 必须重视工具产生的警告信息..............................................................................8
4.2 调用模块的黑盒子(Black box)方法 ............................................................................8
参考..................................................................................................................................................10
修订纪录..........................................................................................................................................10
1
1. 基于 HDL 的 FPGA 设计流程概述
1.1 设计流程图
说明:
逻辑仿真器主要指 modelsim,Verilog-XL 等。
逻辑综合器主要指 LeonardoSpectrum、Synplify、FPGA Express/FPGA Compiler 等。
FPGA 厂家工具指的是如 Altera 的 Max+PlusII、QuartusII,Xilinx 的 Foundation、
Alliance、ISE4.1 等。
(1)设计定义
(2)HDL 实现
(3)功能仿真
(4)逻辑综合
(5)前仿真
(6)布局布线
(7)后仿真
(9)在系统测试
逻辑仿真器
逻辑综合器
FPGA 厂家工具
逻辑仿真器
逻辑仿真器
(8)静态时序分析
2
1.2 关键步骤的实现
1.2.1 功能仿真
说明:
“调用模块的行为仿真模型”指的是 RTL 代码中引用的由厂家提供的宏模块/IP,如
Altera 提供的 LPM 库中的乘法器、存储器等部件的行为模型。
1.2.2 逻辑综合
说明:
“调用模块的黑盒子接口”的导入,是由于 RTL 代码调用了一些外部模块,而这些外
部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块
的接口。
RTL 代码
逻辑仿真器
RTL 代码
逻辑综合器
调用模块的
行为仿真模型
测试数据
调用模块的
黑盒子接口
设置综合目标
和约束条件
EDIF 网表
(netlist)
HDL 网表
(netlist)
测试程序
(test bench)
评论3