Ignore:
Timestamp:
Apr 29, 2010, 12:24:31 PM (15 years ago)
Author:
simerabe
Message:

fixing bug : case of non initiator or non target

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_local_ring_network_2/caba/source/src/vci_local_ring_network_2.cpp

    r8 r33  
    6767        std::ostringstream o;
    6868        o << name() << "_hg_init";
    69 
    70         m_half_gateway_initiator = new half_gateway_initiator_t(o.str().c_str(), false, half_gateway_fifo_depth, mt, ringid, false);
     69        bool alloc_hg_init = (m_nai == 0);
     70        m_half_gateway_initiator = new half_gateway_initiator_t(o.str().c_str(), alloc_hg_init, half_gateway_fifo_depth, mt, ringid, false);
    7171
    7272        std::ostringstream p;
    7373        p << name() << "_hg_target";
    74         m_half_gateway_target    = new half_gateway_target_t(p.str().c_str(), false, half_gateway_fifo_depth, mt, ringid, false);
     74        bool alloc_hg_target = (m_nat == 0);
     75        m_half_gateway_target    = new half_gateway_target_t(p.str().c_str(), alloc_hg_target, half_gateway_fifo_depth, mt, ringid, false);
    7576
    7677        for(size_t i=0; i<m_nai; ++i) {
     
    125126        }
    126127
     128if(m_nai > 0) {
    127129        for(size_t i=0;i<m_nat;i++){
    128130                m_ring_target[i]->update_ring_signals(m_ring_signal[m_nai+i-1], m_ring_signal[m_nai+i] );
    129131        }
     132 }
     133else {
     134
     135        for(size_t i=0;i<m_nat;i++){
     136                size_t h = 0;
     137                if(i == 0) h = m_ns-1;
     138                else h = i-1;
     139                m_ring_target[i]->update_ring_signals(m_ring_signal[h], m_ring_signal[i] );
     140        }
     141}
    130142
    131143        m_half_gateway_initiator->update_ring_signals(m_ring_signal[m_nai+m_nat-1], m_ring_signal[m_nai+m_nat] );
     
    141153        }
    142154
     155if(m_nai > 0) {
    143156        for(size_t i=0;i<m_nat;i++){
    144157                m_ring_target[i]->update_ring_signals(m_ring_signal[m_nai+i-1], m_ring_signal[m_nai+i] );
    145158        }
     159 }
     160else {
     161
     162        for(size_t i=0;i<m_nat;i++){
     163                size_t h = 0;
     164                if(i == 0) h = m_ns-1;
     165                else h = i-1;
     166                m_ring_target[i]->update_ring_signals(m_ring_signal[h], m_ring_signal[i] );
     167        }
     168}
     169
    146170
    147171        m_half_gateway_initiator->update_ring_signals(m_ring_signal[m_nai+m_nat-1], m_ring_signal[m_nai+m_nat] );
     
    158182        }
    159183
     184if(m_nai > 0) {
    160185        for(size_t i=0;i<m_nat;i++){
    161186                m_ring_target[i]->update_ring_signals(m_ring_signal[m_nai+i-1], m_ring_signal[m_nai+i] );
    162187        }
     188 }
     189else {
     190
     191        for(size_t i=0;i<m_nat;i++){
     192                size_t h = 0;
     193                if(i == 0) h = m_ns-1;
     194                else h = i-1;
     195                m_ring_target[i]->update_ring_signals(m_ring_signal[h], m_ring_signal[i] );
     196        }
     197}
     198
    163199
    164200        m_half_gateway_initiator->update_ring_signals(m_ring_signal[m_nai+m_nat-1], m_ring_signal[m_nai+m_nat] );
     
    176212                m_ring_initiator[i]->transition(p_to_initiator[i], m_ring_signal[h]);
    177213        }
     214
     215if(m_nai > 0) {
    178216        for(size_t t=0;t<m_nat;t++) {
    179217                m_ring_target[t]->transition(p_to_target[t], m_ring_signal[m_nai+t-1]);
    180218        }
    181 
     219}
     220else {
     221
     222        for(size_t t=0;t<m_nat;t++) {
     223                size_t h = 0;
     224                if(t == 0) h = m_ns-1;
     225                else h = t-1;
     226
     227                m_ring_target[t]->transition(p_to_target[t], m_ring_signal[h]);
     228        }
     229}
    182230        m_half_gateway_initiator->transition(p_gate_initiator, m_ring_signal[m_nai+m_nat-1]);
    183231        m_half_gateway_target->transition(p_gate_target, m_ring_signal[m_nai+m_nat]);
Note: See TracChangeset for help on using the changeset viewer.