Wavedrom is a tool to render SVG of waveforms using WaveJSON. WaveJSON is JSON based format docs to documents signal values with labels and annotations. wavedrom is written in javascript but there is wavedrompy which is the python implementation.

Example Link to heading

{
"signal": [
  {"name": "clk", "wave": "P............", "node":"............."},
  {"name": "req", "wave": "01..0........", "node":".a..b.C...D.."},
  {"name": "ack", "wave": "0.....1...0..", "node":".A..B.c...d.."}
],

  "edge"   : [
              "b-~>c 1:N",
  		  		"a-~>b 5",
                "c-~>d 8",
    			"a-|>A",
    			"b-|>B",
    			"c-|>C",
    			"d-|>D"

   ],
 "config": {"hscale":2,"scale":2}
}

And output should be something like

Example image