#ifdef VHDL_TESTBENCH #ifndef morpheo_behavioural_Vhdl_Testbench_h #define morpheo_behavioural_Vhdl_Testbench_h /* * $Id$ * * [ Description ] * */ #include "Behavioural/include/Vhdl.h" #include "Include/ToString.h" #include "Include/ToBase2.h" #include #include #include using namespace std; namespace morpheo { namespace behavioural { class Vhdl_Testbench { class label_t { public : const uint32_t _cycle; public : const string _label; label_t (uint32_t cycle, string label) : _cycle (cycle), _label (label) {}; }; // -----[ fields ]---------------------------------------------------- private : const string _name ; private : string _clock_name ; private : uint32_t _num_cycle ; private : uint32_t _size_input ; private : uint32_t _size_output; private : list _list_input ; private : list _list_input_cycle; private : list _list_input_size ; private : list _list_output; private : list _list_output_cycle; private : list _list_output_size ; private : list _list_test; private : list _list_port; private : list _list_label; private : list::iterator _num_input ; private : list::iterator _num_output; private : Vhdl * _vhdl; // -----[ methods ]--------------------------------------------------- public : Vhdl_Testbench (string name); public : virtual ~Vhdl_Testbench (); public : void generate_file (void); public : void set_port (string name , direction_t direction , uint32_t size ); public : void set_clock (string name , bool model_have_clock); public : void new_cycle (void); private : uint32_t get_input (void); private : void set_input (void); public : void add_input (uint32_t value ); private : uint32_t get_output (void); private : void set_output (void); public : void add_output (uint32_t value ); private : uint32_t get_test (void); public : void add_test (bool must_test ); private : void get_label (void); public : void add_label (string label ); private : void generate_process_clock (uint32_t counter ); private : void generate_instance (void); }; }; // end namespace behavioural }; // end namespace morpheo #endif #endif