pysynthutils — Python utilities to manipulate synthesis results
pysynthutils provides a simple, class-based, Pythonic interface for working with the artifacts of physical design tools.
Installation
Since the repository is private, make sure you have SSH access to the iis-git servers.
Then you can simply install this package through pip:
pip install git+ssh://git@iis-git.ee.ethz.ch/colluca/pysynthutils.git@main
Usage
Physical implementation
The API to process artifacts of physical implementation runs is very simple:
from pysynthutils import SynthResults
# Instantiate a SynthResults object providing access to all results
results = SynthResults(run_dir)
# Access any result by:
# - stage name as defined in your backend flow, see Setup section below
# - report, e.g. timing
# - metric, e.g. WNS
wns = results['route_detail']['timing']['WNS']
Report and metric names follow the nomenclature used by Fusion Compiler.
For example, the metric above can be found as WNS in the tables/timing.json report.
Hierarchical data
Most reports have a tabular format, and are easily manipulated as shown above. However, several reports have a hierarchical structure, and are better represented using a tree structure.
For example, we can easily visualize the area of all modules in the design hierarchy (as reported in tables/hierarchy_details.json):
results['route_detail']['hierarchy_details'].tree.show(all_attrs=True)
Hierarchical reports are parsed using the bigtree library. Please refer to its documentation for further information on how to manipulate these structures.
Linting
The following example illustrates the API to process linting reports:
from pysynthutils import LintViolations
# Instantiate a LintViolations object providing access to the violations in the linting report
violations = LintViolations('path/to/moresimple.rpt')
# violations.df is a pandas DataFrame with columns: rule, severity, file, line, message
errors = violations.df[violations.df['severity'] == 'SynthesisError']
count = len(violations.df[~violations.df['file'].str.contains('.bender', na=False)])
Timestamps
Every report exposes the last-modified time of the underlying file as a datetime object. For standard reports it is a dictionary entry; for hierarchical reports it is an attribute:
# Standard report
ts = results['route_detail']['timing']['timestamp']
# Hierarchical report
ts = results['route_detail']['hierarchy_details'].timestamp
Setup
pysynthutils requires your physical design flow to follow a conventional directory structure:
<Run directory>
└───qor_data
├───<Stage 1>
│ ├───reports
│ └───tables
├───<Stage 2>
...
└───<Stage N>
The run directory can have an arbitrary name, and is simply the directory from which the Fusion Compiler flow is launched.
Similarly, the stage directories can also have arbitrary names, but their contents are assumed to follow the structure produced by Fusion Compiler's write_qor_data command.
To produce this structure, simply add the following command to your physical design flow to generate artifacts for each stage in your flow:
write_qor_data -label <Stage N> ...
Metadata
Release files for pysynthutils 0.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pysynthutils-0.0.0.tar.gz | 5.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pysynthutils-0.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.2 kB
Release files / pysynthutils-0.0.0.tar.gz
| Download URL | pysynthutils-0.0.0.tar.gz |
|---|---|
| Size | 5.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
3d666daf13b1ffaaf49b15a71b75f24a67080d8c88a61ebf4cad85cfbb7195aa
|
|
BLAKE2b-256 checksum How to use checksums |
f690533748e2eb3cf93ccc76b7c8816a047b4f43d907a07bddd66349848009e2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 2, 2026.
Transparency logRelease files / pysynthutils-0.0.0-py3-none-any.whl
| Download URL | pysynthutils-0.0.0-py3-none-any.whl |
|---|---|
| Size | 6.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
97c201f63a8506d23b953ffab042647f7836dbbbe6c55494d5c423553ed43b0b
|
|
BLAKE2b-256 checksum How to use checksums |
2f683d918d12c4d332338171e06d5d801a8caa8ba66e642255f0fcb5447f3dfe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jun 2, 2026.
Transparency log