Generate

Generate allows the generation of multiple objects.

Syntax:

generate 
  [ genvar_declaration ]
  generate_scheme
    generate_block
endgenerate

generate_scheme = for loop | if-else | case 

Description:

A generate loop permits generating multiple instances of modules and primitives, as well as generating multiple occurences of variables, nets, tasks, functions, continuous assignments, initial and always procedural blocks.

The index variable used in a generate loop must be a genvar variable. This variable can be declared inside the generate loop or in the module containing the generate loop.

Example:

generate
  genvar i;
  for (i = 0; i < 10; i = i + 1)
    begin : gen
      initial $display("%d", i);
    end
endgenerate

generate
  if (A < B)
    Mult1 u1 (A, B, Q);
  else
    Mult2 u1 (A, B, Q);
endgenerate

See also:

Genvar, Localparam