Ignore:
Timestamp:
Sep 30, 2010, 7:09:43 PM (14 years ago)
Author:
choichil
Message:

Platform without targets

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/platforms/caba-vdspin-vci_synthetic_initiator/top.cpp

    r97 r99  
    88#include "mapping_table.h"
    99#include "alloc_elems.h"
    10 #include "vci_simple_ram.h"
    11 #include "vci_multi_tty.h"
    12 #include "vci_local_ring_network.h"
    13 #include "vci_simple_ring_network.h"
    14 #include "virtual_dspin_network.h"
     10//#include "vci_simple_ram.h"
     11//#include "vci_multi_tty.h"
     12#include "vci_local_ring_fast.h"
     13#include "virtual_dspin_router.h"
    1514#include "vci_synthetic_initiator.h"
    1615
     
    3736        using soclib::common::Segment;
    3837
     38        using soclib::common::uint32_log2;
     39
    3940        // Define VCI parameters
    4041        typedef soclib::caba::VciParams<4,8,32,1,1,1,8,4,4,1> vci_param;
     
    4445        soclib::common::MappingTable maptab(32, IntTab(2,10), IntTab(2,3), 0x00C00000);
    4546
    46         maptab.add(Segment("reset", RESET_BASE, RESET_SIZE, IntTab(2,1), true));
    47         maptab.add(Segment("excep", EXCEP_BASE, EXCEP_SIZE, IntTab(2,1), true));
    48         maptab.add(Segment("tty"  , TTY_BASE  , TTY_SIZE  , IntTab(3,1), false));
    4947
    5048        maptab.add(Segment("mc_r0" , MC0_R_BASE , MC0_R_SIZE , IntTab(0,0), false, true, IntTab(0,0)));
     
    6462        sc_signal<bool> signal_resetn("resetn");
    6563   
    66         soclib::caba::VciSignals<vci_param> * signal_vci_ini_synth = soclib::common::alloc_elems<soclib::caba::VciSignals<vci_param> >("signal_vci_ini_synth", N_CLUSTERS);
    67         soclib::caba::DspinSignals<WIDTH_CMD> **** dspin_signals_cmd_c0 = soclib::common::alloc_elems<solib::caba::DspinSignals<WIDTH_CMD> >("Dspin_cmd_signals", 2, Y_MAX, X_MAX, 5 );
    68         soclib::caba::DspinSignals<WIDTH_CMD> **** dspin_signals_cmd_c1 = soclib::common::alloc_elems<solib::caba::DspinSignals<WIDTH_CMD> >("Dspin_cmd_signals", 2, Y_MAX, X_MAX, 5 );
     64        soclib::caba::VciSignals<vci_param> * signal_vci_ini_synth_c0 = soclib::common::alloc_elems<soclib::caba::VciSignals<vci_param> >("signal_vci_ini_synth", N_CLUSTERS);
     65        soclib::caba::VciSignals<vci_param> * signal_vci_ini_synth_c1 = soclib::common::alloc_elems<soclib::caba::VciSignals<vci_param> >("signal_vci_ini_synth", N_CLUSTERS);
     66        ///////////////////////////////////////////////////////////////
     67        // VDSPIN Signals : one level for in and out, one level for X length in the mesh,
     68        //                  one level for Y length in the mesh, last level for each port of the router
     69        ///////////////////////////////////////////////////////////////
     70        soclib::caba::DspinSignals<WIDTH_CMD> **** dspin_signals_cmd_c0 = soclib::common::alloc_elems<solib::caba::DspinSignals<WIDTH_CMD> >("Dspin_cmd_signals_channel_0", 2, Y_MAX, X_MAX, 5 );
     71        soclib::caba::DspinSignals<WIDTH_CMD> **** dspin_signals_cmd_c1 = soclib::common::alloc_elems<solib::caba::DspinSignals<WIDTH_CMD> >("Dspin_cmd_signals_channel_1", 2, Y_MAX, X_MAX, 5 );
     72        soclib::caba::DspinSignals<WIDTH_RSP> **** dspin_signals_rsp_c0 = soclib::common::alloc_elems<solib::caba::DspinSignals<WIDTH_RSP> >("Dspin_rsp_signals_channel_0", 2, Y_MAX, X_MAX, 5 );
     73        soclib::caba::DspinSignals<WIDTH_RSP> **** dspin_signals_rsp_c1 = soclib::common::alloc_elems<solib::caba::DspinSignals<WIDTH_RSP> >("Dspin_rsp_signals_channel_2", 2, Y_MAX, X_MAX, 5 );
    6974
    7075        //soclib::caba::VciSignals<vci_param> * signal_vci_tgt_proc  = soclib::common::alloc_elems<soclib::caba::VciSignals<vci_param> >("signal_vci_tgt_proc",  N_CLUSTERS);
    7176
    7277        // N_CLUSTERS ring.
    73         soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> * local_ring = (soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> *) malloc(sizeof(soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> ) * N_CLUSTERS) ;
     78        soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> * local_ring_c0 = (soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> *) malloc(sizeof(soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> ) * N_CLUSTERS) ;
    7479        for(int i = 0 ; i < N_CLUSTERS ; i++){                                                            // ringid, fifo, fifo, nb_init, nb_tgt
    75                 new(&local_ring[i]) soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> ("cluster" + i,maptab, IntTab(i), 2, 18, 1, 1)
     80                new(&local_ring_c0[i]) soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> ("cluster_c0" + i,maptab, IntTab(i), 2, 18, 1, 1)
     81        }
     82
     83        soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> * local_ring_c1 = (soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> *) malloc(sizeof(soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> ) * N_CLUSTERS) ;
     84        for(int i = 0 ; i < N_CLUSTERS ; i++){                                                            // ringid, fifo, fifo, nb_init, nb_tgt
     85                new(&local_ring_c1[i]) soclib::caba::VciLocalRingFast<vci_param, WIDTH_CMD, WIDTH_RSP> ("cluster_c1" + i,maptab, IntTab(i), 2, 18, 1, 1)
    7686        }
    7787
     
    95105
    96106        // N_CLUSTERS VCI Synthetic Initiator (1 initiator per cluster/network)
    97         soclib::caba::VciSyntheticInitiator<vci_param> * initiator = (soclib::caba::VciSyntheticInitiator<vci_param> *) malloc(sizeof(soclib::caba::VciSyntheticInitiator<vci_param> )* N_CLUSTERS);
     107        soclib::caba::VciSyntheticInitiator<vci_param> * initiator_c0 = (soclib::caba::VciSyntheticInitiator<vci_param> *) malloc(sizeof(soclib::caba::VciSyntheticInitiator<vci_param> )* N_CLUSTERS);
    98108        for(int i = 0 ; i < Y_MAX; i++)
    99109                for(int j = 0 ; j < Y_MAX ; j++)
    100                         new(&initiator[Y_MAX*i+j]) soclib::caba::VciSyntheticInitiator<vci_param> ("Initiator" + (Y_MAX*i+j), Y_MAX*i+j, maptab, IntTab(i,j),);
     110                        new(&initiator_c0[Y_MAX*i+j]) soclib::caba::VciSyntheticInitiator<vci_param> ("Initiator_c0" + (i*X_MAX+j), i*X_MAX+j, maptab, IntTab(i,j),16, 0.5, 2, X_MAX, Y_MAX);
     111
     112        soclib::caba::VciSyntheticInitiator<vci_param> * initiator_c1 = (soclib::caba::VciSyntheticInitiator<vci_param> *) malloc(sizeof(soclib::caba::VciSyntheticInitiator<vci_param> )* N_CLUSTERS);
     113        for(int i = 0 ; i < Y_MAX; i++)
     114                for(int j = 0 ; j < Y_MAX ; j++)
     115                        new(&initiator_c1[Y_MAX*i+j]) soclib::caba::VciSyntheticInitiator<vci_param> ("Initiator_c1" + (i*X_MAX+j), i*X_MAX+j, maptab, IntTab(i,j),16, 0.5, 2, X_MAX, Y_MAX);
    101116
    102117        ///////////////////////////////////////////////////////////////
     
    104119        ///////////////////////////////////////////////////////////////
    105120        for(int i = 0 ; i < N_CLUSTERS ; i++){
    106           local_ring[i].p_clk(signal_clk);
    107           local_ring[i].p_resetn(signal_resetn);
    108           local_ring[i].p_to_initiator[0](signal_vci_ini_synth[i]);
    109           initiator[i].p_clk(signal_clk);
    110           initiator[i].p_resetn(signal_resetn);
    111           initiator[i].p_vci(signal_vci_ini_synth[i]);
     121          local_ring_c0[i].p_clk(signal_clk);
     122          local_ring_c0[i].p_resetn(signal_resetn);
     123          local_ring_c0[i].p_to_initiator[0](signal_vci_ini_synt_c0h[i]);
     124          initiator_c0[i].p_clk(signal_clk);
     125          initiator_c0[i].p_resetn(signal_resetn);
     126          initiator_c0[i].p_vci(signal_vci_ini_synth_c0[i]);
     127          local_ring_c1[i].p_clk(signal_clk);
     128          local_ring_c1[i].p_resetn(signal_resetn);
     129          local_ring_c1[i].p_to_initiator[0](signal_vci_ini_synth_c1[i]);
     130          initiator_c1[i].p_clk(signal_clk);
     131          initiator_c1[i].p_resetn(signal_resetn);
     132          initiator_c1[i].p_vci(signal_vci_ini_synth_c1[i]);
    112133        }
    113134       
    114135        ///////////////////////////////////////////////////////////////
    115         // Connection of each VDspin Router to each local ring
     136        // Connection of each VDspin Router to each local ring and
     137        // neighbors VDspin Router
    116138        ///////////////////////////////////////////////////////////////
    117139        for(int i = 0; i < Y_MAX ; i++){
     
    119141            routers_cmd[i][j].p_clk(signal_clk);
    120142            routers_cmd[i][j].p_resetn(signal_resetn);
     143            routers_rsp[i][j].p_clk(signal_clk);
     144            routers_rsp[i][j].p_resetn(signal_resetn);
     145            local_ring_c0[i*X_MAX+j].p_gate_cmd_in( dspin_signals_cmd_c0[0][i][j][LOCAL]);
     146            local_ring_c0[i*X_MAX+j].p_gate_cmd_out(dspin_signals_cmd_c0[1][i][j][LOCAL] );
     147            local_ring_c0[i*X_MAX+j].p_gate_rsp_in( dspin_signals_rsp_c0[0][i][j][LOCAL]);
     148            local_ring_c0[i*X_MAX+j].p_gate_rsp_out(dspin_signals_rsp_c0[1][i][j][LOCAL] );
     149            local_ring_c1[i*X_MAX+j].p_gate_cmd_in( dspin_signals_cmd_c1[0][i][j][LOCAL]);
     150            local_ring_c1[i*X_MAX+j].p_gate_cmd_out(dspin_signals_cmd_c1[1][i][j][LOCAL] );
     151            local_ring_c1[i*X_MAX+j].p_gate_rsp_in( dspin_signals_rsp_c1[0][i][j][LOCAL]);
     152            local_ring_c1[i*X_MAX+j].p_gate_rsp_out(dspin_signals_rsp_c1[1][i][j][LOCAL] );
    121153            for(k = 0; k < 5; k++){
    122154              if(i == 0){
     
    126158                  routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[1][i][j][k]);
    127159                  routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[1][i][j][k]);
    128                   routers_rsp[i][j].p_out[0][k](dspin_signals_cmd_c0[0][i][j][k]);
    129                   routers_rsp[i][j].p_out[1][k](dspin_signals_cmd_c1[0][i][j][k]);
    130                   routers_rsp[i][j].p_in[0][k](dspin_signals_cmd_c0[1][i][j][k]);
    131                   routers_rsp[i][j].p_in[1][k](dspin_signals_cmd_c1[1][i][j][k]);
     160                  routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[0][i][j][k]);
     161                  routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[0][i][j][k]);
     162                  routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[1][i][j][k]);
     163                  routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[1][i][j][k]);
    132164                } else {
    133                  
     165                  if(k == WEST){
     166                        routers_cmd[i][j].p_out[0][k](dspin_signals_cmd_c0[1][i][j-1][EAST]);
     167                        routers_cmd[i][j].p_out[1][k](dspin_signals_cmd_c1[1][i][j-1][EAST]);
     168                        routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[0][i][j-1][EAST]);
     169                        routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[0][i][j-1][EAST]);
     170                        routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[1][i][j-1][EAST]);
     171                        routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[1][i][j-1][EAST]);
     172                        routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[0][i][j-1][EAST]);
     173                        routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[0][i][j-1][EAST]);
     174                  } else {
     175                        routers_cmd[i][j].p_out[0][k](dspin_signals_cmd_c0[0][i][j][k]);
     176                        routers_cmd[i][j].p_out[1][k](dspin_signals_cmd_c1[0][i][j][k]);
     177                        routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[1][i][j][k]);
     178                        routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[1][i][j][k]);
     179                        routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[0][i][j][k]);
     180                        routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[0][i][j][k]);
     181                        routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[1][i][j][k]);
     182                        routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[1][i][j][k]);
     183                  }
    134184                }
    135185              } else {
    136              
     186                if(k == SOUTH){
     187                        routers_cmd[i][j].p_out[0][k](dspin_signals_cmd_c0[1][i-1][j][NORTH]);
     188                        routers_cmd[i][j].p_out[1][k](dspin_signals_cmd_c1[1][i-1][j][NORTH]);
     189                        routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[0][i-1][j][NORTH]);
     190                        routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[0][i-1][j][NORTH]);
     191                        routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[1][i-1][j][NORTH]);
     192                        routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[1][i-1][j][NORTH]);
     193                        routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[0][i-1][j][NORTH]);
     194                        routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[0][i-1][j][NORTH]);
     195                } else if(k == WEST){
     196                   if(j == 0){
     197                        routers_cmd[i][j].p_out[0][k](dspin_signals_cmd_c0[0][i][j][k]);
     198                        routers_cmd[i][j].p_out[1][k](dspin_signals_cmd_c1[0][i][j][k]);
     199                        routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[1][i][j][k]);
     200                        routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[1][i][j][k]);
     201                        routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[0][i][j][k]);
     202                        routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[0][i][j][k]);
     203                        routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[1][i][j][k]);
     204                        routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[1][i][j][k]);
     205                   } else {
     206                        routers_cmd[i][j].p_out[0][k](dspin_signals_cmd_c0[1][i][j-1][EAST]);
     207                        routers_cmd[i][j].p_out[1][k](dspin_signals_cmd_c1[1][i][j-1][EAST]);
     208                        routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[0][i][j-1][EAST]);
     209                        routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[0][i][j-1][EAST]);
     210                        routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[1][i][j-1][EAST]);
     211                        routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[1][i][j-1][EAST]);
     212                        routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[0][i][j-1][EAST]);
     213                        routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[0][i][j-1][EAST]);
     214                   }
     215                } else {
     216                        routers_cmd[i][j].p_out[0][k](dspin_signals_cmd_c0[0][i][j][k]);
     217                        routers_cmd[i][j].p_out[1][k](dspin_signals_cmd_c1[0][i][j][k]);
     218                        routers_cmd[i][j].p_in[0][k](dspin_signals_cmd_c0[1][i][j][k]);
     219                        routers_cmd[i][j].p_in[1][k](dspin_signals_cmd_c1[1][i][j][k]);
     220                        routers_rsp[i][j].p_out[0][k](dspin_signals_rsp_c0[0][i][j][k]);
     221                        routers_rsp[i][j].p_out[1][k](dspin_signals_rsp_c1[0][i][j][k]);
     222                        routers_rsp[i][j].p_in[0][k](dspin_signals_rsp_c0[1][i][j][k]);
     223                        routers_rsp[i][j].p_in[1][k](dspin_signals_rsp_c1[1][i][j][k]);
     224                }
    137225              }
    138226            }
Note: See TracChangeset for help on using the changeset viewer.