Specman:如何生成含3个4与2个2的5元素列表?
正确实现方式
方法一:使用约束表达式
原代码缺少对列表长度的约束,且不符合e语言(Specman)的约束语法规则,以下是修正后的代码:
my_list : list of uint; gen my_list keeping { // 约束列表长度为5 my_list.size() == 5; // 指定值为4的元素数量是3 my_list.count(it == 4) == 3; // 限制所有元素只能是2或4,避免出现其他无关值 foreach (my_list[i]) { my_list[i] in [2, 4]; } };
方法二:直接构造后打乱顺序
如果不需要复杂的随机约束逻辑,也可以直接构造包含指定元素的列表,再打乱顺序实现随机排列:
my_list : list of uint; gen my_list = list(4, 4, 4, 2, 2).shuffle();
这种方式更直观,能精准保证元素数量符合要求,同时满足随机排列的需求。
内容的提问来源于stack exchange,提问作者Zeev Gal
相关产品推荐
相关产品推荐

