定义了一个队列
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[$];
博客讨论了在定义和约束队列大小及元素值时遇到的编译错误。作者指出,错误源于尝试将1bit的队列元素赋值为2,超出了其表示范围。解决方案是将队列元素定义为多Bit。文章强调了正确理解和设定数据类型在避免此类错误中的重要性。
9829

被折叠的 条评论
为什么被折叠?



