When reference cells are placed in a layout, and the layout is written to an archive file format on disk, the reference cells are replaced with the hierarchy referenced.
Reference cells can be created from the Cell Hierarchy Digests panel, with the Cell button.
Here is an example to illustrate how reference cells may be created and used. Assume that we have a file named ``input.gds'' that contains a cell named ``input_top.
From the ell Hierarchy Digests panel, the Add button is used to create a CHD for input.gds.
The resulting CHD is selected in the listing, and the Cell button is pressed. A pop-up will appear requesting the name for the cell. The default name is the default top-level cell for the CHD, or the configured name. If this is not our desired name ``input_top'', the text is changed accordingly, and Apply is pressed. The reference cell will be created in memory (it will be listed in the Cells Listing panel).
If memory is tight, the CHD that was just created can be deleted. It will be recreated if necessary. The Cell Hierarchy Digests panel can be dismissed.
The user can view the new cell with the Open command. Note that it has a bounding box, but no content. Trying to modify the cell by adding a box, for example, will fail. Reference cells are immutable - meaning read-only.
The reference cell named ``input_top'' is ready to be placed into another hierarchy. One can begin editing a new cell, assume that it is called ``foo''. The user will be asked whether to save the previous (reference) cell. The reference cell can be saved as a native cell, however it is not possible to change the cell name. The cell can be saved in this manner if the user wants a copy which can be reused in the future. Incidently, it is possible to coerce saving of a reference cell to an archive format, as usual, in which case the new file will contain the referenced cell hierarchy.
The user should make sure that the current expansion level is set to 0. When editing ``foo'', the place button in the side menu can be used to place one or more instances of ``input_top'', perhaps using the Current Transform to rotate, mirror, or magnify the instances. This will be no different than placing normal instances. The bounding boxes of the newly placed cells will be visible, as normal, however if the expansion level is increased, the bounding boxes disappear and there is no visible indication of the newly place cells, except that the overall bounding box encompasses them. Again, the reference cells have no content.
The hierarchy under foo can be saved to an archive format in the usual manner, for example one can type ``sav'' in the drawing window or press the Save As button in the File menu. In response to the prompt, one can enter ``foo.gds'', for example, to produce a GDSII file, and press Enter. The user should then confirm saving to GDSII format at the confirmation prompt, and the file foo.gds will be created.
To have a look at the new GDSII file, the user can clear the database with the Symbol Tables pop-up or by typing ``!!Clear(0)''. Then, the Open command can be used to open foo.gds. The unexpanded display will look the same as before, but note now that when expanded, the contents of the cells are displayed, as obtained from the input.gds file, but this content is now included in foo.gds.
This procedure serves a similar purpose to the Layout File Merge Tool and the !assemble command, but is graphical and easier to perform. It enables assembling a higher-level layout file from lower-level component files. Since the component files don't have to be in memory, one can assemble huge layouts with a modest computer, using any of these techniques.