This is an old revision of the document!


Namespace sim

The sim namespace contains a collection of process definitions that can be used to create simple test environments for simulation purposes. Import this namespace using

import sim;

Exported processes

template<pint W, V> 
defproc source (chan!(int<W>) O);

This creates a data source that has bit-width W, and that repeatedly sends the constant value V on the output port O.

template<pbool LOG; pint W> 
defproc sink(chan?(int<W>) I);

This process acts as a data sink; it repeatedly receives W-bit input on the input port I. If the LOG parameter is set to true, then it also displays the value received using the log() command.

template<pint W; pbool REP; pint N; pint data[N]>
defproc source_seq(chan!(int<W>) O);

This process also provides a W-bit source. Values generated by this source are specified in the N-entry data[] array. The outputs produced are data[0], data[1], …, data[N-1]. If REP is set to true, then this sequence is repeated forever.

export template<pint ID; pbool LOOP; pint W>
defproc file_source(chan!(int<W>) O);

This process is also a W-bit source, except the values produced are taken from a file. The identified ID is used to determine the file name, and the file is assumed to have at least one data value. By default, the file name is _infile_.{ID}. The file format is a sequence of hexadecimal values, one per line. If LOOP is set to true, then the sequence of values specified in the file is repeated forever.

export template<pint ID; pbool LOOP; pint W>
defproc check_sink(chan?(int<W>) I);

This process is a W-bit sink, except the values produced are compared to those specified in a file. The identified ID is used to determine the file name, and the file is assumed to have at least one data value. The file specified and the LOOP parameter is the same as in file_source.

Namespace sim::rand