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