首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

贰 | 数据类型6 —— 数组的方法

System Verilog 引进的新的数据类型,他们所具有的优点:

1. 双状态数据类型(bit, byte, shortint, int, longint):具有更好的性能,更低的内存消耗。

2. 队列(int a[$]),动态数组(int a[]),关联数组(int a[string]):减少内存消耗,且自带搜索和分类功能。

3. 类(class)和结构(struct):支持抽象的数据结构。

4. 联合结构和合并结构:允许对统一数据有多种视图(view)。

5. 字符串(string):支持内建的字符序列。

6. 枚举类型(enum):方便代码编写,增加代码可读性。(工程实践中经常使用)

1

思维导图

2

思维导图大纲

数组的方法

SV提供了很多数组的方法,可用于非合并数组类型

不带参数的方法可省略括号

缩减

将数组缩减为一个值

缩减方法

sum

product

and

or

xor

定位

返回值通常是队列

定位方法

min

返回最小值元素队列

max

返回最大值元素队列

unique

排除重复值,返回数组中具有唯一值的队列

find

ex:tp = d.find with (item > 3)

得到所有大于3的元素队列

with

条件语句

item 为重复参数,表示数组中单独的元素

item 缺省名,可通过在数组方法的参数列表中指定其它名

ex:tp = d.find(other) with (other > 3)

ex:tp = d.find_index(other) with (other > 3)

ex:tp = d.find_first(other) with (other > 3)

ex:tp = d.find_first_index(other) with (other == 3)

ex:tp = d.find_last(other) with (other == 3)

ex:tp = d.find_last_index(other) with (other == 3)

返回值是索引的定位方法,返回队列类型是 int 而不是 integer

排序

对数组进行排序

正排序

逆排序

打乱顺序

与定位方法的区别:排序改变了原数组,定位新建了一个队列保存结果

内建函数

.sort();

小到大

.rsort();

大到小

.reverse();

.shuffle();

随机打乱

不能带with,操作范围是整个数组

3

示例

例1:数组缩减方法的使用

定宽数组、动态数组、队列、关联数组都支持数组缩减方法,这个例子测试了 .sum(),.product(),.and(),.or(),.xor() 四种数组缩减方法分别在四种类型的数组上使用。

例2:缩减方法 sum() 的问题

合并数组无法使用数组方法。

对于单 bit 数组使用 .sum() 方法时,其和只保留一位;第 16 行和第 19 行,并不会像我们所期望的那样将位宽与其他参与运算的值位宽对齐。

第 25 行表示可以使用 with 表达式,先将每项转换位宽再求和,以达到单 bit 数组实际求和的目的。

例3:数组定位方法 find

定宽数组、动态数组、队列、关联数组都支持数组定位方法,这个例子测试了一系列 find 数组定位方法分别在四种类型的数组上使用。

例4:with 表达式的使用

第 11 行,使用 find 系列方法返回数组的索引时,除了关联数组外,索引只能是 int 类型,定义成 integer 类型将报上述错误。

例5:数组排序方法

定宽数组、动态数组、队列、关联数组都支持数组排序方法,这个例子测试了 reverse(),sort(),rsort(),shuffle() 数组排序方法分别在四种类型的数组上使用。

关联数组使用排序方法时,同样对值进行排序,键的位置保持不变,排序后,键值对将发生变化。

例6:带 with 的排序方法使用

reverse 和 shuffle 方法不能带 with 条件语句,sort 和 rsort 可以在某些情况下使用 with 表达式,如该例中,以结构中的某一个分量进行排序。

例7:带数组方法的记分板

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OZNMxOSEFkSPLVvCl3syckZw0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券