Xic keeps an internal database of all cells that have been used, by name. When a new file is opened for editing, it may contain definitions for cells with the same name as those already in memory. Xic provides several features for dealing with this situation when it arises.
The symbol table used to store cells can be changed. Creating and installing a new symbol table enables Xic to start with a fresh database, though the original database can be reinstalled at any time. There is no problem with cells of the same name existing in different symbol tables. The symbol tables are manipulated with the !symtab interface command. Symbol tables are useful for global context saving and switching, but since only one table can be installed at a time, it is generally not possible to access cells from different symbol tables simultaneously. Cells used in a hierarchy must exist in or be saved in the same symbol table.
If the name string given to edit matches the name of a cell in memory, the editing context is switched to that cell, and no disk file is read in this case. However, if the name given to edit contains a directory separation character, i.e., is a path, then Xic will always attempt to read the file from disk. Thus, if the user wants to re-read a native cell file from disk, if the cell is already in memory, the user should add a path prefix to the name. For example ``./noname'', assuming noname is in the current directory, will force Xic to read the disk file, even if the noname cell is already in memory.
When a file is being read from disk and a cell whose name conflicts with an existing cell in memory is encountered, a Merge Control pop-up will generally appear. This pop-up comes in two different forms, depending upon the type of file being opened. For CIF files the ``batch mode'' Merge Control will appear. For each cell in the pop-up listing, one can select whether or not to overwrite the physical or electrical part of the cell in memory by clicking on the ``yes'' and/or ``no'' that follow each cell name. One can also set the values for all cells with the buttons. Pressing the Apply button will remove the pop-up and continue the conversion. Pressing Abort or dismissing the pop-up will abort the conversion.
Similarly, when reading in a non-CIF cell hierarchy with cells already in memory, a different Merge Control pop-up appears which allows the user to choose whether or not to overwrite the physical and/or electrical part of the cell in memory. Press Apply to continue with the conversion. One must press Apply for each cell where there is a conflict, or press Apply to Rest to apply the present setting to the rest of the cells that clash. Dismissing the pop-up performs the same function as Apply to Rest. The pop-up is removed when all conversions are done.
If the NoAskOverwrite variable is set (with the !set command), or equivalently the Don't prompt for overwrite button in the Conversion - Import panel (from the Convert Menu) is active, no Merge Control pop-up will appear, and the default action will be used. The default action will also be used in non-graphics (server or batch) mode.
The default action can be specified by setting the NoOverwritePhys and/or the NoOverwriteElec variables, or equivalently by making a selection from the Default when new cells conflict menu in the Conversion - Import panel. If no choice is made by any means, the default is to overwrite the cell in memory, both physical and electrical parts. The initial selections in the Merge Control pop-up will reflect the settings of the default action.
The interpretation of any path prefix which is included with the name of a native file to open for editing is set by the variables NoReadExclusive and AddToBack. The top level cell will always be read from the given file if a path to the file is specified. Subcells are resolved by cell name only through the search path. The search path is modified during the read according to the state of the NoReadExclusive and AddToBack variables.