Arria® 10 Core Fabric and General Purpose I/Os Handbook

ID 683461
Date 7/08/2024
Public
Document Table of Contents

1.2.1. Normal Mode

Normal mode allows two functions to be implemented in one Arria® 10 ALM, or a single function of up to six inputs.

Up to eight data inputs from the LAB local interconnect are inputs to the combinational logic.

The ALM can support certain combinations of completely independent functions and various combinations of functions that have common inputs.

The Quartus® Prime Compiler automatically selects the inputs to the LUT. ALMs in normal mode support register packing.

Figure 8. ALM in Normal ModeCombinations of functions with fewer inputs than those shown are also supported. For example, combinations of functions with the following number of inputs are supported: four and three, three and three, three and two, and five and two.


For the packing of two five-input functions into one ALM, the functions must have at least two common inputs. The common inputs are dataa and datab. The combination of a four-input function with a five-input function requires one common input (either dataa or datab).

In the case of implementing two six-input functions in one ALM, four inputs must be shared and the combinational function must be the same. In a sparsely used device, functions that could be placed in one ALM may be implemented in separate ALMs by the Quartus® Prime software to achieve the best possible performance. As a device begins to fill up, the Quartus® Prime software automatically uses the full potential of the Arria® 10 ALM. The Quartus® Prime Compiler automatically searches for functions using common inputs or completely independent functions to be placed in one ALM to make efficient use of device resources. In addition, you can manually control resource use by setting location assignments.

Figure 9. Input Function in Normal Mode


You can implement any six-input function using the following inputs:

  • dataa
  • datab
  • datac
  • datad
  • datae0 and dataf1, or datae1 and dataf0

If you use datae0 and dataf1 inputs, you can obtain the following outputs:

  • Output driven to register0 or register0 is bypassed
  • Output driven to register1 or register1 is bypassed

You can use the datae1 or dataf0 input, whichever is available, as the packed register input to register2 or register3.

If you use datae1 and dataf0 inputs, you can obtain the following outputs:

  • Output driven to register2 or register2 is bypassed
  • Output driven to register3 or register3 is bypassed

You can use the datae0 or dataf1 input, whichever is available, as the packed register input to register0 or register1.