There are other generators built into Electric. These commands (in menu Tools / Generation) may be used:

- Coverage Implants Generator Although individual MOS nodes and arcs have the proper amount of implant around them, a collection of such objects may result in an irregular implant boundary. To clean this up, you can place pure-layer nodes of implant that neatly cover the implant area (see Section 7-1-1). This command does it automatically. It removes previous pieces of coverage implant before running, so that the result is a clean cover.
- ROM Generator... The ROM generator constructs many cells to describe a ROM from a personality file. You will be prompted for the personality file. The first line of the ROM personality file lists the degree of folding. For example, a 256-word x 10-bit ROM with a folding degree of 4 will be implemented as a 64 x 40 array with 4:1 column multiplexors to return 10 bits of data while occupying more of a square form factor. The number of words and degree of folding should be a power of 2. The remaining lines of the file list the contents of each word. The parser is pretty picky. There should be a carriage return after the list word, but no other blank lines in the file. Here is a sample ROM file:
  `1
  010101
  011001
  100101
  101010
  4
  00000000
  10000000
  01000000
  11000000
  `
- MOSIS CMOS PLA Generator... The MOSIS CMOS PLA generator reads two personality files (AND and OR) and generates a PLA array. Each file has only two numbers on the first line to define the size of the array, and the values of the array on subsequent lines. Both the AND file and the OR file are similar. Here is some sample PLA logic:

  f = (a and b and (not c)) or ((not b) and (not a))
  g = (a and c) or ((not a) and (not c))

  Here is the AND file for the above logic:
  `4 3
  1 1 0
  0 0 X
  1 X 1
  0 X 0`
- Fill (MoCMOS)... Fill cells are used to meet metal density rules in modern fabrication processes by filling spaces with certain metal layers. Fill cells are also created to improve chip power distribution and to avoid voltage drops by inserting cap transistors. Electric has a coverage facility to evaluate the amount of fill (see Section 9-2-4). This command generates fill cells.

  Unlike other fill generators, Electric's fill generator creates cells containing power and ground grids of specified layers, usually starting at Metal-2. These cells can also be arrayed into tile cells to cover larger areas. When Metal-1 is filled, the generator will cover the area with cap transistors whose functionality is to prevent voltage drops in the power grid.

  The Fill dialog has two tabs: "Floorplan" and "Tiling". The Floorplan section specifies what is inside of a single fill cell. The Tiling section specifies how those cells are arrayed.

  The Floorplan section offers two fill techniques: Template Fill and Fill Cell (not yet available). Template Fill generates fill cells of a given width and height. The default values reflect the minimum spacing rules given by the technology. The "Reserved Space" section lets you specify which layers of metal will be in the fill cells. These metal layers alternate running horizontally and vertically (the "Even layer orientation" controls which layer runs horizontally first).

  The fill cell will have four metal wires running in each direction: the outer two are Ground and the inner two are Power. The spacing between the inner two is given in the "Vdd Space" section next to the selected metal layer. The spacing between the ground wires and the edge is half of the "Gnd Space" value. The spacing between the power and ground wires is the minimal design-rule spacing for that layer of metal. The width of the wires is then adjusted to fill the remaining space in the cell. |

  | The Tiling section lets you request arrays of fill cells to be generated. Check the desired sizes and they will be generated. Each generated array cell will contain the specified-size array, and it will be internally wired.

- Stitch-Based Fill Generator Similar to the previous fill generator, this stitch-based fill also creates cells or tiles to meet metal density conditions, but it is a more generic tool for signal distribution. Unlike the previous tool, it allows you to generate fill cells that drive any signal, not just power and ground. The fill takes a set of metal arcs stored in cells and stitches them together based on the export names. The metal arcs can all be located in the same cell or distributed in different cells. If the arcs are in different cells, the tool will flatten all cells into one with all the signals. Networks are matched by name up to the first "_" character. For example, arcs in the networks "Vdd_1" and "Vdd_2" will be stitched together. The tool also allows you to stitch cell instances without flattening them; it will use the cell exports for the stitching process instead. This is the typical case for cells containing cap transistors.

  There are two ways to run the tool: (1) by using a documentation cell containing the fill instructions and issuing the Stitch-Based Fill Generator from doc input command and (2) by opening all the relevant cells in different windows and using the Stitch-Based Fill Generator from open windows command.

  When using a documentation cell to control the fill, different combinations of fill cells can be generated at once. It also has the advantage of being easy to re-run when the fill operation must be iterated. Each line in the documentation cell follows the syntax below:

  fillCellName (< options >) : cell1(< option >) cell2(< option >) ... cellN(< option >) @exports = {layerName1, layerName2}

  Where option(s) can be "W" and/or a sequence of title sizes (e.g. 2x2, 4x4, 3x4). The option "W" allows the insertion of exports in the middle of the lowest metal arcs and different tile sizes can be arrayed depending on the area to cover.

  By default all input cells are flattened unless option is "I". In that case, the input cell will be instantiated instead of being flattened in the fill cell.

  The @exports line specifies that exports in the generated cells should use only the layers specified. If this directive is not present, exports are in the two top layers.

  Here is an example:
  `fillAB: fillA fillB
  fillC(W): cap(I) fillA fillB metals45
  fillD(2x4, 2x2): fillB metals45 metal6`

  In the example above, the first line takes the cells "fillA" and "fillB" and stitches the metal bars in "fillAB". Note that the "signalB" bars did not get stitched because the metal 2 bar does not overlap 100% with the metal 3 bar. The second line generates the fill cell "fillCW" with an instance of "cap" and metal arcs from the rest of the input cells. The third line generates the cells "fillD", "fillD2x4", and "fillD2x2" where "fillD2x4" and "fillD2x2" are 2x4 and 2x2 arrays of "fillD" that contains all arcs defined in the input cells "fillB", "metals45" and "metal6".
- Generate gate layouts (MoCMOS) Generates the layout for schematic cells in the Purple and Red libraries (see Section 9-9). To use this command you must have a schematic in the current window. The command then hierarchically scans the schematic looking for instances of the Purple and Red library cells. When it finds such instances it generates layout for them and places the layout in a library called "autoGenLibMOCMOS". If the cell already exists, it is not regenerated.

  The gate layout generator recognizes these gates from the Purple and Red libraries:

  inv | mullerC_sy | nand2HTen | nms2K
  inv2i | nand2 | nand3 | nms2_sy
  inv2iKn | nand2HLT_sy | nand3LT | nms3_sy3
  inv2iKp | nand2LT | nand3LT_sy3 | nor2
  invCLK | nand2LT_sy | nand3LTen | nor2kresetV
  invCTLn | nand2PH | nand3MLT | pms1
  invHT | nand2_sy | nand3en | pms1K
  invK | nand2en | nms1 | pms2
  invLT | nand2k | nms1K | pms2_sy
  inv_passgate | nand2LTen | nms2 |

- Multi-Finger Transistor Cell... This command builds a cell with a multi-finger transistor (multiple transistors connected with contacts).

  You can specify the type of transistor and contact to use as well as the number of fingers (transistors) and the transistor size. Other optional factors include the pitch (extra spacing around the contacts), number of cuts in the contacts (overrides the default), and extra length of the polysilicon (gates). The dialog on the left produces the cell on the right. |

- Acute Angle Fill

  This command fills in corners where arcs make acute angles. The fill has a bend in the middle, and each piece of the bend is the minimum width of the arc. |