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
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/reconfiguration/platforms/tsar_generic_iob/Makefile

    r986 r1001  
    33SOCLIB_CC_ARGS := $(SOCLIB_CC_MODE)
    44SOCLIB_CC_ARGS += -v
     5#SOCLIB_CC_ARGS += -t envsystemc
    56#SOCLIB_CC_ARGS += -bcaba:reconf:vci_xicu
    67#SOCLIB_CC_ARGS += -bcaba:vci_iopic
  • branches/reconfiguration/platforms/tsar_generic_iob/top.cpp

    r1000 r1001  
    852852    sc_signal<bool>                   signal_resetn("resetn");
    853853
    854     sc_signal<bool>                   signal_irq_false;
     854    sc_signal<bool>                   signal_false;
     855
    855856    sc_signal<bool>                   signal_irq_bdev;
    856857    sc_signal<bool>                   signal_irq_mtty_rx[NB_TTY_CHANNELS];
     
    873874    VciSignals<vci_param_ext>         signal_vci_tgt_bdev("signal_vci_tgt_bdev");
    874875    VciSignals<vci_param_ext>         signal_vci_tgt_cdma("signal_vci_tgt_cdma");
    875     VciSignals<vci_param_ext>         signal_vci_tgt_iopi("signal_vci_ini_iopi");
    876     VciSignals<vci_param_ext>         signal_vci_tgt_simh("signal_vci_ini_simh");
    877     VciSignals<vci_param_ext>         signal_vci_tgt_rom("signal_vci_ini_rom");
     876    VciSignals<vci_param_ext>         signal_vci_tgt_iopi("signal_vci_tgt_iopi");
     877    VciSignals<vci_param_ext>         signal_vci_tgt_simh("signal_vci_tgt_simh");
     878    VciSignals<vci_param_ext>         signal_vci_tgt_rom("signal_vci_tgt_rom");
    878879
    879880   // Horizontal inter-clusters INT network DSPIN
     
    12261227    std::cout << std::endl;
    12271228
    1228 //    clusters[0][0]->xicu->set_faulty_wti(3, 0);
     1229    //clusters[0][0]->xicu->set_faulty_wti(4, 0);
    12291230
    12301231    ///////////////////////////////////////////////////////////////////////////////
     
    13231324    {
    13241325       if     (i < NB_NIC_CHANNELS)    iopi->p_hwi[i] (signal_irq_mnic_rx[i]);
    1325        else if(i < 2 )                 iopi->p_hwi[i] (signal_irq_false);
     1326       else if(i < 2 )                 iopi->p_hwi[i] (signal_false);
    13261327       else if(i < 2+NB_NIC_CHANNELS)  iopi->p_hwi[i] (signal_irq_mnic_tx[i-2]);
    1327        else if(i < 4 )                 iopi->p_hwi[i] (signal_irq_false);
     1328       else if(i < 4 )                 iopi->p_hwi[i] (signal_false);
    13281329       else if(i < 4+NB_CMA_CHANNELS)  iopi->p_hwi[i] (signal_irq_cdma[i-4]);
    1329        else if(i < 8)                  iopi->p_hwi[i] (signal_irq_false);
     1330       else if(i < 8)                  iopi->p_hwi[i] (signal_false);
    13301331       else if(i < 9)                  iopi->p_hwi[i] (signal_irq_bdev);
    1331        else if(i < 16)                 iopi->p_hwi[i] (signal_irq_false);
     1332       else if(i < 16)                 iopi->p_hwi[i] (signal_false);
    13321333       else if(i < 16+NB_TTY_CHANNELS) iopi->p_hwi[i] (signal_irq_mtty_rx[i-16]);
    1333        else                            iopi->p_hwi[i] (signal_irq_false);
     1334       else                            iopi->p_hwi[i] (signal_false);
    13341335    }
    13351336
     
    13651366            clusters[x][y]->p_clk     (signal_clk);
    13661367            clusters[x][y]->p_resetn  (signal_resetn);
     1368            clusters[x][y]->p_false   (signal_false);
    13671369        }
    13681370    }
     
    15131515
    15141516   signal_resetn = false;
    1515    signal_irq_false = false;
     1517   signal_false = false;
    15161518
    15171519   // network boundaries signals
     
    16241626               std::cout << "### IRQ_PROC_" << std::dec
    16251627                  << x << "_" << y << "_" << l << " ACTIVE" << std::endl;
     1628
     1629            c->int_xbar_d->print_trace();
    16261630         }
    16271631
  • 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.