• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Blogs
  2. Analog/Custom Design
  3. Spectre Tech Tips: Using DSPF Post-Layout Netlists in Spectre…
Stefan Wuensche
Stefan Wuensche

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
spectre aps
post-layout simulation
EMIR Analysis
EMIR Simulation
DSPF
netlist
Spectre
Spectre X Simulator
EMIR

Spectre Tech Tips: Using DSPF Post-Layout Netlists in Spectre Circuit Simulator

31 Mar 2022 • 5 minute read

 The DSPF format is one of multiple netlist formats used by EDA tools, including Spectre® circuit simulator, as a transistor-level representation for post-layout extracted design content. DSPF files are created by parasitic extraction tools, such as QuantusTm Extraction Solution. Nevertheless, their content and format are heavily dependent on the extraction tool and its settings. Often, simulation problems occur due to problems in the DSPF netlist.

DSPF netlist content

A DSPF netlist consists of a header, a net section, and an instance section. The header contains basic information about the extraction tool, design name, and the syntax definitions, for instance, or terminal delimiter, hierarchical delimiter, finger delimiter, and bus notation. Commonly, but not always, the DSPF netlist contains one subcircuit definition for the design it represents.

The following is an example DSPF netlist for a VDD net that is also a subcircuit port. The yellow box illustrates the parasitic RC network on the VDD net with its 2 pins (*|P), 3 tap device instances, (*|I) and many subnodes (*|S). For simplification, only 2 subnodes *|S, one resistor and one capacitor, are shown in the netlist. The parasitic capacitances are not shown in the yellow box.

Using DSPF in Spectre simulations

While the Net Section for VDD defines the parasitic RC network and its connectivity, the design instance cells (MOSFETs, resistors, subcircuits, etc.) with width, length, and other parameters can be found in the Instance Section of the DSPF file.

Spectre usage of DSPF netlists

A DSPF netlist can be interpreted as a regular SPICE netlist. In that case, all the *| information is ignored when reading the netlist. You can include this information by using the Spectre include statement that uses the regular Spectre parser. Since the Spectre parser is not optimized for DSPF content, this approach is recommended only when advanced features, such as, alter, sweep, or monte carlo are used for varying parameters in the DSPF content. These features are not supported with the dspf_include statement described later.

include "design.spf"

For all other applications, especially large post-layout or EMIR simulations, the Spectre dspf_include statement is recommended. The dspf_include statement enables a specialized high-performance and high-capacity DSPF parser. Furthermore, it reads not only the regular SPICE content of the file, but also the connectivity and geometric information from the *|P, *|I and *|S statements. This is especially important for EMIR simulation where node coordinates, layer information, and parasitic resistor properties are needed for EM violation calculation and EMIR result visualization later.

dspf_include "design.spf"

Identifying DSPF netlist problems with spfchecker

Since the DSPF netlist format is complex and, in some cases, the extracted DSPF netlists may have connectivity problems, Spectre provides a utility called spfchecker. This utility reads the DSPF netlist and checks it for any connectivity or syntax problem. The guidance is to use a DSPF file in a Spectre simulation only after spfchecker is successfully run on the netlist without reporting any error.

spfchecker design.spf

The most important information spfchecker provides is the DSPF netlist problem report in the design.spf.chklog file. It looks like the following:

Message Statistics:

SPF-0002:         5       NETs with multiple PINs
SPF-0003:         2       ERROR: NETs broken into pieces
SPF-0012:       342       ERROR: Instances not found in the Instance Section
SPF-0013:      1143       Capacitors with capacitance >= 0.1pf (biggest: 3.7e-11 F)
SPF-0019:       430       ERROR: NETs with sub-nodes not connecting to any parasitics
SPF-0021:      2282       Resistors with resistance > 10000 Ohm (biggest: 65912 Ohm)
SPF-0024:         5       NETs with resistors without x/y coordinates
SPF-0027:  18414028       Resistors without x/y coordinates

Any message marked with ERROR reports a major DSPF netlist problem that must be fixed before using the DSPF netlist in Spectre. If an erroneous DSPF netlist is used, then Spectre may create incorrect results, since the input DSPF netlist is incorrect.

In this blog, we cannot discuss all spfchecker messages. Nevertheless, let’s look at one common DSPF problem in more detail.

SPF-0003:         2       ERROR: NETs broken into pieces
SPF-0003: Node " VDD#3" starts a new island. …
SPF-0003 (line 177882): NET " VDD" is broken into 2 pieces. The connectivity is wrong.

spfchecker reports that the VDD net is broken into pieces of islands. Such an island could look like the figure given below. There is a separate island starting with the subnode VDD#3, and this island doesn’t have any connection to the VDD net.

DSPF in Spectre check using spfchecker

Since no current can flow into tap device MP1 and since the net VDD will not see the full loading, any post-layout or EMIR simulation using such erroneous DSPF will deliver wrong simulation results. There is also no good way in Spectre to fix the net because Spectre cannot guess how the connection between the island and the VDD net should be. Therefore, the recommended solution is to re-extract the DSPF netlist creating one consistent VDD net.

To learn more about spfchecker and the potential DSPF errors causing simulation problems, check the related application note. We highly recommend to run spfchecker and to ensure that no error is reported before running any Spectre simulation using the DSPF netlist. Otherwise, you may spend hours of simulation time for getting incorrect results.

It is important to use dspf_include for large post-layout and EMIR simulations where the parsing of the large DSPF files takes a significant time. On the other hand, the dspf_include parser is limited in functionality. That means, the advanced analyses, such as sweeps, alters or monte carlo, that alter DSPF netlist parameters need to use include instead of dspf_include.

Related Resources

  • Spectre Classic Simulator, Spectre Accelerated Parallel Simulator (APS), and Spectre Extensive Partitioning Simulator (XPS) User Guide
  • Introducing Spectre X
  • Using DSPF Post-Layout Netlists in Spectre Circuit Simulator 

 You may also contact your Cadence support AE for guidance.

 For more information on Cadence products and services, visit www.cadence.com.

About Spectre Tech Tips

Spectre Tech Tips is a blog series aimed at exploring the capabilities and potential of Spectre circuit simulator. In addition to providing insight into the useful features and enhancements in Spectre, this series broadcasts the voice of different bloggers and experts, who share their knowledge and experience on all things related to Spectre. 


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information