Module Hardcaml_waveterm.Waveform

type t
val sexp_of_t : t -> Ppx_sexp_conv_lib.Sexp.t
val create : ('i'o) Import.Cyclesim.t -> t * ('i'o) Import.Cyclesim.t

Create waveform. Returns a new simulation object that side effects the waveform.

type 'a with_options = ?⁠display_rules:Display_rules.t -> ?⁠display_width:Import.int -> ?⁠display_height:Import.int -> ?⁠display_values:Import.bool -> ?⁠wave_width:Import.int -> ?⁠wave_height:Import.int -> 'a

Waveform configuration options.

display_rules see Display_rules. A waveform may be constructed once and displayed multiple times with differing options.

wave_height sets the number of rows each wave is displayed with.

  • <0 an exception is raised
  • 0 2 lines per wave. This show transitions but not the data for multi-bit signals.
  • 1 2 lines for binary data, 3 lines for multi-bit data. This is the default and most compact view.
  • n (n+1) lines per wave.

wave_width sets the number of chars used to render each clock cycle.

  • n>=0 ((n+1)*2) characters per cycle. This ensures that the clock is properly rendered when n=0. The default of 3 allows up to 7 chars per cycle to be rendered to represent data values in the waveform.
  • n<0 (-n) cycles per character. Characters in the waveform within which multiple transitions occur are displayed with a double veritical bar.

display_width and display_height simply set the overall size of the displayed waveform. An auto scaling routine assigns approximately 1/3 of the display for the signals and values windows. The default size is 70 character wide and 20 high. The minimum size is 7 characters wide and 3 high and an exception is raise otherwise.

val sort_ports_and_formats : t -> Display_rules.t Import.option -> Wave.t Import.array
val to_string : (t -> Import.string) with_options

Convert waveform to a string.

val print : (?⁠channel:Import.Out_channel.t -> t -> Import.unit) with_options

Print waveform to channel default stdout.