Verilog2001中generate的用法
(2012-09-24 14:25:22)
标签:
veriloggenerate杂谈 |
分类: 工作札记 |
为此,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 ;
generate
for (=0; < ; =+1)
begin:
generate
genvar j ;
for(j=0;j<=INST_NUM;j=j+1) begin : inst
end
endgenerate
generate还可以进行多个assign赋值!
案例
module anytest_v(
wire[7:0] mem[31:0];
wire[32*8-1:0] xxx;
//reg[7:0] i;
generate
endgenerate