Verilog-2001添加了generate循环,允许产生module和primitive的多个实例化,同时也可以产生多个variable,net,task,function,continous
assignment,initial和always。在generate语句中可以引入if-else和case语句,根据条件不同产生不同的实例化。
为此,Verilog-2001还增加了以下关键字:generate,endgenerate,genvar,localparam。genvar为新增数据类型,存储正的integer。在generate语句中使用的index必须定义成genvar类型。localparam与parameter有些类似,不过其不能通过redefinition改变值。除了可以在generate语句中使用if-else,case外,还能使用for语句进行循环。
1)包含case语句的有条件的generate语句
generate
case ()
: begin:
end
default: begin:
end else if () begin:
end
endgenerate
其中:condition为条件表达式;value为case的取值;label为标号
3)例化多个模块的generate语句
genvar ;
为此,Verilog-2001还增加了以下关键字:generate,endgenerate,genvar,localparam。genvar为新增数据类型,存储正的integer。在generate语句中使用的index必须定义成genvar类型。localparam与parameter有些类似,不过其不能通过redefinition改变值。除了可以在generate语句中使用if-else,case外,还能使用for语句进行循环。
1)包含case语句的有条件的generate语句
generate
case ()
: begin:
end
: begin:
end
default: begin:
end
endcase
endgenerate
其中:constant_expression为常数表达式;value为case的取值;label为标号。
2)包含if-else语句的有条件的generate语句
generate
if () begin:
;end else if () begin:
;
end else begin:
;end
endgenerate
其中:condition为条件表达式;value为case的取值;label为标号
3)例化多个模块的generate语句
genvar ;
