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 on (almost) par with WaveDrom!
- Write Manual
- 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
- Get closer to WaveDrom syntax (see below)
WaveDrom based
periodandphaseparameterheadandfootwithtick,tock,everyandtextparameter- Arrows & Sharp lines
- Groups