{<<{signal}} 和 {signal<<1} 之间的 Systemverilog 位移差异?

Systemverilog bit-shift difference between {<<{signal}} and {signal<<1}?

我有以下 Vivado 模拟器似乎不支持的代码(导致错误:[XSIM 43-3209] - 不支持的构造):

assign b = {<<{a}};

想知道我是否可以将此代码更改为以下内容:

assign b = a<<1;

有人可以确认上面两行是相同的吗? 请注意,a 和 b 都是 8 位宽。谢谢!

不,它们不一样。 {<<{a}}有点反转。 假设 a 的声明范围为 [7:0],您需要编写

assign b = {a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7]};