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

Last change on this file since 66 was 66, checked in by rosiere, 17 years ago
  • un pas de plus vers la compatibilite avec systemC
  • modification de l'interface de read_queue : context_id devient context_id, front_end_id et ooo_engine_id
File size: 2.8 KB
Line 
1/*
2 * $Id$
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#ifdef SYSTEMC
17  Victim_Pseudo_LRU::Victim_Pseudo_LRU (sc_module_name name,
18#else
19  Victim_Pseudo_LRU::Victim_Pseudo_LRU (string name,
20#endif
21#ifdef STATISTICS
22                          morpheo::behavioural::Parameters_Statistics             param_statistics,
23#endif
24                          morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters param ):
25                          _name   (name)
26                          ,_param (param)
27  {
28    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Begin");
29
30#ifdef SYSTEMC
31    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation");
32    allocation ();
33#endif
34
35#ifdef STATISTICS
36    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation of statistics");
37   
38    // Allocation of statistics
39    _stat = new Statistics (static_cast<string>(_name),
40                            param_statistics          ,
41                            param);
42#endif
43
44#ifdef VHDL
45    // generate the vhdl
46    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Generation of VHDL");
47    vhdl();
48#endif
49
50#ifdef SYSTEMC
51    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Definition of sc_method");
52    SC_METHOD (transition);
53    dont_initialize ();
54    sensitive << (*(in_CLOCK)).pos();
55
56    SC_METHOD (genMealy_access);
57    dont_initialize ();
58    sensitive << (*(in_CLOCK)).neg();
59    for (uint32_t i=0; i<_param._nb_access; i++)
60      {
61        sensitive << *(in_ACCESS_VAL     [i]);
62        if (_param._size_table>1)
63          sensitive << *(in_ACCESS_ADDRESS [i]);
64      }
65
66#ifdef SYSTEMCASS_SPECIFIC
67    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","List dependency information");
68    // List dependency information
69    for (uint32_t i=0; i<_param._nb_access; i++)
70      {
71        (*(out_ACCESS_ENTITY [i])) (*( in_ACCESS_VAL     [i]));
72        if (_param._size_table>1)
73          (*(out_ACCESS_ENTITY [i])) (*( in_ACCESS_ADDRESS [i]));
74      }
75#endif   
76
77    // Constant - ack is always at one
78    for (uint32_t i=0; i<_param._nb_access; i++)
79      PORT_WRITE (out_ACCESS_ACK [i], 1);
80    for (uint32_t i=0; i<_param._nb_update; i++)
81      PORT_WRITE (out_UPDATE_ACK [i], 1);
82
83#endif
84    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","End");
85  };
86 
87  Victim_Pseudo_LRU::~Victim_Pseudo_LRU (void)
88  {
89    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","Begin");
90#ifdef SYSTEMC
91    deallocation ();
92#endif
93
94#ifdef STATISTICS
95    _stat->generate_file(statistics(0));
96   
97    delete _stat;
98#endif
99    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","End");
100  };
101
102}; // end namespace victim_pseudo_lru
103}; // end namespace victim
104}; // end namespace generic
105}; // end namespace behavioural
106}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.