定义了一个队列
rand bit len_q[$];
//对队列深度进行约束
constraint queue_size_range {
len_q.size() == repeat_times;
}
然后遍历,队列的内容,对队列中的每个元素进行约束
constraint len_dist{
foreach(len_q[i]) {
len_q[i] == 2;//约束每个元素的值都等于2
}
}
但是编译的时候会报错
Solver failed when solving following set of constraints
rand bit[30:0] len_q.size();// rand_mode = ON
rand bit[0:0] fv_temp_67;
constraint queue_size_range
{
(len_q.size() == repeat_times);
}
constraint len_range
{
len_q.size() -> (fv_temp_67 == 2);
}
报的错误很奇怪,首先我定义的len_q不是32bit的,是1bit,然后rand bit[0:0] fv_temp_67不知道是什么
看原代码可以看出,约束失败的问题是我定义了1bit的len_q,但是在赋值的时候,却赋值为2,超过了表示范围,所以len_q的定义应该是多Bit,rand bit[18:0] len_q[$];