IC验证学霸笔记3—SV--随机约束(二)

2.1数组约束

2.1.1 对数组属性约束

2.1.2 对数组元素约束



随机的输出结果:
sum=1011, val= 83 249 197 187 152 95 40 8

sum=1012, val= 213 252 213 44 196 20 20 54

sum= 370, val= 118 76 176 

sum= 976, val= 233 187 44 157 201 81 73 

sum= 412, val= 172 167 73 

2.1.3数组产生唯一元素值

也可以利用randc变量来辅助生成唯一元素值的数组。 

2.1.4随机化句柄数组

•    随机句柄数组的功能是在调用其所在类的随机函数时, 随机函数会随机化数组中的每—个句柄所指向的对象。 因此随机句柄数组的声明—定要添加rand来表示其随机化的属性, 同时在调用随 机函数前要保证句柄数组中的每一个句柄元素都是非悬空的,这需要在随机化之前为每—个元素句柄构建对象。
•    如果要产生多个随机对象, 那么你可能需要建立随机句柄数组。 和整数数组不同 , 你需要在随机化前分配所有的元素, 因为随机求解器不会创建对象。 使用动态数组可以按照需要分配最大数量的元素, 然后再使用约束减小数组的大小。 在随机化时, 动态句柄数组的大小可以保持不变或减小, 但不能增加。

2.2随机控制

2.2.1随机序列

产生随机序列的另一个方法是使用SV的randsequence结构。这对于随机安排组织原子(atomic)测试序列很有帮助。
我们可以使用randcase来建立随机决策树, 但它带来的问题是没有变量可供追踪调试。
总结:
•    randsequence和randcase是针对轻量级的随机控制的应用。 而我们可以通过定义随机类取代上述随机控制的功能,并且由于类的继承性使得在后期维护代码时更加方便。
•    randsequence的相关功能我们在协调激励组件和测试用例时, 可能会用到。
•    randcase则对应着随机约束中的dist权重约束+if-else条件约束的组合。

注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持
#深度学习##做项目##芯片IC验证工程师##转行转岗经验分享##你为什么选择硬件行业#
全部评论
在牛客受益良多
点赞 回复 分享
发布于 2022-09-14 16:28 河南

相关推荐

02-25 23:53
门头沟学院 Java
神哥不得了:神哥来啦~自我评价和校园经历的话可以直接删了,从大厂暑期的话应该没有什么太多问题,应该是能拿到很多大厂面试机会的,就是在面试的时候表示的好一点就行,可以在面试前先把高频top 50的八股多巩固几遍,千万不要看那些假高频八股,这两个项目的话问题不是很大,应该能够帮你找到大厂实习的,算法的话一定要刷起来,因为大厂有些还是比较看重算法的
点赞 评论 收藏
分享
评论
2
2
分享

创作者周榜

更多
牛客网
牛客企业服务