在Verilog-2001中新增了语句generate,通过generate循环,可以产生一个对象(比如一个元件或者是一个模块)的多次例化,为可变尺度的设计提供了方便,generate语句一般在循环和条件语句中使用,为此,Verilog-2001增加了四个关键字generate,endgenerate, genvar, localparam,genvar是一个新增的数据类型,用在generate的循环中的标尺变量必须定义为gnevar类型。
1 //1bit width buffer_1 2 3 module buffer_1( 4 input wire in, 5 output wire out 6 ); 7 assign out = ~in; 8 9 endmodule
1 //8bit width buffer 2 3 module buffer_8( 4 input wire[7:0] din, 5 output wire[7:0] dout 6 ); 7 8 // Generate block 9 genvar i; 10 generate 11 for(i=0; i<8; i=i+1) begin:BLOCK1 12 buffer_1 buffer_1_1(.in(din[i]), .out(dout[i])); 13 end 14 endgenerate 15 16 endmodule
1 //testbench 2 module buffer_8_tb; 4 // reg & wire define area 5 reg [7:0] din; 6 wire[7:0] dout; 7 8 // Instance the DUT 9 buffer_8 buffer_8_1( 10 .din (din ), 11 .dout (dout ) 12 ); 13 14 // Generate the stimulate 15 initial begin 16 din = 8‘d7; 17 #10; din = 8‘d6; 18 #10; din = 8‘d4; 19 #10; din = 8‘d7; 20 #10; $finish(); 21 end 22 23 endmodule
汤晓东
2014-06-13 晚 于苏州
Verilog中generate语句的用法,布布扣,bubuko.com
原文:http://www.cnblogs.com/txd717/p/3787601.html