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/] [inpbuf.v] - Diff between revs 42 and 45

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

Rev 42 Rev 45
Line 22... Line 22...
module inpbuf (/*AUTOARG*/
module inpbuf (/*AUTOARG*/
   // Outputs
   // Outputs
   dia, cor, do0, do1, do2, do3, dot, dortg, vcr, swr,
   dia, cor, do0, do1, do2, do3, dot, dortg, vcr, swr,
   // Inputs
   // Inputs
   di0, di1, di2, di3, dit, divc, coa, doa, vcra, swrt, addrx, addry,
   di0, di1, di2, di3, dit, divc, coa, doa, vcra, swrt, addrx, addry,
   rstn
   rst_n
   );
   );
 
 
   parameter DW = 32;           // data width
   parameter DW = 32;           // data width
   parameter VCN = 2;           // VC number
   parameter VCN = 2;           // VC number
   parameter DIR = 0;           // 0-4 south, west, north, east, local
   parameter DIR = 0;           // 0-4 south, west, north, east, local
Line 62... Line 62...
   input [VCN-1:0][SN-1:0]  swrt;
   input [VCN-1:0][SN-1:0]  swrt;
 
 
   // local addresses
   // local addresses
   input [7:0]               addrx, addry;
   input [7:0]               addrx, addry;
 
 
   input                    rstn;
   input                    rst_n;
 
 
   //-----------------------------                  
   //-----------------------------                  
   // VC_MUX
   // VC_MUX
   wire                     ivma, rua;
   wire                     ivma, rua;
   wire [SCN-1:0]            di0m, di1m, di2m, di3m;
   wire [SCN-1:0]            di0m, di1m, di2m, di3m;
Line 115... Line 115...
         );
         );
 
 
   //c2 IVMA (.a0(ivma), .a1(rua), .q(dia)); divc is not checked
   //c2 IVMA (.a0(ivma), .a1(rua), .q(dia)); divc is not checked
   ctree #(.DW(3)) ACKT(.ci({ivma, rua, (|divcm)}), .co(dia));
   ctree #(.DW(3)) ACKT(.ci({ivma, rua, (|divcm)}), .co(dia));
 
 
   assign di0m = rstn ? di0 : 0;
   assign di0m = rst_n ? di0 : 0;
   assign di1m = rstn ? di1 : 0;
   assign di1m = rst_n ? di1 : 0;
   assign di2m = rstn ? di2 : 0;
   assign di2m = rst_n ? di2 : 0;
   assign di3m = rstn ? di3 : 0;
   assign di3m = rst_n ? di3 : 0;
   assign ditm = rstn ? dit : 0;
   assign ditm = rst_n ? dit : 0;
   assign divcm = rstn ? divc : 0;
   assign divcm = rst_n ? divc : 0;
 
 
   //---------------------------------------------
   //---------------------------------------------
   // the VC buffers
   // the VC buffers
   generate
   generate
      for(gbd=0; gbd<PD*2-2; gbd++) begin:BFN
      for(gbd=0; gbd<PD*2-2; gbd++) begin:BFN
Line 141... Line 141...
                   .i1 ( vcd1[gbd][gvc][gsub]   ),
                   .i1 ( vcd1[gbd][gvc][gsub]   ),
                   .i2 ( vcd2[gbd][gvc][gsub]   ),
                   .i2 ( vcd2[gbd][gvc][gsub]   ),
                   .i3 ( vcd3[gbd][gvc][gsub]   ),
                   .i3 ( vcd3[gbd][gvc][gsub]   ),
                   .oa ( vcdadn[gbd+1][gvc][gsub] )
                   .oa ( vcdadn[gbd+1][gvc][gsub] )
                   );
                   );
               assign vcdadn[gbd+1][gvc][gsub] = (~vcdad[gbd+1][gvc][gsub])&rstn;
               assign vcdadn[gbd+1][gvc][gsub] = (~vcdad[gbd+1][gvc][gsub])&rst_n;
            end // block: SC
            end // block: SC
 
 
            pipen #(.DW(FT))
            pipen #(.DW(FT))
            TP (
            TP (
                .d_in    ( vcdt[gbd][gvc]     ),
                .d_in    ( vcdt[gbd][gvc]     ),
                .d_in_a  ( vcdat[gbd][gvc]    ),
                .d_in_a  ( vcdat[gbd][gvc]    ),
                .d_out   ( vcdt[gbd+1][gvc]   ),
                .d_out   ( vcdt[gbd+1][gvc]   ),
                .d_out_a ( vcdatn[gbd+1][gvc]  )
                .d_out_a ( vcdatn[gbd+1][gvc]  )
                );
                );
            assign vcdatn[gbd+1][gvc] = (~vcdat[gbd+1][gvc])&rstn;
            assign vcdatn[gbd+1][gvc] = (~vcdat[gbd+1][gvc])&rst_n;
 
 
         end // block: V
         end // block: V
      end // block: BFN
      end // block: BFN
 
 
      for(gvc=0; gvc<VCN; gvc++) begin:BFNV
      for(gvc=0; gvc<VCN; gvc++) begin:BFNV
Line 186... Line 186...
                   .i1 ( vcd1[gbd][gvc][gsub]     ),
                   .i1 ( vcd1[gbd][gvc][gsub]     ),
                   .i2 ( vcd2[gbd][gvc][gsub]     ),
                   .i2 ( vcd2[gbd][gvc][gsub]     ),
                   .i3 ( vcd3[gbd][gvc][gsub]     ),
                   .i3 ( vcd3[gbd][gvc][gsub]     ),
                   .oa ( vcdadn[gbd+1][gvc][gsub] )
                   .oa ( vcdadn[gbd+1][gvc][gsub] )
                   );
                   );
               assign vcdadn[gbd+1][gvc][gsub] = (~vcdad[gbd+1][gvc][gsub])&rstn;
               assign vcdadn[gbd+1][gvc][gsub] = (~vcdad[gbd+1][gvc][gsub])&rst_n;
            end // block: SC
            end // block: SC
 
 
            pipen #(.DW(FT))
            pipen #(.DW(FT))
            TP (
            TP (
                .d_in    ( vcdt[gbd][gvc]     ),
                .d_in    ( vcdt[gbd][gvc]     ),
                .d_in_a  ( vcdat[gbd][gvc]    ),
                .d_in_a  ( vcdat[gbd][gvc]    ),
                .d_out   ( vcdt[gbd+1][gvc]   ),
                .d_out   ( vcdt[gbd+1][gvc]   ),
                .d_out_a ( vcdatn[gbd+1][gvc]  )
                .d_out_a ( vcdatn[gbd+1][gvc]  )
                );
                );
 
 
            assign vcdatn[gbd+1][gvc] = (~vcdat[gbd+1][gvc])&rstn;
            assign vcdatn[gbd+1][gvc] = (~vcdat[gbd+1][gvc])&rst_n;
 
 
            pipen #(.DW(2))
            pipen #(.DW(2))
            CTP (
            CTP (
                .d_in    ( vcft[gbd][gvc]     ),
                .d_in    ( vcft[gbd][gvc]     ),
                .d_in_a  ( vcfta[gbd][gvc]    ),
                .d_in_a  ( vcfta[gbd][gvc]    ),
                .d_out   ( vcft[gbd+1][gvc]   ),
                .d_out   ( vcft[gbd+1][gvc]   ),
                .d_out_a ( vcftan[gbd+1][gvc] )
                .d_out_a ( vcftan[gbd+1][gvc] )
                );
                );
 
 
            assign vcftan[gbd+1][gvc] = (~vcfta[gbd+1][gvc])&rstn;
            assign vcftan[gbd+1][gvc] = (~vcfta[gbd+1][gvc])&rst_n;
         end // block: V
         end // block: V
      end // block: BFL2
      end // block: BFL2
 
 
      for(gvc=0; gvc<VCN; gvc++) begin:BFL2V
      for(gvc=0; gvc<VCN; gvc++) begin:BFL2V
         ctree #(.DW(SCN+2)) ACKT(.ci({vcfta[PD*2-2][gvc], vcdat[PD*2-2][gvc], vcdad[PD*2-2][gvc]}), .co(vcda[0][gvc]));
         ctree #(.DW(SCN+2)) ACKT(.ci({vcfta[PD*2-2][gvc], vcdat[PD*2-2][gvc], vcdad[PD*2-2][gvc]}), .co(vcda[0][gvc]));
Line 231... Line 231...
         pipen #(.DW(SN))
         pipen #(.DW(SN))
         RP (
         RP (
             .d_in     ( swrt[gvc]          ),
             .d_in     ( swrt[gvc]          ),
             .d_in_a   ( swa[gvc]           ),
             .d_in_a   ( swa[gvc]           ),
             .d_out    ( rtg[gvc]           ),
             .d_out    ( rtg[gvc]           ),
             .d_out_a  ( (~vcda[1][gvc])&rstn   )
             .d_out_a  ( (~vcda[1][gvc])&rst_n   )
             );
             );
      end
      end
   endgenerate
   endgenerate
 
 
   generate
   generate
      for(gvc=0; gvc<VCN; gvc++) begin:LPS
      for(gvc=0; gvc<VCN; gvc++) begin:LPS
 
 
         // credit control
         // credit control
         dc2 FCP (.q(cor[gvc]), .d(|rtg[gvc]), .a((~coa[gvc])&rstn));
         dc2 FCP (.q(cor[gvc]), .d(|rtg[gvc]), .a((~coa[gvc])&rst_n));
 
 
         // output name conversation
         // output name conversation
         assign do0[gvc] = vcd0[PD*2][gvc];
         assign do0[gvc] = vcd0[PD*2][gvc];
         assign do1[gvc] = vcd1[PD*2][gvc];
         assign do1[gvc] = vcd1[PD*2][gvc];
         assign do2[gvc] = vcd2[PD*2][gvc];
         assign do2[gvc] = vcd2[PD*2][gvc];
Line 261... Line 261...
   // routing unit
   // routing unit
   rtu #(.VCN(VCN), .DIR(DIR), .SN(SN), .PD(2))
   rtu #(.VCN(VCN), .DIR(DIR), .SN(SN), .PD(2))
   RTC (
   RTC (
        .dia   ( rua       ),
        .dia   ( rua       ),
        .dort  ( vcr       ),
        .dort  ( vcr       ),
        .rstn  ( rstn      ),
        .rst_n ( rst_n     ),
        .di0   ( di0m[3:0] ),
        .di0   ( di0m[3:0] ),
        .di1   ( di1m[3:0] ),
        .di1   ( di1m[3:0] ),
        .di2   ( di2m[3:0] ),
        .di2   ( di2m[3:0] ),
        .di3   ( di3m[3:0] ),
        .di3   ( di3m[3:0] ),
        .dit   ( ditm      ),
        .dit   ( ditm      ),

powered by: WebSVN 2.1.0

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