diff --git a/doc/conf.py b/doc/conf.py index 53be1aba..ebe3e038 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -32,7 +32,8 @@ numfig_format = {'figure': 'Figure %s', 'table': 'Table %s', 'code-block': 'List # Add any Sphinx extension module names here, as strings. They can be # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom # ones. -extensions = [] +extensions = ['sphinxcontrib.wavedrom'] +wavedrom_html_jsinline = False # Add any paths that contain templates here, relative to this directory. templates_path = ['_templates'] diff --git a/doc/images/timing1.json b/doc/images/timing1.json deleted file mode 100644 index e0ff9c78..00000000 --- a/doc/images/timing1.json +++ /dev/null @@ -1,13 +0,0 @@ -{signal: [ - {name: 'clk', wave: 'p......'}, - {name: 'data_addr_o', wave: 'x=.xxxx', data: ['Address']}, - {name: 'data_wdata_o', wave: 'x=.xxxx', data: ['WData']}, - {name: 'data_req_o', wave: '01.0...'}, - {name: 'data_gnt_i', wave: '0.10...'}, - {name: 'data_rvalid_i', wave: '0..10..'}, - {name: 'data_wdata_o', wave: 'xxx=xxx', data: ['RData']}, - {name: 'data_we_o', wave: 'x=.xxxx', data: ['WE']}, - {name: 'data_be_o', wave: 'x=.xxxx', data: ['BE']}, - ], - config: { hscale: 2 } -} diff --git a/doc/images/timing1.png b/doc/images/timing1.png deleted file mode 100644 index d172e16b..00000000 Binary files a/doc/images/timing1.png and /dev/null differ diff --git a/doc/images/timing2.json b/doc/images/timing2.json deleted file mode 100644 index 9bf340bc..00000000 --- a/doc/images/timing2.json +++ /dev/null @@ -1,13 +0,0 @@ -{signal: [ - {name: 'clk', wave: 'p......'}, - {name: 'data_addr_o', wave: 'x==xxxx', data: ['Addr1', 'Addr2']}, - {name: 'data_wdata_o', wave: 'x==xxxx', data: ['WData1', 'Wdata2']}, - {name: 'data_req_o', wave: '01.0...'}, - {name: 'data_gnt_i', wave: '01.0...'}, - {name: 'data_rvalid_i', wave: '0.1.0..'}, - {name: 'data_wdata_o', wave: 'xx==xxx', data: ['RData1', 'RData2']}, - {name: 'data_we_o', wave: 'x==xxxx', data: ['WE1', 'WE2']}, - {name: 'data_be_o', wave: 'x==xxxx', data: ['BE1', 'BE2']}, - ], - config: { hscale: 2 } -} diff --git a/doc/images/timing2.png b/doc/images/timing2.png deleted file mode 100644 index dc4ab9e9..00000000 Binary files a/doc/images/timing2.png and /dev/null differ diff --git a/doc/images/timing3.json b/doc/images/timing3.json deleted file mode 100644 index 8bf3c83a..00000000 --- a/doc/images/timing3.json +++ /dev/null @@ -1,13 +0,0 @@ -{signal: [ - {name: 'clk', wave: 'p......'}, - {name: 'data_addr_o', wave: 'x=..xxx', data: ['Address']}, - {name: 'data_wdata_o', wave: 'x=..xxx', data: ['WData']}, - {name: 'data_req_o', wave: '01..0..'}, - {name: 'data_gnt_i', wave: '0..10..'}, - {name: 'data_rvalid_i', wave: '0....10'}, - {name: 'data_wdata_o', wave: 'xxxxx=x', data: ['RData']}, - {name: 'data_we_o', wave: 'x=..xxx', data: ['WE']}, - {name: 'data_be_o', wave: 'x=..xxx', data: ['BE']}, - ], - config: { hscale: 2 } -} diff --git a/doc/images/timing3.png b/doc/images/timing3.png deleted file mode 100644 index ceeab21b..00000000 Binary files a/doc/images/timing3.png and /dev/null differ diff --git a/doc/load_store_unit.rst b/doc/load_store_unit.rst index 8a2664f0..e7611503 100644 --- a/doc/load_store_unit.rst +++ b/doc/load_store_unit.rst @@ -51,17 +51,63 @@ The LSU provides a valid address in ``data_addr_o`` and sets ``data_req_o`` high :numref:`timing1`, :numref:`timing2` and :numref:`timing3` show example-timing diagrams of the protocol. -.. figure:: images/timing1.png +.. wavedrom:: :name: timing1 + :caption: Basic Memory Transaction - Basic Memory Transaction + {"signal": + [ + {"name": "clk", "wave": "p......"}, + {"name": "data_addr_o", "wave": "x=.xxxx", "data": ["Address"]}, + {"name": "data_wdata_o", "wave": "x=.xxxx", "data": ["WData"]}, + {"name": "data_req_o", "wave": "01.0..."}, + {"name": "data_gnt_i", "wave": "0.10..."}, + {"name": "data_rvalid_i", "wave": "0..10.."}, + {"name": "data_wdata_o", "wave": "xxx=xxx", "data": ["RData"]}, + {"name": "data_we_o", "wave": "x=.xxxx", "data": ["WE"]}, + {"name": "data_be_o", "wave": "x=.xxxx", "data": ["BE"]} + ], + "config": { "hscale": 2 } + } -.. figure:: images/timing2.png + +.. wavedrom:: :name: timing2 + :caption: Back-to-back Memory Transaction - Back-to-back Memory Transaction + {"signal": + [ + {"name": "clk", "wave": "p......"}, + {"name": "data_addr_o", "wave": "x==xxxx", "data": ["Addr1", "Addr2"]}, + {"name": "data_wdata_o", "wave": "x==xxxx", "data": ["WData1", "Wdata2"]}, + {"name": "data_req_o", "wave": "01.0..."}, + {"name": "data_gnt_i", "wave": "01.0..."}, + {"name": "data_rvalid_i", "wave": "0.1.0.."}, + {"name": "data_wdata_o", "wave": "xx==xxx", "data": ["RData1", "RData2"]}, + {"name": "data_we_o", "wave": "x==xxxx", "data": ["WE1", "WE2"]}, + {"name": "data_be_o", "wave": "x==xxxx", "data": ["BE1", "BE2"]} + ], + "config": { "hscale": 2 } + } -.. figure:: images/timing3.png + +.. wavedrom:: :name: timing3 + :caption: Slow Response Memory Transaction + + {"signal": + [ + {"name": "clk", "wave": "p......"}, + {"name": "data_addr_o", "wave": "x=..xxx", "data": ["Address"]}, + {"name": "data_wdata_o", "wave": "x=..xxx", "data": ["WData"]}, + {"name": "data_req_o", "wave": "01..0.."}, + {"name": "data_gnt_i", "wave": "0..10.."}, + {"name": "data_rvalid_i", "wave": "0....10"}, + {"name": "data_wdata_o", "wave": "xxxxx=x", "data": ["RData"]}, + {"name": "data_we_o", "wave": "x=..xxx", "data": ["WE"]}, + {"name": "data_be_o", "wave": "x=..xxx", "data": ["BE"]} + ], + "config": { "hscale": 2 } + } + - Slow Response Memory Transaction diff --git a/doc/requirements.txt b/doc/requirements.txt index a0700776..029cf4ca 100644 --- a/doc/requirements.txt +++ b/doc/requirements.txt @@ -1,3 +1,4 @@ setuptools_scm sphinx sphinx_rtd_theme +git+https://github.com/wallento/sphinx-wavedrom