Ignore:
Timestamp:
Jun 23, 2014, 4:02:53 PM (10 years ago)
Author:
cfuguet
Message:

fault_tolerance/tsar_generic_iob:

  • introducing the vci_iopic component on the IOX interconnect.


  • the input hardware interrupts on cluster(0,0) from the external peripherals have been removed because they are connected to the vci_iopic component.


  • Replacing "ad-hoc" dspin_tsar router by standard dspin_router on the RAM interconnect. To do so, in IO clusters (clusters with IOB) two crossbars are implemented:

+ One for commands which interconnects MEMC and IOB to the

local interface of RAM CMD dspin_router.

+ One for responses which interconnects local interface of RAM

RSP dspin_router to MEMC and IOB.

  • Considering case of mono cluster platform: Only one IOB must be instantiated.
  • Modifying IOX memory segments used by IOX network for routing:


+ bugfix: all segments of IOX interconnect must have

global id = 0.

+ Adding XICU segments with special attribute. This

attribute is used by IOB to determine if a command coming
from external DMA peripheral should be routed
through INT or RAM networks.

+ Using bit 32 of physical address to determine if an

external DMA command should be routed through IOB0
or IOB1.


File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/fault_tolerance/platform/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r696 r717  
    2727#include "vci_dspin_initiator_wrapper.h"
    2828#include "vci_dspin_target_wrapper.h"
    29 #include "dspin_router_tsar.h"
     29#include "dspin_router.h"
    3030#include "virtual_dspin_router.h"
    3131#include "vci_multi_dma.h"
     
    8989      soclib::caba::VciTarget<vci_param_ext>*    p_vci_iob_iox_tgt;
    9090
    91       // These ports are used to connect IOB to RAM network in top cell
    92       soclib::caba::DspinOutput<dspin_ram_cmd_width>* p_dspin_iob_cmd_out;
    93       soclib::caba::DspinInput<dspin_ram_rsp_width>*  p_dspin_iob_rsp_in;
    94 
    95       // These ports are used to connect hard IRQ from external peripherals to
    96       // IOB0
    97       sc_in<bool>* p_irq[32];
    98 
    9991      // These arrays of ports are used to connect the INT & RAM networks in
    10092      // top cell
     
    111103      // interrupt signals
    112104      sc_signal<bool> signal_false;
    113       sc_signal<bool> signal_proc_it[8];
    114       sc_signal<bool> signal_irq_mdma[8];
    115       sc_signal<bool> signal_irq_mtty[8];
     105      sc_signal<bool> signal_proc_it[NB_PROCS*IRQ_PER_PROCESSOR];
     106      sc_signal<bool> signal_irq_mdma[NB_DMA_CHANNELS];
     107      sc_signal<bool> signal_irq_mtty[NB_DEBUG_TTY_CHANNELS];
    116108      sc_signal<bool> signal_irq_memc;
    117109
     
    130122
    131123      // INT network VCI signals between VCI components and VCI local crossbar
    132       VciSignals<vci_param_int> signal_int_vci_ini_proc[8];
     124      VciSignals<vci_param_int> signal_int_vci_ini_proc[NB_PROCS];
    133125      VciSignals<vci_param_int> signal_int_vci_ini_mdma;
    134126      VciSignals<vci_param_int> signal_int_vci_ini_iobx;
     
    149141      DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_memc;
    150142      DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_memc;
    151       DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_proc[8];
    152       DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_proc[8];
    153       DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_proc[8];
     143      DspinSignals<dspin_int_cmd_width> signal_int_dspin_m2p_proc[NB_PROCS];
     144      DspinSignals<dspin_int_cmd_width> signal_int_dspin_clack_proc[NB_PROCS];
     145      DspinSignals<dspin_int_rsp_width> signal_int_dspin_p2m_proc[NB_PROCS];
    154146
    155147      // RAM network VCI signals between VCI components and VCI/DSPIN wrappers
     
    161153      DspinSignals<dspin_ram_cmd_width> signal_ram_dspin_cmd_xram_t;
    162154      DspinSignals<dspin_ram_rsp_width> signal_ram_dspin_rsp_xram_t;
     155
    163156      DspinSignals<dspin_ram_cmd_width> signal_ram_dspin_cmd_memc_i;
    164157      DspinSignals<dspin_ram_rsp_width> signal_ram_dspin_rsp_memc_i;
     158
     159      DspinSignals<dspin_ram_cmd_width> signal_ram_dspin_cmd_iob_i;
     160      DspinSignals<dspin_ram_rsp_width> signal_ram_dspin_rsp_iob_i;
     161
     162      DspinSignals<dspin_ram_cmd_width> signal_ram_dspin_cmd_xbar;
     163      DspinSignals<dspin_ram_rsp_width> signal_ram_dspin_rsp_xbar;
     164
     165      DspinSignals<dspin_ram_cmd_width> signal_ram_dspin_cmd_false;
     166      DspinSignals<dspin_ram_rsp_width> signal_ram_dspin_rsp_false;
     167
    165168
    166169      //////////////////////////////////////
     
    213216      VciExtDspinTargetWrapperType* xram_ram_wt;
    214217
    215       DspinRouterTsar<dspin_ram_cmd_width>* ram_router_cmd;
    216       DspinRouterTsar<dspin_ram_rsp_width>* ram_router_rsp;
     218      DspinRouter<dspin_ram_cmd_width>* ram_router_cmd;
     219      DspinRouter<dspin_ram_rsp_width>* ram_router_rsp;
     220
     221      DspinLocalCrossbar<dspin_ram_cmd_width>* ram_xbar_cmd;
     222      DspinLocalCrossbar<dspin_ram_rsp_width>* ram_xbar_rsp;
    217223
    218224      // IO Network Components (not instanciated in all clusters)
     
    232238         const soclib::common::MappingTable &mt_ext;
    233239         const soclib::common::MappingTable &mt_iox;
     240
     241         const bool is_io;
     242         const soclib::common::IntTab iox_iob_tgtid;
     243         const soclib::common::IntTab iox_iob_srcid;
    234244
    235245         size_t memc_ways;
     
    243253         const Loader& loader;
    244254
     255         bool distboot;
     256
    245257         uint32_t frozen_cycles;
    246258         uint32_t debug_start_cycle;
     
    255267      };
    256268
     269
     270      SC_HAS_PROCESS(TsarIobCluster);
     271
     272      void init();
     273
    257274      // cluster constructor
    258275      TsarIobCluster(struct ClusterParams& params);
Note: See TracChangeset for help on using the changeset viewer.