SV语法易错案例总结

这篇文章主要目的是将平时工作中,犯过的错误进行总结,避免以后再次进入相同的坑中。
谨记“一个人不可能犯同样的错误两次。第二次还这样做,已经不再是犯错,那是你的选择“

案例1:sv中“||”的运算求解规则

题目: 求两个32bit数据的按位或值。

错误的写法:
在这里插入图片描述
错误仿真结果:
在这里插入图片描述
原因分析:
从错误的结果中可以看出,只打印了"aaaaaaaa",原因是,对于||运算符,如果左边的表达式为真时,则右边的表达式就不会执行。
再看最终的or_val,发现并未得到我们的按位或的期望值,而是00000001,原因是||运算符的结果,只能是0或1,这两个值。

正确写法:
在这里插入图片描述
正确仿真结果: 结果符合预期值
在这里插入图片描述
心得体会:||与|,只是少了一个|,很容易发生笔误现象,但是如果写错了,则会发现,逻辑仿真时,它们所表达的含义完全不同,所以写代码时,要时刻小心,不然你debug的时间,会是你coding时间的double,有可能会更多。

案例2:inside混淆之处

由来: 最近项目中,遇到下面这样一个语法问题,起初乍一看以为是它?再仔细一看,发现不是,最后感悟还是自己基本功不扎实,导致初看理解有误,现记录下,鞭策自己继续学习。

实例: 实例截图如下:
在这里插入图片描述
仿真结果: 仿真结果截图图如下:
初看此代码时,觉得打印的val值应该是1或者2,实际情况真是啪啪打脸了,由下图可见,打印出的值是0,因为val的默认值是0,不属于1和2,所以inside操作符返回的是0。为什么会理解错了呢?主要还是将约束中的inside与sv 操作符的inside混淆了,所以真是学艺尚浅!!!
在这里插入图片描述
语法知识回顾: 实例截图如下:

  1. inside用在约束块中的情形
    在这里插入图片描述
  2. inside做操作符的场景
    在这里插入图片描述

上图内容分别来源于:
(1)https://blog.csdn.net/bleauchat/article/details/90381532?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161828208216780262512005%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=161828208216780262512005&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_v2~rank_v29-1-90381532.pc_search_result_hbase_insert&utm_term=constraint+inside&spm=1018.2226.3001.4187
(2)https://blog.csdn.net/gsjthxy/article/details/107510107?ops_request_misc=&request_id=&biz_id=102&utm_term=sv%20inside%E6%93%8D%E4%BD%9C%E7%AC%A6&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-1-107510107.pc_search_result_hbase_insert&spm=1018.2226.3001.4187

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值