非法分配模式。元素的数量 (1) 与类型的宽度 (2) 不匹配。在系统verilog中

Illegal assignment pattern. the number of elements (1) does not match with type's wirth (2). in system verilog

我附上了它。

module top;
    reg [1:0] arr; 

    reg [2:0] arr_asgn;

    assign arr = {'{ default: arr_asgn[2] }};
endmodule 

这在语法上是不正确的。您在连接 {} 中有一个 assigment pattern。那里没有分配上下文。您必须移除外部括号:

assign arr = '{ default: arr_asgn[2] };

这在语法上是不正确的。当您尝试将二维数组分配给一维压缩数组时。根据 LRM,右侧应该是这样的二维。

  arr[1:0][1:0];
  assign arr = '{'{default:1}, '{default:0} }

或者应该是

 assign arr = '{default:1}