SPEF Files Explained

Last modified 2012-10-31

Sini

Table of content
  1. Structure
  2. Syntax

Standard Parasitic Exchange Format(SPEF) is an IEEE format for specifying chip parasitics. The specification for SPEF is a part of standard 1481-1999 IEEE Standard for Integrated Circuit (IC) Delay and Power Calculation System . Latest version of SPEF is part of 1481-2009 IEEE Standard for Integrated Circuit (IC) Open Library Architecture (OLA) . The SPEF provides a standard medium to pass parasitic information between EDA tools during any stage in the design process.

Structure

  1. All keywords in SPEF start with an asterisk (*), followed by all capital or underscore. e.g. *DNET
  2. Keywords, identifiers, characters, and numbers are delimited by syntax characters, whitespace, or newline.
  3. Any character other than alphanumerics and underscore () shall be escaped when used in an identifier in a SPEF file. However there are exceptions to the escape rule as follows:
    1. The pindelim (*DELIMITER) between an instance and pin name, such as : in I\$481:X
    2. The heirdelim (*DIVIDER) character, such as /in/top/coreblk/cpu1/inreg0/I\$481
    3. A prefixbusdelim or suffixbusdelim (*BUSDELIMITER) being used to denote a bit of a logical bus or an arrayed instance, such as DATAOUT[12]
  4. SPEF file synatx is `SPEFfile ::= headerdef [namemap] [powerdef] [externaldef] [definedef] [variationdef] internaldef`.
    A spef file can have the follwing sections
    • Header Section : headerdef
    • Name map definition : [namemap]
    • Power & Ground Nets definition : [powerdef]
    • External definition : [externaldef]
    • Hierarchical SPEF (entities) definition : [definedef]
    • Process and temperature variation definition : [variationdef]
    • Internal definition : internaldefNot all of these are mandatory, and I will be talking in detail about a typical SPEF file that has a header section, namemap, ports section(externaldef) and the parasitic definition section(internaldef).
  5. // begins a single-line comment anywhere on the line, which is terminated by a newline. /* begins a multiline comment, terminated by */

Syntax