Ignore:
Timestamp:
Jan 27, 2015, 5:58:07 PM (10 years ago)
Author:
cfuguet
Message:

reconf: introducing the segment recovery mechanism in the dspin_router

  • The p_recovery_cfg port, connected through a signal to a config register in the XICU, is formatted in two fields: the 4 LSb contain the blackhole relative position and the 4 bits after contain the recovery direction.
  • A request with the blackhole cluster as destination is rerouted through the defined recovery direction.
  • Remove the reconfiguration parameter of the constructor. The p_recovery_cfg port is instantiated when the bind_recovery_port is called. This port is also connected during this function to the signal that is passed as an argument.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/modules/dspin_router/caba/source/include/dspin_router.h

    r886 r931  
    9494    DspinInput<flit_width>      *p_in;
    9595    DspinOutput<flit_width>     *p_out;
    96     sc_in<uint32_t>             *p_blackhole_pos;
     96
     97    // reconfiguration port
     98    sc_in<uint32_t>             *p_recovery_cfg;
    9799
    98100    // constructor / destructor
     
    104106                 const size_t    in_fifo_depth,
    105107                 const size_t    out_fifo_depth,
    106                  const bool      broadcast_supported = false,
    107                  const bool      reconfigurable = false );
     108                 const bool      broadcast_supported = false );
    108109
    109110    ~DspinRouter();
     
    146147    void    genMoore();
    147148    int     xfirst_route( size_t xdest, size_t ydest );
    148     int     recovery_route( size_t xdest, size_t ydest );
    149149    int     route( sc_uint<flit_width> data );
    150150    int     broadcast_route( int iter, int source, sc_uint<flit_width> data );
    151151    bool    is_broadcast( sc_uint<flit_width> data );
    152152
     153    // fault-recovery methods
     154    bool    need_reroute( size_t xdest, size_t ydest, int bhpos );
     155    int     recovery_route( size_t xdest, size_t ydest );
     156
    153157    public:
    154158
    155     void set_disable_mask( int mask )
     159    inline void set_disable_mask( int mask )
    156160    {
    157161        m_disable_mask = mask;
    158162    }
     163
     164    void bind_recovery_port( sc_core::sc_signal<uint32_t> &s );
    159165
    160166    void print_trace();
Note: See TracChangeset for help on using the changeset viewer.