#ifndef morpheo_behavioural_Interface_fifo_h #define morpheo_behavioural_Interface_fifo_h /* * $Id$ * * [ Description ] * */ #include "Behavioural/include/Interface.h" namespace morpheo { namespace behavioural { typedef enum {VAL, ACK} val_ack_t; class Interface_fifo : public Interface { private : list * _list_signal_val; private : list * _list_signal_ack; #ifdef VHDL_TESTBENCH private : bool _test_exhaustive; private : list * _list_cycle ; #endif // -----[ methods ]--------------------------------------------------- public : Interface_fifo (string name #ifdef POSITION ,direction_t direction ,localisation_t localisation #endif ); public : Interface_fifo (const Interface_fifo & interface_fifo); public : ~Interface_fifo (); public : Signal * set_signal_valack (string name , direction_t direction, val_ack_t val_ack , presence_port_t presence_port = PORT_VHDL_YES_TESTBENCH_YES); private : void save_ptr (Signal * signal , val_ack_t val_ack ); #ifdef SYSTEMC public : sc_in * set_signal_valack_in (string name , val_ack_t val_ack , presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES) { log_printf(FUNC,Behavioural,"set_signal_valack_in","Begin"); sc_in * port = set_signal_in (name, 1, presence_port); save_ptr(_list_signal->back(), val_ack); log_printf(FUNC,Behavioural,"set_signal_valack_in","End"); return port; }; public : sc_out * set_signal_valack_out(string name , val_ack_t val_ack , presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES) { log_printf(FUNC,Behavioural,"set_signal_valack_out","Begin"); sc_out * port = set_signal_out (name, 1, presence_port); save_ptr(_list_signal->back(), val_ack); log_printf(FUNC,Behavioural,"set_signal_valack_out","End"); return port; }; #endif #ifdef VHDL_TESTBENCH public : uint32_t get_cycle (void); public : void testbench (void); public : bool testbench_transaction(void); public : void testbench_cycle (void); public : string testbench_test (Vhdl * & vhdl , string counter_name, string reset_name ); public : string testbench_test_transaction (Vhdl * & vhdl); #endif }; }; // end namespace behavioural }; // end namespace morpheo #endif