6-4: Making Arrays

If one copy is not enough, Electric has a command for building an array of circuitry.

The Array... command (in menu Edit) takes the currently highlighted objects and replicates them many times. You specify the number of replications in the X and Y directions and the geometry is arrayed. Arbitrary expressions can be used in this dialog, for example "3*4+1".

 Arrays are generated by X (row) with Y (column), following a raster scan order. If you request that alternate rows or columns be flipped, then they are mirrored in the direction of repetition. If you request that alternate rows or columns be staggered, then each element is offset by an alternating amount. If you request that the rows or columns be centered, then the original circuitry will be placed in the middle of the array instead of the corner. If the X or Y values are negative, then the array is laid out backwards (replications are placed in the reverse direction).

There are four ways to specify spacing: edge overlap, centerline distance, essential bounds spacing, or measured distance. The edge overlap amounts indicate the amount by which the rows and columns will be squeezed together (zero overlap causes the each arrayed copy to touch the next one, negative overlap can be specified to spread the objects apart). Centerline distance is the distance between object centers, and defaults to the size of the selected objects (which causes the copies to touch). Essential bounds is a size that is set for set for specific cells by placing two or more Essential Bounds nodes in the cell (see Section 7-6-3). If a cell with essential bounds is arrayed, that value can be used. Finally, the last measured distance can be used to determine the array spacing (for more on measuring, see Section 4-7-4).

Checkboxes at the bottom of the dialog are special cases:

• "Linear diagonal array" indicates that the array is linear (one of the repeat factors must be 1) but that both spacing rules will be applied. This therefore creates a single line that runs diagonally.
• "Generate array indices" requests that the array entries be drawn with index information. When this is checked, array entries are labeled with the index of each entry. The original copy is labeled "0-0" and the copy to its right is labeled "1-0". These names are simply visual tags that have no bearing on the contents (use the Object Properties... command, in menu Edit / Properties, to set or remove these names).
• "Only place entries that are DRC correct" requests that array entries only be placed where they do not create design-rule violations. This option is only available if a single node is being arrayed. After the array is created, the design-rule checker is run on each entry, and if it causes an error, it is removed.
• "Transpose placement ordering" requests that array placement go by column instead of by row. This is useful if the arraying includes names which are being auto-incremented in the array. By transposing the order of arraying, the names will run in the orthogonal direction.

Note that the Array dialog is modeless and can remain on the screen while other work is being done. Both the "OK" and "Apply" buttons create an array, but the "OK" button also closes the dialog. The "Draw" button lets you drag an area on the screen in which the array will be placed. As you are dragging the area, the individual array elements are shown so that you can see the extent of the array. When the button is released, the array is created.