OpenCores
URL https://opencores.org/ocsvn/an-fpga-implementation-of-low-latency-noc-based-mpsoc/an-fpga-implementation-of-low-latency-noc-based-mpsoc/trunk

Subversion Repositories an-fpga-implementation-of-low-latency-noc-based-mpsoc

[/] [an-fpga-implementation-of-low-latency-noc-based-mpsoc/] [trunk/] [mpsoc/] [rtl/] [src_noc/] [router_bypass.sv] - Diff between revs 54 and 56

Show entire file | Details | Blame | View Log

Rev 54 Rev 56
Line 131... Line 131...
 
 
endmodule
endmodule
 
 
 
 
 
 
 
module header_flit_info #(
 
        parameter NOC_ID = 0,
 
 
module header_flit_info
 
        import pronoc_pkg::*;
 
#(
 
        parameter DATA_w = 0
        parameter DATA_w = 0
)(
)(
        flit,
        flit,
        hdr_flit,
        hdr_flit,
        data_o
        data_o
);
);
 
 
 
        `NOC_CONF
 
 
        localparam
        localparam
        Dw = (DATA_w==0)? 1 : DATA_w;
        Dw = (DATA_w==0)? 1 : DATA_w;
 
 
        input flit_t flit;
        input flit_t flit;
        output hdr_flit_t hdr_flit;
        output hdr_flit_t hdr_flit;
Line 202... Line 201...
endmodule
endmodule
 
 
//synthesis translate_off
//synthesis translate_off
//synopsys  translate_off
//synopsys  translate_off
 
 
module smart_chanel_check
module smart_chanel_check #(
                import pronoc_pkg::*;
        parameter NOC_ID=0
        (
) (
                flit_chanel,
                flit_chanel,
                smart_chanel,
                smart_chanel,
                reset,
                reset,
                clk
                clk
        );
        );
 
 
 
        `NOC_CONF
 
 
        input flit_chanel_t  flit_chanel;
        input flit_chanel_t  flit_chanel;
        input smart_chanel_t   smart_chanel;
        input smart_chanel_t   smart_chanel;
        input reset,clk;
        input reset,clk;
 
 
        smart_chanel_t   smart_chanel_delay;
        smart_chanel_t   smart_chanel_delay;
        always @(posedge clk) smart_chanel_delay<=smart_chanel;
        always @(posedge clk) smart_chanel_delay<=smart_chanel;
 
 
        hdr_flit_t hdr_flit;
        hdr_flit_t hdr_flit;
        header_flit_info extract(
        header_flit_info #(
 
                .NOC_ID (NOC_ID)
 
        ) extract (
                        .flit(flit_chanel.flit),
                        .flit(flit_chanel.flit),
                        .hdr_flit(hdr_flit),
                        .hdr_flit(hdr_flit),
                        .data_o()
                        .data_o()
                );
                );
 
 
Line 249... Line 252...
 
 
//synopsys  translate_on
//synopsys  translate_on
//synthesis translate_on
//synthesis translate_on
 
 
 
 
 
module smart_forward_ivc_info #(
 
        parameter NOC_ID=0,
 
 
module smart_forward_ivc_info
 
        import pronoc_pkg::*;
 
        #(
 
        parameter P=5
        parameter P=5
)(
)(
                ivc_info,
                ivc_info,
                iport_info,
                iport_info,
                oport_info,
                oport_info,
                smart_chanel,
                smart_chanel,
                ovc_locally_requested,
                ovc_locally_requested,
                reset,clk
                reset,clk
);
);
 
 
 
        `NOC_CONF
 
 
        //ivc info
        //ivc info
        input reset,clk;
        input reset,clk;
        input  ivc_info_t       ivc_info    [P-1 : 0][V-1 : 0];
        input  ivc_info_t       ivc_info    [P-1 : 0][V-1 : 0];
        input  iport_info_t iport_info  [P-1 : 0];
        input  iport_info_t iport_info  [P-1 : 0];
Line 404... Line 403...
endmodule
endmodule
 
 
 
 
 
 
 
 
module smart_bypass_chanels
module smart_bypass_chanels #(
        import pronoc_pkg::*;
        parameter NOC_ID=0,
#(
 
        parameter P=5
        parameter P=5
)(
)(
        ivc_info,
        ivc_info,
        iport_info,
        iport_info,
        oport_info,
        oport_info,
Line 418... Line 416...
        smart_chanel_in,
        smart_chanel_in,
        smart_chanel_out,
        smart_chanel_out,
        smart_req,
        smart_req,
        reset,
        reset,
        clk
        clk
 
 
);
);
 
 
 
        `NOC_CONF
 
 
        input reset,clk;
        input reset,clk;
        input smart_chanel_t smart_chanel_new  [P-1 : 0];
        input smart_chanel_t smart_chanel_new  [P-1 : 0];
        input smart_chanel_t smart_chanel_in   [P-1 : 0];
        input smart_chanel_t smart_chanel_in   [P-1 : 0];
        input ivc_info_t   ivc_info    [P-1 : 0][V-1 : 0];
        input ivc_info_t   ivc_info    [P-1 : 0][V-1 : 0];
        input iport_info_t iport_info  [P-1 : 0];
        input iport_info_t iport_info  [P-1 : 0];
Line 549... Line 548...
endmodule
endmodule
 
 
 
 
 
 
 
 
module smart_validity_check_per_ivc
module smart_validity_check_per_ivc  #(
        import pronoc_pkg::*;
        parameter NOC_ID=0,
#(
 
        parameter IVC_NUM = 0
        parameter IVC_NUM = 0
)(
)(
        reset                  ,
        reset                  ,
        clk                    ,
        clk                    ,
        //smart channel
        //smart channel
Line 588... Line 586...
        smart_ivc_num_getting_ovc_grant_o,
        smart_ivc_num_getting_ovc_grant_o,
        smart_ivc_reset_o,
        smart_ivc_reset_o,
        smart_ivc_granted_ovc_num_o
        smart_ivc_granted_ovc_num_o
);
);
 
 
 
 
 
        `NOC_CONF
 
 
 
 
input reset, clk;
input reset, clk;
//smart channel
//smart channel
input goes_straight                ,
input goes_straight                ,
        smart_requests_i         ,
        smart_requests_i         ,
        smart_ivc_i              ,
        smart_ivc_i              ,
Line 693... Line 695...
 
 
endmodule
endmodule
 
 
 
 
 
 
module smart_allocator_per_iport
module smart_allocator_per_iport # (
        import pronoc_pkg::*;
        parameter NOC_ID=0,
#(
 
        parameter P=5,
        parameter P=5,
        parameter SW_LOC=0,
        parameter SW_LOC=0,
        parameter SS_PORT_LOC=1
        parameter SS_PORT_LOC=1
        )(
        )(
        //general
        //general
Line 730... Line 731...
        smart_hdr_flit_req_o,
        smart_hdr_flit_req_o,
        smart_ivc_granted_ovc_num_o,
        smart_ivc_granted_ovc_num_o,
        smart_ivc_single_flit_pck_o,
        smart_ivc_single_flit_pck_o,
        smart_ovc_single_flit_pck_o
        smart_ovc_single_flit_pck_o
);
);
 
 
 
        `NOC_CONF
 
 
        //general
        //general
        input clk, reset;
        input clk, reset;
        input [RAw-1   :0]  current_r_addr_i;
        input [RAw-1   :0]  current_r_addr_i;
        input [RAw-1:  0]  neighbors_r_addr_i [P-1 : 0];
        input [RAw-1:  0]  neighbors_r_addr_i [P-1 : 0];
        //channels
        //channels
Line 774... Line 778...
                (TOPOLOGY =="MESH" || TOPOLOGY=="TORUS" || TOPOLOGY == "FMESH")? (SW_LOC == 0 || SW_LOC>4) : 0;
                (TOPOLOGY =="MESH" || TOPOLOGY=="TORUS" || TOPOLOGY == "FMESH")? (SW_LOC == 0 || SW_LOC>4) : 0;
        /* verilator lint_on WIDTH */
        /* verilator lint_on WIDTH */
 
 
        // does the route computation for the current router
        // does the route computation for the current router
        conventional_routing #(
        conventional_routing #(
 
                .NOC_ID          (NOC_ID),
                .TOPOLOGY        (TOPOLOGY       ),
                .TOPOLOGY        (TOPOLOGY       ),
                .ROUTE_NAME      (ROUTE_NAME     ),
                .ROUTE_NAME      (ROUTE_NAME     ),
                .ROUTE_TYPE      (ROUTE_TYPE     ),
                .ROUTE_TYPE      (ROUTE_TYPE     ),
                .T1              (T1             ),
                .T1              (T1             ),
                .T2              (T2             ),
                .T2              (T2             ),
Line 808... Line 813...
                .goes_straight_o  (goes_straight)
                .goes_straight_o  (goes_straight)
        );
        );
 
 
        //look ahead routing. take straight next router address as input
        //look ahead routing. take straight next router address as input
        conventional_routing #(
        conventional_routing #(
 
                        .NOC_ID(NOC_ID),
                        .TOPOLOGY        (TOPOLOGY       ),
                        .TOPOLOGY        (TOPOLOGY       ),
                        .ROUTE_NAME      (ROUTE_NAME     ),
                        .ROUTE_NAME      (ROUTE_NAME     ),
                        .ROUTE_TYPE      (ROUTE_TYPE     ),
                        .ROUTE_TYPE      (ROUTE_TYPE     ),
                        .T1              (T1             ),
                        .T1              (T1             ),
                        .T2              (T2             ),
                        .T2              (T2             ),
Line 841... Line 847...
 
 
        genvar i,j;
        genvar i,j;
        generate
        generate
        for (i=0;i
        for (i=0;i
                smart_validity_check_per_ivc #(
                smart_validity_check_per_ivc #(
 
                        .NOC_ID(NOC_ID),
                                .IVC_NUM(i)
                                .IVC_NUM(i)
                )       validity_check (
                )       validity_check (
                        .reset                       (reset                             ),
                        .reset                       (reset                             ),
                        .clk                         (clk                               ),
                        .clk                         (clk                               ),
                        .goes_straight                           (goes_straight),
                        .goes_straight                           (goes_straight),

powered by: WebSVN 2.1.0

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