ludwigcron / undulate Goto Github PK
View Code? Open in Web Editor NEWLicense: MIT License
License: MIT License
edges are drawn at the group level.
By default, without group, there is at least a group of level 0.
edges are drawn inside the wavegroup which is a recursive function.
Therefore, drawing an arrow from a node in a group 1 to a node in a group 2 is not drawn.
For specifications, it is relevant to have two signals on top of each other for comparison of Vsig > Vth which corresponds to the behaviour of a comparator,...
change the default configuration to cairo-png ?
in the commit: f2c612a
the issue can be seen in https://github.com/LudwigCRON/pywave/blob/master/test/wavetest-json.svg
where names in test 3 and test 7 are cut
use a global hscale -> correct node position
use a local hscale -> wrong node position
There is a default color and style for the overall picture.
However, to reflect the color of a given company, almost every single line shall overload color.
An option as
undulate -s `path to css file`
undulate --style `path to css file`
With overlay/scale combination the position of the anchor is incorrect
and the code generating the image is the following:
spacer:
wave: ""
Analog:
VDD50OTP:
wave: "s....."
slewing: 128
analogue:
- VDDA
overlay: true
vscale: 2
order: 1
VPP:
wave: "l.......s..."
node: "........#... vpp_rdy"
slewing: 20
vscale: 2
analogue:
- VDDA
order: 3
Ports:
POWER_UP:
wave: "l..10..."
node: "...#.... pwr_up_req"
OTP Shell:
ms_otp_shell_vpp_mode[1:0]:
wave: "=.......=..."
node: "........#... mux_chng"
data:
- "0"
- "1"
CEB:
wave: "1.....0......"
node: "......#...... active"
annotations:
- shape: "||"
x: 4.5
from: 1.0
- shape: "||"
x: 6.5
from: 1.0
# vpp change origin
- shape: "~->"
from: pwr_up_req
to: mux_chng
- shape: "-~>"
from: mux_chng
to: vpp_rdy
# ceb change origin
- shape: "~->"
from: pwr_up_req
to: active
# timing delimitation
- shape: "|"
x: 3.2
stroke: "#DB4140"
stroke-dasharray: [1,3]
- shape: "|"
x: 6.05
stroke: "#DB4140"
stroke-dasharray: [1,3]
- shape: "|"
x: 8.25
stroke: "#DB4140"
stroke-dasharray: [1,3]
# timing arrows
- shape: "<->"
from: (3.2, 0.25)
to: (6.05, 0.25)
text: "> 100 ns"
- shape: "<->"
from: (3.2, 0.95)
to: (8.25, 0.95)
text: "> 1 us"
dx: 1.25
Current version on master branch breaks the compatibility with wavedrom. This can be seen on the adcec.jsonml testcase with several signal with the same name in the same group.
In addition to that there is discrepency on nh behaviour.
Documentation link in README.md is broken
It goes to https://ludwigcron.github.io/undulate/html/ which is a 404.
there is regularly dotted vertical grey lines. They usually are aligned witht the rising edge of nNpP blocks. However, when the parameter phase is added, only the signal is phased out.
Ticks should stick to the rising edge of nNpP
Arrows in annotations
For instance
undulate youpi.yaml
usage: undulate [-h] [-i INPUT] [-f FORMAT] [-r] [-d DPI] [-o OUTPUT]
undulate: error: unrecognized arguments: youpi.yaml
Would be better to tell "precise if the file is an input with -i or an output with -o"
This file:
std_memory_interface_v3.json.gz
is read correctly by wavedrom (npx wavedrom-cli -i std_memory_interface_v3.json -s test.png)
but fails with undulate:
undulate -f cairo-png --dpi 300 -i std_memory_interface_v3.json -o output.png
CRITICAL: Parsing Error detected: Expecting value at line 3
edges are defined at a group level.
By default, without any group, there is at least a group of level 0
when adding edges within a group, they are not placed correctly.
In the analogue environment, the code use python eval() function.
eval() allows to call import and os functions considered a potential threats.
On experiment is seems global hscale is not considered for the positionning of the annotations.
Therefore it does not consider local hscale too ?
annotations:
- shape: "|"
x: 2.15
stroke-dasharray: [1, 3]
stroke: "#db4141"
- shape: "|"
x: 3.0
stroke-dasharray: [1, 3]
stroke: "#db4141"
- shape: "<->"
from: (2.15, 3)
to: (3, 3)
text: "T "
dy: -0.2
dx: -0.2
fill: "#db4141"
stroke: "#db4141"
font-size: 0.4em
config:
hscale: 0.5
This occurs only for the gnome image viewer
Numbers are normalized by the function _number_convert
.
When using a hexadecimal colour using "0B" like #2980B7
, the application will crash
In https://wavedrom.com/tutorial.html
the Step 8 has been updated since and support now 'I+J' edge
I there is only 1 element in the edge definition 'I +' it just place '+' as a textat the emplacement of the node I.
The placement of some element seems not correct.
From the given input file, the tool can generate a verilog sequence for simulation purpose. This could save time to the designer and ensure it respect the specification.
this need a new inputs from the designer such as:
When there are consecutive data with the same value (or repeat after a gap =|.) the brick last longer but the text inside the data block is not centred
Would be nice to have some margin on the surface, to place comments on the top or some annotations
jump between 4.99 and 5 of almost half a row and by default mid of the row is strange.
might a y coordinate system would be simplier.
Let's suppose be want to point to the 4th row on the top enter y=4 and to the bottom of the row 4.99. So the middle is y=4.5
It would be nice to have \n support to allows multiline text either on annotations, or in the name of a signal ([signal name]\n[parameter value]), and even in digital data
for an edge described as "a RX_DATA" is translated in wavedrom as an arrow with a text just above.
In pywave RX_DATA is considered as a node and not as a text
In the master branch, the problem is fixed.
This problem occurs with the fix-renderer branch
Originally posted by @LudwigCRON in #8 (comment)
misplacement
It would be awesome if undulate could render wavedrom output to console compatible output.
Here Is an example; https://github.com/mithro/i2cslave/blob/ad4335fb1ef5bb46d652e44b813c559f71b37409/i2cslave/targets/i2c_munger.py#L83-L98
S 0 1 2 3 4 5 6 7 A
sda ▔▔\▁▁▁▁▁----XXXX----XXXX----XXXX----XXXX----XXXX----XXXX----XXXX----▁▁▁▁▁▁▁▁▁/▔▔▔▔▔▔▔
sda_oe ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔\▁▁▁▁▁▁▁▁/▔▔▔▔▔▔▔
sda_w ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
sda_r ▔▔\▁▁▁▁▁1-------0-------1-------0-------0-------0-------0-------0------------/▔▔▔▔▔▔▔
scl_r ▔▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔▔
S 0 1 2 3 4 5 6 7
sda ▔▔\▁▁▁▁▁----XXXX----XXXX----XXXX----XXXX----XXXX----XXXX----XXXX----XXXX----
sda_oe ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔\▁▁▁▁▁▁▁/▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
sda_w ▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁
sda_r ▔▔\▁▁▁▁▁1-------0-------1-------0-------0-------0-------0-------0-------/▔▔▔
scl_r ▔▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔\▁▁▁/▔▔▔
in the following toml is accepted.
[[annotations]]
shape = "||"
x = 2.5
However when using groups or spacer to have a blank line, the global time compression is behind possible other annotations. It make diagram difficult to read.
One could add several global time compression for each group such that the blank space is preserved and readability too.
Supporting from/to properties would results in something like below
[[annotations]]
shape = "||"
x = 2.5
from = 3
to = 7
[[annotations]]
shape = "||"
x = 2.5
from = 9
to = 12
Since the first release, a signal could have a time compression by using |
However, one can consider to have a signal define as x=....|..... which means the signal is kept constant over a long time.
|. break the sequence and you should change for x=.....|=..... and repeat the data twice. It also occurs with others symbols.
Could it be possible to have a single time compression symbol over the picture height?
Based on the issues #31 and #32
it would be appealing to call the tool in the following manner
undulate <path to parent folder>/youpi.yaml
it is intended that the default configuration is used and the output file to be the in
The output file should be youpi.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.