Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
config:layout [2021/08/18 15:58] – [Vias] rajitconfig:layout [2024/12/28 23:35] (current) – [Diffusion] rajit
Line 142: Line 142:
    * ''oppspacing'': similar to ''spacing'', except this is the minimum spacing to the opposite type of diffusion.    * ''oppspacing'': similar to ''spacing'', except this is the minimum spacing to the opposite type of diffusion.
    * ''polyspacing'': spacing to polysilicon    * ''polyspacing'': spacing to polysilicon
-   * ''notchspacing'': if the diffusion has a notch, the spacing between the vertical edge of the notch and the edge of the polysilicon+   * ''notchspacing'': if the diffusion has a notch, the spacing between the vertical edge of the notch and the edge of the polysilicon. This should be at least the ''polyspacing'' (and can be more depending on the process technology).
    * ''overhang'': a range table that specifies the diffusion overhang depending on the width of the transistor (i.e.  polysilicon) it overhangs. This is used for drawing the end of a transistor stack (sometimes called a channel-connected region).    * ''overhang'': a range table that specifies the diffusion overhang depending on the width of the transistor (i.e.  polysilicon) it overhangs. This is used for drawing the end of a transistor stack (sometimes called a channel-connected region).
    * ''via'' is a section that contains:    * ''via'' is a section that contains:
Line 247: Line 247:
      * Influence rules can be specified for spacing rules when two wires are adjacent on two edges      * Influence rules can be specified for spacing rules when two wires are adjacent on two edges
        * ''influence'': this is an integer table of size 3*n, where each triplet corresponds to the width, within, and spacing rules (see the LEF/DEF reference).        * ''influence'': this is an integer table of size 3*n, where each triplet corresponds to the width, within, and spacing rules (see the LEF/DEF reference).
-   * ''pitch'': if this is specified, then all metal has to snap to the specified pitch (left edge for vertical drawing, bottom edge for horizontal drawing). 
    * ''direction'': specify a hard constraint on how a metal layer can be drawn. 0 = no constraint, 1 = vertical only, 2 = horizontal only    * ''direction'': specify a hard constraint on how a metal layer can be drawn. 0 = no constraint, 1 = vertical only, 2 = horizontal only
    * ''minarea'': the minimum area of the material    * ''minarea'': the minimum area of the material
Line 253: Line 252:
    * ''endofline'': this is the amount one has to extend the end of line for a metal for design rule checking    * ''endofline'': this is the amount one has to extend the end of line for a metal for design rule checking
    * ''endofline_width'': this is used to specify the region where the end of line rule is active.    * ''endofline_width'': this is used to specify the region where the end of line rule is active.
-  * ''antenna'' is a section that contains any of the following:+   * ''antenna'' is a section that contains any of the following:
      * ''ratio'': antenna ratio for this layer (default is to omit this constraint)      * ''ratio'': antenna ratio for this layer (default is to omit this constraint)
      * ''diffratio'': antenna ratio when connected to diffusion (default is to omit this constraint)      * ''diffratio'': antenna ratio when connected to diffusion (default is to omit this constraint)
 +
 +Two additional parameters can be specified, which are used during LEF generation for automated routing.
 +   * ''lef_width'': if this is specified, then the LEF drawing rules for the metal layer will use this as the drawing width for routing. If it doesn't exist, then this is set to the minimum width.
 +   * ''pitch'': if this is specified, then all metal tracks are defined to snap to the specified pitch (left edge for vertical drawing, bottom edge for horizontal drawing). If unspecified, this is set to the ''lef_width'' plus minimum spacing.
 +   * The centerline for the routing tracks defined are spaced by the pitch, and the centerline is offset by ''lef_width''/2. Make sure that ''lef_width''/2 is a value that results in edges that lie on the manufacturing grid (defined in the [[config:netlist#LEF/DEF_configuration_options|LEF/DEF configuration section]]). Otherwise, the place and route tools will be very upset.
  
 {{ :config:metal.svg?500 | Metal design rules}} {{ :config:metal.svg?500 | Metal design rules}}
Line 265: Line 269:
   int_table m1_gds_bloat 0 0 0 0   int_table m1_gds_bloat 0 0 0 0
 </code>   </code>  
 +
 +When magic technology files are auto-generted from ''layout.conf'', the standard naming conventions in magic are used (e.g. m1 = first metal layer, m2 = second metal layer, etc). When generating LEF/DEF, it is advisable to use the technology layer names used by the foundry. 
 +<code>
 +string m1_lefname "FoundryM1Name"
 +</code>
 +This will use ''FoundryM1Name'' in the LEF output produced for cells, even though the magic layout layer name will remain ''m1''.
 +
 ===== Vias ===== ===== Vias =====
  
Line 322: Line 333:
    
    * ''width'': the width of via (assumed to be square and fixed size)    * ''width'': the width of via (assumed to be square and fixed size)
 +   * ''lef_width'': this is the width used for LEF generation. If ''lef_width''/2 is not on the manufacturing grid, then the routing tools will be confused. The default value of this parameter is ''width''.
    * ''spacing'': the spacing between vias    * ''spacing'': the spacing between vias
    * ''surround'' section, containing    * ''surround'' section, containing
      * ''up'': minimum surround on the upper layer      * ''up'': minimum surround on the upper layer
-     * ''asym_up'': minimum surround on two opposite sides; if this is different (and larger) than ''up'', then this corresponds to having an asymmetric contact. If this is equal to ''up'', then it corresponds to a symmetric contact.+     * ''asym_up'': minimum surround on two opposite sides; if this is different (and larger) than ''up'', then this corresponds to having an asymmetric contact.
      * ''dn'': minimum surround on the lower layer      * ''dn'': minimum surround on the lower layer
      * ''asym_dn'': similar to ''asym_up'' for the lower layer      * ''asym_dn'': similar to ''asym_up'' for the lower layer
 +     * Setting both ''asym_up'' and ''asym_dn'' to zero implies that the vias have symmetric surround, and the ''up'' and ''dn'' parameters are used to determine the surround value. If either of the ''asym'' parameters are non-zero, then we assume that we are using asymmetric vias and the ''asym'' parameters are used.
   * ''antenna'' is a section that contains any of the following:   * ''antenna'' is a section that contains any of the following:
      * ''ratio'': antenna ratio for this layer (default is to omit this constraint)      * ''ratio'': antenna ratio for this layer (default is to omit this constraint)