`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语句,简化用户的编程。