1 /**************************************************************************
\r
4 DOL FIFO channel interfaces
\r
6 (c) 2006 by Alexander Maxiaguine <maxiagui@tik.ee.ethz.ch>
\r
8 Computer Engineering and Networks Laboratory, TIK
\r
9 Swiss Federal Institute of Technology, ETHZ Zurich
\r
12 **************************************************************************/
\r
14 /**************************************************************************
\r
17 14.03.06 -- creation
\r
19 **************************************************************************/
\r
21 #ifndef DOL_FIFO_IF_H
\r
22 #define DOL_FIFO_IF_H
\r
24 #include "systemc.h"
\r
28 class dol_fifo_write_if : virtual public sc_interface
\r
32 // bloking (re)acquire free room in the channel
\r
33 virtual void reAcquireRoom(int count) = 0;
\r
35 // non-bloking (re)acquire free room in the channel
\r
36 virtual bool tryReAcquireRoom(int count) = 0;
\r
38 // store data into the acquired free room
\r
39 virtual void store(int offset, T* data, int count) = 0;
\r
41 // release the stored data to the channel (commit write)
\r
42 virtual void releaseData(int count) = 0;
\r
48 dol_fifo_write_if() {}
\r
54 dol_fifo_write_if( const dol_fifo_write_if<T>& );
\r
55 dol_fifo_write_if<T>& operator = ( const dol_fifo_write_if<T>& );
\r
59 class dol_fifo_read_if : virtual public sc_interface
\r
63 // bloking (re)acquire data in the channel
\r
64 virtual void reAcquireData(int count) = 0;
\r
66 // non-bloking (re)acquire data in the channel
\r
67 virtual bool tryReAcquireData(int count) = 0;
\r
69 // load the acquired data into a vector
\r
70 virtual void load(int offset, T* vector, int count) = 0;
\r
72 // free up the room in the channel (commit read)
\r
73 virtual void releaseRoom(int count) = 0;
\r
79 dol_fifo_read_if() {}
\r
85 dol_fifo_read_if( const dol_fifo_read_if<T>& );
\r
86 dol_fifo_read_if<T>& operator = ( const dol_fifo_read_if<T>& );
\r