sv中的数组方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

定宽数组:

⾮非合并数组: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⽤用于去掉重复的。find⽤用法:

array.find_idex with(item>3);

array.find_first with(item>99);

array.find_first_idex with(item==5); (寻找的是索引)

arrqy.find_last with(item>100); (last)

array.find_first(x) with (x==4);(⾃自定义参数)

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

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

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

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

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

.shuffle(); 打乱顺序。

其他

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

⾃自定义类型之数组:

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

farray x;等价于int x[8]

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

流操作符:

>> 从左向右按bit打包。

<< 从右向左按bit打包。

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

枚举类型的操作:

first()。返回第⼀一个

last()。返回最后⼀一个

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

相关文档
最新文档