#include #include "config.h" #include "cross.h" #include "print.h" #include "source.h" /*** * NOTE : Les paramètres se trouvent dans le fichier "config.h" ***/ /* * Cable un réseau omega * nw, nh : Largeur/Hauteur du réseau * dw, dh : Offset de décalage en largeur/hauteur * gw, gh : Taille du groupe désiré largeur/hauteur */ void cable_omega(cross *net[ETAGES][HEIGHT], sc_buffer > links[ETAGES][IO], int nw, int nh, int dw, int dh, int gw, int gh) { // Pour chaque etage for(int i=dw;i ", j); net[i][j/2]->out_0(links[i][j]); } else { printf("%d(out_1) -> ", j); net[i][j/2]->out_1(links[i][j]); } if ( dest % 2 == 0 ) { printf("%d(in_0)\n", dest); net[i+1][dest/2]->in_0(links[i][j]); } else { printf("%d(in_1)\n", dest); net[i+1][dest/2]->in_1(links[i][j]); } } } } /* * Cable un réseau de type Reverse Baseline */ void cable_revbase(cross *net[ETAGES][HEIGHT], sc_buffer > links[ETAGES][IO]) { for(int i=1;i > e[IO]; // Cables pour les afficheurs sc_buffer > s[IO]; // Cables d'interlaison sc_buffer > links[ETAGES][IO]; // Création du réseau cross *net[ETAGES][HEIGHT]; for(int i=0;iin_0(e[i]); else net[0][i/2]->in_1(e[i]); sources[i]->out(e[i]); sources[i]->clk(clk); sources[i]->data = random(); } // cable le réseau cable_revbase(net, links); // cable sortie print *printers[IO]; for(int i=0;i > link; printf("connect out %d\n", i); if ( i % 2 == 0 ) net[ETAGES-1][i/2]->out_0(s[i]); else net[ETAGES-1][i/2]->out_1(s[i]); printers[i]->in(s[i]); } sc_start(1000); // Libère les ressources for(int i=0;i