Universe

Digidraw v0.9.1

A drawing package to draw digital timing diagrams using the WaveDrom syntax. Some WaveDrom data are compatible with Digidraw and some are not, but I plan or hope to implement those. Reasonable input/feedback is welcome!

Click here for the manual of Digidraw

Features

  • Draw wires, buses, clocks and other symbol types
    • A lot of these elements are 1:1 from WaveDrom, but not everthing is inside!
  • Support for inserting labels into buses (similar to Wavedrom)
  • Support for typst markup for bus labels, when reading from a json file."data": ["#strong([hello])"]
  • Configurable style settings to change fonts, stroke styling and sizing

Examples

Click on the image for the source.


Source: https://wavedrom.com/tutorial.html#spacers-and-gaps

Source: https://wavedrom.com/tutorial.html#adding-clock

Things Missing / Not Yet Implemented

Still lots to implement to be (almost) on par with WaveDrom!

  • All symbol combinations (the most important ones are implemented)
  • Improve Line rendering
    • Instead of stitching everything together, a system where one long line is drawn using cetz.draw.merge-path. Exception would transition edges which would break up the line. Buses would consist of two parts: the upper and lower β€œlip”.
    • Line Merging would separate the primary lines from secondary lines + some fancy layer working could be done:
      1. Layer -1: Background elements such as ticks and guide lines
      2. Layer 0: Filled areas such as buses
      3. Layer 1: Strokes and Labels
      4. Layer 2: The fancy SS / aka. decorations

WaveDrom based

The basics of the WaveDrom syntax is implemented and the features below are planned to be implemented at some point.

  • period and phase parameter
  • head and foot with tick, tock, every and text parameter
  • Arrows & Sharp lines
  • Groups