source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp @ 128

Last change on this file since 128 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: 2.8 KB
Line 
1/*
2 * $Id: Victim_Pseudo_LRU.cpp 123 2009-06-08 20:43:30Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
9
10namespace morpheo {
11namespace behavioural {
12namespace generic {
13namespace victim {
14namespace victim_pseudo_lru {
15
16  Victim_Pseudo_LRU::Victim_Pseudo_LRU
17  (
18#ifdef SYSTEMC
19   sc_module_name name,
20#else
21   std::string name,
22#endif
23#ifdef STATISTICS
24   morpheo::behavioural::Parameters_Statistics * param_statistics,
25#endif
26   morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters * param ,
27   morpheo::behavioural::Tusage_t usage):
28    _name   (name)
29    ,_param (param)
30    ,_usage (usage)
31  {
32    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Begin");
33
34// #if DEBUG_Victim_Pseudo_LRU == true
35//     log_printf(INFO,Victim_Pseudo_LRU,FUNCTION,_("<%s> Parameters"),_name.c_str());
36
37//     std::cout << *param << std::endl;
38// #endif   
39
40    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation");
41    allocation ();
42
43#ifdef STATISTICS
44    if (usage_is_set(_usage,USE_STATISTICS))
45      { 
46        log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation of statistics");
47       
48        // Allocation of statistics
49        statistics_declaration(param_statistics);
50      }
51#endif
52
53#ifdef VHDL
54    if (usage_is_set(_usage,USE_VHDL))
55      { 
56        // generate the vhdl
57        log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Generation of VHDL");
58        vhdl();
59      }
60#endif
61
62#ifdef SYSTEMC
63    if (usage_is_set(_usage,USE_SYSTEMC))
64      { 
65    // Constant - ack is always at one
66    for (uint32_t i=0; i<_param->_nb_access; i++)
67      {
68        internal_ACCESS_ACK [i] = 1;
69        PORT_WRITE (out_ACCESS_ACK [i], internal_ACCESS_ACK [i]);
70      }
71
72    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Definition of sc_method");
73    SC_METHOD (transition);
74    dont_initialize ();
75    sensitive << (*(in_CLOCK)).pos();
76
77    SC_METHOD (genMealy);
78    dont_initialize ();
79    sensitive << (*(in_CLOCK)).neg();
80    for (uint32_t i=0; i<_param->_nb_access; i++)
81      if (_param->_size_table>1)
82        sensitive << (*(in_ACCESS_ADDRESS[i]));
83
84#ifdef SYSTEMCASS_SPECIFIC
85    if (_param->_size_table>1)
86      for (uint32_t i=0; i<_param->_nb_access; i++)
87        (*(out_ACCESS_VICTIM[i])) (*(in_ACCESS_ADDRESS[i]));
88#endif   
89      }
90#endif
91    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","End");
92  };
93 
94  Victim_Pseudo_LRU::~Victim_Pseudo_LRU (void)
95  {
96    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","Begin");
97
98    deallocation ();
99
100
101#ifdef STATISTICS
102    if (usage_is_set(_usage,USE_STATISTICS))
103      delete _stat;
104#endif
105    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","End");
106  };
107
108}; // end namespace victim_pseudo_lru
109}; // end namespace victim
110}; // end namespace generic
111}; // end namespace behavioural
112}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.