Ignore:
Timestamp:
Apr 14, 2009, 8:39:12 PM (15 years ago)
Author:
rosiere
Message:

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

File:
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/top_test.cpp

    r112 r113  
    77 */
    88
    9 #define NB_ITERATION 1024
    10 #define CYCLE_MAX    1024*NB_ITERATION
     9#include "Behavioural/Generic/Counter/SelfTest/include/top.h"
    1110
    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)
     11void top::test (void)
    1712{
    18   cout << "<" << name << "> : Simulation SystemC" << endl;
    19 
    20   try
    21     {
    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 STATISTICS
    36   morpheo::behavioural::Parameters_Statistics * param_stat = new morpheo::behavioural::Parameters_Statistics (5,50);
    37 #endif
    38 
    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 STATISTICS
    51                                     param_stat,
    52 #endif
    53                                     param,
    54                                     _usage);
    55  
    5613#ifdef SYSTEMC
    57   /*********************************************************************
    58    * Déclarations des signaux
    59    *********************************************************************/
    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    * Instanciation
    68    ********************************************************/
    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 
    8214  Time * _time = new Time();
    8315
     
    9224  //srand(TIME(NULL));
    9325
    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];
    9729
    98   sc_start(0);
     30  SC_CYCLE(0);
    9931
    100   RESET.write(1);
     32  in_NRESET->write(1);
    10133
    102   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
     34  LABEL("Initialisation");
    10335
    104   cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
     36  LABEL("Loop of Test");
    10537
    10638  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
    10739    {
    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++)
    11043        {
    111           Tdata_t data = rand()%param._data_max;
     44          Tdata_t data = rand()%param->_data_max;
    11245          data_in  [i] = data;
    11346          addsub   [i] = (rand()%2)==1;
    11447         
    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]);
    11750
    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);
    11955        }
    12056
    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++)
    12460        {
    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());
    12863
    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]);
    14065        }
    14166     
    142       sc_start(1);
     67      SC_CYCLE(1);
    14368    }
    14469
    145   sc_start(1);
     70  SC_CYCLE(1);
    14671
    14772  /********************************************************
     
    14974   ********************************************************/
    15075
     76  sc_stop();
     77
    15178  delete _time;
    15279
    15380  cout << "<" << name << "> ............ Stop Simulation" << endl;
    154 
    15581#endif
    156 
    157   delete _Counter;
    158 #ifdef STATISTICS
    159   delete param_stat;
    160 #endif
    161 
    16282}
Note: See TracChangeset for help on using the changeset viewer.