相关文章推荐
想出家的水煮鱼  ·  大气污染的历史·  1 年前    · 
慷慨的柑橘  ·  驻尼日利亚大使周平剑发表文章《抗疫共建人类卫 ...·  1 年前    · 
长情的大脸猫  ·  毕业季等于分手季?看看古人怎么选择。·  1 年前    · 
坚韧的竹笋  ·  在杭州第十四中学就读是一番怎样的体验? - 知乎·  1 年前    · 
性感的小熊猫  ·  关于通报表扬全国自然保护区集体和个人的决定·  1 年前    · 
Code  ›  日常记录(11)Verilog编程规范说明开发者社区
赋值 复位电路
https://cloud.tencent.com/developer/article/1919983
直爽的牛肉面
1 年前
嘘、小点声

日常记录(11)Verilog编程规范说明

腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
嘘、小点声
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 日常记录(11)Verilog编程规范说明

日常记录(11)Verilog编程规范说明

作者头像
嘘、小点声
发布 于 2021-12-16 16:44:50
585 0
发布 于 2021-12-16 16:44:50
举报
文章被收录于专栏: 嘘、小点声 嘘、小点声

1.低电平有效信号,信号后加‘_n’。输入信号:i_或者_i ; 输出信号:o_或者_o

2.模块名小写。顶层文件要加上_top后缀。而testbench文件则加上_tb后缀

3.module例化名用U_xx_x表示(多次例化用次序号0.1.2...)。

4.使用降序排列定义向量有效位顺序,最低位为0。

5.采用小写字母定义reg,wire和input/output/inout。

6.采用大写字母定义参数,参数名小于20个字母。

7.时钟信号应前缀‘clk’,复位信号应前缀‘rst’。

8.三态输出寄存器信号应后缀‘_z’。

9.代码中不能使用VHDL保留字,更不能使用Verilog保留字。

10.输出信号必须被寄存(只对顶层模块,建议级别) 。ps:在查阅的各种资料中,都有提及这一点。

11.三态逻辑可以在顶层模块中使用,子模块中避免使用三态。

12.没有未连接的端口(建议级别)。

13.到其他模块的接口信号,按如下顺序定义端口信号:输入,(双向),输出。

14.建议使用coregen生成乘法电路(建议级别)。

15.采用基于名字的调用,而非基于顺序的调用。

16.不要书写空的模块,即 用一个模块至少要有一个输入和一个输出。

17.时钟事件的表达要用‘negedge<clk_name>’ 或 'posedge<clk_name>'的形式。

18. 异步复位,高电平用‘if(<rst_name> == 1'b1)’,低电平有效用‘if(<rst_name> == 1'b0)’。

19.if语句不能嵌套太多(建议)。

20.建议不使用include语句(建议)。

21.建议每个模块加timescale(建议)。

22.代码中给出必要的注释。

23.每个文件有一个文件头。所写模块的名字、功能、版本、时间等。

24.每个文件只包含一个模块(建议)。

25.模块名与文件名保持一致。

26. 同步时序逻辑的always block中有且只有一个时钟信号 ,并且在同一个沿动作(如上升沿)。

27. 同步时序逻辑的module中,在时钟信号的同一个沿动作(建议) 。

28. 采用同步设计,避免使用异步逻辑(全局信号复位除外)(建议) 。

29. 一般不要将时钟信号作为数据的信号输入(建议) 。

30.不要在时钟路径上添加任何的buffer。

31.不要门控时钟(建议)。

32.在顶层模块中,时钟信号必须可见。

33.不要采用向量的方式定义一组时钟信号。

34.不要在模块内部生成时钟信号,使用DLL/PLL产生的时钟信号(建议)。

35.建议使用单一的全局同步复位电路或者单一的全部异步复位电路(建议)。

36.不要在复位路径上添加任何的buffer,也不要使用任何门控复位信号。

ps:复位路径上添加buffer,会使得复位信号到触发器复位接收端口产生延迟,skew的产生,可能无法满足复位恢复时间,从而导致亚稳态的产生。 门控会使得复位信号产生毛刺,增加亚稳态发生的可能性。

37.不使用PLI函数。

38.不使用事件变量。

39.不使用系统函数。

40.建议不使用任务。

41.不使用用户自定义单元(UDP)。

42.不使用===,!==等不可综合运算符。

ps: 补充Verilog不可综合语句。

initial(只在testbench中使用)、events(在同步testbench时更有用)、real time、assign和deassign(reg型无法综合,但是wire型可以)、fork join、primitives(只支持门级原语综合)、table、敏感列表中同时带有posedge和negedge(如always@(posedge clk or negedge clk)begin end 这个无法综合)、同一个reg被多个always块驱动、延时 #time ,比如a = #5 b ,此处仿真时候是可以的,但是在综合时会自动忽略掉#time,相当于a = b、X或Z(未知态和高阻态),在条件表达式中不要使用它们,确保可以综合。

43.不使用disable语句。

44.建议不使用forever,repeat,while循环语句。

45.避免产生latch(除CPU接口)。 ps:在if语句或者case语句中的所有条件分支中都有对变量有明确的赋值,不然会综合出latch。

46.组合逻辑语句块敏感列表中敏感变量必须和该模块中使用的相一致,不能多也不能少。

47.在一个always语句中,有且仅有一个事件列表。

48.在时序always块的敏感事件列表中,必须都是沿触发事件,不允许出现电平触发事件。

49.数据位宽要相匹配。

50.不使用real,time,realtime类型。

51.建议不使用integer类型。

52.位移变量必须是一个常数。

53.避免使用异步反馈电路。

54.时序逻辑语句块中统一使用非阻塞型赋值。

55.组合逻辑语句块使用阻塞型赋值。 ps:对于54 55需要了解一下阻塞和非阻塞的区别。 非阻塞赋值语句,右端表达式计算完并不会立刻传递给左端,而是等待下一个事件触发前一刻再传递给左端,且它们是并行的。就是说,在所有的右端表达式在时钟有效沿到来之时开始计算,等到下一个时钟有效沿到来之前一刻,将值同时赋值给了左端。可以想象出它对时钟沿触发描述的恰到好处,所以用在时序逻辑中。 阻塞赋值语句,在每个右端表达式计算完之后,立刻传递给左端,并且后面的式子只能在前面完成后,方可运行。所以说是一个串行过程,而组合逻辑恰恰需要这样的一个表达方式。

56.非阻塞赋值语句不加单位延时,尤其是对于寄存器类型的变量赋值时。

57.整型常量基数格式中不能有‘?’。

58.字符串中不能包含有控制字符(如CTRL链)。

59.禁止使用空的时序电路块以及非法的always结构。

60.不要在连续赋值语句中引入驱动强度和延时。

61.不要为net,n_input,n_output,enable_gate型变量定义驱动强度,电荷保持强度以及延时。

62.禁止使用trireg(具有电荷保持特性的连接)NET型定义。

63.禁止使用tri0,tri1,triand和trior型连接。

64.在RTL级代码中不能包含有initial结构,也不能对任何信号进行初始化赋值,应该采用复位的方式进行初始化。

65.不要在过程语句中使用assign,deassign,force,release等语句。

66.不要使用wait语句。

67.不要使用fork join语句块。

68.不要为驱动类型为supply0和supply1型的连线(net)赋值。

69.设计中不使用macro_module。

70不要在RTL代码中实例门级单元,尤其是下列单元:CMOS开关,RCMOS开关,NMOS开关,PMOS开关,RNOMS开关,RPMOS开关,trans双向开关,rtrans双向开关,tranif0,tranif1,rtranif0,rtranif1,pull_gate。

71.不要使用specify模块。

这些规则中有一些我还没有弄清楚,等到更多的实际应用中出现的时候,应该会有一种恍然大悟的感觉, 实践才是检验真理的唯一标准。

本文参与 腾讯云自媒体分享计划 ,分享自作者个人站点/博客。
原始发表:2021-12-15 , 如有侵权请联系 cloudcommunity@tencent.com 删除
编程算法

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

编程算法
评论
登录 后参与评论
0 条评论
热度
最新
登录 后参与评论
推荐阅读
LV.
文章
0
获赞
0
  • 社区

    • 专栏文章
    • 阅读清单
    • 互动问答
    • 技术沙龙
    • 技术视频
    • 团队主页
    • 腾讯云TI平台
  • 活动

    • 自媒体分享计划
    • 邀请作者入驻
    • 自荐上首页
    • 技术竞赛
  • 资源

    • 技术周刊
    • 社区标签
    • 开发者手册
    • 开发者实验室
  • 关于

    • 社区规范
    • 免责声明
    • 联系我们
    • 友情链接

腾讯云开发者

扫码关注腾讯云开发者

扫码关注腾讯云开发者

领取腾讯云代金券

热门产品

  • 域名注册
  • 云服务器
  • 区块链服务
  • 消息队列
  • 网络加速
  • 云数据库
  • 域名解析
  • 云存储
  • 视频直播

热门推荐

  • 人脸识别
  • 腾讯会议
  • 企业云
  • CDN加速
  • 视频通话
  • 图像分析
  • MySQL 数据库
  • SSL 证书
  • 语音识别

更多推荐

  • 数据安全
  • 负载均衡
  • 短信
  • 文字识别
  • 云点播
  • 商标注册
  • 小程序开发
  • 网站监控
  • 数据迁移

Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有

深圳市腾讯计算机系统有限公司 ICP备案/许可证号: 粤B2-20090059 深公网安备号 44030502008569

腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287

问题归档 专栏文章 快讯文章归档 关键词归档 开发者手册归档 开发者手册 Section 归档

Copyright © 2013 - 2024 Tencent Cloud.

All Rights Reserved. 腾讯云 版权所有

登录 后参与评论
 
推荐文章
想出家的水煮鱼  ·  大气污染的历史
1 年前
慷慨的柑橘  ·  驻尼日利亚大使周平剑发表文章《抗疫共建人类卫生健康共同体》
1 年前
长情的大脸猫  ·  毕业季等于分手季?看看古人怎么选择。
1 年前
坚韧的竹笋  ·  在杭州第十四中学就读是一番怎样的体验? - 知乎
1 年前
性感的小熊猫  ·  关于通报表扬全国自然保护区集体和个人的决定
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号