更多内容请关注下面公众号!
硅芯思见
本文纯属学习之用,欢迎指正文中不足,封面图片若有侵权,请及时沟通!
在SystemVerilog中,约束一般分为两种:一种称之为“硬约束hard constraint”,这种也是我们经常使用到的约束方式,还有另外一种称之为“软约束soft constraint”,那么这个“软约束”是如何使用产生约束呢?本文将通过示例说明“软约束”的使用方法和注意事项。
“软约束”之所以“软”主要是因为“软约束”提供给了用户更多的自适应性,用户可以通过各种其他约束方式实现对于“软约束”的各种蹂躏。一般情况下,用户使用“软约束”实现默认约束的设置,当有新的约束或者更高优先级的约束时,尽管此时新的约束可能与“软约束”设置约束冲突,但是也不会产生任何warning,但是同样的约束冲突对于“硬约束”是无法忍受的,如下例。
【示例】“硬约束”约束冲突
【仿真结果】
示例中采用的是“硬约束”,因为定义在类中的约束与随机时指定的内嵌约束“矛盾”,所以导致约束解析器解析随机失败,即“硬约束”要求所有相关的约束条件不能互相矛盾,否则将会随机失败。同样的示例,如果我们采用“软约束”结果就不一样了,如下例。
【示例】
【仿真结果】