for的使用
示例:
genvar i,l;
generate
//-----------------------------------------------------------------------------
//-- WRITE : Write operation
//-----------------------------------------------------------------------------
always_ff @(posedge clk or negedge rst_n) begin
if(~rst_n) begin
// R0 is nil
mem[0] <= 32'b0;
end else begin
// R0 is nil
mem[0] <= 32'b0;
end
end
// R0 is nil
// loop from 1 to NUM_WORDS-1 as R0 is nil
for (i = 1; i < NUM_WORDS; i++)
begin : rf_gen
always_ff @(posedge clk, negedge rst_n)
begin : register_write_behavioral
if (rst_n==1'b0) begin
mem[i] <= 32'b0;
end else begin
if(we_b_dec[i] == 1'b1)
mem[i] <= wdata_b_i;
else if(we_a_dec[i] == 1'b1)
mem[i] <= wdata_a_i;
end
end
end
if (FPU == 1) begin
// Floating point registers
for(l = 0; l < NUM_FP_WORDS; l++) begin
always_ff @(posedge clk, negedge rst_n)
begin : fp_regs
if (rst_n==1'b0)
mem_fp[l] <= '0;
else if(we_b_dec[l+NUM_WORDS] == 1'b1)
mem_fp[l] <= wdata_b_i;
else if(we_a_dec[l+NUM_WORDS] == 1'b1)
mem_fp[l] <= wdata_a_i;
end
end
end
endgenerate