Systemverilog出现的cannot assign to memory或者cannot assign a packed type to an unpacked type

        检查被赋值的reg、logic变量是如何被声明的,是不是把[m:n]给放错位置了,仔细思索是应该声明成向量还是数组,[m:n]是放到变量名前还是变量名后即可。
        有时候我们在给某个reg、logic变量赋值的时候,会出现如下提示:

Error: cannot assign to memory
Error: cannot assign a packed type to an unpacked type

        仔细检查后,发现是在声明reg、logic类型的寄存器时,声明成了数组而非向量。即:

/* 出现错误的代码 */
reg reg_tagv_wen[1:0];//声明成了数组,这里即2个1位的reg

/* 修正后的代码 */
//修正完成后,上方赋值语句不再报错。
reg [1:0] reg_tagv_wen;//声明成了向量,这里即1个两位的reg

        对于数组,你必须明确的指定赋给数组当中的哪一个元素。
        对于向量,你可以同时对其中的若干位同时赋值

        我本人出现这种错误,是因为我的本意是声明成1个2位的向量,但是我把[1:0]放错了位置,放到了变量名后面,声明成数组(2个1位的reg)了,所以导致了报错。

解决方案即把[1:0]挪到前面去,声明成向量就好了。

通用的解决方案
        通用的解决方案是:检查被赋值的reg、logic变量是如何被声明的,是不是把[m:n]给放错位置了,仔细思索是应该声明成向量还是数组,[m:n]是放到变量名前还是变量名后即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值