code: def trace_to_html(simtrace, trace_list=None, sortkey=None):
      
  
      from .simulation import SimulationTrace, _trace_sort_key
      if not isinstance(simtrace, SimulationTrace):
          raise PyrtlError('first arguement must be of type SimulationTrace')
  
      trace = simtrace.trace
      if sortkey is None:
          sortkey = _trace_sort_key
  
      if trace_list is None:
          trace_list = sorted(trace, key=sortkey)
  
      wave_template = (
          """\
          <script type="WaveDrom">
          { signal : [
          %s
          ]}
          </script>
  
          """
          )
  
      def extract(w):
          wavelist = []
          datalist = []
          last = None
          for i, value in enumerate(trace[w]):
              if last == value:
                  wavelist.append('.')
              else:
                  if len(w) == 1:
                      wavelist.append(str(value))
                  else:
                      wavelist.append('=')
                      datalist.append(value)
                  last = value
  
          wavestring = ''.join(wavelist)
          datastring = ', '.join(['"%d"' % data for data in datalist])
          if len(w) == 1:
              return bool_signal_template % (w, wavestring)
          else:
              return int_signal_template % (w, wavestring, datastring)
  
      bool_signal_template = '{ name: "%s",  wave: "%s" },'
      int_signal_template = '{ name: "%s",  wave: "%s", data: [%s] },'
      signals = [extract(w) for w in trace_list]
      all_signals = '\n'.join(signals)
      wave = wave_template % all_signals
      # print(wave)
      return wave
docs: Return a HTML block showing the trace.