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

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

3天内不再提示

verilog语言编写规范

ZYNQ 来源:华为 作者:华为 2022-11-23 17:28 次阅读

	

本次分享华为公司的《大规模逻辑设计指导书》中的内容。


1 目的

本规范的目的是提高书写代码的可读性 可修改性 可重用性 优化代码综合和仿真的结 果 指导设计工程师使用VerilogHDL规范代码和优化电路 规范化公司的ASIC设计输入从而做到
  1. 逻辑功能正确
  2. 可快速仿真
  3. 综合结果最优( 如果是hardware model)
  4. 可读性较好

2 范围

本规范涉及Verilog HDL编码风格 编码中应注意的问题 Testbench的编码等本规范适用于Verilog model的任何一级 RTL ehavioral, gate_level) 也适用于出于仿真综合或二者结合的目的而设计的模块.

3 定义

  • Verilog HDL:Verilog 硬件描述语言
  • FSM:有限状态机
  • 伪路径:静态时序分析 STA 认为是时序失败 而设计者认为是正确的路径。

4 引用标准和参考资料

下列标准包含的条文 通过在本标准中引用而构成本标准的条文 在标准出版时 所示版本均为有效 所有标准都会被修订 使用本标准的各方应探讨 使用下列标准最新版本的可能性。

5规范内容

5.1 Verilog 编码风格

本章节中提到的Verilog编码规则和建议适应于 Verilog model的任何一级 RTL behavioral,gate_level) 也适用于出于仿真 综合或二者结合的目的而设计的模块

5.1.1

选择有意义的信号和变量名 对设计是十分重要的 命名包含信号或变量诸如出处 有效状态等基本含义 下面给出一些命名的规则
  • 用有意义而有效的名字 有效的命名有时并不是要求将功能描述出来 如:

	
  1. For( I = 0; I < 1024; I = I + 1)

  2. Mem[I] <= #1 32’b0;

For 语句中的循环指针I 就没必要用loop_index作为指针名
  • 用连贯的缩写

    长的名字对书写和记忆会带来不便 甚至带来错误 采用缩写时应注意同一信号在模块中的一致性 缩写的例子如下Addr :addressPntr :pointerClk :clockRst :reset

  • 用最右边的字符下划线表示低电平有效 高电平有效的信号不得以下划线表示 短暂 的引擎信号建议采用高有效

    Rst_ Trdy, Irdy Idsel.

  • 大小写原则

    名字一般首字符大写 其余小写 但parameter, integer 定义的数值名可全部用大写两个词之间要用下划线连接。如 Packetaddr, Datain, Memwr Memce_

  • 全局信号名字中应包含信号来源的一些信息如 D_addr[7:2] 这里的 D 指明了地址是解码模块(Decoder module)中的地址

  • 同一信号在不同层次应保持一致性

  • 自己定义的常数 类型等用大写标识

    如 parameter CYCLE=100

  • 避免使用保留字

    如 in out x z等不能够做为变量 端口或模块名

  • 添加有意义的后缀 使信号名更加明确 常用的后缀如下:b4bdb53a-67ab-11ed-8abf-dac502259ad0.png

5.1.2 Modules

  • 顶层模块应只是内部模块间的互连

    Verilog设计一般都是层次型的设计 也就是在设计中会出现一个或多个模块 模块间的调用在所难免 可把设计比喻成树 被调用的模块就是树叶 没被调用的模块就是树根 那么在这个树根模块中 除了内部的互连和模块的调用外 尽量避免再做逻辑 如不能再出现对reg变量赋值等 这样做的目的是为了更有效的综合 因为在顶层模块中出现中间逻辑 Synopsys 的design compiler 就不能把子模块中的逻辑综合到最优。

  • 每一个模块应在开始处注明文件名 功能描述 引用模块 设计者 设计时间及版权信息等,如:


	
  1. Filename﹕ RX_MUX.v

  2. Author

  3. Description

  4. CalledbyTopmodule

  5. RevisionHistory99-08-01

  6. Revision1.0

  7. Email﹕ M@sz.huawei.com.cn

  8. CompanyHuaweiTechnology.Inc

  9. Copyright(c) 1999, HuaweiTechnologyInc, All right reserved

  • 不要对Inpu t进行驱动, 在module 内不要存在没有驱动的信号 更不能在模块端口中出现没有驱动的输出信号,避免在仿真或综合时产生warning 干扰错误定位。

  • 每行应限制在80个字符以内 以保持代码的清晰 美观和层次感 一条语句占用一行 如果较长 超出80个字符 则要换行

  • 电路中调用的 module名 用 Uxx 标 示 向量大小表 示要清晰 采用基于名字(namebased )的调用而非基于顺序的(orderbased),如:


	
  1. InstanceUInstance2(

  2. .DataOut(DOUT ),

  3. .DataIn(DIN ),

  4. .Cs_(Cs_)

  5. );

  • 用一个时钟的上沿或下沿采样信号, 不能一会儿用上沿 ,一会儿用下沿 ,如果既要用上沿又要用下沿 ,则应分成两个模块设计。建议在顶层模块中对Clock做一非门,在层次模块中如果要用时钟下沿就可以用非门产生的Posedge Clk_, 这样的好处是在整个设计中采用同一种时钟沿触发, 有利于综合。基于时钟的综合策略

  • 在模块中增加注释

    对信号 参量 引脚 模块 函数及进程等加以说明 便于阅读与维护

  • Module 名要用大写标示 且应与文件名保持一致, 如


	
  1. Module DFF_ASYNC_RST(

  2. Reset,

  3. Clk,

  4. Data,

  5. Qout

  6. );

  • 严格芯片级模块的划分

    只有顶层包括IO引脚(pads) 中间层是时钟产生模块 JTAG 芯片的内核(CORE)这样便于对每个模块加以约束仿真 对时钟也可以仔细仿真

  • 模块输出寄存器

    对所有模块的输出加以寄存 如图1 使得输出的驱动强度和输入的延迟可以预测 从而使得模块的综合过程更简单

  • 输出驱动的强度都等于平均的触发器驱动强度

  • 将关键路径逻辑和非关键路径逻辑放在不同模块

保证DC可以对关键路径模块实现速度优化 而对非关键路径模块实施面积优化 ,在同一模块DC无法实现不同的综合策略。
  • 将相关的组合逻辑放在同一模块 有助于DC对其进行优化 因为DC通常不能越过模块的边界来优化逻辑。
审核编辑:汤梓红

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

    关注

    28

    文章

    1325

    浏览量

    109298
  • HDL
    HDL
    +关注

    关注

    8

    文章

    323

    浏览量

    47101
  • 编码
    +关注

    关注

    6

    文章

    835

    浏览量

    54456
  • 代码
    +关注

    关注

    30

    文章

    4555

    浏览量

    66746

原文标题:【华为】verilog语言编写规范(一)

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

收藏 人收藏

    评论

    相关推荐

    【寻求帮助】用verilog语言编写计数器

    哪位大虾帮帮忙用verilog语言编写一个计数器,谢谢啊
    发表于 03-23 17:30

    verilog语言编写PwM生成模块

    verilog语言编写PwM生成模块
    发表于 05-16 13:41

    如何用Verilog语言编写量子算法

    我想用Verilog语言编写一个3bit的傅里叶变换,但弄不清酉变换,有没有大佬给个程序范例,谢谢!
    发表于 09-19 08:26

    System Verilog常见问题及语言参考手册规范

    本文讨论了一些System Verilog问题以及相关的SystemVerilog 语言参考手册规范。正确理解这些规格将有助于System Verilog用户避免意外的模拟结果。
    发表于 12-11 07:19

    System Verilog问题和语言参考手册规范

    本文讨论了一些System Verilog问题以及相关的SystemVerilog 语言参考手册规范。正确理解这些规格将有助于System Verilog用户避免意外的模拟结果。
    发表于 12-24 07:07

    讨论Verilog语言的综合问题

    是在描述硬件,即用代码画图。在 Verilog 语言中,always 块是一种常用的功能模块,也是结构最复杂的部分。笔者初学时经常为 always 语句的编写而苦恼.
    发表于 07-29 07:42

    华为_VERILOG语言编写规范

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

    Verilog程序编写规范

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

    Verilog编写的信道估计

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

    C语言编写规范之注释

    C语言变成规范
    发表于 05-24 14:36 13次下载

    Verilog程序编写规范

    在实际工作中,许多公司对Verilog程序编写规范都有要求。在公司内部统一Verilog程序编写规范
    的头像 发表于 09-15 09:35 3509次阅读

    浅谈verilog语言编写规范

    如果代码中发现多次使用一个特殊的表达式 ,那么就用一个函数来代替。这样在以后的版本升级时更便利 ,这种概念在做行为级的代码设计时同样使用 ,经常使用的一组描述可以写到一个任务(task)中 。
    发表于 11-21 09:48 526次阅读

    基于verilog编写99秒计数器

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

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

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

    FPGA的Verilog代码编写规范

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