LEF extensions to Magic-7.2 ------------------------------------- 1) Ports A new method exists for declaring a cell to be a subcircuit. This involves the creation of ports, which are a special kind of label. The existence of any port in a cell marks that cell as a subcircuit, which causes it to be treated differently during the process of extraction and netlist generation: a) Subcircuits are extracted as usual, except for the presence of the "port" keyword for each port in the .ext file. b) Exttosim (ext2sim) operates as usual, because the netlist is not hierarchical. c) Exttospice (ext2spice) will generate an "X" record for each instance of the subcircuit cell, rather than flattening the cell. To simulate in SPICE, a ".subckt" record for the cell must be added to the SPICE deck. This behavior can be subverted in the Tcl-based magic by using "exttospice subcircuits off", in which case all subcircuits will be flattened. d) The "extresis" command will ignore the contents of subcircuits. On the other hand, after doing "extresis geometry", subsequent use of "extresis" will generate a ".fh" file containing the detailed three-dimensional geometry of the cell in the format of nodes and segments used by the FastHenry field equation solver. This is unrelated to the LEF module. A new command "port" turns labels into ports. The syntax of the command is: port [option], where [option] is one of: class [type] get [set] port class type use [type] get [set] port use type index [number] get [set] port number connections [dir...] get [set] port connection directions make [index] [dir...] turn a label into a port remove turn a port back into a label help print this help information [] To use the port command, a label must first exist, and the cursor box must overlap the label, and only that label. The index indicates the order of the port in the argument list of the subcircuit definition and calls. The ordering of ports must match the order of arguments to any .subckt record used in a SPICE simulation of the cell. The directions given to "connections" must be one or more of "n", "s", "e", and "w" (with no spaces in between; e.g., "port connections nsew"). They indicate the edge of the port to which connections may be made to the cell. This is unused by LEF, which uses more detailed information about metal routing and obstructions inside the cell to determine how to attach to a pin. In the abbreviated command usage "port ", a default direction will be determined by the position of the text on the label. Class and use types correspond to LEF classes and uses for pins. Valid class types are: default input output tristate bidirectional, inout feedthrough, feedthru Valid use types are: default analog signal, digital power ground clock 2) Properties While the "port" command and method specifies information about pins, LEF also supports information about the cell itself. The "property" command is a general-purpose interface for attaching key-value pairs to a cell, which are saved in the output and may be parsed by any function. Keys relevant to the LEF module begin with the text "LEF". LEF-related keys are: LEFclass corresponding to LEF "CLASS" LEFsource corresponding to LEF "SOURCE" LEFsymmetry corresponding to LEF "SYMMETRY" The string value attached to each key is written to the LEF output verbatim, thus any value may be used that is acceptable LEF syntax. The property command has the following syntax: property [ []] With no arguments, "property" returns all the key-value pairs defined for the current edit cell. Given the key argument only, it returns the value attached to the indicated key. Given both arguments, it assigns the string value to the indicated key. A value which is an empty string ("") will cause the key to become undefined. Values which consist of more than one word must be enclosed in quotes. Example: property LEFsymmetry "X Y" 3) LEF file generation A LEF-definition file with extension ".lef" may be written for each cell. This file contains detailed information required for placing and routing the cell, including all information regarding pins, ports, and obstructions on the metallization layers. The syntax of the LEF command is: lef write [] to write a .lef file for a single cell. If is not specified, then the output will be for the current edit cell. All cells in a design my be written using the syntax: lef writeall