Library Exchange Format (LEF) is an open specification for representing physical layout information. It can be used on components with an integrated circuit in an ASCII format. LEF represents all required information for the place and route of components without the need to include the full physical design. It is normally used in conjunction with DEF file format. Besides the component information, it also stores some technological information on conducting layers and via layers.
The LEF file format is strongly connected with the DEF file format. Both files are needed for the correct display of a physical design. First open the corresponding LEF file and then import or attach the DEF file. With the opening of the LEF file, the technology information on routing layers is set. The LEF file format only knows layernames. By opening an LEF file the LayoutEditor analyses the used layers. If a used layername already exists in the current setup, this layer is used. Otherwise, the first unused layer is renamed.
Saving to the LEF file format will create LEF files for the currently displayed cell. Only cells used as reference in the displayed cell are saved. All referred cells need to have a binding box painted on the layer and set as binding box layer in the SetupDialog. Also only layers set as connecting layers are exported. The information on the technology layers is stored along the definition of the default. The export can be used in conjunction with the DEF file format to trigger an external routing tool.
To ensure the correct placement, it is important to define a binding layer. Shapes located outside the binding layer will overlap when placing two cells next to each other. A missing or incorrect binding layer will lead to incorrect placements of rotated and mirrored cells. The binding layer can be set in the setup.
Not all information required for a complete LEF file can be stored in a GDS, which is the used representation within the LayoutEditor. The additional/optional information of an LEF file can be set through a macro script. Please see the API documentation of the class setup for details.