2

How can I define an array of "register_bank" in a "generate" block and use them? I mean something like this:

genvar i;
generate
   for(i = 0; i < 4; i = i + 1)
   being
      reg [15:0] register_bank [0:31];

      always @(posedge clk)
      begin
         if(we)
         begin
            register[i][addr] <= data_i[i * 16 +: 16];
         end
         else
         begin
            data_o[i * 16 +: 16] <= register[i][addr];
         end
      end
   end
endgenerate

1 Answer 1

3

I just found the answer. We can do that using the name of the block. Just like the following code:

genvar i;
generate
   for(i = 0; i < 4; i = i + 1)
   begin : my_reg_bank
      reg [15:0] register_bank [0:31];

      always @(posedge clk)
      begin
         if(we)
         begin
            my_reg_bank[i].register_bank[addr] <= data_i[i * 16 +: 16];
         end
         else
         begin
            data_o[i * 16 +: 16] <= my_reg_bank[i].register_bank[addr];
         end
      end
   end
endgenerate
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.