动态数组约束,使得 8'h00 值应至少包含 4 个元素



我想随机化动态数组,以便特定值应该出现在最小元素N

例如,在以下情况下,这里是约束

数组大小应为最小 20,最大为 50

所有元素应为 8'h0a、8'ha0、8'hff、8'h62

所有元素在数组中应至少出现 5 次。

没有 2 个相同的元素应该并排(a[0] = 8'h0a,那么 a[1] 不能是 8'h0a(

这是代码。

class trans;
rand bit [7:0] a [];
// For 1st Constraint  
constraint c_size {a.size() inside {[20:50]};}
// For 2nd Constraint
constraint c_element {foreach(a[i]) a[i] inside {8'h0a, 8'ha0, 8'hff, 8'h62};}
// For 3rd Constraint
constraint c_min {
// Only valid if 20 entries and all values exact 5 times
// a.sum() with (int'(item)) == ((10*5)+(160*5)+(255*5)+(98*5));
}
// For 4th Constraint
constraint c_side {foreach (a[i]) (i > 0) -> (a[i] != a[i-1]);}
endclass

我不确定,如何为min 5 times写作.

您可以执行以下操作来计算表达式为 true 的次数

a.sum() with (int'(item==value))

如果将值集放入数组中,则会更容易。然后你可以写

int values[]='{8'h0a, 8'ha0, 8'hff, 8'h62};
// For 2nd Constraint
constraint c_element {foreach(a[i]) a[i] inside {values};}
// For 3rd Constraint
constraint c_min {foreach(values[i]
a.sum() with (int'(item==values[i])) >= 5;
}

相关内容

  • 没有找到相关文章