source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/top_allocation.cpp @ 113

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

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

  • Property svn:keywords set to Id
File size: 7.1 KB
Line 
1/*
2 * $Id: top_allocation.cpp 113 2009-04-14 18:39:12Z rosiere $
3 *
4 * [ Description ]
5 *
6 * Test
7 */
8
9#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/include/top.h"
10#include "Behavioural/include/Allocation.h"
11
12void top::allocation (void)
13{
14  if (setlocale (LC_ALL, "") == NULL)
15    msgWarning(_("setlocale ko.\n"));
16
17  try 
18    {
19      _param->test();
20    }
21  catch (morpheo::ErrorMorpheo & error)
22    {
23      msgError(_("<%s> : %s"),name.c_str(),error.what());
24      return;
25    }
26  catch (...)
27    {
28      msgError(_("<%s> : This test must generate a error"),name.c_str());
29      exit (EXIT_FAILURE);
30    }
31
32  _usage = USE_ALL;
33//   _usage = usage_unset(_usage,USE_SYSTEMC              );
34//   _usage = usage_unset(_usage,USE_VHDL                 );
35//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
36//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
37//   _usage = usage_unset(_usage,USE_POSITION             );
38//   _usage = usage_unset(_usage,USE_STATISTICS           );
39//   _usage = usage_unset(_usage,USE_INFORMATION          );
40
41#ifdef STATISTICS
42  if (usage_is_set(_usage,USE_STATISTICS))
43  _param_stat = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
44#endif
45
46  component = new Execute_queue
47    (name.c_str(),
48#ifdef STATISTICS
49     _param_stat,
50#endif
51     _param,
52     _usage
53     );
54 
55#ifdef SYSTEMC
56  if (usage_is_set(_usage,USE_SYSTEMC))
57    {
58  /*********************************************************************
59   * Déclarations des signaux
60   *********************************************************************/
61  msgInformation(_("<%s> : Create signal.\n"),name.c_str());
62
63  in_CLOCK  = new sc_clock ("clock", TIME_PERIOD, TIME_UNIT, 0.5); //name,period,time_unit,duty_cycle
64
65  ALLOC0_SC_SIGNAL( in_NRESET        ," in_NRESET        ",Tcontrol_t);
66
67  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_VAL           ," in_EXECUTE_QUEUE_IN_VAL"           , Tcontrol_t        );
68  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_IN_ACK           ,"out_EXECUTE_QUEUE_IN_ACK"           , Tcontrol_t        );
69  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID    ," in_EXECUTE_QUEUE_IN_CONTEXT_ID"    , Tcontext_t        );
70  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID  ," in_EXECUTE_QUEUE_IN_FRONT_END_ID"  , Tcontext_t        );
71  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t        );
72  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID     ," in_EXECUTE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
73//ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION     ," in_EXECUTE_QUEUE_IN_OPERATION"     , Toperation_t      );
74//ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE          ," in_EXECUTE_QUEUE_IN_TYPE"          , Ttype_t           );
75  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS         ," in_EXECUTE_QUEUE_IN_FLAGS"         , Tspecial_data_t   );
76  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION     ," in_EXECUTE_QUEUE_IN_EXCEPTION"     , Texception_t      );
77  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
78  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS       ," in_EXECUTE_QUEUE_IN_ADDRESS"       , Taddress_t        );
79  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_DATA          ," in_EXECUTE_QUEUE_IN_DATA"          , Tgeneral_data_t   );
80  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL          ,"out_EXECUTE_QUEUE_OUT_VAL"          , Tcontrol_t        );
81  ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK          ," in_EXECUTE_QUEUE_OUT_ACK"          , Tcontrol_t        );
82  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID   ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID"   , Tcontext_t        );
83  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t        );
84  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t        );
85  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID    ,"out_EXECUTE_QUEUE_OUT_PACKET_ID"    , Tpacket_t         );
86//ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION    ,"out_EXECUTE_QUEUE_OUT_OPERATION"    , Toperation_t      );
87//ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE         ,"out_EXECUTE_QUEUE_OUT_TYPE"         , Ttype_t           );
88  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS        ,"out_EXECUTE_QUEUE_OUT_FLAGS"        , Tspecial_data_t   );
89  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"out_EXECUTE_QUEUE_OUT_EXCEPTION"    , Texception_t      );
90  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
91  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS      ,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , Taddress_t        );
92  ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA         ,"out_EXECUTE_QUEUE_OUT_DATA"         , Tgeneral_data_t   );
93 
94  /********************************************************
95   * Instanciation
96   ********************************************************/
97 
98  msgInformation(_("<%s> : Instanciation of _Execute_queue.\n"),name.c_str());
99
100  INSTANCE0_SC_SIGNAL(component, in_CLOCK         );
101  INSTANCE0_SC_SIGNAL(component, in_NRESET        );
102
103  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_VAL           );
104  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_IN_ACK           );
105  if (_param->_have_port_context_id)
106  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_CONTEXT_ID    );
107  if (_param->_have_port_front_end_id)
108  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_FRONT_END_ID  );
109  if (_param->_have_port_ooo_engine_id)
110  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID );
111  if (_param->_have_port_rob_ptr)
112  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_PACKET_ID     );
113//INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_OPERATION     );
114//INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_TYPE          );
115  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_FLAGS         );
116  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_EXCEPTION     );
117  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_NO_SEQUENCE   );
118  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_ADDRESS       );
119  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_IN_DATA          );
120
121  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_VAL          );
122  INSTANCE0_SC_SIGNAL(component,  in_EXECUTE_QUEUE_OUT_ACK          );
123  if (_param->_have_port_context_id)
124  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_CONTEXT_ID   );
125  if (_param->_have_port_front_end_id)
126  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_FRONT_END_ID );
127  if (_param->_have_port_ooo_engine_id)
128  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID);
129  if (_param->_have_port_rob_ptr)
130  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_PACKET_ID    );
131//INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_OPERATION    );
132//INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_TYPE         );
133  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_FLAGS        );
134  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_EXCEPTION    );
135  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  );
136  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_ADDRESS      );
137  INSTANCE0_SC_SIGNAL(component, out_EXECUTE_QUEUE_OUT_DATA         );
138    }
139#endif
140}
Note: See TracBrowser for help on using the repository browser.