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

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [branches/] [clos_opt/] [common/] [src/] [dclos.v] - Diff between revs 57 and 62

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

Rev 57 Rev 62
Line 14... Line 14...
 
 
 History:
 History:
 17/07/2010  Initial version. <wsong83@gmail.com>
 17/07/2010  Initial version. <wsong83@gmail.com>
 20/09/2010  Supporting channel slicing and SDM using macro difinitions. <wsong83@gmail.com>
 20/09/2010  Supporting channel slicing and SDM using macro difinitions. <wsong83@gmail.com>
 23/05/2011  Clean up for opensource. <wsong83@gmail.com>
 23/05/2011  Clean up for opensource. <wsong83@gmail.com>
 
 21/06/2011  Prepare to support buffered Clos. <wsong83@gmail.com>
 
 
*/
*/
 
 
// the router structure definitions
// the router structure definitions
`include "define.v"
`include "define.v"
 
 
module dclos (/*AUTOARG*/
module dclos (
   // Outputs
   // Outputs
   so0, so1, so2, so3, wo0, wo1, wo2, wo3, no0, no1, no2, no3, eo0,
   so0, so1, so2, so3, wo0, wo1, wo2, wo3, no0, no1, no2, no3, eo0,
   eo1, eo2, eo3, lo0, lo1, lo2, lo3, so4, wo4, no4, eo4, lo4, sia,
   eo1, eo2, eo3, lo0, lo1, lo2, lo3, so4, wo4, no4, eo4, lo4, sia,
   wia, nia, eia, lia,
   wia, nia, eia, lia,
   // Inputs
   // Inputs
   si0, si1, si2, si3, wi0, wi1, wi2, wi3, ni0, ni1, ni2, ni3, ei0,
   si0, si1, si2, si3, wi0, wi1, wi2, wi3, ni0, ni1, ni2, ni3, ei0,
   ei1, ei2, ei3, li0, li1, li2, li3, si4, wi4, ni4, ei4, li4, soa,
   ei1, ei2, ei3, li0, li1, li2, li3, si4, wi4, ni4, ei4, li4, soa,
   woa, noa, eoa, loa, imcfg, scfg, ncfg, wcfg, ecfg, lcfg
   woa, noa, eoa, loa, imcfg, scfg, ncfg, wcfg, ecfg, lcfg
 
`ifdef ENABLE_BUFFERED_CLOS
 
   , soa4, woa4, noa4, eoa4, loa4
 
`endif
   );
   );
 
 
   parameter MN = 2;            // number of CMs
   parameter MN = 2;            // number of CMs
   parameter NN = 2;            // number of ports in an IM or OM, equ. to number of virtual circuits
   parameter NN = 2;            // number of ports in an IM or OM, equ. to number of virtual circuits
   parameter DW = 8;            // datawidth of a single virtual circuit/port
   parameter DW = 8;            // datawidth of a single virtual circuit/port
Line 53... Line 57...
`ifdef ENABLE_CHANNEL_SLICING
`ifdef ENABLE_CHANNEL_SLICING
   input [NN-1:0][SCN-1:0]     si4, wi4, ni4, ei4, li4;
   input [NN-1:0][SCN-1:0]     si4, wi4, ni4, ei4, li4;
   output [NN-1:0][SCN-1:0]    so4, wo4, no4, eo4, lo4;
   output [NN-1:0][SCN-1:0]    so4, wo4, no4, eo4, lo4;
   output [NN-1:0][SCN-1:0]    sia, wia, nia, eia, lia;
   output [NN-1:0][SCN-1:0]    sia, wia, nia, eia, lia;
   input [NN-1:0][SCN-1:0]     soa, woa, noa, eoa, loa;
   input [NN-1:0][SCN-1:0]     soa, woa, noa, eoa, loa;
 
 `ifdef ENABLE_BUFFERED_CLOS
 
   input [NN-1:0][SCN-1:0]     soa4, woa4, noa4, eoa4, loa4; // the eof ack from output buffers
 
 `endif
`else
`else
   input [NN-1:0]               si4, wi4, ni4, ei4, li4;
   input [NN-1:0]               si4, wi4, ni4, ei4, li4;
   output [NN-1:0]              so4, wo4, no4, eo4, lo4;
   output [NN-1:0]              so4, wo4, no4, eo4, lo4;
   output [NN-1:0]              sia, wia, nia, eia, lia;
   output [NN-1:0]              sia, wia, nia, eia, lia;
   input [NN-1:0]               soa, woa, noa, eoa, loa;
   input [NN-1:0]               soa, woa, noa, eoa, loa;
 
 `ifdef ENABLE_BUFFERED_CLOS
 
   input [NN-1:0]               soa4, woa4, noa4, eoa4, loa4; // the eof ack from output buffers
 
 `endif
`endif // !`ifdef ENABLE_CHANNEL_SLICING
`endif // !`ifdef ENABLE_CHANNEL_SLICING
 
 
   input [4:0][MN-1:0][NN-1:0] imcfg; // configuration for IMs
   input [4:0][MN-1:0][NN-1:0] imcfg; // configuration for IMs
   // configuration for CMs
   // configuration for CMs
   input [MN-1:0][1:0]           scfg, ncfg;
   input [MN-1:0][1:0]           scfg, ncfg;
Line 75... Line 85...
   wire [MN-1:0][SCN-1:0]      imoe0, imoe1, imoe2, imoe3;
   wire [MN-1:0][SCN-1:0]      imoe0, imoe1, imoe2, imoe3;
   wire [MN-1:0][SCN-1:0]      imol0, imol1, imol2, imol3;
   wire [MN-1:0][SCN-1:0]      imol0, imol1, imol2, imol3;
`ifdef ENABLE_CHANNEL_SLICING
`ifdef ENABLE_CHANNEL_SLICING
   wire [MN-1:0][SCN-1:0]      imos4, imow4, imon4, imoe4, imol4;
   wire [MN-1:0][SCN-1:0]      imos4, imow4, imon4, imoe4, imol4;
   wire [MN-1:0][SCN-1:0]      imosa, imowa, imona, imoea, imola;
   wire [MN-1:0][SCN-1:0]      imosa, imowa, imona, imoea, imola;
 
 `ifdef ENABLE_BUFFERED_CLOS
 
   wire [MN-1:0][SCN-1:0]      imosa4, imowa4, imona4, imoea4, imola4;
 
 `endif
`else
`else
   wire [MN-1:0]                imos4, imow4, imon4, imoe4, imol4;
   wire [MN-1:0]                imos4, imow4, imon4, imoe4, imol4;
   wire [MN-1:0]                imosa, imowa, imona, imoea, imola;
   wire [MN-1:0]                imosa, imowa, imona, imoea, imola;
 
 `ifdef ENABLE_BUFFERED_CLOS
 
   wire [MN-1:0]                imosa4, imowa4, imona4, imoea4, imola4;
 
 `endif
`endif
`endif
 
 
   // input of CMs
   // input of CMs
   wire [MN-1:0][4:0][SCN-1:0] cmi0, cmi1, cmi2, cmi3;
   wire [MN-1:0][4:0][SCN-1:0] cmi0, cmi1, cmi2, cmi3;
`ifdef ENABLE_CHANNEL_SLICING
`ifdef ENABLE_CHANNEL_SLICING
Line 92... Line 108...
 
 
   // output of CMs
   // output of CMs
   wire [MN-1:0][4:0][SCN-1:0] cmo0, cmo1, cmo2, cmo3;
   wire [MN-1:0][4:0][SCN-1:0] cmo0, cmo1, cmo2, cmo3;
`ifdef ENABLE_CHANNEL_SLICING
`ifdef ENABLE_CHANNEL_SLICING
   wire [MN-1:0][4:0][SCN-1:0] cmo4, cmoa;
   wire [MN-1:0][4:0][SCN-1:0] cmo4, cmoa;
 
 `ifdef ENABLE_BUFFERED_CLOS
 
   wire [MN-1:0][4:0][SCN-1:0] cmoa4;
 
 `endif
`else
`else
   wire [MN-1:0][4:0]            cmo4, cmoa;
   wire [MN-1:0][4:0]            cmo4, cmoa;
 
 `ifdef ENABLE_BUFFERED_CLOS
 
   wire [MN-1:0][4:0]            cmoa4;
 
 `endif
`endif
`endif
 
 
   genvar                      i,j,k;
   genvar                      i,j,k;
 
 
   dcb #(.NN(NN), .MN(MN), .DW(DW))
   dcb #(.NN(NN), .MN(MN), .DW(DW))

powered by: WebSVN 2.1.0

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