Each symbol table contains a hash table for cell names, which is used as the "cell override table" when working with CHDs. The Cell Table Listing panel lists the cell names in this table, for the current symbol table. This panel is made available through the Edit Cell Tab button in the Cell Hierarchy Digests panel.
The names listed in the table are cells found in the global string table for cell names. This includes the names of cells read into memory, and the names of cells referenced in CHDs in memory. The names persist even if the corresponding cell or CHD is removed from memory, until a global clear is performed with the ClearAll script function.
The panel provides the following buttons to manipulate the table contents.
The listing window is also sensitive as a drop receiver, so that cell names can be dragged/dropped from other windows, such as the Cells Listing panel, or the Contents listing of the Cell Hierarchy Digests panel.
If a cell is read into the main database from a CHD, and the ChdLoadTopOnly variable is set, then the cell will automatically be added to the table.
The state of the ChdLoadTopOnly variable (set or not) tracks the state of the Load top cell only check box in the Cell Hierarchy Digests panel.
If Skip is selected, the cells will simply be skipped. This is applicable when writing an archive file via a CHD, in which case cell definitions for the override cells will not appear, however references to the cells will remain. The file will require the library mechanism or some other means of satisfying the references when the file is read. In this mode, it does not matter whether or not the named cells exist in the main database.
These two choices track the state of the SkipOverrideCells variable.
The table can also be maintained through use of the script functions described in F.4.3.
When a CHD is accessing cell data, if overriding is enabled and the cell name matches a name in the table, the CHD will access the cell in main memory and not from any other source. The contents of the cell will be streamed recursively, however only subcells with names that are also in the table will have cell definitions included. Subcells that are not included in the table should exist in the CHD, otherwise there will be an undefined cell in output.
Note that substituting cells will not prevent the CHD from outputting cells that, given the substitutions, are not used in the hierarchy. For example, suppose cell A in the CHD has an instance of cell B, and this is the only instantiation of B. Consider that A is overridden by a version that does not instantiate B. In the current release, the output file will contain B, as an unused cell (top-level).
As an example of how the override mechanism and related features can be used, imagine that we have a large GDSII layout file, and we would like to make a small modification to the top-level cell. Suppose that the file to too large to load into main memory in the usual way for editing.
The first step is to create a CHD for the file, using the Cell Hierarchy Digests panel from the File Menu. The Add button can be used to create the CHD, which will be listed on the panel.
Next, we grab the cell that we wish to modify into the main database. Select the CHD and press the Contents button in the Cell Hierarchy Digests panel. A listing of all cells in the file will appear, with the top-level cells listed first, with an asterisk.
Press the Load Top Cell button. With this button pressed, when a cell is opened in the main database from the CHD, only that cell, and not its complete hierarchy, will be opened in memory. This is important, since we know that the complete hierarchy of the cell we plan to edit will not fit in memory.
In the content listing, drag the name of the cell to be edited to the main drawing window and drop it there. The cell will be displayed, and is ready for editing. Note that, when unexpanded, all of the subcells appear normal, however when expanded, they disappear. The subcells are actually CHD reference cells, which have no content but serve as a pointer to the CHD when the subcell data is needed.
Once the appropriate changes have been made, there are two ways to save the modifications. The first way relies on the assumption we made earlier that the cell being edited is the top-level cell in the hierarchy. Since this is so, we could simply save the current cell as GDSII. When saving, the reference cells are expanded to the full hierarchy during writing.
The second method illustrates the use of the override cells. Press the Edit Cell Tab button to bring up the editor window for the override cell table. The cell of interest will already be listed, since it was automatically inserted when it was opened for editing from a CHD when the Load Top Cell button was active.
Press the Use Cell Tab button in the Cell Hierarchy Digests panel, which will enable use of the override table.
In the Convert Menu, press the Conversion button to bring up the Conversion panel. At the top of the Conversion panel, set the Input Source to Cell Hier Name, select the GDSII output format tab, then press the Convert button. When prompted, give the name of the CHD we created, from the Cell Hierarchy Digests panel, it will be something like ``CellHier1''. Then, give the name of a GDSII file to create. The new file will contain the modifications we performed.