分享
分销 收藏 举报 申诉 / 12
播放页_导航下方通栏广告

类型华为fpga设计规范(VerilogHdl).doc

  • 上传人:天****
  • 文档编号:11116506
  • 上传时间:2025-07-02
  • 格式:DOC
  • 页数:12
  • 大小:47.66KB
  • 下载积分:8 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    华为 fpga 设计规范 VerilogHdl
    资源描述:
    FPGA设计流程指南 前言 本部门所承担的FPGA设计任务主要是两方面的作用:系统的原型实现和ASIC的原型验证。编写本流程的目的是: l 在于规范整个设计流程,实现开发的合理性、一致性、高效性。 l 形成风格良好和完整的文档。 l 实现在FPGA不同厂家之间以及从FPGA到ASIC的顺利移植。 l 便于新员工快速掌握本部门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)前仿真 FPGA厂家工具 (6)布局布线 (8)静态时序分析 逻辑仿真器 (7)后仿真 (9)在系统测试 说明: l 逻辑仿真器主要指modelsim,Verilog-XL等。 l 逻辑综合器主要指LeonardoSpectrum、Synplify、FPGA Express/FPGA Compiler等。 l FPGA厂家工具指的是如Altera的Max+PlusII、QuartusII,Xilinx的Foundation、Alliance、ISE4.1等。 1.2 关键步骤的实现 1.2.1 功能仿真 RTL代码 调用模块的 行为仿真模型 测试程序 (test bench) 测试数据 逻辑仿真器 说明: “调用模块的行为仿真模型”指的是RTL代码中引用的由厂家提供的宏模块/IP,如Altera 提供的LPM库中的乘法器、存储器等部件的行为模型。 1.2.2 逻辑综合 设置综合目标和约束条件 调用模块的 黑盒子接口 RTL代码 逻辑综合器 HDL网表 (netlist) EDIF网表 (netlist) 说明: “调用模块的黑盒子接口”的导入,是由于RTL代码调用了一些外部模块,而这些外部模块不能被综合或无需综合,但逻辑综合器需要其接口的定义来检查逻辑并保留这些模块的接口。 1.2.3 前仿真 逻辑综合器 调用模块的 行为仿真模型 测试数据 测试程序 (test bench) HDL网表 (netlist) 逻辑仿真器 说明: 一般来说,对FPGA设计这一步可以跳过不做,但可用于debug综合有无问题。 1.2.4 布局布线 逻辑综合器 设置布局布线约束条件 FPGA厂家工具 EDIF网表 (netlist) 调用模块的 综合模型 SDF文件 (标准延时格式) HDL网表 (netlist) 下载/编程文件 1.2.5 后仿真(时序仿真) 测试数据 SDF文件 (标准延时格式) FPGA基本单元仿真模型 测试程序 (test bench) FPGA厂家工具 HDL网表 (netlist) 逻辑仿真器 2. Verilog HDL设计 基于将来设计转向ASIC的方便,本部门的设计统一采用Verilog HDL,但针对混合设计和混合仿真的趋势,所有开发人员也应能读懂VHDL。 Verilog HDL的学习可参考[1][2]。 2.1 编程风格(Coding Style)要求 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 <= ~a & c; 2.1.6 对齐和缩进 (1) 不要使用连续的空格来进行语句的对齐。 (2) 采用制表符Tab对语句对齐和缩进,Tab键采用4个字符宽度,可在编辑器中设置。 (3) 各种嵌套语句尤其是if...else语句,必须严格的逐层缩进对齐。 2.1.7 注释 必须加入详细、清晰的注释行以增强代码的可读性和可移植性,注释内容占代码篇幅不应少于30%。 2.1.8 参考C语言的资料 要形成良好的编程风格,有许多细节需要注意,可以参考资料[4],虽然它是针对C语言的讨论,但由于Verilog HDL和C语言的形式非常近似,所以里面提到的很多原则都是可以借鉴的。 2.1.9 可视化设计方法 为提高设计效率和适应协同设计的方式,可采用可视化的设计方法,Mentor Grahpics的Renoir软件提供了非常好的设计模式。 2.2 可综合设计 用HDL实现电路,设计人员对可综合风格的RTL描述的掌握不仅会影响到仿真和综合的一致性,也是逻辑综合后电路可靠性和质量好坏最主要的因素,对此应当予以充分的重视。 学习可综合的HDL请参考 [5][6] [7]。 学习设计的模块划分请参考[8]。 2.3 设计目录 采用合理、条理清晰的设计目录结构有助于提高设计的效率、可维护性。建议采用类似下面的目录结构: (1) design src (源代码) syn (综合) sim (仿真) par (布局布线) (2) design ver1 ver2 src (源代码) syn (综合) sim (仿真) par (布局布线) src (源代码) syn (综合) sim (仿真) par (布局布线) 3. 逻辑仿真 考虑到性能和易用性,首选的逻辑仿真器是Mentor Graphics的modelsim。 3.1 测试程序(test bench) 测试程序对于设计功能和时序的验证有着举足轻重的影响,测试激励的完备性和真实性是关键所在,有以下原则须遵循: (1) 测试激励输入和响应输出采集的时序应当兼顾功能仿真(无延时)和时序仿真(有延时)的情况。 (2) 对于周期较多的测试,为提高效率,尽可能采用程序语句来判断响应与标准结果是否一致,给出成功或出错标志,而不是通过观察波形来判断。 (3) 采用基于文件的测试是很好的办法,即由matlab或spw等系统工具产生测试数据,测试程序将其读入产生激励,再把响应结果写入到文件,再交给上述工具进行处理或分析。 (4) 仿真器支持几乎所有的Verilog HDL语法,而不仅仅是常用的RTL的描述,应当利用这一点使测试程序尽可能简洁、清楚,篇幅长的要尽量采用task来描述。 3.2 使用预编译库 在进行功能仿真和后仿真时都需要某些模块的行为仿真模型和门级仿真模型,如Altera Quartus里的220model.v(LPM模块行为仿真模型)和apex20ke_atoms.v(20KE系列门级仿真模型),为避免在不同的设计目录中多次编译这些模型,应当采用一次编译,多次使用的方法。具体做法如下(以20KE门级库为例): 1:在某个工作目录下新建一库名 apex20ke,将apex20ke_atoms.v编译到其中。 2:在图形界面中的Load Design对话框中装入仿真设计时,在Verilog 标签下指定预编译库的完整路径。(见下图) 4. 逻辑综合 目前可用的FPGA综合工具有Mentor Graphics 的 LeonardoSpectrum,Synplicity的Synplify和Synopsys 的FPGA CompilerII/FPGA Express,LeonardoSpectrum由于性能和速度最好,成为我们首选的综合器,FPGA CompilerII/FPGA Express由于可以和Design Compiler代码兼容也可用。见参考[9] 4.1 逻辑综合的一些原则 HDL代码综合后电路质量的好坏主要取决于三个方面:RTL实现是否合理、对厂家器件特点的理解和对综合器掌握的程度。参考[10]中有比较全面的讨论。 4.1.1 关于LeonardoSpectrum LeonardoSpectrum对综合的控制能力比较强,但使用也略为复杂,故需要在使用前尽量熟悉其功能,才能取得较好的综合结果。 当出现综合结果不能满足约束条件时,不要急于修改设计源文件,应当通过综合器提供的时序和面积分析命令找出关键所在,然后更改综合控制或修改代码。 在LeonardoSpectrum 2000.1b以前的版本输出的 .v 网表都不能用于仿真。 4.1.1 大规模设计的综合 l 分块综合 当设计规模很大时,综合也会耗费很多时间。如果设计只更改某个模块时,可以分块综合。如有设计 top.v 包含 a.v和b.v两个模块,当只修改a.v的话,可以先单独综合b.v,输出其网表b.edf,编写一个b模块的黑盒子接口b_syn.v,每次修改a.v后只综合top.v、a.v、b_syn.v,将综合后的网表和b.edf送去布线,可以节约综合b模块的时间。 l 采用脚本命令 当设计规模比较大时,综合控制也许会比较复杂,可以考虑采用脚本控制文件的方式进行综合控制,modelsim、LeonardoSpectrum和Quartus都支持TCL(Tool Command Language)语言,采用脚本控制可以提供比图形界面更灵活和更方便的控制手段。 4.1.3 必须重视工具产生的警告信息 综合工具对设计进行处理可能会产生各种警告信息,有些是可以忽略的,但设计者应该尽量去除,不去除必须确认每条警告的含义,避免因此使设计的实现产生隐患。 这个原则对仿真和布局布线同样适用。 4.2 调用模块的黑盒子(Black box)方法 使用黑盒子方法的原因主要有两点: 一是HDL代码中调用了一些FPGA厂家提供的模块(如Altera的LPM模块)或第三方提供的IP,这些模块不需要综合,而且有些综合器也不能综合(如FPGA CompilerII/FPGA Express可以综合包含LPM的代码而LeonardoSpectrum不能)。因此须提供一个黑盒子接口给综合器,所调用的模块到布局布线时才进行连接。 二是方便代码的移植,由于厂家提供的模块或第三方提供的IP通常都是与工艺有关的,直接在代码中调用的话将不利于修改,影响代码移植。 下面以调用Altera的LPM库中的乘法器为例来说明。调用这样一个模块需要这样一个文件:mult8x8.v(可由Quartus的MegaWizer Plug-in Manager产生),代码如下: // mult8x8.v module mult8x8 (dataa, datab, result); input [7:0] dataa; input [7:0] datab; output [15:0] result; // exemplar translate_off // synopsys translate_off lpm_mult lpm_mult_component( .dataa (dataa), .datab (datab), .aclr (1'b0), .clock (1'b0), .clken (1'b0), .sum (1'b0), .result (result) ); defparam lpm_mult_component.lpm_widtha = 8, lpm_mult_component.lpm_widthb = 8, lpm_mult_component.lpm_widths = 16, lpm_mult_component.lpm_widthp = 16, lpm_mult_component.lpm_representation = "SIGNED", // exemplar translate_on // synopsys translate_on endmodule 注意上述的代码有两对编译指示: // exemplar translate_off 和 // exemplar translate_on (LeonardoSpectrum支持) // synopsys translate_off 和 // synopsys translate_on(LeonardoSpectrum和FPGA CompilerII都支持) 对于相应的综合器,在这些编译指示中间的语句将会被忽略,那我们可以看到在综合过程中模块mult8x8实际变成了一个只有I/O定义的空盒子(即black box),所以该部分的代码没有连接,在Quartus布局布线的时候,lpm模块的代码才连接到整个设计,在仿真的时候,编译指示不影响模块的完整性。 参考 [1]:台湾清华Verilog HDL教程 [2]:Verilog HDL硬件描述语言 [3]:文件头注释块示例 [4]:C语言的风格 [5]:Verilog HDL Reference manual [6]:Actel HDL coding style guide [7]:LeonardoSpectrum HDL Synthesis [8]:ASIC Design Partitioning [9]:三种FPGA综合工具的比较 [10]: FPGA Synthesis Training Course 修订纪录 V2.0 (何辉,2001-8-1) 修改了4.2节(黑盒子方法)的描述 V1.0 (何辉,2001-3) 第一个版本 10
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:华为fpga设计规范(VerilogHdl).doc
    链接地址:https://www.zixin.com.cn/doc/11116506.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork