我知道您不能在generate中的always_comb块中使用SystemVerilog,但是我想做一些类似于下面所示的事情,而且我也不知道如何才能做到这一点。
genvar i, j;
generate
for (i = 0; i < 4; i++) begin
always_comb begin
unique case (STATE)
0: begin
...
for(j = 0; j < 8; j++)
var[j*8+2*i+1:j*8+2*i] = 2'b11;
end
...
endcase
end
end
endgenerate现在,它给出了以下编译错误:Unknown range in part select --任何帮助都将被接收。
发布于 2021-07-26 13:42:00
var是verilog中的关键字,它不能用作variable.genvar j不能在系统verilog中的始终block.所以,你需要
int
var重命名为
j声明为非genvar变量的其他变量,即宽度总是2,因此您可以使用系统verilog +:或-: range var实际上不再需要系统verilog中的generate..endgenerate标记。H 228G 229以下是一个例子:
genvar i;
//generate
for (i = 0; i < 4; i++) begin: loop
always_comb begin
unique case (STATE)
0: begin
//...
for(int j = 0; j < 8; j++)
v[j*8+2*i +: 2] = 2'b11;
//v[j*8+2*i+1:j*8+2*i] = 2'b11;
end
//...
endcase
end
end
//endgeneratehttps://stackoverflow.com/questions/68527115
复制相似问题