Skip to main content

Sawmill plugin for Xilinx Vivado synthesis and implementation logs

Project description

sawmill-plugin-vivado

A Sawmill plugin for parsing Xilinx Vivado synthesis, implementation, and bitstream logs.

See Sawmill for more info.

Installation

[uv] pip install git+https://github.com/sjalloq/sawmill-plugin-vivado.git

Or for development:

git clone https://github.com/sjalloq/sawmill-plugin-vivado.git
cd sawmill-plugin-vivado
make install

Confirm it's registered:

sawmill --list-plugins

Usage

# Launch the TUI on a Vivado log
sawmill vivado.log

# Filter to errors and critical warnings only
sawmill vivado.log --severity error
sawmill vivado.log --severity critical_warning

# CI mode — fail on warnings and above
sawmill vivado.log --check

# Fail only on errors
sawmill vivado.log --check --fail-on error

What It Parses

Vivado logs use this message format:

TYPE: [Category ID-Number] message text [/path/to/file.v:line]

For example:

INFO: [Synth 8-6157] synthesizing module 'top' [/src/top.v:53]
WARNING: [Vivado 12-3523] Attempt to change 'name' is not allowed
CRITICAL WARNING: [Constraints 18-4427] Constraint override warning
ERROR: [Route 35-9] Routing failed

The plugin handles multi-line messages (indented continuation lines, tables) and extracts file references from both [/path:line] and /path:line formats.

Severity Levels

ID Name Level Style
error Error 3 red bold
critical_warning Critical Warning 2 red
warning Warning 1 yellow
info Info 0 cyan

Detection

The plugin identifies Vivado logs by checking (in order of confidence):

  1. Vivado header (# Vivado v2025.2 ...) — 0.95
  2. Multiple Vivado message IDs (Synth, DRC, Timing, etc.) — 0.85
  3. Severity pattern density (5+ matching lines) — 0.6
  4. Filename contains "vivado" — 0.4

Domain-Specific Filters

These filters let you focus on specific Vivado subsystems. Severity filtering (errors, warnings, etc.) is handled by sawmill's built-in --severity flag and TUI severity toggles.

Filter Pattern Description
Timing Issues (timing|slack|WNS|TNS|setup|hold) Timing-related messages
Synthesis \[Synth \d+-\d+\] Synthesis messages
DRC \[DRC \d+-\d+\] Design Rule Check messages
Constraints \[Constraints \d+-\d+\] Constraint-related messages
IP Flow \[IP_Flow \d+-\d+\] IP core generation messages
Routing \[Route \d+-\d+\] Routing messages

How It Works

Sawmill discovers plugins via Python entry points. This plugin declares its entry point in pyproject.toml:

[project.entry-points."sawmill.plugins"]
vivado = "sawmill_plugin_vivado:VivadoPlugin"

Running pip install -e . registers it. Sawmill calls can_handle() on each plugin to auto-detect which one should parse a given log file.

Testing

make test    # 46 tests
make lint    # ruff check + format

Notes

  • Does the wider Xilinx toolset use the same log style? Would this work for Vitis et al?

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

sawmill_plugin_vivado-0.2.2.tar.gz (40.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sawmill_plugin_vivado-0.2.2-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file sawmill_plugin_vivado-0.2.2.tar.gz.

File metadata

  • Download URL: sawmill_plugin_vivado-0.2.2.tar.gz
  • Upload date:
  • Size: 40.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sawmill_plugin_vivado-0.2.2.tar.gz
Algorithm Hash digest
SHA256 e863472d20f249ce8b22c20231c959f3d8f210383159a4672a16a72fdfc63380
MD5 b40971631e1e39180da1678500f4605c
BLAKE2b-256 cac1b53a8496dab310ab65c60656598d52603b61ed2c0d8554262c995d4052aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for sawmill_plugin_vivado-0.2.2.tar.gz:

Publisher: publish.yml on sjalloq/sawmill-plugin-vivado

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sawmill_plugin_vivado-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sawmill_plugin_vivado-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 033c137fe09acc70a5f4abc58f8898535c19bb15de327ecb0767157b2a133982
MD5 ab9a89f28ced45ffd0eb47553fd5327d
BLAKE2b-256 b565585cbe88006edabb68e46839db5dce0f3afeb0351c324f1b03cf3598aff6

See more details on using hashes here.

Provenance

The following attestation bundles were made for sawmill_plugin_vivado-0.2.2-py3-none-any.whl:

Publisher: publish.yml on sjalloq/sawmill-plugin-vivado

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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