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. 基于HDL的FPGA设计流程概述
1.1 设计流程图
(1)设计定义 (2)HDL实现 (3)功能仿真 逻辑仿真器 (4)逻辑综合 逻辑综合器 (5)前仿真 逻辑仿真器 (6)布局布线 FPGA厂家工具 (8)静态时序分析 (7)后仿真 逻辑仿真器 (9)在系统测试
说明:
? 逻辑仿真器主要指modelsim,Verilog-XL等。
? 逻辑综合器主要指LeonardoSpectrum、Synplify、FPGA Express/FPGA Compiler等。 ? FPGA厂家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation、
Alliance、ISE4.1等。
1
1.2 关键步骤的实现
1.2.1 功能仿真
RTL代码 调用模块的 测试程序 测试数据
行为仿真模型 (test bench)
逻辑仿真器
说明: “调用模块的行为仿真模型”指的是RTL代码中引用的由厂家提供的宏模块/IP,如Altera 提供的LPM库中的乘法器、存储器等部件的行为模型。
1.2.2 逻辑综合
设置综合目标RTL代码 调用模块的
和约束条件 黑盒子接口
逻辑综合器
EDIF网表 HDL网表
(netlist) (netlist)
说明:
“调用模块的黑盒子接口”的导入,是由于RTL代码调用了一些外部模块,而这些外部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块的接口。
2
1.2.3 前仿真
逻辑综合器
HDL网表 调用模块的 测试程序 测试数据
(netlist) 行为仿真模型 (test bench) 逻辑仿真器
说明: 一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题。
1.2.4 布局布线
逻辑综合器 EDIF网表 (netlist) 调用模块的 综合模型 设置布局布线约束条件 FPGA厂家工具 下载/编程文件 HDL网表 (netlist) SDF文件 (标准延时格式) 3
(完整版)华为fpga设计规范(VerilogHdl)



