#

## def

Read or write DEF format files.

### Usage:

> def option

> > where option is one of the following:
> > read filename [-labels] [-annotate] [-noblockage]
> >   Read a DEF file filename[.def]
> > write [cell] [-units value] [-anal]
> >   Write DEF for current or indicated cell named cell
> > help
> >   Print help information (command summary)

### Summary:

> The def command reads and writes DEF format files. These files are generally assumed to be digital standard-cell based layouts. The DEF format has no real concept of hierarchy. To generate a valid DEF file that may be recognized by other software, it is necessary to have a layout with standard cells using the port method to declare input and output ports. In particular, the port class and port use are designed to work with the DEF read and write routines.

> The technology file should have a lef section describing how LEF and DEF files should be written. However, if an appropriate LEF file exists and is read prior to writing a DEF format file, the technology will be initialized from the file if it is not declared in the technology file.

> Normally the DEF file is written in units of nanometers according to the active GDS output scale (UNITS DISTANCE MICRONS 1000). If option "-units value" is used, then the units indicated by value are used instead of 1000. This option can be used, for example, to preserve units when re-writing a DEF file that was read with "def read". There is no guarantee that values can be accurately represented at the specified scale. The -units option was introduced in magic version 8.2.113.

> The "-labels" option to the "def read" command causes each net in the NETS and SPECIALNETS sections of the DEF file to be annotated with a label having the net name as the label text.

> The "-annotate" option will add labels to a layout from a DEF file, but will not add layer geometry or subcells. This is useful for labeling all of the regular nets if the DEF file was previously read without the -labels option.

> The "-noblockage" option will ignore all BLOCKAGES sections in the DEF file, in effect producing only mask layer geometry. If not specified, then layer BLOCKAGES in the DEF file are treated like obstructions in LEF files, and translated into obstruction layers in magic (per the definition of obstruction layers in either the "lef" section of the magic technology file, or in a technology LEF file read prior to reading the DEF file).

> The "-anal" option for "def write" satisfies the (very dubious) rule interpretation that "NONDEFAULT RULE" blocks must contain a rule for every metal layer. This is based on a ridiculous interpretation of a specification that is poorly worded and ambiguous. The interpretation makes no sense whatsoever. But some tools will not accept the more rational interpretation.

### Implementation Notes:

> def is implemented as a built-in magic command. Only the critical part of the DEF definition has been implemented. Some uncommon forms of syntax such as wire extensions are not implemented. This is largely due to the incomplete nature of the LEF/DEF spec. It is unlikely that such forms will be encountered in third-party input.

### See Also:

> lef
> port

Return to command index

Last updated: March 30, 2022 at 5:31pm