Skip to main content

Pylibfst: Handle Fast Signal Traces (fst) in Python

Fst, like vcd, is an open format for dumpfiles generated by EDA logic simulation tools. Unlike vcd, fst is a compressed binary format that offers much better performance for very large dumpfiles. Fst was originally developed as part of gtkwave. For more details on the format, see GTKWave 3.3 Wave Analyzer User's Guide.

Pylibfst is a python cffi wrapper for a slightly extended version of the fst C library contained in gtkwave. It was initially created to add support for fst to WAL (Waveform Analysis Language), developed at the Institute for Complex Systems at Johannes Kepler University, Linz.

More details on WAL can be found at https://wal-lang.org.

The latest development version of pylibfst is available on github.

Build & Install

Dependencies

Additional packages that need to be installed on the system:

  • cmake build environment (cmake, gcc, ...)
  • zlib-dev

Install using PyPi (pip)

Pylibfst is available from PyPi!

pip install pylibfst

Build & Install from Source

The latest development version of pylibfst is available on github.

There are various ways to build and/or install pylibfst:

  • Build from Source using Python
python -m pip install --upgrade build
python -m build
  • Build from Source using make
make all
  • Build & Install from Source using make
make install

Usage

A documentation on how to handle the cffi-style interface (calls, arguments, return values, ...) can be found in the CFFI documentation.

Although the fst format and library are widely used, there is unfortunately no documentation for the libfst library. (more details on this: FST API documentation · Issue #70 · gtkwave/gtkwave · GitHub). However, to support development, pylibfst comes with some documented extensions, helper functions and examples.

  • Extensions: see fst/fstext.h
  • Helper functions:
    • string(..) .. Converts ffi cdata to a python string
    • get_scopes_signals2(..) .. Iterates the hierarchy and returns a list containing all scope names and a named tuple containing two dictionaries which describe the signals: The by_name dictionary maps from signal names, the by_handle from signal handles to a corresponding named tuple containing signal name, length and handle. Note that signals with different name may have the same handle, therefore by_handle may have less entries than by_name.
    • fstReaderIterBlocks(..) and fstReaderIterBlocks2(..): Wrapped versions of corresponding libfst functions. Allow the use of any normal Python function as a callback (with slight overhead).
  • Examples
    • dumpfst.py .. Demonstrates the main calls required to implement an fst reader.
    • IterBlocks_callback.py .. Demonstrates the use of fstReaderIterBlocks and fstReaderIterBlocks2 using cffi-style callbacks
      • Advantage: Most efficient
      • Disadvantage: Only one callback function per program possible
    • IterBlocks_wrapped_callback.py .. Demonstrates the use of fstReaderIterBlocks and fstReaderIterBlocks2 using pythonic callbacks (helper functions above)
      • Advantage: "Normal" Python functions as callbacks (as many as you want)
      • Disadvantage: Slightly more overhead due to wrapper function

Known Problems and TODOs

  • Windows and Mac untested

libfst Sources

How to upgrade libfst?

  1. Copy most recent sources from gtkwave to directory fst
  2. Check and update fst/CMakeLists.txt (see comments in file)
  3. Update above section (e.g. commit hash)
  4. Update pylibfst/libfstapi_build.py and pylibfst/libfstapi.cdef according to fst/fstapi.h
  5. Check and update LICENSE files
  6. Check and update fst/fstext.h and fst/fstext.c
  7. Check and update pylibfst/helpers.py
  8. Check build and install
  9. Check and update examples
  10. Commit: Must contain the information from section above

Release files for pylibfst 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pylibfst 0.2.1
File Size Uploaded
pylibfst-0.2.1.tar.gz 86.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for pylibfst 0.2.1
File
pylibfst-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
pylibfst-0.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pylibfst-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
pylibfst-0.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pylibfst-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
pylibfst-0.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pylibfst-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
pylibfst-0.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pylibfst-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
pylibfst-0.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 Details
pylibfst-0.2.1-cp38-cp38-musllinux_1_2_x86_64.whl CPython 3.8 CPython 3.8 Linux musl 1.2+ x86-64 Details
pylibfst-0.2.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.28+ x86-64, Linux glibc 2.17+ x86-64 Details

Total release size: 2.5 MB

Release files / pylibfst-0.2.1.tar.gz

Download URL pylibfst-0.2.1.tar.gz
Size 86.8 kB
Tags Source
SHA-256 checksum
How to use checksums
fab7bae86cb131c9be76717d0badbfa79d81a53f69c84abe0ca78907328c1c14
BLAKE2b-256 checksum
How to use checksums
90a82ebc9f5f15b53cd2f9a448eebf3c4514a24759572625da2e26cd3dd34a91
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL pylibfst-0.2.1-cp313-cp313-musllinux_1_2_x86_64.whl
Size 206.0 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
e027eaa62cfed20677f47d2ffccaddceb8aae2bc48b96bfcc7c70e3e962548cf
BLAKE2b-256 checksum
How to use checksums
d94b76d212a90a3a3258976a6af5bf3e0a6ef1e8a9bffdab4106bfe8b0a65d49
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pylibfst-0.2.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 207.1 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
51c8a217c7c13eb5aef9dffbcc89420ced8a60d54a4998a6762843550398bd68
BLAKE2b-256 checksum
How to use checksums
fea4cb12b5f3ac0f102fb8fdfaf9cee384f4ee13c68ca867c815a68f280a991a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL pylibfst-0.2.1-cp312-cp312-musllinux_1_2_x86_64.whl
Size 206.0 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a8baab35e47550290f7088de98f4ab7aeb27c9cc0ceb452528071c54fccace9b
BLAKE2b-256 checksum
How to use checksums
662822e57425cfcab20cad3eb4ec2f4507f87d177dd2e31842f95c7c4ab9f2c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pylibfst-0.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 207.1 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
6fa7404e4441b01d555de5cecf834e413b44972fa9a25971cda0223e9c883f03
BLAKE2b-256 checksum
How to use checksums
50bfec97962f710aa32df08fe73238fdb5972199bf3947f27f6b5b946b048868
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL pylibfst-0.2.1-cp311-cp311-musllinux_1_2_x86_64.whl
Size 204.1 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
04f306068d50d4ecd896558e518ea755318a3ec3fee889d2ad9adc3a8286e867
BLAKE2b-256 checksum
How to use checksums
db6a6543bc030c2a67a71634f82ac06ea947c5ea3f4302f3ee39a2112cd261a9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pylibfst-0.2.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 205.1 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b42b99673b955c9cf092c455c53c9afdd30ac646172de0a9d1a44ba63f726b49
BLAKE2b-256 checksum
How to use checksums
88faf9d10cc99c167c6dab17655d3d096f706b6cad7d20c9e15ba768106b32c9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL pylibfst-0.2.1-cp310-cp310-musllinux_1_2_x86_64.whl
Size 204.1 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
a7084d6d340fccd5dde4d8f8e5cad658679a43af03b932561070f82e506d87e9
BLAKE2b-256 checksum
How to use checksums
18874a079bfb572a897b3fc7e0eb649bf16a68f423c6e5ed0ee9fe2c123ba2ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pylibfst-0.2.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 205.1 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
958ca264a35bfc23bbc8385dd729ad0f4b1f682565186a9977cf1fb54e82b628
BLAKE2b-256 checksum
How to use checksums
42d4255dd1558ad4ee3329555b236265ca06851f63afc8f65e1796dd46d8e97d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL pylibfst-0.2.1-cp39-cp39-musllinux_1_2_x86_64.whl
Size 204.0 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
baf49ae3b0629c1cb167b0af76d12a025e2f0fbdadd397cb7dc551ccd0e77099
BLAKE2b-256 checksum
How to use checksums
a365b61366eae30baa74659830bb434c4dec2af2b041b608d2662006e7e8b385
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pylibfst-0.2.1-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 205.1 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
816099bca45d071016ffb760e8ab0688a618769584987f8afe2710265e644426
BLAKE2b-256 checksum
How to use checksums
17cb0093a3d630e7e01383015c9ff5d3471937e437af0b6f9a1a17ae4c761e7b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp38-cp38-musllinux_1_2_x86_64.whl

Download URL pylibfst-0.2.1-cp38-cp38-musllinux_1_2_x86_64.whl
Size 204.0 kB
Tags CPython 3.8 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
9b22a45ffd3e17f857c301ea41352e67adbffc59ba704f6dcbbbb935eca4ddbe
BLAKE2b-256 checksum
How to use checksums
7530d26cf1ecf43fdb4ac7729717b52dafbbb2b4f8e2d4f7a520476ee88dc120
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release files / pylibfst-0.2.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl

Download URL pylibfst-0.2.1-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Size 204.9 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
c4d5d27739a323059bc825f04f6e9b421e937c6c00f67acfe87635c21eda69fe
BLAKE2b-256 checksum
How to use checksums
73b41b78e5b1174069b2153126135a129edb5632a22c9ba6a34bf438bf9a055e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Release history Release notifications | RSS feed

This release

0.2.1 This release

13 release files

0.2.0

1 release file

0.1.3

1 release file

0.1.2

1 release file

0.1.1

1 release file

0.1.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page