朋友发给我的芯片验证笔试题,觉得很有意思,和大家分享一下。
面试题目
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
他说不行,要确保随机成功…
</