/* * $Id: Configuration.cpp 146 2011-02-01 20:57:54Z rosiere $ * * [ Description ] * */ #include "Behavioural/Configuration/include/Configuration.h" #include "Behavioural/include/Simulation.h" #include "Common/include/Environment.h" namespace morpheo { namespace behavioural { namespace configuration { #undef FUNCTION #define FUNCTION "Configuration::Configuration" Configuration::Configuration (std::string filename_simulator, std::string filename_generator, std::string filename_instance , behavioural::custom::custom_information_t (*get_custom_information) (void)) { log_begin(Configuration,FUNCTION); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Simulator configuration //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _simulator = new Simulator (filename_simulator); //-------------------------------------------------- // Directory //-------------------------------------------------- directory_init (_simulator->getParam("directory_statistics"), _simulator->getParam("directory_vhdl" ), _simulator->getParam("directory_position" ), _simulator->getParam("directory_log" )); //-------------------------------------------------- // Debug & Log File //-------------------------------------------------- debug_init (fromString(_simulator->getParam("debug_level")), fromString (_simulator->getParam("debug_cycle_start")), fromString (_simulator->getParam("debug_cycle_stop")), fromString (_simulator->getParam("debug_idle_cycle")), fromString (_simulator->getParam("debug_idle_time"))); log_init(fromString (_simulator->getParam("debug_log_file_generate")), fromString (_simulator->getParam("simulation_file_with_date")), fromString (_simulator->getParam("simulation_file_with_pid")), MORPHEO_LOG); //-------------------------------------------------- // Usage //-------------------------------------------------- _usage = USE_NONE; if (fromString(_simulator->getParam("use_systemc"))) _usage = usage_set(_usage, USE_SYSTEMC); if (fromString(_simulator->getParam("use_vhdl"))) _usage = usage_set(_usage, USE_VHDL); if (fromString(_simulator->getParam("use_vhdl_testbench"))) _usage = usage_set(_usage, USE_VHDL_TESTBENCH); if (fromString(_simulator->getParam("use_vhdl_testbench_assert"))) _usage = usage_set(_usage, USE_VHDL_TESTBENCH_ASSERT); if (fromString(_simulator->getParam("use_position"))) _usage = usage_set(_usage, USE_POSITION); if (fromString(_simulator->getParam("use_statistics"))) _usage = usage_set(_usage, USE_STATISTICS); // if (fromString(_simulator->getParam("use_information"))) // _usage = usage_set(_usage, USE_INFORMATION); if (fromString(_simulator->getParam("use_header"))) _usage = usage_set(_usage, USE_HEADER); usage_environment (_usage); //-------------------------------------------------- // Header //-------------------------------------------------- if (usage_is_set(_usage,USE_HEADER)) std::cout << header(); #ifdef STATISTICS //-------------------------------------------------- // Parameters_Statistics //-------------------------------------------------- _param_statistics = new Parameters_Statistics (fromString(_simulator->getParam("statistics_cycle_start")), fromString(_simulator->getParam("statistics_period"))); #endif //-------------------------------------------------- // Simulation condition stop //-------------------------------------------------- simulation_init (fromString (_simulator->getParam("simulation_nb_cycle")), fromString (_simulator->getParam("debug_nb_cycle")), fromString (_simulator->getParam("simulation_nb_instruction")), fromString(_simulator->getParam("simulation_stop_type")), fromString (_simulator->getParam("simulation_file_with_date")), fromString (_simulator->getParam("simulation_file_with_pid")) ); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Generator configuration + Instance //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ _generator = new Generator (filename_generator); _instance = new Instance (filename_instance , _generator, get_custom_information); //-------------------------------------------------- // Name //-------------------------------------------------- _name = _instance->getName(); //-------------------------------------------------- // Parameters //-------------------------------------------------- _param = _instance->_param; log_end(Configuration,FUNCTION); }; #undef FUNCTION #define FUNCTION "Configuration::~Configuration" Configuration::~Configuration () { log_begin(Configuration,FUNCTION); delete _simulator; delete _generator; delete _instance; // simulation_destroy(); #ifdef STATISTICS delete _param_statistics; #endif log_end(Configuration,FUNCTION); }; }; // end namespace configuration }; // end namespace behavioural }; // end namespace morpheo