- Timestamp:
- Apr 14, 2009, 8:39:12 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest
- Files:
-
- 4 added
- 1 edited
- 2 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/include/top.h
r112 r113 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 * Test " RegisterFile"6 * Test "Counter" 7 7 */ 8 8 … … 11 11 #endif 12 12 13 # include <string>14 # include <iostream>13 #define NB_ITERATION 1024 14 #define CYCLE_MAX (1024*NB_ITERATION) 15 15 16 #include "Common/include/Test.h" 16 17 #include "Common/include/Time.h" 17 18 #include "Behavioural/Generic/Counter/include/Counter.h" … … 21 22 using namespace morpheo::behavioural; 22 23 using namespace morpheo::behavioural::generic; 23 24 24 using namespace morpheo::behavioural::generic::counter; 25 25 26 void test (string name, 27 morpheo::behavioural::generic::counter::Parameters param); 26 SC_MODULE(top) 27 { 28 #ifdef SYSTEMC 29 private: sc_clock * in_CLOCK ; 30 private: sc_signal<Tcontrol_t> * in_NRESET; 31 private: sc_signal<Tdata_t> ** in_COUNTER_DATA ;// [param->_nb_port] 32 private: sc_signal<Tcontrol_t> ** in_COUNTER_ADDSUB;// [param->_nb_port] 33 private: sc_signal<Tdata_t> ** out_COUNTER_DATA ;// [param->_nb_port] 34 #endif 35 36 private: std::string name ; 37 private: morpheo::behavioural::generic::counter::Parameters * param; 38 #ifdef STATISTICS 39 private: morpheo::behavioural::Parameters_Statistics * param_stat; 40 #endif 41 private: Counter * component; 42 43 private: void usage (string exec); 44 private: void allocation (void); 45 private: void deallocation (void); 46 public : void test (void); 47 48 #ifdef MTI_SYSTEMC 49 SC_CTOR(top::top); 50 #else 51 public : top (sc_module_name module_name,int argc, char * argv[]); 52 #endif 53 public : ~top(void); 54 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/main.cpp
r81 r113 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 6 */ 7 7 8 #include "Behavioural/Generic/Counter/SelfTest/include/t est.h"8 #include "Behavioural/Generic/Counter/SelfTest/include/top.h" 9 9 10 #define NB_PARAMS 2 10 #ifndef MTI_SYSTEMC 11 # ifndef SYSTEMC 12 int main (int argc, char * argv[]) 13 # else 14 int sc_main (int argc, char * argv[]) 15 # endif 16 { 17 int _return = EXIT_SUCCESS; 11 18 12 void usage (string exec) 13 { 14 cerr << "<Usage> " << exec << " name_instance list_params" << endl 15 << "list_params is :" << endl 16 << " - size_data (unsigned int)" << endl 17 << " - nb_port (unsigned int)" << endl; 19 try 20 { 21 top * my_top = new top ("my_top",argc,argv); 18 22 19 exit (1); 23 my_top->test(); 24 25 delete my_top; 26 } 27 catch (morpheo::ErrorMorpheo & error) 28 { 29 msg (_("%s\n"),error.what ()); 30 _return = EXIT_FAILURE; 31 } 32 33 try 34 { 35 if (_return == EXIT_SUCCESS) 36 TEST_OK("Counter : no error"); 37 else 38 TEST_KO("Counter : a lot of error"); 39 } 40 catch (morpheo::ErrorMorpheo & error) 41 { 42 // msg (_("<%s> :\n%s"),name.c_str(), error.what ()); 43 _return = EXIT_FAILURE; 44 } 45 46 return _return; 20 47 } 21 22 #ifndef SYSTEMC23 int main (int argc, char * argv[])24 #else25 int sc_main (int argc, char * argv[])26 48 #endif 27 {28 if (argc != 2+NB_PARAMS)29 usage (argv[0]);30 31 cout << "<test0> : Classic usage" << endl;32 cout << "<test0> : Typical parameters" << endl;33 const string name = argv[1];34 const uint32_t size_data = atoi(argv[2]);35 const uint32_t nb_port = atoi(argv[3]);36 37 morpheo::behavioural::generic::counter::Parameters param (size_data,38 nb_port );39 40 test (name,param);41 42 return (EXIT_SUCCESS);43 }44 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/top_test.cpp
r112 r113 7 7 */ 8 8 9 #define NB_ITERATION 1024 10 #define CYCLE_MAX 1024*NB_ITERATION 9 #include "Behavioural/Generic/Counter/SelfTest/include/top.h" 11 10 12 #include "Behavioural/Generic/Counter/SelfTest/include/test.h" 13 #include "Common/include/Test.h" 14 15 void test (string name, 16 morpheo::behavioural::generic::counter::Parameters param) 11 void top::test (void) 17 12 { 18 cout << "<" << name << "> : Simulation SystemC" << endl;19 20 try21 {22 cout << param.print(1);23 param.test();24 }25 catch (morpheo::ErrorMorpheo & error)26 {27 cout << "<" << name << "> : " << error.what ();28 return;29 }30 catch (...)31 {32 cerr << "<" << name << "> : This test must generate a error" << endl;33 exit (EXIT_FAILURE);34 }35 #ifdef STATISTICS36 morpheo::behavioural::Parameters_Statistics * param_stat = new morpheo::behavioural::Parameters_Statistics (5,50);37 #endif38 39 Tusage_t _usage = USE_ALL;40 41 // _usage = usage_unset(_usage,USE_SYSTEMC );42 // _usage = usage_unset(_usage,USE_VHDL );43 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH );44 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);45 // _usage = usage_unset(_usage,USE_POSITION );46 // _usage = usage_unset(_usage,USE_STATISTICS );47 // _usage = usage_unset(_usage,USE_INFORMATION );48 49 Counter * _Counter = new Counter (name.c_str(),50 #ifdef STATISTICS51 param_stat,52 #endif53 param,54 _usage);55 56 13 #ifdef SYSTEMC 57 /*********************************************************************58 * Déclarations des signaux59 *********************************************************************/60 sc_clock CLOCK ("clock", 1.0, 0.5);61 sc_signal<Tcontrol_t> RESET;62 sc_signal<Tdata_t> DATA_IN [param._nb_port];63 sc_signal<Tcontrol_t> ADDSUB [param._nb_port];64 sc_signal<Tdata_t> DATA_OUT [param._nb_port];65 66 /********************************************************67 * Instanciation68 ********************************************************/69 70 cout << "<" << name << "> Instanciation of _Counter" << endl;71 72 (*(_Counter->in_CLOCK)) (CLOCK);73 (*(_Counter->in_NRESET)) (RESET);74 75 for (uint32_t i=0; i<param._nb_port; i++)76 {77 (*(_Counter-> in_COUNTER_DATA [i])) (DATA_IN [i]);78 (*(_Counter-> in_COUNTER_ADDSUB[i])) (ADDSUB [i]);79 (*(_Counter->out_COUNTER_DATA [i])) (DATA_OUT [i]);80 }81 82 14 Time * _time = new Time(); 83 15 … … 92 24 //srand(TIME(NULL)); 93 25 94 Tdata_t data_in [param ._nb_port];95 Tdata_t data_out [param ._nb_port];96 Tcontrol_t addsub [param ._nb_port];26 Tdata_t data_in [param->_nb_port]; 27 Tdata_t data_out [param->_nb_port]; 28 Tcontrol_t addsub [param->_nb_port]; 97 29 98 sc_start(0);30 SC_CYCLE(0); 99 31 100 RESET.write(1);32 in_NRESET->write(1); 101 33 102 cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;34 LABEL("Initialisation"); 103 35 104 cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;36 LABEL("Loop of Test"); 105 37 106 38 for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++) 107 39 { 108 cout << "{" << static_cast<uint32_t>(sc_simulation_time()) << "} Itération " << iteration << endl; 109 for (uint32_t i=0; i<param._nb_port; i++) 40 LABEL("Iteration %d",iteration); 41 42 for (uint32_t i=0; i<param->_nb_port; i++) 110 43 { 111 Tdata_t data = rand()%param ._data_max;44 Tdata_t data = rand()%param->_data_max; 112 45 data_in [i] = data; 113 46 addsub [i] = (rand()%2)==1; 114 47 115 DATA_IN [i].write(data );116 ADDSUB [i].write(addsub [i]);48 LABEL("in_COUNTER_DATA [%d] = %d",i,data ); 49 LABEL("in_COUNTER_ADDSUB [%d] = %d" ,i,addsub [i]); 117 50 118 data_out [i] = (addsub[i]==1)?((data<param._data_max)?data+1:data):((data>0)?data-1:data); 51 in_COUNTER_DATA [i]->write(data ); 52 in_COUNTER_ADDSUB [i]->write(addsub [i]); 53 54 data_out [i] = (addsub[i]==1)?((data<param->_data_max)?data+1:data):((data>0)?data-1:data); 119 55 } 120 56 121 sc_start(0);122 123 for (uint32_t i=0; i<param ._nb_port; i++)57 SC_CYCLE(0); 58 59 for (uint32_t i=0; i<param->_nb_port; i++) 124 60 { 125 cout << hex 126 << " [" << i << "] " 127 << data_in [i]; 61 string op = (addsub[i] == 1)?"++":"--"; 62 LABEL("0x%d %s = 0x%d",i,op.c_str(),out_COUNTER_DATA [i]->read()); 128 63 129 if (addsub[i] == 1) 130 cout << " ++"; 131 else 132 cout << " --"; 133 134 cout << " = " 135 << DATA_OUT [i].read(); 136 137 TEST(Tdata_t,DATA_OUT [i].read(),data_out [i]); 138 139 cout << std::dec << endl; 64 TEST(Tdata_t,out_COUNTER_DATA [i]->read(),data_out [i]); 140 65 } 141 66 142 sc_start(1);67 SC_CYCLE(1); 143 68 } 144 69 145 sc_start(1);70 SC_CYCLE(1); 146 71 147 72 /******************************************************** … … 149 74 ********************************************************/ 150 75 76 sc_stop(); 77 151 78 delete _time; 152 79 153 80 cout << "<" << name << "> ............ Stop Simulation" << endl; 154 155 81 #endif 156 157 delete _Counter;158 #ifdef STATISTICS159 delete param_stat;160 #endif161 162 82 }
Note: See TracChangeset
for help on using the changeset viewer.