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
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验证工程师##转行转岗经验分享##你为什么选择硬件行业#• randsequence的相关功能我们在协调激励组件和测试用例时, 可能会用到。
• randcase则对应着随机约束中的dist权重约束+if-else条件约束的组合。
注:优秀验证学员随堂笔记,已经征求到学生的同意,会持续给牛友们分享!
大家看完记得 一键三连!多多支持