This is an old revision of the document!


Namespace std

The std namespace contains a collection of standard definitions for channels, data types, and other components. This can be viewed as ACT's equivalent of the C++ standard template library.

Functions

export function max(pint a, b) : pint;

Returns the larger of the two pints.

export function min(pint a, b) : pint;

Returns the smaller of the two pints.

export function ceil_log2 (pint a) : pint;

Computes the smallest power of two that is at least as large as a.

export function pow(pint n, m) : pint;

Computes the quantity n to the power of m. Note that pints use 64-bit representation.

Definitions

export template<pint ID, N,W>
defproc rom (chan?(int<std::ceil_log2(N)>) addr; chan!(int<W>) dout);

(This can be used after actsim is installed.)

export template<pint N, W>
defproc ram (chan?(int<2>) rd; chan?(int<std::ceil_log2(N)>) addr;  chan?(int<W>) din;  chan!(int<W>) dout);
export defcell buf_arbiter(bool? a, b; bool! u, v) ;
export defcell ideal_arbiter(bool? a, b; bool! u, v) ;
export template<pint N, M>
defproc arbiter(chan?(int<N>) A; chan?(int<M>) B; chan!(int<N>) Ap; chan!(int<M>) Bp);

Nested namespaces

The std namespace contains a number of nested namespaces:

  • channels: Standard channel definitions
  • data: Standard data types
  • gates: Commonly used gates
  • cells: A simple synchronous standard-cell library
  • io: Standard I/O primitives