Skip to content

Commit 5e01e97

Browse files
committed
Periodically check if WaveDrom is loaded before calling
`WaveDrom.ProcessAll()`, rather than calling it `onload`. This fixes an issue where traces may not render when first executing a `render_trace()` cell, because it races with loading the JavaScript libraries.
1 parent 2a89bb0 commit 5e01e97

1 file changed

Lines changed: 19 additions & 11 deletions

File tree

pyrtl/simulation.py

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1763,23 +1763,31 @@ def render_trace(
17631763
if _currently_in_jupyter_notebook():
17641764
from IPython.display import (
17651765
HTML,
1766+
Javascript,
17661767
display,
17671768
)
17681769

17691770
from pyrtl.visualization import trace_to_html
17701771

1771-
htmlstring = trace_to_html(
1772-
self, trace_list=trace_list, sortkey=_trace_sort_key
1772+
display(
1773+
HTML(
1774+
trace_to_html(self, trace_list=trace_list, sortkey=_trace_sort_key)
1775+
),
1776+
HTML("""
1777+
<script src="https://cdnjs.cloudflare.com/ajax/libs/wavedrom/1.6.2/skins/default.js"></script>
1778+
<script src="https://cdnjs.cloudflare.com/ajax/libs/wavedrom/1.6.2/wavedrom.min.js"></script>
1779+
"""),
1780+
# Wait for WaveDrom to load, polling every 100ms.
1781+
Javascript("""
1782+
var interval = setInterval(function() {
1783+
if (typeof WaveDrom !== 'undefined' &&
1784+
typeof WaveDrom.ProcessAll === 'function') {
1785+
clearInterval(interval);
1786+
WaveDrom.ProcessAll();
1787+
}
1788+
}, 100);
1789+
"""),
17731790
)
1774-
html_elem = HTML(htmlstring)
1775-
display(html_elem)
1776-
# print(htmlstring)
1777-
html_stuff = """
1778-
<script src="https://cdnjs.cloudflare.com/ajax/libs/wavedrom/1.6.2/skins/default.js"></script>
1779-
<script src="https://cdnjs.cloudflare.com/ajax/libs/wavedrom/1.6.2/wavedrom.min.js"></script>
1780-
<style onload="WaveDrom.ProcessAll();"></style>
1781-
"""
1782-
display(HTML(html_stuff))
17831791
else:
17841792
self.render_trace_to_text(
17851793
trace_list=trace_list,

0 commit comments

Comments
 (0)