【问题标题】:How do I fix "Error: Illegal range in part select"?如何解决“错误:部分选择中的非法范围”?
【发布时间】:2021-12-20 23:53:06
【问题描述】:
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


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2016-01-23
      • 2014-02-12
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多