保捱科技网
您的当前位置:首页sv中的数组方法

sv中的数组方法

来源:保捱科技网


sv中的数组方法

定宽数组:

非合并数组:bit[7:0] un_packed [4];

高位没?用。

合并数组:bit [3:0] [7:0] packed;

组成?一个32bits。必须是[msb:lsb]的形式。

@后?面跟数组的话,只能跟合并数组。

动态数组:int dyn[];

new[]分配空间。

基础类型相同时,可跟定宽数组相互赋值。

队列列: [$]。

不不需要new[]构造。

关联数组:bit[63:0] a_arry[bit[63:0]];

适?用于超?大容量量的存储,只为实际写?入的元素分配空间。

元素是系数分布的,for循环不不太适合,适合?用foreach。

可?用字符串串作为索引。

数组操作:

$size()返回数组的宽度。

= 数组整个赋值。

== 数组?里里的所有元素是否相等。

array.delete(),删除所有元素(动态)。

exits(); 检查元素是否存在(关联)。

队列列操作:

q.insert(i, j); 在q[i]之后插?入j。j可以是个队列列。

q.delete(i); 删除q[i]。

q.delete(); 删除整个队列列。

q = {}; 删除整个队列列。

q.push_front(), q.push_back() ;在q最前或最后插?入。

q.pop_front(), q.pop_back(); 在q最前或最后弹出,弹出之后元素消失了了。

(适?用于任何?非合并的数组类型,定宽,动态,队列列,关联等)

(不不带参数的话,圆括号可以省略略)

.sum, .product, .and, .or, .xor。注意返回的数据类型。

$urandom_range($size(array)-1),从数组?里里随机选取?一个元素。

.min(), .max(), .unique(),返回的是?一个队列列,unique?用于去掉重复的。用法:

array.?nd_idex with(item>3);

array.?nd_?rst with(item>99);

array.?nd_?rst_idex with(item==5); (寻找的是索引)

arrqy.?nd_last with(item>100); (last)

array.?nd_?rst(x) with (x==4);(?自定义参数)

?nd?

array.sum with(item>7); (与sum结合起来?用)

array.sum with(item<8? item*3:0); (带选择语句句以及运算语句句)

.reverse();将原来的顺序倒过来。

.sort(); 由?小到?大排序。

.rsort(); 由?大到?小排序。

.shuf?e(); 打乱顺序。

其他

数组赋初值?用 `{},队列列赋初值?用{}。

自定义类型之数组:

typedef int farray[8]; 定义了了?一个?长度为8的数组类型farray。

farray x;等价于int x[8]

struct也可分成合并与不不合并,默认是不不合并,合并的话在struct后?面加上packed。

流操作符:

>> 从左向右按bit打包。

<< 从右向左按bit打包。

>> byte,<< byte 按byte打包。

枚举类型的操作:

rst()。返回第?一个

last()。返回最后?一个

next(),next(n)。返回下?一个,下n个。prev(),prev(n)。返回前?一个,前n个。

因篇幅问题不能全部显示,请点此查看更多更全内容