The CHD facilitates extracting geometric information from the layout file on a per-cell basis, and is used internally during certain operations, including windowing, flattening, and empty cell filtering.
A CHD will contain physical and possibly electrical cell hierarchy data, as extracted from an archive file. Operations with a CHD that contains electrical data will either pass-through electrical data untouched, or strip it entirely. If the CHD is used to read into the database or to write a file, and there is no windowing or flattening, the electrical data will appear in the database or in the output file. If windowing or flattening is employed, only the physical data will be processed. The output will contain only the physical data.
A CHD facilitates random-access to cells within the file, which in general is a reasonably efficient process. However, if the source file is gzip-compressed (GDSII and CGX files only), random seeking can be a very slow process, as the decompression state must evolve from the beginning of the file. Seeking backwards requires rewinding the file and decompressing to the desired offset.
However, there is a random-access mapping option available, controlled by the setting of the ChdRandomGzip variable. This can speed random access into gzipped files, but requires some memory overhead. See the variable description for more information, this feature is not available in all Xic distributions.
The CHD is designed to minimize memory use, and allows processing of huge layout files that can not fit entirely in virtual memory in the normal database. Additional memory reduction is accomplished by saving cell instance lists in compressed form in memory. However, this may have a small computation overhead due to the required decompression before use. The ChdCmpThreshold variable can be used to turn off this compression, if speed is paramount and memory use is not an issue.
Optionally, a CHD can be linked to a companion data structure, called a Cell Geometry Digest (CGD). A CGD is a compact object that supplies cell geometry data. When a CGD is linked, cell geometry are obtained through the CGD (if present in the CGD), instead of from the original archive file. This can reduce access time considerably.
When using a CHD to access cell data, and the CHD has a linked CGD, and the cell data were previously removed from the CGD, the data will be obtained from the original layout file. Thus the CGD can be used as a kind of cache.
There are three types of CGD:
The three types indicate the creation mode of a CGD. In fact, the data access is specified on a per-record basis, so that a CGD could contain records of each type. The mixing of types, and specifically the ability to bring some records into memory (i.e., caching), will be more fully developed in future releases.
The CGD contains a reference count, which is incremented when the CGD is linked to a CHD, and decremented when unlinked. It is possible for a CGD to be used by multiple CHDs. It is not possible to destroy a CGD while the reference count is nonzero, i.e., when it is linked to a CHD.
In Xic, CHDs and CGDs are given access names, which are used to access the CHD or CGD in memory. These names are arbitrary but must be unique among the CHDs or CGDs. They may be assigned by the user or generated within Xic.
The Cell Hierarchy Digests panel, from the Hierarchy Digests button in the File Menu is the main entry point for creation and manipulation of CHDs. Similarly, the Cell Geometry Digests panel from the Geometry Digests button in the File Menu is the main entry point for CGD creation and manipulation. These two panels provide the GUI interface to CHD/CGD creation and manipulation.
In most if not all Xic commands that prompt for the name of a layout file, instead of a file name, the access name of an existing CHD can be given, or the name of a saved CHD file can be given. In the latter two cases, the command obtains geometric data through the CHD, which can be much faster, but operates as one would expect if directly giving the name of the referenced layout file.
However, a linked CGD provides only physical data, and properties and text labels are stripped.