Verilog和systemverilog中的“==”和“===”区别

Verilog和systemverilog中有两种类型的等式运算符

  • logical equality/inequality(“==”和“!=”)
  • case equality/inequality(“===”和“!===”)

  • 四种等式运算符具有相同的优先级;
  • 四种运算符会将两个操作数做逐位比较,如果两个操作数的位宽不一致,那么位宽较小的操作数高位补0至与另一操作数位宽一致(适用于verilog,不适用于system verilog),然后再进行比较。
  • 对于logical equality和logical inequality运算符(“==”和“!=”),如果操作数中出现x态位或z态位(高阻),那么比较结果将会是1位的x值(下表右)
  • 对于case equality和case inequality运算符(“===”和“!===”),不管操作数中有没有x态位或z态位(高阻),比较结果都会是1位确定的值,要么是1要么是0(下表左)

  • 需要注意在if语句中的条件判断时,对于判断表达式为x态结果是不执行的,例如:

if (a == 1'bx) 
    $display("test ==");   //不管a的值是什么,a == 1'bx的结果都是x态,并且不会执行display语句
 
if (a === 1'bx)
    $display("test ===");  //如果a的值是x,a == 1'bx的结果是1,会执行display语句,打印输出

结论:对于等式运算符中的操作数有三态的变量,建议使用“===”和“!==”,如果不清楚等式运算符的操作数是否为三态的,也建议使用“===”和“!==”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值