Ignore:
Timestamp:
Jun 16, 2015, 9:24:36 PM (9 years ago)
Author:
cfuguet
Message:

reconf: introducing a hardware barrier in the global-local interface of
the local interconnects.

  • This barrier is controlled by a port (barrier enable) in the dspin and vci local interconnects.
  • The barrier enable port is connected to a configuration register of the XICU component to allow the software to control this barrier. The barrier is enabled when the barrier enable port value is different of 0xFFFFFFFF. As the configuration register of the XICU component are reset to 0, this barrier is enabled by default.
  • This barrier allows to isolate the cluster from the rest of the architecture and only if it self-diagnoses as functional, it release the barrier to communicate with the others.
  • The same barrier enable signal is connected to the five local interconnects. Therefore, either all are released or all are disabled.
  • If a local initiator or an external initiator sends a packet out or into the cluster respectively, and the barrier is enabled, the packet is dropped.
Location:
branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/include/tsar_iob_cluster.h

    r963 r1001  
    5353    sc_in<bool>                                        p_resetn;
    5454
     55    sc_in<bool>                                        p_false;
     56
    5557    // Thes two ports are used to connect IOB to IOX nework in top cell
    5658    soclib::caba::VciInitiator<vci_param_ext>*         p_vci_iob_iox_ini;
     
    6971
    7072    // interrupt signals
    71     sc_signal<bool>                       signal_false;
    7273    sc_signal<bool>                       signal_proc_it[16];
    7374    sc_signal<bool>                       signal_irq_mdma[8];
     
    7576    sc_signal<uint32_t>                   signal_cfg_router_cmd[3];
    7677    sc_signal<uint32_t>                   signal_cfg_router_rsp[2];
     78    sc_signal<uint32_t>                   signal_cfg_xbar_barrier;
    7779
    7880    // INT network DSPIN signals between DSPIN routers and DSPIN local_crossbars
  • branches/reconfiguration/platforms/tsar_generic_iob/tsar_iob_cluster/caba/source/src/tsar_iob_cluster.cpp

    r1000 r1001  
    9393            soclib::caba::BaseModule(insname),
    9494            p_clk("clk"),
    95             p_resetn("resetn")
     95            p_resetn("resetn"),
     96            p_false("false")
    9697{
    9798
     
    201202                     xcu_nb_wti,                          // number of soft IRQs
    202203                     xcu_nb_out,                          // number of output IRQs
    203                      5);                                  // number of config regs
     204                     6);                                  // number of config regs
    204205
    205206    ////////////  MDMA
     
    236237                     nb_direct_initiators,         // number of local initiators
    237238                     nb_direct_targets,            // number of local targets
    238                      0 );                          // default target
     239                     0,                            // default target
     240                     true );                       // hardware barrier
    239241
    240242    std::ostringstream s_int_dspin_ini_wrapper_gate_d;
     
    269271                     true,                         // pseudo CMD
    270272                     false,                        // no routing table
    271                      true );                       // broacast
     273                     true,                         // broacast
     274                     true );                       // hardware barrier
    272275
    273276    std::ostringstream s_int_xbar_p2m_c;
     
    283286                     false,                        // pseudo RSP
    284287                     false,                        // no routing table
    285                      false );                      // no broacast
     288                     false,                        // no broacast
     289                     true );                       // hardware barrier
    286290
    287291    std::ostringstream s_int_xbar_clack_c;
     
    297301                     true,                         // CMD
    298302                     false,                        // no routing table
    299                      false);                       // broadcast
     303                     false,                        // broadcast
     304                     true );                       // hardware barrier
    300305
    301306    const bool ROUTER_CONFIG_SUPPORTED = true;
     
    470475    int_router_rsp[1]->p_in[4]                   (signal_int_dspin_p2m_l2g_c);
    471476
    472     ///////////////////// CMD DSPIN  local crossbar direct
     477    ///////////////////// CMD & RSP local crossbar
    473478    int_xbar_d->p_clk                                 (this->p_clk);
    474479    int_xbar_d->p_resetn                              (this->p_resetn);
     480    (*int_xbar_d->p_barrier_enable)                   (signal_cfg_xbar_barrier);
    475481    int_xbar_d->p_initiator_to_up                     (signal_int_vci_l2g);
    476482    int_xbar_d->p_target_to_up                        (signal_int_vci_g2l);
     
    505511    int_xbar_m2p_c->p_clk                        (this->p_clk);
    506512    int_xbar_m2p_c->p_resetn                     (this->p_resetn);
     513    (*int_xbar_m2p_c->p_barrier_enable)          (signal_cfg_xbar_barrier);
    507514    int_xbar_m2p_c->p_global_out                 (signal_int_dspin_m2p_l2g_c);
    508515    int_xbar_m2p_c->p_global_in                  (signal_int_dspin_m2p_g2l_c);
     
    514521    int_xbar_p2m_c->p_clk                        (this->p_clk);
    515522    int_xbar_p2m_c->p_resetn                     (this->p_resetn);
     523    (*int_xbar_p2m_c->p_barrier_enable)          (signal_cfg_xbar_barrier);
    516524    int_xbar_p2m_c->p_global_out                 (signal_int_dspin_p2m_l2g_c);
    517525    int_xbar_p2m_c->p_global_in                  (signal_int_dspin_p2m_g2l_c);
     
    523531    int_xbar_clack_c->p_clk                      (this->p_clk);
    524532    int_xbar_clack_c->p_resetn                   (this->p_resetn);
     533    (*int_xbar_clack_c->p_barrier_enable)        (signal_cfg_xbar_barrier);
    525534    int_xbar_clack_c->p_global_out               (signal_int_dspin_clack_l2g_c);
    526535    int_xbar_clack_c->p_global_in                (signal_int_dspin_clack_g2l_c);
     
    547556            else
    548557            {
    549                 proc[p]->p_irq[j]                (signal_false);
     558                proc[p]->p_irq[j]                (this->p_false);
    550559            }
    551560        }
     
    564573        if      ( i == 0 )       xicu->p_hwi[i]  (signal_irq_memc);
    565574        else if ( i <= nb_dmas ) xicu->p_hwi[i]  (signal_irq_mdma[i-1]);
    566         else                     xicu->p_hwi[i]  (signal_false);
     575        else                     xicu->p_hwi[i]  (this->p_false);
    567576    }
    568577    xicu->p_cfg[0]                               (signal_cfg_router_cmd[0]); // CMD
     
    571580    xicu->p_cfg[3]                               (signal_cfg_router_rsp[1]); // P2M
    572581    xicu->p_cfg[4]                               (signal_cfg_router_cmd[2]); // CLACK
     582    xicu->p_cfg[5]                               (signal_cfg_xbar_barrier); // CLACK
    573583
    574584    ///////////////////////////////////// MEMC
Note: See TracChangeset for help on using the changeset viewer.