关联数组
背景
关联数组在过去的几年中我基本没有用到过它,但是它实际上在验证中扮演了非常重要的角色
核心内容
- 关联数组的声明
- 关联数组的查找
我的理解
绿皮书上对于关联数组的描述是:“用来保存稀疏矩阵的元素”。用简单的话来描述说,我需要一个超大的空间,但是可能只会用到其中的几个位置,但并不代表其他的空间不重要。
想到这个描述我的第一反应是寄存器。我们每个case可能只会对某几个寄存器进行访问,但是我们需要寄存器的地址是连续的。
bit[63:0] assoc[bit[31:0]];
assoc[32'h0000_000C] = 64'hDEAD_BEEF;
联合数组有一点Python的dictionary的感觉,都是键值对,但是又不太一样。对于联合数组要注意的问题就是,我怎么知道这个key有对应的value呢?
绿皮书给出的解决方案,一个是遍历的时候使用foreach循环,或者在do…while函数里面使用first和next函数找到有值的index,还可以用assoc.exists(key)来确认对应的key是否存在。
实战要点
- 工作中可以这么用:如果需要频繁用key来找对应的值,关联数组是最好的选择
- 容易踩的坑:千万注意在访问之前确认对应的key是否有值,否则双状态会返回0,四状态会返回X
一句话总结
关联数组在访问前要确定对应的key是否有值


被折叠的 条评论
为什么被折叠?



