7

跟进这个关于 SV 中压缩向量和非压缩向量之间的区别的问题,我为什么要使用解压缩向量?
压缩向量具有未压缩向量所没有的这些优点:

  • 您可以对它们执行按位操作
  • 您可以对它们执行算术运算
  • 你可以把它们切片
  • 您可以将它们复制为一个整体矢量
  • 您可以使用打包的向量做任何事情(据我所知)

解压向量比打包向量有什么优势?

4

2 回答 2

12

我喜欢使用 unpacked 的还有另一个原因。解压后,不会有将整个数组名视为变量并进行错误赋值的诱惑(和偶然的可能性)。当您可能认为您正在访问元素 N 的 B 位时,也没有从一个元素到另一个元素的位流的可能性,但实际上您可能正在访问元素 N 的 K 位和元素 N+-1 的 BK 位。 .

我的理念是仅将属于一起的事物作为“信息单元”保留在打包维度中。未包装维度中的其他所有内容。默认思维应该是解包的,只打包你需要的。

例如,如果我有 9 个端口,每个端口都有 21 位信息,我想将其声明为:

input logic [20:0] p1 [9];

20:0部分构成一个信息单元,一起分配和采样(名义上)。将这些位分开将破坏协议或端口的字符。另一方面,将端口数从 9 个更改为 16 个,不会影响每个端口中信息的性质,因此 9 个端口在我看来确实属于未打包维度。

希望这可能会给你一个思考的范式......在这个范式中,你会惊讶地发现有多少东西开始变得没有包装,而你一直认为它是包装好的!

于 2011-08-06T00:58:01.850 回答
8

解压数组的存在有几个原因。

1) 压缩数组作为连续的位序列存储在内存中。解包数组可以让每个元素独立存储,从而产生更好的模拟性能。

2) 解包数组可以是不是位向量的类型。整数、字节、事件、结构、类等数组只能被解包。

3) 大多数数组操作方法仅适用于解包数组。

4)也许,只有解压的数组可以分配给使用数组文字。我不知道。

可能还有其他原因。

于 2009-06-11T15:12:33.827 回答