* 作者:JK ZHAN,本文首发于微信公众号“IC Talking”(ID:HelloICTalking),芯片技术文章分享平台。
在计算机编程语言中,集合类型(collection)的数据结构都是非常重要的。这里集合的概念指的是能够将多个数据对象整合到一起进行管理和操作的复合数据类型。
数组(array),是比较重要的、基础的、具有代表性的集合类型。在大部分编程语言中,数组具有一致性、有序性和不可变性。一致性指的是元素类型一致;有序性指的是元素排列顺序确定,可通过下标索引;不可变性指的是长度不可变。多说一句,在现代编程语言中,往往有多样的集合类型突破了这几个性质,主要是为了提供编程便利和保证硬件安全。
SystemVerilog相比于Verilog提供了功能更加丰富的数组类型,包括定长数组(Fixed-size Array)、动态数组(Dynamic Array)、关联数组(Associative Array),还有为多维数组的切片索引提供方便而做区分的合并数组(Packed Array)和非合并数组(Unpacked Array)。
01 定长数组和动态数组
定长数组在声明的时候就必须指定数组的长度(紧凑声明)或者上下边界(完整声明)。这样在仿真程序编译完成之后,系统需要为其分配的内