Changeset 113 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/top_test.cpp
- Timestamp:
- Apr 14, 2009, 8:39:12 PM (15 years ago)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
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.