The underlying hardware for the matrix is a regular collection of simple processing elements called cells. All cells actually have identical hardware to each other. The specific behavior of the cell is controlled not by the way it was manufactured, but by a changeable memory.

Cells within the cell matrix have a special characteristic called self-duality. This refers to the fact that no cell is predisposed to either being a source or a target of configuration operations. Cell X may be configuring cell Y, and, once configured, cell Y may in turn configure cell Z (shown on the right). This ability of a cell to switch from being configured to configuring another cell is key to the power of the cell matrix.
In reality, a cell can only directly configure an immediately adjacent cell. However, through cooperation among nearby cells, a cell can effectively configure a non-adjacent cell. Cell X can configure cell Y such that cell Y will accept data from X and load it into Z's truth table (shown on the right). By first placing Y in C-mode (to configure it), and then returning Y to D-mode (so Y will "execute" it's truth table), cell X is thus able to output data to be loaded in cell Z's truth table. This is one technique by which a cell can configure non-adjacent cells, an essential ability for building large circuits.
     Operations such as this require a sequence of configuration steps, some of which will build up access paths to non-adjacent cells, and some of which will use those access paths to configure non-adjacent cells (click here for an example). A cell library is one way to generate such sequences (see self configurable).


other features . core