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.post3.tar.gz (137.7 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: wavedrom-2.0.3.post3.tar.gz
  • Upload date:
  • Size: 137.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.0 CPython/3.10.4

File hashes

Hashes for wavedrom-2.0.3.post3.tar.gz
Algorithm Hash digest
SHA256 327b4d5dca593c81257c202fea516f7a908747fb11527c359f034f5b7af7f47b
MD5 1fa386c34d9b6b59ba5e0b0556d5939b
BLAKE2b-256 be716739e3abac630540aaeaaece4584c39f88b5f8658ce6ca517efec455e3de

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page