/* * $Id$ * * [ Description ] * */ #include "Behavioural/Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/include/test.h" #define NB_PARAMS 10 void usage (string exec) { cerr << " " << exec << " name_instance list_params" << endl << "list_params is :" << endl << " - have_bht (boolean )" << endl << " - bht_size_shifter (unsigned int)" << endl << " - bht_nb_shifter (unsigned int)" << endl << " - have_pht (boolean )" << endl << " - pht_size_counter (unsigned int)" << endl << " - pht_nb_counter (unsigned int)" << endl << " - pht_size_address_share (unsigned int)" << endl << " - size_address (unsigned int)" << endl << " - nb_prediction (unsigned int)" << endl << " - nb_branch_complete (unsigned int)" << endl; exit (1); } #ifndef SYSTEMC int main (int argc, char * argv[]) #else int sc_main (int argc, char * argv[]) #endif { cout << " : Classic usage" << endl; if (argc != 2+NB_PARAMS) usage (argv[0]); const string name = argv[1]; const bool have_bht = atoi(argv[ 2]); const uint32_t bht_size_shifter = atoi(argv[ 3]); const uint32_t bht_nb_shifter = atoi(argv[ 4]); const bool have_pht = atoi(argv[ 5]); const uint32_t pht_size_counter = atoi(argv[ 6]); const uint32_t pht_nb_counter = atoi(argv[ 7]); const uint32_t pht_size_address_share = atoi(argv[ 8]); const uint32_t size_address = atoi(argv[ 9]); const uint32_t nb_prediction = atoi(argv[10]); const uint32_t nb_branch_complete = atoi(argv[11]); try { morpheo::behavioural::stage_1_ifetch::predictor::meta_predictor::two_level_branch_predictor::Parameters param (have_bht , bht_size_shifter , bht_nb_shifter , have_pht , pht_size_counter , pht_nb_counter , pht_size_address_share , size_address , nb_prediction , nb_branch_complete ); cout << param.print(1); test (name,param); } catch (morpheo::ErrorMorpheo & error) { cout << "<" << name << "> : " << error.what (); exit (EXIT_FAILURE); } catch (...) { cerr << "<" << name << "> : This test must generate a error" << endl; exit (EXIT_FAILURE); } return (EXIT_SUCCESS); }