Reputation: 197
I know you can not have a generate
inside an always_comb
block in SystemVerilog, but I want to do something similar to what I show below and I do not know how I could do it.
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
Right now it gives me the following compilation error : Unknown range in part select
Any help would be apreciatted.
Upvotes: 0
Views: 3321
Reputation: 12354
var
is a keyword in verilog, it cannot be used as a variable.genvar j
cannot be modified inside an always block.endgenerate
so, you need to
var
to something elsej
as a non-genvar variable, i.e., int
2
, so you can use the system verilog +:
or -:
range specifiersgenerate..endgenerate
markers any longer in system verilog.here is an example:
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
//endgenerate
Upvotes: 2