SPEF to OpenAccess Translator (spef2oa)


spef2oa is the standard translator implementation that reads a SPEF file and annotates an OpenAccess database with parasitic information. The translator only adds parasitic information to an existing oaBlock. spef2oa does not create connectivity. The translator runs from the command line and includes options to control what information is read from the SPEF file and how the information is stored in the database.

If you want information about using the oa2spef translator for extracting parasitic information from an OpenAccess database and writing a SPEF file, see OpenAccess to SPEF Translator (oa2spef). If you want information about how SPEF data maps to the OpenAccess database, see Mapping SPEF to OpenAccess.

spef2oa Command Syntax

The spef2oa command syntax is:


    spef2oa -lib library -cell cellName -view viewName -spef fileList   \
    -ap analysisP oint | -min analysisPoint -typ analysisPoint -max analysisPoint  \ 
    [Optional Arguments]

If you start the translator with the -help or -h argument, command line help displays. The command line arguments, and the command line help for those arguments, are included in the following table.

Required Arguments
-lib <library> Specifies the target library to annotate. For information about how the translator finds a library using the library definitions file, see How Translators Use Libraries.
-cell <cellName> Specifies the name of the cell to annotate
-view <viewName> Specifies the view name
-spef "<fileList>" Specifies one or more SPEF input files. Multiple files must be enclosed in quotes and are space or tab separated.
-ap analysisPoint  |
-min analysisPoint
-typ analysisPoint
-max analysisPoint
Identifies either a single analysis point or the three min, typ, and max analysis points
Optional Arguments
-detailedOnly Reads detailed parasitics only
-help | -h Displays usage information
-libDefFile <path><filename> Specifies the lib.defs file to load. The path can be a full or relative path. If this option is omitted, the default search mechanism of the DM system is used to find and load the lib.defs file.
-logFile file Specifies the log filename. If this option is omitted, the log filename defaults to spef2oa.log.
-noInfo msgIds Suppresses the specified INFO messages. msgIds is a quoted, space separated list of numbers. Each number in the list represents the numerical portion of the ID for the message you want to suppress. None of the numbers in the list may be zero. Suppressed messages do not appear on the terminal or in the log file.
-noWarning msgIds Suppresses the specified WARNING messages. msgIds is a quoted, space separated list of numbers. Each number in the list represents the numerical portion of the ID for the message you want to suppress. None of the numbers in the list may be zero. Suppressed messages do not appear on the terminal or in the log file and are not included in the total of WARNING messages displayed in the summary.
-reducedOnly Reads reduced parasitics only
-templateFile <file>

Specifies a file containing arguments to spef2oa. You can specify a template file instead of entering a string of arguments on the command line.

If you specify a template file, arguments on the command line have precedence over arguments specified in the file. So, if the same argument exists in the template file and in the command line, the translator uses the argument on the command line.

Specify arguments in a template file as follows:

  • Enter arguments in the template file without a dash (-) before the argument.
  • Enter each argument and value pair on a single line.
  • Separate the argument from its value using a space or a tab.
  • Designate comment lines with a # sign as the first character in the line.

Sample Template File

# spef2oa command line arguments

logFile        myspef2oa.log
reducedOnly
tolerate
-tolerate Tolerates connectivity mismatches between the SPEF input and the target OpenAccess database. Usually, connectivity mismatches result in an error and processing stops. The –tolerate option reduces these errors to warnings, but some coupling capacitance may be dropped from the parasitic network. If the network cannot be properly connected due to connectivity problems with series devices (such as resistors), the entire network is ignored but processing continues. Note that the SPEF translator does not perform exhaustive node to node checking of the network connectivity. It is possible to construct networks that contain electrical opens regardless of whether this option is used.
-v Prints tool, format, and library version information.
-version Prints tool and format version information.

The -lib, -cell, -view, and -spef arguments, and at least one analysis point argument, are required. All other arguments are optional.

Note: Command line arguments specifying library, cell, and view names are interpreted according to the Native name space. See Native Name Space in the Name Mapping article of the Programmers Guide for details about the native name space.

The validity of connections within the parasitic network (resistors, inductors), or to other networks (coupling capacitors), is not checked.

Specifying Analysis Points

In the OpenAccess database, parasitic values are associated with particular analysis points. In order to create analysis points in the database, you must specify at least one by using the -ap argument, or you can specify three by using the -min, -typ, and -max arguments. The translator creates analysis points with the specified name or names. If the parasitic values are specified in the SPEF file as float triplets (float : float : float), the leftmost value is associated with the min analysis point, the middle value is associated with the typ analysis point, and the rightmost value is associated with the max analysis point. If you specify three analysis points, and the SPEF file has values in single float format, the single value is associated in the database with all three min, typ, and max analysis points. An error results when a single analysis point is specified but the SPEF file contains triplets.

Using detailedOnly and reducedOnly Options

If the -detailedOnly option is specified, the translator annotates the database with detailed parasitics information only. If the -reducedOnly option is specified, spef2oa annotates the database with reduced parasitics information only. If neither option is specified, the OpenAccess database is annotated with all available parasitic information.

Reading Large SPEF Files

Large SPEF files can be split into multiple, smaller files for better file management. For example, a 10-gigabyte file can be split into five 2-gigabyte files, which are read by supplying a space-separated list of files on the command line. For example:

    spef2oa -spef "file1.spef file2.spef file3.spef" ...

Files compressed using GNU zip (gz) can be read directly without uncompressing them.

Some extractors use a file continuation syntax when splitting SPEF files. To use the continuation syntax, each file must specify the next file to be read using a convention that is not part of the official SPEF syntax. The convention for the continuation syntax is:

    // .lib filename

Where filename is the next file to read.

When a continuation line is encountered, the current file is closed, and anything between the continuation syntax and the end of the current file is ignored. Then the next file is opened, and the reader skips over everything at the head of that file until a D_NET or R_NET token is found.

The filename is interpreted as relative to the directory containing the first SPEF file. spef2oa first looks for the file using the filename as supplied. If spef2oa does not find the file, it follows one of the following two approaches:

Using the -templateFile Option

If you specify a template file, arguments in the file have precedence over arguments specified on the command line. If the same argument is included in both the template file and on the command line, the translator uses the value of the argument in the template file.

You specify arguments in a template file as follows:

Sample Template File

    #spef2oa arguments

    logFile spef2oa.log
    lib liba
    cell MX1
    view mod
    spef "file1.spef.gz file2.spef.gz file3.spef.gz"
    ap worst

Handling Library Definitions File Errors

If your library definitions file has errors, or any of the referenced libraries cannot be opened, either an error message is generated and translation halted or, if the library is not required to complete the translation, translation proceeds without an error or warning. For more information about this behavior, see the Handling Errors in lib.defs Files section in the Programmers Guide chapter How Translators Use Libraries.

How the Translator Uses Namespaces

A namespace is a set of rules that define the legal characters and determine how names are interpretted. This translator uses the oaNative namespace to interpret library, cell, and view names in the command line. Other names that refer to name-mapped OpenAccess objects, such as net and module names, use the SPEF namespace.

Error and Warning Messages

Translators emit messages that report translation progress, report warnings about unusual data or conditions, or report problems with files or data that caused partial or complete translation failure. These messages are written to a log file so you can review translation status, identify error and warning conditions, and consider whether additional actions are needed.

OpenAccess translators use a standard message format to ensure comprehensive and consistent messaging. This message format consists of three elements, which are: message type keyword, message prefix, and message text.

In addition to the three standard elements, messages can also include two optional elements. An optional filename/line number element is included, when available, to more precisely identify the source of a problem or condition within the source data file. A context string is another optional element that is included, when available, to identify the type of data object that caused the message to be emitted. The following example shows a typical error message that includes the optional filename and line number element.

    ERROR: (OALEFDEF-50004): file.lef(123): A cell was not specified. Translation was terminated. 
    You must specify a cell.

One benefit of this message format is that it allows you to sort, filter, and examine only those types of messages that interest you. The keyword at the start of each message is either ERROR or WARNING and is always all uppercase. The message prefix identifies the translator family and the specific message source within the translator. The message prefix is a stable value that will not change between versions even when the message text gets updated. This makes it suitable for routine sorting and filtering.

If you seek assistance for resolving an issue related to a translator error or warning message, be sure to retain the message type keyword (ERROR or WARNING), and retain the message prefix to identify the translator family and the message source. Also make note of the filename/line number and context information if these are included in the message.

 

Return to top of page