source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/src/test.cpp @ 15

Last change on this file since 15 was 15, checked in by rosiere, 17 years ago

Interface normalisé
Début du banc de registres multi niveaux

File size: 6.0 KB
Line 
1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 * Test
7 */
8
9#define NB_ITERATION 1
10
11#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h"
12#include "Include/Test.h"
13
14void test (string name,
15           morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters _param)
16{
17  cout << "<" << name << "> : Simulation SystemC" << endl;
18
19  RegisterFile_Multi_Banked * _RegisterFile_Multi_Banked = new RegisterFile_Multi_Banked (name.c_str(),
20#ifdef STATISTICS
21                                             morpheo::behavioural::Parameters_Statistics(5,50),
22#endif
23                                             _param);
24 
25#ifdef SYSTEMC
26  /*********************************************************************
27   * Déclarations des signaux
28   *********************************************************************/
29  sc_clock                               * CLOCK;
30  sc_signal<Tcontrol_t>                  * NRESET       ;
31                                           
32    // ----- Interface Read               
33  sc_signal<Tcontrol_t>                 ** READ_VAL     ;
34  sc_signal<Tcontrol_t>                 ** READ_ACK     ;
35  sc_signal<Taddress_t>                 ** READ_ADDRESS ;
36  sc_signal<Tdata_t>                    ** READ_DATA    ;
37                                           
38    // ----- Interface Write               
39  sc_signal<Tcontrol_t>                 ** WRITE_VAL    ;
40  sc_signal<Tcontrol_t>                 ** WRITE_ACK    ;
41  sc_signal<Taddress_t>                 ** WRITE_ADDRESS;
42  sc_signal<Tdata_t>                    ** WRITE_DATA   ;
43
44  string rename;
45
46  CLOCK  = new sc_clock ("clock", 1.0, 0.5);
47
48  NRESET = new sc_signal<Tcontrol_t> ("in_NRESET");
49
50  // ----- Interface Read
51  READ_VAL     = new sc_signal<Tcontrol_t>     * [_param._nb_port_read];
52  READ_ACK     = new sc_signal<Tcontrol_t>     * [_param._nb_port_read];
53  READ_ADDRESS = new sc_signal<Taddress_t>     * [_param._nb_port_read];
54  READ_DATA    = new sc_signal<Tdata_t>        * [_param._nb_port_read];
55 
56  for (uint32_t i=0; i<_param._nb_port_read; i++)
57    {
58        rename = "READ_VAL_"    +toString(i);
59        READ_VAL     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
60        rename = "READ_ACK_"    +toString(i);
61        READ_ACK     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
62        rename = "READ_ADDRESS_"+toString(i);
63        READ_ADDRESS [i] = new sc_signal<Taddress_t> (rename.c_str());
64        rename = "READ_DATA_"   +toString(i);
65        READ_DATA    [i] = new sc_signal<Tdata_t>    (rename.c_str());
66      }
67
68    // ----- Interface Write
69  WRITE_VAL     = new sc_signal<Tcontrol_t>     * [_param._nb_port_write];
70  WRITE_ACK     = new sc_signal<Tcontrol_t>     * [_param._nb_port_write];
71  WRITE_ADDRESS = new sc_signal<Taddress_t>     * [_param._nb_port_write];
72  WRITE_DATA    = new sc_signal<Tdata_t>        * [_param._nb_port_write];
73 
74  for (uint32_t i=0; i<_param._nb_port_write; i++)
75    {
76        rename = "WRITE_VAL_"    +toString(i);
77        WRITE_VAL     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
78        rename = "WRITE_ACK_"    +toString(i);
79        WRITE_ACK     [i] = new sc_signal<Tcontrol_t> (rename.c_str());
80        rename = "WRITE_ADDRESS_"+toString(i);
81        WRITE_ADDRESS [i] = new sc_signal<Taddress_t> (rename.c_str());
82        rename = "WRITE_DATA_"   +toString(i);
83        WRITE_DATA    [i] = new sc_signal<Tdata_t>    (rename.c_str());
84      }
85 
86  /********************************************************
87   * Instanciation
88   ********************************************************/
89 
90  cout << "<" << name << "> Instanciation of _RegisterFile_Multi_Banked" << endl;
91 
92  (*(_RegisterFile_Multi_Banked->in_CLOCK ))        (*(CLOCK ));
93  (*(_RegisterFile_Multi_Banked->in_NRESET))        (*(NRESET));
94 
95  for (uint32_t i=0; i<_param._nb_port_read; i++)
96    {
97      (*(_RegisterFile_Multi_Banked-> in_READ_VAL      [i])) (*(READ_VAL      [i]));
98      (*(_RegisterFile_Multi_Banked->out_READ_ACK      [i])) (*(READ_ACK      [i]));
99      (*(_RegisterFile_Multi_Banked-> in_READ_ADDRESS  [i])) (*(READ_ADDRESS  [i]));
100      (*(_RegisterFile_Multi_Banked->out_READ_DATA     [i])) (*(READ_DATA     [i]));
101    }
102  for (uint32_t i=0; i<_param._nb_port_write; i++)
103    {
104      (*(_RegisterFile_Multi_Banked-> in_WRITE_VAL     [i])) (*(WRITE_VAL     [i]));
105      (*(_RegisterFile_Multi_Banked->out_WRITE_ACK     [i])) (*(WRITE_ACK     [i]));
106      (*(_RegisterFile_Multi_Banked-> in_WRITE_ADDRESS [i])) (*(WRITE_ADDRESS [i]));
107      (*(_RegisterFile_Multi_Banked-> in_WRITE_DATA    [i])) (*(WRITE_DATA    [i]));
108    }
109
110  /********************************************************
111   * Simulation - Begin
112   ********************************************************/
113
114  cout << "<" << name << "> Start Simulation ............" << endl;
115  // Initialisation
116
117  const uint32_t seed = 0;
118//const uint32_t seed = static_cast<uint32_t>(time(NULL));
119
120  srand(seed);
121
122  sc_start(0);
123  _RegisterFile_Multi_Banked->vhdl_testbench_label("Initialisation");
124  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Initialisation" << endl;
125
126
127  _RegisterFile_Multi_Banked->vhdl_testbench_label("Loop of Test");
128  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} Loop of Test" << endl;
129
130  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
131    {
132      _RegisterFile_Multi_Banked->vhdl_testbench_label("Iteration "+toString(iteration));
133
134      sc_start(1);
135    }
136
137  /********************************************************
138   * Simulation - End
139   ********************************************************/
140
141  cout << "<" << name << "> ............ Stop Simulation" << endl;
142
143  delete CLOCK;
144  delete NRESET;
145
146    // ----- Interface Read
147    for (uint32_t i=0; i<_param._nb_port_read; i++)
148      {
149        delete READ_VAL     [i];
150        delete READ_ACK     [i];
151        delete READ_ADDRESS [i];
152        delete READ_DATA    [i];
153      }
154
155    delete READ_VAL    ;
156    delete READ_ACK    ;
157    delete READ_ADDRESS;
158    delete READ_DATA   ;
159
160    // ----- Interface Write
161    for (uint32_t i=0; i<_param._nb_port_write; i++)
162      {
163        delete WRITE_VAL     [i];
164        delete WRITE_ACK     [i];
165        delete WRITE_ADDRESS [i];
166        delete WRITE_DATA    [i];
167      }
168
169    delete WRITE_VAL    ;
170    delete WRITE_ACK    ;
171    delete WRITE_ADDRESS;
172    delete WRITE_DATA   ;
173
174#endif
175
176  delete _RegisterFile_Multi_Banked;
177}
Note: See TracBrowser for help on using the repository browser.