`timescale 1ns/1ns
module gen_for_module( 
    input [7:0] data_in,
    output [7:0] data_out
);
genvar j;

generate for(j = 0;j < 8;j = j + 1) begin:data
  assign data_out[j]=data_in[ 7 - j ];
end
endgenerate
 
endmodule

需要注意的是generate for只能用 genvar 声明变量 该变量是临时变量。只用于生成块的计算

在仿真之前循环生成就已经展评,所以用verilog对其设计进行仿真时,该变量已经不存在。

生成块的本质就是使用循环内的一条语句了来代替重复的verilog语句,简化用户的编程。