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_modelsim/] [testbench_noc.sv] - Diff between revs 54 and 56

Show entire file | Details | Blame | View Log

Rev 54 Rev 56
Line 1... Line 1...
// synthesis translate_off
// synthesis translate_off
`timescale   1ns/1ns
`include "pronoc_def.v"
 
 
`define STND_DEV_EN
`define STND_DEV_EN
 
 
module testbench_noc;
module testbench_noc;
 
        parameter NOC_ID=0;
 
        `NOC_CONF
 
 
        import pronoc_pkg::*;
 
        `define INCLUDE_SIM_PARAM
        `define INCLUDE_SIM_PARAM
        `include "sim_param.sv" //will be generated by ProNoC GUI
        `include "sim_param.sv" //will be generated by ProNoC GUI
        // simulation parameter setting
        // simulation parameter setting
        // injected packet class percentage
        // injected packet class percentage
        localparam
        localparam
Line 35... Line 36...
        end
        end
 
 
 
 
 
 
        initial begin
        initial begin
 
`ifdef ACTIVE_LOW_RESET_MODE
 
        reset = 1'b0;
 
 `else
                reset = 1'b1;
                reset = 1'b1;
 
`endif
 
 
                start = 1'b0;
                start = 1'b0;
                stop  = 1'b0;
                stop  = 1'b0;
                ratio =INJRATIO;
                ratio =INJRATIO;
                #80
                #80
                @(posedge clk) reset = 1'b0;
                @(posedge clk) reset = ~reset;
                #200
                #200
                @(posedge clk) start = 1'b1;
                @(posedge clk) start = 1'b1;
                @(posedge clk) start = 1'b0;
                @(posedge clk) start = 1'b0;
                @(posedge sent_done)
                @(posedge sent_done)
                stop=1;//stop all packet injectprs
                stop=1;//stop all packet injectprs
Line 55... Line 61...
        end
        end
 
 
 
 
        localparam
        localparam
        /* verilator lint_off WIDTH */
        /* verilator lint_off WIDTH */
 
                /* verilator lint_on WIDTH */
 
 
 
 
                DISTw = (TOPOLOGY=="FATTREE" || TOPOLOGY == "TREE") ? $clog2(2*L+1): $clog2(NR+1),
 
                /* verilator lint_on WIDTH */
 
 
 
                Cw      =   (C>1)? $clog2(C): 1,
 
                // NEw     =   log2(NE),
 
 
 
                NEV     =   NE  * V,
 
                NEFw    =   NE  * Fw,
 
                PCK_CNTw=   $clog2(MAX_PCK_NUM+1),
                PCK_CNTw=   $clog2(MAX_PCK_NUM+1),
                CLK_CNTw=   $clog2(MAX_SIM_CLKs+1),
                CLK_CNTw=   $clog2(MAX_SIM_CLKs+1),
                PCK_SIZw=   $clog2(MAX_PCK_SIZ+1),
 
                AVG_PCK_SIZ = (MAX_PACKET_SIZE + MIN_PACKET_SIZE)/2 ;
                AVG_PCK_SIZ = (MAX_PACKET_SIZE + MIN_PACKET_SIZE)/2 ;
 
 
 
 
    typedef struct  {
    typedef struct  {
                logic [PCK_CNTw-1     :0] pck_num;
                logic [PCK_CNTw-1     :0] pck_num;
Line 125... Line 126...
                        reset_st(rsvd_stat_per_class [c]);
                        reset_st(rsvd_stat_per_class [c]);
                end
                end
        end
        end
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        task  reset_st;
        task  reset_st;
                output  statistic_t stat_in;
                output  statistic_t stat_in;
                begin
                begin
                        stat_in.pck_num={PCK_CNTw{1'b0}};
                        stat_in.pck_num={PCK_CNTw{1'b0}};
                        stat_in.flit_num=0;
                        stat_in.flit_num=0;
Line 192... Line 188...
 
 
        integer  rsv_size_array [MAX_PACKET_SIZE - MIN_PACKET_SIZE : 0];
        integer  rsv_size_array [MAX_PACKET_SIZE - MIN_PACKET_SIZE : 0];
 
 
 
 
 
 
        always @(posedge    clk or posedge reset) begin
        always @(`pronoc_clk_reset_edge) begin
                if (reset) begin
                if (`pronoc_reset) begin
                        count_en <=1'b0;
                        count_en <=1'b0;
                end else begin
                end else begin
                        if(start) count_en <=1'b1;
                        if(start) count_en <=1'b1;
                        else if(noc_report) count_en <=1'b0;
                        else if(noc_report) count_en <=1'b0;
                end
                end
        end//always
        end//always
 
 
 
 
        noc_top
        noc_top  #(
                the_noc
                .NOC_ID(NOC_ID)
                (
        ) the_noc (
                        .reset(reset),
                        .reset(reset),
                        .clk(clk),
                        .clk(clk),
                        .chan_in_all(chan_in_all),
                        .chan_in_all(chan_in_all),
                        .chan_out_all(chan_out_all),
                        .chan_out_all(chan_out_all),
                        .router_event(router_event)
                        .router_event(router_event)
                );
                );
 
 
 
 
 
 
        always @ (posedge clk or posedge reset)begin
        always @ (`pronoc_clk_reset_edge)begin
                if          (reset  ) begin clk_counter  <= 0;  end
                if (`pronoc_reset  ) begin clk_counter  <= 0;  end
                else  begin
                else  begin
                        if  (count_en) clk_counter  <= clk_counter+1'b1;
                        if  (count_en) clk_counter  <= clk_counter+1'b1;
 
 
                end
                end
        end
        end
Line 266... Line 262...
 
 
 
 
 
 
 
 
                        traffic_gen_top #(
                        traffic_gen_top #(
 
                                .NOC_ID(NOC_ID),
                                .MAX_RATIO(100),
                                .MAX_RATIO(100),
                                .ENDP_ID(i)
                                .ENDP_ID(i)
                        )
                        )
                        the_traffic_gen
                        the_traffic_gen
                        (
                        (
Line 336... Line 333...
 
 
 
 
 
 
 
 
                        pck_dst_gen #(
                        pck_dst_gen #(
                                .NE(NE),
                                .NOC_ID(NOC_ID),
                                .MAX_PCK_NUM(MAX_PCK_NUM),
 
                                .TRAFFIC(TRAFFIC),
                                .TRAFFIC(TRAFFIC),
                                .HOTSPOT_NODE_NUM(HOTSPOT_NODE_NUM),
                                .HOTSPOT_NODE_NUM(HOTSPOT_NODE_NUM),
                                .MCAST_TRAFFIC_RATIO(MCAST_TRAFFIC_RATIO),
                                .MCAST_TRAFFIC_RATIO(MCAST_TRAFFIC_RATIO),
                                .MCAST_PCK_SIZ_MIN(MCAST_PCK_SIZ_MIN),
                                .MCAST_PCK_SIZ_MIN(MCAST_PCK_SIZ_MIN),
                                .MCAST_PCK_SIZ_MAX(MCAST_PCK_SIZ_MAX),
                                .MCAST_PCK_SIZ_MAX(MCAST_PCK_SIZ_MAX),
                                .PCK_SIZw(PCK_SIZw),
 
                                .MIN_PACKET_SIZE(MIN_PACKET_SIZE),
                                .MIN_PACKET_SIZE(MIN_PACKET_SIZE),
                                .MAX_PACKET_SIZE(MAX_PACKET_SIZE),
                                .MAX_PACKET_SIZE(MAX_PACKET_SIZE),
                                .PCK_SIZ_SEL(PCK_SIZ_SEL),
                                .PCK_SIZ_SEL(PCK_SIZ_SEL),
                                .DISCRETE_PCK_SIZ_NUM(DISCRETE_PCK_SIZ_NUM)
                                .DISCRETE_PCK_SIZ_NUM(DISCRETE_PCK_SIZ_NUM)
                        )
                        )
Line 394... Line 389...
        integer                         total_active_endp;
        integer                         total_active_endp;
        integer             total_rsv_pck_num,total_rsv_flit_number;
        integer             total_rsv_pck_num,total_rsv_flit_number;
        integer                         total_sent_pck_num,total_sent_flit_number,total_expect_rsv_flit_num;
        integer                         total_sent_pck_num,total_sent_flit_number,total_expect_rsv_flit_num;
 
 
        integer core_num,k;
        integer core_num,k;
        always @(posedge clk or posedge reset)begin
        always @(`pronoc_clk_reset_edge)begin
                if (reset) begin
                if (`pronoc_reset) begin
                        total_rsv_pck_num=0;
                        total_rsv_pck_num=0;
                        total_sent_pck_num=0;
                        total_sent_pck_num=0;
                        sum_clk_h2h=0;
                        sum_clk_h2h=0;
                        sum_clk_h2t=0;
                        sum_clk_h2t=0;
                        sum_clk_pow2=0;
                        sum_clk_pow2=0;
Line 489... Line 484...
                                if (rsvd_core_worst_delay[core_num] < time_stamp_h2t[core_num]) rsvd_core_worst_delay[core_num] = ( AVG_LATENCY_METRIC == "HEAD_2_TAIL")? time_stamp_h2t[core_num] : time_stamp_h2h[core_num];
                                if (rsvd_core_worst_delay[core_num] < time_stamp_h2t[core_num]) rsvd_core_worst_delay[core_num] = ( AVG_LATENCY_METRIC == "HEAD_2_TAIL")? time_stamp_h2t[core_num] : time_stamp_h2h[core_num];
                                if (sent_core_worst_delay[src_id[core_num]] < time_stamp_h2t[core_num]) sent_core_worst_delay[src_id[core_num]] = (AVG_LATENCY_METRIC == "HEAD_2_TAIL")?  time_stamp_h2t[core_num] : time_stamp_h2h[core_num];
                                if (sent_core_worst_delay[src_id[core_num]] < time_stamp_h2t[core_num]) sent_core_worst_delay[src_id[core_num]] = (AVG_LATENCY_METRIC == "HEAD_2_TAIL")?  time_stamp_h2t[core_num] : time_stamp_h2h[core_num];
                                if (pck_size_o[core_num] >= MIN_PACKET_SIZE && pck_size_o[core_num] <=MAX_PACKET_SIZE) rsv_size_array[pck_size_o[core_num]-MIN_PACKET_SIZE] = rsv_size_array[pck_size_o[core_num]-MIN_PACKET_SIZE]+1;
                                if (pck_size_o[core_num] >= MIN_PACKET_SIZE && pck_size_o[core_num] <=MAX_PACKET_SIZE) rsv_size_array[pck_size_o[core_num]-MIN_PACKET_SIZE] = rsv_size_array[pck_size_o[core_num]-MIN_PACKET_SIZE]+1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
                        end
                        end
                end
                end
        end//always
        end//always
 
 
 
 
Line 518... Line 498...
    integer rsv_ideal_cnt,total_rsv_flit_number_old;
    integer rsv_ideal_cnt,total_rsv_flit_number_old;
        reg all_done_reg;
        reg all_done_reg;
        wire all_done_in;
        wire all_done_in;
        assign all_done_in = (clk_counter > STOP_SIM_CLK) || ( total_sent_pck_num >  STOP_PCK_NUM );
        assign all_done_in = (clk_counter > STOP_SIM_CLK) || ( total_sent_pck_num >  STOP_PCK_NUM );
        assign sent_done = all_done_in & ~ all_done_reg;
        assign sent_done = all_done_in & ~ all_done_reg;
        always @(posedge clk or posedge reset)begin
 
                if(reset) begin
        always @(`pronoc_clk_reset_edge)begin
 
                if (`pronoc_reset) begin
                        all_done_reg <= 1'b0;
                        all_done_reg <= 1'b0;
                        rsv_ideal_cnt<=0;
                        rsv_ideal_cnt<=0;
                        done<=1'b0;
                        done<=1'b0;
                        total_rsv_flit_number_old<=0;
                        total_rsv_flit_number_old<=0;
                end  else  begin
                end  else  begin
Line 621... Line 602...
                        end
                        end
                end
                end
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
        for (m=0; m
        for (m=0; m
 
 
                merge_statistic (rsvd_stat_total,rsvd_stat_class[m],rsvd_stat_total);
                merge_statistic (rsvd_stat_total,rsvd_stat_class[m],rsvd_stat_total);
                merge_statistic (sent_stat_total,sent_stat_class[m],sent_stat_total);
                merge_statistic (sent_stat_total,sent_stat_class[m],sent_stat_total);
 
 
Line 924... Line 899...
                        .start_o(start_o)
                        .start_o(start_o)
                );
                );
         */
         */
 
 
 
 
        routers_statistic_collector router_stat(
        routers_statistic_collector #(
 
                .NOC_ID(NOC_ID)
 
        ) router_stat (
                .reset(reset),
                .reset(reset),
                .clk(clk),
                .clk(clk),
                .router_event(router_event),
                .router_event(router_event),
                .print(print_router_st)
                .print(print_router_st)
        );
        );

powered by: WebSVN 2.1.0

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