Ignore:
Timestamp:
Dec 19, 2008, 4:34:00 PM (16 years ago)
Author:
rosiere
Message:

1) Update Prediction Table : statistics
2) Size instruction address on 30 bits
3) Change Log File
4) Add debug_level in simulation configuration file

Location:
trunk/IPs/systemC/processor/Morpheo/Common/include
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Debug.h

    r88 r97  
    99 * function to help the debugging :
    1010 *
    11  *  - debug_tab
    1211 *  - log_printf
    1312 *  - log_begin
     
    2625
    2726#include "Common/include/Message.h"
     27#include "Common/include/FromString.h"
     28#include "Common/include/ChangeCase.h"
    2829#include "Behavioural/include/Debug_component.h"
    2930#include <systemc.h>
     
    3637namespace morpheo {
    3738
    38 enum _debug_verbosity
     39typedef enum
    3940  {
    4041    DEBUG_NONE ,
     
    4344    DEBUG_FUNC ,
    4445    DEBUG_ALL
    45   };
    46 
    47 std::string debug_tab     (void);
    48 void        debug_tab_inc (void);
    49 void        debug_tab_dec (void);
    50 
     46  } debug_verbosity_t;
     47
     48  extern debug_verbosity_t debug;
     49
     50void        debug_init    (void);
     51void        debug_init    (debug_verbosity_t level);
    5152#ifdef DEBUG
     53
    5254# define log_printf(level, component, func, str... )                    \
    5355  do                                                                    \
    5456    {                                                                   \
    55       if ((DEBUG == DEBUG_ALL ) or                                      \
     57      debug_init();                                                     \
     58                                                                        \
     59      if ((debug == DEBUG_ALL ) or                                      \
    5660          (DEBUG_ ## level == DEBUG_NONE) or                            \
    57           (( DEBUG_ ## level     <= DEBUG) and                          \
     61          (( DEBUG_ ## level     <= debug) and                          \
    5862           ( DEBUG_ ## component == true )) )                           \
    5963        {                                                               \
     
    6771            }                                                           \
    6872                                                                        \
    69           if (DEBUG >= DEBUG_FUNC)                                      \
    70             {                                                           \
    71               msg("%s",debug_tab().c_str());                            \
    72             }                                                           \
    73           if (DEBUG >= DEBUG_ALL )                                      \
     73          if (debug >= DEBUG_ALL )                                      \
    7474            {                                                           \
    7575              switch (DEBUG_ ## level)                                  \
     
    8383                }                                                       \
    8484            }                                                           \
    85           if (DEBUG >= DEBUG_FUNC)                                      \
     85          if (debug >= DEBUG_FUNC)                                      \
    8686            {                                                           \
    8787              msg(  "<%s> " ,func);                                     \
     
    9898  do                                                                    \
    9999    {                                                                   \
    100       debug_tab_inc ();                                                 \
    101100      log_printf(FUNC,component,func,_("Begin"));                       \
    102101    } while(0)
     
    106105    {                                                                   \
    107106      log_printf(FUNC,component,func,_("End"));                         \
    108       debug_tab_dec ();                                                 \
    109107    } while(0)
    110108
     
    172170#endif
    173171
     172
     173  template<> inline debug_verbosity_t fromString<debug_verbosity_t> (const std::string& x)
     174  {
     175    std::string y=x;
     176    LowerCase(y);
     177
     178    if ( (y.compare("0")     == 0) or
     179         (y.compare("none")  == 0))
     180      return DEBUG_NONE ;
     181    if ( (y.compare("1")     == 0) or
     182         (y.compare("info")  == 0))
     183      return DEBUG_INFO ;
     184    if ( (y.compare("2")     == 0) or
     185         (y.compare("trace") == 0))
     186      return DEBUG_TRACE;
     187    if ( (y.compare("3")     == 0) or
     188         (y.compare("func")  == 0))
     189      return DEBUG_FUNC ;
     190    if ( (y.compare("4")     == 0) or
     191         (y.compare("all")   == 0))
     192      return DEBUG_ALL  ;
     193
     194#ifdef DEBUG
     195    return DEBUG;
     196#else
     197    return DEBUG_NONE ;
     198#endif
     199  }
     200
    174201}; // end namespace morpheo
    175202#endif // !DEBUG_H
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Message.h

    r88 r97  
    4141#endif
    4242
    43 #ifdef LOG_FILE
    4443extern FILE * log_stream;
    45 void log_init (void);
     44FILE * log      (FILE * stream);
     45void   log_init (bool        have_file,
     46                 std::string directory,
     47                 std::string file="");
    4648
    4749#define fmsg(stream,arg...)                     \
    4850  do                                            \
    4951    {                                           \
    50       log_init();                               \
    51       fprintf(log_stream,arg);                  \
    52       fflush(log_stream);                       \
     52      FILE * _stream = log(stream);             \
     53      fprintf(_stream,arg);                     \
     54      fflush(_stream);                          \
    5355    } while (0)
    54 
    55 #else
    56 
    57 #define fmsg(stream,arg...)                     \
    58   do                                            \
    59     {                                           \
    60       fprintf(stream,arg);                      \
    61       fflush(stream);                           \
    62     } while (0)
    63 
    64 #endif
    6556
    6657#define fmsgDebug(stream,arg...)                \
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Time.h

    r88 r97  
    1515{
    1616#ifdef SYSTEMC
    17 private : double   nb_cycles_begin;
     17private : const bool systemc;
     18private : double     nb_cycles_begin;
    1819#endif
    19 private : timeval  time_begin;
     20private : timeval    time_begin;
    2021// private : timeval time_end;
    2122 
    22 public  : Time ()
     23public  : Time (bool systemc=true)
     24#ifdef SYSTEMC
     25  :
     26  systemc (systemc)
     27#endif
    2328  {
    2429#ifdef SYSTEMC
     
    4146   
    4247#ifdef SYSTEMC
    43     double nb_cycles_end = sc_simulation_time();
    44     double average       = static_cast<double>(nb_cycles_end-x.nb_cycles_begin+1) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec+1);
    45    
    46     output << "Timing : " << nb_cycles_end << " cycles \t(" << average << " cycles/s)" << std::endl;
    47 #else
    48     double average       = static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec+1);
    49    
    50     output << "Timing : " average << " s" << std::endl;
     48    if (x.systemc)
     49      {
     50        double nb_cycles_end = sc_simulation_time();
     51        double average       = static_cast<double>(nb_cycles_end-x.nb_cycles_begin+1) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec+1);
     52       
     53        output << "Timing : " << nb_cycles_end << " cycles \t(" << average << " cycles/s)" << std::endl;
     54      }
     55    else
    5156#endif
    52    
     57      {
     58        double average       = static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec+1);
     59       
     60        output << "Timing : " << average << " s" << std::endl;
     61      }
     62
    5363    return output;
    5464  }
Note: See TracChangeset for help on using the changeset viewer.