Skip to main content

WaveDrom compatible python command line

Project description

WaveDromPy

This is a python module and command line fully compatible with WaveDrom, which is originally implemented in JavaScript. It is useful if you want to generate wavedrom diagrams from a python environment or simply don't want to install the Node.js environment just to use WaveDrom as simple command line.

WaveDromPy is for example used in sphinxcontrib-wavedrom to render wavedrom for Sphinx documentation. While the original project renders the diagrams in JavaScript in the browser, WaveDromPy renders them to SVG files.

This tool is a direct translation of original Javascript file WaveDrom.js to Python. No extra feature added. We seek to have it fully compatible.

The tool WaveDromPy directly converts WaveDrom compatible JSON files into SVG format.

Build Status PyPI version

Installation

It is most easy to just install wavedrom via pip/pypi:

pip install wavedrom

Alternatively you can install the latest version from this repository:

pip install git+https://github.com/wallento/wavedrompy

or from your local copy:

pip install .

Usage

You can either use the tool from Python:

import wavedrom
svg = wavedrom.render("""
{ "signal": [
 { "name": "CK",   "wave": "P.......",                                              "period": 2  },
 { "name": "CMD",  "wave": "x.3x=x4x=x=x=x=x", "data": "RAS NOP CAS NOP NOP NOP NOP", "phase": 0.5 },
 { "name": "ADDR", "wave": "x.=x..=x........", "data": "ROW COL",                     "phase": 0.5 },
 { "name": "DQS",  "wave": "z.......0.1010z." },
 { "name": "DQ",   "wave": "z.........5555z.", "data": "D0 D1 D2 D3" }
]}""")
svg.saveas("demo1.svg")

This will render a waveform as:

Example 1

You can find more examples in the WaveDrom tutorial.

A second feature is that WaveDrom can render logic circuit diagrams:

import wavedrom
svg = wavedrom.render("""
{ "assign":[
  ["out",
    ["|",
      ["&", ["~", "a"], "b"],
      ["&", ["~", "b"], "a"]
    ]
  ]
]}""")
svg.saveas("demo2.svg")

This will render a as:

Example 2

You can find more examples in the WaveDrom tutorial2.

Finally, wavedrom can draw registers as bitfields:

import wavedrom
svg = wavedrom.render("""
{"reg": [
  { "name": "IPO",   "bits": 8, "attr": "RO" },
  {                  "bits": 7 },
  { "name": "<o>B</o><b>R<i>K</i></b>",   "bits": 5, "attr": "RW", "type": 4 },
  { "name": "CPK",   "bits": 1 },
  { "name": "Clear", "bits": 3 },
  { "bits": 8 }
  ]
]}""")
svg.saveas("demo3.svg")

This will render as:

Example 3

This mode is documented as part of the bit-field JavaScript package.

Alternatively, WaveDromPy can be called from the command line:

wavedrompy --input input.json --svg output.svg

Important notice

The command line uses Python's JSON interpreter that is more restrictive (coherent with the JSOC spec), while the JavaScript json is more relaxed:

  • All strings have to be written between quotes (""),
  • Extra comma (,) not supported at end of lists or dictionaries

AsciiDoctor example

An AsciiDoctor example is provided to directly generate timing diagrams from AsciiDoctor formatted documents.

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

wavedrom-2.0.3.tar.gz (132.8 kB view details)

Uploaded Source

File details

Details for the file wavedrom-2.0.3.tar.gz.

File metadata

  • Download URL: wavedrom-2.0.3.tar.gz
  • Upload date:
  • Size: 132.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.8

File hashes

Hashes for wavedrom-2.0.3.tar.gz
Algorithm Hash digest
SHA256 cfaf88058cf3f18b4fbf5f2170a1831f91e39f3d4d584f46f873440969dc738e
MD5 fafa96e4afe6a926559521d0b62ad545
BLAKE2b-256 daf55f2dfebc2dbc1bd2aeb1403d81dc7d9043f3e2c146b7c2fb2f0876d80c01

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