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
思维导图大纲
动态数组
数组的宽度不在编译时给定,而在仿真时分配空间或调整宽度
声明采用 []
int dyn[];
数组一开始是空的,需使用 new[size] 操作符分配空间,同时在[]中指明宽度
可将数组名传给 new[] 构造符,将已有数组值复制到新数组中
dyn = new[20](src);
dyn.delete(); 删除所有元素
不能使用 delete(n) 删除其中一个元素
动态数组的内建子程序
delete()
size()
基本数据类型相同时,定宽数组与动态数组之间可以相互赋值,只有当元素数目相同时,动态数组才可以赋值给定宽数组。
3
示例
定位11行,定宽数组没有 size() 内建子程序。
定位20行,当在 new 中使用表达式作为初始值时,左右两边赋值类型需要保持一致。
定位26行,当用动态数组赋值给定宽数组时,需要保持动态数组与定宽数组 size 一致,不一致将报 size 不匹配错误。而将定宽数组赋值给动态数组时,无需保证两者 size 一致,动态数组的 size 值将自动调整为赋值后定宽数组 size 的大小。
领取专属 10元无门槛券
私享最新 技术干货