openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

init_time_analyzer.h (17989B)


      1 /** \file init_time_analyzer.h
      2  * 
      3  * Define the modules running time to be analyzed in order to get better decisions when working on time optimization.
      4  */
      5 /*
      6  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      7  * 
      8  * Copyright 2007-2020 Broadcom Inc. All rights reserved.
      9  */
     10 
     11 #ifndef DNX_INIT_TIME_ANALYZER_H_INCLUDED
     12 #define DNX_INIT_TIME_ANALYZER_H_INCLUDED
     13 /*
     14  * Include files.
     15  * {
     16  */
     17 #include <shared/shrextend/shrextend_debug.h>
     18 #include <sal/core/time.h>
     19 #include <shared/utilex/utilex_time_analyzer.h>
     20 
     21 /*
     22  * }
     23  */
     24 /*
     25  * MACROs
     26  * {
     27  */
     28 /*
     29  * Time Measurement Tool
     30  * =====================
     31  * *Allows measuring the amount of time spent in each code section
     32  * *Allows to count the times we run a specific code section
     33  * *Currently tracking few basic operations such as: (1) sw state (2) dnx data (3) dbal (4) resource manager
     34  * *The time measurements can be done per init step, per any two points in the code (using debugger or BCM shell)
     35  *
     36  * Enable
     37  * =======
     38  * go to "include/bcm_int/dnx/init/init_time_analyzer.h"
     39  * Modify macro "DNX_INIT_TIME_ANALYZER_*_EN" to 1 according to the procedures you want to measure
     40  * Recompile
     41  * Set soc property to "custom_feature_time_analyze=PER_STEP" to statistics per step or "custom_feature_time_analyze=GLOBAL" for shared statistics for all steps.
     42  * Run bcm.user
     43  *
     44  * Add a New Code Section to Track
     45  * ===============================
     46  * 1) In "include/bcm_int/dnx/init/init_time_analyzer.h",  add new member to enum "dnx_init_time_analyzer_module_e"
     47  * 2) Create Enable flag DNX_INIT_TIME_ANALYZER_<module>_EN or use one of the existing ones
     48  * 3) If new flag created, create also start and stop macros as follow
     49  *    "
     50       #if DNX_INIT_TIME_ANALYZER_DBAL_EN
     51       #define DNX_INIT_TIME_ANALYZER_<module>_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
     52       #define DNX_INIT_TIME_ANALYZER_<module>_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
     53       #else
     54       #define DNX_INIT_TIME_ANALYZER_<module>_START(unit, module_id)
     55       #define DNX_INIT_TIME_ANALYZER_<module>_STOP(unit, module_id)
     56       #endif
     57  *    "
     58  * 4) Add new entry in DNX_INIT_TIME_ANALYZER_OPS_INIT
     59  * 5) Wrap your code section (more than one section is also supported) with:
     60  *     DNX_INIT_TIME_ANALYZER_<module>_START(unit, <new enum member>)
     61  *     DNX_INIT_TIME_ANALYZER_<module>_STOP(unit, <new enum member>)
     62  *
     63  * Display Results
     64  * ===============
     65  * BCM Shell > "ta dump"
     66  * GDB > "p sh_process_command(0, "ta dump")
     67  * Restart Measurement
     68  * BCM Shell > "ta clear"
     69  * GDB > "p sh_process_command(0, "ta clear")
     70  * Example Output:
     71  *  ============================================================================
     72     | Time Analyzer                                                            |
     73     ============================================================================
     74     | Name             | Total Time         | Occurrences | Avg Time           |
     75     ============================================================================
     76     | DBAL_SET         | 3 [milliseconds]   | 16          | 193 [microseconds] |
     77     | DBAL_GET         | 128 [milliseconds] | 2311        | 55 [microseconds]  |
     78     | DBAL_REST        | 32 [milliseconds]  | 9887        | 3 [microseconds]   |
     79     | ALGO_PORT_BITMAP | 0 [milliseconds]   | 0           | 0 [microseconds]   |
     80     | SLEEP            | 0 [milliseconds]   | 0           | 0 [microseconds]   |
     81     | DNX_DATA         | 18 [milliseconds]  | 23238       | 0 [microseconds]   |
     82     | SW_STATE         | 0 [milliseconds]   | 0           | 0 [microseconds]   |
     83     ============================================================================
     84  */
     85 /**
     86  * \brief - set to 1 to enable. disabled by a compilation to optimize running time
     87  */
     88 #define DNX_INIT_TIME_ANALYZER_DBAL_EN          0
     89 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN     0
     90 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_EN      0
     91 #define DNX_INIT_TIME_ANALYZER_SW_STATE_EN      0
     92 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_EN      0
     93 #define DNX_INIT_TIME_ANALYZER_ACCESS_EN        0
     94 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_EN     0
     95 #define DNX_ERROR_RECOVERY_TIME_DIAGNOSTICS     0
     96 
     97 /*
     98  * regular init time analyzer diagnostics are disabled when error recovery diagnostics are enabled
     99  */
    100 /** DBAL */
    101 #if DNX_INIT_TIME_ANALYZER_DBAL_EN
    102 #define DNX_INIT_TIME_ANALYZER_DBAL_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    103 #define DNX_INIT_TIME_ANALYZER_DBAL_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    104 #else
    105 #define DNX_INIT_TIME_ANALYZER_DBAL_START(unit, module_id)
    106 #define DNX_INIT_TIME_ANALYZER_DBAL_STOP(unit, module_id)
    107 #endif
    108 /** DBAL INIT */
    109 #if DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN
    110 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    111 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    112 #else
    113 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_START(unit, module_id)
    114 #define DNX_INIT_TIME_ANALYZER_DBAL_INIT_STOP(unit, module_id)
    115 #endif
    116 /** DNX DATA */
    117 #if DNX_INIT_TIME_ANALYZER_DNX_DATA_EN
    118 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    119 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    120 #else
    121 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_START(unit, module_id)
    122 #define DNX_INIT_TIME_ANALYZER_DNX_DATA_STOP(unit, module_id)
    123 #endif
    124 /** SW_STATE */
    125 #if DNX_INIT_TIME_ANALYZER_SW_STATE_EN
    126 #define DNX_INIT_TIME_ANALYZER_SW_STATE_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    127 #define DNX_INIT_TIME_ANALYZER_SW_STATE_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    128 #else
    129 #define DNX_INIT_TIME_ANALYZER_SW_STATE_START(unit, module_id)
    130 #define DNX_INIT_TIME_ANALYZER_SW_STATE_STOP(unit, module_id)
    131 #endif
    132 /** RES_MNGR */
    133 #if DNX_INIT_TIME_ANALYZER_RES_MNGR_EN
    134 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    135 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    136 #else
    137 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_START(unit, module_id)
    138 #define DNX_INIT_TIME_ANALYZER_RES_MNGR_STOP(unit, module_id)
    139 #endif
    140 /** ACCESS */
    141 #if DNX_INIT_TIME_ANALYZER_ACCESS_EN
    142 #define DNX_INIT_TIME_ANALYZER_ACCESS_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    143 #define DNX_INIT_TIME_ANALYZER_ACCESS_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    144 #else
    145 #define DNX_INIT_TIME_ANALYZER_ACCESS_START(unit, module_id)
    146 #define DNX_INIT_TIME_ANALYZER_ACCESS_STOP(unit, module_id)
    147 #endif
    148 /** ALGO PORT*/
    149 #if DNX_INIT_TIME_ANALYZER_ALGO_PORT_EN
    150 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_START(unit, module_id)       utilex_time_analyzer_module_start(unit, module_id)
    151 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_STOP(unit, module_id)        utilex_time_analyzer_module_stop(unit, module_id)
    152 #else
    153 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_START(unit, module_id)
    154 #define DNX_INIT_TIME_ANALYZER_ALGO_PORT_STOP(unit, module_id)
    155 #endif
    156 /*
    157  * error recovery diagnostics require init time analyzer diagnostics
    158  */
    159 #if DNX_ERROR_RECOVERY_TIME_DIAGNOSTICS
    160 #define DNX_ERROR_RECOVERY_TIME_DIAG_START(unit, module_id)     utilex_time_analyzer_module_start(unit, module_id)
    161 #define DNX_ERROR_RECOVERY_TIME_DIAG_END(unit, module_id)       utilex_time_analyzer_module_stop(unit, module_id)
    162 #else
    163 #define DNX_ERROR_RECOVERY_TIME_DIAG_START(unit, module_id)
    164 #define DNX_ERROR_RECOVERY_TIME_DIAG_END(unit, module_id)
    165 #endif
    166 
    167 /*
    168  * }
    169  */
    170 
    171 /*
    172  * TYPEDEFs
    173  * {
    174  */
    175 
    176 /**
    177  * \brief - Time Analyzer storage structure
    178  */
    179 
    180 typedef struct
    181 {
    182     int module_id;
    183     char *name;
    184     int enable_flag;
    185 } dnx_init_time_analyzer_operations_t;
    186 
    187 /**
    188  * \brief - all the modules / operation tracked
    189  * Note: must be synced with the switch case in dnx_init_time_analyzer_module_name_get()
    190  */
    191 typedef enum
    192 {
    193     DNX_INIT_TIME_ANALYZER_DBAL_SET,
    194     DNX_INIT_TIME_ANALYZER_DBAL_GET,
    195     DNX_INIT_TIME_ANALYZER_DBAL_CLEAR,
    196     DNX_INIT_TIME_ANALYZER_DBAL_ENTRY_CLEAR,
    197     DNX_INIT_TIME_ANALYZER_DBAL_ITER,
    198     DNX_INIT_TIME_ANALYZER_DBAL_FIELD_SET,
    199     DNX_INIT_TIME_ANALYZER_DBAL_FIELD_GET,
    200     DNX_INIT_TIME_ANALYZER_DBAL_FIELD_REQUEST,
    201     DNX_INIT_TIME_ANALYZER_CHECK_2,
    202     DNX_INIT_TIME_ANALYZER_CHECK_1,
    203     DNX_INIT_TIME_ANALYZER_ALGO_PORT_BITMAP,
    204     DNX_INIT_TIME_ANALYZER_DNX_DATA,
    205     DNX_INIT_TIME_ANALYZER_SW_STATE,
    206     DNX_INIT_TIME_ANALYZER_RES_MNGR,
    207     DNX_INIT_TIME_ANALYZER_TEMPLATE_MNGR,
    208     DNX_INIT_TIME_ANALYZER_MEM_INIT,
    209     DNX_INIT_TIME_ANALYZER_MEM_ZEROS,
    210     DNX_INIT_TIME_ANALYZER_ER_API_FULL,
    211     DNX_INIT_TIME_ANALYSER_DBAL_INIT,
    212     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT,
    213     DNX_INIT_TIME_ANALYSER_DBAL_L_DYNAMIC_INIT,
    214     DNX_INIT_TIME_ANALYSER_DBAL_L_ALLOC_INIT,
    215     DNX_INIT_TIME_ANALYSER_DBAL_L_GENERIC_INIT,
    216     DNX_INIT_TIME_ANALYSER_DBAL_L_VALIDATIONS,
    217     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_VALID,
    218     DNX_INIT_TIME_ANALYSER_DBAL_MDB_INIT,
    219     DNX_INIT_TIME_ANALYSER_DBAL_SW_INIT,
    220     DNX_INIT_TIME_ANALYSER_DBAL_PEMLA_INIT,
    221 
    222     DNX_INIT_TIME_ANALYSER_DBAL_L_HL_INIT,
    223     DNX_INIT_TIME_ANALYSER_DBAL_L_SW_STATE_INIT,
    224     DNX_INIT_TIME_ANALYSER_DBAL_L_TCAMCON_INIT,
    225     DNX_INIT_TIME_ANALYSER_DBAL_L_PEMLA_INIT,
    226     DNX_INIT_TIME_ANALYSER_DBAL_L_MDB_INIT,
    227 
    228     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_IF,
    229     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL,
    230     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_RES_TYPE,
    231     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_MDB,
    232     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_FIELD_STRING_TO_ID,
    233     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_TCAM_CS,
    234     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_ACCESS_CLEAR,
    235     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_CLEAR,
    236     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ACCESS_REGISTER_MEMORY,
    237     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_GENERAL_INFO,
    238 
    239     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_REG,
    240     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM,
    241     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM_HW_ENTITY_VALIDATE,
    242     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_DNX_DATA_PARSING,
    243     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT,
    244     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_HL_MDB_INIT,
    245     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_CLEAR_XML_STRUCT,
    246     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_GENERAL_INFO,
    247     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_DB_INTERFACE,
    248     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_APP_TO_PHY_DB,
    249     DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_ADD_DBAL_TABLE,
    250 
    251     DNX_INIT_TIME_ANALYZER_NOF
    252 } dnx_init_time_analyzer_module_e;
    253 
    254 /**
    255  * \brief- list (operations ids, operation names, operation enable flag)
    256  */
    257 #define DNX_INIT_TIME_ANALYZER_OPS_INIT {\
    258         {DNX_INIT_TIME_ANALYZER_CHECK_1, "GENERIC CHECK 1", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    259         {DNX_INIT_TIME_ANALYZER_CHECK_2, "GENERIC CHECK 2", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    260         {DNX_INIT_TIME_ANALYZER_DBAL_SET, "DBAL_SET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    261         {DNX_INIT_TIME_ANALYZER_DBAL_GET, "DBAL_GET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    262         {DNX_INIT_TIME_ANALYZER_DBAL_CLEAR, "DBAL_CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    263         {DNX_INIT_TIME_ANALYZER_DBAL_ENTRY_CLEAR, "DBAL_ENTRY_CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    264         {DNX_INIT_TIME_ANALYZER_DBAL_ITER, "DBAL_ITER", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    265         {DNX_INIT_TIME_ANALYZER_DBAL_FIELD_SET, "DBAL_FIELD_SET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    266         {DNX_INIT_TIME_ANALYZER_DBAL_FIELD_GET, "DBAL_FIELD_GET", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    267         {DNX_INIT_TIME_ANALYZER_DBAL_FIELD_REQUEST, "DBAL_FIELD_REQ", DNX_INIT_TIME_ANALYZER_DBAL_EN},\
    268         {DNX_INIT_TIME_ANALYZER_ALGO_PORT_BITMAP, "PORT_BITMAP", DNX_INIT_TIME_ANALYZER_ALGO_PORT_EN},\
    269         {DNX_INIT_TIME_ANALYZER_DNX_DATA, "DNX_DATA", DNX_INIT_TIME_ANALYZER_DNX_DATA_EN},\
    270         {DNX_INIT_TIME_ANALYZER_SW_STATE, "SW STATE", DNX_INIT_TIME_ANALYZER_SW_STATE_EN},\
    271         {DNX_INIT_TIME_ANALYZER_RES_MNGR, "RES MNGR", DNX_INIT_TIME_ANALYZER_RES_MNGR_EN},\
    272         {DNX_INIT_TIME_ANALYZER_TEMPLATE_MNGR, "TEMP MNGR", DNX_INIT_TIME_ANALYZER_RES_MNGR_EN},\
    273         {DNX_INIT_TIME_ANALYZER_MEM_INIT, "MEM_INIT", DNX_INIT_TIME_ANALYZER_ACCESS_EN},\
    274         {DNX_INIT_TIME_ANALYZER_MEM_ZEROS, "MEM_ZEROS", DNX_INIT_TIME_ANALYZER_ACCESS_EN},\
    275         {DNX_INIT_TIME_ANALYSER_DBAL_INIT, "DBAL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    276         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT, "DBAL L INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    277         {DNX_INIT_TIME_ANALYSER_DBAL_L_GENERIC_INIT, "DBAL GENERIC INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    278         {DNX_INIT_TIME_ANALYSER_DBAL_L_ALLOC_INIT, "DBAL ALLOC INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    279         {DNX_INIT_TIME_ANALYSER_DBAL_L_DYNAMIC_INIT, "DBAL DYNAMIC INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    280         {DNX_INIT_TIME_ANALYSER_DBAL_L_VALIDATIONS, "DBAL INIT VALIDATIONS", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    281         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_VALID, "DBAL L INIT VALID", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    282         {DNX_INIT_TIME_ANALYSER_DBAL_MDB_INIT, "DBAL MDB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    283         {DNX_INIT_TIME_ANALYSER_DBAL_SW_INIT, "DBAL SW INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    284         {DNX_INIT_TIME_ANALYSER_DBAL_PEMLA_INIT, "DBAL PEMLA INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    285         {DNX_INIT_TIME_ANALYSER_DBAL_L_HL_INIT, "DBAL L HL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    286         {DNX_INIT_TIME_ANALYSER_DBAL_L_SW_STATE_INIT, "DBAL L SWSTATE INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    287         {DNX_INIT_TIME_ANALYSER_DBAL_L_TCAMCON_INIT, "DBAL L TCAMCON INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    288         {DNX_INIT_TIME_ANALYSER_DBAL_L_PEMLA_INIT, "DBAL L PEMLA INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    289         {DNX_INIT_TIME_ANALYSER_DBAL_L_MDB_INIT, "DBAL L MDB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    290         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_IF, "DBAL ADD TABLE IF INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    291         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL, "DBAL ADD TABLE MAP HL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    292         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_MDB, "DBAL ADD TABLE MAP MDB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    293         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_FIELD_STRING_TO_ID, "DBAL FIELD STRING TO ID", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    294         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_TCAM_CS, "DBAL ADD TABLE MAP TCAM CS INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    295         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_RES_TYPE, "DBAL ADD TABLE MAP HL RES TYPE", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    296         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ACCESS_REGISTER_MEMORY, "DBAL ACCESS REGISTER MEMORY", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    297         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_ACCESS_CLEAR, "DBAL STRUCT ACCESS CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    298         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_STRUCT_CLEAR, "DBAL STRUCT CLEAR", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    299         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_GENERAL_INFO, "DBAL GENERAL INFO SET", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    300         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_REG, "DBAL ADD TABLE MAP HL REG INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    301         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM, "DBAL ADD TABLE MAP HL MEM INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    302         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_ADD_TABLE_MAP_HL_MEM_HW_ENTITY_VALIDATE, "DBAL ADD TABLE MAP HL MEM HW INIT ENTITY VALIDATE", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    303         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_DNX_DATA_PARSING, "DBAL DNX DATA PARSING INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    304         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_HL_MDB_INIT, "DBAL MDB HL INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    305         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT, "DBAL AG INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    306         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_CLEAR_XML_STRUCT, "DBAL AG CLEAR XML STRUCT INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    307         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_GENERAL_INFO, "DBAL AG GENERAL INFO INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    308         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_DB_INTERFACE, "DBAL AG DB INTERFACE INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    309         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_APP_TO_PHY_DB, "DBAL AG APP TO PHY DB INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    310         {DNX_INIT_TIME_ANALYSER_DBAL_L_INIT_AG_INIT_ADD_DBAL_TABLE, "DBAL AG ADD DBAL TABLE INIT", DNX_INIT_TIME_ANALYZER_DBAL_INIT_EN},\
    311         }
    312 /*
    313  * }
    314  */
    315 
    316 /*
    317  * FUNCTIONs
    318  * {
    319  */
    320 /**
    321  * \brief - allocate memory, initialize time analyzer tool and adds the required modules to be tracked
    322  * \param [in] unit - unit #.
    323  * \return
    324  *   See shr_error_e
    325  * \remark
    326  *   * None
    327  * \see
    328  *   * None
    329  */
    330 shr_error_e dnx_init_time_analyzer_init(
    331     int unit);
    332 /**
    333  * \brief - free time analyzer tool resources
    334  * \param [in] unit - unit #.
    335  * \return
    336  *   See shr_error_e
    337  * \remark
    338  *   * None
    339  * \see
    340  *   * None
    341  */
    342 shr_error_e dnx_init_time_analyzer_deinit(
    343     int unit);
    344 /**
    345  * \brief - flag cb for init sequence that allows to skip the module
    346  * \param [in] unit - unit #.
    347  * * \param [out] flags - init sequnce flags
    348  * \return
    349  *   See shr_error_e
    350  * \remark
    351  *   * None
    352  * \see
    353  *   * None
    354  */
    355 shr_error_e dnx_time_analyzer_flag_cb(
    356     int unit,
    357     int *flags);
    358 /*
    359  * }
    360  */
    361 
    362 #endif /* DNX_INIT_TIME_ANALYZER_H_INCLUDED */