华为FPGA设计流程指南

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

FPGA设计流程指南前言本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是:在于规范整个设计流程,实现开发的合理性、一致性、高效性。形成风格良好和完整的文档。实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。便于新员工快速掌握本部门FPGA的设计流程。由于目前所用到的FPGA器件以Altera的为主,所以下面的例子也以Altera为例,工具组合为modelsim+LeonardoSpectrum/FPGACompilerII+Quartus,但原则和方法对于其他厂家和工具也是基本适用的。目录1.基于HDL的FPGA设计流程概述............................................11.1设计流程图...........................................................................11.2关键步骤的实现...................................................................31.2.1功能仿真.......................................................................31.2.2逻辑综合.......................................................................31.2.3前仿真...........................................................................41.2.4布局布线.......................................................................51.2.5后仿真(时序仿真)...................................................62.VerilogHDL设计..........................................................................72.1编程风格(CodingStyle)要求..........................................72.1.1文件...............................................................................72.1.2大小写...........................................................................82.1.3标识符...........................................................................82.1.4参数化设计...................................................................92.1.5空行和空格...................................................................92.1.6对齐和缩进...................................................................92.1.7注释.............................................................................102.1.8参考C语言的资料....................................................102.1.9可视化设计方法.........................................................102.2可综合设计.........................................................................102.3设计目录....................................................................................103.逻辑仿真.....................................................................................123.1测试程序(testbench).....................................................123.2使用预编译库.....................................................................124.逻辑综合.....................................................................................144.1逻辑综合的一些原则.........................................................144.1.1关于LeonardoSpectrum.............................................144.1.1大规模设计的综合.....................................................154.1.3必须重视工具产生的警告信息.................................154.2调用模块的黑盒子(Blackbox)方法.............................15参考.....................................................................错误!未定义书签。修订纪录.............................................................错误!未定义书签。11.基于HDL的FPGA设计流程概述1.1设计流程图(1)设计定义(2)HDL实现(3)功能仿真(4)逻辑综合(5)前仿真逻辑仿真器逻辑综合器逻辑仿真器2说明:逻辑仿真器主要指modelsim,Verilog-XL等。逻辑综合器主要指LeonardoSpectrum、Synplify、FPGAExpress/FPGACompiler等。FPGA厂家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation、Alliance、ISE4.1等。(6)布局布线(7)后仿真(9)在系统测试FPGA厂家工具逻辑仿真器(8)静态时序分析31.2关键步骤的实现1.2.1功能仿真说明:“调用模块的行为仿真模型”指的是RTL代码中引用的由厂家提供的宏模块/IP,如Altera提供的LPM库中的乘法器、存储器等部件的行为模型。1.2.2逻辑综合RTL代码逻辑仿真器RTL代码调用模块的行为仿真模型测试数据调用模块的黑盒子接口设置综合目标和约束条件测试程序(testbench)4说明:“调用模块的黑盒子接口”的导入,是由于RTL代码调用了一些外部模块,而这些外部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块的接口。1.2.3前仿真逻辑综合器EDIF网表(netlist)HDL网表(netlist)5说明:一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题。1.2.4布局布线逻辑综合器HDL网表(netlist)逻辑仿真器测试数据调用模块的行为仿真模型测试程序(testbench)逻辑综合器EDIF网表(netlist)FPGA厂家工具调用模块的综合模型设置布局布线约束条件61.2.5后仿真(时序仿真)HDL网表(netlist)SDF文件(标准延时格式)测试数据下载/编程文件72.VerilogHDL设计基于将来设计转向ASIC的方便,本部门的设计统一采用VerilogHDL,但针对混合设计和混合仿真的趋势,所有开发人员也应能读懂VHDL。VerilogHDL的学习可参考[1][2]。2.1编程风格(CodingStyle)要求2.1.1文件(1)每个模块(module)一般应存在于单独的源文件中,FPGA厂家工具HDL网表(netlist)SDF文件(标准延时格式)逻辑仿真器FPGA基本单元仿真模型测试程序(testbench)8通常源文件名与所包含模块名相同。(2)每个设计文件开头应包含如下注释内容:年份及公司名称。作者。文件名。所属项目。顶层模块。模块名称及其描述。修改纪录。请参考标准示例程序[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’等。92.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对语句对齐和缩进,Tab键采用4个字符宽度,可在编辑器中设置。(3)各种嵌套语句尤其是if...else语句,必须严格的逐层缩进对齐。102.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设计目录采用合理、条理清晰的设计目录结构有助于提高设计的效率、11可维护性。建议采用类似下面的目录结构:(1)(2)designsrc(源代码)syn(综合)sim(仿真)par(布局布线)designver1ver2src(源代码)syn(综合)sim(仿真)par(布局布线)src(源代码)syn(综合)sim(仿真)

1 / 21
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功