Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
std:start [2022/07/17 06:31]
rajit [Functions]
std:start [2023/04/08 12:16]
rajit [Nested namespaces]
Line 4: Line 4:
  
 ====== Functions ====== ====== Functions ======
 +
 +===== Parameter-type functions =====
  
 <code act> <code act>
Line 24: Line 26:
 </code> </code>
 Computes the quantity ''n'' to the power of ''m''. Note that ''pint''s use 64-bit representation.  Computes the quantity ''n'' to the power of ''m''. Note that ''pint''s use 64-bit representation. 
 +
 +===== Runtime Functions =====
 +
 +<code act>
 +export template<pint W; pint N; pint taps[N]> function fib_lfsr (int<W> state) : int<W>;
 +</code>
 +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 ====== ====== Definitions ======
 +
 +<code act>
 +export template<pint ID, N,W>
 +defproc rom (chan?(int<std::ceil_log2(N)>) addr; chan!(int<W>) dout);
 +</code>
 +(This can be used after ''actsim'' is installed.)
 +
 +<code act>
 +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);
 +</code>
 +
 +<code act>
 +export defcell buf_arbiter(bool? a, b; bool! u, v) ;
 +</code>
 +
 +<code act>
 +export defcell ideal_arbiter(bool? a, b; bool! u, v) ;
 +</code>
 +
 +<code act>
 +export template<pint N, M>
 +defproc arbiter(chan?(int<N>) A; chan?(int<M>) B; chan!(int<N>) Ap; chan!(int<M>) Bp);
 +</code>
  
 ====== Nested namespaces ====== ====== Nested namespaces ======
Line 31: Line 69:
 The ''std'' namespace contains a number of nested namespaces: The ''std'' namespace contains a number of nested namespaces:
  
-  * [[channels|channels]]: Standard channel definitions 
   * [[data|data]]: Standard data types   * [[data|data]]: Standard data types
 +  * [[channels|channels]]: Standard channel definitions
   * [[gates|gates]]: Commonly used gates   * [[gates|gates]]: Commonly used gates
   * [[cells|cells]]: A simple synchronous standard-cell library   * [[cells|cells]]: A simple synchronous standard-cell library
   * [[io|io]]: Standard I/O primitives   * [[io|io]]: Standard I/O primitives
 +  * [[bit|bit]]: Bit-manipulation functions