source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_declaration.cpp @ 58

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

Vhdl : RegisterFile_Multi_Banked - "full crossbar"
Correction d'un bug pour le "partial crossbar"

File size: 3.0 KB
Line 
1#ifdef VHDL
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace generic {
14namespace registerfile {
15namespace registerfile_multi_banked {
16
17
18  void RegisterFile_Multi_Banked::vhdl_declaration (Vhdl * & vhdl)
19  {
20    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_declaration","Begin");
21
22    for (uint32_t i=0; i<_param->_nb_bank; i++)
23      {
24        for (uint32_t j=0; j<_param->_nb_port_read; j ++)
25          {
26            if (_param->_crossbar == FULL_CROSSBAR)
27              {
28                for (uint32_t k=0; k<_param->_nb_port_read_by_bank; k++)
29                  {
30                    vhdl->set_signal ("internal_READ_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL" ,1);
31                    vhdl->set_signal ("internal_SELECT_READ_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL" ,1);
32                  }
33              }
34            else
35              vhdl->set_signal ("internal_SELECT_READ_"+toString(i)+"_"+toString(j)+"_VAL" ,1);
36            vhdl->set_signal ("internal_READ_"+toString(i)+"_"+toString(j)+"_VAL" ,1);
37            vhdl->set_signal ("internal_READ_"+toString(i)+"_"+toString(j)+"_ACK" ,1);
38          }
39        for (uint32_t j=0; j<_param->_nb_port_read_by_bank; j ++)
40          {
41            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_VAL" ,1);
42            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ACK"    ,1);
43            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_ADDRESS",_param->_size_address_by_bank);
44            vhdl->set_signal ("internal_BANK_READ_"+toString(i)+"_"+toString(j)+"_DATA"   ,_param->_size_word);
45          }
46
47        for (uint32_t j=0; j<_param->_nb_port_write; j ++)
48          {
49            if (_param->_crossbar == FULL_CROSSBAR)
50              {
51                for (uint32_t k=0; k<_param->_nb_port_write_by_bank; k++)
52                  {
53                    vhdl->set_signal ("internal_WRITE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL" ,1);
54                    vhdl->set_signal ("internal_SELECT_WRITE_"+toString(i)+"_"+toString(j)+"_"+toString(k)+"_VAL"    ,1);
55                  }
56              }
57            else
58              vhdl->set_signal ("internal_SELECT_WRITE_"+toString(i)+"_"+toString(j)+"_VAL"    ,1);
59            vhdl->set_signal ("internal_WRITE_"+toString(i)+"_"+toString(j)+"_VAL" ,1);
60            vhdl->set_signal ("internal_WRITE_"+toString(i)+"_"+toString(j)+"_ACK" ,1);
61          }
62        for (uint32_t j=0; j<_param->_nb_port_write_by_bank; j ++)
63          {
64            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_VAL"    ,1);
65            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ACK"    ,1);
66            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_ADDRESS",_param->_size_address_by_bank);
67            vhdl->set_signal ("internal_BANK_WRITE_"+toString(i)+"_"+toString(j)+"_DATA"   ,_param->_size_word);
68          }
69      }
70
71    log_printf(FUNC,RegisterFile_Multi_Banked,"vhdl_declaration","End");
72  };
73
74}; // end namespace registerfile_multi_banked
75}; // end namespace registerfile
76}; // end namespace generic
77
78}; // end namespace behavioural
79}; // end namespace morpheo             
80#endif
Note: See TracBrowser for help on using the repository browser.