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] 多重连接乘数中未知
我该如何解决这些问题?
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
我在以下代码的部分选择中收到错误-[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)] 部分的未知范围