Verilog+HDL+代码风格规范

合集下载

2024版Verilog编程规范(华为)

2024版Verilog编程规范(华为)
自动化测试实现
实现自动化测试流程,提高测试 效率和准确性。
06
代码审查与质量保证
代码审查流程介绍
提交代码
开发人员将代码提交到代码审查 系统中。
分配审查任务
系统或审查组长将审查任务分配 给审查人员。
代码审查
审查人员对代码进行逐行审查, 检查是否符合编程规范和质量要
求。
审查通过
经过多轮反馈和整改后,代码符 合要求,审查通过。
通过定期的培训、分享和宣传活动,提高开 发人员对Verilog编程规范的认识和重视程度。
引入自动化检查工具
建立持续改进机制
研究和引入自动化检查工具,对Verilog代码 进行静态分析和规范检查,进一步提高代码 质量和开发效率。
建立规范的持续改进机制,收集开发人员的 反馈和建议,及时调整和优化规范内容。
可重用性原则
模块应具有高内聚、低耦 合的特点,便于在不同项 目中重用。
可维护性原则
模块应易于理解、测试和 修改,以降低维护成本。
顶层结构设计方法
自顶向下设计
从系统整体需求出发,逐 步细化到各个模块的设计 和实现。
模块化设计
将系统划分为多个独立的 模块,每个模块承担一定 的功能,便于并行开发和 维护。
减少错误和提高代码质量
02
规范的编程习惯有助于减少编码过程中的错误,提高代码的稳
定性和可靠性。
促进知识共享和传承
03
统一的编程规范有利于知识的积累和传承,降低新人学习成本,
提高团队整体技术水平。
适用范围及对象
适用范围
本规范适用于使用Verilog语言进 行硬件描述和设计的所有场景,包 括但不限于数字电路设计、验证、 仿真等。
端口名应避免与模块内部变量名冲突。

VerilogHDL程序编写规范2

VerilogHDL程序编写规范2

文档控制表
文档
编辑工具 作者情况
标题: 版本号: 发行号:
实行日期: 关键词
名称 模板:
原作者: 协作者: 校对: 审核:
表1 文档控制表VeFra bibliotekilogHDL程序编写规范 V1.0
2008年6月1日
Microsoft® Office Word 2003
刘兆庆 罗杰俊
I
哈尔滨工业大学自动化测试与控制研究所技术规范
4 可综合性编码规范........................................................................................................................18 4.1 寄存器描述.........................................................................................................................18 4.2 避免产生锁存器.................................................................................................................18 4.3 避免产生组合电路反馈。................................................................................................ 19 4.4 完整的敏感量列表.............................................................................................................20 4.5 阻塞和非阻塞赋值.............................................................................................................21 4.6 case 语句和 if-else 语句.....................................................................................................23 4.7 时序逻辑电路的描述.........................................................................................................24 4.8 对关键信号的描述.............................................................................................................25 4.9 避免使用延时语句.............................................................................................................25

VerilogHDL编码规范

VerilogHDL编码规范

VerilogHDL编码规范1 目的为了FPGA、芯片IP核开发设计和验证人员之间更好地进行交流,提高代码的可读性,可维护性,特制定本规范,作为程序编写的指导文件。

本规范包括强制性规范和推荐性规范。

2 适用范围FPGA、芯片IP核逻辑设计和仿真验证。

编程语言采用Verilog语言。

3 相关规定1.本规范内容为逻辑设计岗位、仿真验证岗位员工必备基础知识,新员工入职时必须通过参加相关培训掌握本规范。

2.本规范的掌握、执行情况是新员工转正考核的重要内容。

在新员工见习阶段,其内部导师每月须抽查代码并将审核结果填入代码审查表。

3.项目经理应不定期抽查项目成员的代码,并将编程规范执行情况填入代码审查表作为项目成员考核依据。

4.本规范为内部职称晋升考试内容。

1目录1. 严格级别定义 (4)2. 工程规则 (5)2.1. 工程规则表 (5)2.2. 工程规则详细说明 (5)3. 命名规则 (6)3.1. 命名规则表 (6)3.2. 命名规则详细说明 (6)4. 文件头规则 (10)4.1. 文件头规则表 (10)4.2. 文件头示例 (10)4.3. 结构头示例 (12)5. 注释规则 (14)5.1. 注释规则表 (14)5.2. 注释规则详细说明 (14)6. 编码规则 (16)6.1. 编码规则表 (16)6.2. 编码规则详细说明 (16)7. 综合规则 (23)7.1. 综合规则表 (23)7.2. 综合规则详细说明 (23)8. 静态时序分析规则 (27)8.1. 静态时序分析规则表 (27)8.2. 静态时序分析规则详细说明 (27)9. 仿真规则 (31)9.1. 仿真规则表 (31)9.2. 仿真规则详细说明 (31)10. 设计风格规则 (34)210.1. 设计风格规则表 (34)10.2. 设计风格规则详细说明 (34)11. 重用化设计 (38)11.1. 层次设计和模块划分 (38)11.2. 参数化 (40)12. 常用缩写表 (42)31.严格级别定义⏹Mandatory 1(M1)——必须遵守。

关于VerilogHDL编写规则的说明

关于VerilogHDL编写规则的说明

关于V erilogHDL编写规则的说明摘自“Comprehensive SRS V3 Standards—Semiconductor Reuse Standard”7 V erilog HDL 编码7.1 前言V erilog HDL编码标准属于虚拟部件生成一部分,用于对编码中的命名习惯、代码文档和代码格式风格的说明。

对相应规则的遵从能够简化重用,并从代码中抽象出其精华,使得代码可读性增强且兼容大多数工具。

除特别声明,任何与标准不一致的地方必须纠正而且以文档说明。

该标准确保在各种应用中代码的高度适应性,以此提升了重用性。

本文档的目的就是确保门级实现与标准的V erilog仿真器一致。

分割会影响针对应用的适应性。

建模实践小节处理在综合环境中很难描述清楚而又必须确保前后综合的一致性结构。

该标准可应用于行为和综合代码。

而且,还可以应用于其它的V erilog代码中如测试台、监视器等。

某些标准明确说明其应用代码的类型,如有例外会标出。

所描述的规则肯定是在快速Soc设计、集成、生产及维护过程中必须的要求项。

注意到在许多情况下,简单的介绍也能适应要求,但是,介绍会带来大量的例外、工具限制或一些深度的使用习惯,而这些与规则相悖。

7.1.1可交付的列表在第2部分VC块可交付列表已经定义了IP库形式。

包括:可综合的RTL源代码(L1)测试台(V1)驱动(V2)监视器(V3)详细行为建模(V4)短小模型(V6)形式模型验证(V12)7.2参考信息7.2.1参考文档略7.2.2术语基地址:偏移量相对的地址HDL:硬件描述语言屏蔽拴:物理上,屏蔽拴指一条连接到VDD或VSS,或者二个输入的选择输出线,用于对模块的配置而不会影响模块内部。

该设置能够在更改配置时避免重综合。

PLL:锁相环RTL:文本宏顶层模块:在VC设计层次中最高模块。

UDP:用户定义原语7.3命名规则7.3.1文件命名R7.3.1 一个文件一个模块一个文件最多可以有一个模块。

硬件描述语言篇Verilog HDL代码规范

硬件描述语言篇Verilog HDL代码规范

手把手教你学习FPGA系列教程硬件描述语言篇之Verilog HDL代码规范1.代码规范目的本规范的目的是提高书写代码的可读性、可修改性、可重用性,优化代码综合和仿真的结果,指导设计工程师使用VerilogHDL规范代码和优化电路,规范可编程技术的VerilogHDL设计输入,从而做到:1.逻辑功能正确,2.提高整洁度,3.便于跟踪、分析、调试,4.增强可读性,帮助阅读者理解,5.便于程序维护,6. 便于整理文档,7. 便于交流合作。

2.代码规范范围本规范涉及Verilog HDL编码风格,编码中应注意的问题,Testbench的编码等。

本规范适用于Verilog model的任何一级(RTL,behavioral, gate_level),也适用于出于仿真、综合或二者结合的目的而设计的模块。

3.代码规范内容3.1标准的文件头在每一个版块的开头一定要使用统一的文件头,其中包括作者名,模块名,创建日期,所属项目,概要,更改记录,版权等必要信息。

3.2标准的module 格式(1)module例化名用xx_u标示(多次例化用次序号0,1,2…)。

(2)建议每个模块加timescale。

(3)不要书写空的模块,即一个模块至少要有一个输入一个输出。

(4)为了保持代码的清晰、美观和层次感,一条语句占用一行,每行限制在80个字符以内,如果较长则要换行。

(5)采用基于名字(name_based)的调用而非基于顺序的(order_based)的调用。

(6)模块的接口信号按输入、双向、输出顺序定义。

(7)使用降序定义向量有效位顺序,最低位是0。

(8)管脚和信号说明部分,一个管脚和一组总线占用一行,说明清晰。

(9)在顶层模块中,除了内部的互联和module的例化外,避免再做其他逻辑。

(10)为逻辑升级保留的无用端口以及信号要注释。

(11)建议采用层次化设计,模块之间相对独立。

3.3命名规则(1)每个文件只包含一个module,module名要小写,并且与文件名保持一致。

Verilog语言良好的代码编写格式

Verilog语言良好的代码编写格式

Verilog语言良好的代码编写格式Verilog 及VHDL良好的代码编写风格良好代码编写风格可以满足信、达、雅的要求。

在满足功能和性能目标的前提下,增强代码的可读性、可移植性,首要的工作是在项目开发之前为整个设计团队建立一个命名约定和缩略语清单,以文档的形式记录下来,并要求每位设计人员在代码编写过程中都要严格遵守。

良好代码编写风格的通则概括如下:(1)对所有的信号名、变量名和端口名都用小写,这样做是为了和业界的习惯保持一致;对常量名和用户定义的类型用大写;(2)使用有意义的信号名、端口名、函数名和参数名;(3)信号名长度不要太长;(4)对于时钟信号使用clk 作为信号名,如果设计中存在多个时钟,使用clk 作为时钟信号的前缀;(5)对来自同一驱动源的信号在不同的子模块中采用相同的名字,这要求在芯片总体设计时就定义好顶层子模块间连线的名字,端口和连接端口的信号尽可能采用相同的名字;(6)对于低电平有效的信号,应该以一个下划线跟一个小写字母b 或n 表示。

注意在同一个设计中要使用同一个小写字母表示低电平有效;(7)对于复位信号使用rst 作为信号名,如果复位信号是低电平有效,建议使用rst_n;(8)当描述多比特总线时,使用一致的定义顺序,对于verilog 建议采用bus_signal[x:0]的表示;(9)尽量遵循业界已经习惯的一些约定。

如*_r 表示寄存器输出,*_a 表示异步信号,*_pn 表示多周期路径第n 个周期使用的信号,*_nxt 表示锁存前的信号,*_z 表示三态信号等;(10)在源文件、批处理文件的开始应该包含一个文件头、文件头一般包含的内容如下例所示:文件名,作者,模块的实现功能概述和关键特性描述,文件创建和修改的记录,包括修改时间,修改的内容等;(11)使用适当的注释来解释所有的always 进程、函数、端口定义、信号含义、变量含义或信号组、变量组的意义等。

注释应该放在它所注释的代码附近,要求简明扼要,只要足够说明设计意图即可,避免过于复杂;(12)每一行语句独立成行。

Verilog HDL编程规范

Verilog HDL编程规范

注意: 顶层文件名为:“模块名_top(_文件类型)”; 仿真测试的文件名字与被测试的模块名字一致,并且后面加上后缀 “_tb”,即 “模 块名(_top)_tb(_文件类型)”;
3、 每个设计的源文件,其开头部分应包含如下注释内容: 1) 年份及公司名称; 2) 3) 4) 5) 作者; 文件名; 所属项目; 顶层模块;
每行只有一个端口定义或说明,并加注释,注释放在同一行; 例如: module Prescaler ( core_32m_clk, system_clock, div16_clk, div16_clk_b,
reset_b, scan_mode_test ); input core_32m_clk; input system_clk; output div16_; output div16_clk_b; // 32 MHz clock // system clock // input clock divided by 16 // input clock divided by 16 and inverted
6) 模块名称及其描述; 7) 修改纪录; 例如: 文件头部分: (英文) ///////////////////////////////////////////////////////////////// // Copyright (c) 2004 Freescale Semiconductor, Inc. All rights reserved // Freescale Confidential Proprietary // ----------------------------------------------------------------// FILE NAME : // DEPARTMENT : // AUTHOR : // AUTHOR’S EMAIL : //

VerilogHDL代码书写规范

VerilogHDL代码书写规范

Revision History ﹕99-08-01
Revision 1.0 Email ﹕ M@ Company ﹕ swip Technology .Inc
Copyright(c) 1999, swip Technology Inc, All right reserved
\*
y 用连贯的缩写
1
长的名字对书写和记忆会带来不便 甚至带来错误 采用缩写时应注意同一信号在模 块中的一致性 缩写的例子如下
Addr address Pntr pointer Clk clock Rst reset
y 用最右边的字符下划线表示低电平有效 高电平有效的信号不得以下划线表示 短暂
的引擎信号建议采用高有效 如 Rst_ Trdy_, Irdy_ Idsel.
Sun Microsystems Revision 1.0
5 规范内容 5.1 Verilog 编码风格
本章节中提到的Verilog编码规则和建议适应于 Verilog model的任何一级 RTL behavioral, gate_level) 也适用于出于仿真 综合或二者结合的目的而设计的模块
5.1.1 命名的习惯
FSM 有限状态机
伪路径 静态时序分析 STA 认为是时序失败 而设计者认为是正确的路径
4 引用标准和参考资料
下列标准包含的条文 通过在本标准中引用而构成本标准的条文 在标准出版时 所示版本
均为有效 所有标准都会被修订 使用本标准的各方应探讨 使用下列标准最新版本的可能性
Verilog Style and Coding Guidelines Actel HDL Coding Style Guider
Input [199:0] Vector1, Vector2;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

读使能 读
准备好 接收 请求 复位
片段 节 源 统计 定时 转换
临时的 发送 有效
写使能 写操作
b) 模块规范
模块的命名尽量用英文表达出其完整的功能,长度一般不少于 2 个字母。 1. 每文件最多只能包含一个模块。 每个模块必须用一个文件表示。在一个文件中不允许存在一个以上的模块。(该模块的
作者 frwfpga frwfpga
2014-11-29
版权所有 侵权必究
2
XXX Verilog HDL 代码规范
目录
Verilog HDL 代码规范......................................................................................................................1 修订记录........................................................................................................................................... 2 目录 ..................................................................................................................................................3 1. 目的...........................................................................................................................................4 2. 范围...........................................................................................................................................4 3. 定义...........................................................................................................................................4 4. 规范内容...................................................................................................................................4
2) 仿真验证.........................................................................................................................17
2014-11-29
版权所有 侵权必究
3
本规范读者含概 FPGA 设计人员、验证人员和其他与 FPGA 开发相关人员。
3. 定义
Verilog HDL FSM RM BFM
Verilog 硬件描述语言 有限状态机 参考模型 总线功能模型
4. 规范内容
1) 可综合设计
确保代码能被绝大多数综合工具所接受,且能无歧义快速综合,现制定可综合代码规范。
receive request
reset segment source statistics
timer switch temporary transmit valid write anable write
rden rd rdy rx req rst seg scr stat tmr sf tmp 或者 temp tx vld wren wr
造成设计错误。
10. 全局信号名字中应包含信号来源的一些信息。系统信号应加上 sys。 比如:adc2378_sdo 、sys_clk。
11. 添加有意义的后缀使信号名更加明确常用的后缀。
如表 1 表格 1 常用信号后缀表:
信号后缀
意义
_clk
时钟
_n
低有效
2014-11-29
版权所有 侵权必究
5
XXX Verilog HDL 代码规范
XXXX Verilog HDL 代码规范
FPGA 组
Verilog HDL 代码规范
文档作者: frwfpga 审 批:
日期: 2014-03-07 日期:
XXX Verilog HDL 代码规范
修订记录
日期 2013-8-5 2013-9-27
修订版本 1.00 1.01
描述 初稿完成 1、命名规范中函数 名、模块名大写修改 为小写。 2、增加模块规范中条 件判断算式表达式部 分。
信号命名过长对设计带来麻烦,缩写就是为了简洁、清晰,所有缩写要求能基本表明本
单词的含义。常用信号缩写见表格 2,其它信号名一般取其前三个字母。信号名长度在 20 个字母内,词与词之间用下划线连接。 3. 使用规范的大小写。 端口、信号、变量、函数名、模块名所有st; parameter CLK_PERIOD = 20。 4. 总线命名规则。 总线宽度的语句必须用 [N:0], 而不能用 [0:N],标记 0 表示 LSB, 标记 N 表示 MSB。 5. 低有效信号名加 _n。 比如:
sys_rst_n。 6. 信号打拍加 _Xd,打 1 拍加 _d 或者 _1d,打 2 拍加 _2d。 比如:
sck_ctrl_d,
sck_ctrl_2d。
7. 避免使用数字和 reg 作为后缀。 综合工具会给寄存器自动加上_reg,如果自己加上_reg,网表可读性变差。多 bit 信号
综合后可能会改名成 bit 数后缀的单 bit 信号,造成网表理解困难。 比如:ctrl_reg 改为 reg_ctrl, 8. 避免使用关键字。 比如:in out case 等不能够做为变量端口或模块。 9. 同一信号在不同层次应保持一致性。 层次化设计中,同一信号相同名称可以确保不同层次信号处理正确,避免因为名称不同
1) 可综合设计.......................................................................................................................4 a) 命名规范...................................................................................................................4 b) 模块规范...................................................................................................................7 c) Net and Register......................................................................................................13 d) Expressions..............................................................................................................13 e) For 语句 ..................................................................................................................13 f) If 语句 .....................................................................................................................14 g) Case 语句 ...............................................................................................................14 h) Writing functions.....................................................................................................14 i) 使用可综合的语句.................................................................................................14 j) Comments ...............................................................................................................15 k) FMS..........................................................................................................................15
a) 命名规范
命名要做到简洁、清晰、有效,尽可能做到见名知意。 1. 使用有意义的名字。 使用有意义的的名字,使设计者更容易理解信号意义,理解模块功能,发现设计错误, 修改错误,同时方便成员间交流。 2. 使用规范的缩写。
相关文档
最新文档