【芯片验证】面试题·对深度为60的数组进行复杂约束的技巧

朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。

面试题目

class A中一个长度为60的随机数组rand int arr[60],如何写约束使得:

1.每个元素的值都在(0,100]之间,且互不相等;

2.最少有三个元素满足勾股数要求,比如数组中包含3,4,5三个点;

请以解约束最快的角度,完成class A的简单代码示意。

解题思路

原始代码其实就是这样嘛:

class A;

  rand int arr[60];
  constraint arr_cons{};

endclass: A

那现在面临两个约束要求,看上去都是比较复杂的(第一个是不是有类似的随机函数可以做?太久不做验证了记不住了)。所以楞写约束肯定是不行的,或者像耿直的朋友这样做必然也不好:

我当时回答

先随, 然后post randomize的时候判断,没有就fatal

他说不行,要确保随机成功…

</
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

尼德兰的喵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值