0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Verilog程序编写规范

我快闭嘴 来源:fpga加油站 作者:fpga加油站 2022-09-15 09:35 次阅读

在实际工作中,许多公司Verilog程序编写规范都有要求。在公司内部统一Verilog程序编写规范不仅可以增强程序的可读性、可移植性,而且也有助于逻辑工程师之间交流、沟通,提升逻辑组成员之间的团队协作能力。本文就大部分公司常见的Verilog程序编写规范作一个介绍。

01 编写风格

begin/end要单独另起一行,配对的begin/end列对齐。

if/else分支中,多条语句必须使用being/end。多条语句若不加begin/end,则只有第一条语句会有效,故多条语句必须加begin/end。

书写时括号和括号间不用空格。举例:assign y = ((a==1’b1) && (b==1’b1))。

if/else语句必须配对使用,时序逻辑中else不用给自身赋值,空操作时只需要写“;”。

所有的缩进以4个空格为单位。

分号和逗号紧跟信号

case/default配对使用。

模块内部不能使用高阻或未知结果用作对比条件。例:if(a == 1'bz) 或 if(a == 1'bx)。

02 命名风格

Verilog的保留关键字不允许作为命名字符串使用。在RTL代码中使用Verilog的关键字命名可能会导致综合或仿真出现编译错误。

命名字符集只能为[“a-z”,“A-Z”,"0-9”, “_” ],不能有其他字符。

代码中的所有信号名都必须小写。

信号命名总数不超过15个字符。

使用下划线作为命名分隔符。

不允许两个连续的下划线出现在命名字符串中。如果采用连续两个或多个下划线,不便于代码阅读和维护,而且阅读时很难区分有几个下划线。

不允许使用大小写来区分模块名称、变量、信号。

用大小写来区分模块、变量或信号不仅不方便代码阅读和理解,而且有安全隐患。因为编译器有可能不区分大小写,增加代码出错的风险。

03 设计风格

模块中经常使用的参数,或在例化时需要修改的参数使用parameter定义。

同一always块中,非阻塞赋值和阻塞赋值不能混用。在时序逻辑语句块(always)中统一采用非阻塞型赋值;在组合逻辑语句块(always和assign)中统一采用阻塞型赋值;组合时序混合电路,统一采用非阻塞赋值;不可以用反或混合使用阻塞和非阻塞赋值;

不要使用门控时钟。门控时钟的定义:组合逻辑产生的信号当其它模块的时钟称为门控时钟。门控时钟是非常危险的,极易产生毛刺,使逻辑误动作。在可编程逻辑器件中,一般使用触发器的时钟使能端,而这样,并不增加资源,只要保证建立时间,可使毛刺不起作用。

模块的内部信号统一用时钟的上升沿采样。

模块中的信号必须在复位时被赋予初始值。

不要将时钟信号作为数据信号输入,不允许使用行波计数器。行波计数器中,前级寄存器的数据输出作为后级寄存器的时钟输入。行波计数器虽然原理简单,设计方便,但级连时钟(行波时钟)最容易造成时钟偏差(△T),级数多了,很可能会影响其控制的触发器的建立/保持时间,使设计难度加大。

在条件表达式中不要使用高阻Z。在逻辑代码中,除了三态控制逻辑接口允许使用高阻Z状态进行信号赋值外,在其他信号赋值,条件表达式等逻辑中都不允许使用高阻Z状态。

向量、参数和信号的位宽在定义时要清晰的表示出来,数据位宽要匹配。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1603

    文章

    21333

    浏览量

    593884
  • Verilog
    +关注

    关注

    28

    文章

    1327

    浏览量

    109392
  • 程序编写
    +关注

    关注

    1

    文章

    14

    浏览量

    8157

原文标题:Verilog语言编程规范

文章出处:【微信号:fpga加油站,微信公众号:fpga加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    【分享】verilog代码书写规范

    FPGA verilog代码书写规范,很好的借鉴
    发表于 05-21 11:36

    Verilog HDL代码书写规范

    :① 逻辑功能正确,②可快速仿真,③ 综合结果最优(如果是hardware model),④可读性较好。2. 范围本规范涉及Verilog HDL编码风格,编码中应注意的问题, Testbench的编码
    发表于 12-08 14:36

    请问CAN通信接口verilog程序如何编写

    CAN通信接口 verilog程序如何编写
    发表于 11-01 10:16

    verilog代码规范

    verilog代码规范,学会写代码还不行,我们需要更加的规范
    发表于 03-25 14:43 24次下载

    华为_VERILOG语言编写规范

    verilog代码规范,学会写代码还不行,我们需要更加的规范
    发表于 03-25 14:36 34次下载

    Verilog程序编写规范

    适合verilog初学者的教程,可以好好参考学习。
    发表于 03-25 14:06 12次下载

    Verilog编写的基于SPARTAN板的VGA接口显示程序

    Xilinx FPGA工程例子源码:Verilog编写的基于SPARTAN板的VGA接口显示程序
    发表于 06-07 14:54 10次下载

    Verilog编写的信道估计

    Xilinx FPGA工程例子源码:Verilog编写的信道估计
    发表于 06-07 14:54 38次下载

    华为的verilog编码规范

    华为的verilog编码规范
    发表于 11-01 08:41 40次下载
    华为的<b class='flag-5'>verilog</b>编码<b class='flag-5'>规范</b>

    Verilog HDL语言的发展历史和能力综述

    Verilog入门教程,介绍Verilog的语法知识,基本程序编写
    发表于 08-13 10:56 2次下载

    verilog语言编写规范

    规范的目的是提高书写代码的可读性 可修改性 可重用性 优化代码综合和仿真的结 果 指导设计工程师使用VerilogHDL规范代码和优化电路 规范化公司的ASIC设计输入从而做到。
    的头像 发表于 11-23 17:28 855次阅读

    基于verilog编写99秒计数器

    Verilog语言编写,通过模块化设计的99秒技术器
    发表于 02-16 16:16 0次下载

    如何使用参数化编写可重用的verilog代码

    我们将介绍如何使用verilog参数和generate语句来编写可重用的verilog 代码。 与大多数编程语言一样,我们应该尝试使尽可能多的代码可重用。这使我们能够减少未来项目的开发时间
    的头像 发表于 05-11 15:59 747次阅读

    FPGA的Verilog代码编写规范

      注:以R起头的是对编写Verilog代码的IP设计者所做的强制性规定,以G起头的条款是建议采用的规范。每个设计者遵守本规范可锻炼命名规范
    的头像 发表于 08-15 16:23 1241次阅读

    IC设计之Verilog代码规范

    Verilog规范对于一个好的IC设计至关重要。
    的头像 发表于 08-17 10:14 697次阅读
    IC设计之<b class='flag-5'>Verilog</b>代码<b class='flag-5'>规范</b>