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

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [branches/] [init/] [vc/] [src/] [outpbuf.v] - Diff between revs 42 and 45

Show entire file | Details | Blame | View Log

Rev 42 Rev 45
Line 21... Line 21...
 
 
module outpbuf (/*AUTOARG*/
module outpbuf (/*AUTOARG*/
   // Outputs
   // Outputs
   dia, do0, do1, do2, do3, dot, dovc, afc, vca,
   dia, do0, do1, do2, do3, dot, dovc, afc, vca,
   // Inputs
   // Inputs
   di0, di1, di2, di3, dit, doa, credit, vcr, rstn
   di0, di1, di2, di3, dit, doa, credit, vcr, rst_n
   );
   );
   parameter DW = 32;           // data width
   parameter DW = 32;           // data width
   parameter VCN = 4;           // VC number
   parameter VCN = 4;           // VC number
   parameter FT = 3;            // flit type, now 3, HOF, BOF, EOF
   parameter FT = 3;            // flit type, now 3, HOF, BOF, EOF
   parameter FCPD = 3;          // the depth of the credit pipeline
   parameter FCPD = 3;          // the depth of the credit pipeline
Line 49... Line 49...
   // vc requests in
   // vc requests in
   input [VCN-1:0]  vcr;
   input [VCN-1:0]  vcr;
   output [VCN-1:0] vca;
   output [VCN-1:0] vca;
 
 
   // active-low reset
   // active-low reset
   input            rstn;
   input            rst_n;
 
 
   //--------------------------------------------------------------
   //--------------------------------------------------------------
   wire [VCN-1:0]   vcro, vcg, vcgl, vcrm;
   wire [VCN-1:0]   vcro, vcg, vcgl, vcrm;
   wire [SCN-1:0]   doan, diad;
   wire [SCN-1:0]   doan, diad;
   wire             dian, diavc, diavcn, diat;
   wire             dian, diavc, diavcn, diat;
Line 65... Line 65...
   FCU (
   FCU (
        .afc    ( afc    ),
        .afc    ( afc    ),
        .ro     ( vcro   ),
        .ro     ( vcro   ),
        .credit ( credit ),
        .credit ( credit ),
        .ri     ( vcr    ),
        .ri     ( vcr    ),
        .rst    ( ~rstn  )
        .rst    ( ~rst_n  )
        );
        );
 
 
   // VC arbiter
   // VC arbiter
   mutex_arb #(.wd(VCN)) Sch (.req(vcro), .gnt(vcg));
   mutex_arb #(.wd(VCN)) Sch (.req(vcro), .gnt(vcg));
 
 
Line 77... Line 77...
   generate
   generate
      for(i=0; i<VCN; i++)begin:SCEN
      for(i=0; i<VCN; i++)begin:SCEN
         c2 C (.a0(vcg[i]), .a1(diavcn), .q(vcgl[i]));
         c2 C (.a0(vcg[i]), .a1(diavcn), .q(vcgl[i]));
      end
      end
   endgenerate
   endgenerate
   assign diavcn = (~diavc)&rstn;
   assign diavcn = (~diavc)&rst_n;
 
 
   // output data buffer
   // output data buffer
   generate
   generate
      for(gsub=0; gsub<SCN; gsub++) begin:SC
      for(gsub=0; gsub<SCN; gsub++) begin:SC
         pipe4 #(.DW(2))
         pipe4 #(.DW(2))
Line 95... Line 95...
              .i1 ( di1[gsub]    ),
              .i1 ( di1[gsub]    ),
              .i2 ( di2[gsub]    ),
              .i2 ( di2[gsub]    ),
              .i3 ( di3[gsub]    ),
              .i3 ( di3[gsub]    ),
              .oa ( doan[gsub]   )
              .oa ( doan[gsub]   )
              );
              );
         assign doan[gsub] = (~doa)&rstn;
         assign doan[gsub] = (~doa)&rst_n;
      end // block: SC
      end // block: SC
   endgenerate
   endgenerate
 
 
   pipen #(.DW(FT))
   pipen #(.DW(FT))
   L0T (
   L0T (
        .d_in    ( dit     ),
        .d_in    ( dit     ),
        .d_in_a  ( diat    ),
        .d_in_a  ( diat    ),
        .d_out   ( dot     ),
        .d_out   ( dot     ),
        .d_out_a ( (~doa)&rstn )
        .d_out_a ( (~doa)&rst_n )
        );
        );
 
 
   ctree #(.DW(SCN+2)) ACKT (.ci({diavc,diat, diad}), .co(dia));
   ctree #(.DW(SCN+2)) ACKT (.ci({diavc,diat, diad}), .co(dia));
 
 
   pipen #(.DW(VCN))
   pipen #(.DW(VCN))
   LSV (
   LSV (
        .d_in    ( vcgl       ),
        .d_in    ( vcgl       ),
        .d_in_a  ( diavc      ),
        .d_in_a  ( diavc      ),
        .d_out   ( dovc       ),
        .d_out   ( dovc       ),
        .d_out_a ( (~doa)&rstn )
        .d_out_a ( (~doa)&rst_n )
        );
        );
 
 
   assign vca = dovc;
   assign vca = dovc;
 
 
endmodule // outpbuf
endmodule // outpbuf

powered by: WebSVN 2.1.0

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