【问题描述】

在使用Verilog对硬件逻辑进行建模和模拟的同时,必须理解代码与硬件实现的联系和Verilog语言本身的语法规则,如果对于这些理解不够,往往会造成代码调试周期延长,更有甚者造成电路逻辑功能异常的情况出现,从而拖延电路设计的周期。本文列举的错误不仅初学者经常遇到,在一些经验丰富的电路设计人员中也经常会出现这些问题,为此,本文以尽量浅显易懂的方式及示例展示这些常见的问题,希望对于广大有需要的朋友提供一些力所能及的帮助。同时,希望大家在完成必要的编码之后能够对编写的代码进行代码规则检查,目前常用的代码规则检查工具有:SpyGlass(Synopsys)、Leda(Synopsys)、HAL(Cadence)等,同时这些工具中还集成了大量的业界标准规则集,可以通过这些EDA工具对于设计代码进行比较全面的检查,为后续电路的仿真及实现提供必要的帮助,可以极大地缩短研制周期。

【问题一】

过程性赋值语句左侧信号没有声明为reg或者logic类型,而是声明为了线网类型,例如:

【问题二】

使用begin-end没有配对使用,导致语句执行与预期不相符,特别是在条件表达式中,例如:

【问题三】

进行常量赋值时,没有执行相应的数制,可能导致结果与预期不一致。例如:

【问题四】

语句结尾缺失当前行结束标志“;”,将会导致编译失败。例如:

【问题五】

混用“'”(位于回车键旁)和“`”(位于ESC键下方),“'”常用语具体数字表达式中的进制中,而“`”常用语各种编译命令中。例如:

【问题六】

混淆使用“=”,“==”和“===”

【问题七】

混淆使用“||”和“or”

如果将“||”用于敏感信号列表中,进程是否不触发不是取决于其中任何一个信号的变化,而是取决于两个敏感信号列表中的信号“||”完的结果是否发生变化,所以将“||”放入敏感信号列表并不会导致仿真错误,但是将会导致你的结果不是期望的,试想“||”任何一侧的信号如果为常1,那么另一侧信号怎么变化,其结果都是1,此时进程是不会被触发的。但是or是如果用在了赋值语句中,编译即会报错。

【问题八】

使用关键字作为信号名,具体关键词可参考IEEE中附录,建议不要使用如下关键词命名信号。

【问题九】

在always未使用时序控制相关的描述,导致always进程陷入无限循环。例如:

【问题十】

在设计中使用隐含线网连接多位矢量端口,将会导致多位矢量仅有最低位的变化会反应到隐含线网上,即隐含线网默认为1位宽。例如:

verilog 写rtl注意事项_RTL基本知识:Verilog常见错误相关推荐

  1. verilog写操作查询表_电子表的设计——verilog

    电子表的设计包括正常计时模块,LED显示模块,定时报警模块,校时模块,秒表模块. (1)正常计时模块clock module clock(clk,rst,clock_en,second,minute, ...

  2. EOS:一些必要的知识与常见错误:cloes工具(杂谈)1

    巨坑,虚拟机挂了.....测试账户什么全没了.重整精神重来,重新整理一下,理出大致框架 nodeos的配置文档:~./local/share/eosio/nodeos/config nodeos 重启 ...

  3. Verilog写状态机的三种描述方式之三段式

    Verilog写状态机的三段式描述方式1 1,RTL代码 2,门级网表 3,测试前仿真代码 4,前仿真波形+验证 状态机的设计思路: 一是从状态机变量入手,分析各个状态的输入.状态转移和输出: 二是先 ...

  4. verilog写寄存器

    写寄存器前必须掌握的知识: 1.模块module的写法 2.寄存器:寄存器是由触发器构成,暂时存放数码或指令,存入和读取数据可以是串行或者并行.寄存器存取速度很快. cpu如何执行一条高级指令:a+= ...

  5. PHP框架编写和应用知识点,写PHP框架需要具备那些知识?

    原标题:写PHP框架需要具备那些知识? 后盾网 如果没用过框架,讨论各个框架的内容都没有可讨论性,想自己写个框架涉及到的内容很多,个人觉得自己写一个框架对自己的逻辑思维,开发架构以及这门语言都有质的提 ...

  6. (63)FPGA面试题-用verilog写一段代码,实现消除一个glitch(毛刺)(二)

    1.1 FPGA面试题-用verilog写一段代码,实现消除一个glitch(毛刺)(二) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-用verilo ...

  7. (62)FPGA面试题-用verilog写一段代码,实现消除一个glitch(毛刺)(一)

    1.1 FPGA面试题-用verilog写一段代码,实现消除一个glitch(毛刺)(一) 1.1.1 本节目录 1)本节目录: 2)本节引言: 3)FPGA简介: 4)FPGA面试题-用verilo ...

  8. CAN IP SjA1000ip核 verilog写的 项目以在稳定的用

    CAN IP SjA1000ip核 verilog写的 项目以在稳定的用 拿到手直接用 波特率 id配置都以参数化 ID:17260674043932921元气满满皮皮牛56

  9. SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器。 程序使用三段式状态机,对于语句均有箱子的中文注释

    SJA1000 CAN总线verilog写的SJA1000 CAN总线控制器. 程序使用三段式状态机,对于语句均有箱子的中文注释,同时还有相关的文档说明. 可直接拿来使用,同时适合新手学习规范写作代码 ...

最新文章

  1. 图灵奖得主LeCun:不需要监督的AI才是未来!
  2. ecshop支付方式含线下自提
  3. Json格式转化为string格式
  4. mysql插10万条数据_MySQL数据库插入100w条数据要花多久?
  5. B端出行,缺一个盒子汽车么?
  6. C++新特性探究(十八):智能指针
  7. 支付宝在线支付接口开发教程
  8. 以太坊2.0抵押地址新增13.47万ETH
  9. day15 匿名函数及常用内置函数
  10. Atitit 函数式常用子操作与组合 目录 1. 集合类的操作 1 1.1. Transform、map 1 1.2. paip.提升效率---filter map reduce 的java 函
  11. Java毕业设计-学生选课管理系统
  12. java检测敏感词,Java实现敏感词检测的代码
  13. Visual C++ 6.0 Processor Pack 编译xvidcore1.1.0
  14. JAVA北京时间转换为世界协调时
  15. 解决win10下PPT打不开,显示内容有问题,提示修复但修复不成功
  16. 一览「数字身份」市场结构:我们将在元宇宙中成为谁?
  17. 无业务不技术:那些誓用区块链重塑的行业,发展怎么样了?
  18. Linux du(disk usage)命令详解
  19. Linux下使用RTX腾讯通
  20. 十三、Java高级特性 Lambda表达式 | 接口组成更新 | 方法引用 | 函数式接口

热门文章

  1. matlab2c使用c++实现matlab函数系列教程-log10函数
  2. SpringMVC XXX-servlet.xml ApplicationContext.xml
  3. bzoj 4826: [Hnoi2017]影魔
  4. vs2010上opencv配置
  5. 编译安装imagick出错:make: *** [imagick_class.lo] Error 1
  6. backup archivelog delete input 与delete all input 区别
  7. android 之反编译
  8. 常用的Linux操作命令
  9. [转载] python中svm的使用_Python中支持向量机SVM的使用方法详解
  10. [转载] python 一个简单的天气预报程序