| 
		 | 	
  
When you wish to use multiple blocks of logic that are very similar, you can use the For Generate Statement to iteratively generate logic based on a numeric range delimited by arithmetic expressions.
The iter_add.tdf file shown below shows an example of iterative logic generation:
CONSTANT NUM_OF_ADDERS = 8;
SUBDESIGN iter_add
(
   a[NUM_OF_ADDERS..1], b[NUM_OF_ADDERS..1], cin : INPUT;
   c[NUM_OF_ADDERS..1], cout                     : OUTPUT;
)
VARIABLE
   sum[NUM_OF_ADDERS..1], carryout[(NUM_OF_ADDERS+1)..1] : NODE;
BEGIN
   carryout[1] = cin;
   FOR i IN 1 TO NUM_OF_ADDERS GENERATE
      sum[i] = a[i] $ b[i] $ carryout[i];   % Full Adder %
      carryout[i+1] = a[i] & b[i] # carryout[i] & (a[i] $ b[i]);
   END GENERATE;
   cout = carryout[NUM_OF_ADDERS+1];
   c[] = sum[];
END;
In iter_add.tdf, the For Generate Statement is used to instantiate full adders that each perform one bit of the NUM_OF_ADDERS-bit (that is, 8-bit) addition. The carryout of each bit is generated along with each full adder.
| The If Generate Statement is especially useful with For Generate Statements that handle special cases differently, for example, the first and last stages of a multiple stage multiplier. See Using Conditionally Generated Logic for more information. | 
| 
       - PLDWorld -  | 
    
| 
       
  | 
  
| Created by chm2web html help conversion utility. |