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

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

Interface normalisé
Début du banc de registres multi niveaux

File size: 3.2 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
30#ifdef STATISTICS
[15]31    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation of statistics");
[10]32   
33    // Allocation of statistics
34    _stat = new Statistics (static_cast<string>(_name),
35                            param_statistics          ,
36                            param);
37#endif
38
39#ifdef VHDL_TESTBENCH
40    // Creation of a testbench
41    //  -> port
42    //  -> clock's signals
[15]43    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Creation of Testbench");
[10]44    _vhdl_testbench = new Vhdl_Testbench (_name);
45    vhdl_testbench_port           (*_vhdl_testbench);
46    _vhdl_testbench->set_clock    ("in_CLOCK",true);
47#endif
48
49#ifdef VHDL
50    // generate the vhdl
[15]51    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Generation of VHDL");
[10]52    vhdl();
53#endif
54
55#ifdef SYSTEMC
[15]56    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Allocation");
[10]57    allocation ();
58
[15]59    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","Definition of sc_method");
[10]60    SC_METHOD (transition);
61    dont_initialize ();
62    sensitive_pos << *(in_CLOCK);
63
64    SC_METHOD (genMealy_access);
65    dont_initialize ();
66    sensitive_neg << *(in_CLOCK);
67    for (uint32_t i=0; i<_param._nb_access; i++)
68      {
69        sensitive << *(in_ACCESS_VAL     [i]);
70        if (_param._size_table>1)
71          sensitive << *(in_ACCESS_ADDRESS [i]);
72      }
73
74#ifdef SYSTEMCASS_SPECIFIC
[15]75    log_printf(TRACE,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","List dependency information");
[10]76    // List dependency information
77    for (uint32_t i=0; i<_param._nb_access; i++)
78      {
79        (*(out_ACCESS_ENTITY [i])) (*( in_ACCESS_VAL     [i]));
80        if (_param._size_table>1)
81          (*(out_ACCESS_ENTITY [i])) (*( in_ACCESS_ADDRESS [i]));
82      }
83#endif   
84
85    // Constant - ack is always at one
86    for (uint32_t i=0; i<_param._nb_access; i++)
87      PORT_WRITE (out_ACCESS_ACK [i], 1);
88    for (uint32_t i=0; i<_param._nb_update; i++)
89      PORT_WRITE (out_UPDATE_ACK [i], 1);
90
91#endif
[15]92    log_printf(FUNC,Victim_Pseudo_LRU,"Victim_Pseudo_LRU","End");
[10]93  };
94 
[15]95  Victim_Pseudo_LRU::~Victim_Pseudo_LRU (void)
[10]96  {
[15]97    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","Begin");
[10]98#ifdef SYSTEMC
99    deallocation ();
100#endif
101
102#ifdef VHDL_TESTBENCH
103    // generate the test bench
104    _vhdl_testbench->generate_file();
105    delete _vhdl_testbench;
106#endif
107
108#ifdef STATISTICS
109    _stat->generate_file(statistics(0));
110   
111    delete _stat;
112#endif
[15]113    log_printf(FUNC,Victim_Pseudo_LRU,"~Victim_Pseudo_LRU","End");
[10]114  };
115
[15]116}; // end namespace victim_pseudo_lru
[10]117}; // end namespace victim
118}; // end namespace generic
119}; // end namespace behavioural
120}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.