Changeset 137 for trunk/IPs


Ignore:
Timestamp:
Feb 16, 2010, 1:35:48 PM (14 years ago)
Author:
rosiere
Message:

Various modif (add test, and vhdl)

Location:
trunk/IPs/systemC
Files:
28 added
2 deleted
114 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/Environment/Makefile

    r114 r137  
    1 ifeq ($(origin MORPHEO_TMP), undefined)
    2         $(error "variable MORPHEO_TMP      is undefined");
     1ifeq ($(origin MORPHEO_PREFIX), undefined)
     2        $(error "variable MORPHEO_PREFIX   is undefined");
    33endif
    44
    55#-----[ Directory ]----------------------------------------
    6 DIR_LIB                         = $(DIR_TMP)/lib
     6DIR_LIB                         = $(MORPHEO_PREFIX)/lib
    77DIR_ENVIRONMENT                 = .
    88DIR_CACHE                       = Cache
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration_header.cpp

    r112 r137  
    77
    88#include "Behavioural/Configuration/include/Configuration.h"
    9 #include "Behavioural/include/Version.h"
     9#include "Common/include/Environment.h"
    1010
    1111namespace morpheo {
     
    1818  {
    1919    log_begin(Configuration,FUNCTION);
     20
     21    environment();
    2022
    2123    std::string str = "";
     
    5254    str += toString(MSG_INFORMATION)+"\n";
    5355    str += toString(MSG_INFORMATION)+_("  * Multiple ORganization of a Processor with HEterogeneous and Open architecture\n");
    54     str += toString(MSG_INFORMATION)+_("  * Version            : ")+toString(MORPHEO_HEADER)+"\n";
    55     str += toString(MSG_INFORMATION)+_("  * Last change        : ")+toString(MORPHEO_DATE  )+"\n";
     56    str += toString(MSG_INFORMATION)+_("  * Version            : ")+MORPHEO_HEADER+"\n";
     57    str += toString(MSG_INFORMATION)+_("  * Last change        : ")+MORPHEO_DATE  +"\n";
    5658    str += toString(MSG_INFORMATION)+_("  * E-mail support     : mathieu.rosiere@lip6.fr\n"      );
    5759    str += toString(MSG_INFORMATION)+_("  * Original author(s) : Mathieu  Rosière\n"             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromXMLLight.cpp

    r109 r137  
    2727    XMLLightVector<XML_t> vect = xml->getNodes();
    2828
     29    log_printf(TRACE,Configuration,FUNCTION,"  * id         : %s",id.c_str());
     30    log_printf(TRACE,Configuration,FUNCTION,"  * size       : %d",vect.size());
     31
    2932    for (uint32_t i=0; i<vect.size(); ++i)
    3033      {
     
    3336        std::string child_name = child->getName();
    3437
    35 //         log_printf(TRACE,Configuration,FUNCTION,"  * child_name : %s",child_name.c_str());
     38        log_printf(TRACE,Configuration,FUNCTION,"  * child_name : %s",child_name.c_str());
    3639
    3740        //--------------------------------------------
     
    4750            attribute_t  value      = getAttribute(child,attributes,"value");
    4851
    49 //             log_printf(TRACE,Configuration,FUNCTION,"    * parameter \"%s\" = %s",value_name.c_str(), value.c_str());
     52            log_printf(TRACE,Configuration,FUNCTION,"    * parameter \"%s\" = %s",value_name.c_str(), value.c_str());
    5053           
    5154            testAttributesEmpty(child,attributes);
     
    7578            attribute_t  value_name = getAttribute(child,attributes,"name");
    7679
    77 //             log_printf(TRACE,Configuration,FUNCTION,"    * link  \"%s\"",value_name.c_str());
     80            log_printf(TRACE,Configuration,FUNCTION,"    * link  \"%s\"",value_name.c_str());
    7881           
    7982            // Test, must have src or dest (or twice)
     
    118121        if (child_name == "timing")
    119122          {
    120 //             log_printf(TRACE,Configuration,FUNCTION,"    * timing");
     123            log_printf(TRACE,Configuration,FUNCTION,"    * timing");
    121124
    122125            // Notation :
     
    196199        else
    197200          {
    198 //             log_printf(TRACE,Configuration,FUNCTION,"    * component");
     201            log_printf(TRACE,Configuration,FUNCTION,"    * component");
    199202
    200203            testSingleton  (child,false);       
     
    229232                attribute_t value_id  = value_ids.substr(index_min, index_max);
    230233
    231 //                 log_printf(TRACE,Configuration,FUNCTION,"    * component \"%s\" - %s",value_type.c_str(), value_id.c_str());
     234                log_printf(TRACE,Configuration,FUNCTION,"    * component \"%s\" - %s",value_type.c_str(), value_id.c_str());
    232235
    233236                index_begin = index_end;
     
    238241                                                                      value_id);
    239242             
    240 //                log_printf(TRACE,Configuration,FUNCTION,"%s.%s",value_type.c_str(),value_id.c_str());
    241 //                log_printf(TRACE,Configuration,FUNCTION,"  * %d",((*list_components)[value_type]).size());
     243                  // log_printf(TRACE,Configuration,FUNCTION,"%s.%s",value_type.c_str(),value_id.c_str());
     244                  // log_printf(TRACE,Configuration,FUNCTION,"  * %d",((*list_components)[value_type]).size());
    242245             
    243246                  // Test if this id is previously used
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_vhdl_body.cpp

    r116 r137  
    370370    vhdl->set_body (1,std_logic_cst(1,0)+"when others;");
    371371
    372 #ifdef SYSTEMC_VHDL_COMPATIBILITY
    373372    vhdl->set_body (0,"with reg_EXECUTE_IN_TYPE select");
    374373    vhdl->set_body (0,"sig_EXECUTE_OUT_ADDRESS <=");
    375374    vhdl->set_body (1,"sig_ADDR_BRANCH when "+std_logic_cst(_param->_size_type,TYPE_BRANCH)+",");
     375#ifdef SYSTEMC_VHDL_COMPATIBILITY
    376376    vhdl->set_body (1,"sig_A_OR_B("+toString(_param->_size_instruction_address-1)+" downto 0) when "+std_logic_cst(_param->_size_type,TYPE_SPECIAL)+",");
    377377    vhdl->set_body (1,std_logic_cst(_param->_size_instruction_address,0)+" when others;");
    378378#else
    379     vhdl->set_body (0,"with reg_EXECUTE_IN_TYPE select");
    380     vhdl->set_body (0,"sig_EXECUTE_OUT_ADDRESS <=");
    381     vhdl->set_body (1,"sig_ADDR_BRANCH when "+std_logic_cst(_param->_size_type,TYPE_BRANCH)+",");
    382     vhdl->set_body (1,"sig_A_OR_B when others;");
     379    vhdl->set_body (1,"sig_A_OR_B ("+toString(_param->_size_instruction_address-1)+" downto 0) when others;");
    383380//    vhdl->set_body (0,"sig_EXECUTE_OUT_ADDRESS <= sig_ADDR_BRANCH;");
    384381#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_vhdl_body.cpp

    r113 r137  
    140140    vhdl->set_body   (0,"out_EXECUTE_QUEUE_OUT_DATA          "+std_logic_range(_param->_size_general_data       )+" <= internal_EXECUTE_QUEUE_OUT_DATA         ;");
    141141
    142     vhdl->set_debug  ("in_CLOCK = 'U'","GLOP1: Clock = 'U'");
    143     vhdl->set_debug  ("in_CLOCK = 'X'","GLOP2: Clock = 'X'");
    144     vhdl->set_debug  ("in_CLOCK = 'Z'","GLOP3: Clock = 'Z'");
    145     vhdl->set_debug  ("in_CLOCK = 'W'","GLOP4: Clock = 'W'");
    146     vhdl->set_debug  ("in_CLOCK = '1'","KANE : Clock = '1'");
    147     vhdl->set_debug  ("in_CLOCK = '0'","SETH : Clock = '0'");
     142//     vhdl->set_debug  ("in_CLOCK = 'U'","GLOP1: Clock = 'U'");
     143//     vhdl->set_debug  ("in_CLOCK = 'X'","GLOP2: Clock = 'X'");
     144//     vhdl->set_debug  ("in_CLOCK = 'Z'","GLOP3: Clock = 'Z'");
     145//     vhdl->set_debug  ("in_CLOCK = 'W'","GLOP4: Clock = 'W'");
     146//     vhdl->set_debug  ("in_CLOCK = '1'","KANE : Clock = '1'");
     147//     vhdl->set_debug  ("in_CLOCK = '0'","SETH : Clock = '0'");
    148148
    149149    log_printf(FUNC,Execute_queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_vhdl_body.cpp

    r136 r137  
    2424    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
    2525
    26     vhdl->set_body("out_CONST_0 <= '0';");
    27     vhdl->set_body("out_CONST_1 <= '1';");
     26    // vhdl->set_body("out_CONST_0 <= '0';");
     27    // vhdl->set_body("out_CONST_1 <= '1';");
    2828
    2929    //-----------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Types.h

    r134 r137  
    3636//  Tdepth_t            _depth             ;
    3737                                           
    38     // set by decod                       
     38    // set by decod             
     39#ifdef STATISTICS
     40    uint32_t            _opcod             ;
     41#endif
    3942    Ttype_t             _type              ;
    4043    Toperation_t        _operation         ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/src/Instruction.cpp

    r117 r137  
    215215    switch (opcod)
    216216      {
    217       case OPCOD_L_CUST1 : {inst->_type = instruction_information(INSTRUCTION_L_CUST1)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST1)._operation; break;}
    218       case OPCOD_L_CUST2 : {inst->_type = instruction_information(INSTRUCTION_L_CUST2)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST2)._operation; break;}
    219       case OPCOD_L_CUST3 : {inst->_type = instruction_information(INSTRUCTION_L_CUST3)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST3)._operation; break;}
    220       case OPCOD_L_CUST4 : {inst->_type = instruction_information(INSTRUCTION_L_CUST4)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST4)._operation; break;}
    221       case OPCOD_L_CUST5 : {inst->_type = instruction_information(INSTRUCTION_L_CUST5)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST5)._operation; break;}
    222       case OPCOD_L_CUST6 : {inst->_type = instruction_information(INSTRUCTION_L_CUST6)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST6)._operation; break;}
    223       case OPCOD_L_CUST7 : {inst->_type = instruction_information(INSTRUCTION_L_CUST7)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST7)._operation; break;}
    224       case OPCOD_L_CUST8 : {inst->_type = instruction_information(INSTRUCTION_L_CUST8)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST8)._operation; break;}
     217      case OPCOD_L_CUST1 :
     218        {
     219#ifdef STATISTICS
     220          inst->_opcod     =                         INSTRUCTION_L_CUST1;
     221#endif
     222          inst->_type      = instruction_information(INSTRUCTION_L_CUST1)._type;
     223          inst->_operation = instruction_information(INSTRUCTION_L_CUST1)._operation;
     224          break;
     225        }
     226      case OPCOD_L_CUST2 :
     227        {
     228#ifdef STATISTICS
     229          inst->_opcod     =                         INSTRUCTION_L_CUST2;
     230#endif
     231          inst->_type      = instruction_information(INSTRUCTION_L_CUST2)._type;
     232          inst->_operation = instruction_information(INSTRUCTION_L_CUST2)._operation;
     233          break;
     234        }
     235      case OPCOD_L_CUST3 :
     236        {
     237#ifdef STATISTICS
     238          inst->_opcod     =                         INSTRUCTION_L_CUST3;
     239#endif
     240          inst->_type      = instruction_information(INSTRUCTION_L_CUST3)._type;
     241          inst->_operation = instruction_information(INSTRUCTION_L_CUST3)._operation;
     242          break;
     243        }
     244      case OPCOD_L_CUST4 :
     245        {
     246#ifdef STATISTICS
     247          inst->_opcod     =                         INSTRUCTION_L_CUST4;
     248#endif
     249          inst->_type      = instruction_information(INSTRUCTION_L_CUST4)._type;
     250          inst->_operation = instruction_information(INSTRUCTION_L_CUST4)._operation;
     251          break;
     252        }
     253      case OPCOD_L_CUST5 :
     254        {
     255#ifdef STATISTICS
     256          inst->_opcod     =                         INSTRUCTION_L_CUST5;
     257#endif
     258          inst->_type      = instruction_information(INSTRUCTION_L_CUST5)._type;
     259          inst->_operation = instruction_information(INSTRUCTION_L_CUST5)._operation;
     260          break;
     261        }
     262      case OPCOD_L_CUST6 :
     263        {
     264#ifdef STATISTICS
     265          inst->_opcod     =                         INSTRUCTION_L_CUST6;
     266#endif
     267          inst->_type      = instruction_information(INSTRUCTION_L_CUST6)._type;
     268          inst->_operation = instruction_information(INSTRUCTION_L_CUST6)._operation;
     269          break;
     270        }
     271      case OPCOD_L_CUST7 :
     272        {
     273#ifdef STATISTICS
     274          inst->_opcod     =                         INSTRUCTION_L_CUST7;
     275#endif
     276          inst->_type      = instruction_information(INSTRUCTION_L_CUST7)._type;
     277          inst->_operation = instruction_information(INSTRUCTION_L_CUST7)._operation;
     278          break;
     279        }
     280      case OPCOD_L_CUST8 :
     281        {
     282#ifdef STATISTICS
     283          inst->_opcod     =                         INSTRUCTION_L_CUST8;
     284#endif
     285          inst->_type      = instruction_information(INSTRUCTION_L_CUST8)._type;
     286          inst->_operation = instruction_information(INSTRUCTION_L_CUST8)._operation;
     287          break;
     288        }
    225289
    226290      default            : {throw ERRORMORPHEO("instruction_l_custom",_("Invalid Custom Opcod."));}
     
    240304    switch (opcod)
    241305      {
    242 //       case OPCOD_LF_CUST1_D : {inst->_type = instruction_information(INSTRUCTION_LF_CUST1_D)._type; inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_D)._operation; break;}
    243 //       case OPCOD_LF_CUST1_S : {inst->_type = instruction_information(INSTRUCTION_LF_CUST1_S)._type; inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_S)._operation; break;}
     306//       case OPCOD_LF_CUST1_D :
     307//      {
     308// #ifdef STATISTICS
     309//        inst->_opcod     =                         INSTRUCTION_LF_CUST1_D;
     310// #endif
     311//        inst->_type      = instruction_information(INSTRUCTION_LF_CUST1_D)._type;
     312//        inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_D)._operation;
     313//        break;
     314//      }
     315//       case OPCOD_LF_CUST1_S :
     316//      {
     317// #ifdef STATISTICS
     318//        inst->_opcod     =                         INSTRUCTION_LF_CUST1_S;
     319// #endif
     320//        inst->_type      = instruction_information(INSTRUCTION_LF_CUST1_S)._type;
     321//        inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_S)._operation;
     322//        break;
     323//      }
    244324      default               : {throw ERRORMORPHEO("instruction_lf_custom",_("Invalid Custom Opcod."));}
    245325      }
     
    258338    switch (opcod)
    259339      {
    260 //       case OPCOD_LV_CUST1 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST1)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST1)._operation; break;}
    261 //       case OPCOD_LV_CUST2 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST2)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST2)._operation; break;}
    262 //       case OPCOD_LV_CUST3 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST3)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST3)._operation; break;}
    263 //       case OPCOD_LV_CUST4 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST4)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST4)._operation; break;}
     340//       case OPCOD_LV_CUST1 :
     341//      {
     342// #ifdef STATISTICS
     343//        inst->_opcod     =                         INSTRUCTION_LV_CUST1;
     344// #endif
     345//        inst->_type      = instruction_information(INSTRUCTION_LV_CUST1)._type;
     346//        inst->_operation = instruction_information(INSTRUCTION_LV_CUST1)._operation;
     347//        break;
     348//      }
     349//       case OPCOD_LV_CUST2 :
     350//      {
     351// #ifdef STATISTICS
     352//        inst->_opcod     =                         INSTRUCTION_LV_CUST2;
     353// #endif
     354//        inst->_type      = instruction_information(INSTRUCTION_LV_CUST2)._type;
     355//        inst->_operation = instruction_information(INSTRUCTION_LV_CUST2)._operation;
     356//        break;
     357//      }
     358//       case OPCOD_LV_CUST3 :
     359//      {
     360// #ifdef STATISTICS
     361//        inst->_opcod     =                         INSTRUCTION_LV_CUST3;
     362// #endif
     363//        inst->_type      = instruction_information(INSTRUCTION_LV_CUST3)._type;
     364//        inst->_operation = instruction_information(INSTRUCTION_LV_CUST3)._operation;
     365//        break;
     366//      }
     367//       case OPCOD_LV_CUST4 :
     368//      {
     369// #ifdef STATISTICS
     370//        inst->_opcod     =                         INSTRUCTION_LV_CUST4;
     371// #endif
     372//        inst->_type      = instruction_information(INSTRUCTION_LV_CUST4)._type;
     373//        inst->_operation = instruction_information(INSTRUCTION_LV_CUST4)._operation;
     374//        break;
     375//      }
    264376      default             : {throw ERRORMORPHEO("instruction_lv_custom",_("Invalid Custom Opcod."));}
    265377      }
     
    324436  {
    325437    log_printf(TRACE,Decod,"instruction_l_add","  * instruction   : l.add");
     438#ifdef STATISTICS
     439    inst->_opcod              =                         INSTRUCTION_L_ADD;
     440#endif
    326441    inst->_type               = instruction_information(INSTRUCTION_L_ADD)._type     ; //TYPE_ALU;
    327442    inst->_operation          = instruction_information(INSTRUCTION_L_ADD)._operation; //OPERATION_ALU_L_ADD;
     
    352467    log_printf(TRACE,Decod,"instruction_l_addc","  * instruction   : l.addc");
    353468
     469#ifdef STATISTICS
     470    inst->_opcod              =                         INSTRUCTION_L_ADDC;
     471#endif
    354472    inst->_type               = instruction_information(INSTRUCTION_L_ADDC)._type     ; //TYPE_ALU;
    355473    inst->_operation          = instruction_information(INSTRUCTION_L_ADDC)._operation; //OPERATION_ALU_L_ADD;
     
    380498    log_printf(TRACE,Decod,"instruction_l_addi","  * instruction   : l.addi");
    381499
     500#ifdef STATISTICS
     501    inst->_opcod              =                         INSTRUCTION_L_ADDI;
     502#endif
    382503    inst->_type               = instruction_information(INSTRUCTION_L_ADDI)._type     ; //TYPE_ALU;
    383504    inst->_operation          = instruction_information(INSTRUCTION_L_ADDI)._operation; //OPERATION_ALU_L_ADD;
     
    408529    log_printf(TRACE,Decod,"instruction_l_addic","  * instruction   : l.addic");
    409530
     531#ifdef STATISTICS
     532    inst->_opcod              =                         INSTRUCTION_L_ADDIC;
     533#endif
    410534    inst->_type               = instruction_information(INSTRUCTION_L_ADDIC)._type     ; //TYPE_ALU;
    411535    inst->_operation          = instruction_information(INSTRUCTION_L_ADDIC)._operation; //OPERATION_ALU_L_ADD;
     
    436560    log_printf(TRACE,Decod,"instruction_l_and","  * instruction   : l.and");
    437561
     562#ifdef STATISTICS
     563    inst->_opcod              =                         INSTRUCTION_L_AND;
     564#endif
    438565    inst->_type               = instruction_information(INSTRUCTION_L_AND)._type     ; //TYPE_ALU;
    439566    inst->_operation          = instruction_information(INSTRUCTION_L_AND)._operation; //OPERATION_ALU_L_AND;
     
    464591    log_printf(TRACE,Decod,"instruction_l_andi","  * instruction   : l.andi");
    465592
     593#ifdef STATISTICS
     594    inst->_opcod              =                         INSTRUCTION_L_ANDI;
     595#endif
    466596    inst->_type               = instruction_information(INSTRUCTION_L_ANDI)._type     ; //TYPE_ALU;
    467597    inst->_operation          = instruction_information(INSTRUCTION_L_ANDI)._operation; //OPERATION_ALU_L_AND;
     
    495625                                                   );
    496626
     627#ifdef STATISTICS
     628    inst->_opcod              =                         INSTRUCTION_L_BF;
     629#endif
    497630    inst->_type               = instruction_information(INSTRUCTION_L_BF)._type     ; //TYPE_BRANCH;
    498631    inst->_operation          = instruction_information(INSTRUCTION_L_BF)._operation; //OPERATION_BRANCH_L_TEST_F;
     
    527660                                                   );
    528661
     662#ifdef STATISTICS
     663    inst->_opcod              =                         INSTRUCTION_L_BNF;
     664#endif
    529665    inst->_type               = instruction_information(INSTRUCTION_L_BNF)._type     ; //TYPE_BRANCH;
    530666    inst->_operation          = instruction_information(INSTRUCTION_L_BNF)._operation; //OPERATION_BRANCH_L_TEST_NF;
     
    555691    log_printf(TRACE,Decod,"instruction_l_cmov","  * instruction   : l.cmov");
    556692
     693#ifdef STATISTICS
     694    inst->_opcod              =                         INSTRUCTION_L_CMOV;
     695#endif
    557696    inst->_type               = instruction_information(INSTRUCTION_L_CMOV)._type     ; //TYPE_MOVE;
    558697    inst->_operation          = instruction_information(INSTRUCTION_L_CMOV)._operation; //OPERATION_MOVE_L_CMOV;
     
    589728    else
    590729      {
     730#ifdef STATISTICS
     731    inst->_opcod              =                         INSTRUCTION_L_CSYNC;
     732#endif
    591733    inst->_type               = instruction_information(INSTRUCTION_L_CSYNC)._type     ; //TYPE_SPECIAL;
    592734    inst->_operation          = instruction_information(INSTRUCTION_L_CSYNC)._operation; //OPERATION_SPECIAL_L_CSYNC;
     
    627769    log_printf(TRACE,Decod,"instruction_l_div","  * instruction   : l.div");
    628770
     771#ifdef STATISTICS
     772    inst->_opcod              =                         INSTRUCTION_L_DIV;
     773#endif
    629774    inst->_type               = instruction_information(INSTRUCTION_L_DIV)._type     ; //TYPE_DIV;
    630775    inst->_operation          = instruction_information(INSTRUCTION_L_DIV)._operation; //OPERATION_DIV_L_DIV;
     
    655800    log_printf(TRACE,Decod,"instruction_l_divu","  * instruction   : l.divu");
    656801
     802#ifdef STATISTICS
     803    inst->_opcod              =                         INSTRUCTION_L_DIVU;
     804#endif
    657805    inst->_type               = instruction_information(INSTRUCTION_L_DIVU)._type     ; //TYPE_DIV;
    658806    inst->_operation          = instruction_information(INSTRUCTION_L_DIVU)._operation; //OPERATION_DIV_L_DIVU;
     
    683831    log_printf(TRACE,Decod,"instruction_l_extbs","  * instruction   : l.extbs");
    684832
     833#ifdef STATISTICS
     834    inst->_opcod              =                         INSTRUCTION_L_EXTBS;
     835#endif
    685836    inst->_type               = instruction_information(INSTRUCTION_L_EXTBS)._type     ; //TYPE_EXTEND;
    686837    inst->_operation          = instruction_information(INSTRUCTION_L_EXTBS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
     
    711862    log_printf(TRACE,Decod,"instruction_l_extbz","  * instruction   : l.extbz");
    712863
     864#ifdef STATISTICS
     865    inst->_opcod              =                         INSTRUCTION_L_EXTBZ;
     866#endif
    713867    inst->_type               = instruction_information(INSTRUCTION_L_EXTBZ)._type     ; //TYPE_EXTEND;
    714868    inst->_operation          = instruction_information(INSTRUCTION_L_EXTBZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
     
    739893    log_printf(TRACE,Decod,"instruction_l_exths","  * instruction   : l.exths");
    740894
     895#ifdef STATISTICS
     896    inst->_opcod              =                         INSTRUCTION_L_EXTHS;
     897#endif
    741898    inst->_type               = instruction_information(INSTRUCTION_L_EXTHS)._type     ; //TYPE_EXTEND;
    742899    inst->_operation          = instruction_information(INSTRUCTION_L_EXTHS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
     
    767924    log_printf(TRACE,Decod,"instruction_l_exthz","  * instruction   : l.exthz");
    768925
     926#ifdef STATISTICS
     927    inst->_opcod              =                         INSTRUCTION_L_EXTHZ;
     928#endif
    769929    inst->_type               = instruction_information(INSTRUCTION_L_EXTHZ)._type     ; //TYPE_EXTEND;
    770930    inst->_operation          = instruction_information(INSTRUCTION_L_EXTHZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
     
    795955    log_printf(TRACE,Decod,"instruction_l_extws","  * instruction   : l.extws");
    796956
     957#ifdef STATISTICS
     958    inst->_opcod              =                         INSTRUCTION_L_EXTWS;
     959#endif
    797960    inst->_type               = instruction_information(INSTRUCTION_L_EXTWS)._type     ; //TYPE_EXTEND;
    798961    inst->_operation          = instruction_information(INSTRUCTION_L_EXTWS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
     
    823986    log_printf(TRACE,Decod,"instruction_l_extwz","  * instruction   : l.extwz");
    824987
     988#ifdef STATISTICS
     989    inst->_opcod              =                         INSTRUCTION_L_EXTWZ;
     990#endif
    825991    inst->_type               = instruction_information(INSTRUCTION_L_EXTWZ)._type     ; //TYPE_EXTEND;
    826992    inst->_operation          = instruction_information(INSTRUCTION_L_EXTWZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
     
    8511017    log_printf(TRACE,Decod,"instruction_l_ff1","  * instruction   : l.ff1");
    8521018
     1019#ifdef STATISTICS
     1020    inst->_opcod              =                         INSTRUCTION_L_FF1;
     1021#endif
    8531022    inst->_type               = instruction_information(INSTRUCTION_L_FF1)._type     ; //TYPE_FIND;
    8541023    inst->_operation          = instruction_information(INSTRUCTION_L_FF1)._operation; //OPERATION_FIND_L_FF1;
     
    8791048    log_printf(TRACE,Decod,"instruction_l_fl1","  * instruction   : l.fl1");
    8801049
     1050#ifdef STATISTICS
     1051    inst->_opcod              =                         INSTRUCTION_L_FL1;
     1052#endif
    8811053    inst->_type               = instruction_information(INSTRUCTION_L_FL1)._type     ; //TYPE_FIND;
    8821054    inst->_operation          = instruction_information(INSTRUCTION_L_FL1)._operation; //OPERATION_FIND_L_FL1;
     
    9071079    log_printf(TRACE,Decod,"instruction_l_j","  * instruction   : l.j");
    9081080
     1081#ifdef STATISTICS
     1082    inst->_opcod              =                         INSTRUCTION_L_J;
     1083#endif
    9091084    inst->_type               = instruction_information(INSTRUCTION_L_J)._type     ; //TYPE_BRANCH;
    9101085    inst->_operation          = instruction_information(INSTRUCTION_L_J)._operation; //OPERATION_BRANCH_NONE;
     
    9361111    log_printf(TRACE,Decod,"instruction_l_jal","  * instruction   : l.jal");
    9371112
     1113#ifdef STATISTICS
     1114    inst->_opcod              =                         INSTRUCTION_L_JAL;
     1115#endif
    9381116    inst->_type               = instruction_information(INSTRUCTION_L_JAL)._type     ; //TYPE_BRANCH;
    9391117    inst->_operation          = instruction_information(INSTRUCTION_L_JAL)._operation; //OPERATION_BRANCH_L_JALR;
     
    9731151    else
    9741152      {
     1153#ifdef STATISTICS
     1154    inst->_opcod              =                         INSTRUCTION_L_JALR;
     1155#endif
    9751156    inst->_type               = instruction_information(INSTRUCTION_L_JALR)._type     ; //TYPE_BRANCH;
    9761157    inst->_operation          = instruction_information(INSTRUCTION_L_JALR)._operation; //OPERATION_BRANCH_L_JALR;
     
    10031184    log_printf(TRACE,Decod,"instruction_l_jr","  * instruction   : l.jr");
    10041185
     1186#ifdef STATISTICS
     1187    inst->_opcod              =                         INSTRUCTION_L_JR;
     1188#endif
    10051189    inst->_type               = instruction_information(INSTRUCTION_L_JR)._type     ; //TYPE_BRANCH;
    10061190    inst->_operation          = instruction_information(INSTRUCTION_L_JR)._operation; //OPERATION_BRANCH_L_JALR;
     
    10311215    log_printf(TRACE,Decod,"instruction_l_lbs","  * instruction   : l.lbs");
    10321216
     1217#ifdef STATISTICS
     1218    inst->_opcod              =                         INSTRUCTION_L_LBS;
     1219#endif
    10331220    inst->_type               = instruction_information(INSTRUCTION_L_LBS)._type     ; //TYPE_MEMORY;
    10341221    inst->_operation          = instruction_information(INSTRUCTION_L_LBS)._operation; //OPERATION_MEMORY_LOAD_8_S;
     
    10591246    log_printf(TRACE,Decod,"instruction_l_lbz","  * instruction   : l.lbz");
    10601247
     1248#ifdef STATISTICS
     1249    inst->_opcod              =                         INSTRUCTION_L_LBZ;
     1250#endif
    10611251    inst->_type               = instruction_information(INSTRUCTION_L_LBZ)._type     ; //TYPE_MEMORY;
    10621252    inst->_operation          = instruction_information(INSTRUCTION_L_LBZ)._operation; //OPERATION_MEMORY_LOAD_8_Z;
     
    10871277    log_printf(TRACE,Decod,"instruction_l_ld","  * instruction   : l.ld");
    10881278
     1279#ifdef STATISTICS
     1280    inst->_opcod              =                         INSTRUCTION_L_LD;
     1281#endif
    10891282    inst->_type               = instruction_information(INSTRUCTION_L_LD)._type     ; //TYPE_MEMORY;
    10901283    inst->_operation          = instruction_information(INSTRUCTION_L_LD)._operation; //OPERATION_MEMORY_LOAD_64_S;
     
    11151308    log_printf(TRACE,Decod,"instruction_l_lhs","  * instruction   : l.lhs");
    11161309
     1310#ifdef STATISTICS
     1311    inst->_opcod              =                         INSTRUCTION_L_LHS;
     1312#endif
    11171313    inst->_type               = instruction_information(INSTRUCTION_L_LHS)._type     ; //TYPE_MEMORY;
    11181314    inst->_operation          = instruction_information(INSTRUCTION_L_LHS)._operation; //OPERATION_MEMORY_LOAD_16_S;
     
    11431339    log_printf(TRACE,Decod,"instruction_l_lhz","  * instruction   : l.lhz");
    11441340
     1341#ifdef STATISTICS
     1342    inst->_opcod              =                         INSTRUCTION_L_LHZ;
     1343#endif
    11451344    inst->_type               = instruction_information(INSTRUCTION_L_LHZ)._type     ; //TYPE_MEMORY;
    11461345    inst->_operation          = instruction_information(INSTRUCTION_L_LHZ)._operation; //OPERATION_MEMORY_LOAD_16_Z;
     
    11711370    log_printf(TRACE,Decod,"instruction_l_lws","  * instruction   : l.lws");
    11721371
     1372#ifdef STATISTICS
     1373    inst->_opcod              =                         INSTRUCTION_L_LWS;
     1374#endif
    11731375    inst->_type               = instruction_information(INSTRUCTION_L_LWS)._type     ; //TYPE_MEMORY;
    11741376    inst->_operation          = instruction_information(INSTRUCTION_L_LWS)._operation; //OPERATION_MEMORY_LOAD_32_S;
     
    11991401    log_printf(TRACE,Decod,"instruction_l_lwz","  * instruction   : l.lwz");
    12001402
     1403#ifdef STATISTICS
     1404    inst->_opcod              =                         INSTRUCTION_L_LWZ;
     1405#endif
    12011406    inst->_type               = instruction_information(INSTRUCTION_L_LWZ)._type     ; //TYPE_MEMORY;
    12021407    inst->_operation          = instruction_information(INSTRUCTION_L_LWZ)._operation; //OPERATION_MEMORY_LOAD_32_Z;
     
    12271432    log_printf(TRACE,Decod,"instruction_l_mac","  * instruction   : l.mac");
    12281433
     1434#ifdef STATISTICS
     1435    inst->_opcod              =                         INSTRUCTION_L_MAC;
     1436#endif
    12291437    inst->_type               = instruction_information(INSTRUCTION_L_MAC)._type     ; //TYPE_SPECIAL;
    12301438    inst->_operation          = instruction_information(INSTRUCTION_L_MAC)._operation; //OPERATION_SPECIAL_L_MAC;
     
    12551463    log_printf(TRACE,Decod,"instruction_l_maci","  * instruction   : l.maci");
    12561464
     1465#ifdef STATISTICS
     1466    inst->_opcod              =                         INSTRUCTION_L_MACI;
     1467#endif
    12571468    inst->_type               = instruction_information(INSTRUCTION_L_MACI)._type     ; //TYPE_SPECIAL;
    12581469    inst->_operation          = instruction_information(INSTRUCTION_L_MACI)._operation; //OPERATION_SPECIAL_L_MAC;
     
    12901501    else
    12911502      {
     1503#ifdef STATISTICS
     1504    inst->_opcod              =                         INSTRUCTION_L_MACRC;
     1505#endif
    12921506    inst->_type               = instruction_information(INSTRUCTION_L_MACRC)._type     ; //TYPE_SPECIAL;
    12931507    inst->_operation          = instruction_information(INSTRUCTION_L_MACRC)._operation; //OPERATION_SPECIAL_L_MACRC;
     
    13191533    log_printf(TRACE,Decod,"instruction_l_mfspr","  * instruction   : l.mfspr");
    13201534
     1535#ifdef STATISTICS
     1536    inst->_opcod              =                         INSTRUCTION_L_MFSPR;
     1537#endif
    13211538    inst->_type               = instruction_information(INSTRUCTION_L_MFSPR)._type     ; //TYPE_SPECIAL;
    13221539    inst->_operation          = instruction_information(INSTRUCTION_L_MFSPR)._operation; //OPERATION_SPECIAL_L_MFSPR;
     
    13471564    log_printf(TRACE,Decod,"instruction_l_movhi","  * instruction   : l.movhi");
    13481565
     1566#ifdef STATISTICS
     1567    inst->_opcod              =                         INSTRUCTION_L_MOVHI;
     1568#endif
    13491569    inst->_type               = instruction_information(INSTRUCTION_L_MOVHI)._type     ; //TYPE_MOVE;
    13501570    inst->_operation          = instruction_information(INSTRUCTION_L_MOVHI)._operation; //OPERATION_MOVE_L_MOVHI;
     
    13751595    log_printf(TRACE,Decod,"instruction_l_msb","  * instruction   : l.msb");
    13761596
     1597#ifdef STATISTICS
     1598    inst->_opcod              =                         INSTRUCTION_L_MSB;
     1599#endif
    13771600    inst->_type               = instruction_information(INSTRUCTION_L_MSB)._type     ; //TYPE_SPECIAL;
    13781601    inst->_operation          = instruction_information(INSTRUCTION_L_MSB)._operation; //OPERATION_SPECIAL_L_MSB;
     
    14091632    else
    14101633      {
     1634#ifdef STATISTICS
     1635    inst->_opcod              =                         INSTRUCTION_L_MSYNC;
     1636#endif
    14111637    inst->_type               = instruction_information(INSTRUCTION_L_MSYNC)._type     ; //TYPE_SPECIAL;
    14121638    inst->_operation          = instruction_information(INSTRUCTION_L_MSYNC)._operation; //OPERATION_SPECIAL_L_MSYNC;
     
    14381664    log_printf(TRACE,Decod,"instruction_l_mtspr","  * instruction   : l.mtspr");
    14391665
     1666#ifdef STATISTICS
     1667    inst->_opcod              =                         INSTRUCTION_L_MTSPR;
     1668#endif
    14401669    inst->_type               = instruction_information(INSTRUCTION_L_MTSPR)._type     ; //TYPE_SPECIAL;
    14411670    inst->_operation          = instruction_information(INSTRUCTION_L_MTSPR)._operation; //OPERATION_SPECIAL_L_MTSPR;
     
    14671696    log_printf(TRACE,Decod,"instruction_l_mul","  * instruction   : l.mul");
    14681697
     1698#ifdef STATISTICS
     1699    inst->_opcod              =                         INSTRUCTION_L_MUL;
     1700#endif
    14691701    inst->_type               = instruction_information(INSTRUCTION_L_MUL)._type     ; //TYPE_MUL;
    14701702    inst->_operation          = instruction_information(INSTRUCTION_L_MUL)._operation; //OPERATION_MUL_L_MUL;
     
    14951727    log_printf(TRACE,Decod,"instruction_l_muli","  * instruction   : l.muli");
    14961728
     1729#ifdef STATISTICS
     1730    inst->_opcod              =                         INSTRUCTION_L_MULI;
     1731#endif
    14971732    inst->_type               = instruction_information(INSTRUCTION_L_MULI)._type     ; //TYPE_MUL;
    14981733    inst->_operation          = instruction_information(INSTRUCTION_L_MULI)._operation; //OPERATION_MUL_L_MUL;
     
    15231758    log_printf(TRACE,Decod,"instruction_l_mulu","  * instruction   : l.mulu");
    15241759
     1760#ifdef STATISTICS
     1761    inst->_opcod              =                         INSTRUCTION_L_MULU;
     1762#endif
    15251763    inst->_type               = instruction_information(INSTRUCTION_L_MULU)._type     ; //TYPE_MUL;
    15261764    inst->_operation          = instruction_information(INSTRUCTION_L_MULU)._operation; //OPERATION_MUL_L_MULU;
     
    15511789    log_printf(TRACE,Decod,"instruction_l_nop","  * instruction   : l.nop");
    15521790
     1791#ifdef STATISTICS
     1792    inst->_opcod              =                         INSTRUCTION_L_NOP;
     1793#endif
    15531794    inst->_type               = instruction_information(INSTRUCTION_L_NOP)._type     ; //TYPE_SPECIAL;
    15541795    inst->_operation          = instruction_information(INSTRUCTION_L_NOP)._operation; //OPERATION_SPECIAL_L_NOP;
     
    15811822    log_printf(TRACE,Decod,"instruction_l_or","  * instruction   : l.or");
    15821823
     1824#ifdef STATISTICS
     1825    inst->_opcod              =                         INSTRUCTION_L_OR;
     1826#endif
    15831827    inst->_type               = instruction_information(INSTRUCTION_L_OR)._type     ; //TYPE_ALU;
    15841828    inst->_operation          = instruction_information(INSTRUCTION_L_OR)._operation; //OPERATION_ALU_L_OR;
     
    16091853    log_printf(TRACE,Decod,"instruction_l_ori","  * instruction   : l.ori");
    16101854
     1855#ifdef STATISTICS
     1856    inst->_opcod              =                         INSTRUCTION_L_ORI;
     1857#endif
    16111858    inst->_type               = instruction_information(INSTRUCTION_L_ORI)._type     ; //TYPE_ALU;
    16121859    inst->_operation          = instruction_information(INSTRUCTION_L_ORI)._operation; //OPERATION_ALU_L_OR;
     
    16431890    else
    16441891      {
     1892#ifdef STATISTICS
     1893    inst->_opcod              =                         INSTRUCTION_L_PSYNC;
     1894#endif
    16451895    inst->_type               = instruction_information(INSTRUCTION_L_PSYNC)._type     ; //TYPE_SPECIAL;
    16461896    inst->_operation          = instruction_information(INSTRUCTION_L_PSYNC)._operation; //OPERATION_SPECIAL_L_PSYNC;
     
    16721922    log_printf(TRACE,Decod,"instruction_l_rfe","  * instruction   : l.rfe");
    16731923
     1924#ifdef STATISTICS
     1925    inst->_opcod              =                         INSTRUCTION_L_RFE;
     1926#endif
    16741927    inst->_type               = instruction_information(INSTRUCTION_L_RFE)._type     ; //TYPE_SPECIAL;
    16751928    inst->_operation          = instruction_information(INSTRUCTION_L_RFE)._operation; //OPERATION_SPECIAL_L_RFE;
     
    17001953    log_printf(TRACE,Decod,"instruction_l_ror","  * instruction   : l.ror");
    17011954
     1955#ifdef STATISTICS
     1956    inst->_opcod              =                         INSTRUCTION_L_ROR;
     1957#endif
    17021958    inst->_type               = instruction_information(INSTRUCTION_L_ROR)._type     ; //TYPE_SHIFT;
    17031959    inst->_operation          = instruction_information(INSTRUCTION_L_ROR)._operation; //OPERATION_SHIFT_L_ROR;
     
    17281984    log_printf(TRACE,Decod,"instruction_l_rori","  * instruction   : l.rori");
    17291985
     1986#ifdef STATISTICS
     1987    inst->_opcod              =                         INSTRUCTION_L_RORI;
     1988#endif
    17301989    inst->_type               = instruction_information(INSTRUCTION_L_RORI)._type     ; //TYPE_SHIFT;
    17311990    inst->_operation          = instruction_information(INSTRUCTION_L_RORI)._operation; //OPERATION_SHIFT_L_ROR;
     
    17562015    log_printf(TRACE,Decod,"instruction_l_sb","  * instruction   : l.sb");
    17572016
     2017#ifdef STATISTICS
     2018    inst->_opcod              =                         INSTRUCTION_L_SB;
     2019#endif
    17582020    inst->_type               = instruction_information(INSTRUCTION_L_SB)._type     ; //TYPE_MEMORY;
    17592021    inst->_operation          = instruction_information(INSTRUCTION_L_SB)._operation; //OPERATION_MEMORY_STORE_8;
     
    17852047    log_printf(TRACE,Decod,"instruction_l_sb","  * instruction   : l.sb");
    17862048
     2049#ifdef STATISTICS
     2050    inst->_opcod              =                         INSTRUCTION_L_SD;
     2051#endif
    17872052    inst->_type               = instruction_information(INSTRUCTION_L_SD)._type     ; //TYPE_MEMORY;
    17882053    inst->_operation          = instruction_information(INSTRUCTION_L_SD)._operation; //OPERATION_MEMORY_STORE_64;
     
    18142079    log_printf(TRACE,Decod,"instruction_l_sfeq","  * instruction   : l.sfeq");
    18152080
     2081#ifdef STATISTICS
     2082    inst->_opcod              =                         INSTRUCTION_L_SFEQ;
     2083#endif
    18162084    inst->_type               = instruction_information(INSTRUCTION_L_SFEQ)._type     ; //TYPE_TEST;
    18172085    inst->_operation          = instruction_information(INSTRUCTION_L_SFEQ)._operation; //OPERATION_TEST_L_SFEQ;
     
    18422110    log_printf(TRACE,Decod,"instruction_l_sfeqi","  * instruction   : l.sfeqi");
    18432111
     2112#ifdef STATISTICS
     2113    inst->_opcod              =                         INSTRUCTION_L_SFEQI;
     2114#endif
    18442115    inst->_type               = instruction_information(INSTRUCTION_L_SFEQI)._type     ; //TYPE_TEST;
    18452116    inst->_operation          = instruction_information(INSTRUCTION_L_SFEQI)._operation; //OPERATION_TEST_L_SFEQ;
     
    18702141    log_printf(TRACE,Decod,"instruction_l_sfges","  * instruction   : l.sfges");
    18712142
     2143#ifdef STATISTICS
     2144    inst->_opcod              =                         INSTRUCTION_L_SFGES;
     2145#endif
    18722146    inst->_type               = instruction_information(INSTRUCTION_L_SFGES)._type     ; //TYPE_TEST;
    18732147    inst->_operation          = instruction_information(INSTRUCTION_L_SFGES)._operation; //OPERATION_TEST_L_SFGES;
     
    18982172    log_printf(TRACE,Decod,"instruction_l_sfgesi","  * instruction   : l.sfgesi");
    18992173
     2174#ifdef STATISTICS
     2175    inst->_opcod              =                         INSTRUCTION_L_SFGESI;
     2176#endif
    19002177    inst->_type               = instruction_information(INSTRUCTION_L_SFGESI)._type     ; //TYPE_TEST;
    19012178    inst->_operation          = instruction_information(INSTRUCTION_L_SFGESI)._operation; //OPERATION_TEST_L_SFGES;
     
    19262203    log_printf(TRACE,Decod,"instruction_l_sfgeu","  * instruction   : l.sfgeu");
    19272204
     2205#ifdef STATISTICS
     2206    inst->_opcod              =                         INSTRUCTION_L_SFGEU;
     2207#endif
    19282208    inst->_type               = instruction_information(INSTRUCTION_L_SFGEU)._type     ; //TYPE_TEST;
    19292209    inst->_operation          = instruction_information(INSTRUCTION_L_SFGEU)._operation; //OPERATION_TEST_L_SFGEU;
     
    19542234    log_printf(TRACE,Decod,"instruction_l_sfgeui","  * instruction   : l.sfgeui");
    19552235
     2236#ifdef STATISTICS
     2237    inst->_opcod              =                         INSTRUCTION_L_SFGEUI;
     2238#endif
    19562239    inst->_type               = instruction_information(INSTRUCTION_L_SFGEUI)._type     ; //TYPE_TEST;
    19572240    inst->_operation          = instruction_information(INSTRUCTION_L_SFGEUI)._operation; //OPERATION_TEST_L_SFGEU;
     
    19822265    log_printf(TRACE,Decod,"instruction_l_sfgts","  * instruction   : l.sfgts");
    19832266
     2267#ifdef STATISTICS
     2268    inst->_opcod              =                         INSTRUCTION_L_SFGTS;
     2269#endif
    19842270    inst->_type               = instruction_information(INSTRUCTION_L_SFGTS)._type     ; //TYPE_TEST;
    19852271    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTS)._operation; //OPERATION_TEST_L_SFGTS;
     
    20102296    log_printf(TRACE,Decod,"instruction_l_sfgtsi","  * instruction   : l.sfgtsi");
    20112297
     2298#ifdef STATISTICS
     2299    inst->_opcod              =                         INSTRUCTION_L_SFGTSI;
     2300#endif
    20122301    inst->_type               = instruction_information(INSTRUCTION_L_SFGTSI)._type     ; //TYPE_TEST;
    20132302    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTSI)._operation; //OPERATION_TEST_L_SFGTS;
     
    20382327    log_printf(TRACE,Decod,"instruction_l_sfgtu","  * instruction   : l.sfgtu");
    20392328
     2329#ifdef STATISTICS
     2330    inst->_opcod              =                         INSTRUCTION_L_SFGTU;
     2331#endif
    20402332    inst->_type               = instruction_information(INSTRUCTION_L_SFGTU)._type     ; //TYPE_TEST;
    20412333    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTU)._operation; //OPERATION_TEST_L_SFGTU;
     
    20662358    log_printf(TRACE,Decod,"instruction_l_sfgtui","  * instruction   : l.sfgtui");
    20672359
     2360#ifdef STATISTICS
     2361    inst->_opcod              =                         INSTRUCTION_L_SFGTUI;
     2362#endif
    20682363    inst->_type               = instruction_information(INSTRUCTION_L_SFGTUI)._type     ; //TYPE_TEST;
    20692364    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTUI)._operation; //OPERATION_TEST_L_SFGTU;
     
    20942389    log_printf(TRACE,Decod,"instruction_l_sfles","  * instruction   : l.sfles");
    20952390
     2391#ifdef STATISTICS
     2392    inst->_opcod              =                         INSTRUCTION_L_SFLES;
     2393#endif
    20962394    inst->_type               = instruction_information(INSTRUCTION_L_SFLES)._type     ; //TYPE_TEST;
    20972395    inst->_operation          = instruction_information(INSTRUCTION_L_SFLES)._operation; //OPERATION_TEST_L_SFLES;
     
    21222420    log_printf(TRACE,Decod,"instruction_l_sflesi","  * instruction   : l.sflesi");
    21232421
     2422#ifdef STATISTICS
     2423    inst->_opcod              =                         INSTRUCTION_L_SFLESI;
     2424#endif
    21242425    inst->_type               = instruction_information(INSTRUCTION_L_SFLESI)._type     ; //TYPE_TEST;
    21252426    inst->_operation          = instruction_information(INSTRUCTION_L_SFLESI)._operation; //OPERATION_TEST_L_SFLES;
     
    21502451    log_printf(TRACE,Decod,"instruction_l_sfleu","  * instruction   : l.sfleu");
    21512452
     2453#ifdef STATISTICS
     2454    inst->_opcod              =                         INSTRUCTION_L_SFLEU;
     2455#endif
    21522456    inst->_type               = instruction_information(INSTRUCTION_L_SFLEU)._type     ; //TYPE_TEST;
    21532457    inst->_operation          = instruction_information(INSTRUCTION_L_SFLEU)._operation; //OPERATION_TEST_L_SFLEU;
     
    21782482    log_printf(TRACE,Decod,"instruction_l_sfleui","  * instruction   : l.sfleui");
    21792483
     2484#ifdef STATISTICS
     2485    inst->_opcod              =                         INSTRUCTION_L_SFLEUI;
     2486#endif
    21802487    inst->_type               = instruction_information(INSTRUCTION_L_SFLEUI)._type     ; //TYPE_TEST;
    21812488    inst->_operation          = instruction_information(INSTRUCTION_L_SFLEUI)._operation; //OPERATION_TEST_L_SFLEU;
     
    22062513    log_printf(TRACE,Decod,"instruction_l_sflts","  * instruction   : l.sflts");
    22072514
     2515#ifdef STATISTICS
     2516    inst->_opcod              =                         INSTRUCTION_L_SFLTS;
     2517#endif
    22082518    inst->_type               = instruction_information(INSTRUCTION_L_SFLTS)._type     ; //TYPE_TEST;
    22092519    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTS)._operation; //OPERATION_TEST_L_SFLTS;
     
    22342544    log_printf(TRACE,Decod,"instruction_l_sfltsi","  * instruction   : l.sfltsi");
    22352545
     2546#ifdef STATISTICS
     2547    inst->_opcod              =                         INSTRUCTION_L_SFLTSI;
     2548#endif
    22362549    inst->_type               = instruction_information(INSTRUCTION_L_SFLTSI)._type     ; //TYPE_TEST;
    22372550    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTSI)._operation; //OPERATION_TEST_L_SFLTS;
     
    22622575    log_printf(TRACE,Decod,"instruction_l_sfltu","  * instruction   : l.sfltu");
    22632576
     2577#ifdef STATISTICS
     2578    inst->_opcod              =                         INSTRUCTION_L_SFLTU;
     2579#endif
    22642580    inst->_type               = instruction_information(INSTRUCTION_L_SFLTU)._type     ; //TYPE_TEST;
    22652581    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTU)._operation; //OPERATION_TEST_L_SFLTU;
     
    22902606    log_printf(TRACE,Decod,"instruction_l_sfltui","  * instruction   : l.sfltui");
    22912607
     2608#ifdef STATISTICS
     2609    inst->_opcod              =                         INSTRUCTION_L_SFLTUI;
     2610#endif
    22922611    inst->_type               = instruction_information(INSTRUCTION_L_SFLTUI)._type     ; //TYPE_TEST;
    22932612    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTUI)._operation; //OPERATION_TEST_L_SFLTU;
     
    23182637    log_printf(TRACE,Decod,"instruction_l_sfne","  * instruction   : l.sfne");
    23192638
     2639#ifdef STATISTICS
     2640    inst->_opcod              =                         INSTRUCTION_L_SFNE;
     2641#endif
    23202642    inst->_type               = instruction_information(INSTRUCTION_L_SFNE)._type     ; //TYPE_TEST;
    23212643    inst->_operation          = instruction_information(INSTRUCTION_L_SFNE)._operation; //OPERATION_TEST_L_SFNE;
     
    23462668    log_printf(TRACE,Decod,"instruction_l_sfnei","  * instruction   : l.sfnei");
    23472669
     2670#ifdef STATISTICS
     2671    inst->_opcod              =                         INSTRUCTION_L_SFNEI;
     2672#endif
    23482673    inst->_type               = instruction_information(INSTRUCTION_L_SFNEI)._type     ; //TYPE_TEST;
    23492674    inst->_operation          = instruction_information(INSTRUCTION_L_SFNEI)._operation; //OPERATION_TEST_L_SFNE;
     
    23742699    log_printf(TRACE,Decod,"instruction_l_sh","  * instruction   : l.sh");
    23752700
     2701#ifdef STATISTICS
     2702    inst->_opcod              =                         INSTRUCTION_L_SH;
     2703#endif
    23762704    inst->_type               = instruction_information(INSTRUCTION_L_SH)._type     ; //TYPE_MEMORY;
    23772705    inst->_operation          = instruction_information(INSTRUCTION_L_SH)._operation; //OPERATION_MEMORY_STORE_16;
     
    24032731    log_printf(TRACE,Decod,"instruction_l_sll","  * instruction   : l.sll");
    24042732
     2733#ifdef STATISTICS
     2734    inst->_opcod              =                         INSTRUCTION_L_SLL;
     2735#endif
    24052736    inst->_type               = instruction_information(INSTRUCTION_L_SLL)._type     ; //TYPE_SHIFT;
    24062737    inst->_operation          = instruction_information(INSTRUCTION_L_SLL)._operation; //OPERATION_SHIFT_L_SLL;
     
    24312762    log_printf(TRACE,Decod,"instruction_l_slli","  * instruction   : l.slli");
    24322763
     2764#ifdef STATISTICS
     2765    inst->_opcod              =                         INSTRUCTION_L_SLLI;
     2766#endif
    24332767    inst->_type               = instruction_information(INSTRUCTION_L_SLLI)._type     ; //TYPE_SHIFT;
    24342768    inst->_operation          = instruction_information(INSTRUCTION_L_SLLI)._operation; //OPERATION_SHIFT_L_SLL;
     
    24592793    log_printf(TRACE,Decod,"instruction_l_sra","  * instruction   : l.sra");
    24602794
     2795#ifdef STATISTICS
     2796    inst->_opcod              =                         INSTRUCTION_L_SRA;
     2797#endif
    24612798    inst->_type               = instruction_information(INSTRUCTION_L_SRA)._type     ; //TYPE_SHIFT;
    24622799    inst->_operation          = instruction_information(INSTRUCTION_L_SRA)._operation; //OPERATION_SHIFT_L_SRA;
     
    24872824    log_printf(TRACE,Decod,"instruction_l_srai","  * instruction   : l.srai");
    24882825
     2826#ifdef STATISTICS
     2827    inst->_opcod              =                         INSTRUCTION_L_SRAI;
     2828#endif
    24892829    inst->_type               = instruction_information(INSTRUCTION_L_SRAI)._type     ; //TYPE_SHIFT;
    24902830    inst->_operation          = instruction_information(INSTRUCTION_L_SRAI)._operation; //OPERATION_SHIFT_L_SRA;
     
    25152855    log_printf(TRACE,Decod,"instruction_l_srl","  * instruction   : l.srl");
    25162856
     2857#ifdef STATISTICS
     2858    inst->_opcod              =                         INSTRUCTION_L_SRL;
     2859#endif
    25172860    inst->_type               = instruction_information(INSTRUCTION_L_SRL)._type     ; //TYPE_SHIFT;
    25182861    inst->_operation          = instruction_information(INSTRUCTION_L_SRL)._operation; //OPERATION_SHIFT_L_SRL;
     
    25432886    log_printf(TRACE,Decod,"instruction_l_srli","  * instruction   : l.srli");
    25442887
     2888#ifdef STATISTICS
     2889    inst->_opcod              =                         INSTRUCTION_L_SRLI;
     2890#endif
    25452891    inst->_type               = instruction_information(INSTRUCTION_L_SRLI)._type     ; //TYPE_SHIFT;
    25462892    inst->_operation          = instruction_information(INSTRUCTION_L_SRLI)._operation; //OPERATION_SHIFT_L_SRL;
     
    25712917    log_printf(TRACE,Decod,"instruction_l_sub","  * instruction   : l.sub");
    25722918
     2919#ifdef STATISTICS
     2920    inst->_opcod              =                         INSTRUCTION_L_SUB;
     2921#endif
    25732922    inst->_type               = instruction_information(INSTRUCTION_L_SUB)._type     ; //TYPE_ALU;
    25742923    inst->_operation          = instruction_information(INSTRUCTION_L_SUB)._operation; //OPERATION_ALU_L_SUB;
     
    25992948    log_printf(TRACE,Decod,"instruction_l_sw","  * instruction   : l.sw");
    26002949
     2950#ifdef STATISTICS
     2951    inst->_opcod              =                         INSTRUCTION_L_SW;
     2952#endif
    26012953    inst->_type               = instruction_information(INSTRUCTION_L_SW)._type     ; //TYPE_MEMORY;
    26022954    inst->_operation          = instruction_information(INSTRUCTION_L_SW)._operation; //OPERATION_MEMORY_STORE_32;
     
    26342986    else
    26352987      {
     2988#ifdef STATISTICS
     2989    inst->_opcod              =                         INSTRUCTION_L_SYS;
     2990#endif
    26362991    inst->_type               = instruction_information(INSTRUCTION_L_SYS)._type     ; //TYPE_SPECIAL;
    26372992    inst->_operation          = instruction_information(INSTRUCTION_L_SYS)._operation; //OPERATION_SPECIAL_L_SYS;
     
    26783033    else
    26793034      {
     3035#ifdef STATISTICS
     3036    inst->_opcod              =                         INSTRUCTION_L_TRAP;
     3037#endif
    26803038    inst->_type               = instruction_information(INSTRUCTION_L_TRAP)._type     ; //TYPE_SPECIAL;
    26813039    inst->_operation          = instruction_information(INSTRUCTION_L_TRAP)._operation; //OPERATION_SPECIAL_L_TRAP;
     
    27073065    log_printf(TRACE,Decod,"instruction_l_xor","  * instruction   : l.xor");
    27083066
     3067#ifdef STATISTICS
     3068    inst->_opcod              =                         INSTRUCTION_L_XOR;
     3069#endif
    27093070    inst->_type               = instruction_information(INSTRUCTION_L_XOR)._type     ; //TYPE_ALU;
    27103071    inst->_operation          = instruction_information(INSTRUCTION_L_XOR)._operation; //OPERATION_ALU_L_XOR;
     
    27353096    log_printf(TRACE,Decod,"instruction_l_xori","  * instruction   : l.xori");
    27363097
     3098#ifdef STATISTICS
     3099    inst->_opcod              =                         INSTRUCTION_L_XORI;
     3100#endif
    27373101    inst->_type               = instruction_information(INSTRUCTION_L_XORI)._type     ; //TYPE_ALU;
    27383102    inst->_operation          = instruction_information(INSTRUCTION_L_XORI)._operation; //OPERATION_ALU_L_XOR;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h

    r136 r137  
    8484  public    : SC_OUT(Tcontext_t         )  ** out_DECOD_CONTEXT_ID                   ;//[nb_inst_decod]
    8585  public    : SC_OUT(Tdepth_t           )  ** out_DECOD_DEPTH                        ;//[nb_inst_decod]
     86#ifdef STATISTICS
     87  public    : SC_OUT(uint32_t           )  ** out_DECOD_INSTRUCTION                  ;//[nb_inst_decod]
     88#endif
    8689  public    : SC_OUT(Ttype_t            )  ** out_DECOD_TYPE                         ;//[nb_inst_decod]
    8790  public    : SC_OUT(Toperation_t       )  ** out_DECOD_OPERATION                    ;//[nb_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp

    r136 r137  
    8383      ALLOC1_SIGNAL_OUT(out_DECOD_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            );
    8484      ALLOC1_SIGNAL_OUT(out_DECOD_DEPTH        ,"depth"        ,Tdepth_t          ,_param->_size_depth                 );
     85#ifdef STATISTICS
     86      ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION  ,"instruction"  ,uint32_t          ,32                                  );
     87#endif
    8588      ALLOC1_SIGNAL_OUT(out_DECOD_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type                  );
    8689      ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp

    r136 r137  
    4444        DELETE1_SIGNAL(out_DECOD_CONTEXT_ID   ,_param->_nb_inst_decod,_param->_size_context_id            );
    4545        DELETE1_SIGNAL(out_DECOD_DEPTH        ,_param->_nb_inst_decod,_param->_size_depth                 );
     46#ifdef STATISTICS
     47        DELETE1_SIGNAL(out_DECOD_INSTRUCTION  ,_param->_nb_inst_decod,32                                  );
     48#endif
    4649        DELETE1_SIGNAL(out_DECOD_TYPE         ,_param->_nb_inst_decod,_param->_size_type                  );
    4750        DELETE1_SIGNAL(out_DECOD_OPERATION    ,_param->_nb_inst_decod,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp

    r136 r137  
    107107                _decod_instruction->_address_next       = addr+1;
    108108                _decod_instruction->_is_delay_slot      = internal_CONTEXT_IS_DELAY_SLOT [x];
     109#ifdef STATISTICS
     110                _decod_instruction->_opcod              = -1; // not necessary
     111#endif
    109112                _decod_instruction->_type               = 0; // not necessary
    110113                _decod_instruction->_operation          = 0; // not necessary
     
    174177                if (_param->_have_port_depth)
    175178                PORT_WRITE(out_DECOD_DEPTH         [i], depth);
     179#ifdef STATISTICS
     180                PORT_WRITE(out_DECOD_INSTRUCTION   [i], _decod_instruction->_opcod         );
     181#endif
    176182                PORT_WRITE(out_DECOD_TYPE          [i], type);
    177183                PORT_WRITE(out_DECOD_OPERATION     [i], _decod_instruction->_operation     );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_body.cpp

    r135 r137  
    3636
    3737    for(uint32_t i = 0;i < _param->_nb_inst_decod;i++){
    38       vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+" <= in_IFETCH_0_"+toString(i)+"_INSTRUCTION WHEN in_IFETCH_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(6,OPCOD_10)+" & "+std_logic_cst(2,OPCOD_L_NOP)+" & X\"000000\" ;");
     38      vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+" <= in_IFETCH_0_"+toString(i)+"_INSTRUCTION WHEN in_IFETCH_0_"+toString(i)+"_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(6,OPCOD_10)+" & "+std_logic_cst(2,OPCOD_L_NOP)+" & X\"000000\" ;");
    3939      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_VAL <= internal_DECOD_"+toString(i)+"_VAL; ");
    4040      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_TYPE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_TYPE; ");
     
    5353      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_NUM_REG_RE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_NUM_REG_RE; ");
    5454      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_EXCEPTION_USE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_EXCEPTION_USE; ");
    55       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_EXCEPTION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_EXCEPTION WHEN in_IFETCH_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_exception_decod,EXCEPTION_DECOD_NONE)+"; ");
     55      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_EXCEPTION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_EXCEPTION WHEN in_IFETCH_0_"+toString(i)+"_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_exception_decod,EXCEPTION_DECOD_NONE)+"; ");
    5656      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_NO_EXECUTE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_NO_EXECUTE; ");
    5757      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_IS_DELAY_SLOT <= internal_DECOD_INSTRUCTION_"+toString(i)+"_IS_DELAY_SLOT; ");
     
    5959      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_ADDRESS <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS; ");
    6060#endif
    61       vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS <= in_IFETCH_0_ADDRESS + "+std_logic_cst(_param->_size_instruction_address,i)+" ;");
     61      vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS <= in_IFETCH_0_"+toString(i)+"_ADDRESS + "+std_logic_cst(_param->_size_instruction_address,i)+" ;");
    6262      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_ADDRESS_NEXT <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT; ");
    63       vhdl->set_body(0,"internal_DECOD_IN_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + '1'; ");
     63      vhdl->set_body(0,"internal_DECOD_IN_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + '1'; ");
    6464      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_CONDITION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_BRANCH_CONDITION; ");
    6565      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_DIRECTION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_BRANCH_DIRECTION; ");
    6666      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_ADDRESS_SRC <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS; ");
    6767      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_ADDRESS_DEST <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT; ");
    68       vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_STATE <= in_IFETCH_0_BRANCH_STATE; ");
     68      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_STATE <= in_IFETCH_0_"+toString(i)+"_BRANCH_STATE; ");
    6969      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_VAL <= internal_PREDICT_"+toString(i)+"_VAL; ");
    7070
    71       if(_param->_have_port_depth) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID <= in_IFETCH_0_BRANCH_UPDATE_PREDICTION_ID; ");
    72       if(_param->_have_port_inst_ifetch_ptr) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_MATCH_INST_IFETCH_PTR <= '1' WHEN in_IFETCH_0_INST_IFETCH_PTR = "+std_logic_cst(_param->_size_inst_ifetch_ptr,i)+" ELSE '0'; ");
     71      if(_param->_have_port_depth) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID <= in_IFETCH_0_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID; ");
     72      if(_param->_have_port_inst_ifetch_ptr) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_MATCH_INST_IFETCH_PTR <= '1' WHEN in_IFETCH_0_"+toString(i)+"_INST_IFETCH_PTR = "+std_logic_cst(_param->_size_inst_ifetch_ptr,i)+" ELSE '0'; ");
    7373      else vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_MATCH_INST_IFETCH_PTR <= '1' WHEN internal_DECOD_INSTRUCTION_0_TYPE = "+std_logic_cst(_param->_size_type,TYPE_BRANCH)+" ELSE '0' ; ");
    7474    }
     
    8888     
    8989      vhdl->set_body(0,"out_CONTEXT_EVENT_VAL <= internal_CONTEXT_EVENT_VAL; ");
    90       vhdl->set_body(0,"out_CONTEXT_EVENT_TYPE <= internal_DECOD_INSTRUCTION_0_EVENT_TYPE WHEN in_IFETCH_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_EXCEPTION)+"; ");
     90      vhdl->set_body(0,"out_CONTEXT_EVENT_TYPE <= internal_DECOD_INSTRUCTION_0_EVENT_TYPE WHEN in_IFETCH_0_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_EXCEPTION)+"; ");
    9191      vhdl->set_body(0,"out_CONTEXT_EVENT_ADDRESS <= internal_DECOD_INSTRUCTION_0_ADDRESS; ");
    9292      vhdl->set_body(0,"out_CONTEXT_EVENT_ADDRESS_EPCR <= internal_DECOD_INSTRUCTION_0_ADDRESS_NEXT; ");
     
    226226      extend_signal = "";
    227227      for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
    228       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
     228      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
    229229      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
    230230     
     
    252252      extend_signal = "";
    253253      for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
    254       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
     254      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
    255255      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
    256256     
     
    266266      extend_signal = "";
    267267      for(uint32_t cp = 0;cp < _param->_size_general_data - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
    268       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
     268      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
    269269      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RA <= '0'; ");
    270270      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RB <= '0'; ");
     
    280280      extend_signal = "";
    281281      for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
    282       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
     282      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
    283283      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
    284284     
     
    294294      extend_signal = "";
    295295      for(uint32_t cp = 0;cp < _param->_size_general_data - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
    296       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
     296      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
    297297      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RA <= '0'; ");
    298298      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RB <= '0'; ");
     
    308308      extend_signal = "";
    309309      for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
    310       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
     310      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
    311311      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
    312312     
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_declaration.cpp

    r135 r137  
    4747      vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_NO_EXECUTE    ",1);
    4848      vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_IS_DELAY_SLOT    ",1);
    49 #ifdef DEBUG
    5049      vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS    ",_param->_size_instruction_address);
    51 #endif
    5250      vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT    ",_param->_size_instruction_address);
    5351      vhdl->set_signal ("internal_DECOD_IN_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT    ",_param->_size_instruction_address);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h

    r136 r137  
    7575  public    : SC_IN (Tcontext_t         )  **  in_DECOD_IN_CONTEXT_ID     ;//[nb_inst_decod]
    7676  public    : SC_IN (Tdepth_t           )  **  in_DECOD_IN_DEPTH          ;//[nb_inst_decod]
     77#ifdef STATISTICS
     78  public    : SC_IN (uint32_t           )  **  in_DECOD_IN_INSTRUCTION    ;//[nb_inst_decod]
     79#endif
    7780  public    : SC_IN (Ttype_t            )  **  in_DECOD_IN_TYPE           ;//[nb_inst_decod]
    7881  public    : SC_IN (Toperation_t       )  **  in_DECOD_IN_OPERATION      ;//[nb_inst_decod]
     
    103106  public    : SC_OUT(Tcontext_t         )  ** out_DECOD_OUT_CONTEXT_ID    ;//[nb_inst_decod]
    104107  public    : SC_OUT(Tdepth_t           )  ** out_DECOD_OUT_DEPTH         ;//[nb_inst_decod]
     108#ifdef STATISTICS
     109  public    : SC_OUT(uint32_t           )  ** out_DECOD_OUT_INSTRUCTION   ;//[nb_inst_decod]
     110#endif
    105111  public    : SC_OUT(Ttype_t            )  ** out_DECOD_OUT_TYPE          ;//[nb_inst_decod]
    106112  public    : SC_OUT(Toperation_t       )  ** out_DECOD_OUT_OPERATION     ;//[nb_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h

    r112 r137  
    3333  public : Tcontext_t         * _context_id     ;
    3434  public : Tdepth_t           * _depth          ;
     35#ifdef STATISTICS
     36  public : uint32_t           * _instruction    ;
     37#endif
    3538  public : Ttype_t            * _type           ;
    3639  public : Toperation_t       * _operation      ;
     
    6265      ALLOC1(_context_id     ,Tcontext_t         ,_nb_inst);
    6366      ALLOC1(_depth          ,Tdepth_t           ,_nb_inst);
     67#ifdef STATISTICS
     68      ALLOC1(_instruction    ,uint32_t           ,_nb_inst);
     69#endif
    6470      ALLOC1(_type           ,Ttype_t            ,_nb_inst);
    6571      ALLOC1(_operation      ,Toperation_t       ,_nb_inst);
     
    94100      DELETE1(_context_id     ,_nb_inst);
    95101      DELETE1(_depth          ,_nb_inst);
     102#ifdef STATISTICS
     103      DELETE1(_instruction    ,_nb_inst);
     104#endif
    96105      DELETE1(_type           ,_nb_inst);
    97106      DELETE1(_operation      ,_nb_inst);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp

    r123 r137  
    6363      ALLOC1_SIGNAL_IN ( in_DECOD_IN_CONTEXT_ID     ,"context_id"   ,Tcontext_t         ,_param->_size_context_id            );
    6464      ALLOC1_SIGNAL_IN ( in_DECOD_IN_DEPTH          ,"depth"        ,Tdepth_t           ,_param->_size_depth                 );
     65#ifdef STATISTICS
     66      ALLOC1_SIGNAL_IN ( in_DECOD_IN_INSTRUCTION    ,"instruction"  ,uint32_t           ,32                                  );
     67#endif
    6568      ALLOC1_SIGNAL_IN ( in_DECOD_IN_TYPE           ,"type"         ,Ttype_t            ,_param->_size_type                  );
    6669      ALLOC1_SIGNAL_IN ( in_DECOD_IN_OPERATION      ,"operation"    ,Toperation_t       ,_param->_size_operation             );
     
    97100      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_CONTEXT_ID     ,"context_id"   ,Tcontext_t         ,_param->_size_context_id            );
    98101      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_DEPTH          ,"depth"        ,Tdepth_t           ,_param->_size_depth                 );
     102#ifdef STATISTICS
     103      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_INSTRUCTION    ,"instruction"  ,uint32_t           ,32                                  );
     104#endif
    99105      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_TYPE           ,"type"         ,Ttype_t            ,_param->_size_type                  );
    100106      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_OPERATION      ,"operation"    ,Toperation_t       ,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp

    r123 r137  
    3333        DELETE1_SIGNAL( in_DECOD_IN_CONTEXT_ID     ,_param->_nb_inst_decod,_param->_size_context_id            );
    3434        DELETE1_SIGNAL( in_DECOD_IN_DEPTH          ,_param->_nb_inst_decod,_param->_size_depth                 );
     35#ifdef STATISTICS
     36        DELETE1_SIGNAL( in_DECOD_IN_INSTRUCTION    ,_param->_nb_inst_decod,32);
     37#endif
    3538        DELETE1_SIGNAL( in_DECOD_IN_TYPE           ,_param->_nb_inst_decod,_param->_size_type                  );
    3639        DELETE1_SIGNAL( in_DECOD_IN_OPERATION      ,_param->_nb_inst_decod,_param->_size_operation             );
     
    6063        DELETE1_SIGNAL(out_DECOD_OUT_CONTEXT_ID    ,_param->_nb_inst_decod,_param->_size_context_id            );
    6164        DELETE1_SIGNAL(out_DECOD_OUT_DEPTH         ,_param->_nb_inst_decod,_param->_size_depth                 );
     65#ifdef STATISTICS
     66        DELETE1_SIGNAL(out_DECOD_OUT_INSTRUCTION   ,_param->_nb_inst_decod,32);
     67#endif
    6268        DELETE1_SIGNAL(out_DECOD_OUT_TYPE          ,_param->_nb_inst_decod,_param->_size_type                  );
    6369        DELETE1_SIGNAL(out_DECOD_OUT_OPERATION     ,_param->_nb_inst_decod,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_genMoore.cpp

    r123 r137  
    5555                if (_param->_have_port_depth)
    5656                PORT_WRITE(out_DECOD_OUT_DEPTH         [i],reg_QUEUE[num_bank].front()->_depth         [0]);
     57#ifdef STATISTICS
     58                PORT_WRITE(out_DECOD_OUT_INSTRUCTION   [i],reg_QUEUE[num_bank].front()->_instruction   [0]);
     59#endif
    5760                PORT_WRITE(out_DECOD_OUT_TYPE          [i],reg_QUEUE[num_bank].front()->_type          [0]);
    5861                PORT_WRITE(out_DECOD_OUT_OPERATION     [i],reg_QUEUE[num_bank].front()->_operation     [0]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp

    r136 r137  
    7474                entry->_context_id    [0] = context;
    7575                entry->_depth         [0] = (_param->_have_port_depth)?PORT_READ(in_DECOD_IN_DEPTH [i]):0;
     76#ifdef STATISTICS
     77                entry->_instruction   [0] = PORT_READ(in_DECOD_IN_INSTRUCTION   [i]);
     78#endif
    7679                entry->_type          [0] = PORT_READ(in_DECOD_IN_TYPE          [i]);
    7780                entry->_operation     [0] = PORT_READ(in_DECOD_IN_OPERATION     [i]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_genMoore.cpp

    r123 r137  
    5555          if (_param->_have_port_depth)
    5656          PORT_WRITE(out_DECOD_OUT_DEPTH         [i],reg_QUEUE->front()->_depth         [index]);
     57#ifdef STATISTICS
     58          PORT_WRITE(out_DECOD_OUT_INSTRUCTION   [i],reg_QUEUE->front()->_instruction   [index]);
     59#endif
    5760          PORT_WRITE(out_DECOD_OUT_TYPE          [i],reg_QUEUE->front()->_type          [index]);
    5861          PORT_WRITE(out_DECOD_OUT_OPERATION     [i],reg_QUEUE->front()->_operation     [index]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp

    r136 r137  
    7777                entry->_context_id    [i] = context;
    7878                entry->_depth         [i] = (_param->_have_port_depth)?PORT_READ(in_DECOD_IN_DEPTH [i]):0;
     79#ifdef STATISTICS
     80                entry->_instruction   [i] = PORT_READ(in_DECOD_IN_INSTRUCTION   [i]);
     81#endif
    7982                entry->_type          [i] = PORT_READ(in_DECOD_IN_TYPE          [i]);
    8083                entry->_operation     [i] = PORT_READ(in_DECOD_IN_OPERATION     [i]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Parameters.cpp

    r135 r137  
    4242    test();
    4343
    44     _size_internal_queue =
    45       (1                            + // _val
    46        _size_context_id             + // _context_id
    47        _size_depth                  + // _depth
    48        _size_type                   + // _type   
    49        _size_operation              + // _operation
    50        1                            + // _no_execute
    51        1                            + // _is_delay_slot
    52 #ifdef DEBUG
    53        _size_instruction_address    + // _address
    54 #endif
    55        _size_instruction_address    + // _address_next
    56        1                            + // _has_immediat
    57        _size_general_data           + // _immediat
    58        1                            + // _read_ra
    59        _size_general_register_logic + // _num_reg_ra
    60        1                            + // _read_rb
    61        _size_general_register_logic + // _num_reg_rb
    62        1                            + // _read_rc
    63        _size_special_register_logic + // _num_reg_rc
    64        1                            + // _write_rd
    65        _size_general_register_logic + // _num_reg_rd
    66        1                            + // _write_re
    67        _size_special_register_logic + // _num_reg_re
    68        _size_exception_use          + // _exception_use
    69        _size_exception_decod          // _exception
    70        ) * _nb_inst_decod;
    71 
    7244    if (is_toplevel)
    7345      {
     
    11183    log_begin(Decod_queue,FUNCTION);
    11284
     85    _size_internal_queue =
     86      (1                            + // _val
     87       _size_context_id             + // _context_id
     88       _size_depth                  + // _depth
     89       _size_type                   + // _type   
     90       _size_operation              + // _operation
     91       1                            + // _no_execute
     92       1                            + // _is_delay_slot
     93#ifdef DEBUG
     94       _size_instruction_address    + // _address
     95#endif
     96       _size_instruction_address    + // _address_next
     97       1                            + // _has_immediat
     98       _size_general_data           + // _immediat
     99       1                            + // _read_ra
     100       _size_general_register_logic + // _num_reg_ra
     101       1                            + // _read_rb
     102       _size_general_register_logic + // _num_reg_rb
     103       1                            + // _read_rc
     104       _size_special_register_logic + // _num_reg_rc
     105       1                            + // _write_rd
     106       _size_general_register_logic + // _num_reg_rd
     107       1                            + // _write_re
     108       _size_special_register_logic + // _num_reg_re
     109       _size_exception_use          + // _exception_use
     110       _size_exception_decod          // _exception
     111       ) * _nb_inst_decod;
     112
    113113    log_end(Decod_queue,FUNCTION);
    114114  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h

    r136 r137  
    8383  public    : SC_OUT(Tcontext_t         )  ** out_DECOD_CONTEXT_ID                   ;//[nb_inst_decod]
    8484  public    : SC_OUT(Tdepth_t           )  ** out_DECOD_DEPTH                        ;//[nb_inst_decod]
     85#ifdef STATISTICS
     86  public    : SC_OUT(uint32_t           )  ** out_DECOD_INSTRUCTION                  ;//[nb_inst_decod]
     87#endif
    8588  public    : SC_OUT(Ttype_t            )  ** out_DECOD_TYPE                         ;//[nb_inst_decod]
    8689  public    : SC_OUT(Toperation_t       )  ** out_DECOD_OPERATION                    ;//[nb_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp

    r136 r137  
    8080      ALLOC1_SIGNAL_OUT(out_DECOD_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            );
    8181      ALLOC1_SIGNAL_OUT(out_DECOD_DEPTH        ,"depth"        ,Tdepth_t          ,_param->_size_depth                 );
     82#ifdef STATISTICS
     83      ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION  ,"instruction"  ,uint32_t          ,32);
     84#endif
    8285      ALLOC1_SIGNAL_OUT(out_DECOD_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type                  );
    8386      ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation             );
     
    293296          COMPONENT_MAP(_component,src ,"out_DECOD_"   +toString(i)+"_DEPTH"        ,
    294297                                   dest, "in_DECOD_IN_"+toString(i)+"_DEPTH"        );
     298#ifdef STATISTICS
     299          COMPONENT_MAP(_component,src ,"out_DECOD_"   +toString(i)+"_INSTRUCTION"  ,
     300                                   dest, "in_DECOD_IN_"+toString(i)+"_INSTRUCTION"  );
     301#endif
    295302          COMPONENT_MAP(_component,src ,"out_DECOD_"   +toString(i)+"_TYPE"         ,
    296303                                   dest, "in_DECOD_IN_"+toString(i)+"_TYPE"         );
     
    483490          PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_DEPTH"        ,
    484491                              dest,"out_DECOD_"    +toString(i)+"_DEPTH"        );
     492#ifdef STATISTICS
     493          PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_INSTRUCTION"  ,
     494                              dest,"out_DECOD_"    +toString(i)+"_INSTRUCTION"  );
     495#endif
    485496          PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_TYPE"         ,
    486497                              dest,"out_DECOD_"    +toString(i)+"_TYPE"         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp

    r136 r137  
    4343        DELETE1_SIGNAL(out_DECOD_CONTEXT_ID                   ,_param->_nb_inst_decod,_param->_size_context_id            );
    4444        DELETE1_SIGNAL(out_DECOD_DEPTH                        ,_param->_nb_inst_decod,_param->_size_depth                 );
     45#ifdef STATISTICS
     46        DELETE1_SIGNAL(out_DECOD_INSTRUCTION                  ,_param->_nb_inst_decod,32);
     47#endif
    4548        DELETE1_SIGNAL(out_DECOD_TYPE                         ,_param->_nb_inst_decod,_param->_size_type                  );
    4649        DELETE1_SIGNAL(out_DECOD_OPERATION                    ,_param->_nb_inst_decod,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_body.cpp

    r135 r137  
    243243    vhdl->set_body (3,"reg_ADDRESS                                                 <= var_ADDRESS;");
    244244    if(_param->_have_port_inst_ifetch_ptr)
    245       //    vhdl->set_body (3,"reg_INST_IFETCH_PTR   ("+reg_ptr_write+")                   <= var_INST_IFETCH_PTR;");
     245  //vhdl->set_body (3,"reg_INST_IFETCH_PTR   ("+reg_ptr_write+")                   <= var_INST_IFETCH_PTR;");
    246246    vhdl->set_body (3,"reg_INST_IFETCH_PTR                                         <= var_INST_IFETCH_PTR;");
    247247    //    vhdl->set_body (3,"reg_BRANCH_STATE      ("+reg_ptr_write+")                   <= var_BRANCH_STATE;");
     
    288288       vhdl->set_body (1,"out_ADDRESS_ACK               <= internal_ADDRESS_ACK;");
    289289       if (_param->_have_port_ifetch_queue_ptr) {
    290          vhdl->set_body (1,"out_ADDRESS_IFETCH_QUEUE_ID <= reg_PTR_WRITE;");
     290         uint32_t    diff_size = _param->_size_ifetch_queue_ptr - log2(_param->_size_queue);
     291         std::string complete_size = "";
     292
     293         if (diff_size > 0)
     294           complete_size = std_logic_cst(diff_size,0)+" &";
     295
     296         vhdl->set_body (1,"out_ADDRESS_IFETCH_QUEUE_ID <= "+complete_size+" reg_PTR_WRITE;");
    291297       }
    292298     }
     
    303309           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_VAL                   <= internal_DECOD_"+toString(j)+"_VAL;");
    304310           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_INSTRUCTION           <= reg_DATA("+reg_ptr_read+")("+toString(j)+") ;");
     311           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_ADDRESS               <= reg_ADDRESS("+reg_ptr_read+")+"+std_logic_cst(_param->_size_instruction,j)+";");
     312           if (_param->_have_port_inst_ifetch_ptr)
     313           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_BRANCH_STATE          <= reg_BRANCH_STATE("+reg_ptr_read+") when reg_INST_IFETCH_PTR("+reg_ptr_read+") = "+std_logic_cst(_param->_size_inst_ifetch_ptr,j)+" else "+std_logic_cst(_param->_size_branch_state,BRANCH_STATE_NONE)+";");
     314           else
     315           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_BRANCH_STATE          <= reg_BRANCH_STATE("+reg_ptr_read+");");
     316
     317           if (_param->_have_port_depth)
     318           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID <= reg_BRANCH_UPDATE_PREDICTION_ID("+reg_ptr_read+");");
     319           vhdl->set_body(0,"out_DECOD_"+toString(j)+"_EXCEPTION                   <= reg_EXCEPTION("+reg_ptr_read+");");
     320
    305321         }
    306        vhdl->set_body(0,"out_DECOD_ADDRESS                                   <= reg_ADDRESS("+reg_ptr_read+");");
    307        if (_param->_have_port_inst_ifetch_ptr)
    308          vhdl->set_body(0,"out_DECOD_INST_IFETCH_PTR                         <= reg_INST_IFETCH_PTR("+reg_ptr_read+");");
    309        vhdl->set_body(0,"out_DECOD_BRANCH_STATE                              <= reg_BRANCH_STATE("+reg_ptr_read+");");
    310        if (_param->_have_port_depth)
    311          vhdl->set_body(0,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID             <= reg_BRANCH_UPDATE_PREDICTION_ID("+reg_ptr_read+");");
    312        vhdl->set_body(0,"out_DECOD_EXCEPTION                                 <= reg_EXCEPTION("+reg_ptr_read+");");
    313322     }
    314323     vhdl->set_body(0,"");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_declaration.cpp

    r135 r137  
    6262    vhdl->set_type    ("Tenable                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of Tcase_enable");
    6363    vhdl->set_signal  ("reg_INSTRUCTION_ENABLE               ", "Tenable");
    64     vhdl->set_type    ("Tadress                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_instruction));
     64    vhdl->set_type    ("Tadress                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_instruction_address));
    6565    vhdl->set_signal  ("reg_ADDRESS                          ", "Tadress");
    6666
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/include/Front_end.h

    r123 r137  
    9090  public    : SC_OUT(Tcontext_t           ) ** out_DECOD_CONTEXT_ID                ;//[sum_inst_decod]
    9191  public    : SC_OUT(Tdepth_t             ) ** out_DECOD_DEPTH                     ;//[sum_inst_decod]
     92#ifdef STATISTICS
     93  public    : SC_OUT(uint32_t             ) ** out_DECOD_INSTRUCTION               ;//[sum_inst_decod]
     94#endif
    9295  public    : SC_OUT(Ttype_t              ) ** out_DECOD_TYPE                      ;//[sum_inst_decod]
    9396  public    : SC_OUT(Toperation_t         ) ** out_DECOD_OPERATION                 ;//[sum_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp

    r136 r137  
    9898      ALLOC1_SIGNAL_OUT (out_DECOD_CONTEXT_ID                 ,"CONTEXT_ID"       ,Tcontext_t           ,_param->_size_context_id            );
    9999      ALLOC1_SIGNAL_OUT (out_DECOD_DEPTH                      ,"DEPTH"            ,Tdepth_t             ,_param->_size_depth                 );
     100#ifdef STATISTICS
     101      ALLOC1_SIGNAL_OUT (out_DECOD_INSTRUCTION                ,"INSTRUCTION"      ,uint32_t             ,32);
     102#endif
    100103      ALLOC1_SIGNAL_OUT (out_DECOD_TYPE                       ,"TYPE"             ,Ttype_t              ,_param->_size_type                  );
    101104      ALLOC1_SIGNAL_OUT (out_DECOD_OPERATION                  ,"OPERATION"        ,Toperation_t         ,_param->_size_operation             );
     
    700703
    701704      for (uint32_t j=0; j<_param->_decod_unit_nb_context[i]; ++j)
    702         {
    703           dest = _name+"_glue";
    704 #ifdef POSITION
    705           _component->interface_map (src ,"ifetch_"+toString(j),
    706                                      dest,"ifetch_"+toString(i)+"_"+toString(j));
    707 #endif
    708      
    709           if (_param->_have_port_context_id)
    710           COMPONENT_MAP(_component,src , "in_IFETCH_"+toString(j)                           +"_CONTEXT_ID",
    711                                    dest,"out_IFETCH_"+toString(i)+"_"+toString(j)+"_DECOD_UNIT_CONTEXT_ID");
    712         }
     705        for (uint32_t k=0; k<_param->_nb_inst_fetch [j];++k)
     706          {
     707            dest = _name+"_glue";
     708#ifdef POSITION
     709            _component->interface_map (src ,"ifetch_"+toString(j)+"_"+toString(k),
     710                                       dest,"ifetch_"+toString(i)+"_"+toString(j));
     711#endif
     712           
     713            if (_param->_have_port_context_id)
     714            COMPONENT_MAP(_component,src , "in_IFETCH_"+toString(j)+"_"+toString(k)+"_CONTEXT_ID",
     715                                     dest,"out_IFETCH_"+toString(i)+"_"+toString(j)+"_DECOD_UNIT_CONTEXT_ID");
     716          }
    713717
    714718      // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    729733          PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_DEPTH"        ,
    730734                              dest,"out_DECOD_"+toString(x)+"_DEPTH"        );
     735#ifdef STATISTICS
     736          PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_INSTRUCTION"  ,
     737                              dest,"out_DECOD_"+toString(x)+"_INSTRUCTION"  );
     738#endif
    731739          PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_TYPE"         ,
    732740                              dest,"out_DECOD_"+toString(x)+"_TYPE"         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp

    r128 r137  
    4545        DELETE1_SIGNAL(out_DECOD_CONTEXT_ID                 ,_param->_sum_inst_decod,_param->_size_context_id            );
    4646        DELETE1_SIGNAL(out_DECOD_DEPTH                      ,_param->_sum_inst_decod,_param->_size_depth                 );
     47#ifdef STATISTICS
     48        DELETE1_SIGNAL(out_DECOD_INSTRUCTION                ,_param->_sum_inst_decod,32);
     49#endif
    4750        DELETE1_SIGNAL(out_DECOD_TYPE                       ,_param->_sum_inst_decod,_param->_size_type                  );
    4851        DELETE1_SIGNAL(out_DECOD_OPERATION                  ,_param->_sum_inst_decod,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h

    r136 r137  
    6161  public    : counter_t                     ** _stat_nb_inst_retire_ok            ;//[nb_thread]
    6262  public    : counter_t                     ** _stat_nb_inst_retire_ko            ;//[nb_thread]
     63  public    : counter_t                     ** _stat_nb_inst_instruction          ;//[nb_instruction]
    6364  public    : counter_t                     ** _stat_nb_inst_type                 ;//[nb_type]
    6465  public    : counter_t                     ** _stat_bank_nb_inst                 ;//[nb_bank]
     
    8788//public    : SC_IN (Tcontext_t         ) ***  in_INSERT_RENAME_UNIT_ID            ;//[nb_rename_unit][nb_inst_insert]
    8889  public    : SC_IN (Tdepth_t           ) ***  in_INSERT_DEPTH                     ;//[nb_rename_unit][nb_inst_insert]
     90#ifdef STATISTICS
     91  public    : SC_IN (uint32_t           ) ***  in_INSERT_INSTRUCTION               ;//[nb_rename_unit][nb_inst_insert]
     92#endif
    8993  public    : SC_IN (Ttype_t            ) ***  in_INSERT_TYPE                      ;//[nb_rename_unit][nb_inst_insert]
    9094  public    : SC_IN (Toperation_t       ) ***  in_INSERT_OPERATION                 ;//[nb_rename_unit][nb_inst_insert]
     
    104108  public    : SC_IN (Tgeneral_address_t ) ***  in_INSERT_NUM_REG_RA_LOG            ;//[nb_rename_unit][nb_inst_insert]
    105109  public    : SC_IN (Tgeneral_address_t ) ***  in_INSERT_NUM_REG_RA_PHY            ;//[nb_rename_unit][nb_inst_insert]
     110#endif
    106111  public    : SC_IN (Tcontrol_t         ) ***  in_INSERT_READ_RB                   ;//[nb_rename_unit][nb_inst_insert]
     112#ifdef DEBUG
    107113  public    : SC_IN (Tgeneral_address_t ) ***  in_INSERT_NUM_REG_RB_LOG            ;//[nb_rename_unit][nb_inst_insert]
    108114  public    : SC_IN (Tgeneral_address_t ) ***  in_INSERT_NUM_REG_RB_PHY            ;//[nb_rename_unit][nb_inst_insert]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h

    r124 r137  
    8585  public  : uint32_t           rename_unit_id          ;
    8686  public  : Tdepth_t           depth                   ;
     87#ifdef STATISTICS
     88  public  : uint32_t           instruction             ;
     89#endif
    8790  public  : Ttype_t            type                    ;
    8891  public  : Toperation_t       operation               ;
     
    97100  public  : Tgeneral_address_t num_reg_ra_log          ;
    98101  public  : Tgeneral_address_t num_reg_ra_phy          ;
     102#endif
    99103  public  : Tcontrol_t         read_rb                 ;
     104#ifdef DEBUG
    100105  public  : Tgeneral_address_t num_reg_rb_log          ;
    101106  public  : Tgeneral_address_t num_reg_rb_phy          ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp

    r136 r137  
    6666//    _ALLOC2_SIGNAL_IN ( in_INSERT_RENAME_UNIT_ID          ,"rename_unit_id"       ,Tcontext_t        ,_param->_size_rename_unit_id        ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    6767      _ALLOC2_SIGNAL_IN ( in_INSERT_DEPTH                   ,"depth"                ,Tdepth_t          ,_param->_size_depth                 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     68#ifdef STATISTICS
     69      _ALLOC2_SIGNAL_IN ( in_INSERT_INSTRUCTION             ,"instruction"          ,uint32_t          ,32                                  ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     70#endif
    6871      _ALLOC2_SIGNAL_IN ( in_INSERT_TYPE                    ,"type"                 ,Ttype_t           ,_param->_size_type                  ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    6972      _ALLOC2_SIGNAL_IN ( in_INSERT_OPERATION               ,"operation"            ,Toperation_t      ,_param->_size_operation             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    7679      _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS_NEXT            ,"address_next"         ,Taddress_t        ,_param->_size_instruction_address   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7780      _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION               ,"exception"            ,Texception_t      ,_param->_size_exception             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    78       _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION_USE           ,"exception_use"        ,Texception_t      ,_param->_size_exception             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     81      _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION_USE           ,"exception_use"        ,Texception_t      ,_param->_size_exception_use         ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7982      _ALLOC2_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE   ,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue_ptr       ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    8083      _ALLOC2_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE    ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue_ptr        ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    8386      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RA_LOG          ,"num_reg_ra_log"       ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    8487      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RA_PHY          ,"num_reg_ra_phy"       ,Tgeneral_address_t,_param->_size_general_register      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     88#endif
    8589      _ALLOC2_SIGNAL_IN ( in_INSERT_READ_RB                 ,"read_rb"              ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     90#ifdef DEBUG
    8691      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RB_LOG          ,"num_reg_rb_log"       ,Tgeneral_address_t,_param->_size_general_register_logic,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    8792      _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RB_PHY          ,"num_reg_rb_phy"       ,Tgeneral_address_t,_param->_size_general_register      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp

    r136 r137  
    3535//      DELETE2_SIGNAL( in_INSERT_RENAME_UNIT_ID          ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_rename_unit_id        );
    3636        DELETE2_SIGNAL( in_INSERT_DEPTH                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_depth                 );
     37#ifdef STATISTICS
     38        DELETE2_SIGNAL( in_INSERT_INSTRUCTION             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],32);
     39#endif
    3740        DELETE2_SIGNAL( in_INSERT_TYPE                    ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_type                  );
    3841        DELETE2_SIGNAL( in_INSERT_OPERATION               ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_operation             );
     
    5255        DELETE2_SIGNAL( in_INSERT_NUM_REG_RA_LOG          ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic);
    5356        DELETE2_SIGNAL( in_INSERT_NUM_REG_RA_PHY          ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register      );
     57#endif
    5458        DELETE2_SIGNAL( in_INSERT_READ_RB                 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1                                   );
     59#ifdef DEBUG
    5560        DELETE2_SIGNAL( in_INSERT_NUM_REG_RB_LOG          ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register_logic);
    5661        DELETE2_SIGNAL( in_INSERT_NUM_REG_RB_PHY          ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register      );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_allocation.cpp

    r124 r137  
    5252    _stat_nb_inst_retire_ok      = new counter_t * [_param->_nb_thread];
    5353    _stat_nb_inst_retire_ko      = new counter_t * [_param->_nb_thread];
     54    _stat_nb_inst_instruction    = new counter_t * [NB_INSTRUCTION];
    5455    _stat_nb_inst_type           = new counter_t * [_param->_nb_type];
    5556    _stat_bank_nb_inst           = new counter_t * [_param->_nb_bank];
    56    
     57
    5758    {
    5859      std::string sum_nb_inst_insert    = "0";
     
    129130
    130131      for (uint32_t i=0; i<_param->_nb_type; i++)
    131         if (is_type_valid(i))
     132        if (is_type_valid(i))
    132133          {
    133134            _stat_nb_inst_type [i] = _stat->create_variable("nb_inst_type_"+toString(i));
     
    139140        if (is_type_valid(i))
    140141          {
    141             std::string name = toString(static_cast<type_t>(i)).c_str();
    142 //          _stat->create_expr_average_by_cycle("average_inst_type_"+toString(name), "nb_inst_type_"+toString(i), "", toString(_("Average instruction retire ok by cycle (type %s)"),name.c_str()));
    143             _stat->create_expr_percent         ("percent_inst_type_"+toString(name), "nb_inst_type_"+toString(i), sum_nb_inst_type, toString(_("Percent instruction retire ok by cycle (type %s)"),name.c_str()));
    144           }
     142            std::string name = toString(static_cast<type_t>(i));
     143
     144            _stat->create_expr_percent         ("percent_type_"+toString(name), "nb_inst_type_"+toString(i), sum_nb_inst_type, toString(_("Percent instruction retire ok by cycle (type %s)"),name.c_str()));
     145          }
     146    }
     147
     148    {
     149      std::string sum_nb_inst_instruction = "0";
     150
     151      for (uint32_t i=0; i<NB_INSTRUCTION; i++)
     152        {
     153          _stat_nb_inst_instruction [i] = _stat->create_variable("nb_inst_instruction_"+toString(i));
     154         
     155          sum_nb_inst_instruction = "+ nb_inst_instruction_"+toString(i) + " " +sum_nb_inst_instruction;
     156        }
     157 
     158      for (uint32_t i=0; i<NB_INSTRUCTION; i++)
     159        {
     160          std::string name = toString_instruction(i).c_str();
     161
     162          _stat->create_expr_percent         ("percent_instruction_"+toString(name), "nb_inst_instruction_"+toString(i), sum_nb_inst_instruction, toString(_("Percent instruction retire ok by cycle (instruction %s)"),name.c_str()));
     163        }
    145164    }
    146165
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_deallocation.cpp

    r124 r137  
    3131    delete [] _stat_nb_inst_retire_ok;
    3232    delete [] _stat_nb_inst_retire_ko;
     33    delete [] _stat_nb_inst_instruction;
    3334    delete [] _stat_nb_inst_type;
    3435    delete [] _stat_bank_nb_inst;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r136 r137  
    252252                      entry->rename_unit_id          = x;
    253253                      entry->depth                   = (_param->_have_port_depth)?PORT_READ(in_INSERT_DEPTH [x][y]):0;
     254#ifdef STATISTICS
     255                      entry->instruction             = PORT_READ(in_INSERT_INSTRUCTION           [x][y]);
     256#endif
    254257                      entry->type                    = type;
    255258                      entry->operation               = operation;
     
    266269                      entry->num_reg_ra_log          = PORT_READ(in_INSERT_NUM_REG_RA_LOG        [x][y]);
    267270                      entry->num_reg_ra_phy          = PORT_READ(in_INSERT_NUM_REG_RA_PHY        [x][y]);
     271#endif
    268272                      entry->read_rb                 = PORT_READ(in_INSERT_READ_RB               [x][y]);
     273#ifdef DEBUG
    269274                      entry->num_reg_rb_log          = PORT_READ(in_INSERT_NUM_REG_RB_LOG        [x][y]);
    270275                      entry->num_reg_rb_phy          = PORT_READ(in_INSERT_NUM_REG_RB_PHY        [x][y]);
     
    287292#ifdef DEBUG       
    288293                      entry->address                 = PORT_READ(in_INSERT_ADDRESS               [x][y]);
    289 #else
    290                       entry->address                 = 0; // not necessary
    291294#endif               
    292295                      entry->address_next            = PORT_READ(in_INSERT_ADDRESS_NEXT          [x][y]);
     
    823826                        if (retire_ok)
    824827                          {
    825                             (*_stat_nb_inst_retire_ok [num_thread]) ++;
    826                             (*_stat_nb_inst_type      [type]      ) ++;
     828                            uint32_t instruction = entry->instruction;
     829
     830                            (*_stat_nb_inst_retire_ok   [num_thread] ) ++;
     831                            (*_stat_nb_inst_instruction [instruction]) ++;
     832                            (*_stat_nb_inst_type        [type]       ) ++;
    827833                          }
    828834                        else
     
    10481054                      // Read information
    10491055                      rob_state_t  state        = entry->state;
    1050                       Tdepth_t     depth        = entry->depth;
    1051                      
    1052                       Tdepth_t     depth_min    = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN[front_end_id][context_id]):0;
    1053                       Tdepth_t     depth_max    = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX[front_end_id][context_id]):0;
    1054                       Tcontrol_t   depth_full   = PORT_READ(in_DEPTH_FULL [front_end_id][context_id]);
     1056//                       Tdepth_t     depth        = entry->depth;
     1057                     
     1058//                       Tdepth_t     depth_min    = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN[front_end_id][context_id]):0;
     1059//                       Tdepth_t     depth_max    = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MAX[front_end_id][context_id]):0;
     1060//                       Tcontrol_t   depth_full   = PORT_READ(in_DEPTH_FULL [front_end_id][context_id]);
    10551061                     
    10561062                      // is a valid instruction ?
     
    10881094                     
    10891095                      log_printf(TRACE,Commit_unit,FUNCTION,"    * is_valid        : %d ((depth == depth_min) and not flush)",is_valid);
    1090                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth           : %d",depth    );
    1091                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth_min       : %d",depth_min);
    1092                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth_max       : %d",depth_max);
    1093                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth_full      : %d",depth_full);
     1096//                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth           : %d",depth    );
     1097//                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth_min       : %d",depth_min);
     1098//                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth_max       : %d",depth_max);
     1099//                       log_printf(TRACE,Commit_unit,FUNCTION,"    * depth_full      : %d",depth_full);
    10941100                      log_printf(TRACE,Commit_unit,FUNCTION,"    * speculative     : %d",speculative);
    10951101                      log_printf(TRACE,Commit_unit,FUNCTION,"    * flush           : %d",flush);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/include/OOO_Engine_Glue.h

    r136 r137  
    119119  public    : SC_OUT(Tcontrol_t         ) *** out_INSERT_COMMIT_UNIT_READ_RA                   ;//[nb_rename_unit][nb_inst_insert]
    120120  public    : SC_OUT(Tgeneral_address_t ) *** out_INSERT_COMMIT_UNIT_NUM_REG_RA_PHY            ;//[nb_rename_unit][nb_inst_insert]
     121#endif
    121122  public    : SC_OUT(Tcontrol_t         ) *** out_INSERT_COMMIT_UNIT_READ_RB                   ;//[nb_rename_unit][nb_inst_insert]
     123#ifdef DEBUG
    122124  public    : SC_OUT(Tgeneral_address_t ) *** out_INSERT_COMMIT_UNIT_NUM_REG_RB_PHY            ;//[nb_rename_unit][nb_inst_insert]
    123125  public    : SC_OUT(Tcontrol_t         ) *** out_INSERT_COMMIT_UNIT_READ_RC                   ;//[nb_rename_unit][nb_inst_insert]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_allocation.cpp

    r136 r137  
    122122      _ALLOC2_SIGNAL_OUT(out_INSERT_COMMIT_UNIT_READ_RA                   ,"COMMIT_UNIT_READ_RA"                   ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    123123      _ALLOC2_SIGNAL_OUT(out_INSERT_COMMIT_UNIT_NUM_REG_RA_PHY            ,"COMMIT_UNIT_NUM_REG_RA_PHY"            ,Tgeneral_address_t ,_param->_size_general_register,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     124#endif
    124125      _ALLOC2_SIGNAL_OUT(out_INSERT_COMMIT_UNIT_READ_RB                   ,"COMMIT_UNIT_READ_RB"                   ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     126#ifdef DEBUG
    125127      _ALLOC2_SIGNAL_OUT(out_INSERT_COMMIT_UNIT_NUM_REG_RB_PHY            ,"COMMIT_UNIT_NUM_REG_RB_PHY"            ,Tgeneral_address_t ,_param->_size_general_register,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    126128      _ALLOC2_SIGNAL_OUT(out_INSERT_COMMIT_UNIT_READ_RC                   ,"COMMIT_UNIT_READ_RC"                   ,Tcontrol_t         ,1                             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_deallocation.cpp

    r136 r137  
    7777        DELETE2_SIGNAL(out_INSERT_COMMIT_UNIT_READ_RA                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1                             );
    7878        DELETE2_SIGNAL(out_INSERT_COMMIT_UNIT_NUM_REG_RA_PHY            ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register);
     79#endif
    7980        DELETE2_SIGNAL(out_INSERT_COMMIT_UNIT_READ_RB                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1                             );
     81#ifdef DEBUG
    8082        DELETE2_SIGNAL(out_INSERT_COMMIT_UNIT_NUM_REG_RB_PHY            ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],_param->_size_general_register);
    8183        DELETE2_SIGNAL(out_INSERT_COMMIT_UNIT_READ_RC                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1],1                             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_insert.cpp

    r136 r137  
    7676          PORT_WRITE(out_INSERT_COMMIT_UNIT_READ_RA               [i][j],READ_RA              );
    7777          PORT_WRITE(out_INSERT_COMMIT_UNIT_NUM_REG_RA_PHY        [i][j],NUM_REG_RA_PHY       );
     78#endif
    7879          PORT_WRITE(out_INSERT_COMMIT_UNIT_READ_RB               [i][j],READ_RB              );
     80#ifdef DEBUG
    7981          PORT_WRITE(out_INSERT_COMMIT_UNIT_NUM_REG_RB_PHY        [i][j],NUM_REG_RB_PHY       );
    8082          PORT_WRITE(out_INSERT_COMMIT_UNIT_READ_RC               [i][j],READ_RC              );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Dependency_checking_unit.h

    r121 r137  
    8787
    8888    // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    89 //   public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_VAL               ;//[nb_inst_insert]
    90 //   public    : SC_IN (Tcontrol_t        )   **  in_RENAME_OUT_ACK               ;//[nb_inst_insert]
    91   public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_FRONT_END_ID      ;//[nb_inst_insert]
    92   public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_CONTEXT_ID        ;//[nb_inst_insert]
     89//public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_VAL               ;//[nb_inst_insert]
     90//public    : SC_IN (Tcontrol_t        )   **  in_RENAME_OUT_ACK               ;//[nb_inst_insert]
     91//public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_FRONT_END_ID      ;//[nb_inst_insert]
     92//public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_CONTEXT_ID        ;//[nb_inst_insert]
    9393  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_READ_RA           ;//[nb_inst_insert]
    9494#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp

    r121 r137  
    9191//     ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL               ,VAL);
    9292//     ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK               ,ACK);
    93        ALLOC1_SIGNAL_OUT(out_RENAME_OUT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    94        ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
     93//     ALLOC1_SIGNAL_OUT(out_RENAME_OUT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
     94//     ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
    9595       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                                   );
    9696#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp

    r121 r137  
    5454//      DELETE1_SIGNAL(out_RENAME_OUT_VAL               ,_param->_nb_inst_insert,1);
    5555//      DELETE1_SIGNAL( in_RENAME_OUT_ACK               ,_param->_nb_inst_insert,1);
    56         DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
    57         DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     56//      DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     57//      DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
    5858        DELETE1_SIGNAL(out_RENAME_OUT_READ_RA           ,_param->_nb_inst_insert,1                                   );
    5959#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_genMealy.cpp

    r123 r137  
    197197//      PORT_WRITE(out_RENAME_OUT_VAL                [i], val                [i]);
    198198//      PORT_WRITE(out_RENAME_IN_ACK                 [i], ack                [i]);
    199         if (_param->_have_port_front_end_id)
    200         PORT_WRITE(out_RENAME_OUT_FRONT_END_ID       [i], front_end_id       [i]);
    201         if (_param->_have_port_context_id)
    202         PORT_WRITE(out_RENAME_OUT_CONTEXT_ID         [i], context_id         [i]);
     199//      if (_param->_have_port_front_end_id)
     200//      PORT_WRITE(out_RENAME_OUT_FRONT_END_ID       [i], front_end_id       [i]);
     201//      if (_param->_have_port_context_id)
     202//      PORT_WRITE(out_RENAME_OUT_CONTEXT_ID         [i], context_id         [i]);
    203203        PORT_WRITE(out_RENAME_OUT_READ_RA            [i], read_ra            [i]);
    204204#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp

    r112 r137  
    120120
    121121#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
     122        if (0)
    122123        {
    123124          uint32_t limit = 4;
     
    175176
    176177#ifdef DEBUG_TEST
    177         if (1)
     178        if (0)
    178179          for (uint32_t i=0; i<_param->_nb_bank; ++i)
    179180            {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Register_translation_unit.h

    r123 r137  
    8686  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_VAL               ;//[nb_inst_insert]
    8787  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_ACK               ;//[nb_inst_insert]
    88   public    : SC_OUT(Tcontext_t        )   ** out_INSERT_FRONT_END_ID      ;//[nb_inst_insert]
    89   public    : SC_OUT(Tcontext_t        )   ** out_INSERT_CONTEXT_ID        ;//[nb_inst_insert]
     88//public    : SC_OUT(Tcontext_t        )   ** out_INSERT_FRONT_END_ID      ;//[nb_inst_insert]
     89//public    : SC_OUT(Tcontext_t        )   ** out_INSERT_CONTEXT_ID        ;//[nb_inst_insert]
    9090  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RA           ;//[nb_inst_insert]
    9191#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp

    r123 r137  
    8484      ALLOC1_VALACK_OUT(out_INSERT_VAL               ,VAL);
    8585      ALLOC1_VALACK_IN ( in_INSERT_ACK               ,ACK);
    86       ALLOC1_SIGNAL_OUT(out_INSERT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
    87       ALLOC1_SIGNAL_OUT(out_INSERT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
     86//    ALLOC1_SIGNAL_OUT(out_INSERT_FRONT_END_ID      ,"front_end_id"      ,Tcontext_t        ,_param->_size_front_end_id          );
     87//    ALLOC1_SIGNAL_OUT(out_INSERT_CONTEXT_ID        ,"context_id"        ,Tcontext_t        ,_param->_size_context_id            );
    8888      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RA           ,"read_ra"           ,Tcontrol_t        ,1                                   );
    8989#ifdef DEBUG
     
    575575#endif
    576576
    577           if (_param->_have_port_front_end_id)
    578           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_FRONT_END_ID"      ,
    579                               dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      );
    580           if (_param->_have_port_context_id)
    581           PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_CONTEXT_ID"        ,
    582                               dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
     577//        if (_param->_have_port_front_end_id)
     578//        PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_FRONT_END_ID"      ,
     579//                            dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      );
     580//        if (_param->_have_port_context_id)
     581//        PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_CONTEXT_ID"        ,
     582//                            dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
    583583#ifdef DEBUG
    584584          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_LOG"    ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp

    r123 r137  
    4646        DELETE1_SIGNAL(out_INSERT_VAL               ,_param->_nb_inst_insert,1);
    4747        DELETE1_SIGNAL( in_INSERT_ACK               ,_param->_nb_inst_insert,1);
    48         DELETE1_SIGNAL(out_INSERT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
    49         DELETE1_SIGNAL(out_INSERT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
     48//      DELETE1_SIGNAL(out_INSERT_FRONT_END_ID      ,_param->_nb_inst_insert,_param->_size_front_end_id          );
     49//      DELETE1_SIGNAL(out_INSERT_CONTEXT_ID        ,_param->_nb_inst_insert,_param->_size_context_id            );
    5050        DELETE1_SIGNAL(out_INSERT_READ_RA           ,_param->_nb_inst_insert,1                                   );
    5151#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h

    r123 r137  
    7272  public    : SC_IN (Tcontext_t        )  ***  in_RENAME_IN_CONTEXT_ID    ;//[nb_front_end][nb_inst_decod]
    7373  public    : SC_IN (Tdepth_t          )  ***  in_RENAME_IN_DEPTH         ;//[nb_front_end][nb_inst_decod]
     74#ifdef STATISTICS
     75  public    : SC_IN (uint32_t          )  ***  in_RENAME_IN_INSTRUCTION   ;//[nb_front_end][nb_inst_decod]
     76#endif
    7477  public    : SC_IN (Ttype_t           )  ***  in_RENAME_IN_TYPE          ;//[nb_front_end][nb_inst_decod]
    7578  public    : SC_IN (Toperation_t      )  ***  in_RENAME_IN_OPERATION     ;//[nb_front_end][nb_inst_decod]
     
    103106  public    : SC_OUT(Tcontext_t        )   ** out_RENAME_OUT_CONTEXT_ID   ;//[nb_inst_rename]
    104107  public    : SC_OUT(Tdepth_t          )   ** out_RENAME_OUT_DEPTH        ;//[nb_inst_rename]
     108#ifdef STATISTICS
     109  public    : SC_OUT(uint32_t          )   ** out_RENAME_OUT_INSTRUCTION  ;//[nb_inst_rename]
     110#endif
    105111  public    : SC_OUT(Ttype_t           )   ** out_RENAME_OUT_TYPE         ;//[nb_inst_rename]
    106112  public    : SC_OUT(Toperation_t      )   ** out_RENAME_OUT_OPERATION    ;//[nb_inst_rename]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp

    r123 r137  
    6565      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID    ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6666      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_DEPTH         ,"depth"        ,Tdepth_t          ,_param->_size_depth                 , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     67#ifdef STATISTICS
     68      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_INSTRUCTION   ,"instruction"  ,uint32_t          ,32                                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     69#endif
    6770      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6871      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    102105      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID    ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            );
    103106      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_DEPTH         ,"depth"        ,Tdepth_t          ,_param->_size_depth                 );
     107#ifdef STATISTICS
     108      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_INSTRUCTION   ,"instruction"  ,uint32_t          ,32);
     109#endif
    104110      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  );
    105111      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_deallocation.cpp

    r123 r137  
    3434        DELETE2_SIGNAL( in_RENAME_IN_CONTEXT_ID    ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
    3535        DELETE2_SIGNAL( in_RENAME_IN_DEPTH         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
     36#ifdef STATISTICS
     37        DELETE2_SIGNAL( in_RENAME_IN_INSTRUCTION   ,_param->_nb_front_end, _param->_nb_inst_decod[it1],32);
     38#endif
    3639        DELETE2_SIGNAL( in_RENAME_IN_TYPE          ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
    3740        DELETE2_SIGNAL( in_RENAME_IN_OPERATION     ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
     
    6467        DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID    ,_param->_nb_inst_rename,_param->_size_context_id            );
    6568        DELETE1_SIGNAL(out_RENAME_OUT_DEPTH         ,_param->_nb_inst_rename,_param->_size_depth                 );
    66         DELETE1_SIGNAL(out_RENAME_OUT_TYPE          ,_param->_nb_inst_rename,_param->_size_type                  );
    67         DELETE1_SIGNAL(out_RENAME_OUT_OPERATION     ,_param->_nb_inst_rename,_param->_size_operation             );
     69#ifdef STATISTICS
     70        DELETE1_SIGNAL(out_RENAME_OUT_INSTRUCTION   ,_param->_nb_inst_rename,32);
     71#endif
     72        DELETE1_SIGNAL(out_RENAME_OUT_TYPE          ,_param->_nb_inst_rename,_param->_size_type                  );
     73        DELETE1_SIGNAL(out_RENAME_OUT_OPERATION     ,_param->_nb_inst_rename,_param->_size_operation             );
    6874        DELETE1_SIGNAL(out_RENAME_OUT_NO_EXECUTE    ,_param->_nb_inst_rename,1                                   );
    6975        DELETE1_SIGNAL(out_RENAME_OUT_LAST_EVENT    ,_param->_nb_inst_rename,1                                   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp

    r123 r137  
    103103                    if (_param->_have_port_depth)
    104104                    PORT_WRITE(out_RENAME_OUT_DEPTH        [i],PORT_READ(in_RENAME_IN_DEPTH         [x][y]));
     105#ifdef STATISTICS
     106                    PORT_WRITE(out_RENAME_OUT_INSTRUCTION  [i],PORT_READ(in_RENAME_IN_INSTRUCTION   [x][y]));
     107#endif
    105108                    PORT_WRITE(out_RENAME_OUT_TYPE         [i],PORT_READ(in_RENAME_IN_TYPE          [x][y]));
    106109                    PORT_WRITE(out_RENAME_OUT_OPERATION    [i],PORT_READ(in_RENAME_IN_OPERATION     [x][y]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Rename_unit.h

    r123 r137  
    7474  public    : SC_IN (Tcontext_t        )  ***  in_RENAME_IN_CONTEXT_ID        ;//[nb_front_end][nb_inst_decod]
    7575  public    : SC_IN (Tdepth_t          )  ***  in_RENAME_IN_DEPTH             ;//[nb_front_end][nb_inst_decod]
     76#ifdef STATISTICS
     77  public    : SC_IN (uint32_t          )  ***  in_RENAME_IN_INSTRUCTION       ;//[nb_front_end][nb_inst_decod]
     78#endif
    7679  public    : SC_IN (Ttype_t           )  ***  in_RENAME_IN_TYPE              ;//[nb_front_end][nb_inst_decod]
    7780  public    : SC_IN (Toperation_t      )  ***  in_RENAME_IN_OPERATION         ;//[nb_front_end][nb_inst_decod]
     
    105108  public    : SC_OUT(Tcontext_t        )   ** out_INSERT_CONTEXT_ID           ;//[nb_inst_insert]
    106109  public    : SC_OUT(Tdepth_t          )   ** out_INSERT_DEPTH                ;//[nb_inst_insert]
     110#ifdef STATISTICS
     111  public    : SC_OUT(uint32_t          )   ** out_INSERT_INSTRUCTION          ;//[nb_inst_insert]
     112#endif
    107113  public    : SC_OUT(Ttype_t           )   ** out_INSERT_TYPE                 ;//[nb_inst_insert]
    108114  public    : SC_OUT(Toperation_t      )   ** out_INSERT_OPERATION            ;//[nb_inst_insert]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r123 r137  
    6565      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID    ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6666      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_DEPTH         ,"depth"        ,Tdepth_t          ,_param->_size_depth                 , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     67#ifdef STATISTICS
     68      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_INSTRUCTION   ,"instruction"  ,uint32_t          ,32                                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     69#endif
    6770      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_TYPE          ,"type"         ,Ttype_t           ,_param->_size_type                  , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6871      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_OPERATION     ,"operation"    ,Toperation_t      ,_param->_size_operation             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    102105      ALLOC1_SIGNAL_OUT(out_INSERT_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id            );
    103106      ALLOC1_SIGNAL_OUT(out_INSERT_DEPTH                ,"depth"                ,Tdepth_t          ,_param->_size_depth                 );
     107#ifdef STATISTICS
     108      ALLOC1_SIGNAL_OUT(out_INSERT_INSTRUCTION          ,"instruction"          ,uint32_t          ,32);
     109#endif
    104110      ALLOC1_SIGNAL_OUT(out_INSERT_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type                  );
    105111      ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation             );
     
    333339            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_DEPTH"        ,
    334340                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_DEPTH"        );
     341#ifdef STATISTICS
     342            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"  ,
     343                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"  );
     344#endif
    335345            PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_TYPE"         ,
    336346                                dest, "in_RENAME_IN_"+toString(i)+"_"+toString(j)+"_TYPE"         );
     
    395405          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_DEPTH"       ,
    396406                              dest,"out_INSERT_"    +toString(i)+"_DEPTH"       );
     407#ifdef STATISTICS
     408          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_INSTRUCTION" ,
     409                              dest,"out_INSERT_"    +toString(i)+"_INSTRUCTION" );
     410#endif
    397411#ifdef DEBUG
    398412          PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_ADDRESS"     ,
     
    552566          PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_ACK"               ,
    553567                              dest, "in_INSERT_"+toString(i)+"_ACK"               );
    554           if (_param->_have_port_front_end_id)
    555           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      ,
    556                               dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      );
    557           if (_param->_have_port_context_id)
    558           PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        ,
    559                               dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
     568//        if (_param->_have_port_front_end_id)
     569//        PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      ,
     570//                            dest,"out_INSERT_"+toString(i)+"_FRONT_END_ID"      );
     571//        if (_param->_have_port_context_id)
     572//        PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        ,
     573//                            dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
    560574          PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RA"           ,
    561575                              dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_deallocation.cpp

    r123 r137  
    3333        DELETE2_SIGNAL( in_RENAME_IN_CONTEXT_ID        ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id            );
    3434        DELETE2_SIGNAL( in_RENAME_IN_DEPTH             ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth                 );
     35#ifdef STATISTICS
     36        DELETE2_SIGNAL( in_RENAME_IN_INSTRUCTION       ,_param->_nb_front_end, _param->_nb_inst_decod[it1],32);
     37#endif
    3538        DELETE2_SIGNAL( in_RENAME_IN_TYPE              ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type                  );
    3639        DELETE2_SIGNAL( in_RENAME_IN_OPERATION         ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation             );
     
    6366        DELETE1_SIGNAL(out_INSERT_CONTEXT_ID           ,_param->_nb_inst_insert,_param->_size_context_id            );
    6467        DELETE1_SIGNAL(out_INSERT_DEPTH                ,_param->_nb_inst_insert,_param->_size_depth                 );
     68#ifdef STATISTICS
     69        DELETE1_SIGNAL(out_INSERT_INSTRUCTION          ,_param->_nb_inst_insert,32);
     70#endif
    6571        DELETE1_SIGNAL(out_INSERT_TYPE                 ,_param->_nb_inst_insert,_param->_size_type                  );
    6672        DELETE1_SIGNAL(out_INSERT_OPERATION            ,_param->_nb_inst_insert,_param->_size_operation             );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/OOO_Engine.h

    r136 r137  
    7373  public    : SC_IN (Tcontext_t        )  ***  in_RENAME_CONTEXT_ID                ;//[nb_front_end][nb_inst_decod]
    7474  public    : SC_IN (Tdepth_t          )  ***  in_RENAME_DEPTH                     ;//[nb_front_end][nb_inst_decod]
     75#ifdef STATISTICS
     76  public    : SC_IN (uint32_t          )  ***  in_RENAME_INSTRUCTION               ;//[nb_front_end][nb_inst_decod]
     77#endif
    7578  public    : SC_IN (Ttype_t           )  ***  in_RENAME_TYPE                      ;//[nb_front_end][nb_inst_decod]
    7679  public    : SC_IN (Toperation_t      )  ***  in_RENAME_OPERATION                 ;//[nb_front_end][nb_inst_decod]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp

    r136 r137  
    6262      _ALLOC2_SIGNAL_IN ( in_RENAME_CONTEXT_ID                ,"CONTEXT_ID"                ,Tcontext_t        ,_param->_size_context_id             ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6363      _ALLOC2_SIGNAL_IN ( in_RENAME_DEPTH                     ,"DEPTH"                     ,Tdepth_t          ,_param->_size_depth                  ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     64#ifdef STATISTICS
     65      _ALLOC2_SIGNAL_IN ( in_RENAME_INSTRUCTION               ,"INSTRUCTION"               ,uint32_t          ,32                                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     66#endif
    6467      _ALLOC2_SIGNAL_IN ( in_RENAME_TYPE                      ,"TYPE"                      ,Ttype_t           ,_param->_size_type                   ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6568      _ALLOC2_SIGNAL_IN ( in_RENAME_OPERATION                 ,"OPERATION"                 ,Toperation_t      ,_param->_size_operation              ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    441444                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_TYPE"         ,
    442445                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_TYPE"         );
     446#ifdef STATISTICS
     447                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_INSTRUCTION"  ,
     448                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_INSTRUCTION"  );
     449#endif
    443450                    PORT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+"_OPERATION"    ,
    444451                                        dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_OPERATION"    );
     
    514521#endif
    515522
     523#ifdef STATISTICS
     524            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_INSTRUCTION"   ,
     525                                     dest, "in_INSERT_"+toString(i)+"_"+toString(j)+"_INSTRUCTION"   );
     526#endif
    516527            if (_param->_have_port_depth)
    517528            COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(j)                +"_DEPTH"         ,
     
    798809            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RA_PHY"       ,
    799810                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RA_PHY"       );
     811#endif
    800812            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_READ_RB"              ,
    801813                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_READ_RB"              );
     814#ifdef DEBUG
    802815            COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_"+toString(j)+            "_NUM_REG_RB_PHY"       ,
    803816                                     dest,"out_INSERT_"+toString(i)+"_"+toString(j)+"_COMMIT_UNIT_NUM_REG_RB_PHY"       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp

    r136 r137  
    3232        DELETE2_SIGNAL( in_RENAME_CONTEXT_ID                ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_context_id             );
    3333        DELETE2_SIGNAL( in_RENAME_DEPTH                     ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_depth                  );
     34#ifdef STATISTICS
     35        DELETE2_SIGNAL( in_RENAME_INSTRUCTION               ,_param->_nb_front_end,_param->_nb_inst_decod[it1],32);
     36#endif
    3437        DELETE2_SIGNAL( in_RENAME_TYPE                      ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_type                   );
    3538        DELETE2_SIGNAL( in_RENAME_OPERATION                 ,_param->_nb_front_end,_param->_nb_inst_decod[it1],_param->_size_operation              );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_allocation.cpp

    r136 r137  
    462462              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_DEPTH"        ,
    463463                                       dest,"out_DECOD_"                 +toString(k)+"_DEPTH"        );
     464#ifdef STATISTICS
     465              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_INSTRUCTION"  ,
     466                                       dest,"out_DECOD_"                 +toString(k)+"_INSTRUCTION"  );
     467#endif
    464468              COMPONENT_MAP(_component,src , "in_RENAME_"+toString(j)+"_"+toString(k)+"_TYPE"         ,
    465469                                       dest,"out_DECOD_"                 +toString(k)+"_TYPE"         );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/include/Parameters.h

    r88 r137  
    2222  {
    2323    //-----[ fields ]------------------------------------------------------------
    24   public : const uint32_t _size_data;
    25   public : const uint32_t _nb_port  ;
    26   public : const uint32_t _data_max ;
     24  public : uint32_t _size_data;
     25  public : uint32_t _nb_port  ;
     26  public : uint32_t _data_max ;
    2727
    2828    //-----[ methods ]-----------------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Parameters.cpp

    r113 r137  
    1616  Parameters::Parameters (uint32_t size_data,
    1717                          uint32_t nb_port  ):
    18     behavioural::Parameters("Counter"),
    19     _size_data(size_data),
    20     _nb_port  (nb_port  ),
    21     _data_max ((1<<size_data)-1)
     18    behavioural::Parameters("Counter")
    2219  {
    2320    log_printf(FUNC,Counter,"Parameters","Begin");
     21
     22    _size_data = size_data;
     23    _nb_port   = nb_port  ;
     24    _data_max  = (1<<size_data)-1;
     25
    2426    test();
    2527    log_printf(FUNC,Counter,"Parameters","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/mkf.info

    r116 r137  
    11
    2 # Queue_00
    3 target_dep      all     Queue_00.ngc
    4 target_dep      Queue_00.ngc    Queue_00.prj
    5 target_dep      Queue_00.prj    Queue_00_Pack.vhdl Queue_00.vhdl
     2# Queue_0
     3target_dep      all     Queue_0.ngc
     4target_dep      Queue_0.ngc     Queue_0.prj
     5target_dep      Queue_0.prj     Queue_0_Pack.vhdl Queue_0.vhdl
    66
    7 # Queue_01
    8 target_dep      all     Queue_01.ngc
    9 target_dep      Queue_01.ngc    Queue_01.prj
    10 target_dep      Queue_01.prj    Queue_01_Pack.vhdl Queue_01.vhdl
     7# Queue_1
     8target_dep      all     Queue_1.ngc
     9target_dep      Queue_1.ngc     Queue_1.prj
     10target_dep      Queue_1.prj     Queue_1_Pack.vhdl Queue_1.vhdl
    1111
    12 # Queue_02
    13 target_dep      all     Queue_02.ngc
    14 target_dep      Queue_02.ngc    Queue_02.prj
    15 target_dep      Queue_02.prj    Queue_02_Pack.vhdl Queue_02.vhdl
     12# Queue_2
     13target_dep      all     Queue_2.ngc
     14target_dep      Queue_2.ngc     Queue_2.prj
     15target_dep      Queue_2.prj     Queue_2_Pack.vhdl Queue_2.vhdl
    1616
    17 # Queue_03
    18 target_dep      all     Queue_03.ngc
    19 target_dep      Queue_03.ngc    Queue_03.prj
    20 target_dep      Queue_03.prj    Queue_03_Pack.vhdl Queue_03.vhdl
     17# Queue_3
     18target_dep      all     Queue_3.ngc
     19target_dep      Queue_3.ngc     Queue_3.prj
     20target_dep      Queue_3.prj     Queue_3_Pack.vhdl Queue_3.vhdl
    2121
    22 # Queue_04
    23 target_dep      all     Queue_04.ngc
    24 target_dep      Queue_04.ngc    Queue_04.prj
    25 target_dep      Queue_04.prj    Queue_04_Pack.vhdl Queue_04.vhdl
    26 
    27 # Queue_05
    28 target_dep      all     Queue_05.ngc
    29 target_dep      Queue_05.ngc    Queue_05.prj
    30 target_dep      Queue_05.prj    Queue_05_Pack.vhdl Queue_05.vhdl
    31 
    32 # Queue_06
    33 target_dep      all     Queue_06.ngc
    34 target_dep      Queue_06.ngc    Queue_06.prj
    35 target_dep      Queue_06.prj    Queue_06_Pack.vhdl Queue_06.vhdl
    36 
    37 # Queue_07
    38 target_dep      all     Queue_07.ngc
    39 target_dep      Queue_07.ngc    Queue_07.prj
    40 target_dep      Queue_07.prj    Queue_07_Pack.vhdl Queue_07.vhdl
    41 
    42 # Queue_08
    43 target_dep      all     Queue_08.ngc
    44 target_dep      Queue_08.ngc    Queue_08.prj
    45 target_dep      Queue_08.prj    Queue_08_Pack.vhdl Queue_08.vhdl
    46 
    47 # Queue_09
    48 target_dep      all     Queue_09.ngc
    49 target_dep      Queue_09.ngc    Queue_09.prj
    50 target_dep      Queue_09.prj    Queue_09_Pack.vhdl Queue_09.vhdl
    51 
    52 # Queue_10
    53 target_dep      all     Queue_10.ngc
    54 target_dep      Queue_10.ngc    Queue_10.prj
    55 target_dep      Queue_10.prj    Queue_10_Pack.vhdl Queue_10.vhdl
    56 
    57 # Queue_11
    58 target_dep      all     Queue_11.ngc
    59 target_dep      Queue_11.ngc    Queue_11.prj
    60 target_dep      Queue_11.prj    Queue_11_Pack.vhdl Queue_11.vhdl
    61 
    62 # Queue_12
    63 target_dep      all     Queue_12.ngc
    64 target_dep      Queue_12.ngc    Queue_12.prj
    65 target_dep      Queue_12.prj    Queue_12_Pack.vhdl Queue_12.vhdl
    66 
    67 # Queue_13
    68 target_dep      all     Queue_13.ngc
    69 target_dep      Queue_13.ngc    Queue_13.prj
    70 target_dep      Queue_13.prj    Queue_13_Pack.vhdl Queue_13.vhdl
    71 
    72 # Queue_14
    73 target_dep      all     Queue_14.ngc
    74 target_dep      Queue_14.ngc    Queue_14.prj
    75 target_dep      Queue_14.prj    Queue_14_Pack.vhdl Queue_14.vhdl
    76 
    77 # Queue_15
    78 target_dep      all     Queue_15.ngc
    79 target_dep      Queue_15.ngc    Queue_15.prj
    80 target_dep      Queue_15.prj    Queue_15_Pack.vhdl Queue_15.vhdl
    81 
    82 # Queue_16
    83 target_dep      all     Queue_16.ngc
    84 target_dep      Queue_16.ngc    Queue_16.prj
    85 target_dep      Queue_16.prj    Queue_16_Pack.vhdl Queue_16.vhdl
    86 
    87 # Queue_17
    88 target_dep      all     Queue_17.ngc
    89 target_dep      Queue_17.ngc    Queue_17.prj
    90 target_dep      Queue_17.prj    Queue_17_Pack.vhdl Queue_17.vhdl
    91 
    92 # Queue_18
    93 target_dep      all     Queue_18.ngc
    94 target_dep      Queue_18.ngc    Queue_18.prj
    95 target_dep      Queue_18.prj    Queue_18_Pack.vhdl Queue_18.vhdl
    96 
    97 # Queue_19
    98 target_dep      all     Queue_19.ngc
    99 target_dep      Queue_19.ngc    Queue_19.prj
    100 target_dep      Queue_19.prj    Queue_19_Pack.vhdl Queue_19.vhdl
    101 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/SelfTest/src/top_allocation.cpp

    r113 r137  
    3131
    3232  _usage = USE_ALL;
    33 //   _usage = usage_unset(_usage,USE_SYSTEMC              );
     33  _usage = usage_unset(_usage,USE_SYSTEMC              );
    3434//   _usage = usage_unset(_usage,USE_VHDL                 );
    3535//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/include/Parameters.h

    r101 r137  
    2222  {
    2323    //-----[ fields ]------------------------------------------------------------
    24   public : const uint32_t _size_queue         ;
    25   public : const uint32_t _size_data          ;
    26   public : const uint32_t _nb_port_slot       ;
    27   public : const bool     _have_port_ptr_write;
    28   public : const bool     _have_port_ptr_read ;
     24  public : uint32_t _size_queue         ;
     25  public : uint32_t _size_data          ;
     26  public : uint32_t _nb_port_slot       ;
     27  public : bool     _have_port_ptr_write;
     28  public : bool     _have_port_ptr_read ;
    2929
    30   public : const uint32_t _size_ptr           ;
    31   public : const bool     _have_port_ptr      ;
     30  public : uint32_t _size_ptr           ;
     31  public : bool     _have_port_ptr      ;
    3232
    3333    //-----[ methods ]-----------------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Parameters.cpp

    r113 r137  
    2121                          bool     have_port_ptr_write,
    2222                          bool     have_port_ptr_read ):
    23     behavioural::Parameters("Queue"),
    24     _size_queue          (size_queue),
    25     _size_data           (size_data ),
    26     _nb_port_slot        (nb_port_slot),
    27     _have_port_ptr_write (have_port_ptr_write and (log2(size_queue)>0)),
    28     _have_port_ptr_read  (have_port_ptr_read  and (log2(size_queue)>0)),
    29     _size_ptr            (log2(size_queue)),
    30     _have_port_ptr       (have_port_ptr_write or have_port_ptr_read)
     23    behavioural::Parameters("Queue")
    3124  {
    3225    log_printf(FUNC,Queue,FUNCTION,"Begin");
     26
     27    _size_queue          = size_queue;
     28    _size_data           = size_data ;
     29    _nb_port_slot        = nb_port_slot;
     30    _have_port_ptr_write = have_port_ptr_write and (log2(size_queue)>0);
     31    _have_port_ptr_read  = have_port_ptr_read  and (log2(size_queue)>0);
     32
     33    _size_ptr            = log2(size_queue);
     34    _have_port_ptr       = have_port_ptr_write or have_port_ptr_read;
     35
    3336    test();
    3437    log_printf(FUNC,Queue,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h

    r101 r137  
    2121  class Parameters : public morpheo::behavioural::Parameters
    2222  {
    23   public : const uint32_t    _nb_port_read ;
    24   public : const uint32_t    _nb_port_write;
    25   public : const uint32_t    _nb_port_read_write;
    26   public : const uint32_t    _nb_word      ;
    27   public : const uint32_t    _size_word    ;
    28   public : const uint32_t    _size_address ;
    29   public : const bool        _have_port_address;
    30   public : const bool        _have_init_value;
    31   public : const std::string _init_value;
     23  public : uint32_t    _nb_port_read ;
     24  public : uint32_t    _nb_port_write;
     25  public : uint32_t    _nb_port_read_write;
     26  public : uint32_t    _nb_word      ;
     27  public : uint32_t    _size_word    ;
     28  public : std::string _init_value   ;
     29
     30  public : uint32_t    _size_address ;
     31  public : bool        _have_port_address;
     32  public : bool        _have_init_value;
    3233
    3334  public : Parameters (uint32_t    nb_port_read ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp

    r101 r137  
    77
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h"
     9#include "Common/include/Log2.h"
    910
    1011namespace morpheo                    {
     
    2021                          uint32_t    size_word    ,
    2122                          std::string init_value
    22                           ) :
    23     _nb_port_read      (nb_port_read ),
    24     _nb_port_write     (nb_port_write),
    25     _nb_port_read_write(nb_port_read_write),
    26     _nb_word           (nb_word      ),
    27     _size_word         (size_word    ),
    28     _size_address      (static_cast<uint32_t>(log2(_nb_word))),
    29     _have_port_address (_size_address != 0),
    30     _have_init_value   (init_value != ""),
    31     _init_value        (init_value)
     23                          )
    3224  {
     25    _nb_port_read       = nb_port_read ;
     26    _nb_port_write      = nb_port_write;
     27    _nb_port_read_write = nb_port_read_write;
     28    _nb_word            = nb_word      ;
     29    _size_word          = size_word    ;
     30    _init_value         = init_value   ;
     31
     32    _size_address       = log2(_nb_word);
     33    _have_port_address  = _size_address != 0;
     34    _have_init_value    = init_value != "";
     35
    3336    test();
    3437  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h

    r124 r137  
    2424  {
    2525    //-----[ fields ]------------------------------------------------------------
    26   public : const uint32_t    _nb_port_read         ; // Global read  port
    27   public : const uint32_t    _nb_port_write        ; // Global write port
    28   public : const uint32_t    _nb_word              ;
    29   public : const uint32_t    _size_word            ;
    30   public : const uint32_t    _nb_bank              ; // Number of bank (All bank is identical)
    31   public : const uint32_t    _nb_port_read_by_bank ; // Local  read  port
    32   public : const uint32_t    _nb_port_write_by_bank; // Local  write port
    33   public : const Tcrossbar_t _crossbar             ;
    34   public : const bool        _have_init_value;
    35   public : const std::string _init_value;
     26  public : uint32_t    _nb_port_read         ; // Global read  port
     27  public : uint32_t    _nb_port_write        ; // Global write port
     28  public : uint32_t    _nb_word              ;
     29  public : uint32_t    _size_word            ;
     30  public : uint32_t    _nb_bank              ; // Number of bank (All bank is identical)
     31  public : uint32_t    _nb_port_read_by_bank ; // Local  read  port
     32  public : uint32_t    _nb_port_write_by_bank; // Local  write port
     33  public : Tcrossbar_t _crossbar             ;
     34  public : std::string _init_value           ;
    3635
    37   public : const uint32_t    _size_address         ;
    38   public : const uint32_t    _size_address_by_bank ;
     36  public : uint32_t    _size_address         ;
     37  public : uint32_t    _size_address_by_bank ;
    3938
    40   public : const uint32_t    _bank_shift           ;
    41   public : const Taddress_t  _bank_mask            ;
    42   public : const uint32_t    _num_reg_shift        ;
    43   public : const Taddress_t  _num_reg_mask         ;
     39  public : uint32_t    _bank_shift           ;
     40  public : Taddress_t  _bank_mask            ;
     41  public : uint32_t    _num_reg_shift        ;
     42  public : Taddress_t  _num_reg_mask         ;
    4443
    45   public : const uint32_t    _nb_word_by_bank      ;
     44  public : uint32_t    _nb_word_by_bank      ;
    4645
    47   public : const bool        _have_port_address     ;
    48   public : const bool        _have_bank_port_address;
     46  public : bool        _have_port_address     ;
     47  public : bool        _have_bank_port_address;
     48  public : bool        _have_init_value       ;
    4949
    5050    // A lot of table to the partial crossbar
    51   public :       uint32_t  * _link_port_read_to_bank_read  ;
    52 //public :       uint32_t  * _link_port_read_to_num_bank   ;
    53   public :       uint32_t  * _link_port_write_to_bank_write;
    54 //public :       uint32_t  * _link_port_write_to_num_bank  ;
     51  public : uint32_t  * _link_port_read_to_bank_read  ;
     52//public : uint32_t  * _link_port_read_to_num_bank   ;
     53  public : uint32_t  * _link_port_write_to_bank_write;
     54//public : uint32_t  * _link_port_write_to_num_bank  ;
    5555
    5656    //-----[ methods ]-----------------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h

    r88 r137  
    4848#ifdef STATISTICS
    4949  public    : Stat                           * _stat;
     50
     51  private   : counter_t                      * _stat_nb_read;
     52  private   : counter_t                      * _stat_nb_write;
     53  private   : counter_t                      * _stat_nb_conflict_on_read;
     54  private   : counter_t                      * _stat_nb_conflict_on_write;
    5055#endif
    5156
     
    8085  private   : Taddress_t                    * internal_WRITE_BANK;
    8186  private   : Taddress_t                    * internal_WRITE_NUM_REG;
     87
     88#ifdef STATISTICS
     89  private   : bool                          * internal_READ_VAL;
     90//private   : Taddress_t                    * internal_READ_BANK;
     91#endif
    8292
    8393        // function pointer
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/Parameters.cpp

    r124 r137  
    88#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/Parameters.h"
    99#include "Common/include/BitManipulation.h"
     10#include "Common/include/Log2.h"
    1011
    1112namespace morpheo {
     
    2526                          Tcrossbar_t crossbar             ,
    2627                          std::string init_value
    27                           ):
    28     _nb_port_read          (nb_port_read         ),
    29     _nb_port_write         (nb_port_write        ),
    30     _nb_word               (nb_word              ),
    31     _size_word             (size_word            ),
    32     _nb_bank               (nb_bank              ),
    33     _nb_port_read_by_bank  (nb_port_read_by_bank ),
    34     _nb_port_write_by_bank (nb_port_write_by_bank),
    35     _crossbar              (crossbar             ),
    36     _have_init_value       (init_value != ""     ),
    37     _init_value            (init_value           ),
    38     _size_address          (static_cast<uint32_t>(ceil(log2(_nb_word)))),
    39     _size_address_by_bank  (_size_address - static_cast<uint32_t>(ceil(log2(_nb_bank)))),
     28                          )
     29  {
     30    log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
     31
     32    _nb_port_read           = nb_port_read         ;
     33    _nb_port_write          = nb_port_write        ;
     34    _nb_word                = nb_word              ;
     35    _size_word              = size_word            ;
     36    _nb_bank                = nb_bank              ;
     37    _nb_port_read_by_bank   = nb_port_read_by_bank ;
     38    _nb_port_write_by_bank  = nb_port_write_by_bank;
     39    _crossbar               = crossbar             ;
     40    _init_value             = init_value           ;
     41
     42    _size_address           = log2(_nb_word);
     43    _size_address_by_bank   = _size_address - log2(_nb_bank);
    4044
    4145    // Address : [....................]  [size_address-1:0]
    4246    // Bank    : [....]                  [size_address-1:size_address-1-log2(nb_bank)]
    4347    // num_reg :      ]...............]  [size_address-2-log2(nb_bank):0]
    44     _bank_shift            (_size_address_by_bank),
    45     _bank_mask             (gen_mask<Taddress_t>(static_cast<Taddress_t>(ceil(log2(_nb_bank))))),
    46     _num_reg_shift         (0),
    47     _num_reg_mask          (gen_mask<Taddress_t>(_size_address_by_bank)),
    48     _nb_word_by_bank       (_nb_word / _nb_bank),
    49     _have_port_address     (_size_address         != 0),
    50     _have_bank_port_address(_size_address_by_bank != 0)
    51   {
    52     log_printf(FUNC,RegisterFile_Multi_Banked,"Parameters","Begin");
     48    _bank_shift             = _size_address_by_bank;
     49    _bank_mask              = gen_mask<Taddress_t>(log2(_nb_bank));
     50    _num_reg_shift          = 0;
     51    _num_reg_mask           = gen_mask<Taddress_t>(_size_address_by_bank);
     52    _nb_word_by_bank        = _nb_word / _nb_bank;
     53    _have_port_address      = _size_address         != 0;
     54    _have_bank_port_address = _size_address_by_bank != 0;
     55    _have_init_value        = init_value != ""     ;
    5356
    5457    if (_crossbar == PARTIAL_CROSSBAR)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp

    r112 r137  
    7777        ALLOC1(internal_WRITE_BANK   ,Taddress_t,_param->_nb_port_write);
    7878        ALLOC1(internal_WRITE_NUM_REG,Taddress_t,_param->_nb_port_write);
     79
     80#ifdef STATISTICS
     81        ALLOC1(internal_READ_VAL     ,bool      ,_param->_nb_port_read);
     82#endif
    7983      }
    8084
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp

    r112 r137  
    4040        DELETE1(internal_WRITE_BANK     ,_param->_nb_port_write);
    4141        DELETE1(internal_WRITE_NUM_REG  ,_param->_nb_port_write);
     42
     43#ifdef STATISTICS
     44        DELETE1(internal_READ_VAL       ,_param->_nb_port_read);
     45#endif
     46
    4247      }       
    4348
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_full_crossbar_genMealy_read.cpp

    r123 r137  
    3838        bool ack = false;
    3939
     40#ifdef STATISTICS
     41        internal_READ_VAL  [i] = false;
     42#endif
     43
    4044        log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"  * read [%d] : %d",i,val);
    4145
     
    7276                    log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"    * data      : %d",data);
    7377
     78#ifdef STATISTICS
     79                    internal_READ_VAL  [i] = true;
     80#endif
    7481                    PORT_WRITE(out_READ_DATA [i], data);
    7582
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_partial_crossbar_genMealy_read.cpp

    r123 r137  
    3737        bool ack = false;
    3838
     39#ifdef STATISTICS
     40        internal_READ_VAL  [i] = false;
     41#endif
     42
    3943        log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"  * read [%d] : %d",i,val);
    4044
     
    7377                    log_printf(TRACE,RegisterFile_Multi_Banked,FUNCTION,"    * data      : %d",data);
    7478
     79#ifdef STATISTICS
     80                    internal_READ_VAL  [i] = true;
     81#endif
     82
    7583                    PORT_WRITE(out_READ_DATA [i], data);
    7684
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_statistics_declaration.cpp

    r81 r137  
    2424                      "RegisterFile_Multi_Banked",
    2525                      param_statistics);
     26
     27//     _stat_nb_read              = _stat->create_variable("nb_read" );
     28//     _stat_nb_write             = _stat->create_variable("nb_write");
     29//     _stat_nb_conflict_on_read  = _stat->create_variable("nb_conflict_on_read" );
     30//     _stat_nb_conflict_on_write = _stat->create_variable("nb_conflict_on_write");
     31
     32    _stat_nb_read              = _stat->create_counter("nb_read"             ,"","");
     33    _stat_nb_write             = _stat->create_counter("nb_write"            ,"","");
     34    _stat_nb_conflict_on_read  = _stat->create_counter("nb_conflict_on_read" ,"","");
     35    _stat_nb_conflict_on_write = _stat->create_counter("nb_conflict_on_write","","");
     36
     37    _stat->create_expr_average_by_cycle("average_read" , "nb_read" , "", _("Average read by cycle" ));
     38    _stat->create_expr_average_by_cycle("average_write", "nb_write", "", _("Average write by cycle"));
     39
     40    _stat->create_expr_percent         ("percent_conflict_on_read" , "nb_conflict_on_read" , "+ nb_read  nb_conflict_on_read" , _("Percent conflit on read port" ));
     41    _stat->create_expr_percent         ("percent_conflict_on_write", "nb_conflict_on_write", "+ nb_write nb_conflict_on_write", _("Percent conflit on write port"));
    2642   
    2743    log_printf(FUNC,RegisterFile_Multi_Banked,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_transition.cpp

    r128 r137  
    5151                reg_DATA[internal_WRITE_BANK[i]][internal_WRITE_NUM_REG[i]] = data;
    5252              }
     53
     54#ifdef STATISTICS
     55            if (usage_is_set(_usage,USE_STATISTICS))
     56              if (PORT_READ(in_WRITE_VAL [i]))
     57                {
     58                  if (internal_WRITE_VAL [i] == 1)
     59                    (*_stat_nb_write) ++;
     60                  else
     61                    (*_stat_nb_conflict_on_write) ++;
     62                }                 
     63#endif   
    5364          }
     65
     66#ifdef STATISTICS
     67        if (usage_is_set(_usage,USE_STATISTICS))
     68          for (uint32_t i=0; i<_param->_nb_port_read; i++)
     69            if (PORT_READ(in_READ_VAL [i]))
     70              {
     71                if (internal_READ_VAL [i] == 1)
     72                  (*_stat_nb_read) ++;
     73                else
     74                  (*_stat_nb_conflict_on_read) ++;
     75              }           
     76#endif   
     77
    5478      }
    5579
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_vhdl_body.cpp

    r81 r137  
    8888                std::string   index     = (_param->_crossbar == FULL_CROSSBAR)?("_"+toString(j)):"";
    8989
    90                 vhdl->set_body("\t"+separator+" in_VAL_"+toString(k)+"     \t=>\tinternal_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
    91                 vhdl->set_body("\t,out_ACK_"+toString(k)+"     \t=>\tinternal_SELECT_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
     90                vhdl->set_body("\t"+separator+" in_"+toString(k)+"_VAL     \t=>\tinternal_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
     91                vhdl->set_body("\t,out_"+toString(k)+"_ACK     \t=>\tinternal_SELECT_READ_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
    9292              }
    9393            vhdl->set_body(");");
     
    107107                std::string   index     = (_param->_crossbar == FULL_CROSSBAR)?("_"+toString(j)):"";
    108108               
    109                 vhdl->set_body("\t"+separator+" in_VAL_"+toString(k)+"     \t=>\tinternal_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
    110                 vhdl->set_body("\t,out_ACK_"+toString(k)+"     \t=>\tinternal_SELECT_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
     109                vhdl->set_body("\t"+separator+" in_"+toString(k)+"_VAL     \t=>\tinternal_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
     110                vhdl->set_body("\t,out_"+toString(k)+"_ACK     \t=>\tinternal_SELECT_WRITE_"+toString(i)+"_"+toString(num_port)+index+"_VAL");
    111111              }
    112112            vhdl->set_body(");");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/src/test.cpp

    r131 r137  
    2626  Tusage_t _usage = USE_ALL;
    2727
    28 //   _usage = usage_unset(_usage,USE_SYSTEMC              );
     28  _usage = usage_unset(_usage,USE_SYSTEMC              );
    2929//   _usage = usage_unset(_usage,USE_VHDL                 );
    3030//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/Parameters.h

    r88 r137  
    2626  {
    2727    //-----[ fields ]------------------------------------------------------------
    28   public : const Tinstance_t _instance;
    29   public : const uint32_t    _nb_port_read ;
    30   public : const uint32_t    _nb_port_write;
    31   public : const uint32_t    _nb_word      ;
    32   public : const uint32_t    _size_word    ;
    33   public : const uint32_t    _size_address ;
    34   public : const bool        _have_port_address;
     28  public : Tinstance_t _instance;
     29  public : uint32_t    _nb_port_read ;
     30  public : uint32_t    _nb_port_write;
     31  public : uint32_t    _nb_word      ;
     32  public : uint32_t    _size_word    ;
     33  public : uint32_t    _size_address ;
     34  public : bool        _have_port_address;
    3535
    3636  public : morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * _param_registerfile_monolithic;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/src/Parameters.cpp

    r88 r137  
    1414
    1515
    16   Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param) :
    17     _instance          (instance_RegisterFile_Monolithic),
    18     _nb_port_read      (param->_nb_port_read ),
    19     _nb_port_write     (param->_nb_port_write),
    20     _nb_word           (param->_nb_word      ),
    21     _size_word         (param->_size_word    ),
    22     _size_address      (param->_size_address ),
    23     _have_port_address (param->_have_port_address)
     16  Parameters::Parameters (morpheo::behavioural::generic::registerfile::registerfile_monolithic  ::Parameters * param)
    2417  {
    2518    log_printf(FUNC,RegisterFile,"Parameters","Begin");
     19
     20    _instance          = instance_RegisterFile_Monolithic;
     21    _nb_port_read      = param->_nb_port_read ;
     22    _nb_port_write     = param->_nb_port_write;
     23    _nb_word           = param->_nb_word      ;
     24    _size_word         = param->_size_word    ;
     25    _size_address      = param->_size_address ;
     26    _have_port_address = param->_have_port_address;
    2627
    2728    _param_registerfile_monolithic   = param;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h

    r88 r137  
    2222  {
    2323    //-----[ fields ]------------------------------------------------------------
    24   public : const uint32_t _nb_entity       ;
    25   public : const bool     _encoding_one_hot;
    26   public : const bool     _encoding_compact;
    27   public : const uint32_t _size_entity;
     24  public : uint32_t _nb_entity       ;
     25  public : bool     _encoding_one_hot;
     26  public : bool     _encoding_compact;
     27
     28  public : uint32_t _size_entity;
    2829
    2930    //-----[ methods ]-----------------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Parameters.cpp

    r88 r137  
    77
    88#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Parameters.h"
     9#include "Common/include/Log2.h"
    910
    1011namespace morpheo {
     
    1718  Parameters::Parameters (uint32_t nb_entity       ,
    1819                          bool     encoding_one_hot,
    19                           bool     encoding_compact):
    20     _nb_entity        (nb_entity       ),
    21     _encoding_one_hot (encoding_one_hot),
    22     _encoding_compact (encoding_compact),
    23     _size_entity (static_cast<uint32_t> (ceil(log2(nb_entity))))
     20                          bool     encoding_compact)
    2421  {
    2522    log_printf(FUNC,Select_Priority_Fixed,"Parameters","Begin");
     23
     24    _nb_entity        = nb_entity       ;
     25    _encoding_one_hot = encoding_one_hot;
     26    _encoding_compact = encoding_compact;
     27    _size_entity      = log2(nb_entity);
     28
    2629    test();
    2730    log_printf(FUNC,Select_Priority_Fixed,"Parameters","End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_vhdl_body.cpp

    r81 r137  
    2424    for (uint32_t i=0; i<_param->_nb_entity; i++)
    2525      {
    26         vhdl->set_body("\t"+std_logic_conv(_param->_size_entity+1,i)+" when in_VAL_"+toString(i)+"='1' else");
     26        vhdl->set_body("\t"+std_logic_conv(_param->_size_entity+1,i)+" when in_"+toString(i)+"_VAL='1' else");
    2727      }
    2828    vhdl->set_body("\t"+std_logic_conv(_param->_size_entity+1,1<<_param->_size_entity)+";");
     
    3232      {
    3333        for (uint32_t i=0; i<_param->_nb_entity; i++)
    34           vhdl->set_body("out_ACK_"+toString(i)+" <= '1' when internal_entity"+std_logic_range(_param->_size_entity+1)+" = "+std_logic_conv(_param->_size_entity+1,i)+" else '0';");
     34          vhdl->set_body("out_"+toString(i)+"_ACK <= '1' when internal_entity"+std_logic_range(_param->_size_entity+1)+" = "+std_logic_conv(_param->_size_entity+1,i)+" else '0';");
    3535        vhdl->set_body ("");
    3636      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Parameters.h

    r112 r137  
    2121  {
    2222    //-----[ fields ]------------------------------------------------------------
    23   public : const uint32_t    _size_data           ;
    24   public : const uint32_t    _nb_port             ;
    25   public : const uint32_t    _shift_value         ; // 0 = external shifter's value
    26   public : const rotate_t    _rotate              ;
    27   public : const direction_t _direction           ;
    28   public : const carry_t     _carry               ;
    29   public : const uint32_t    _size_data_completion;
    30   public : const bool        _type_completion_bool;
     23  public : uint32_t    _size_data           ;
     24  public : uint32_t    _nb_port             ;
     25  public : uint32_t    _shift_value         ; // 0 = external shifter's value
     26  public : rotate_t    _rotate              ;
     27  public : direction_t _direction           ;
     28  public : carry_t     _carry               ;
     29  public : uint32_t    _size_data_completion;
     30  public : bool        _type_completion_bool;
    3131
    32   public : const uint32_t    _size_shift        ;
     32  public : uint32_t    _size_shift        ;
    3333
    34   public : const bool        _internal_direction;
    35   public : const bool        _internal_type     ;
    36   public : const bool        _internal_carry    ;
     34  public : bool        _internal_direction;
     35  public : bool        _internal_type     ;
     36  public : bool        _internal_carry    ;
    3737
    38   public : const bool        _have_shift_logic_left        ;
    39   public : const bool        _have_shift_logic_right       ;
    40   public : const bool        _have_shift_logic             ;
    41   public : const bool        _have_shift_arithmetic_left   ;
    42   public : const bool        _have_shift_arithmetic_right  ;
    43   public : const bool        _have_shift_arithmetic        ;
    44   public : const bool        _have_shift                   ;
    45   public : const bool        _have_rotate_left             ;
    46   public : const bool        _have_rotate_right            ;
    47   public : const bool        _have_rotate                  ;
     38  public : bool        _have_shift_logic_left        ;
     39  public : bool        _have_shift_logic_right       ;
     40  public : bool        _have_shift_logic             ;
     41  public : bool        _have_shift_arithmetic_left   ;
     42  public : bool        _have_shift_arithmetic_right  ;
     43  public : bool        _have_shift_arithmetic        ;
     44  public : bool        _have_shift                   ;
     45  public : bool        _have_rotate_left             ;
     46  public : bool        _have_rotate_right            ;
     47  public : bool        _have_rotate                  ;
    4848   
    49   public : const bool        _have_direction_left          ;
    50   public : const bool        _have_direction_right         ;
     49  public : bool        _have_direction_left          ;
     50  public : bool        _have_direction_right         ;
    5151
    5252    //-----[ methods ]-----------------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters.cpp

    r112 r137  
    2020                           direction_t direction           ,
    2121                           carry_t     carry               ,
    22                            bool        type_completion_bool):
    23     _size_data                     (size_data     ),
    24     _nb_port                       (nb_port       ),
    25     _shift_value                   (shift_value   ),
    26     _rotate                        (rotate        ),
    27     _direction                     (direction     ),
    28     _carry                         (carry         ),
    29     _size_data_completion          ((carry != external_completion)?0:((_shift_value==0)?size_data:_shift_value)),
    30     _type_completion_bool          (type_completion_bool),
     22                           bool        type_completion_bool)
     23  {
     24    _size_data                     = size_data     ;
     25    _nb_port                       = nb_port       ;
     26    _shift_value                   = shift_value   ;
     27    _rotate                        = rotate        ;
     28    _direction                     = direction     ;
     29    _carry                         = carry         ;
     30    _size_data_completion          = (carry != external_completion)?0:((_shift_value==0)?size_data:_shift_value);
     31    _type_completion_bool          = type_completion_bool;
    3132
    32     _size_shift                    (static_cast<uint32_t>(ceil(log2(_size_data)))),
     33    _size_shift                    = static_cast<uint32_t>(ceil(log2(_size_data)));
     34   
     35    _internal_direction            = (direction == internal_right_shift)?_right :_left      ;
     36    _internal_type                 = (rotate    == internal_rotate     )?_rotate:_shift     ;
     37    _internal_carry                = (carry     == internal_logic      )?_logic :_arithmetic;
    3338
    34     _internal_direction            ((direction == internal_right_shift)?_right :_left      ),
    35     _internal_type                 ((rotate    == internal_rotate     )?_rotate:_shift     ),
    36     _internal_carry                ((carry     == internal_logic      )?_logic :_arithmetic),
     39    _have_shift_logic_left         = ((rotate != internal_rotate)         &&
     40                                      (((carry     == external_carry     ) ||
     41                                        (carry     == external_completion) ||
     42                                        (carry     == internal_logic     )) &&
     43                                       ((direction == external_direction ) ||
     44                                        (direction == internal_left_shift))));
     45    _have_shift_logic_right        = ((rotate != internal_rotate)         &&
     46                                      (((carry     == external_carry     ) ||
     47                                        (carry     == external_completion) ||
     48                                        (carry     == internal_logic     )) &&
     49                                       ((direction == external_direction ) ||
     50                                        (direction == internal_right_shift))));
     51    _have_shift_logic              = _have_shift_logic_left || _have_shift_logic_right;
    3752
    38     _have_shift_logic_left         ((rotate != internal_rotate)         &&
    39                                     (((carry     == external_carry     ) ||
    40                                       (carry     == external_completion) ||
    41                                       (carry     == internal_logic     )) &&
    42                                     ((direction == external_direction ) ||
    43                                      (direction == internal_left_shift)))),
    44     _have_shift_logic_right        ((rotate != internal_rotate)         &&
    45                                     (((carry     == external_carry     ) ||
    46                                       (carry     == external_completion) ||
    47                                       (carry     == internal_logic     )) &&
    48                                     ((direction == external_direction ) ||
    49                                      (direction == internal_right_shift)))),
    50     _have_shift_logic              (_have_shift_logic_left || _have_shift_logic_right),
     53    _have_shift_arithmetic_left    = ((rotate != internal_rotate)         &&
     54                                      (((carry    == external_carry     ) ||
     55                                        (carry    == internal_arithmetic )) &&
     56                                       ((direction == external_direction ) ||
     57                                        (direction == internal_left_shift))));
     58    _have_shift_arithmetic_right   = ((rotate != internal_rotate)         &&
     59                                      (((carry     == external_carry     ) ||
     60                                        (carry     == internal_arithmetic     )) &&
     61                                       ((direction == external_direction ) ||
     62                                        (direction == internal_right_shift))));
     63    _have_shift_arithmetic         = _have_shift_arithmetic_left || _have_shift_arithmetic_right;
    5164
    52     _have_shift_arithmetic_left    ((rotate != internal_rotate)         &&
    53                                     (((carry    == external_carry     ) ||
    54                                       (carry    == internal_arithmetic )) &&
    55                                     ((direction == external_direction ) ||
    56                                      (direction == internal_left_shift)))),
    57     _have_shift_arithmetic_right   ((rotate != internal_rotate)         &&
    58                                     (((carry     == external_carry     ) ||
    59                                       (carry     == internal_arithmetic     )) &&
    60                                      ((direction == external_direction ) ||
    61                                       (direction == internal_right_shift)))),
    62     _have_shift_arithmetic         (_have_shift_arithmetic_left || _have_shift_arithmetic_right),
     65    _have_shift                    = _have_shift_logic || _have_shift_arithmetic;
    6366
    64     _have_shift                    (_have_shift_logic || _have_shift_arithmetic),
     67    _have_rotate_left              = ((rotate != without_rotate)         &&
     68                                      ((direction == external_direction ) ||
     69                                       (direction == internal_left_shift)));
     70    _have_rotate_right             = ((rotate != without_rotate)         &&
     71                                      ((direction == external_direction ) ||
     72                                       (direction == internal_right_shift)));
     73    _have_rotate                   = _have_rotate_left || _have_rotate_right;
     74   
     75    _have_direction_left           = (_have_shift_logic_left       ||
     76                                      _have_shift_arithmetic_left  ||
     77                                      _have_rotate_left            );
     78    _have_direction_right          = (_have_shift_logic_right      ||
     79                                      _have_shift_arithmetic_right ||
     80                                      _have_rotate_right           );
    6581
    66     _have_rotate_left              ((rotate != without_rotate)         &&
    67                                     ((direction == external_direction ) ||
    68                                      (direction == internal_left_shift))),
    69     _have_rotate_right             ((rotate != without_rotate)         &&
    70                                     ((direction == external_direction ) ||
    71                                      (direction == internal_right_shift))),
    72     _have_rotate                   ( _have_rotate_left || _have_rotate_right),
    73 
    74     _have_direction_left           (_have_shift_logic_left       ||
    75                                     _have_shift_arithmetic_left  ||
    76                                     _have_rotate_left            ),
    77     _have_direction_right          (_have_shift_logic_right      ||
    78                                     _have_shift_arithmetic_right ||
    79                                     _have_rotate_right           )
    80   {
    8182    test();
    8283  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Parameters.h

    r88 r137  
    2222  {
    2323    //-----[ fields ]------------------------------------------------------------
    24   public : const uint32_t _nb_entity ; // number of entity
    25   public : const uint32_t _nb_access ; // number of port to select an entity
    26 //public : const uint32_t _nb_update ; // number of port to update the internal entity
    27   public : const uint32_t _size_table; // Size of victim_pseudo_lru's table
    28   public : const bool     _table_global;
    29   public : const uint32_t _size_address;
     24  public : uint32_t _nb_entity ; // number of entity
     25  public : uint32_t _nb_access ; // number of port to select an entity
     26//public : uint32_t _nb_update ; // number of port to update the internal entity
     27  public : uint32_t _size_table; // Size of victim_pseudo_lru's table
     28  public : bool     _table_global;
     29  public : uint32_t _size_address;
    3030
    3131    //-----[ methods ]-----------------------------------------------------------
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Parameters.cpp

    r88 r137  
    1919//                        uint32_t nb_update ,
    2020                          uint32_t size_table,
    21                           bool     table_global):
    22     _nb_entity  (nb_entity ),
    23     _nb_access  (nb_access ),
    24 //     _nb_update  (nb_update ),
    25     _size_table ((table_global == true)?1:size_table),
    26     _table_global (table_global),
    27     _size_address (size_table)
     21                          bool     table_global)
    2822  {
     23    _nb_entity    = nb_entity;
     24    _nb_access    = nb_access;
     25//  _nb_update    = nb_update;
     26    _size_table   = (table_global == true)?1:size_table;
     27    _table_global = table_global;
     28
     29    _size_address = size_table;
     30
    2931    test();
    3032  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Selftest

    r131 r137  
    235235                                        generated_by_systemcass \
    236236                                        semantic.cache          \
     237                                        gmon.out                \
    237238                                        core*;
    238239
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis

    r117 r137  
    4141vhdl_testbench                  : $(DIR_WORK)
    4242                                @\
    43                                 declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));                                         \
    44                                 declare -a log_files=($${vhdl_files[*]/%.vhdl/.vhdl.log});                                              \
    45                                 if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
     43                                $(LS) $(DIR_VHDL)/*_Testbench.vhdl &> /dev/null;                                \
     44                                if $(TEST) $$? -eq 0; then                                                      \
     45                                        declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));         \
     46                                        declare -a log_files=($${vhdl_files[*]/%.vhdl/.vhdl.log});              \
     47                                        if $(TEST) $${#log_files[*]} -ne 0; then                                \
     48                                                $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)};            \
     49                                        fi;                                                                     \
     50                                fi;
    4651
    4752vhdl_entity                     : $(DIR_WORK)
     
    7176sim                             : vhdl
    7277                                @\
    73                                 declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));                                         \
    74                                 declare -a log_files=($${vhdl_files[*]/%.vhdl/.sim.log});                                               \
    75                                 if $(TEST) $${#log_files[*]} -ne 0; then $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)}; fi;
     78                                $(LS) $(DIR_VHDL)/*_Testbench.vhdl &> /dev/null;                                \
     79                                if $(TEST) $$? -eq 0; then                                                      \
     80                                        declare -a vhdl_files=($$($(LS) $(DIR_VHDL)/*_Testbench.vhdl));         \
     81                                        declare -a log_files=($${vhdl_files[*]/%.vhdl/.sim.log});               \
     82                                        if $(TEST) $${#log_files[*]} -ne 0; then                                \
     83                                                $(MAKE) -k $${log_files[*]/#$(DIR_VHDL)/$(DIR_LOG)};            \
     84                                        fi;                                                                     \
     85                                fi;
    7686
    7787fpga                            : sim
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf

    r116 r137  
    33#
    44
    5 all: _Generic/Queue/SelfTest _Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest _Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest _Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest
     5all: _Generic/Queue/SelfTest _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
    66
    77_Generic/Queue/SelfTest:
    8         gmake all -C Generic/Queue/SelfTest
     8        make all -C Generic/Queue/SelfTest
    99
    10 _Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest:
    11         gmake all -C Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest
     10_Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
     11        make all -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    1212
    13 _Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest:
    14         gmake all -C Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest
    15 
    16 _Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest:
    17         gmake all -C Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest
     13_Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest:
     14        make all -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
    1815
    1916clean:
    20         gmake clean -C Generic/Queue/SelfTest
    21         gmake clean -C Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest
    22         gmake clean -C Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest
    23         gmake clean -C Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest
     17        make clean -C Generic/Queue/SelfTest
     18        make clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     19        make clean -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
    2420
    2521re: clean all
    2622
    2723install:
    28         gmake install -C Generic/Queue/SelfTest
    29         gmake install -C Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest
    30         gmake install -C Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest
    31         gmake install -C Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest
     24        make install -C Generic/Queue/SelfTest
     25        make install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     26        make install -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
    3227
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h

    r135 r137  
    337337    for (uint32_t it1=0; it1<iterator_1; it1++)                         \
    338338      {                                                                 \
    339         interface [it1] = _interfaces->set_interface( name+separator+toString(it1), direction, localisation, str); \
     339        interface [it1] = _interfaces->set_interface(((toString(name)!="")?(name+separator):"")+toString(it1), direction, localisation, str); \
    340340      }                                                                 \
    341341  }
     
    351351    for (uint32_t it1=0; it1<iterator_1; it1++)                         \
    352352      {                                                                 \
    353         interface [it1] = _interfaces->set_interface( name+separator+toString(it1)); \
     353        interface [it1] = _interfaces->set_interface(((toString(name)!="")?(name+separator):"")+toString(it1)); \
    354354      }                                                                 \
    355355  }
     
    559559        for (uint32_t it2=0; it2<iterator_2; it2++)                     \
    560560          {                                                             \
    561             interface [it1][it2] = _interfaces->set_interface( name+separator+toString(it1)+separator+toString(it2), direction, localisation, str); \
     561            interface [it1][it2] = _interfaces->set_interface(((toString(name)!="")?(name+separator):"")+toString(it1)+separator+toString(it2), direction, localisation, str); \
    562562          }                                                             \
    563563      }                                                                 \
     
    579579        for (uint32_t it2=0; it2<iterator_2; it2++)                     \
    580580          {                                                             \
    581             interface [it1][it2] = _interfaces->set_interface( name+separator+toString(it1)+separator+toString(it2)); \
     581            interface [it1][it2] = _interfaces->set_interface(((toString(name)!="")?(name+separator):"")+toString(it1)+separator+toString(it2)); \
    582582          }                                                             \
    583583      }                                                                 \
     
    849849            for (uint32_t it3=0; it3<iterator_3; it3++)                 \
    850850              {                                                         \
    851                 interface [it1][it2][it3] = _interfaces->set_interface( name+separator+toString(it1)+separator+toString(it2)+separator+toString(it3), direction, localisation, str); \
     851                interface [it1][it2][it3] = _interfaces->set_interface(((toString(name)!="")?(name+separator):"")+toString(it1)+separator+toString(it2)+separator+toString(it3), direction, localisation, str); \
    852852              }                                                         \
    853853          }                                                             \
     
    875875            for (uint32_t it3=0; it3<iterator_3; it3++)                 \
    876876              {                                                         \
    877                 interface [it1][it2][it3] = _interfaces->set_interface( name+separator+toString(it1)+separator+toString(it2)+separator+toString(it3)); \
     877                interface [it1][it2][it3] = _interfaces->set_interface(((toString(name)!="")?(name+separator):"")+toString(it1)+separator+toString(it2)+separator+toString(it3)); \
    878878              }                                                         \
    879879          }                                                             \
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h

    r117 r137  
    11381138//   };
    11391139
     1140  inline std::string toString_instruction(const uint32_t& x)
     1141  {
     1142    switch (x)
     1143      {
     1144      // ORBIS
     1145      case morpheo::behavioural::INSTRUCTION_L_ADD                          : return "l.add";
     1146      case morpheo::behavioural::INSTRUCTION_L_ADDC                         : return "l.addc";
     1147      case morpheo::behavioural::INSTRUCTION_L_ADDI                         : return "l.addi";
     1148      case morpheo::behavioural::INSTRUCTION_L_ADDIC                        : return "l.addic";
     1149      case morpheo::behavioural::INSTRUCTION_L_AND                          : return "l.and";
     1150      case morpheo::behavioural::INSTRUCTION_L_ANDI                         : return "l.andi";
     1151      case morpheo::behavioural::INSTRUCTION_L_BF                           : return "l.bf";
     1152      case morpheo::behavioural::INSTRUCTION_L_BNF                          : return "l.bnf";
     1153      case morpheo::behavioural::INSTRUCTION_L_CMOV                         : return "l.cmov";
     1154      case morpheo::behavioural::INSTRUCTION_L_CSYNC                        : return "l.csync";
     1155      case morpheo::behavioural::INSTRUCTION_L_CUST1                        : return "l.cust1";
     1156      case morpheo::behavioural::INSTRUCTION_L_CUST2                        : return "l.cust2";
     1157      case morpheo::behavioural::INSTRUCTION_L_CUST3                        : return "l.cust3";
     1158      case morpheo::behavioural::INSTRUCTION_L_CUST4                        : return "l.cust4";
     1159      case morpheo::behavioural::INSTRUCTION_L_CUST5                        : return "l.cust5";
     1160      case morpheo::behavioural::INSTRUCTION_L_CUST6                        : return "l.cust6";
     1161      case morpheo::behavioural::INSTRUCTION_L_CUST7                        : return "l.cust7";
     1162      case morpheo::behavioural::INSTRUCTION_L_CUST8                        : return "l.cust8";
     1163      case morpheo::behavioural::INSTRUCTION_L_DIV                          : return "l.div";
     1164      case morpheo::behavioural::INSTRUCTION_L_DIVU                         : return "l.divu";
     1165      case morpheo::behavioural::INSTRUCTION_L_EXTBS                        : return "l.extbs";
     1166      case morpheo::behavioural::INSTRUCTION_L_EXTBZ                        : return "l.extbz";
     1167      case morpheo::behavioural::INSTRUCTION_L_EXTHS                        : return "l.exths";
     1168      case morpheo::behavioural::INSTRUCTION_L_EXTHZ                        : return "l.exthz";
     1169      case morpheo::behavioural::INSTRUCTION_L_EXTWS                        : return "l.extws";
     1170      case morpheo::behavioural::INSTRUCTION_L_EXTWZ                        : return "l.extwz";
     1171      case morpheo::behavioural::INSTRUCTION_L_FF1                          : return "l.ff1";
     1172      case morpheo::behavioural::INSTRUCTION_L_FL1                          : return "l.fl1";
     1173      case morpheo::behavioural::INSTRUCTION_L_J                            : return "l.j";
     1174      case morpheo::behavioural::INSTRUCTION_L_JAL                          : return "l.jal";
     1175      case morpheo::behavioural::INSTRUCTION_L_JALR                         : return "l.jalr";
     1176      case morpheo::behavioural::INSTRUCTION_L_JR                           : return "l.jr";
     1177      case morpheo::behavioural::INSTRUCTION_L_LBS                          : return "l.lbs";
     1178      case morpheo::behavioural::INSTRUCTION_L_LBZ                          : return "l.lbz";
     1179      case morpheo::behavioural::INSTRUCTION_L_LD                           : return "l.ld";
     1180      case morpheo::behavioural::INSTRUCTION_L_LHS                          : return "l.lhs";
     1181      case morpheo::behavioural::INSTRUCTION_L_LHZ                          : return "l.lhz";
     1182      case morpheo::behavioural::INSTRUCTION_L_LWS                          : return "l.lws";
     1183      case morpheo::behavioural::INSTRUCTION_L_LWZ                          : return "l.lwz";
     1184      case morpheo::behavioural::INSTRUCTION_L_MAC                          : return "l.mac";
     1185      case morpheo::behavioural::INSTRUCTION_L_MACI                         : return "l.maci";
     1186      case morpheo::behavioural::INSTRUCTION_L_MACRC                        : return "l.macrc";
     1187      case morpheo::behavioural::INSTRUCTION_L_MFSPR                        : return "l.mfspr";
     1188      case morpheo::behavioural::INSTRUCTION_L_MOVHI                        : return "l.movhi";
     1189      case morpheo::behavioural::INSTRUCTION_L_MSB                          : return "l.msb";
     1190      case morpheo::behavioural::INSTRUCTION_L_MSYNC                        : return "l.msync";
     1191      case morpheo::behavioural::INSTRUCTION_L_MTSPR                        : return "l.mtspr";
     1192      case morpheo::behavioural::INSTRUCTION_L_MUL                          : return "l.mul";
     1193      case morpheo::behavioural::INSTRUCTION_L_MULI                         : return "l.muli";
     1194      case morpheo::behavioural::INSTRUCTION_L_MULU                         : return "l.mulu";
     1195      case morpheo::behavioural::INSTRUCTION_L_NOP                          : return "l.nop";
     1196      case morpheo::behavioural::INSTRUCTION_L_OR                           : return "l.or";
     1197      case morpheo::behavioural::INSTRUCTION_L_ORI                          : return "l.ori";
     1198      case morpheo::behavioural::INSTRUCTION_L_PSYNC                        : return "l.psync";
     1199      case morpheo::behavioural::INSTRUCTION_L_RFE                          : return "l.rfe";
     1200      case morpheo::behavioural::INSTRUCTION_L_ROR                          : return "l.ror";
     1201      case morpheo::behavioural::INSTRUCTION_L_RORI                         : return "l.rori";
     1202      case morpheo::behavioural::INSTRUCTION_L_SB                           : return "l.sb";
     1203      case morpheo::behavioural::INSTRUCTION_L_SD                           : return "l.sd";
     1204      case morpheo::behavioural::INSTRUCTION_L_SFEQ                         : return "l.sfeq";
     1205      case morpheo::behavioural::INSTRUCTION_L_SFEQI                        : return "l.sfeqi";
     1206      case morpheo::behavioural::INSTRUCTION_L_SFGES                        : return "l.sfges";
     1207      case morpheo::behavioural::INSTRUCTION_L_SFGESI                       : return "l.sfgesi";
     1208      case morpheo::behavioural::INSTRUCTION_L_SFGEU                        : return "l.sfgeu";
     1209      case morpheo::behavioural::INSTRUCTION_L_SFGEUI                       : return "l.sfgeui";
     1210      case morpheo::behavioural::INSTRUCTION_L_SFGTS                        : return "l.sfgts";
     1211      case morpheo::behavioural::INSTRUCTION_L_SFGTSI                       : return "l.sfgtsi";
     1212      case morpheo::behavioural::INSTRUCTION_L_SFGTU                        : return "l.sfgtu";
     1213      case morpheo::behavioural::INSTRUCTION_L_SFGTUI                       : return "l.sfgtui";
     1214      case morpheo::behavioural::INSTRUCTION_L_SFLES                        : return "l.sfles";
     1215      case morpheo::behavioural::INSTRUCTION_L_SFLESI                       : return "l.sflesi";
     1216      case morpheo::behavioural::INSTRUCTION_L_SFLEU                        : return "l.sfleu";
     1217      case morpheo::behavioural::INSTRUCTION_L_SFLEUI                       : return "l.sfleui";
     1218      case morpheo::behavioural::INSTRUCTION_L_SFLTS                        : return "l.sflts";
     1219      case morpheo::behavioural::INSTRUCTION_L_SFLTSI                       : return "l.sfltsi";
     1220      case morpheo::behavioural::INSTRUCTION_L_SFLTU                        : return "l.sfltu";
     1221      case morpheo::behavioural::INSTRUCTION_L_SFLTUI                       : return "l.sfltui";
     1222      case morpheo::behavioural::INSTRUCTION_L_SFNE                         : return "l.sfne";
     1223      case morpheo::behavioural::INSTRUCTION_L_SFNEI                        : return "l.sfnei";
     1224      case morpheo::behavioural::INSTRUCTION_L_SH                           : return "l.sh";
     1225      case morpheo::behavioural::INSTRUCTION_L_SLL                          : return "l.sll";
     1226      case morpheo::behavioural::INSTRUCTION_L_SLLI                         : return "l.slli";
     1227      case morpheo::behavioural::INSTRUCTION_L_SRA                          : return "l.sra";
     1228      case morpheo::behavioural::INSTRUCTION_L_SRAI                         : return "l.srai";
     1229      case morpheo::behavioural::INSTRUCTION_L_SRL                          : return "l.srl";
     1230      case morpheo::behavioural::INSTRUCTION_L_SRLI                         : return "l.srli";
     1231      case morpheo::behavioural::INSTRUCTION_L_SUB                          : return "l.sub";
     1232      case morpheo::behavioural::INSTRUCTION_L_SW                           : return "l.sw";
     1233      case morpheo::behavioural::INSTRUCTION_L_SYS                          : return "l.sys";
     1234      case morpheo::behavioural::INSTRUCTION_L_TRAP                         : return "l.trap";
     1235      case morpheo::behavioural::INSTRUCTION_L_XOR                          : return "l.xor";
     1236      case morpheo::behavioural::INSTRUCTION_L_XORI                         : return "l.xori";
     1237      // ORFPX
     1238      case morpheo::behavioural::INSTRUCTION_LF_ADD_D                       : return "lf.add_d";
     1239      case morpheo::behavioural::INSTRUCTION_LF_ADD_S                       : return "lf.add_s";
     1240      case morpheo::behavioural::INSTRUCTION_LF_CUST1_D                     : return "lf.cust1_d";
     1241      case morpheo::behavioural::INSTRUCTION_LF_CUST1_S                     : return "lf.cust1_s";
     1242      case morpheo::behavioural::INSTRUCTION_LF_DIV_D                       : return "lf.div_d";
     1243      case morpheo::behavioural::INSTRUCTION_LF_DIV_S                       : return "lf.div_s";
     1244      case morpheo::behavioural::INSTRUCTION_LF_FTOI_D                      : return "lf.ftoi_d";
     1245      case morpheo::behavioural::INSTRUCTION_LF_FTOI_S                      : return "lf.ftoi_s";
     1246      case morpheo::behavioural::INSTRUCTION_LF_ITOF_D                      : return "lf.itof_d";
     1247      case morpheo::behavioural::INSTRUCTION_LF_ITOF_S                      : return "lf.itof_s";
     1248      case morpheo::behavioural::INSTRUCTION_LF_MADD_D                      : return "lf.madd_d";
     1249      case morpheo::behavioural::INSTRUCTION_LF_MADD_S                      : return "lf.madd_s";
     1250      case morpheo::behavioural::INSTRUCTION_LF_MUL_D                       : return "lf.mul_d";
     1251      case morpheo::behavioural::INSTRUCTION_LF_MUL_S                       : return "lf.mul_s";
     1252      case morpheo::behavioural::INSTRUCTION_LF_REM_D                       : return "lf.rem_d";
     1253      case morpheo::behavioural::INSTRUCTION_LF_REM_S                       : return "lf.rem_s";
     1254      case morpheo::behavioural::INSTRUCTION_LF_SFEQ_D                      : return "lf.sfeq_d";
     1255      case morpheo::behavioural::INSTRUCTION_LF_SFEQ_S                      : return "lf.sfeq_s";
     1256      case morpheo::behavioural::INSTRUCTION_LF_SFGE_D                      : return "lf.sfge_d";
     1257      case morpheo::behavioural::INSTRUCTION_LF_SFGE_S                      : return "lf.sfge_s";
     1258      case morpheo::behavioural::INSTRUCTION_LF_SFGT_D                      : return "lf.sfgt_d";
     1259      case morpheo::behavioural::INSTRUCTION_LF_SFGT_S                      : return "lf.sfgt_s";
     1260      case morpheo::behavioural::INSTRUCTION_LF_SFLE_D                      : return "lf.sfle_d";
     1261      case morpheo::behavioural::INSTRUCTION_LF_SFLE_S                      : return "lf.sfle_s";
     1262      case morpheo::behavioural::INSTRUCTION_LF_SFLT_D                      : return "lf.sflt_d";
     1263      case morpheo::behavioural::INSTRUCTION_LF_SFLT_S                      : return "lf.sflt_s";
     1264      case morpheo::behavioural::INSTRUCTION_LF_SFNE_D                      : return "lf.sfne_d";
     1265      case morpheo::behavioural::INSTRUCTION_LF_SFNE_S                      : return "lf.sfne_s";
     1266      case morpheo::behavioural::INSTRUCTION_LF_SUB_D                       : return "lf.sub_d";
     1267      case morpheo::behavioural::INSTRUCTION_LF_SUB_S                       : return "lf.sub_s";
     1268      // ORVDX
     1269      case morpheo::behavioural::INSTRUCTION_LV_ADD_B                       : return "lv.add_b";
     1270      case morpheo::behavioural::INSTRUCTION_LV_ADD_H                       : return "lv.add_h";
     1271      case morpheo::behavioural::INSTRUCTION_LV_ADDS_B                      : return "lv.adds_b";
     1272      case morpheo::behavioural::INSTRUCTION_LV_ADDS_H                      : return "lv.adds_h";
     1273      case morpheo::behavioural::INSTRUCTION_LV_ADDU_B                      : return "lv.addu_b";
     1274      case morpheo::behavioural::INSTRUCTION_LV_ADDU_H                      : return "lv.addu_h";
     1275      case morpheo::behavioural::INSTRUCTION_LV_ADDUS_B                     : return "lv.addus_b";
     1276      case morpheo::behavioural::INSTRUCTION_LV_ADDUS_H                     : return "lv.addus_h";
     1277      case morpheo::behavioural::INSTRUCTION_LV_ALL_EQ_B                    : return "lv.all_eq_b";
     1278      case morpheo::behavioural::INSTRUCTION_LV_ALL_EQ_H                    : return "lv.all_eq_h";
     1279      case morpheo::behavioural::INSTRUCTION_LV_ALL_GE_B                    : return "lv.all_ge_b";
     1280      case morpheo::behavioural::INSTRUCTION_LV_ALL_GE_H                    : return "lv.all_ge_h";
     1281      case morpheo::behavioural::INSTRUCTION_LV_ALL_GT_B                    : return "lv.all_gt_b";
     1282      case morpheo::behavioural::INSTRUCTION_LV_ALL_GT_H                    : return "lv.all_gt_h";
     1283      case morpheo::behavioural::INSTRUCTION_LV_ALL_LE_B                    : return "lv.all_le_b";
     1284      case morpheo::behavioural::INSTRUCTION_LV_ALL_LE_H                    : return "lv.all_le_h";
     1285      case morpheo::behavioural::INSTRUCTION_LV_ALL_LT_B                    : return "lv.all_lt_b";
     1286      case morpheo::behavioural::INSTRUCTION_LV_ALL_LT_H                    : return "lv.all_lt_h";
     1287      case morpheo::behavioural::INSTRUCTION_LV_ALL_NE_B                    : return "lv.all_ne_b";
     1288      case morpheo::behavioural::INSTRUCTION_LV_ALL_NE_H                    : return "lv.all_ne_h";
     1289      case morpheo::behavioural::INSTRUCTION_LV_AND                         : return "lv.and";
     1290      case morpheo::behavioural::INSTRUCTION_LV_ANY_EQ_B                    : return "lv.any_eq_b";
     1291      case morpheo::behavioural::INSTRUCTION_LV_ANY_EQ_H                    : return "lv.any_eq_h";
     1292      case morpheo::behavioural::INSTRUCTION_LV_ANY_GE_B                    : return "lv.any_ge_b";
     1293      case morpheo::behavioural::INSTRUCTION_LV_ANY_GE_H                    : return "lv.any_ge_h";
     1294      case morpheo::behavioural::INSTRUCTION_LV_ANY_GT_B                    : return "lv.any_gt_b";
     1295      case morpheo::behavioural::INSTRUCTION_LV_ANY_GT_H                    : return "lv.any_gt_h";
     1296      case morpheo::behavioural::INSTRUCTION_LV_ANY_LE_B                    : return "lv.any_le_b";
     1297      case morpheo::behavioural::INSTRUCTION_LV_ANY_LE_H                    : return "lv.any_le_h";
     1298      case morpheo::behavioural::INSTRUCTION_LV_ANY_LT_B                    : return "lv.any_lt_b";
     1299      case morpheo::behavioural::INSTRUCTION_LV_ANY_LT_H                    : return "lv.any_lt_h";
     1300      case morpheo::behavioural::INSTRUCTION_LV_ANY_NE_B                    : return "lv.any_ne_b";
     1301      case morpheo::behavioural::INSTRUCTION_LV_ANY_NE_H                    : return "lv.any_ne_h";
     1302      case morpheo::behavioural::INSTRUCTION_LV_AVG_B                       : return "lv.avg_b";
     1303      case morpheo::behavioural::INSTRUCTION_LV_AVG_H                       : return "lv.avg_h";
     1304      case morpheo::behavioural::INSTRUCTION_LV_CMP_EQ_B                    : return "lv.cmp_eq_b";
     1305      case morpheo::behavioural::INSTRUCTION_LV_CMP_EQ_H                    : return "lv.cmp_eq_h";
     1306      case morpheo::behavioural::INSTRUCTION_LV_CMP_GE_B                    : return "lv.cmp_ge_b";
     1307      case morpheo::behavioural::INSTRUCTION_LV_CMP_GE_H                    : return "lv.cmp_ge_h";
     1308      case morpheo::behavioural::INSTRUCTION_LV_CMP_GT_B                    : return "lv.cmp_gt_b";
     1309      case morpheo::behavioural::INSTRUCTION_LV_CMP_GT_H                    : return "lv.cmp_gt_h";
     1310      case morpheo::behavioural::INSTRUCTION_LV_CMP_LE_B                    : return "lv.cmp_le_b";
     1311      case morpheo::behavioural::INSTRUCTION_LV_CMP_LE_H                    : return "lv.cmp_le_h";
     1312      case morpheo::behavioural::INSTRUCTION_LV_CMP_LT_B                    : return "lv.cmp_lt_b";
     1313      case morpheo::behavioural::INSTRUCTION_LV_CMP_LT_H                    : return "lv.cmp_lt_h";
     1314      case morpheo::behavioural::INSTRUCTION_LV_CMP_NE_B                    : return "lv.cmp_ne_b";
     1315      case morpheo::behavioural::INSTRUCTION_LV_CMP_NE_H                    : return "lv.cmp_ne_h";
     1316      case morpheo::behavioural::INSTRUCTION_LV_CUST1                       : return "lv.cust1";
     1317      case morpheo::behavioural::INSTRUCTION_LV_CUST2                       : return "lv.cust2";
     1318      case morpheo::behavioural::INSTRUCTION_LV_CUST3                       : return "lv.cust3";
     1319      case morpheo::behavioural::INSTRUCTION_LV_CUST4                       : return "lv.cust4";
     1320      case morpheo::behavioural::INSTRUCTION_LV_MADDS_H                     : return "lv.madds_h";
     1321      case morpheo::behavioural::INSTRUCTION_LV_MAX_B                       : return "lv.max_b";
     1322      case morpheo::behavioural::INSTRUCTION_LV_MAX_H                       : return "lv.max_h";
     1323      case morpheo::behavioural::INSTRUCTION_LV_MERGE_B                     : return "lv.merge_b";
     1324      case morpheo::behavioural::INSTRUCTION_LV_MERGE_H                     : return "lv.merge_h";
     1325      case morpheo::behavioural::INSTRUCTION_LV_MIN_B                       : return "lv.min_b";
     1326      case morpheo::behavioural::INSTRUCTION_LV_MIN_H                       : return "lv.min_h";
     1327      case morpheo::behavioural::INSTRUCTION_LV_MSUBS_H                     : return "lv.msubs_h";
     1328      case morpheo::behavioural::INSTRUCTION_LV_MULS_H                      : return "lv.muls_h";
     1329      case morpheo::behavioural::INSTRUCTION_LV_NAND                        : return "lv.nand";
     1330      case morpheo::behavioural::INSTRUCTION_LV_NOR                         : return "lv.nor";
     1331      case morpheo::behavioural::INSTRUCTION_LV_OR                          : return "lv.or";
     1332      case morpheo::behavioural::INSTRUCTION_LV_PACK_B                      : return "lv.pack_b";
     1333      case morpheo::behavioural::INSTRUCTION_LV_PACK_H                      : return "lv.pack_h";
     1334      case morpheo::behavioural::INSTRUCTION_LV_PACKS_B                     : return "lv.packs_b";
     1335      case morpheo::behavioural::INSTRUCTION_LV_PACKS_H                     : return "lv.packs_h";
     1336      case morpheo::behavioural::INSTRUCTION_LV_PACKUS_B                    : return "lv.packus_b";
     1337      case morpheo::behavioural::INSTRUCTION_LV_PACKUS_H                    : return "lv.packus_h";
     1338      case morpheo::behavioural::INSTRUCTION_LV_PERM_N                      : return "lv.perm_n";
     1339      case morpheo::behavioural::INSTRUCTION_LV_RL_B                        : return "lv.rl_b";
     1340      case morpheo::behavioural::INSTRUCTION_LV_RL_H                        : return "lv.rl_h";
     1341      case morpheo::behavioural::INSTRUCTION_LV_SLL                         : return "lv.sll";
     1342      case morpheo::behavioural::INSTRUCTION_LV_SLL_B                       : return "lv.sll_b";
     1343      case morpheo::behavioural::INSTRUCTION_LV_SLL_H                       : return "lv.sll_h";
     1344      case morpheo::behavioural::INSTRUCTION_LV_SRA_B                       : return "lv.sra_b";
     1345      case morpheo::behavioural::INSTRUCTION_LV_SRA_H                       : return "lv.sra_h";
     1346      case morpheo::behavioural::INSTRUCTION_LV_SRL                         : return "lv.srl";
     1347      case morpheo::behavioural::INSTRUCTION_LV_SRL_B                       : return "lv.srl_b";
     1348      case morpheo::behavioural::INSTRUCTION_LV_SRL_H                       : return "lv.srl_h";
     1349      case morpheo::behavioural::INSTRUCTION_LV_SUB_B                       : return "lv.sub_b";
     1350      case morpheo::behavioural::INSTRUCTION_LV_SUB_H                       : return "lv.sub_h";
     1351      case morpheo::behavioural::INSTRUCTION_LV_SUBS_B                      : return "lv.subs_b";
     1352      case morpheo::behavioural::INSTRUCTION_LV_SUBS_H                      : return "lv.subs_h";
     1353      case morpheo::behavioural::INSTRUCTION_LV_SUBU_B                      : return "lv.subu_b";
     1354      case morpheo::behavioural::INSTRUCTION_LV_SUBU_H                      : return "lv.subu_h";
     1355      case morpheo::behavioural::INSTRUCTION_LV_SUBUS_B                     : return "lv.subus_b";
     1356      case morpheo::behavioural::INSTRUCTION_LV_SUBUS_H                     : return "lv.subus_h";
     1357      case morpheo::behavioural::INSTRUCTION_LV_UNPACK_B                    : return "lv.unpack_b";
     1358      case morpheo::behavioural::INSTRUCTION_LV_UNPACK_H                    : return "lv.unpack_h";
     1359      case morpheo::behavioural::INSTRUCTION_LV_XOR                         : return "lv.xor";
     1360
     1361      default : return "";
     1362      }
     1363  };
     1364
    11401365}; // end namespace morpheo             
    11411366
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_signal.h

    r129 r137  
    1111# ifdef DEBUG_SIGNAL
    1212
    13 #include <set>
    14 #include "Common/include/Message.h"
     13#include <map>
     14#include <list>
     15#include <string>
    1516
    1617namespace morpheo {
    1718namespace behavioural {
    1819
    19   extern std::set<void *> _debug_signal;
     20  class debug_signal
     21  {
     22  private : std::map <void *,std::string> _signal;
     23  private : std::list<std::string>        _signal_access;
     24
     25  public  : void add       (void *      signal,
     26                            std::string name);
     27  public  : void write     (void *      signal);
     28  public  : void end_cycle (void);
     29  public  : void print     (void);
     30  };
    2031 
    21 #  define DEBUG_SIGNAL_ADD(signal)                                      \
     32  extern debug_signal _debug_signal;
     33 
     34#  define DEBUG_SIGNAL_ADD(signal,name)                                 \
    2235  do                                                                    \
    2336    {                                                                   \
    24       morpheo::behavioural::_debug_signal.insert(static_cast<void *>( signal)); \
     37      morpheo::behavioural::_debug_signal.add(signal,name);            \
    2538    } while(0)
     39
     40  // Test if signal is previously define 
    2641 
    27 #  define DEBUG_SIGNAL_ACCESS(signal)                                   \
     42#  define DEBUG_SIGNAL_WRITE(signal)                                    \
    2843  do                                                                    \
    2944    {                                                                   \
    30       if (morpheo::behavioural::_debug_signal.find(static_cast<void *>(signal)) == morpheo::behavioural::_debug_signal.end()) \
    31         msgError("At file %s, in line %d, invalid signal.\n",__FILE__,__LINE__); \
     45      morpheo::behavioural::_debug_signal.write(signal);                \
    3246    } while(0)
     47
     48#  define DEBUG_SIGNAL_END_CYCLE()                      \
     49  do                                                    \
     50    {                                                   \
     51      morpheo::behavioural::_debug_signal.end_cycle();  \
     52    } while (0)
     53
     54#  define DEBUG_SIGNAL_PRINT()                          \
     55  do                                                    \
     56    {                                                   \
     57      morpheo::behavioural::_debug_signal.print();      \
     58    } while (0)
    3359 
    3460}; // end namespace behavioural         
    3561}; // end namespace morpheo             
    3662# else
    37 #  define DEBUG_SIGNAL_ADD(signal)    do {} while (0)
    38 #  define DEBUG_SIGNAL_ACCESS(signal) do {} while (0)
     63#  define DEBUG_SIGNAL_ADD(signal,name) do {} while (0)
     64#  define DEBUG_SIGNAL_WRITE(signal)    do {} while (0)
     65#  define DEBUG_SIGNAL_END_CYCLE()      do {} while (0)
     66#  define DEBUG_SIGNAL_PRINT()          do {} while (0)
    3967# endif
    4068
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Signal.h

    r129 r137  
    161161      _sc_signal_map  = sc_signal;
    162162
    163       DEBUG_SIGNAL_ADD(sc_signal);
     163      DEBUG_SIGNAL_ADD(sc_signal,_name);
    164164
    165165      if (typeid(T) == typeid(bool    ))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info

    r135 r137  
    1616# build src directory content
    1717 target_dep             all             Generic/Queue/SelfTest
    18 #target_dep             all             Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
    19 #target_dep             all             Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
     18 target_dep             all             Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
     19 target_dep             all             Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
    2020#target_dep             all             Generic/Select/Select_Priority_Fixed/SelfTest
    21  target_dep             all             Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/SelfTest
    22  target_dep             all             Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest
    23  target_dep             all             Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest
    24  target_dep             all             Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest
    25  target_dep             all             Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest
     21#target_dep             all             Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/SelfTest
     22#target_dep             all             Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest
     23#target_dep             all             Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest
     24#target_dep             all             Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest
     25#target_dep             all             Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest
    2626#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest
    2727#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest
    2828#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest
    2929#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
    30  target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest
    31  target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest
    32  target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest
     30#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest
     31#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest
     32#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest
    3333#target_dep             all             Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest
    3434
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_toXML.cpp

    r81 r137  
    33 * $Id$
    44 *
    5  * [ Description ]
     5 * [ Description ]
    66 *
    77 */
    88
    99#include "Behavioural/include/Component.h"
    10 #include "Behavioural/include/Version.h"
     10#include "Common/include/Environment.h"
    1111
    1212namespace morpheo              {
     
    1919  {
    2020    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     21
     22    environment ();
    2123
    2224    XML xml (_entity->get_name());
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Debug_signal.cpp

    r129 r137  
    88
    99#include "Behavioural/include/Debug_signal.h"
     10#include "Common/include/Message.h"
    1011
    1112namespace morpheo {
    1213namespace behavioural {
    1314
    14   std::set<void *> _debug_signal;
     15  debug_signal _debug_signal;
     16
     17  void debug_signal::add (void *      signal,
     18                          std::string name)
     19  {
     20    _signal[signal] = name;
     21  }
     22
     23  void debug_signal::write (void * signal)
     24  {
     25    std::map <void *,std::string>::iterator it=_signal.find(signal);
     26    if (it != _signal.end())
     27      _signal_access.push_back(it->second);
     28
     29// else
     30//   msgError("At file %s, in line %d, invalid signal.\n",__FILE__,__LINE__);
     31  }
     32
     33  void debug_signal::end_cycle (void)
     34  {
     35    _signal_access.clear();
     36  }
     37
     38  void debug_signal::print (void)
     39  {
     40    msg("List of access signal\n");
     41    for (std::list<std::string>::iterator it = _signal_access.begin();
     42         it != _signal_access.end();
     43         ++ it)
     44      {
     45        msg(" * %s\n",(*it).c_str());
     46      }
     47  }
    1548
    1649}; // end namespace behavioural         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Stat_generate_file.cpp

    r124 r137  
    11#ifdef STATISTICS
    22#include "Behavioural/include/Stat.h"
    3 #include "Behavioural/include/Version.h"
    43#include "Common/include/Environment.h"
    54#include "Common/include/Systemc.h"
     
    1110  {
    1211    directory();
     12    environment();
    1313
    1414    std::string body = print(1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_get_header.cpp

    r113 r137  
    99
    1010#include "Behavioural/include/Vhdl.h"
    11 #include "Behavioural/include/Version.h"
     11#include "Common/include/Environment.h"
    1212#include <time.h>
    1313#include <sstream>
     
    2525
    2626    std::string text;
     27
     28    environment();
    2729
    2830    time_t current_time;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/XML_header.cpp

    r98 r137  
    77
    88#include "Behavioural/include/XML.h"
    9 #include "Behavioural/include/Version.h"
     9#include "Common/include/Environment.h"
    1010
    1111namespace morpheo              {
     
    1717  {
    1818    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     19
     20    environment ();
    1921
    2022    time_t current_time;
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Environment.h

    r113 r137  
    4848  extern std::string MORPHEO_HOME;
    4949  extern std::string MORPHEO_TOPLEVEL;
     50  extern std::string MORPHEO_VERSION;
     51  extern std::string MORPHEO_HEADER;
     52  extern std::string MORPHEO_DATE;
    5053 
    5154  void environment (void);
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Types.h

    r129 r137  
    4242#  define SC_OUT(type)             sc_out   <type >
    4343                                 
    44 #  define PORT_READ(sig)                                      sig->read()
    45 #  define PORT_WRITE(sig,val)      do {DEBUG_SIGNAL_ACCESS(sig); sig->write(val);} while(0)
     44#  define PORT_READ(sig)           sig->read()
     45#  define PORT_WRITE(sig,val)      do {DEBUG_SIGNAL_WRITE(sig); sig->write(val);} while(0)
    4646//#define INTERNAL_READ(sig)       (*sig)
    4747//#define INTERNAL_WRITE(sig,val)  (*sig) = val
  • trunk/IPs/systemC/processor/Morpheo/Common/src/Environment.cpp

    r97 r137  
    1717std::string MORPHEO_HOME;
    1818std::string MORPHEO_TOPLEVEL;
     19std::string MORPHEO_VERSION;
     20std::string MORPHEO_HEADER;
     21std::string MORPHEO_DATE;
    1922
    2023#undef  FUNCTION
     
    2528    {
    2629      {
    27         char * toplevel = getenv("MORPHEO_TOPLEVEL");
     30        char * TOPLEVEL = getenv("MORPHEO_TOPLEVEL");
    2831       
    29         if (toplevel == NULL)
     32        if (TOPLEVEL == NULL)
    3033          throw ERRORMORPHEO(FUNCTION,_("Error morpheo environment is not positioned.\n"));
    3134
    32         MORPHEO_TOPLEVEL = toplevel;
     35        MORPHEO_TOPLEVEL = TOPLEVEL;
    3336      }
    3437
    3538      {
    36         char * home = getenv("MORPHEO_HOME");
     39        char * HOME = getenv("MORPHEO_HOME");
    3740       
    38         if (home == NULL)
     41        if (HOME == NULL)
    3942          throw ERRORMORPHEO(FUNCTION,_("Error morpheo environment is not positioned.\n"));
    4043
    41         MORPHEO_HOME = home;
     44        MORPHEO_HOME = HOME;
     45      }
     46
     47      {
     48        char * MAJOR_VERSION = getenv("MORPHEO_MAJOR_VERSION");
     49        char * MINOR_VERSION = getenv("MORPHEO_MINOR_VERSION");
     50        char * REVISION      = getenv("MORPHEO_REVISION");
     51        char * CODENAME      = getenv("MORPHEO_CODENAME");
     52        char * DATE_DAY      = getenv("MORPHEO_DATE_DAY");
     53        char * DATE_MONTH    = getenv("MORPHEO_DATE_MONTH");
     54        char * DATE_YEAR     = getenv("MORPHEO_DATE_YEAR");
     55
     56        if ((MAJOR_VERSION == NULL) or
     57            (MINOR_VERSION == NULL) or
     58            (REVISION      == NULL) or
     59            (CODENAME      == NULL) or
     60            (DATE_DAY      == NULL) or
     61            (DATE_MONTH    == NULL) or
     62            (DATE_YEAR     == NULL))
     63          throw ERRORMORPHEO(FUNCTION,_("Error morpheo environment is not positioned.\n"));
     64
     65        MORPHEO_VERSION = toString(MAJOR_VERSION)+"."+toString(MINOR_VERSION)+"."+toString(REVISION);
     66        MORPHEO_HEADER  = MORPHEO_VERSION+" - "+toString(CODENAME);
     67        MORPHEO_DATE    = toString(DATE_YEAR)+"/"+toString(DATE_MONTH)+"/"+toString(DATE_DAY);
    4268      }
    4369
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x04_w04_01.cfg

    r136 r137  
    33<core name="Instance_x04_w04_01">
    44
    5   <thread id="0,1,2,3">            
     5  <thread id="0,1,2,3" >         
    66    <parameter name="size_ifetch_queue"                     value="32" />
    77    <parameter name="ifetch_queue_scheme"                   value="0" />
     
    7575    <timing type="2"  latence="1" delay="1" />
    7676    <timing type="3"  latence="1" delay="1" />
    77     <timing type="4"  latence="1" delay="1" />
     77    <timing type="4"  latence="3" delay="1" />
    7878    <timing type="6"  latence="1" delay="1" />
    7979    <timing type="7"  latence="1" delay="1" />
     
    174174
    175175  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
     176
    176177  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
    177178
  • trunk/IPs/systemC/processor/Morpheo/Files/Instance_x04_w08_01.cfg

    r136 r137  
    33<core name="Instance_x04_w08_01">
    44
    5   <thread id="0,1,2,3">             
     5  <thread id="0,1,2,3">
    66    <parameter name="size_ifetch_queue"                     value="16" />
    77    <parameter name="ifetch_queue_scheme"                   value="0" />
     
    1515    </group>
    1616  </thread>                                                 
    17                                                            
     17
    1818  <decod_bloc id="0">                                       
    1919    <parameter name="size_decod_queue"                      value="32"/>
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo-Dhrystone.sim

    r136 r137  
    2020  <parameter  name="statistics_period"                      value="0"       />
    2121                                                           
    22   <parameter  name="simulation_nb_cycle"                    value="1500000" />
     22  <parameter  name="simulation_nb_cycle"                    value="1000000" />
    2323  <parameter  name="simulation_nb_instruction"              value="0"       />
    2424  <parameter  name="simulation_file_with_pid"               value="0"       />
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen

    r136 r137  
    5454                                                                               
    5555  <parameter name="nb_load_store_unit"                    min="1"   max="16"   step="* 2" default="1"   level="..." description="..." />
    56   <parameter name="size_store_queue"                      min="2"   max="32"   step="* 2" default="2"   level="..." description="..." />
    57   <parameter name="size_load_queue"                       min="1"   max="32"   step="* 2" default="2"   level="..." description="..." />
     56  <parameter name="size_store_queue"                      min="2"   max="128"   step="* 2" default="2"   level="..." description="..." />
     57  <parameter name="size_load_queue"                       min="1"   max="128"   step="* 2" default="2"   level="..." description="..." />
    5858  <parameter name="size_speculative_access_queue"         min="1"   max="16"   step="* 2" default="2"   level="..." description="..." />
    59   <parameter name="nb_port_check"                         min="1"   max="16"   step="* 2" default="1"   level="..." description="..." />
     59  <parameter name="nb_port_check"                         min="1"   max="128"   step="* 2" default="1"   level="..." description="..." />
    6060  <parameter name="speculative_load"                      min="0"   max="3"    step="+ 1" default="2"   level="..." description="..." />
    6161  <parameter name="nb_bypass_memory"                      min="0"   max="16"   step="+ 1" default="0"   level="..." description="..." />
     
    110110  <parameter name="nb_execute_unit"                       min="1"   max="16"   step="+ 1" default="1"   level="..." description="..." />
    111111  <parameter name="nb_write_unit"                         min="1"   max="32"   step="+ 1" default="1"   level="..." description="..." />
    112   <parameter name="nb_gpr_bank"                           min="1"   max="16"   step="* 2" default="1"   level="..." description="..." />
     112  <parameter name="nb_gpr_bank"                           min="1"   max="64"   step="+ 1" default="1"   level="..." description="..." />
    113113  <parameter name="nb_gpr_port_read_by_bank"              min="1"   max="32"   step="+ 1" default="1"   level="..." description="..." />
    114114  <parameter name="nb_gpr_port_write_by_bank"             min="1"   max="16"   step="+ 1" default="1"   level="..." description="..." />
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim

    r136 r137  
    44
    55  <parameter  name="use_systemc"                            value="1"       />
    6   <parameter  name="use_vhdl"                               value="0"       />
     6  <parameter  name="use_vhdl"                               value="1"       />
    77  <parameter  name="use_vhdl_testbench"                     value="0"       />
    88  <parameter  name="use_vhdl_testbench_assert"              value="0"       />
     
    111111  <component  name="Interface"                              model="systemc" debug="0" />
    112112  <component  name="Allocation"                             model="systemc" debug="0" />
     113  <component  name="Configuration"                          model="systemc" debug="0" />
     114
    113115</parameters>
  • trunk/IPs/systemC/processor/Morpheo/Files/debug.sim

    r136 r137  
    111111  <component  name="Interface"                              model="systemc" debug="1" />
    112112  <component  name="Allocation"                             model="systemc" debug="1" />
     113  <component  name="Configuration"                          model="systemc" debug="1" />
    113114
    114115</parameters>
  • trunk/IPs/systemC/processor/Morpheo/Script/version.sh

    r90 r137  
    44# $Id$
    55#-----------------------------------------------------------
    6 
    7 file_sed_src="${MORPHEO_TOPLEVEL}/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h.sed";
    8 file_sed_dest="${MORPHEO_TOPLEVEL}/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h";
    9 file_sed_script="/tmp/file_sed_script";
     6file_version="${MORPHEO_TOPLEVEL}/Version";
    107
    118#-----[ usage ]---------------------------------------------
     
    4744   
    4845            # +1 because is the next revision
     46            major_version=0;
     47            minor_version=2;
     48            codename="Castor";
     49
    4950            revision=$(($(export LC_ALL=C; svnversion  | tr -d [:alpha:] | cut -d : -f 2) + 1));
    5051            date_day=$(date +%d);
     
    5253            date_year=$(date +%Y);
    5354           
    54             echo "s/\"@REVISION\"/\"${revision}\"/"     >  ${file_sed_script};
    55             echo "s/\"@DATE_DAY\"/\"${date_day}\"/"     >> ${file_sed_script};
    56             echo "s/\"@DATE_MONTH\"/\"${date_month}\"/" >> ${file_sed_script};
    57             echo "s/\"@DATE_YEAR\"/\"${date_year}\"/"   >> ${file_sed_script};
    58 
    59             sed -f ${file_sed_script} ${file_sed_src} &> ${file_sed_dest};
    60 
    61             rm ${file_sed_script};
    62            
     55            echo "${major_version} ${minor_version} ${revision} ${codename} ${date_day} ${date_month} ${date_year}" > ${file_version};
     56           
    6357            svn commit;
    6458
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_end_cycle.cpp

    r88 r137  
    1919    log_begin(Morpheo,FUNCTION);
    2020
     21    DEBUG_SIGNAL_END_CYCLE();
     22
    2123#ifdef STATISTICS
    2224    if (usage_is_set(_usage,USE_STATISTICS))
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_signal_handler.cpp

    r110 r137  
    2121      case SIGALRM :
    2222        {
     23          DEBUG_SIGNAL_PRINT();
     24
    2325          throw ERRORMORPHEO(FUNCTION,_("Signal Alarm : can have a combinatory loop.\n"));
    2426          break;
Note: See TracChangeset for help on using the changeset viewer.