跟进此有关SV紧缩和非紧缩向量之间的差异问题,为什么我会永远想用解压载体?
打包向量具有以下优点:解压缩的向量不具有:
您可以对它们执行按位操作
您可以对它们执行算术运算
你可以把它们切成片
您可以将它们复制为整个矢量
你可以用un packed矢量做任何事情(据我所知)
解包载体有多大优势?
还有另一个原因,我喜欢使用unpacked.解压缩后,没有将整个数组名称视为变量的诱惑(并且意外可能),并进行错误的赋值.当你可能认为你正在访问元素N的B位时,也不存在从一个元素到另一个元素的位流失的可能性,但实际上你可能正在访问元素N + -1的元素N和BK位的K位. .
我的理念是只将属于一起的东西保存在包装维度中的"信息单元"中.解压缩维度中的其他所有内容.默认思维应该解压缩,并且只打包你需要的东西.
例如,如果我有9个端口,每个端口有21位信息,我想将其声明为:
input logic [20:0] p1 [9];
该20:0
部分构成一个信息单元,一起分配和采样(名义上).拆分这些位会破坏协议或端口的特性.另一方面,将端口数从9更改为16,不会影响每个端口中信息的性质,因此9个端口确实属于解压缩的维度.
希望这可能会给你一个思考的范例......在这个范例中,你会惊讶地发现有多少东西开始出现,你总是认为它们已被包装!
出于多种原因存在解压缩的阵列.
1)打包的数组作为连续的位序列存储在存储器中.解包数组可以使每个元素独立存储,从而产生更高的仿真性能.
2)解包的数组可以是不是位向量的类型.内联,字节,事件,结构,类等的数组只能解压缩.
3)大多数数组操作方法仅适用于解包数组.
4)也许,只能将解压缩的数组分配给使用数组文字.我不确定.
可能还有其他原因.