RTL基本知识:Verilog常见错误

【问题描述】【问题一】过程性赋值语句左侧信号没有声明为reg或者logic类型,而是声明为了线网类型,例如:【问题二】使用begin-end没有配对使用,导致语句执行与预期不相符,特别是在条件表达式中,例如:【问题三】进行常量赋值时,没有执行相应的数制,可能导致结果与预期不一致。例如:【问题四】语句结尾缺失当前行结束标志“;”,将会导致编译失败。例如:【问题五】混用“'”(位于回车键旁)和“`”(位于ESC键下方),“'”常用语具体数字表达式中的进制中,而“`”常用语各种编译命令中。例如:【问题六】混淆使用“=”,“==”和“===”【问题七】混淆使用“||”和“or”如果将“||”用于敏感信号列表中,进程是否不触发不是取决于其中任何一个信号的变化,而是取决于两个敏感信号列表中的信号“||”完的结果是否发生变化,所以将“||”放入敏感信号列表并不会导致仿真错误,但是将会导致你的结果不是期望的,试想“||”任何一侧的信号如果为常1,那么另一侧信号怎么变化,其结果都是1,此时进程是不会被触发的。但是or是如果用在了赋值语句中,编译即会报错。【问题八】使用关键字作为信号名,具体关键词可参考IEEE中附录,建议不要使用如下关键词命名信号。【问题九】在always未使用时序控制相关的描述,导致always进程陷入无限循环。例如:【问题十】在设计中使用隐含线网连接多位矢量端口,将会导致多位矢量仅有最低位的变化会反应到隐含线网上,即隐含线网默认为1位宽。例如: 

相关内容推荐