Extraction is the identification of physical devices and subcircuits, and establishment of the connections between them. This is the most compute-intensive and time consuming part of the process. Extraction is done recursively, starting from the leaf subcells and working up to the current cell. It requires that the grouping operation has been performed and the group numbering is up to date.
Initially, subcells that should be flattened into the cell are identified, and the flattening performed. On the initial pass, cells that are wire-only, i.e., contain no devices and only wire-only subcells, and cells that have been explicitly specified as flattenable by the user (see 16.4), will be flattened. In flattening, objects from the master cell are transformed and added to the containing cell, replacing the cell instance. This is done in the shadow cell database used by the extraction system. The extraction may be repeated for a cell, if it is determined subsequently the additional subcells require flattening. This may not be known until the association stage. Suffice it to say that the process is iterative and a bit more complicated than the simple progressive flow implied in this description.
Vias and similar wiring cells should have no electrical terminals, and should not be placed in the schematic.
The extraction operation will look for net labels and physical cell terminals that have been placed by the user. These, if found, supply text names for the group over which they reside. The names are saved along with the object list and other parameters for each conductor group, for later use.
In extraction, devices are recognized by the patterns specified in the device definitions in the technology file. The device contact points are identified, and connecting conductor group numbers recorded. Connections to and between subcells are identified and recorded.
In each subcircuit instance, each conductor group is extracted, transformed to parent cell coordinates, and compared with the parent conductor groups and other subcircuit conductor groups for connectivity. Connectivity between conductor groups can be established through
Conductor groups are merged when necessary due to being connected through subcircuits, flattened and not. When two groups merge, the object lists are merged, and the larger of the two group numbers is replaced by the smaller. When extraction is finished, the groups are renumbered so that the numbering is compact.