Re: vi a array
A via array (or 'via farm') is a group of vias arranged in a regular pattern of rows and columns, and that are all on the same net.
Via arrays are usually used when a wide wire changes layer (e.g.: power or ground wire). These wires are wide because they have to carry a lot of current. A single via is not able to carry sufficient current, so you need either (a) a much bigger via, or (b) more of the regular small vias connected in parallel (i.e.: placed next to each other). For manufacturability reasons the fabs prefer all vias to be the same size, so everybody uses solution (b).
In summary, when wide wires change layer they do so through multiple vias arranged in an array pattern. The size of the array is determined by the current carrying capacity of the vias and the amount of current you need to conduct. In practice, the via array is always made as big as possible to cover the entire overlap area between the wire segments on the 2 layers (the more the merrier).
The other reasons to do this are:
- to reduce the via resistance (yes, vias arranged in parallel reduce the net resistance for the layer transition)
- to avoid electro-migration issues, and
- to improve yield by providing via redundancy
Via arrays can be represented in LEF with the following command:
VIA ...
VIARULE ....
ROWCOL <= specify the number of rows and colums in the array
You can define your own VIARULE