华为FPGA设计规范_精品文档Word格式.doc
- 文档编号:14120623
- 上传时间:2022-10-18
- 格式:DOC
- 页数:12
- 大小:131.50KB
华为FPGA设计规范_精品文档Word格式.doc
《华为FPGA设计规范_精品文档Word格式.doc》由会员分享,可在线阅读,更多相关《华为FPGA设计规范_精品文档Word格式.doc(12页珍藏版)》请在冰豆网上搜索。
1.2.5后仿真(时序仿真) 4
2.VerilogHDL设计 4
2.1编程风格(CodingStyle)要求 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测试程序(testbench) 7
3.2使用预编译库 7
4.逻辑综合 8
4.1逻辑综合的一些原则 8
4.1.1关于LeonardoSpectrum 8
4.1.1大规模设计的综合 8
4.1.3必须重视工具产生的警告信息 8
4.2调用模块的黑盒子(Blackbox)方法 8
参考 10
修订纪录 10
1.基于HDL的FPGA设计流程概述
1.1设计流程图
(1)设计定义
(2)HDL实现
逻辑仿真器
(3)功能仿真
逻辑综合器
(4)逻辑综合
(5)前仿真
FPGA厂家工具
(6)布局布线
(8)静态时序分析
(7)后仿真
(9)在系统测试
说明:
l逻辑仿真器主要指modelsim,Verilog-XL等。
l逻辑综合器主要指LeonardoSpectrum、Synplify、FPGAExpress/FPGACompiler等。
lFPGA厂家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation、Alliance、ISE4.1等。
1.2关键步骤的实现
1.2.1功能仿真
RTL代码
调用模块的
行为仿真模型
测试程序
(testbench)
测试数据
“调用模块的行为仿真模型”指的是RTL代码中引用的由厂家提供的宏模块/IP,如Altera提供的LPM库中的乘法器、存储器等部件的行为模型。
1.2.2逻辑综合
设置综合目标和约束条件
黑盒子接口
HDL网表
(netlist)
EDIF网表
“调用模块的黑盒子接口”的导入,是由于RTL代码调用了一些外部模块,而这些外部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块的接口。
1.2.3前仿真
一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题。
1.2.4布局布线
设置布局布线约束条件
综合模型
SDF文件
(标准延时格式)
下载/编程文件
1.2.5后仿真(时序仿真)
FPGA基本单元仿真模型
2.VerilogHDL设计
基于将来设计转向ASIC的方便,本部门的设计统一采用VerilogHDL,但针对混合设计和混合仿真的趋势,所有开发人员也应能读懂VHDL。
VerilogHDL的学习可参考[1][2]。
2.1编程风格(CodingStyle)要求
2.1.1文件
(1)每个模块(module)一般应存在于单独的源文件中,通常源文件名与所包含模块名相同。
(2)每个设计文件开头应包含如下注释内容:
l年份及公司名称。
l作者。
l文件名。
l所属项目。
l顶层模块。
l模块名称及其描述。
l修改纪录。
请参考标准示例程序[3]。
2.1.2大小写
(1)如无特别需要,模块名和信号名一律采用小写字母。
(2)为醒目起见,常数(`define定义)/参数(parameter定义)采用大写字母。
2.1.3标识符
(1)标识符采用传统C语言的命名方法,即在单词之间以“_”分开,如:
max_delay、data_size等等。
(2)采用有意义的、能反映对象特征、作用和性质的单词命名标识符,以增强程序的可读性。
(3)为避免标识符过于冗长,对较长单词的应当采用适当的缩写形式,如用‘buff’代替‘buffer’,‘ena’代替‘enable’,‘addr’代替‘address’等。
2.1.4参数化设计
为了源代码的可读性和可移植性起见,不要在程序中直接写特定数值,尽可能采用`define语句或paramater语句定义常数或参数。
2.1.5空行和空格
(1)适当地在代码的不同部分中插入空行,避免因程序拥挤不利阅读。
(2)在表达式中插入空格,避免代码拥挤,包括:
赋值符号两边要有空格;
双目运算符两边要有空格;
单目运算符和操作数之间可没有空格,
示例如下:
a<
=b;
c<
=a+b;
if(a==b)then...
=~a&
c;
2.1.6对齐和缩进
(1)不要使用连续的空格来进行语句的对齐。
(2)采用制表符Tab对语句对齐和缩进,Tab键采用4个字符宽度,可在编辑器中设置。
(3)各种嵌套语句尤其是if...else语句,必须严格的逐层缩进对齐。
2.1.7注释
必须加入详细、清晰的注释行以增强代码的可读性和可移植性,注释内容占代码篇幅不应少于30%。
2.1.8参考C语言的资料
要形成良好的编程风格,有许多细节需要注意,可以参考资料[4],虽然它是针对C语言的讨论,但由于VerilogHDL和C语言的形式非常近似,所以里面提到的很多原则都是可以借鉴的。
2.1.9可视化设计方法
为提高设计效率和适应协同设计的方式,可采用可视化的设计方法,MentorGrahpics的Renoir软件提供了非常好的设计模式。
2.2可综合设计
用HDL实现电路,设计人员对可综合风格的RTL描述的掌握不仅会影响到仿真和综合的一致性,也是逻辑综合后电路可靠性和质量好坏最主要的因素,对此应当予以充分的重视。
学习可综合的HDL请参考[5][6][7]。
学习设计的模块划分请参考[8]。
2.3设计目录
采用合理、条理清晰的设计目录结构有助于提高设计的效率、可维护性。
建议采用类似下面的目录结构:
(1)
design
src
(源代码)
syn
(综合)
sim
(仿真)
par
(布局布线)
(2)
ver1
ver2
3.逻辑仿真
考虑到性能和易用性,首选的逻辑仿真器是MentorGraphics的modelsim。
3.1测试程序(testbench)
测试程序对于设计功能和时序的验证有着举足轻重的影响,测试激励的完备性和真实性是关键所在,有以下原则须遵循:
(1)测试激励输入和响应输出采集的时序应当兼顾功能仿真(无延时)和时序仿真(有延时)的情况。
(2)对于周期较多的测试,为提高效率,尽可能采用程序语句来判断响应与标准结果是否一致,给出成功或出错标志,而不是通过观察波形来判断。
(3)采用基于文件的测试是很好的办法,即由matlab或spw等系统工具产生测试数据,测试程序将其读入产生激励,再把响应结果写入到文件,再交给上述工具进行处理或分析。
(4)仿真器支持几乎所有的VerilogHDL语法,而不仅仅是常用的RTL的描述,应当利用这一点使测试程序尽可能简洁、清楚,篇幅长的要尽量采用task来描述。
3.2使用预编译库
在进行功能仿真和后仿真时都需要某些模块的行为仿真模型和门级仿真模型,如AlteraQuartus里的220model.v(LPM模块行为仿真模型)和apex20ke_atoms.v(20KE系列门级仿真模型),为避免在不同的设计目录中多次编译这些模型,应当采用一次编译,多次使用的方法。
具体做法如下(以20KE门级库为例):
1:
在某个工作目录下新建一库名apex20ke,将apex20ke_atoms.v编译到其中。
2:
在图形界面中的LoadDesign对话框中装入仿真设计时,在Verilog标签下指定预编译库的完整路径。
(见下图)
4.逻辑综合
目前可用的FPGA综合工具有MentorGraphics的LeonardoSpectrum,Synplicity的Synplify和Synopsys的FPGACompilerII/FPGAExpress,LeonardoSpectrum由于性能和速度最好,成为我们首选的综合器,FPGACompilerII/FPGAExpress由于可以和DesignCompiler代码兼容也可用。
见参考[9]
4.1逻辑综合的一些原则
HDL代码综合后电路质量的好坏主要取决于三个方面:
RTL实现是否合理、对厂家器件特点的理解和对综合器掌握的程度。
参考[10]中有比较全面的讨论。
4.1.1关于LeonardoSpectrum
LeonardoSpectrum对综合的控制能力比较强,但使用也略为复杂,故需要在使用前尽量熟悉其功能,才能取得较好的综合结果。
当出现综合结果不能满足约束条件时,不要急于修改设计源文件,应当通过综合器提供的时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华为 FPGA 设计规范 精品 文档
![提示](https://static.bdocx.com/images/bang_tan.gif)