Hardcaml_waveterm.Waveform
A waveform is a mutable value that represents the outcome of a simulation; it holds a time series of values for a number of ports. The waveform is updated by running the simulation.
val sexp_of_t : t -> Sexplib0.Sexp.t
val create :
( 'i, 'o ) Hardcaml.Cyclesim.t ->
t * ( 'i, 'o ) Hardcaml.Cyclesim.t
Create waveform. Returns a new simulation object that side effects the waveform.
val create_from_data :
waves:Hardcaml_waveterm__Wave.t Base.list ->
ports:Hardcaml_waveterm__Port.t Base.list ->
t
val waves : t -> Hardcaml_waveterm__Wave.t Base.array
type 'a with_options =
?display_rules:Display_rules.t ->
?display_width:Base.int ->
?display_height:Base.int ->
?display_values:Base.bool ->
?wave_width:Base.int ->
?wave_height:Base.int ->
?signals_width:Base.int ->
?start_cycle:Base.int ->
?signals_alignment:Text_alignment.t ->
'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 raised0
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.
signals_alignment
changes the text alignment of the displayed signals names. By default this is Wave_format.Left.
val sort_ports_and_formats :
t ->
Display_rules.t Base.option ->
Hardcaml_waveterm__Wave.t Base.array
val to_buffer : ( t -> Base.Buffer.t ) with_options
val to_string : ( t -> Base.string ) with_options
Convert waveform to a string.
val print :
( ?show_digest:Base.bool ->
?channel:Stdio.Out_channel.t ->
t ->
Base.unit )
with_options
Print waveform to channel
val expect :
( ?show_digest:Base.bool ->
?serialize_to:Base.string ->
t ->
Base.unit )
with_options
Print waveforms in expect tests. This is very similar to print
except it always outputs to stdout
and will optionally serialize the waveform to disk for offline viewing if the environment variable EXPECT_TEST_WAVEFORM=1
and the serialize_to
filename is set.
Simulation digests are shown by default.
module Serialize : sig ... end