18_约束块控制与数组约束

1. 约束块控制

在这里插入图片描述

  • 子类约束不能违背父类约束
  • 有冲突的约束可以使用内件函数进行使能控制
    在这里插入图片描述
  • p.c_short.constraint_mode(0)关闭c_short约束
  • p.constraint_mode(0)关闭所有约束
  • p.c_short.constraint_mode(1)打开c_short约束
    在这里插入图片描述
  • randomize失败,返回0。l.length=0,不同仿真器结果可能报警告/错误
    在这里插入图片描述
    在这里插入图片描述
  • 继承的约束越来越多的时候,记不清之前的约束,那就在原先的基础上使用randomize()with附加约束。
    在这里插入图片描述
  • 若没有soft,一个约束不满足,整个约束求解失败,所有成员求解都失败,选B。
  • soft是“软约束”,当叠加约束有冲突,那么其他约束优先级更高,选C。

2. 数组约束

在这里插入图片描述

  • 这里的d是动态数组,d的元素个数在1~10。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 声明了LittleUniqueArray的对象之后,使用randomize对齐进行随机化,真正随机化的其实是里面的val,借助val将类中的ua随机化。
  • rc8必须在foreach外做例化,否则无法令randc发生作用,起到的实际上是rand的作用。
  • SV2012标准有了一个Unique,限定一个数组元素不重复。
    在这里插入图片描述
    在这里插入图片描述
  • da[4]<da[5],由于da[5]不存在因此constraint错误。
  • 需要加if i < da.size()-2
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • B
  • 代码中assert(ra.randomize())只能随机化动态句柄数组中句柄的个数,因为RandStuff中成员北邮被表明rand。因此对象中所有的值都是被初始化的值1。
  • 若RandStuff中成员是rand的,那么答案是ABCD。
  • 一个句柄被表明rand的含义是,该句柄指向的对象中所有内容将被随机化。但是有两个前提:首先句柄不可悬空,然后对象中要有可随机化的成员
  • 若一开始没有给array分配最大容量,那么后续就不能保证randomize()with{array.size()==2}的时候每一个句柄都有可以指向的对象。那么randomize会报错,仿真器不知道到底去随机化谁。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值