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
Parameter-type functions
export function max(pint a, b) : pint;
Returns the larger of the two pint
s.
export function min(pint a, b) : pint;
Returns the smaller of the two pint
s.
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 pint
s use 64-bit representation.
Runtime Functions
export template<pint W; pint N; pint taps[N]> function fib_lfsr (int<W> state) : int<W>;
Given the current W
-bit state of a Fibonacci-style linear feedback shift register (LFSR), compute the next state. The LFSR has N
taps, and the ith tap is at location taps[i]
.
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);