#

## cif

Read CIF input or generate CIF output.

### Usage:

> cif [option]

> > where option is one of the following:
> > help
> >   Print usage information
> > arealabels [yes|no]
> >   Enable/disable use of the CIF area label extension. The default is "yes". Normally there is no reason not to do this.
> > [list] coverage layer [box]
> >   Report the coverage of the indicated CIF layer within the bounds of the current edit cell. This is useful for fabrication processes that require a minimum amount of coverage for specific layers (usually the metal routing layers). With option list in front, return only the coverage value, as a decimal. Otherwise, the value is returned as a percentage, with additional diagnostic information about the area analyzed.

> >   With option "box", report the density inside the cursor box area only.

> > idcell [yes|no]
> >   Enable/disable use of the CIF cell ID extension. The default is "yes". Normally there is no reason not to do this.
> > scale in|out
> >   Report the number of microns per internal unit for the current style. If "in" is specified, the value is reported for the current CIF/GDS input style. If "out" is specified, the value is reported for the current CIF/GDS output style.

> >   Warning: For a long time (prior to magic 8.0.180), this function was "cif lambda in|out" and claimed to return the number of microns per lambda. For backwards compatibility, this syntax is retained, but its use is discouraged.

> > limit [value]
> >   Limit the amount of internal grid subdivision to the indicated value (which is dimensionless, the ratio of the maximum subdivision to the current lambda value). If no value is given, the current limit is reported. By default, the value is set to 100, as grid subdivision smaller than this amount can result in integer overflow on subsequent CIF or GDS output.
> > rescale [yes|no]
> >   Allow or disallow internal grid subdivision while reading CIF input. Default is "yes". Normally, one wants to allow rescaling to ensure that the CIF is displayed exactly as it is in the input file. Occasionally, however, the CIF input is on a very fine scale, such as nanometers, and it is preferable to snap the input to lambda boundaries rather than to subsplit the internal grid to such a fine value. The limit option may also be used to limit grid subdivision to a minimum value (see above).
> > drccheck [yes|no]
> >   (Introduced in Magic version 8.0.176) Set to "yes" by default, causing all cells in the input file to be marked as not checked by DRC as they are input. Set this to "no" to force magic to treat the CIF cells as "known DRC clean".
> > warning [option]
> >   Set warning information level. "option" may be one of the following:
> >   default
> >     The default setting is equivalent to all the other options (align, limit, redirect, and none) being disabled.
> >   align
> >     Generate warnings during a "cif see" command if the alignment of geometry is on fractional lambda. Normally, magic allows contacts to be drawn at half-lambda positions. If this violates DRC requirements for the minimum output grid, this warning setting can be used to detect such violations.
> >   limit
> >     Limit warnings to the first 100 warnings or errors only.
> >   redirect [file]
> >     Redirect all warnings to an output file named file. If file is not given, then redirection is disabled.
> >   none
> >     Do not produce any warning messages on CIF input.
> > polygon subcells [yes|no]
> >   Put non-Manhattan polygons into subcells. Default is "no". Normally this option is not needed. However, input layout that defines a number of angled wires, particularly those that are closely spaced, can cause magic to generate literally millions of internal tiles. This tends to be true in particular for corner cells in padframes for deep submicron feature sizes, where the angled corners are required to meet the DRC specification. When set to "yes", each polygon encountered in the CIF input is placed in its own uniquely-named subcell. This prevents interations with other polygons on the same plane and so reduces tile splitting.
> > paint cif_layers magic_layer [cellname]
> >   Generate the CIF layer(s) specified by cif_layers, then import them into the Magic database as layer magic_layer. If cellname is specified, then the paint is generated in that cell (which will be created, if it does not already exist). Otherwise, paint is generated directly in the edit cell. This is a very useful function, as it allows the automatic generation of layout from boolean operations. Principal uses are to auto-generate fill patterns, auto-generate obstruction geometry in a standard cell, to automatically place substrate and well contacts into a standard-cell array, and so forth.
> > see layers
> >   View the CIF/GDS output layers in the comma-separated list layers as feedback entries on the layout. This is useful for determining what the actual foundry layer types are doing as a result of the boolean operations in the CIF/GDS output style. Most useful for debugging technology file CIF/GDS output style sections, or tracing DRC error reports from sources other than magic. CIF output is computed and feedback is shown only inside the cursor box area.
> >   Figure 1. Command cif see CSP shows the P+ implant layer surrounding the P diffusion regions within the cursor box area.
> > statistics
> >   Print statistics from the CIF generator, including tile operations, rectangles output, and interactions between cells. Not especially useful to the typical end-user.
> > prefix [path]
> >   Prepend the path name path to cell names in the CIF output. If no path is specified, reports the existing path name.
> > [list|listall] istyle [style]
> >   Set the current input style to style. If no style is specified, returns the current input style. To get a list of all available input styles in the current technology, use the listall istyle option. The list istyle option returns the current style name as a Tcl result.
> > [list|listall] ostyle [style]
> >   Set the current output style to style. If no style is specified, returns the current output style. To get a list of all available output styles in the current technology, use the listall ostyle option. The list ostyle option returns the current style name as a Tcl result.
> > flat file
> >   Output CIF format to "file" for the window's root cell, flattening the hierarchy prior to output.
> > read file
> >   Read CIF format from file file into the edit cell. If file does not have a file extension, then magic searches for a file named file or file.cif.
> > write file
> >   Output CIF format to "file" for the window's root cell.

> > "Wizard" options: Where option is one of the following:
> > *hier layer
> >   This option is like "cif see" but shows the layers that are generated as the result of hierarchical interactions between subcells (not including interactions between components of a subcell array; see below).
> > *array layer
> >   This option is like "cif see" but shows the layers that are generated as the result of hierarchical interactions between components of subcell arrays.
> > *hier write [ enable | disable ]
> >   This sets a global option that enables (default) or disables the generation of output CIF or GDS layers due to interaction between subcells (not including inter-array interactions; see below). For large standard cell layouts where the standard cells are known to abut properly without causing spacing or overlap errors, disabling hierarchical generation can greatly reduce the amount of time needed to generate output. Defining the property CIFhier inside a cell will override the use of *hier write disable and force hierarchical output for that cell and its descendents.
> > *array write [ enable | disable ]
> >   This sets a global option that enables (default) or disables the generation of output CIF or GDS layers due to interaction between components of subcell arrays. If cells are known to abut properly without generating spacing errors between them, disabling hierarchical generation can greatly reduce the amount of time needed to generate output. Defining the property CIFhier inside a cell will override the use of *array write disable and force hierarchical output for that cell and its descendents.

### Summary:

> The cif command reads CIF input or produces CIF input/output ("Caltech Intermediate Format", as described in Mead & Conway), or sets various parameters affecting the CIF (and GDS) input and output. Certain cif command options also affect GDS input and output.

> If no option is given, a CIF file is produced for the root cell, with the default name of the root cell definition and the filename extension ".cif".

### Implementation Notes:

> cif is implemented as a built-in function in magic. Options list and listall cause output to be returned as a Tcl result, rather than printed to stdout (the console).

### See Also:

> gds (calma)
> property (property "CIFhier")

Return to command index

Last updated: February 8, 2021 at 11:12am