OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [src_verilator/] [topology/] [fattree.h] - Diff between revs 48 and 54

Show entire file | Details | Blame | View Log

Rev 48 Rev 54
Line 22... Line 22...
 
 
 
 
 
 
 
 
 
 
inline void fatree_local_addr (unsigned int t1, unsigned int r1, unsigned int addr){
inline void fatree_local_addr (unsigned int t1, unsigned int r1, unsigned int addr, unsigned int id){
        if (t1==1 ) router1[r1]->current_r_addr = addr;
        if (t1==1 ){
        else router2[r1]->current_r_addr = addr;
                router1[r1]->current_r_addr = addr;
 
                router1[r1]->current_r_id   = id;
 
        }
 
        else{
 
                router2[r1]->current_r_addr = addr;
 
                router2[r1]->current_r_id   = id;
 
        }
 
 
}
}
 
 
 
 
unsigned int fattree_addrencode( unsigned int pos, unsigned int k, unsigned int l){
unsigned int fattree_addrencode( unsigned int pos, unsigned int k, unsigned int l){
        unsigned int pow,i,tmp=0;
        unsigned int pow,i,tmp=0;
Line 124... Line 131...
 
 
 
 
 
 
 
 
                       //fattree_connect(Ti(ID1),Ri(ID1),port,Ti(ID2),Ri(ID2),PORT2);
                       //fattree_connect(Ti(ID1),Ri(ID1),port,Ti(ID2),Ri(ID2),PORT2);
                        r2r_cnt_all[num] =(r2r_cnt_table_t){.t1=Ti(ID1), .r1=Ri(ID1), .p1=port, .t2=Ti(ID2), .r2=Ri(ID2), .p2=PORT2 };
                        r2r_cnt_all[num] =(r2r_cnt_table_t){.id1=ID1, .t1=Ti(ID1), .r1=Ri(ID1), .p1=port, .id2=ID2, .t2=Ti(ID2), .r2=Ri(ID2), .p2=PORT2 };
                        unsigned int current_layer_addr = LEAVE_L;
                        unsigned int current_layer_addr = LEAVE_L;
                        unsigned int current_pos_addr   = ADRRENCODED;
                        unsigned int current_pos_addr   = ADRRENCODED;
                                unsigned int addr = (current_layer_addr << LKw)| current_pos_addr;
                                unsigned int addr = (current_layer_addr << LKw)| current_pos_addr;
 
 
//printf( "[%u] = t1=%u, r1=%u, p1=%u, t2=%u, r2=%u, p2=%u \n",  num, r2r_cnt_all[num].t1, r2r_cnt_all[num].r1, r2r_cnt_all[num].p1, r2r_cnt_all[num].t2, r2r_cnt_all[num].r2, r2r_cnt_all[num].p2 );
//printf( "[%u] = t1=%u, r1=%u, p1=%u, t2=%u, r2=%u, p2=%u \n",  num, r2r_cnt_all[num].t1, r2r_cnt_all[num].r1, r2r_cnt_all[num].p1, r2r_cnt_all[num].t2, r2r_cnt_all[num].r2, r2r_cnt_all[num].p2 );
                                 //assign current_r_addr [ID1] = {current_layer_addr [ID1],current_pos_addr[ID1]};
                                 //assign current_r_addr [ID1] = {current_layer_addr [ID1],current_pos_addr[ID1]};
                                fatree_local_addr(Ti(ID1),Ri(ID1),  addr);
                                fatree_local_addr(Ti(ID1),Ri(ID1),  addr, ID1);
 
 
 
 
                                if(level==L-2){// 
                                if(level==L-2){// 
                                        current_layer_addr  =0;
                                        current_layer_addr  =0;
                                current_pos_addr = POS_ADR_CODE2;
                                current_pos_addr = POS_ADR_CODE2;
                                        addr = (current_layer_addr << LKw)| current_pos_addr;
                                        addr = (current_layer_addr << LKw)| current_pos_addr;
                                 //assign current_r_addr [ID2] = {current_layer_addr [ID2],current_pos_addr[ID2]};
                                 //assign current_r_addr [ID2] = {current_layer_addr [ID2],current_pos_addr[ID2]};
                                        fatree_local_addr(Ti(ID2),Ri(ID2),  addr);
                                        fatree_local_addr(Ti(ID2),Ri(ID2),  addr, ID2);
                                }//if
                                }//if
                     num++;
                     num++;
                     }
                     }
                }
                }
        }
        }
 
 
 
        R2R_TABLE_SIZ=num;
 
 
        for ( pos = 0; pos <  NE; pos=pos+1 ) {// : }points
        for ( pos = 0; pos <  NE; pos=pos+1 ) {// : }points
                unsigned int RID= NRL*(L-1)+(pos/K);
                unsigned int RID= NRL*(L-1)+(pos/K);
                unsigned int RPORT = pos%K;
                unsigned int RPORT = pos%K;
                //connected router encoded address
                //connected router encoded address
                unsigned int  CURRENTPOS=   fattree_addrencode(pos/K,K,L);
                unsigned int  CURRENTPOS=   fattree_addrencode(pos/K,K,L);
Line 168... Line 178...
   }
   }
}
}
 
 
 
 
 
 
 
void topology_connect_r2r (int n){
 
        fattree_connect(r2r_cnt_all[n]);
 
}
 
 
 
void topology_connect_r2e (int n){
 
        connect_r2e(2,r2e_cnt_all[n].r1,r2e_cnt_all[n].p1,n);
 
}
 
 
 
 
 
 
 
/*
 
void topology_connect_all_nodes (void){
 
 
void topology_connect_all_nodes (void){
        unsigned int pos,level,port;
 
        unsigned int num = 0;
        unsigned int pos,level,port;
 
        unsigned int num = 0;
 
 
 
        for (level = 0; level<L-1; level=level+1) {// : level_c
 
                for ( pos = 0; pos < NPOS; pos=pos+1 ) {// : pos_c
 
                   for ( port = 0; port < K; port=port+1 ) {// : port_c                     
 
 
 
                        fattree_connect(r2r_cnt_all[num]);
        for (level = 0; level<L-1; level=level+1) {// : level_c
                        num++;
                for ( pos = 0; pos < NPOS; pos=pos+1 ) {// : pos_c
 
                   for ( port = 0; port < K; port=port+1 ) {// : port_c
 
 
                     }
                        fattree_connect(r2r_cnt_all[num]);
                }
                        num++;
        }
 
 
 
 
                     }
 
                }
 
        }
 
 
        for ( pos = 0; pos <  NE; pos=pos+1 ) {// : }points
 
 
 
 
        for ( pos = 0; pos <  NE; pos=pos+1 ) {// : }points
 
 
                connect_r2e(2,r2e_cnt_all[pos].r1,r2e_cnt_all[pos].p1,pos);
 
 
 
 
                connect_r2e(2,r2e_cnt_all[pos].r1,r2e_cnt_all[pos].p1,pos);
 
 
         }
 
 
 
}
         }
 
 
 
}
 
*/
 
 
 
 
unsigned int get_mah_distance ( unsigned int id1, unsigned int id2){
unsigned int get_mah_distance ( unsigned int id1, unsigned int id2){
 
 
        unsigned int k =T1;
        unsigned int k =T1;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.