热度 16
2014-4-28 14:24
1351 次阅读|
0 个评论
verilog2001中有generate这个语法,近日有用到,简单归纳如下: 语法: 1。genvar后面的for,变量必须是genvar变量;generate+if,不如`ifdef `else `endif; 2。for里必须有begin,哪怕只有一句; 3。begin必须有名称,原因见4; 4。这里例化的模块名称是inst .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 datain, output dataout, output finish ); wire mem ; wire xxx; //reg i; generate genvar i; for(i=0;i=31;i=i+1) begin :wiertech assign mem = 8'b0; end endgenerate endmodule