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

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

Modification des classes d'encapsulation des interfaces :

  • gère les signaux à écrire dans le vhdl
  • les traces pour le testbench
  • la génération des vhdl structurelles

-> test sur la Pattern History Table

File size: 2.8 KB
RevLine 
[10]1/*
2 * $Id$
3 *
4 * [ Description ]
5 *
6 */
7
[15]8#include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h"
[10]9
10namespace morpheo {
11namespace behavioural {
12namespace generic {
13namespace victim {
[15]14namespace victim_pseudo_lru {
[10]15
16#ifdef SYSTEMC
[15]17  Victim_Pseudo_LRU::Victim_Pseudo_LRU (sc_module_name name,
[10]18#else
[15]19  Victim_Pseudo_LRU::Victim_Pseudo_LRU (string name,
[10]20#endif
21#ifdef STATISTICS
22                          morpheo::behavioural::Parameters_Statistics             param_statistics,
23#endif
[15]24                          morpheo::behavioural::generic::victim::victim_pseudo_lru::Parameters param ):
[10]25                          _name   (name)
26                          ,_param (param)
27  {
[15]28    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Begin");
[10]29
[42]30#ifdef SYSTEMC
31    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation");
32    allocation ();
33#endif
34
[10]35#ifdef STATISTICS
[15]36    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation of statistics");
[10]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
[15]46    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Generation of VHDL");
[10]47    vhdl();
48#endif
49
50#ifdef SYSTEMC
[15]51    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Definition of sc_method");
[10]52    SC_METHOD (transition);
53    dont_initialize ();
54    sensitive_pos << *(in_CLOCK);
55
56    SC_METHOD (genMealy_access);
57    dont_initialize ();
58    sensitive_neg << *(in_CLOCK);
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
[15]67    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","List dependency information");
[10]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
[15]84    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","End");
[10]85  };
86 
[15]87  Victim_Pseudo_LRU::~Victim_Pseudo_LRU (void)
[10]88  {
[15]89    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","Begin");
[10]90#ifdef SYSTEMC
91    deallocation ();
92#endif
93
94#ifdef STATISTICS
95    _stat->generate_file(statistics(0));
96   
97    delete _stat;
98#endif
[15]99    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","End");
[10]100  };
101
[15]102}; // end namespace victim_pseudo_lru
[10]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.