The Cell Hierarchy Digest (CHD) is a data structure designed to solve this problem. A CHD is an in-memory database which contains information about a hierarchy of cells, in a very compact manner. It holds no information about the geometry contained in the cells, but does contain offsets into the original layout file, so that through the CHD, the cell contents can be obtained reasonably quickly. Since the CHD uses a small fraction of the memory of the full design in the main database, it allows operations to be performed on very large designs with a modest computer.
The operations that can be performed with a CHD generally involve translation of a layout file into another layout file. For example, cell sub-hierarchies can be extracted, scaled, layers filtered or aliased, or cell names globally changed or aliased. The hierarchy can be flattened, filtered through a rectangular window and possibly clipped to the window, and empty cells (possibly produced by layer filtering) can be removed.
The CHD can also be used to view but not (directly) edit a large file. This is not as fast as viewing through the main database, but it is possible to view much larger files with a CHD.
There are also some novel ways to use CHDs in Xic to perform some limited editing. Reference cells in the main database are dummy cells that contain no data, but reference a cell hierarchy through a CHD. These cells can be instantiated in other cells normally. However, when written to a layout file on disk, they are replaced in output with the full referenced hierarchy obtained through the CHD. Thus one can use reference cells to assemble the top-level cell of a very large design. Each reference cell points to a sub-part of the design, kept in a separate layout file. When the top-level cell is written to disk, all of the parts will be extracted and combined into this file.
There is a cell override table which contains the names of cells in main memory. When enabled, when reading cell data through a CHD, cells in the override table will supersede cells in the original layout file. Thus, the cell override table provides a substitution mechanism. To perform minor editing in a hierarchy too large for main memory, one can
There is a related Cell Geometry Digest (CGD) which contains highly compact geometry collections on a per-cell/per-layer basis. A CGD can be linked to a CHD, with the total memory used still far smaller (by approximately a factor of 10) than the same cell hierarchy in the main database. With a linked CGD, when reading cell data through the CHD, the data are extracted from the CGD, avoiding accessing the original file on disk. This is usually faster.