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 54

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

powered by: WebSVN 2.1.0

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