source: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Stat.h @ 138

Last change on this file since 138 was 138, checked in by rosiere, 14 years ago

1) add counters_t type for interface
2) fix in check load in load_store_unit
3) add parameters (but not yet implemented)
4) change environment and add script (distcc_env.sh ...)
5) add warning if an unser change rename flag with l.mtspr instruction
6) ...

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 5.2 KB
Line 
1#ifdef STATISTICS
2#ifndef morpheo_behavioural_Stat_h
3#define morpheo_behavioural_Stat_h
4
5#include "Behavioural/include/Parameters_Statistics.h"
6#include "Behavioural/include/Stat_type.h"
7#include "Behavioural/include/Stat_binary_tree.h"
8#include "Behavioural/include/XML.h"
9#include "Common/include/ErrorMorpheo.h"
10#include "Common/include/Message.h"
11
12#ifdef SYSTEMC
13#include "systemc.h"
14#endif
15
16#include <stdint.h>
17#include <string>
18#include <map>
19#include <list>
20#include <iostream>
21
22namespace morpheo {
23  namespace behavioural {
24
25    typedef double cycle_t;
26 
27    typedef struct 
28    {
29      counter_type_t type;
30      counter_t *    counter;
31      std::string    name;
32      std::string    unit;
33      std::string    description;
34      std::list<counter_t> save_counter;
35    } var_t;
36 
37    typedef struct 
38    {
39      bool               each_cycle;
40      counter_t        * variable;
41      Stat_binary_tree * expression;
42    } expr_t;
43
44    class Stat
45    {
46    private: const std::string              _name_instance;
47    private: const std::string              _name_component;
48    private: const cycle_t                  _nb_cycle_before_begin;
49    private: const cycle_t                  _period;
50    private: const bool                     _save_periodic;
51    private: bool                           _generate_file;
52
53      // Tableau des variables
54    private: std::map<std::string, var_t> * _list_operand;
55      // Liste chaîné des expressions
56    private: std::list<expr_t>            * _list_expr;
57      // List chaîné des "counters" (seulement pour la désallocation)
58    private: std::list<counters_t*>       * _list_counters;
59
60    private: counter_t                    * _cycle;
61
62    private: std::list<Stat *>            * _list_stat;
63
64    public :                     Stat                         (std::string name_instance,
65                                                               std::string name_component,
66                                                               Parameters_Statistics * param);
67    public :                     Stat                         (std::string name_instance,
68                                                               std::string name_component,
69                                                               cycle_t nb_cycle_before_begin=0,
70                                                               cycle_t period=0);
71    public :                    ~Stat                         (void);
72
73    public  : counter_t *        create_variable              (std::string varname);
74    public  : counter_t *        create_counter               (std::string varname,
75                                                               std::string unit,
76                                                               std::string description);
77    public  : counters_t *       create_counters              (std::string varname,
78                                                               uint32_t    nb_counter,
79                                                               std::string unit,
80                                                               std::string description_counter, // need one %d
81                                                               std::string description_percent, // need one %d
82                                                               std::string description_average);
83    private : counter_t *        alloc_operand                (counter_type_t type,
84                                                               std::string varname,
85                                                               std::string unit,
86                                                               std::string description);
87
88    public  : void               create_expr                  (std::string varname,
89                                                               std::string expr,
90                                                               bool each_cycle=false);
91
92    public  : void               create_expr                  (std::string    varname,
93                                                               std::string    expr,
94                                                               counter_type_t type,
95                                                               std::string    unit,
96                                                               std::string    description,
97                                                               bool each_cycle=false);
98
99    public  : void               create_expr_average          (std::string varname,
100                                                               std::string expr_sum,
101                                                               std::string expr_deps,
102                                                               std::string unit,
103                                                               std::string description);
104
105    public  : void               create_expr_average_by_cycle (std::string varname,
106                                                               std::string expr_sum,
107                                                               std::string unit,
108                                                               std::string description);
109
110    public  : void               create_expr_percent          (std::string varname,
111                                                               std::string expr_sum,
112                                                               std::string expr_max,
113                                                               std::string description);
114
115    private : Stat_binary_tree * string2tree                  (std::string expr);
116
117    public  : void               end_cycle                    (void);
118    private : void               end_simulation               (void);
119
120    private : void               test_and_save                (bool force_save=false);
121    private : void               reset                        (bool save);
122
123    private : void               eval_exprs                   (bool only_each_cycle=true);
124    private : void               eval_expr                    (expr_t expr);
125
126    private : bool               is_valid_var                 (std::string expr);
127
128    private : void               generate_file                (void);
129
130    private : bool               have_counter                 (void);
131
132    public  : void               add_stat                     (Stat * stat);
133
134    public  : std::string        print                        (uint32_t depth=0);
135    };
136
137  };
138};
139#endif
140#endif
Note: See TracBrowser for help on using the repository browser.