source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit.cpp @ 123

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 3.3 KB
Line 
1/*
2 * $Id: Functionnal_unit.cpp 123 2009-06-08 20:43:30Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h"
9
10namespace morpheo                    {
11namespace behavioural {
12namespace core {
13namespace multi_execute_loop {
14namespace execute_loop {
15namespace multi_execute_unit {
16namespace execute_unit {
17namespace functionnal_unit {
18
19
20#undef  FUNCTION
21#define FUNCTION "Functionnal_unit::Functionnal_unit"
22  Functionnal_unit::Functionnal_unit
23  (
24#ifdef SYSTEMC
25   sc_module_name name,
26#else
27   string name,
28#endif
29#ifdef STATISTICS
30   morpheo::behavioural::Parameters_Statistics * param_statistics,
31#endif
32   morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::functionnal_unit::Parameters * param,
33   morpheo::behavioural::Tusage_t usage
34   ):
35    _name              (name)
36    ,_param            (param)
37    ,_usage            (usage)
38  {
39    log_printf(FUNC,Functionnal_unit,FUNCTION,"Begin");
40
41    log_printf(INFO,Functionnal_unit,FUNCTION,"Allocation");
42    allocation ();
43
44// #if DEBUG_Functionnal_unit == true
45//     log_printf(INFO,Functionnal_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
46
47//     std::cout << *param << std::endl;
48// #endif   
49
50#ifdef STATISTICS
51    if (usage_is_set(_usage,USE_STATISTICS))
52      { 
53        log_printf(INFO,Functionnal_unit,FUNCTION,"Allocation of statistics");
54
55        statistics_declaration(param_statistics);
56      }
57#endif
58
59#ifdef VHDL
60    if (usage_is_set(_usage,USE_VHDL))
61      {
62        // generate the vhdl
63        log_printf(INFO,Functionnal_unit,FUNCTION,"Generate the vhdl");
64       
65        vhdl();
66      }
67#endif
68
69#ifdef SYSTEMC
70    if (usage_is_set(_usage,USE_SYSTEMC))
71      {
72        log_printf(INFO,Functionnal_unit,FUNCTION,"Method - transition");
73
74        SC_METHOD (transition);
75        dont_initialize ();
76        sensitive << (*(in_CLOCK)).pos();
77       
78# ifdef SYSTEMCASS_SPECIFIC
79        // List dependency information
80# endif   
81
82        log_printf(INFO,Functionnal_unit,FUNCTION,"Method - genMoore");
83
84        SC_METHOD (genMoore);
85        dont_initialize ();
86        sensitive << (*(in_CLOCK)).neg(); // use internal register
87       
88# ifdef SYSTEMCASS_SPECIFIC
89        // List dependency information
90# endif   
91
92        log_printf(INFO,Functionnal_unit,FUNCTION,"Method - genMealy");
93
94        SC_METHOD (genMealy);
95        dont_initialize ();
96        sensitive << (*(in_CLOCK)).neg()  // use internal register
97//                << (*(in_EXECUTE_IN_VAL ))
98                  << (*(in_EXECUTE_OUT_ACK));
99
100       
101# ifdef SYSTEMCASS_SPECIFIC
102        // List dependency information
103# endif   
104
105#endif
106      }
107    log_printf(FUNC,Functionnal_unit,FUNCTION,"End");
108  };
109   
110#undef  FUNCTION
111#define FUNCTION "Functionnal_unit::~Functionnal_unit"
112  Functionnal_unit::~Functionnal_unit (void)
113  {
114    log_printf(FUNC,Functionnal_unit,FUNCTION,"Begin");
115
116#ifdef STATISTICS
117    if (usage_is_set(_usage,USE_STATISTICS))
118      {
119        log_printf(INFO,Functionnal_unit,FUNCTION,"Generate Statistics file");
120       
121        delete _stat;
122      }
123#endif
124
125    log_printf(INFO,Functionnal_unit,FUNCTION,"Deallocation");
126    deallocation ();
127
128    log_printf(FUNC,Functionnal_unit,FUNCTION,"End");
129  };
130
131}; // end namespace functionnal_unit
132}; // end namespace execute_unit
133}; // end namespace multi_execute_unit
134}; // end namespace execute_loop
135}; // end namespace multi_execute_loop
136}; // end namespace core
137
138}; // end namespace behavioural
139}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.