systemverilog把数组长度叫宽度,$size输出“宽度”的疑问和个人理解

如下面的多维常数数组
bit [31:0] a [0:7];
或者
int a[0:7];
我一开始理解为:每个元素都为32bit,a数组里有8个元素。
所以$size操作符被称为求数组的“宽度”我觉得好诡异,反复看了好几篇才确定没理解错。按照C语言的逻辑,宽度应该是元素的大小,长度是元素的个数。

但其实c里数据是按照字节/字算的,sv虽然也是按照32位存,但是sv中C++的部分只是工具,逻辑上还是verilog地位更高。在verilog里,所有数据都是1bit 1个reg或者一根线,所以并没有一个字一个字节这样的概念。声明一个reg[7:0]同样是“位”的宽度为8.按照这个逻辑,上边的数组实际上并不是“元素个数为8”,而是“将bit [31:0]看做一个整体,它的宽度为8”。

还有一点奇怪的就是一般应该是低维度叫宽度,高维度叫长度才对。但是其实这个也能说得通,毕竟不都是二维的,分开叫反而麻烦……所以总之就不要以二维世界的想法来理解了……反正只是个名字而已……

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值