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/] [noc_sim_statistic.sv] - Blame information for rev 56

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 54 alirezamon
// synthesis translate_off
2
`timescale   1ns/1ns
3
`include "pronoc_def.v"
4 56 alirezamon
module routers_statistic_collector #(
5
        parameter NOC_ID=0
6
)(
7
        reset,
8
        clk,
9
        router_event,
10
        print
11
);
12 54 alirezamon
 
13 56 alirezamon
        `NOC_CONF
14 54 alirezamon
 
15
        input   clk,reset;
16
        input   router_event_t  router_event [NR-1 : 0][MAX_P-1 : 0];
17
        input   print;
18
 
19
        typedef struct   {
20
                integer pck_num_in;
21
                integer flit_num_in;
22
                integer pck_num_out;
23
                integer flit_num_out;
24
                integer flit_num_in_bypassed;
25
                integer flit_num_in_buffered;
26
                integer bypass_counter [SMART_NUM : 0];
27
        } router_stat_t;
28
 
29
 
30
 
31
        task  reset_router_stat;
32
                output  router_stat_t stat_in;
33
                integer k;
34
                begin
35
                        stat_in.pck_num_in=0;
36
                        stat_in.flit_num_in=0;
37
                        stat_in.pck_num_out=0;
38
                        stat_in.flit_num_out=0;
39
                        stat_in.flit_num_in_bypassed=0;
40
                        stat_in.flit_num_in_buffered=0;
41
                        for (k=0;k
42
                end
43
        endtask
44
 
45
        task print_router_st;
46
                input router_stat_t stat_in;
47
                integer k;
48
                begin
49
                        $write("%0d,", stat_in.flit_num_in);
50
                        $write("%0d,", stat_in.pck_num_in);
51
                        $write("%0d,", stat_in.flit_num_out);
52
                        $write("%0d,", stat_in.pck_num_out);
53
                        $write("%0d,", stat_in.flit_num_in_buffered);
54
                        $write("%0d,", stat_in.flit_num_in_bypassed);
55
                        if(SMART_MAX>0) for (k=0;k
56
                        $write("\n");
57
                end
58
        endtask
59
 
60
        router_stat_t router_stat [NR][MAX_P];
61
        router_stat_t router_stat_accum [NR];
62
 
63
        integer r,p;
64
        initial begin
65
                for(r=0;r
66
                        reset_router_stat(router_stat_accum[r]);
67
                        for (p=0;p
68
                                reset_router_stat(router_stat[r][p]);
69
                        end//p
70
                end//r
71
        end//init
72
 
73
 
74
 
75
        always @ (posedge clk) begin
76
                for(r=0;r
77
                        for (p=0;p
78
                                if( router_event[r][p].flit_wr_i )      router_stat[r][p].flit_num_in++;
79
                                if( router_event[r][p].pck_wr_i  ) router_stat[r][p].pck_num_in++;
80
                                if( router_event[r][p].flit_wr_o ) router_stat[r][p].flit_num_out++;
81
                                if( router_event[r][p].pck_wr_o  ) router_stat[r][p].pck_num_out++;
82
                                if(     router_event[r][p].flit_in_bypassed) router_stat[r][p].flit_num_in_bypassed++;
83
                                else if( router_event[r][p].flit_wr_i) begin
84
                                        router_stat [r][p].flit_num_in_buffered++;
85
                                        router_stat[r][p].bypass_counter[router_event[r][p].bypassed_num]++;
86
                                end
87
 
88
                        end//p
89
                end//r
90
        end//always
91
 
92
 
93
 
94
        integer k;
95
 
96
        always @(posedge print) begin
97
                for(r=0;r
98
                        for (p=0;p
99
                                router_stat_accum[r].pck_num_in+=                  router_stat[r][p].pck_num_in;
100
                                router_stat_accum[r].flit_num_in+=         router_stat[r][p].flit_num_in;
101
                                router_stat_accum[r].pck_num_out+=         router_stat[r][p].pck_num_out;
102
                                router_stat_accum[r].flit_num_out+=        router_stat[r][p].flit_num_out;
103
                                router_stat_accum[r].flit_num_in_bypassed+=router_stat[r][p].flit_num_in_bypassed;
104
                                router_stat_accum[r].flit_num_in_buffered+=router_stat[r][p].flit_num_in_buffered;
105
                                for (k=0;k
106
 
107
                        end//p
108
                end//r
109
 
110
 
111
                //report router statistic
112
                $display("\n\tRouters' statistics");
113
                $write("\t#RID, #Port,flit_in,pck_in,flit_out,pck_out,flit_in_buffered,flit_in_bypassed,");
114
                if(SMART_MAX>0) for (k=0;k
115
                $write("\n");
116
                for(r=0;r
117
                        for (p=0;p
118
                                $write("\t%0d,%0d,",r,p);
119
                                print_router_st(router_stat [r][p]);
120
                        end//p
121
                        $write("\t%0d,total,",r);
122
                        print_router_st(router_stat_accum [r]);
123
                end     //r
124
        end//always
125
 
126
 
127
 
128
endmodule
129
// synthesis translate_on

powered by: WebSVN 2.1.0

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