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!
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:
- Layer
-1: Background elements such as ticks and guide lines - Layer
0: Filled areas such as buses - Layer
1: Strokes and Labels - Layer
2: The fancy SS / aka. decorations
- Layer
- Instead of stitching everything together, a system where one long line is drawn using
WaveDrom based
The basics of the WaveDrom syntax is implemented and the features below are planned to be implemented at some point.
periodandphaseparameterheadandfootwithtick,tock,everyandtextparameter- Arrows & Sharp lines
- Groups