Skip to main content

Cadence PSF file utilities

Project description

Author:

Ken Kundert

Version:
0.1.0
Released:

2019-09-25

What?

psf_utils is a library allows you to read data from a Spectre PSF ASCII file. Spectre is a commercial circuit simulator produced by Cadence Design Systems. PSF files contain signals generated by Spectre. This package also contains two programs that are useful in their own right, but also act as demonstrators as to how to use the library. They are list_psf and plot_psf. The first lists the available signals in a file, and the other displays them.

Accessing the Results

You can use the PSF class to read ASCII Parameter Storage Format files. When instantiating the class you pass in the path to the file and then the resulting PSF object contains a dictionary that containing the signals. For example, the following lists is a:

from psf_utils import PSF
from inform import Error, display

kinds = {
    'float double': 'real',
    'float complex': 'complex',
}

try:
    psf = PSF('adc.raw/tran.tran')

    for signal in psf.all_signals():
        kind = signal.type.kind
        kind = kinds.get(kind, kind)
        display(f'{signal.name:<15}  {signal.units:<12}  {kind}')
except Error as e:
    e.terminate()

This example plots the output signal:

from psf_utils import PSF
from inform import Error, display
import matplotlib.pyplot as plt

try:
    psf = PSF('adc.raw/tran.tran')
    sweep = psf.get_sweep()
    out = psf.get_signal('out')

    figure = plt.figure()
    axes = figure.add_subplot(1,1,1)
    axes.plot(sweep.abscissa, out.ordinate, linewidth=2, label=out.name)
    axes.set_title('ADC Output')
    axes.set_xlabel(f'{sweep.name} ({PSF.units_to_unicode(sweep.units)})')
    axes.set_ylabel(f'{out.name} ({PSF.units_to_unicode(out.units)})')
    plt.show()
except Error as e:
    e.terminate()

abscissa and ordinate are NumPy arrays.

Utility Programs

Two utility programs are installed along with the psf_utils library: list_psf and plot_psf. The first lists the signals available from a PSF file, and the second displays them. They both employ caching to speed up access to the data. They also cache the name of the PSF file so that it need not be given every time. plot_psf also caches its arguments, so if you run it again with no arguments it will simply repeat what it did last time. For example, here is a typical session:

> list_psf -l resistor.raw/pnoise.pnoise
R1:flicker  A²/Hz  real
R1:thermal  A²/Hz  real
R1:total    A²/Hz  real
R2:rn       A²/Hz  real
R2:fn       A²/Hz  real
R2:total    A²/Hz  real
out         A/√Hz  real
> plot_psf out    # display out from resistor.raw/pnoise.pnoise
> plot_psf        # display out again

Converting to PSF ASCII

psf_utils only supports PSF ASCII files. As an alternative, libpsf is a Python package that can read both ASCII and binary PSF files. Or, you can use the Cadence psf program to convert various types of simulation results files into PSF ASCII format. To use it, simply specify the input and output files:

> psf -i adc.raw/tran.tran -o adc.raw/tran.psfascii
> list_psf adc.raw/tran.psfascii

In this example there is nothing special about the ‘psfascii’ suffix, it is simply mnemonic. Rather, the output is in ASCII format because the -b (binary) option is not specified.

Releases

Latest development release:
Version: 0.1.0
Released: 2019-09-25
  • Initial version

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

psf_utils-0.1.0.tar.gz (10.2 kB view details)

Uploaded Source

File details

Details for the file psf_utils-0.1.0.tar.gz.

File metadata

  • Download URL: psf_utils-0.1.0.tar.gz
  • Upload date:
  • Size: 10.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.21.0 setuptools/40.8.0 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.7.3

File hashes

Hashes for psf_utils-0.1.0.tar.gz
Algorithm Hash digest
SHA256 adb2a8c5ef7f75c6bc48945573b70d1ee2d6fbb20f3c0926f3e3defb4970b8a1
MD5 4d4fa20051ff2ad3f27117ee0235dcce
BLAKE2b-256 f631e3da87d009256c9dc244422a9d0ef974d9b3c904d329de2c48b805da1ef5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page