OpenCores
URL https://opencores.org/ocsvn/async_sdm_noc/async_sdm_noc/trunk

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [branches/] [clos_opt/] [clos_opt/] [src/] [router.v] - Diff between revs 57 and 75

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 57 Rev 75
Line 15... Line 15...
 History:
 History:
 28/05/2009  Initial version. <wsong83@gmail.com>
 28/05/2009  Initial version. <wsong83@gmail.com>
 23/09/2010  Supporting channel slicing and SDM using macro difinitions. <wsong83@gmail.com>
 23/09/2010  Supporting channel slicing and SDM using macro difinitions. <wsong83@gmail.com>
 22/10/2010  Parameterize the number of pipelines in output buffers. <wsong83@gmail.com>
 22/10/2010  Parameterize the number of pipelines in output buffers. <wsong83@gmail.com>
 25/05/2011  Clean up for opensource. <wsong83@gmail.com>
 25/05/2011  Clean up for opensource. <wsong83@gmail.com>
 
 21/07/2011  Preparation for the buffered Clos switch. <wsong83@gmail.com>
 
 
*/
*/
 
 
// the router structure definitions
// the router structure definitions
`include "define.v"
`include "define.v"
Line 122... Line 123...
              .o1     ( s2c1[i]  ),
              .o1     ( s2c1[i]  ),
              .o2     ( s2c2[i]  ),
              .o2     ( s2c2[i]  ),
              .o3     ( s2c3[i]  ),
              .o3     ( s2c3[i]  ),
              .o4     ( s2c4[i]  ),
              .o4     ( s2c4[i]  ),
              .ia     ( sia[i]   ),
              .ia     ( sia[i]   ),
              .arb_r  ( sreq[i]  ),
              .deco   ( sreq[i]  ),
              .rst_n  ( rst_n    ),
              .rst_n  ( rst_n    ),
              .i0     ( si0[i]   ),
              .i0     ( si0[i]   ),
              .i1     ( si1[i]   ),
              .i1     ( si1[i]   ),
              .i2     ( si2[i]   ),
              .i2     ( si2[i]   ),
              .i3     ( si3[i]   ),
              .i3     ( si3[i]   ),
              .i4     ( si4[i]   ),
              .i4     ( si4[i]   ),
              .oa     ( s2ca[i]  ),
              .oa     ( s2ca[i]  ),
              .addrx  ( addrx    ),
              .addrx  ( addrx    ),
              .addry  ( addry    ),
              .addry  ( addry    )
              .arb_ra ( sack[i]  )
 
              );
              );
 
 
         inp_buf #(.DIR(1), .RN(2), .DW(DW), .PD(IPD))
         inp_buf #(.DIR(1), .RN(2), .DW(DW), .PD(IPD))
         WIB (
         WIB (
              .o0     ( w2c0[i]  ),
              .o0     ( w2c0[i]  ),
              .o1     ( w2c1[i]  ),
              .o1     ( w2c1[i]  ),
              .o2     ( w2c2[i]  ),
              .o2     ( w2c2[i]  ),
              .o3     ( w2c3[i]  ),
              .o3     ( w2c3[i]  ),
              .o4     ( w2c4[i]  ),
              .o4     ( w2c4[i]  ),
              .ia     ( wia[i]   ),
              .ia     ( wia[i]   ),
              .arb_r  ( wreq[i]  ),
              .deco   ( wreq[i]  ),
              .rst_n  ( rst_n    ),
              .rst_n  ( rst_n    ),
              .i0     ( wi0[i]   ),
              .i0     ( wi0[i]   ),
              .i1     ( wi1[i]   ),
              .i1     ( wi1[i]   ),
              .i2     ( wi2[i]   ),
              .i2     ( wi2[i]   ),
              .i3     ( wi3[i]   ),
              .i3     ( wi3[i]   ),
              .i4     ( wi4[i]   ),
              .i4     ( wi4[i]   ),
              .oa     ( w2ca[i]  ),
              .oa     ( w2ca[i]  ),
              .addrx  ( addrx    ),
              .addrx  ( addrx    ),
              .addry  ( addry    ),
              .addry  ( addry    )
              .arb_ra ( wack[i]  )
 
              );
              );
 
 
         inp_buf #(.DIR(2), .RN(4), .DW(DW), .PD(IPD))
         inp_buf #(.DIR(2), .RN(4), .DW(DW), .PD(IPD))
         NIB (
         NIB (
              .o0     ( n2c0[i]  ),
              .o0     ( n2c0[i]  ),
              .o1     ( n2c1[i]  ),
              .o1     ( n2c1[i]  ),
              .o2     ( n2c2[i]  ),
              .o2     ( n2c2[i]  ),
              .o3     ( n2c3[i]  ),
              .o3     ( n2c3[i]  ),
              .o4     ( n2c4[i]  ),
              .o4     ( n2c4[i]  ),
              .ia     ( nia[i]   ),
              .ia     ( nia[i]   ),
              .arb_r  ( nreq[i]  ),
              .deco   ( nreq[i]  ),
              .rst_n  ( rst_n    ),
              .rst_n  ( rst_n    ),
              .i0     ( ni0[i]   ),
              .i0     ( ni0[i]   ),
              .i1     ( ni1[i]   ),
              .i1     ( ni1[i]   ),
              .i2     ( ni2[i]   ),
              .i2     ( ni2[i]   ),
              .i3     ( ni3[i]   ),
              .i3     ( ni3[i]   ),
              .i4     ( ni4[i]   ),
              .i4     ( ni4[i]   ),
              .oa     ( n2ca[i]  ),
              .oa     ( n2ca[i]  ),
              .addrx  ( addrx    ),
              .addrx  ( addrx    ),
              .addry  ( addry    ),
              .addry  ( addry    )
              .arb_ra ( nack[i]  )
 
              );
              );
 
 
         inp_buf #(.DIR(3), .RN(2), .DW(DW), .PD(IPD))
         inp_buf #(.DIR(3), .RN(2), .DW(DW), .PD(IPD))
         EIB (
         EIB (
              .o0     ( e2c0[i]  ),
              .o0     ( e2c0[i]  ),
              .o1     ( e2c1[i]  ),
              .o1     ( e2c1[i]  ),
              .o2     ( e2c2[i]  ),
              .o2     ( e2c2[i]  ),
              .o3     ( e2c3[i]  ),
              .o3     ( e2c3[i]  ),
              .o4     ( e2c4[i]  ),
              .o4     ( e2c4[i]  ),
              .ia     ( eia[i]   ),
              .ia     ( eia[i]   ),
              .arb_r  ( ereq[i]  ),
              .deco   ( ereq[i]  ),
              .rst_n  ( rst_n    ),
              .rst_n  ( rst_n    ),
              .i0     ( ei0[i]   ),
              .i0     ( ei0[i]   ),
              .i1     ( ei1[i]   ),
              .i1     ( ei1[i]   ),
              .i2     ( ei2[i]   ),
              .i2     ( ei2[i]   ),
              .i3     ( ei3[i]   ),
              .i3     ( ei3[i]   ),
              .i4     ( ei4[i]   ),
              .i4     ( ei4[i]   ),
              .oa     ( e2ca[i]  ),
              .oa     ( e2ca[i]  ),
              .addrx  ( addrx    ),
              .addrx  ( addrx    ),
              .addry  ( addry    ),
              .addry  ( addry    )
              .arb_ra ( eack[i]  )
 
              );
              );
 
 
         inp_buf #(.DIR(4), .RN(4), .DW(DW), .PD(IPD))
         inp_buf #(.DIR(4), .RN(4), .DW(DW), .PD(IPD))
         LIB (
         LIB (
              .o0     ( l2c0[i]  ),
              .o0     ( l2c0[i]  ),
              .o1     ( l2c1[i]  ),
              .o1     ( l2c1[i]  ),
              .o2     ( l2c2[i]  ),
              .o2     ( l2c2[i]  ),
              .o3     ( l2c3[i]  ),
              .o3     ( l2c3[i]  ),
              .o4     ( l2c4[i]  ),
              .o4     ( l2c4[i]  ),
              .ia     ( lia[i]   ),
              .ia     ( lia[i]   ),
              .arb_r  ( lreq[i]  ),
              .deco   ( lreq[i]  ),
              .rst_n  ( rst_n    ),
              .rst_n  ( rst_n    ),
              .i0     ( li0[i]   ),
              .i0     ( li0[i]   ),
              .i1     ( li1[i]   ),
              .i1     ( li1[i]   ),
              .i2     ( li2[i]   ),
              .i2     ( li2[i]   ),
              .i3     ( li3[i]   ),
              .i3     ( li3[i]   ),
              .i4     ( li4[i]   ),
              .i4     ( li4[i]   ),
              .oa     ( l2ca[i]  ),
              .oa     ( l2ca[i]  ),
              .addrx  ( addrx    ),
              .addrx  ( addrx    ),
              .addry  ( addry    ),
              .addry  ( addry    )
              .arb_ra ( lack[i]  )
 
              );
              );
 
 
         // --------------------- output buffers ---------------- //
         // --------------------- output buffers ---------------- //
         outp_buf #(.DW(DW), .PD(OPD))
         outp_buf #(.DW(DW), .PD(OPD))
         SOB (
         SOB (
Line 234... Line 230...
              .i1     ( c2s1[i]  ),
              .i1     ( c2s1[i]  ),
              .i2     ( c2s2[i]  ),
              .i2     ( c2s2[i]  ),
              .i3     ( c2s3[i]  ),
              .i3     ( c2s3[i]  ),
              .i4     ( c2s4[i]  ),
              .i4     ( c2s4[i]  ),
              .ia     ( c2sa[i]  ),
              .ia     ( c2sa[i]  ),
 
              .ia4    ( c2sa4[i] ),
              .rst_n  ( rst_n    )
              .rst_n  ( rst_n    )
              );
              );
 
 
         outp_buf #(.DW(DW), .PD(OPD))
         outp_buf #(.DW(DW), .PD(OPD))
         WOB (
         WOB (
Line 251... Line 248...
              .i1     ( c2w1[i]  ),
              .i1     ( c2w1[i]  ),
              .i2     ( c2w2[i]  ),
              .i2     ( c2w2[i]  ),
              .i3     ( c2w3[i]  ),
              .i3     ( c2w3[i]  ),
              .i4     ( c2w4[i]  ),
              .i4     ( c2w4[i]  ),
              .ia     ( c2wa[i]  ),
              .ia     ( c2wa[i]  ),
 
              .ia4    ( c2wa4[i] ),
              .rst_n  ( rst_n    )
              .rst_n  ( rst_n    )
              );
              );
 
 
         outp_buf #(.DW(DW), .PD(OPD))
         outp_buf #(.DW(DW), .PD(OPD))
         NOB (
         NOB (
Line 268... Line 266...
              .i1     ( c2n1[i]  ),
              .i1     ( c2n1[i]  ),
              .i2     ( c2n2[i]  ),
              .i2     ( c2n2[i]  ),
              .i3     ( c2n3[i]  ),
              .i3     ( c2n3[i]  ),
              .i4     ( c2n4[i]  ),
              .i4     ( c2n4[i]  ),
              .ia     ( c2na[i]  ),
              .ia     ( c2na[i]  ),
 
              .ia4    ( c2na4[i] ),
              .rst_n  ( rst_n    )
              .rst_n  ( rst_n    )
              );
              );
 
 
         outp_buf #(.DW(DW), .PD(OPD))
         outp_buf #(.DW(DW), .PD(OPD))
         EOB (
         EOB (
Line 285... Line 284...
              .i1     ( c2e1[i]  ),
              .i1     ( c2e1[i]  ),
              .i2     ( c2e2[i]  ),
              .i2     ( c2e2[i]  ),
              .i3     ( c2e3[i]  ),
              .i3     ( c2e3[i]  ),
              .i4     ( c2e4[i]  ),
              .i4     ( c2e4[i]  ),
              .ia     ( c2ea[i]  ),
              .ia     ( c2ea[i]  ),
 
              .ia4    ( c2ea4[i] ),
              .rst_n  ( rst_n    )
              .rst_n  ( rst_n    )
              );
              );
 
 
         outp_buf #(.DW(DW), .PD(OPD))
         outp_buf #(.DW(DW), .PD(OPD))
         LOB (
         LOB (
Line 302... Line 302...
              .i1     ( c2l1[i]  ),
              .i1     ( c2l1[i]  ),
              .i2     ( c2l2[i]  ),
              .i2     ( c2l2[i]  ),
              .i3     ( c2l3[i]  ),
              .i3     ( c2l3[i]  ),
              .i4     ( c2l4[i]  ),
              .i4     ( c2l4[i]  ),
              .ia     ( c2la[i]  ),
              .ia     ( c2la[i]  ),
 
              .ia4    ( c2la4[i] ),
              .rst_n  ( rst_n    )
              .rst_n  ( rst_n    )
              );
              );
 
 
      end // block: SC
      end // block: SC
   endgenerate
   endgenerate
 
 
`ifdef ENABLE_CLOS
`ifdef ENABLE_CLOS
   dclos #(.MN(VCN), .NN(VCN), .DW(DW))
   clos #(.MN(VCN), .NN(VCN), .DW(DW))
   CB (
   CB (
       .so0     ( c2s0      ),
       .so0     ( c2s0      ),
       .so1     ( c2s1      ),
       .so1     ( c2s1      ),
       .so2     ( c2s2      ),
       .so2     ( c2s2      ),
       .so3     ( c2s3      ),
       .so3     ( c2s3      ),
       .so4     ( c2s4      ),
       .so4     ( c2s4      ),
       .soa     ( c2sa      ),
       .soa     ( c2sa      ),
 
       .soa4    ( c2sa4     ),
       .wo0     ( c2w0      ),
       .wo0     ( c2w0      ),
       .wo1     ( c2w1      ),
       .wo1     ( c2w1      ),
       .wo2     ( c2w2      ),
       .wo2     ( c2w2      ),
       .wo3     ( c2w3      ),
       .wo3     ( c2w3      ),
       .wo4     ( c2w4      ),
       .wo4     ( c2w4      ),
       .woa     ( c2wa      ),
       .woa     ( c2wa      ),
 
       .woa4    ( c2wa4     ),
       .no0     ( c2n0      ),
       .no0     ( c2n0      ),
       .no1     ( c2n1      ),
       .no1     ( c2n1      ),
       .no2     ( c2n2      ),
       .no2     ( c2n2      ),
       .no3     ( c2n3      ),
       .no3     ( c2n3      ),
       .no4     ( c2n4      ),
       .no4     ( c2n4      ),
       .noa     ( c2na      ),
       .noa     ( c2na      ),
 
       .noa4    ( c2na4     ),
       .eo0     ( c2e0      ),
       .eo0     ( c2e0      ),
       .eo1     ( c2e1      ),
       .eo1     ( c2e1      ),
       .eo2     ( c2e2      ),
       .eo2     ( c2e2      ),
       .eo3     ( c2e3      ),
       .eo3     ( c2e3      ),
       .eo4     ( c2e4      ),
       .eo4     ( c2e4      ),
       .eoa     ( c2ea      ),
       .eoa     ( c2ea      ),
 
       .eoa4    ( c2ea4     ),
       .lo0     ( c2l0      ),
       .lo0     ( c2l0      ),
       .lo1     ( c2l1      ),
       .lo1     ( c2l1      ),
       .lo2     ( c2l2      ),
       .lo2     ( c2l2      ),
       .lo3     ( c2l3      ),
       .lo3     ( c2l3      ),
       .lo4     ( c2l4      ),
       .lo4     ( c2l4      ),
       .loa     ( c2la      ),
       .loa     ( c2la      ),
 
       .loa4    ( c2la4     ),
       .si0     ( s2c0      ),
       .si0     ( s2c0      ),
       .si1     ( s2c1      ),
       .si1     ( s2c1      ),
       .si2     ( s2c2      ),
       .si2     ( s2c2      ),
       .si3     ( s2c3      ),
       .si3     ( s2c3      ),
       .si4     ( s2c4      ),
       .si4     ( s2c4      ),
Line 371... Line 377...
       .li1     ( l2c1      ),
       .li1     ( l2c1      ),
       .li2     ( l2c2      ),
       .li2     ( l2c2      ),
       .li3     ( l2c3      ),
       .li3     ( l2c3      ),
       .li4     ( l2c4      ),
       .li4     ( l2c4      ),
       .lia     ( l2ca      ),
       .lia     ( l2ca      ),
       .imcfg   ( imcfg     ),
 
       .wcfg    ( wcfg      ),
 
       .ecfg    ( ecfg      ),
 
       .lcfg    ( lcfg      ),
 
       .scfg    ( scfg      ),
 
       .ncfg    ( ncfg      )
 
       ) ;
 
 
 
   clos_sch #(.M(VCN), .N(VCN))
 
   ALLOC (
 
          .sack  ( sack    ),
 
          .wack  ( wack    ),
 
          .nack  ( nack    ),
 
          .eack  ( eack    ),
 
          .lack  ( lack    ),
 
          .imc   ( imcfg   ),
 
          .scfg  ( scfg    ),
 
          .ncfg  ( ncfg    ),
 
          .wcfg  ( wcfg    ),
 
          .ecfg  ( ecfg    ),
 
          .lcfg  ( lcfg    ),
 
          .sreq  ( sreq    ),
 
          .nreq  ( nreq    ),
 
          .lreq  ( lreq    ),
 
          .wreq  ( wreq    ),
 
          .ereq  ( ereq    ),
 
          .rst_n ( rst_n   )
          .rst_n ( rst_n   )
          );
          );
 
 
`else  // Crossbar based SDM
`else  // Crossbar based SDM
 
 
   dcb_xy #(.VCN(VCN), .VCW(DW))
   dcb_xy #(.VCN(VCN), .VCW(DW))
   CB (
   CB (
       .so0     ( c2s0      ),
       .so0     ( c2s0      ),

powered by: WebSVN 2.1.0

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