verilog2001中有generate这个语法,近日有用到,简单归纳如下:
语法:
1。genvar后面的for,变量必须是genvar变量;generate+if,不如`ifdef `else `endif;
2。for里必须有begin,哪怕只有一句;
3。begin必须有名称,原因见4;
4。这里例化的模块名称是inst[j].unit;
5。generate语句可以看作是标准化为块的综合指令。
应用实例:
generate可以用for,case,if。其中,generate实例化多个器件很简洁。
案例generate
genvar j ;
for(j=0;j<=INST_NUM;j=j+1)
begin : inst
dff #(PARAMETER) unit(
.clk(clk),
.ena(ena),
.in(in),
.out(out)
) ;
end
endgenerate
generate还可以进行多个assign赋值!
案例
module anytest_v(
input clk,
input[7:0] datain,
output[7:0] dataout,
output finish
);
wire[7:0] mem[31:0];
wire[32*8-1:0] xxx;
//reg[7:0] i;
generate
genvar i;
for(i=0;i<=31;i=i+1)
begin :wiertech
assign mem= 8'b0;
end
endgenerate
endmodule
文章评论(0条评论)
登录后参与讨论