Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/LudwigCRON/undulate
https://github.com/LudwigCRON/undulate
digital-timing-diagrams eps json pdf png svg timing-diagram wavedrom waveform
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/LudwigCRON/undulate
- Owner: LudwigCRON
- License: mit
- Created: 2019-01-20T09:05:29.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2024-06-30T09:02:14.000Z (4 months ago)
- Last Synced: 2024-07-15T12:55:19.600Z (4 months ago)
- Topics: digital-timing-diagrams, eps, json, pdf, png, svg, timing-diagram, wavedrom, waveform
- Language: Python
- Size: 33 MB
- Stars: 35
- Watchers: 4
- Forks: 1
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Support: docs/supported_syntax.html
Awesome Lists containing this project
- awesome-opensource-hardware - undulate
README
# Undulate
![](https://img.shields.io/badge/license-MIT-blue)
![](https://img.shields.io/badge/python-3.8+-blue)
![](https://64-166642218-gh.circle-artifacts.com/0/tests/outputs/cov_badge.svg)
[![CircleCI](https://circleci.com/gh/LudwigCRON/undulate/tree/master.svg?style=shield)](https://circleci.com/gh/LudwigCRON/undulate/tree/master)## Introduction
**WaveDrom** is a Free and Open Source online digital
timing diagram (waveform) rendering engine that uses javascript,
HTML5 and SVG to convert a
[WaveJSON](https://github.com/drom/wavedrom/wiki/WaveJSON)
input text description into SVG vector graphics.[WaveJSON](https://github.com/drom/wavedrom/wiki/WaveJSON) is an
application of the [JSON](http://json.org/) format. The purpose of
[WaveJSON](https://github.com/drom/wavedrom/wiki/WaveJSON)
is to provide a compact exchange format for digital timing
diagrams utilized by digital HW / IC engineers.However, this great tool need either a headless web browser
or node.js to generate documentations. Python being mainstream
and cross-platform why not leverage its power?This version is not a mere copy of the original one. The goals
are to ensure the compatibility and to add new features. To
name a few:
- long name for nodes for creating edges from one specific point to another
- metastability wave
- analogue waveforms (step, capacitive step, slewing, arbitrary waves, overlay up to 4 waves)
- add annotations (global time compression, vertical/horizontal lines)
- style overloading (font-size, fill color, stroke color, stroke-width, stroke-dasharray, ...)The inputs could be either:
- json
- WaveJSON (cson)
- yaml
- tomlwhile outputs would be:
- svg _for web pages_
- postscript _for latex documentation_
- pdf _for pdflatex documentation_
- png _for word, libreoffice, ..._## Documentation
The complete documentation is available [here](https://ludwigcron.github.io/undulate/)## License
See [LICENSE](https://github.com/drom/wavedrom/blob/master/LICENSE).
## Installation
It is recommended to create a python environment to not pollute the python of your operating
system.> :interrobang: some OS relies on specific version of python
> packages. One use a workflow with specific tools. To not break
> this vital components, the environment boxes in a specific
> location packages and dependencies.
> Tools: [pyenv](https://github.com/pyenv/pyenv-virtualenv)
> [virtualenv](https://pypi.org/project/virtualenv/)
> [lmod](https://lmod.readthedocs.io/en/latest/)If it's intended, or you do it on purpose, you can skip directly to step #3.
**1. create a new environment**
With pyenv:
``` bash
pyenv virtualenv
```with virtualenv package:
```bash
python3 -m venv
```**2. Activate the newly created environment**
With pyenv:
```bash
pyenv activate
```with virtualenv package:
```bash
source /bin/activate
```**3. Finally, install it**
```bash
python3 -m pip install git+https://github.com/LudwigCRON/undulate.git
```**4. Use it!**
From now on, in the environment, you can call the script directly wherever you are
```bash
cd ${HOME}/projects/my-fancy-thing/documents/
undulate -f cairo-png --dpi 300 -i input.yaml -o output.png
```To deactivate your environment call in the terminal
```bash
deactivate
```