如何修复“错误:部分选择范围非法”?

问题描述 投票:0回答:2
bit[2:0]  size;
bit[2:0]  num;
bit[59:0] data;
data = 60'h12345;
num = 3'h1;
size = 3'h1;

data = {(num+1){data[(size+1)*10-1:0]}};

////错误-[IRIPS] 部分选择范围非法

////警告-[WUIMCM] 多重连接乘数中未知

我该如何解决这些问题?

system-verilog
2个回答
1
投票

SystemVerilog 不允许操作数的宽度可变。您需要创建一个掩码来选择

data
变量的部分,并且需要使用
for
循环进行复制。

bit [59:0] data_select = data;

data_select &= (61'b1 << (size+1)*10) - 1;
for(int i=0;i<num+1;i++) begin
   data <<= (size+1)*10;
   data |= data_select;
end

0
投票

我在以下代码的部分选择中收到错误-[IRIPS]非法范围。请帮我解决这个错误

代码: 对于 (int i =0; i<16; i++) begin efuse_val[(ix32)+31:(ix32)] = 32'hffffffff; end

编译错误: 错误-[IRIPS] 部分选择范围非法 部分选择的范围非法: select.efuse_val[((i * 32) + 31):(i * 32)] 部分的未知范围

© www.soinside.com 2019 - 2024. All rights reserved.