Skip to main content

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)

Source distribution for pysynthutils 0.0.0
File Size Uploaded
pysynthutils-0.0.0.tar.gz 5.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pysynthutils 0.0.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

0.0.0 This release

2 release files

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