Changeset 97


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

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

Location:
trunk
Files:
1 added
3 deleted
151 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/SelfTest/src/test.cpp

    r88 r97  
    1010#include "Behavioural/Custom/include/Custom_default.h"
    1111#include "Behavioural/Custom/include/Custom_example.h"
     12#include "Common/include/Time.h"
    1213
    1314void test (string name)
    1415{
     16  Time * timing = new Time (false);
     17
    1518  morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void) = &(morpheo::behavioural::custom::default_get_custom_information);
    1619
     
    8184  delete generator1;
    8285  delete simulator1;
    83 
    84 
     86  delete timing;
    8587}
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Configuration.h

    r88 r97  
    4646  public   :                     ~Configuration  ();
    4747
     48  public   : std::string                                   header             (void);
    4849  public   : std::string                                   getName            (void);
    4950  public   : Tusage_t                                      getUsage           (void);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameters.h

    r88 r97  
    3030  public : uint32_t              * _ras_size_queue                                ;//[nb_thread]
    3131  public : uint32_t              * _upt_size_queue                                ;//[nb_thread]
     32  public : uint32_t              * _ufpt_size_queue                               ;//[nb_thread]
    3233 
    3334    // Decod bloc
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp

    r88 r97  
    2323    log_begin(Configuration,FUNCTION);
    2424
     25    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     26    // Simulator configuration
     27    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     28
    2529    _simulator = new Simulator (filename_simulator);
    26     _generator = new Generator (filename_generator);
    27     _instance  = new Instance  (filename_instance ,
    28                                 _generator,
    29                                 get_custom_information);
    3030
    3131    //--------------------------------------------------
    32     // Name
     32    // Directory
    3333    //--------------------------------------------------
    34     _name      = _instance->getName();
     34    directory_init (_simulator->getParam("directory_statistics"),
     35                    _simulator->getParam("directory_vhdl"      ),
     36                    _simulator->getParam("directory_position"  ),
     37                    _simulator->getParam("directory_log"       ));
    3538
    3639    //--------------------------------------------------
    37     // Parameters
     40    // Debug & Log File
    3841    //--------------------------------------------------
    39     _param     = _instance->_param;
     42    debug_init (fromString<debug_verbosity_t>(_simulator->getParam("debug_level")));
     43
     44    log_init(fromString<bool>(_simulator->getParam("debug_have_log_file")),
     45             MORPHEO_LOG);
    4046
    4147    //--------------------------------------------------
     
    6470
    6571    //--------------------------------------------------
     72    // Header
     73    //--------------------------------------------------
     74
     75    if (usage_is_set(_usage,USE_HEADER))
     76      std::cout << header();
     77
     78    //--------------------------------------------------
    6679    // Parameters_Statistics
    6780    //--------------------------------------------------
     
    7588                     fromString<double>(_simulator->getParam("simulation_nb_instruction")));
    7689
     90
     91    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     92    // Generator configuration + Instance
     93    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     94
     95    _generator = new Generator (filename_generator);
     96    _instance  = new Instance  (filename_instance ,
     97                                _generator,
     98                                get_custom_information);
     99
    77100    //--------------------------------------------------
    78     // Directory
     101    // Name
    79102    //--------------------------------------------------
    80     directory_init (_simulator->getParam("directory_statistics"),
    81                     _simulator->getParam("directory_vhdl"      ),
    82                     _simulator->getParam("directory_position"  ),
    83                     _simulator->getParam("directory_log"       ));
     103    _name      = _instance->getName();
     104
     105    //--------------------------------------------------
     106    // Parameters
     107    //--------------------------------------------------
     108    _param     = _instance->_param;
     109
    84110
    85111    log_end(Configuration,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance.cpp

    r88 r97  
    164164        DELETE1(_param->_nb_inst_decod                          ,_param->_nb_decod_bloc);
    165165        DELETE1(_param->_size_decod_queue                       ,_param->_nb_decod_bloc);
     166        DELETE1(_param->_ufpt_size_queue                        ,_param->_nb_thread);
    166167        DELETE1(_param->_upt_size_queue                         ,_param->_nb_thread);
    167168        DELETE1(_param->_ras_size_queue                         ,_param->_nb_thread);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromInternalStructure.cpp

    r88 r97  
    2121    // Common
    2222    //-----------------------------------------------------
    23     log_printf(INFO,Configuration,FUNCTION,_("COMMON"));
     23  //log_printf(INFO,Configuration,FUNCTION,_("COMMON"));
    2424
    2525    _param->_size_general_data   = fromString<uint32_t>(getParam("size_data"          , ""));
     
    4646    ALLOC1(_param->_ras_size_queue   ,uint32_t,_param->_nb_thread);
    4747    ALLOC1(_param->_upt_size_queue   ,uint32_t,_param->_nb_thread);
     48    ALLOC1(_param->_ufpt_size_queue  ,uint32_t,_param->_nb_thread);
    4849   
    4950    for (uint32_t i=0; i<_param->_nb_thread; ++i)
    5051      {
    51         log_printf(INFO,Configuration,FUNCTION,_("THREAD [%d]"),i);
     52      //log_printf(INFO,Configuration,FUNCTION,_("THREAD [%d]"),i);
    5253
    5354        _param->_size_ifetch_queue [i] = fromString<uint32_t>(getParam("size_ifetch_queue", "thread",toString(i).c_str(),""));
     
    5556        _param->_ras_size_queue    [i] = fromString<uint32_t>(getParam("ras_size_queue"   , "thread",toString(i).c_str(),""));
    5657        _param->_upt_size_queue    [i] = fromString<uint32_t>(getParam("upt_size_queue"   , "thread",toString(i).c_str(),""));
     58        _param->_ufpt_size_queue   [i] = fromString<uint32_t>(getParam("ufpt_size_queue"  , "thread",toString(i).c_str(),""));
    5759
    5860        // just read !!!
     
    8587    for (uint32_t i=0; i<_param->_nb_decod_bloc; ++i)
    8688      {
    87         log_printf(INFO,Configuration,FUNCTION,_("DECOD_BLOC [%d]"),i);
     89      //log_printf(INFO,Configuration,FUNCTION,_("DECOD_BLOC [%d]"),i);
    8890
    8991        _param->_size_decod_queue              [i] = fromString<uint32_t         > (getParam("size_decod_queue"             , "decod_bloc",toString(i).c_str(),""));
     
    111113    for (uint32_t i=0; i<_param->_nb_rename_bloc; ++i)
    112114      {
    113         log_printf(INFO,Configuration,FUNCTION,_("RENAME_BLOC [%d]"),i);
     115      //log_printf(INFO,Configuration,FUNCTION,_("RENAME_BLOC [%d]"),i);
    114116
    115117        _param->_nb_inst_insert                    [i] = fromString<uint32_t         > (getParam("nb_inst_insert"                   , "rename_bloc",toString(i).c_str(),""));
     
    134136    for (uint32_t i=0; i<_param->_nb_read_bloc; ++i)
    135137      {
    136         log_printf(INFO,Configuration,FUNCTION,_("READ_BLOC [%d]"),i);
     138      //log_printf(INFO,Configuration,FUNCTION,_("READ_BLOC [%d]"),i);
    137139
    138140        _param->_size_read_queue                    [i] = fromString<uint32_t> (getParam("size_read_queue"                   ,"read_bloc",toString(i).c_str(),""));
     
    150152    for (uint32_t i=0; i<_param->_nb_write_bloc; ++i)
    151153      {
    152         log_printf(INFO,Configuration,FUNCTION,_("WRITE_BLOC [%d]"),i);
     154      //log_printf(INFO,Configuration,FUNCTION,_("WRITE_BLOC [%d]"),i);
    153155
    154156        _param->_size_write_queue   [i] = fromString<uint32_t> (getParam("size_write_queue"  ,"write_bloc",toString(i).c_str(),""));
     
    171173    for (uint32_t i=0; i<_param->_nb_load_store_unit; ++i)
    172174      {
    173         log_printf(INFO,Configuration,FUNCTION,_("LOAD_STORE_UNIT [%d]"),i);
     175      //log_printf(INFO,Configuration,FUNCTION,_("LOAD_STORE_UNIT [%d]"),i);
    174176
    175177        _param->_size_store_queue              [i] = fromString<uint32_t> (getParam("size_store_queue"             ,"load_store_unit",toString(i).c_str(),""));
     
    192194    for (uint32_t i=0; i<_param->_nb_functionnal_unit; ++i)
    193195      {
    194         log_printf(INFO,Configuration,FUNCTION,_("FUNCTIONNAL_UNIT [%d]"),i);
     196      //log_printf(INFO,Configuration,FUNCTION,_("FUNCTIONNAL_UNIT [%d]"),i);
    195197
    196198        _param->_nb_inst_functionnal_unit [i] = fromString<uint32_t> (getParam("nb_inst_functionnal_unit","functionnal_unit",toString(i).c_str(),""));
     
    243245    //-----------------------------------------------------
    244246
    245     log_printf(INFO,Configuration,FUNCTION,_("ICACHE_PORT"));
     247  //log_printf(INFO,Configuration,FUNCTION,_("ICACHE_PORT"));
    246248
    247249    _param->_nb_icache_port               = fromString<uint32_t         >(getParam("nb_icache_port"            , ""));
     
    252254    // dcache_port
    253255    //-----------------------------------------------------
    254     log_printf(INFO,Configuration,FUNCTION,_("DCACHE_PORT"));
     256  //log_printf(INFO,Configuration,FUNCTION,_("DCACHE_PORT"));
    255257
    256258    _param->_nb_dcache_port               = fromString<uint32_t         >(getParam("nb_dcache_port"            , ""));
     
    282284    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
    283285      {
    284         log_printf(INFO,Configuration,FUNCTION,_("FRONT_END [%d]"),i);
     286      //log_printf(INFO,Configuration,FUNCTION,_("FRONT_END [%d]"),i);
    285287
    286288        _param->_nb_context                    [i] = fromString<uint32_t    >(getParam("nb_context"                ,"front_end",toString(i).c_str(), ""));
     
    306308        for (uint32_t j=0; j<3; ++j)
    307309          {
    308             log_printf(INFO,Configuration,FUNCTION,_("PREDICTOR [%d][%d]"),i,j);
     310          //log_printf(INFO,Configuration,FUNCTION,_("PREDICTOR [%d][%d]"),i,j);
    309311
    310312        _param->_dir_have_bht               [i][j] = fromString<bool        >(getParam("dir_have_bht"              ,"front_end",toString(i).c_str(),"predictor",toString(j).c_str(), ""));
     
    343345    for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
    344346      {
    345         log_printf(INFO,Configuration,FUNCTION,_("OOO_ENGINE [%d]"),i);
     347      //log_printf(INFO,Configuration,FUNCTION,_("OOO_ENGINE [%d]"),i);
    346348
    347349        _param->_nb_rename_unit          [i] = fromString<uint32_t         >(getParam("nb_rename_unit"          ,"ooo_engine",toString(i).c_str(), ""));
     
    383385    for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
    384386      {
    385         log_printf(INFO,Configuration,FUNCTION,_("EXECUTE_LOOP [%d]"),i);
     387      //log_printf(INFO,Configuration,FUNCTION,_("EXECUTE_LOOP [%d]"),i);
    386388
    387389        _param->_nb_read_unit                         [i] = fromString<uint32_t   >(getParam("nb_read_unit"                         ,"execute_loop",toString(i).c_str(), ""));
     
    402404    //-----------------------------------------------------
    403405
    404     log_printf(INFO,Configuration,FUNCTION,_("LINK"));
     406  //log_printf(INFO,Configuration,FUNCTION,_("LINK"));
    405407
    406408    _param->_dispatch_priority       = fromString<Tpriority_t      >(getParam("dispatch_priority"      , ""));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_getLink.cpp

    r88 r97  
    7474      {
    7575        _return = link2array(dest);
    76         log_printf(INFO,Configuration,FUNCTION,_("Link       \"%s[%s]\"= %s."),name,src.c_str(),dest.c_str());
     76      //log_printf(INFO,Configuration,FUNCTION,_("Link       \"%s[%s]\"= %s."),name,src.c_str(),dest.c_str());
    7777      }
    7878    else
    7979      {
    8080        _return.clear();
    81         log_printf(INFO,Configuration,FUNCTION,_("Link       \"%s[%s]\" not find."),name,src.c_str());
     81      //log_printf(INFO,Configuration,FUNCTION,_("Link       \"%s[%s]\" not find."),name,src.c_str());
    8282      }
    8383
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_getParam.cpp

    r88 r97  
    4848          if (it == ((*list_components)[component]).end())
    4949            {
    50               log_printf(INFO,Configuration,FUNCTION,_("Component \"%s[%s]\" is not define, take default value for parameter \"%s\"."),component.c_str(),id.c_str(),name);
     50            //log_printf(INFO,Configuration,FUNCTION,_("Component \"%s[%s]\" is not define, take default value for parameter \"%s\"."),component.c_str(),id.c_str(),name);
    5151
    5252              value = _generator->getParam(name)->_default;
     
    6868          if (it == (*list_parameters).end())
    6969            {
    70               log_printf(INFO,Configuration,FUNCTION,_("Component \"%s[%s]\" is define, but parameter \"%s\" is not define. Take default value."),component.c_str(),id.c_str(),name);
     70            //log_printf(INFO,Configuration,FUNCTION,_("Component \"%s[%s]\" is define, but parameter \"%s\" is not define. Take default value."),component.c_str(),id.c_str(),name);
    7171
    7272              value = _generator->getParam(name)->_default;
     
    8585    }
    8686   
    87     log_printf(INFO,Configuration,FUNCTION,_("Parameters \"%s\" = %s."),name,value.c_str());
     87  //log_printf(INFO,Configuration,FUNCTION,_("Parameters \"%s\" = %s."),name,value.c_str());
    8888
    8989    log_end(Configuration,FUNCTION);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/test.cpp

    r88 r97  
    7474  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ",Taddress_t        ,_param->_nb_front_end);
    7575  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ",Tcontrol_t        ,_param->_nb_front_end);
    76   ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ",Taddress_t        ,_param->_nb_front_end);
     76  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ",Tgeneral_data_t   ,_param->_nb_front_end);
    7777  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_VAL               ," in_COMMIT_EVENT_OOO_ENGINE_VAL               ",Tcontrol_t        ,_param->_nb_ooo_engine);
    7878  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_OOO_ENGINE_ACK               ,"out_COMMIT_EVENT_OOO_ENGINE_ACK               ",Tcontrol_t        ,_param->_nb_ooo_engine);
     
    8585  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ",Taddress_t        ,_param->_nb_ooo_engine);
    8686  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ",Tcontrol_t        ,_param->_nb_ooo_engine);
    87   ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ",Taddress_t        ,_param->_nb_ooo_engine);
     87  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ",Tgeneral_data_t   ,_param->_nb_ooo_engine);
    8888  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ," in_ISSUE_OOO_ENGINE_VAL                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
    8989  ALLOC2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,"out_ISSUE_OOO_ENGINE_ACK                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
     
    139139  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_EXCEPTION              ,"out_EXECUTE_OOO_ENGINE_EXCEPTION              ",Texception_t      ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    140140  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ,"out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    141   ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_ADDRESS                ,"out_EXECUTE_OOO_ENGINE_ADDRESS                ",Tgeneral_data_t   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
     141  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_ADDRESS                ,"out_EXECUTE_OOO_ENGINE_ADDRESS                ",Taddress_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    142142  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_DATA                   ,"out_EXECUTE_OOO_ENGINE_DATA                   ",Tgeneral_data_t   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    143143  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_VAL                  ," in_EXECUTE_EXECUTE_LOOP_VAL                  ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
     
    152152  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ," in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ",Texception_t      ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    153153  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ," in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    154   ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ," in_EXECUTE_EXECUTE_LOOP_ADDRESS              ",Tgeneral_data_t   ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
     154  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ," in_EXECUTE_EXECUTE_LOOP_ADDRESS              ",Taddress_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    155155  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_DATA                 ," in_EXECUTE_EXECUTE_LOOP_DATA                 ",Tgeneral_data_t   ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    156156  ALLOC2_SC_SIGNAL( in_INSERT_OOO_ENGINE_VAL                     ," in_INSERT_OOO_ENGINE_VAL                     ",Tcontrol_t          ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h

    r88 r97  
    9595  public    : SC_OUT(Taddress_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ;//[nb_front_end]
    9696  public    : SC_OUT(Tcontrol_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ;//[nb_front_end]
    97   public    : SC_OUT(Taddress_t        )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ;//[nb_front_end]
     97  public    : SC_OUT(Tgeneral_data_t   )   ** out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ;//[nb_front_end]
    9898
    9999  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_VAL               ;//[nb_ooo_engine]
     
    107107  public    : SC_IN (Taddress_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ;//[nb_ooo_engine]
    108108  public    : SC_IN (Tcontrol_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ;//[nb_ooo_engine]
    109   public    : SC_IN (Taddress_t        )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ;//[nb_ooo_engine]
     109  public    : SC_IN (Tgeneral_data_t   )   **  in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ;//[nb_ooo_engine]
    110110
    111111   
     
    168168  public    : SC_OUT(Texception_t      ) **** out_EXECUTE_OOO_ENGINE_EXCEPTION              ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
    169169  public    : SC_OUT(Tcontrol_t        ) **** out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
    170   public    : SC_OUT(Tgeneral_data_t   ) **** out_EXECUTE_OOO_ENGINE_ADDRESS                ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
     170  public    : SC_OUT(Taddress_t        ) **** out_EXECUTE_OOO_ENGINE_ADDRESS                ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
    171171  public    : SC_OUT(Tgeneral_data_t   ) **** out_EXECUTE_OOO_ENGINE_DATA                   ;//[nb_ooo_engine][ooo_engine_nb_execute_loop][nb_inst_execute]
    172172
     
    182182  public    : SC_IN (Texception_t      )  ***  in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ;//[nb_execute_loop][nb_write_unit]
    183183  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ;//[nb_execute_loop][nb_write_unit]
    184   public    : SC_IN (Tgeneral_data_t   )  ***  in_EXECUTE_EXECUTE_LOOP_ADDRESS              ;//[nb_execute_loop][nb_write_unit]
     184  public    : SC_IN (Taddress_t        )  ***  in_EXECUTE_EXECUTE_LOOP_ADDRESS              ;//[nb_execute_loop][nb_write_unit]
    185185  public    : SC_IN (Tgeneral_data_t   )  ***  in_EXECUTE_EXECUTE_LOOP_DATA                 ;//[nb_execute_loop][nb_write_unit]
    186186
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp

    r88 r97  
    9797      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ,"IS_DELAY_SLOT"        ,Tcontrol_t        ,1);
    9898      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS            ,"ADDRESS"              ,Taddress_t        ,_param->_size_instruction_address);
    99       ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ,"ADDRESS_EPCR"         ,Taddress_t        ,_param->_size_spr);
     99      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ,"ADDRESS_EPCR"         ,Taddress_t        ,_param->_size_instruction_address);
    100100      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ,"ADDRESS_EEAR_VAL"     ,Tcontrol_t        ,1);
    101       ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,"ADDRESS_EEAR"         ,Taddress_t        ,_param->_size_spr);
     101      ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,"ADDRESS_EEAR"         ,Tgeneral_data_t   ,_param->_size_general_data);
    102102    }
    103103
     
    113113      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ,"IS_DELAY_SLOT"        ,Tcontrol_t        ,1);
    114114      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ,"ADDRESS"              ,Taddress_t        ,_param->_size_instruction_address);
    115       ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ,"ADDRESS_EPCR"         ,Taddress_t        ,_param->_size_spr);
     115      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ,"ADDRESS_EPCR"         ,Taddress_t        ,_param->_size_instruction_address);
    116116      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ,"ADDRESS_EEAR_VAL"     ,Tcontrol_t        ,1);
    117       ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,"ADDRESS_EEAR"         ,Taddress_t        ,_param->_size_spr);
     117      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,"ADDRESS_EEAR"         ,Tgeneral_data_t   ,_param->_size_general_data);
    118118    }
    119119
     
    186186      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_EXCEPTION              ,"EXCEPTION"            ,Texception_t      ,_param->_size_exception   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    187187      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ,"NO_SEQUENCE"          ,Tcontrol_t        ,1                         ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    188       _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_ADDRESS                ,"ADDRESS"              ,Tgeneral_data_t   ,_param->_size_general_data,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
     188      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_ADDRESS                ,"ADDRESS"              ,Taddress_t        ,_param->_size_instruction_address,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    189189      _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_DATA                   ,"DATA"                 ,Tgeneral_data_t   ,_param->_size_general_data,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
    190190    }
     
    204204      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ,"EXCEPTION"            ,Texception_t      ,_param->_size_exception    ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    205205      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ,"NO_SEQUENCE"          ,Tcontrol_t        ,1                          ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    206       _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ,"ADDRESS"              ,Tgeneral_data_t   ,_param->_size_general_data ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
     206      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ,"ADDRESS"              ,Taddress_t        ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    207207      _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_DATA                 ,"DATA"                 ,Tgeneral_data_t   ,_param->_size_general_data ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
    208208    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/Operation/include/Types.h

    r81 r97  
    6767    Texception_t       _exception   ;
    6868    Tcontrol_t         _no_sequence ;
    69     Tgeneral_data_t    _address     ;
     69    Taddress_t         _address     ;
    7070  } execute_operation_t;
    7171
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/test.cpp

    r88 r97  
    145145  sc_signal<Tpacket_t         > out_EXECUTE_OUT_PACKET_ID      (rename.c_str());
    146146//sc_signal<Toperation_t      > out_EXECUTE_OUT_OPERATION      (rename.c_str());
    147   sc_signal<Ttype_t           > out_EXECUTE_OUT_TYPE           (rename.c_str());
     147//sc_signal<Ttype_t           > out_EXECUTE_OUT_TYPE           (rename.c_str());
    148148  sc_signal<Tcontrol_t        > out_EXECUTE_OUT_WRITE_RD       (rename.c_str());
    149149  sc_signal<Tgeneral_address_t> out_EXECUTE_OUT_NUM_REG_RD     (rename.c_str());
     
    200200  (*(_Functionnal_unit->out_EXECUTE_OUT_PACKET_ID    )) (out_EXECUTE_OUT_PACKET_ID    );
    201201//(*(_Functionnal_unit->out_EXECUTE_OUT_OPERATION    )) (out_EXECUTE_OUT_OPERATION    );
    202   (*(_Functionnal_unit->out_EXECUTE_OUT_TYPE         )) (out_EXECUTE_OUT_TYPE         );
     202//(*(_Functionnal_unit->out_EXECUTE_OUT_TYPE         )) (out_EXECUTE_OUT_TYPE         );
    203203  (*(_Functionnal_unit->out_EXECUTE_OUT_WRITE_RD     )) (out_EXECUTE_OUT_WRITE_RD     );
    204204  (*(_Functionnal_unit->out_EXECUTE_OUT_NUM_REG_RD   )) (out_EXECUTE_OUT_NUM_REG_RD   );
     
    632632              TEST(Tcontext_t        , out_EXECUTE_OUT_OOO_ENGINE_ID.read(), transaction_out.front()._ooo_engine_id);
    633633            //TEST(Toperation_t      , out_EXECUTE_OUT_OPERATION    .read(), transaction_out.front()._operation    );
    634               TEST(Ttype_t           , out_EXECUTE_OUT_TYPE         .read(), transaction_out.front()._type         );
     634            //TEST(Ttype_t           , out_EXECUTE_OUT_TYPE         .read(), transaction_out.front()._type         );
    635635              TEST(Tcontrol_t        , out_EXECUTE_OUT_WRITE_RE     .read(), transaction_out.front()._write_re     );
    636636              TEST(Tgeneral_address_t, out_EXECUTE_OUT_NUM_REG_RD   .read(), transaction_out.front()._num_reg_rd   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h

    r88 r97  
    106106  public    : SC_OUT(Tpacket_t         )    * out_EXECUTE_OUT_PACKET_ID      ;
    107107//public    : SC_OUT(Toperation_t      )    * out_EXECUTE_OUT_OPERATION      ;
    108   public    : SC_OUT(Ttype_t           )    * out_EXECUTE_OUT_TYPE           ;
     108//public    : SC_OUT(Ttype_t           )    * out_EXECUTE_OUT_TYPE           ;
    109109  public    : SC_OUT(Tcontrol_t        )    * out_EXECUTE_OUT_WRITE_RD       ;
    110110  public    : SC_OUT(Tgeneral_address_t)    * out_EXECUTE_OUT_NUM_REG_RD     ;
     
    115115  public    : SC_OUT(Texception_t      )    * out_EXECUTE_OUT_EXCEPTION      ;
    116116  public    : SC_OUT(Tcontrol_t        )    * out_EXECUTE_OUT_NO_SEQUENCE    ;
    117   public    : SC_OUT(Tgeneral_data_t   )    * out_EXECUTE_OUT_ADDRESS        ;
     117  public    : SC_OUT(Taddress_t        )    * out_EXECUTE_OUT_ADDRESS        ;
    118118
    119119    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp

    r88 r97  
    105105       out_EXECUTE_OUT_PACKET_ID      = interface->set_signal_out<Tpacket_t         > ("packet_id"    ,_param->_size_rob_ptr    );
    106106     //out_EXECUTE_OUT_OPERATION      = interface->set_signal_out<Toperation_t      > ("operation"    ,_param->_size_operation    );
    107        out_EXECUTE_OUT_TYPE           = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type         );
     107     //out_EXECUTE_OUT_TYPE           = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type         );
    108108       out_EXECUTE_OUT_WRITE_RD       = interface->set_signal_out<Tcontrol_t        > ("write_rd"     ,1);
    109109       out_EXECUTE_OUT_NUM_REG_RD     = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd"   ,_param->_size_general_register);
     
    114114       out_EXECUTE_OUT_EXCEPTION      = interface->set_signal_out<Texception_t      > ("exception"    ,_param->_size_exception);
    115115       out_EXECUTE_OUT_NO_SEQUENCE    = interface->set_signal_out<Tcontrol_t        > ("no_sequence"  ,1);
    116        out_EXECUTE_OUT_ADDRESS        = interface->set_signal_out<Tgeneral_data_t   > ("address"      ,_param->_size_general_data);
     116       out_EXECUTE_OUT_ADDRESS        = interface->set_signal_out<Taddress_t        > ("address"      ,_param->_size_instruction_address);
    117117     }
    118118
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp

    r88 r97  
    6464        if (_param->_have_port_rob_ptr)
    6565        delete out_EXECUTE_OUT_PACKET_ID      ;
    66       //delete out_EXECUTE_OUT_OPERATION      ;
    67         delete out_EXECUTE_OUT_TYPE           ;
     66//      delete out_EXECUTE_OUT_OPERATION      ;
     67//      delete out_EXECUTE_OUT_TYPE           ;
    6868        delete out_EXECUTE_OUT_WRITE_RD       ;
    6969        delete out_EXECUTE_OUT_NUM_REG_RD     ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_genMoore.cpp

    r88 r97  
    4545      PORT_WRITE(out_EXECUTE_OUT_PACKET_ID    ,_execute_operation_out->_packet_id    );
    4646  //  PORT_WRITE(out_EXECUTE_OUT_OPERATION    ,_execute_operation_out->_operation    );
    47       PORT_WRITE(out_EXECUTE_OUT_TYPE         ,_execute_operation_out->_type         );
     47  //  PORT_WRITE(out_EXECUTE_OUT_TYPE         ,_execute_operation_out->_type         );
    4848      PORT_WRITE(out_EXECUTE_OUT_WRITE_RD     ,_execute_operation_out->_write_rd     );
    4949      PORT_WRITE(out_EXECUTE_OUT_NUM_REG_RD   ,_execute_operation_out->_num_reg_rd   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp

    r88 r97  
    9595            log_printf(TRACE,Functionnal_unit,FUNCTION,"    * packet_id     : %d",_execute_operation_in->_packet_id    );
    9696            log_printf(TRACE,Functionnal_unit,FUNCTION,"    * operation     : %d",_execute_operation_in->_operation    );
    97             log_printf(TRACE,Functionnal_unit,FUNCTION,"    * type          : %s",toString_type(_execute_operation_in->_type).c_str());
     97            log_printf(TRACE,Functionnal_unit,FUNCTION,"    * type          : %s",toString(_execute_operation_in->_type).c_str());
    9898            log_printf(TRACE,Functionnal_unit,FUNCTION,"    * has_immediat  : %d",_execute_operation_in->_has_immediat );
    9999            log_printf(TRACE,Functionnal_unit,FUNCTION,"    * immediat      : %.8x",_execute_operation_in->_immediat     );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp

    r88 r97  
    7575    if (is_toplevel)
    7676      {
     77        _size_instruction_address= size_general_data-2;
    7778        _size_context_id         = log2(nb_context         );
    7879        _size_front_end_id       = log2(nb_front_end       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test2.cpp

    r88 r97  
    9797  ALLOC1_SC_SIGNAL(out_MEMORY_OUT_PACKET_ID           ,"out_MEMORY_OUT_PACKET_ID           ",Tpacket_t         ,_param->_nb_inst_memory);
    9898//ALLOC1_SC_SIGNAL(out_MEMORY_OUT_OPERATION           ,"out_MEMORY_OUT_OPERATION           ",Toperation_t      ,_param->_nb_inst_memory);
    99   ALLOC1_SC_SIGNAL(out_MEMORY_OUT_TYPE                ,"out_MEMORY_OUT_TYPE                ",Ttype_t           ,_param->_nb_inst_memory);
     99//ALLOC1_SC_SIGNAL(out_MEMORY_OUT_TYPE                ,"out_MEMORY_OUT_TYPE                ",Ttype_t           ,_param->_nb_inst_memory);
    100100  ALLOC1_SC_SIGNAL(out_MEMORY_OUT_WRITE_RD            ,"out_MEMORY_OUT_WRITE_RD            ",Tcontrol_t        ,_param->_nb_inst_memory); // = (operation==load)
    101101  ALLOC1_SC_SIGNAL(out_MEMORY_OUT_NUM_REG_RD          ,"out_MEMORY_OUT_NUM_REG_RD          ",Tgeneral_address_t,_param->_nb_inst_memory); // destination (load)
     
    106106  ALLOC1_SC_SIGNAL(out_MEMORY_OUT_EXCEPTION           ,"out_MEMORY_OUT_EXCEPTION           ",Texception_t      ,_param->_nb_inst_memory);
    107107  ALLOC1_SC_SIGNAL(out_MEMORY_OUT_NO_SEQUENCE         ,"out_MEMORY_OUT_NO_SEQUENCE         ",Tcontrol_t        ,_param->_nb_inst_memory);
    108   ALLOC1_SC_SIGNAL(out_MEMORY_OUT_ADDRESS             ,"out_MEMORY_OUT_ADDRESS             ",Tgeneral_data_t   ,_param->_nb_inst_memory);
     108  ALLOC1_SC_SIGNAL(out_MEMORY_OUT_ADDRESS             ,"out_MEMORY_OUT_ADDRESS             ",Taddress_t        ,_param->_nb_inst_memory);
    109109  ALLOC1_SC_SIGNAL(out_DCACHE_REQ_VAL                 ,"out_DCACHE_REQ_VAL                 ",Tcontrol_t        ,_param->_nb_cache_port);
    110110  ALLOC1_SC_SIGNAL( in_DCACHE_REQ_ACK                 ," in_DCACHE_REQ_ACK                 ",Tcontrol_t        ,_param->_nb_cache_port);
     
    169169  INSTANCE1_SC_SIGNAL(_Load_store_unit,out_MEMORY_OUT_PACKET_ID    ,_param->_nb_inst_memory);
    170170//INSTANCE1_SC_SIGNAL(_Load_store_unit,out_MEMORY_OUT_OPERATION    ,_param->_nb_inst_memory);
    171   INSTANCE1_SC_SIGNAL(_Load_store_unit,out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory);
     171//INSTANCE1_SC_SIGNAL(_Load_store_unit,out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory);
    172172  INSTANCE1_SC_SIGNAL(_Load_store_unit,out_MEMORY_OUT_WRITE_RD     ,_param->_nb_inst_memory);
    173173  INSTANCE1_SC_SIGNAL(_Load_store_unit,out_MEMORY_OUT_NUM_REG_RD   ,_param->_nb_inst_memory);
     
    520520                  TEST(Tcontext_t        , out_MEMORY_OUT_OOO_ENGINE_ID[0]->read(), tab_request[packet_id]._ooo_engine_id);
    521521//                TEST(Toperation_t      , out_MEMORY_OUT_OPERATION    [0]->read(), tab_request[packet_id]._operation    );
    522                   TEST(Ttype_t           , out_MEMORY_OUT_TYPE         [0]->read(), TYPE_MEMORY                          );
     522//                TEST(Ttype_t           , out_MEMORY_OUT_TYPE         [0]->read(), TYPE_MEMORY                          );
    523523
    524524                  if (is_operation_memory_load (tab_request[packet_id]._operation))
     
    730730  DELETE1_SC_SIGNAL(out_MEMORY_OUT_PACKET_ID    ,_param->_nb_inst_memory);
    731731//DELETE1_SC_SIGNAL(out_MEMORY_OUT_OPERATION    ,_param->_nb_inst_memory);
    732   DELETE1_SC_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory);
     732//DELETE1_SC_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory);
    733733  DELETE1_SC_SIGNAL(out_MEMORY_OUT_WRITE_RD     ,_param->_nb_inst_memory);
    734734  DELETE1_SC_SIGNAL(out_MEMORY_OUT_NUM_REG_RD   ,_param->_nb_inst_memory);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Load_store_unit.h

    r88 r97  
    118118  public    : SC_OUT(Tpacket_t         )   ** out_MEMORY_OUT_PACKET_ID           ;//[nb_inst_memory]
    119119//public    : SC_OUT(Toperation_t      )   ** out_MEMORY_OUT_OPERATION           ;//[nb_inst_memory]
    120   public    : SC_OUT(Ttype_t           )   ** out_MEMORY_OUT_TYPE                ;//[nb_inst_memory]
     120//public    : SC_OUT(Ttype_t           )   ** out_MEMORY_OUT_TYPE                ;//[nb_inst_memory]
    121121  public    : SC_OUT(Tcontrol_t        )   ** out_MEMORY_OUT_WRITE_RD            ;//[nb_inst_memory] // = (operation==load)
    122122  public    : SC_OUT(Tgeneral_address_t)   ** out_MEMORY_OUT_NUM_REG_RD          ;//[nb_inst_memory] // destination (load)
     
    127127  public    : SC_OUT(Texception_t      )   ** out_MEMORY_OUT_EXCEPTION           ;//[nb_inst_memory]
    128128  public    : SC_OUT(Tcontrol_t        )   ** out_MEMORY_OUT_NO_SEQUENCE         ;//[nb_inst_memory]
    129   public    : SC_OUT(Tgeneral_data_t   )   ** out_MEMORY_OUT_ADDRESS             ;//[nb_inst_memory]
     129  public    : SC_OUT(Taddress_t        )   ** out_MEMORY_OUT_ADDRESS             ;//[nb_inst_memory]
    130130   
    131131    // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Types.h

    r81 r97  
    235235  };
    236236
     237
     238  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tstore_queue_state_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tstore_queue_state_t& x)
     239  {
     240    switch (x)
     241      {
     242      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::STORE_QUEUE_EMPTY                   : return "empty"                  ; break;
     243      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::STORE_QUEUE_NO_VALID_NO_SPECULATIVE : return "no_valid_no_speculative"; break;
     244      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::STORE_QUEUE_VALID_SPECULATIVE       : return "valid_speculative"      ; break;
     245      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::STORE_QUEUE_VALID_NO_SPECULATIVE    : return "valid_no_speculative"   ; break;
     246      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::STORE_QUEUE_COMMIT                  : return "commit"                 ; break;
     247      default    : return ""      ; break;
     248      }
     249  };
     250
     251  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_access_queue_state_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tspeculative_access_queue_state_t& x)
     252  {
     253    switch (x)
     254      {
     255      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_ACCESS_QUEUE_EMPTY           : return "empty"          ; break;
     256      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_ACCESS_QUEUE_WAIT_CACHE      : return "wait_cache"     ; break;
     257      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::SPECULATIVE_ACCESS_QUEUE_WAIT_LOAD_QUEUE : return "wait_load_queue"; break;
     258      default    : return ""      ; break;
     259      }
     260  };
     261
     262  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tload_queue_state_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::Tload_queue_state_t& x)
     263  {
     264    switch (x)
     265      {
     266      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::LOAD_QUEUE_EMPTY        : return "empty"       ; break;
     267      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::LOAD_QUEUE_WAIT_CHECK   : return "wait_check"  ; break;
     268      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::LOAD_QUEUE_WAIT         : return "wait"        ; break;
     269      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::LOAD_QUEUE_COMMIT_CHECK : return "commit_check"; break;
     270      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::LOAD_QUEUE_CHECK        : return "check"       ; break;
     271      case morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_execute_unit::execute_unit::load_store_unit::LOAD_QUEUE_COMMIT       : return "commit"      ; break;
     272      default    : return ""      ; break;
     273      }
     274  };
     275
    237276}; // end namespace morpheo             
    238277
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp

    r88 r97  
    7272      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_DATA_RC              ,"data_rc"              ,Tspecial_data_t   ,_param->_size_special_data         );
    7373      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RD             ,"write_rd"             ,Tcontrol_t        ,1                                  );
    74       ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,1                                  );
     74      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RD           ,"num_reg_rd"           ,Tgeneral_address_t,_param->_size_general_register     );
    7575      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RE             ,"write_re"             ,Tcontrol_t        ,1                                  );
    76       ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,1                                  );
     76      ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RE           ,"num_reg_re"           ,Tspecial_address_t,_param->_size_special_register     );
    7777    }
    7878
     
    8888      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_PACKET_ID    ,"packet_id"     ,Tpacket_t         ,_param->_size_rob_ptr          );
    8989//    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_OPERATION    ,"operation"     ,Toperation_t      ,_param->_size_operation        );
    90       ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_TYPE         ,"type"          ,Ttype_t           ,_param->_size_type             );
     90//    ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_TYPE         ,"type"          ,Ttype_t           ,_param->_size_type             );
    9191      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_WRITE_RD     ,"write_rd"      ,Tcontrol_t        ,1                              );
    9292      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RD   ,"num_reg_rd"    ,Tgeneral_address_t,_param->_size_general_register );
    9393      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_DATA_RD      ,"data_rd"       ,Tgeneral_data_t   ,_param->_size_general_data     );
    9494      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_WRITE_RE     ,"write_re"      ,Tcontrol_t        ,1                              );
    95       ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RE   ,"num_reg_re"    ,Tspecial_address_t,_param->_size_general_register );
    96       ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_DATA_RE      ,"data_re"       ,Tspecial_data_t   ,_param->_size_general_data     );
     95      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NUM_REG_RE   ,"num_reg_re"    ,Tspecial_address_t,_param->_size_special_register );
     96      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_DATA_RE      ,"data_re"       ,Tspecial_data_t   ,_param->_size_special_data     );
    9797      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_EXCEPTION    ,"exception"     ,Texception_t      ,_param->_size_exception        );
    9898      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NO_SEQUENCE  ,"no_sequence"   ,Tcontrol_t        ,1                              );
    99       ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_ADDRESS      ,"address"       ,Tgeneral_data_t   ,_param->_size_general_data     );
     99      ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_ADDRESS      ,"address"       ,Taddress_t        ,_param->_size_instruction_address);
    100100    }
    101101
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_deallocation.cpp

    r88 r97  
    6363    DELETE1_SIGNAL(out_MEMORY_OUT_PACKET_ID    ,_param->_nb_inst_memory,_param->_size_rob_ptr          );
    6464//  DELETE1_SIGNAL(out_MEMORY_OUT_OPERATION    ,_param->_nb_inst_memory,_param->_size_operation        );
    65     DELETE1_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory,_param->_size_type             );
     65//  DELETE1_SIGNAL(out_MEMORY_OUT_TYPE         ,_param->_nb_inst_memory,_param->_size_type             );
    6666    DELETE1_SIGNAL(out_MEMORY_OUT_WRITE_RD     ,_param->_nb_inst_memory,1                              );
    6767    DELETE1_SIGNAL(out_MEMORY_OUT_NUM_REG_RD   ,_param->_nb_inst_memory,_param->_size_general_register );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_genMoore.cpp

    r88 r97  
    121121    PORT_WRITE(out_MEMORY_OUT_PACKET_ID    [0], memory_out_packet_id    );
    122122//  PORT_WRITE(out_MEMORY_OUT_OPERATION    [0], memory_out_operation    );
    123     PORT_WRITE(out_MEMORY_OUT_TYPE         [0], TYPE_MEMORY             );
     123//  PORT_WRITE(out_MEMORY_OUT_TYPE         [0], TYPE_MEMORY             );
    124124    PORT_WRITE(out_MEMORY_OUT_WRITE_RD     [0], memory_out_write_rd     );
    125125    PORT_WRITE(out_MEMORY_OUT_NUM_REG_RD   [0], memory_out_num_reg_rd   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp

    r88 r97  
    2323  void Load_store_unit::function_speculative_load_commit_transition (void)
    2424  {
    25     log_printf(FUNC,Load_store_unit,FUNCTION,"Begin");
     25    log_begin(Load_store_unit,FUNCTION);
     26    log_function(Load_store_unit,FUNCTION,_name.c_str());
    2627
    2728    if (PORT_READ(in_NRESET) == 0)
     
    5354
    5455        // solution 1)
    55         log_printf(TRACE,Load_store_unit,FUNCTION,"CHECK");
     56        log_printf(TRACE,Load_store_unit,FUNCTION,"  * CHECK");
    5657        for (uint32_t i=0, nb_check=0; (nb_check<_param->_nb_port_check) and (i<_param->_size_load_queue); i++)
    5758          {
     
    6364                is_operation_memory_load(_load_queue[index_load]._operation))
    6465              {
    65                 log_printf(TRACE,Load_store_unit,FUNCTION,"  * Find a load : %d",index_load);
     66                log_printf(TRACE,Load_store_unit,FUNCTION,"    * Find a load : %d",index_load);
    6667
    6768                nb_check++; // use one port
     
    283284                //   - second is the information of re order buffer : the store become not speculative and can access at the data cache
    284285
    285                 log_printf(TRACE,Load_store_unit,FUNCTION,"store_queue");
    286                 log_printf(TRACE,Load_store_unit,FUNCTION," * PUSH");
     286                log_printf(TRACE,Load_store_unit,FUNCTION,"    * store_queue");
     287                log_printf(TRACE,Load_store_unit,FUNCTION,"      * PUSH");
    287288               
    288289                // Write pointer is define in rename stage :
    289290                Tlsq_ptr_t           index         = PORT_READ(in_MEMORY_IN_STORE_QUEUE_PTR_WRITE[internal_MEMORY_IN_PORT]);
    290                 log_printf(TRACE,Load_store_unit,FUNCTION,"   * index         : %d",index);
     291                log_printf(TRACE,Load_store_unit,FUNCTION,"      * index         : %d",index);
    291292               
    292293                // Need read : state and exception.
     
    373374                if (update_info == true)
    374375                  {
    375                     log_printf(TRACE,Load_store_unit,FUNCTION,"   * Update information");
     376                    log_printf(TRACE,Load_store_unit,FUNCTION,"      * Update information");
    376377
    377378                    _store_queue [index]._context_id           = (not _param->_have_port_context_id   )?0:PORT_READ(in_MEMORY_IN_CONTEXT_ID   [internal_MEMORY_IN_PORT]);
     
    395396
    396397                // In speculative access queue, they are many type's request
    397                 log_printf(TRACE,Load_store_unit,FUNCTION,"speculative_access_queue");
    398                 log_printf(TRACE,Load_store_unit,FUNCTION," * PUSH");
     398                log_printf(TRACE,Load_store_unit,FUNCTION,"    * speculative_access_queue");
     399                log_printf(TRACE,Load_store_unit,FUNCTION,"      * PUSH");
    399400               
    400401                // Write in reservation station
    401402                uint32_t     index = _speculative_access_queue_control->push();
    402403
    403                 log_printf(TRACE,Load_store_unit,FUNCTION,"   * index : %d", index);
     404                log_printf(TRACE,Load_store_unit,FUNCTION,"      * index : %d", index);
    404405
    405406                Texception_t exception;
     
    428429                _speculative_access_queue [index]._exception            = exception;
    429430               
    430                 log_printf(TRACE,Load_store_unit,FUNCTION,"   * index         : %d",index);
     431                log_printf(TRACE,Load_store_unit,FUNCTION,"      * index         : %d",index);
    431432              }
    432433          }
     
    439440            (PORT_READ(in_MEMORY_OUT_ACK[0]) == 1))
    440441          {
    441             log_printf(TRACE,Load_store_unit,FUNCTION,"MEMORY_OUT transaction");
     442            log_printf(TRACE,Load_store_unit,FUNCTION,"  * MEMORY_OUT transaction");
    442443
    443444            switch (internal_MEMORY_OUT_SELECT_QUEUE)
     
    449450                  // =======================
    450451                 
    451                   log_printf(TRACE,Load_store_unit,FUNCTION," * store_queue [%d]",reg_STORE_QUEUE_PTR_READ);
     452                  log_printf(TRACE,Load_store_unit,FUNCTION,"    * store_queue [%d]",reg_STORE_QUEUE_PTR_READ);
    452453           
    453454                  // Entry flush and increase the read pointer
     
    464465                  // ======================
    465466                 
    466                   log_printf(TRACE,Load_store_unit,FUNCTION," * load_queue  [%d]",internal_MEMORY_OUT_PTR);
     467                  log_printf(TRACE,Load_store_unit,FUNCTION,"    * load_queue  [%d]",internal_MEMORY_OUT_PTR);
    467468                 
    468469                  // Entry flush and increase the read pointer
     
    476477              case SELECT_LOAD_QUEUE_SPECULATIVE :
    477478                {
    478                   log_printf(TRACE,Load_store_unit,FUNCTION," * load_queue  [%d] (speculative)",internal_MEMORY_OUT_PTR);
     479                  log_printf(TRACE,Load_store_unit,FUNCTION,"    * load_queue  [%d] (speculative)",internal_MEMORY_OUT_PTR);
    479480                 
    480481                  _load_queue [internal_MEMORY_OUT_PTR]._state    = LOAD_QUEUE_CHECK;
     
    497498            (PORT_READ(in_DCACHE_REQ_ACK[0]) == 1))
    498499          {
    499             log_printf(TRACE,Load_store_unit,FUNCTION,"DCACHE_REQ");
     500            log_printf(TRACE,Load_store_unit,FUNCTION,"  * DCACHE_REQ");
    500501
    501502            switch (internal_DCACHE_REQ_SELECT_QUEUE)
     
    587588            _load_queue [ptr_write]._rdata             = address; // to the exception
    588589           
    589             log_printf(TRACE,Load_store_unit,FUNCTION,"  * speculative_access_queue");
    590             log_printf(TRACE,Load_store_unit,FUNCTION,"    * POP[%d]",(*_speculative_access_queue_control)[0]);
     590            log_printf(TRACE,Load_store_unit,FUNCTION,"    * speculative_access_queue");
     591            log_printf(TRACE,Load_store_unit,FUNCTION,"      * POP[%d]",(*_speculative_access_queue_control)[0]);
    591592           
    592593            _speculative_access_queue [(*_speculative_access_queue_control)[0]]._state = SPECULATIVE_ACCESS_QUEUE_EMPTY;
     
    601602            (    internal_DCACHE_RSP_ACK == 1))
    602603          {
    603             log_printf(TRACE,Load_store_unit,FUNCTION,"DCACHE_RSP");
     604            log_printf(TRACE,Load_store_unit,FUNCTION,"  * DCACHE_RSP");
    604605
    605606            // don't use context_id : because there are one queue for all thread
     
    609610            Tdcache_error_t error      = PORT_READ(in_DCACHE_RSP_ERROR     [0]);
    610611
    611             log_printf(TRACE,Load_store_unit,FUNCTION," * original packet_id : %d", packet_id);
     612            log_printf(TRACE,Load_store_unit,FUNCTION,"    * original packet_id : %d", packet_id);
    612613           
    613614            if (DCACHE_RSP_IS_LOAD(packet_id) == 1)
     
    615616                packet_id >>= 1;
    616617
    617                 log_printf(TRACE,Load_store_unit,FUNCTION," * packet is a LOAD  : %d", packet_id);
     618                log_printf(TRACE,Load_store_unit,FUNCTION,"    * packet is a LOAD  : %d", packet_id);
    618619 
    619620
     
    626627                if (error != DCACHE_ERROR_NONE)
    627628                  {
    628                     log_printf(TRACE,Load_store_unit,FUNCTION," * have a bus error !!!");
     629                    log_printf(TRACE,Load_store_unit,FUNCTION,"    * have a bus error !!!");
    629630
    630631                    _load_queue [packet_id]._exception = EXCEPTION_MEMORY_BUS_ERROR;
     
    633634                else
    634635                  {
    635                     log_printf(TRACE,Load_store_unit,FUNCTION," * have no bus error.");
    636                     log_printf(TRACE,Load_store_unit,FUNCTION,"   * previous state : %d.",_load_queue [packet_id]._state);
     636                    log_printf(TRACE,Load_store_unit,FUNCTION,"    * have no bus error.");
     637                    log_printf(TRACE,Load_store_unit,FUNCTION,"      * previous state : %d.",_load_queue [packet_id]._state);
    637638
    638639                    // FIXME : convention : if bus error, the cache return the fautive address !
     
    650651            else
    651652              {
    652                 log_printf(TRACE,Load_store_unit,FUNCTION," * packet is a STORE");
     653                log_printf(TRACE,Load_store_unit,FUNCTION,"    * packet is a STORE");
    653654               
    654655                // TODO : les stores ne génére pas de réponse sauf quand c'est un bus error !!!
     
    664665#if defined(DEBUG) and (DEBUG>=DEBUG_TRACE)
    665666        // ***** dump store queue
    666         std::cout << "Dump STORE_QUEUE :" << std::endl
    667                   << "ptr_read : " << toString(static_cast<uint32_t>(reg_STORE_QUEUE_PTR_READ)) << std::endl;
     667        log_printf(TRACE,Load_store_unit,FUNCTION,"  * Dump STORE_QUEUE");
     668        log_printf(TRACE,Load_store_unit,FUNCTION,"    * ptr_read : %d",reg_STORE_QUEUE_PTR_READ);
    668669       
    669670        for (uint32_t i=0; i<_param->_size_store_queue; i++)
    670671          {
    671672            uint32_t j = (reg_STORE_QUEUE_PTR_READ+i)%_param->_size_store_queue;
    672             std::cout << "{" << j << "}" << std::endl
    673                       << _store_queue[j] << std::endl;
     673
     674            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d, %.8x %.8x, %.2d, %s",
     675                       j,
     676                       _store_queue[j]._context_id          ,
     677                       _store_queue[j]._front_end_id        ,
     678                       _store_queue[j]._ooo_engine_id       ,
     679                       _store_queue[j]._packet_id           ,
     680                       _store_queue[j]._operation           ,
     681                       _store_queue[j]._load_queue_ptr_write,
     682                       _store_queue[j]._address             ,
     683                       _store_queue[j]._wdata               ,
     684                     //_store_queue[j]._write_rd            ,
     685                     //_store_queue[j]._num_reg_rd          ,
     686                       _store_queue[j]._exception           ,
     687                       toString(_store_queue[j]._state).c_str());
    674688          }
    675689
    676690        // ***** dump speculative_access queue
    677         std::cout << "Dump SPECULATIVE_ACCESS_QUEUE :" << std::endl;
     691        log_printf(TRACE,Load_store_unit,FUNCTION,"  * Dump SPECULATIVE_ACCESS_QUEUE");
    678692       
    679693        for (uint32_t i=0; i<_param->_size_speculative_access_queue; i++)
    680694          {
    681695            uint32_t j = (*_speculative_access_queue_control)[i];
    682             std::cout << "{" << j << "}" << std::endl
    683                  << _speculative_access_queue[j] << std::endl;
     696
     697            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d %.4d, %.8x, %.1d %.6d, %.2d, %s",
     698                       j,
     699                       _speculative_access_queue[j]._context_id          ,
     700                       _speculative_access_queue[j]._front_end_id        ,
     701                       _speculative_access_queue[j]._ooo_engine_id       ,
     702                       _speculative_access_queue[j]._packet_id           ,
     703                       _speculative_access_queue[j]._operation           ,
     704                       _speculative_access_queue[j]._load_queue_ptr_write,
     705                       _speculative_access_queue[j]._store_queue_ptr_write,
     706                       _speculative_access_queue[j]._address             ,
     707                       _speculative_access_queue[j]._write_rd            ,
     708                       _speculative_access_queue[j]._num_reg_rd          ,
     709                       _speculative_access_queue[j]._exception           ,
     710                       toString(_speculative_access_queue[j]._state).c_str());
    684711          }
    685712
    686713        // ***** dump load queue
    687         std::cout << "Dump LOAD_QUEUE :" << std::endl
    688              << "ptr_read_check_priority : " << toString(static_cast<uint32_t>(reg_LOAD_QUEUE_CHECK_PRIORITY)) << std::endl;
     714        log_printf(TRACE,Load_store_unit,FUNCTION,"  * Dump LOAD_QUEUE");
     715        log_printf(TRACE,Load_store_unit,FUNCTION,"    * ptr_read_check_priority : %d",reg_LOAD_QUEUE_CHECK_PRIORITY);
    689716       
    690717        for (uint32_t i=0; i<_param->_size_load_queue; i++)
    691718          {
    692719            uint32_t j = i;
    693             std::cout << "{" << j << "}" << std::endl
    694                  << _load_queue[j] << std::endl;
     720
     721            log_printf(TRACE,Load_store_unit,FUNCTION,"    [%.4d] %.4d %.4d %.4d, %.4d, %.4d, %.4d, %.8x %.1x %.1d %.2d %.1d %.2d, %.8x, %.1d %.6d, %.2d, %s",
     722                       j,
     723                       _load_queue[j]._context_id          ,
     724                       _load_queue[j]._front_end_id        ,
     725                       _load_queue[j]._ooo_engine_id       ,
     726                       _load_queue[j]._packet_id           ,
     727                       _load_queue[j]._operation           ,
     728                       _load_queue[j]._store_queue_ptr_write,
     729                       _load_queue[j]._address             ,
     730                       _load_queue[j]._check_hit_byte      ,
     731                       _load_queue[j]._check_hit           ,
     732                       _load_queue[j]._shift               ,
     733                       _load_queue[j]._is_load_signed      ,
     734                       _load_queue[j]._access_size         ,
     735                       _load_queue[j]._rdata               ,
     736                       _load_queue[j]._write_rd            ,
     737                       _load_queue[j]._num_reg_rd          ,
     738                       _load_queue[j]._exception           ,
     739                       toString(_load_queue[j]._state).c_str());
    695740          }
    696741#endif
     
    712757      }
    713758
    714     log_printf(FUNC,Load_store_unit,FUNCTION,"End");
     759    log_end(Load_store_unit,FUNCTION);
    715760  };
    716761
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp

    r88 r97  
    6969    if (is_toplevel)
    7070      {
     71        _size_instruction_address              = size_general_data-2;
    7172        _size_context_id                       = log2(nb_context         );
    7273        _size_front_end_id                     = log2(nb_front_end       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp

    r88 r97  
    190190                       _queue_head->_num_reg_re           ,
    191191
    192                        toString_type(_queue_head->_type).c_str());
     192                       toString(_queue_head->_type).c_str());
    193193
    194194
     
    240240                           (*it)->_num_reg_re           ,
    241241
    242                            toString_type((*it)->_type).c_str());
     242                           toString((*it)->_type).c_str());
    243243
    244244                ++i;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_body.cpp

    r81 r97  
    2222  {
    2323    log_printf(FUNC,Read_queue,"vhdl_body","Begin");
    24     vhdl->set_body ("");
    25     vhdl->set_body("");
    26     vhdl->set_body("-----------------------------------");
    27     vhdl->set_body("-- Instance queue                  ");
    28     vhdl->set_body("-----------------------------------");
    29     vhdl->set_body("");
    30 
    31     vhdl->set_body("instance_"+_name+"_queue : "+_name+"_queue");
    32     vhdl->set_body("port map (");
    33     vhdl->set_body("\t  in_CLOCK       \t=>\t      in_CLOCK ");
    34     vhdl->set_body("\t, in_NRESET      \t=>\t      in_NRESET");
    35     vhdl->set_body("\t, in_INSERT_VAL  \t=>\tinternal_QUEUE_INSERT_VAL");
    36     vhdl->set_body("\t,out_INSERT_ACK  \t=>\tinternal_QUEUE_INSERT_ACK");
    37     vhdl->set_body("\t, in_INSERT_DATA \t=>\tinternal_QUEUE_INSERT_DATA");
    38     vhdl->set_body("\t,out_RETIRE_VAL  \t=>\tinternal_QUEUE_RETIRE_VAL");
    39     vhdl->set_body("\t, in_RETIRE_ACK  \t=>\tinternal_QUEUE_RETIRE_ACK");
    40     vhdl->set_body("\t,out_RETIRE_DATA \t=>\tinternal_QUEUE_RETIRE_DATA");
    41     vhdl->set_body(");");
    42 
    43     vhdl->set_body("");
    44     vhdl->set_body("-----------------------------------");
    45     vhdl->set_body("-- Queue_data                      ");
    46     vhdl->set_body("-----------------------------------");
    47     vhdl->set_body("");
     24    vhdl->set_body(0,"");
     25    vhdl->set_body(0,"");
     26    vhdl->set_body(0,"-----------------------------------");
     27    vhdl->set_body(0,"-- Instance queue                  ");
     28    vhdl->set_body(0,"-----------------------------------");
     29    vhdl->set_body(0,"");
     30
     31    vhdl->set_body(0,"instance_"+_name+"_queue : "+_name+"_queue");
     32    vhdl->set_body(0,"port map (");
     33    vhdl->set_body(1,"  in_CLOCK       \t=>\t      in_CLOCK ");
     34    vhdl->set_body(1,", in_NRESET      \t=>\t      in_NRESET");
     35    vhdl->set_body(1,", in_INSERT_VAL  \t=>\tinternal_QUEUE_INSERT_VAL");
     36    vhdl->set_body(1,",out_INSERT_ACK  \t=>\tinternal_QUEUE_INSERT_ACK");
     37    vhdl->set_body(1,", in_INSERT_DATA \t=>\tinternal_QUEUE_INSERT_DATA");
     38    vhdl->set_body(1,",out_RETIRE_VAL  \t=>\tinternal_QUEUE_RETIRE_VAL");
     39    vhdl->set_body(1,", in_RETIRE_ACK  \t=>\tinternal_QUEUE_RETIRE_ACK");
     40    vhdl->set_body(1,",out_RETIRE_DATA \t=>\tinternal_QUEUE_RETIRE_DATA");
     41    vhdl->set_body(0,");");
     42
     43    vhdl->set_body(0,"");
     44    vhdl->set_body(0,"-----------------------------------");
     45    vhdl->set_body(0,"-- Queue_data                      ");
     46    vhdl->set_body(0,"-----------------------------------");
     47    vhdl->set_body(0,"");
    4848   
    4949    uint32_t min = 0;
     
    5353      {
    5454        max = min-1+_param->_size_context_id;
    55         vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_CONTEXT_ID;");
     55        vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_CONTEXT_ID;");
    5656        min = max+1;
    5757      }
     
    5959      {
    6060        max = min-1+_param->_size_front_end_id;
    61         vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_FRONT_END_ID;");
     61        vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_FRONT_END_ID;");
    6262        min = max+1;
    6363      }
     
    6565      {
    6666        max = min-1+_param->_size_ooo_engine_id;
    67         vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OOO_ENGINE_ID;");
     67        vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OOO_ENGINE_ID;");
    6868        min = max+1;
    6969      }
    70     if(_param->_have_port_rob_id   )
    71       {
    72         max = min-1+_param->_size_rob_id;
    73         vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_ROB_ID;");
     70    if(_param->_have_port_rob_ptr  )
     71      {
     72        max = min-1+_param->_size_rob_ptr  ;
     73        vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_ROB_ID;");
    7474        min = max+1;
    7575      }
    7676
    7777    max = min-1+_param->_size_operation;
    78     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OPERATION;");
     78    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_OPERATION;");
    7979    min = max+1;
    8080
    8181    max = min-1+_param->_size_type;
    82     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_TYPE;");
    83     min = max+1;
    84 
    85     max = min;
    86     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_HAS_IMMEDIAT;");
     82    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_TYPE;");
     83    min = max+1;
     84
     85    max = min;
     86    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_HAS_IMMEDIAT;");
    8787    min = max+1;
    8888
    8989    max = min-1+_param->_size_general_data;
    90     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_IMMEDIAT;");
    91     min = max+1;
    92 
    93     max = min;
    94     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RA;");
     90    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_IMMEDIAT;");
     91    min = max+1;
     92
     93    max = min;
     94    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RA;");
    9595    min = max+1;
    9696
    9797    max = min-1+_param->_size_general_register;
    98     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RA;");
    99     min = max+1;
    100 
    101     max = min;
    102     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RB;");
     98    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RA;");
     99    min = max+1;
     100
     101    max = min;
     102    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RB;");
    103103    min = max+1;
    104104
    105105    max = min-1+_param->_size_general_register;
    106     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RB;");
    107     min = max+1;
    108 
    109     max = min;
    110     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RC;");
     106    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RB;");
     107    min = max+1;
     108
     109    max = min;
     110    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_READ_RC;");
    111111    min = max+1;
    112112
    113113    max = min-1+_param->_size_special_register;
    114     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RC;");
    115     min = max+1;
    116 
    117     max = min;
    118     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RD;");
     114    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RC;");
     115    min = max+1;
     116
     117    max = min;
     118    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RD;");
    119119    min = max+1;
    120120
    121121    max = min-1+_param->_size_general_register;
    122     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RD;");
    123     min = max+1;
    124 
    125     max = min;
    126     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RE;");
     122    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RD;");
     123    min = max+1;
     124
     125    max = min;
     126    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_WRITE_RE;");
    127127    min = max+1;
    128128
    129129    max = min-1+_param->_size_special_register;
    130     vhdl->set_body ("internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RE;");
    131     min = max+1;
    132 
    133     vhdl->set_body ("internal_QUEUE_RETIRE_ACK <= internal_READ_QUEUE_OUT_VAL and in_READ_QUEUE_OUT_ACK;");
    134 
    135     vhdl->set_body("");
    136     vhdl->set_body("-----------------------------------");
    137     vhdl->set_body("-- Interface read");
    138     vhdl->set_body("-----------------------------------");
    139     vhdl->set_body("");
    140     vhdl->set_body("-- GPR");
    141     vhdl->set_body ("out_GPR_READ_0_VAL           <= internal_QUEUE_RETIRE_VAL and internal_READ_RA_VAL;");
    142     vhdl->set_body ("out_GPR_READ_1_VAL           <= internal_QUEUE_RETIRE_VAL and internal_READ_RB_VAL;");
     130    vhdl->set_body(0,"internal_QUEUE_INSERT_DATA"+std_logic_range(_param->_size_internal_queue,max,min)+" <= in_READ_QUEUE_IN_NUM_REG_RE;");
     131    min = max+1;
     132
     133    vhdl->set_body(0,"internal_QUEUE_RETIRE_ACK <= internal_READ_QUEUE_OUT_VAL and in_READ_QUEUE_OUT_ACK;");
     134
     135    vhdl->set_body(0,"");
     136    vhdl->set_body(0,"-----------------------------------");
     137    vhdl->set_body(0,"-- Interface read");
     138    vhdl->set_body(0,"-----------------------------------");
     139    vhdl->set_body(0,"");
     140    vhdl->set_body(0,"-- GPR");
     141    vhdl->set_body(0,"out_GPR_READ_0_VAL           <= internal_QUEUE_RETIRE_VAL and internal_READ_RA_VAL;");
     142    vhdl->set_body(0,"out_GPR_READ_1_VAL           <= internal_QUEUE_RETIRE_VAL and internal_READ_RB_VAL;");
    143143    if(_param->_have_port_ooo_engine_id)
    144144      {
    145         vhdl->set_body ("out_GPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
    146         vhdl->set_body ("out_GPR_READ_1_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
    147       }
    148     vhdl->set_body ("out_GPR_READ_0_NUM_REG       <= internal_NUM_REG_RA;");
    149     vhdl->set_body ("out_GPR_READ_1_NUM_REG       <= internal_NUM_REG_RB;");
    150     vhdl->set_body("");
    151    
    152     vhdl->set_body("-- SPR");
    153     vhdl->set_body ("out_SPR_READ_0_VAL           <= internal_QUEUE_RETIRE_VAL and internal_READ_RC_VAL;");
     145        vhdl->set_body(0,"out_GPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
     146        vhdl->set_body(0,"out_GPR_READ_1_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
     147      }
     148    vhdl->set_body(0,"out_GPR_READ_0_NUM_REG       <= internal_NUM_REG_RA;");
     149    vhdl->set_body(0,"out_GPR_READ_1_NUM_REG       <= internal_NUM_REG_RB;");
     150    vhdl->set_body(0,"");
     151   
     152    vhdl->set_body(0,"-- SPR");
     153    vhdl->set_body(0,"out_SPR_READ_0_VAL           <= internal_QUEUE_RETIRE_VAL and internal_READ_RC_VAL;");
    154154    if(_param->_have_port_ooo_engine_id)
    155155      {
    156         vhdl->set_body ("out_SPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
    157       }
    158     vhdl->set_body ("out_SPR_READ_0_NUM_REG       <= internal_NUM_REG_RC;");
    159 
    160     vhdl->set_body("");
    161     vhdl->set_body("-----------------------------------");
    162     vhdl->set_body("-- Interface read_queue_out");
    163     vhdl->set_body("-----------------------------------");
    164     vhdl->set_body("");
     156        vhdl->set_body(0,"out_SPR_READ_0_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
     157      }
     158    vhdl->set_body(0,"out_SPR_READ_0_NUM_REG       <= internal_NUM_REG_RC;");
     159
     160    vhdl->set_body(0,"");
     161    vhdl->set_body(0,"-----------------------------------");
     162    vhdl->set_body(0,"-- Interface read_queue_out");
     163    vhdl->set_body(0,"-----------------------------------");
     164    vhdl->set_body(0,"");
    165165   
    166166    if(_param->_have_port_context_id   )
    167       vhdl->set_body ("out_READ_QUEUE_OUT_CONTEXT_ID    <= internal_CONTEXT_ID   ;");
     167      vhdl->set_body(0,"out_READ_QUEUE_OUT_CONTEXT_ID    <= internal_CONTEXT_ID   ;");
    168168    if(_param->_have_port_front_end_id   )
    169       vhdl->set_body ("out_READ_QUEUE_OUT_FRONT_END_ID  <= internal_FRONT_END_ID ;");
     169      vhdl->set_body(0,"out_READ_QUEUE_OUT_FRONT_END_ID  <= internal_FRONT_END_ID ;");
    170170    if(_param->_have_port_ooo_engine_id   )
    171       vhdl->set_body ("out_READ_QUEUE_OUT_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
    172     if(_param->_have_port_rob_id   )
    173       vhdl->set_body ("out_READ_QUEUE_OUT_ROB_ID        <= internal_ROB_ID       ;");
    174     vhdl->set_body ("out_READ_QUEUE_OUT_OPERATION     <= internal_OPERATION    ;");
    175     vhdl->set_body ("out_READ_QUEUE_OUT_TYPE          <= internal_TYPE         ;");
    176     vhdl->set_body ("out_READ_QUEUE_OUT_HAS_IMMEDIAT  <= internal_HAS_IMMEDIAT ;");
    177     vhdl->set_body ("out_READ_QUEUE_OUT_IMMEDIAT      <= internal_IMMEDIAT     ;");
    178     vhdl->set_body ("out_READ_QUEUE_OUT_READ_RA       <= internal_READ_RA      ;");
    179     vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RA    <= internal_NUM_REG_RA   ;");
    180     vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RA_VAL   <= internal_NEXT_DATA_RA_VAL;");
    181     vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RA       <= internal_NEXT_DATA_RA ;");
    182     vhdl->set_body ("out_READ_QUEUE_OUT_READ_RB       <= internal_READ_RB      ;");
    183     vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RB    <= internal_NUM_REG_RB   ;");
    184     vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RB_VAL   <= internal_NEXT_DATA_RB_VAL;");
    185     vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RB       <= internal_NEXT_DATA_RB ;");
    186     vhdl->set_body ("out_READ_QUEUE_OUT_READ_RC       <= internal_READ_RC      ;");
    187     vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RC    <= internal_NUM_REG_RC   ;");
    188     vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RC_VAL   <= internal_NEXT_DATA_RC_VAL;");
    189     vhdl->set_body ("out_READ_QUEUE_OUT_DATA_RC       <= internal_NEXT_DATA_RC ;");
    190     vhdl->set_body ("out_READ_QUEUE_OUT_WRITE_RD      <= internal_WRITE_RD     ;");
    191     vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RD    <= internal_NUM_REG_RD   ;");
    192     vhdl->set_body ("out_READ_QUEUE_OUT_WRITE_RE      <= internal_WRITE_RE     ;");
    193     vhdl->set_body ("out_READ_QUEUE_OUT_NUM_REG_RE    <= internal_NUM_REG_RE   ;");
    194    
    195     vhdl->set_body("");
    196     vhdl->set_body("-----------------------------------");
    197     vhdl->set_body("-- next reg update");
    198     vhdl->set_body("-----------------------------------");
    199     vhdl->set_body("");
    200     vhdl->set_body("-- read_rx_val - 1 : must access at the registerFile (after access, is set at 0)");
    201    
    202     {
    203       vhdl->set_body("");
    204       vhdl->set_body("internal_NEXT_READ_RA_VAL <=");
    205       vhdl->set_body("\t'0' when");
    206       // bypass
    207       vhdl->set_body("\t\t-- check bypass");
    208       for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
    209         {
    210           std::string cmp;
    211          
    212           if (_param->_have_port_ooo_engine_id)
    213             cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) ";
    214           else
    215             cmp = "";
    216          
    217           vhdl->set_body("\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
    218         }
    219       vhdl->set_body("\t\tfalse else");
    220       vhdl->set_body("\tinternal_READ_RA_VAL and not in_GPR_READ_0_ACK;");
    221     }
    222     {
    223       vhdl->set_body("");
    224       vhdl->set_body("internal_NEXT_READ_RB_VAL <=");
    225       vhdl->set_body("\t'0' when");
    226       // bypass
    227       vhdl->set_body("\t\t-- check bypass");
    228       for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
    229         {
    230           std::string cmp;
    231          
    232           if (_param->_have_port_ooo_engine_id)
    233             cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) ";
    234           else
    235             cmp = "";
    236          
    237           vhdl->set_body("\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
    238         }
    239       vhdl->set_body("\t\tfalse else");
    240       vhdl->set_body("\tinternal_READ_RB_VAL and not in_GPR_READ_1_ACK;");
    241     }
    242     {
    243       vhdl->set_body("");
    244       vhdl->set_body("internal_NEXT_READ_RC_VAL <=");
    245       vhdl->set_body("\t'0' when");
    246       // bypass
    247       vhdl->set_body("\t\t-- check bypass");
     171      vhdl->set_body(0,"out_READ_QUEUE_OUT_OOO_ENGINE_ID <= internal_OOO_ENGINE_ID;");
     172    if(_param->_have_port_rob_ptr  )
     173      vhdl->set_body(0,"out_READ_QUEUE_OUT_ROB_ID        <= internal_ROB_ID       ;");
     174    vhdl->set_body(0,"out_READ_QUEUE_OUT_OPERATION     <= internal_OPERATION    ;");
     175    vhdl->set_body(0,"out_READ_QUEUE_OUT_TYPE          <= internal_TYPE         ;");
     176    vhdl->set_body(0,"out_READ_QUEUE_OUT_HAS_IMMEDIAT  <= internal_HAS_IMMEDIAT ;");
     177    vhdl->set_body(0,"out_READ_QUEUE_OUT_IMMEDIAT      <= internal_IMMEDIAT     ;");
     178//     vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RA       <= internal_READ_RA      ;");
     179    vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RA    <= internal_NUM_REG_RA   ;");
     180    vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RA_VAL   <= internal_NEXT_DATA_RA_VAL;");
     181    vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RA       <= internal_NEXT_DATA_RA ;");
     182//     vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RB       <= internal_READ_RB      ;");
     183    vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RB    <= internal_NUM_REG_RB   ;");
     184    vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RB_VAL   <= internal_NEXT_DATA_RB_VAL;");
     185    vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RB       <= internal_NEXT_DATA_RB ;");
     186//     vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RC       <= internal_READ_RC      ;");
     187    vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RC    <= internal_NUM_REG_RC   ;");
     188    vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RC_VAL   <= internal_NEXT_DATA_RC_VAL;");
     189    vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RC       <= internal_NEXT_DATA_RC ;");
     190    vhdl->set_body(0,"out_READ_QUEUE_OUT_WRITE_RD      <= internal_WRITE_RD     ;");
     191    vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RD    <= internal_NUM_REG_RD   ;");
     192    vhdl->set_body(0,"out_READ_QUEUE_OUT_WRITE_RE      <= internal_WRITE_RE     ;");
     193    vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RE    <= internal_NUM_REG_RE   ;");
     194   
     195    vhdl->set_body(0,"");
     196    vhdl->set_body(0,"-----------------------------------");
     197    vhdl->set_body(0,"-- next reg update");
     198    vhdl->set_body(0,"-----------------------------------");
     199    vhdl->set_body(0,"");
     200    vhdl->set_body(0,"-- read_rx_val - 1 : must access at the registerFile (after access, is set at 0)");
     201   
     202    {
     203      vhdl->set_body(0,"");
     204      vhdl->set_body(0,"internal_NEXT_READ_RA_VAL <=");
     205      vhdl->set_body(1,"'0' when");
     206      // bypass
     207      vhdl->set_body(2,"-- check bypass");
     208      for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
     209        {
     210          std::string cmp;
     211         
     212          if (_param->_have_port_ooo_engine_id)
     213            cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) ";
     214          else
     215            cmp = "";
     216         
     217          vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
     218        }
     219      vhdl->set_body(2,"false else");
     220      vhdl->set_body(1,"internal_READ_RA_VAL and not in_GPR_READ_0_ACK;");
     221    }
     222    {
     223      vhdl->set_body(0,"");
     224      vhdl->set_body(0,"internal_NEXT_READ_RB_VAL <=");
     225      vhdl->set_body(1,"'0' when");
     226      // bypass
     227      vhdl->set_body(2,"-- check bypass");
     228      for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
     229        {
     230          std::string cmp;
     231         
     232          if (_param->_have_port_ooo_engine_id)
     233            cmp = "and (in_GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID=internal_OOO_ENGINE_ID) ";
     234          else
     235            cmp = "";
     236         
     237          vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
     238        }
     239      vhdl->set_body(2,"false else");
     240      vhdl->set_body(1,"internal_READ_RB_VAL and not in_GPR_READ_1_ACK;");
     241    }
     242    {
     243      vhdl->set_body(0,"");
     244      vhdl->set_body(0,"internal_NEXT_READ_RC_VAL <=");
     245      vhdl->set_body(1,"'0' when");
     246      // bypass
     247      vhdl->set_body(2,"-- check bypass");
    248248      for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--)
    249249        {
     
    255255            cmp = "";
    256256         
    257           vhdl->set_body("\t\t((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or");
    258         }
    259       vhdl->set_body("\t\tfalse else");
    260       vhdl->set_body("\tinternal_READ_RC_VAL and not in_SPR_READ_0_ACK;");
    261     }
    262     {
    263       vhdl->set_body("");
    264       vhdl->set_body("internal_READ_QUEUE_OUT_VAL <= not internal_NEXT_READ_RA_VAL and not internal_NEXT_READ_RB_VAL and not internal_NEXT_READ_RC_VAL;");
    265       vhdl->set_body("     out_READ_QUEUE_OUT_VAL <= internal_READ_QUEUE_OUT_VAL and internal_QUEUE_RETIRE_VAL;");
     257          vhdl->set_body(2,"((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or");
     258        }
     259      vhdl->set_body(2,"false else");
     260      vhdl->set_body(1,"internal_READ_RC_VAL and not in_SPR_READ_0_ACK;");
     261    }
     262    {
     263      vhdl->set_body(0,"");
     264      vhdl->set_body(0,"internal_READ_QUEUE_OUT_VAL <= not internal_NEXT_READ_RA_VAL and not internal_NEXT_READ_RB_VAL and not internal_NEXT_READ_RC_VAL;");
     265      vhdl->set_body(0,"     out_READ_QUEUE_OUT_VAL <= internal_READ_QUEUE_OUT_VAL and internal_QUEUE_RETIRE_VAL;");
    266266     
    267267    }
    268268   
    269     vhdl->set_body("");
    270     vhdl->set_body("-- data_rx_val - 1 : the read of registerFile is valid");
    271    
    272     {
    273       vhdl->set_body("");
    274       vhdl->set_body("internal_NEXT_DATA_RA_VAL <=");
    275       vhdl->set_body("\t'1' when");
    276       // bypass
    277       vhdl->set_body("\t\t-- check bypass");
     269    vhdl->set_body(0,"");
     270    vhdl->set_body(0,"-- data_rx_val - 1 : the read of registerFile is valid");
     271   
     272    {
     273      vhdl->set_body(0,"");
     274      vhdl->set_body(0,"internal_NEXT_DATA_RA_VAL <=");
     275      vhdl->set_body(1,"'1' when");
     276      // bypass
     277      vhdl->set_body(2,"-- check bypass");
    278278      for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
    279279        {
     
    285285            cmp = "";
    286286         
    287           vhdl->set_body("\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
    288         }
    289       vhdl->set_body("\t\tfalse else");
    290       vhdl->set_body("\tinternal_DATA_RA_VAL or (internal_READ_RA_VAL and in_GPR_READ_0_ACK and in_GPR_READ_0_DATA_VAL);");
    291     }
    292     {
    293       vhdl->set_body("");
    294       vhdl->set_body("internal_NEXT_DATA_RB_VAL <=");
    295       vhdl->set_body("\t'1' when");
    296       // bypass
    297       vhdl->set_body("\t\t-- check bypass");
     287          vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
     288        }
     289      vhdl->set_body(2,"false else");
     290      vhdl->set_body(1,"internal_DATA_RA_VAL or (internal_READ_RA_VAL and in_GPR_READ_0_ACK and in_GPR_READ_0_DATA_VAL);");
     291    }
     292    {
     293      vhdl->set_body(0,"");
     294      vhdl->set_body(0,"internal_NEXT_DATA_RB_VAL <=");
     295      vhdl->set_body(1,"'1' when");
     296      // bypass
     297      vhdl->set_body(2,"-- check bypass");
    298298      for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
    299299        {
     
    305305          cmp = "";
    306306         
    307           vhdl->set_body("\t\t((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
    308         }
    309       vhdl->set_body("\t\tfalse else");
    310       vhdl->set_body("\tinternal_DATA_RB_VAL or (internal_READ_RB_VAL and in_GPR_READ_1_ACK and in_GPR_READ_1_DATA_VAL);");
    311     }
    312     {
    313       vhdl->set_body("");
    314       vhdl->set_body("internal_NEXT_DATA_RC_VAL <=");
    315       vhdl->set_body("\t'1' when");
    316       // bypass
    317       vhdl->set_body("\t\t-- check bypass");
     307          vhdl->set_body(2,"((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) or");
     308        }
     309      vhdl->set_body(2,"false else");
     310      vhdl->set_body(1,"internal_DATA_RB_VAL or (internal_READ_RB_VAL and in_GPR_READ_1_ACK and in_GPR_READ_1_DATA_VAL);");
     311    }
     312    {
     313      vhdl->set_body(0,"");
     314      vhdl->set_body(0,"internal_NEXT_DATA_RC_VAL <=");
     315      vhdl->set_body(1,"'1' when");
     316      // bypass
     317      vhdl->set_body(2,"-- check bypass");
    318318      for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--)
    319319        {
     
    325325            cmp = "";
    326326         
    327           vhdl->set_body("\t\t((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or");
    328         }
    329       vhdl->set_body("\t\tfalse else");
    330       vhdl->set_body("\tinternal_DATA_RC_VAL or (internal_READ_RC_VAL and in_SPR_READ_0_ACK and in_SPR_READ_0_DATA_VAL);");
    331     }
    332    
    333     vhdl->set_body("");
    334     vhdl->set_body("-- data_rx - data read");
    335     {
    336       vhdl->set_body("");
    337       vhdl->set_body("internal_NEXT_DATA_RA <=");
     327          vhdl->set_body(2,"((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RC=in_SPR_WRITE_"+toString(i)+"_NUM_REG)) or");
     328        }
     329      vhdl->set_body(2,"false else");
     330      vhdl->set_body(1,"internal_DATA_RC_VAL or (internal_READ_RC_VAL and in_SPR_READ_0_ACK and in_SPR_READ_0_DATA_VAL);");
     331    }
     332   
     333    vhdl->set_body(0,"");
     334    vhdl->set_body(0,"-- data_rx - data read");
     335    {
     336      vhdl->set_body(0,"");
     337      vhdl->set_body(0,"internal_NEXT_DATA_RA <=");
    338338#ifdef SYSTEMC_VHDL_COMPATIBILITY
    339       vhdl->set_body("\t"+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RA='0' else");
     339      vhdl->set_body(1,""+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RA='0' else");
    340340#endif
    341341      // bypass
    342       vhdl->set_body("\t\t-- check bypass");
     342      vhdl->set_body(2,"-- check bypass");
    343343      for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
    344344        {
     
    350350            cmp = "";
    351351         
    352           vhdl->set_body("\tin_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else");
    353         }
    354       vhdl->set_body("\treg_DATA_RA when (internal_DATA_RA_VAL='1') else");
    355       vhdl->set_body("\tin_GPR_READ_0_DATA;");
    356     }
    357     {
    358       vhdl->set_body("");
    359       vhdl->set_body("internal_NEXT_DATA_RB <=");
     352          vhdl->set_body(1,"in_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RA=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else");
     353        }
     354      vhdl->set_body(1,"reg_DATA_RA when (internal_DATA_RA_VAL='1') else");
     355      vhdl->set_body(1,"in_GPR_READ_0_DATA;");
     356    }
     357    {
     358      vhdl->set_body(0,"");
     359      vhdl->set_body(0,"internal_NEXT_DATA_RB <=");
    360360#ifdef SYSTEMC_VHDL_COMPATIBILITY
    361       vhdl->set_body("\t"+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RB='0' else");
     361      vhdl->set_body(1,""+std_logic_others(_param->_size_general_data,0)+" when internal_READ_RB='0' else");
    362362#endif
    363363      // bypass
    364       vhdl->set_body("\t\t-- check bypass");
     364      vhdl->set_body(2,"-- check bypass");
    365365      for (int32_t i=_param->_nb_gpr_write-1; i>=0 ; i--)
    366366        {
     
    372372            cmp = "";
    373373         
    374           vhdl->set_body("\tin_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else");
    375         }
    376       vhdl->set_body("\treg_DATA_RB when (internal_DATA_RB_VAL='1') else");
    377       vhdl->set_body("\tin_GPR_READ_1_DATA;");
    378     }
    379     {
    380       vhdl->set_body("");
    381       vhdl->set_body("internal_NEXT_DATA_RC <=");
     374          vhdl->set_body(1,"in_GPR_WRITE_"+toString(i)+"_DATA when ((in_GPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (internal_NUM_REG_RB=in_GPR_WRITE_"+toString(i)+"_NUM_REG)) else");
     375        }
     376      vhdl->set_body(1,"reg_DATA_RB when (internal_DATA_RB_VAL='1') else");
     377      vhdl->set_body(1,"in_GPR_READ_1_DATA;");
     378    }
     379    {
     380      vhdl->set_body(0,"");
     381      vhdl->set_body(0,"internal_NEXT_DATA_RC <=");
    382382#ifdef SYSTEMC_VHDL_COMPATIBILITY
    383       vhdl->set_body("\t"+std_logic_others(_param->_size_special_data,0)+" when internal_READ_RC='0' else");
     383      vhdl->set_body(1,""+std_logic_others(_param->_size_special_data,0)+" when internal_READ_RC='0' else");
    384384#endif
    385385      // bypass
    386       vhdl->set_body("\t\t-- check bypass");
     386      vhdl->set_body(2,"-- check bypass");
    387387      for (int32_t i=_param->_nb_spr_write-1; i>=0 ; i--)
    388388        {
     
    394394            cmp = "";
    395395         
    396           vhdl->set_body("\tin_SPR_WRITE_"+toString(i)+"_DATA when ((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (in_SPR_WRITE_"+toString(i)+"_NUM_REG=internal_NUM_REG_RC)) else");
    397         }
    398       vhdl->set_body("\treg_DATA_RC when (internal_DATA_RC_VAL='1') else");
    399       vhdl->set_body("\tin_SPR_READ_0_DATA;");
    400 
    401     vhdl->set_body("");
    402     vhdl->set_body("-----------------------------------");
    403     vhdl->set_body("-- transition");
    404     vhdl->set_body("-----------------------------------");
    405     vhdl->set_body("");
    406     vhdl->set_body("-- need a new head if :");
    407     vhdl->set_body("--   * queue is empty");
    408     vhdl->set_body("--   * pop with queue");
    409     vhdl->set_body ("internal_NEXT_NEED_NEW_HEAD <= not internal_QUEUE_RETIRE_VAL or (internal_QUEUE_RETIRE_VAL and internal_QUEUE_RETIRE_ACK);");
    410 
    411     vhdl->set_body ("internal_READ_RA_VAL   <=     internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_READ_RA_VAL;");
    412     vhdl->set_body ("internal_READ_RB_VAL   <=     internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_READ_RB_VAL;");
    413     vhdl->set_body ("internal_READ_RC_VAL   <=     internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_READ_RC_VAL;");
    414     vhdl->set_body ("internal_DATA_RA_VAL   <= not internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_DATA_RA_VAL;");
    415     vhdl->set_body ("internal_DATA_RB_VAL   <= not internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_DATA_RB_VAL;");
    416     vhdl->set_body ("internal_DATA_RC_VAL   <= not internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_DATA_RC_VAL;");
    417 
    418 
    419     vhdl->set_body ("");
    420     vhdl->set_body ("transition: process (in_CLOCK)");
    421     vhdl->set_body ("begin  -- process transition");
    422     vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
    423     vhdl->set_body ("");
    424     vhdl->set_body ("\t\tif (in_NRESET = '0') then");   
    425     vhdl->set_body ("\t\t\treg_NEED_NEW_HEAD <= '1';");
    426     vhdl->set_body ("\t\telse");
    427     vhdl->set_body ("\t\t\treg_NEED_NEW_HEAD <= internal_NEXT_NEED_NEW_HEAD;");
    428     vhdl->set_body ("\t\t\treg_READ_RA_VAL   <= internal_NEXT_READ_RA_VAL;");
    429     vhdl->set_body ("\t\t\treg_READ_RB_VAL   <= internal_NEXT_READ_RB_VAL;");
    430     vhdl->set_body ("\t\t\treg_READ_RC_VAL   <= internal_NEXT_READ_RC_VAL;");
    431     vhdl->set_body ("\t\t\treg_DATA_RA_VAL   <= internal_NEXT_DATA_RA_VAL;");
    432     vhdl->set_body ("\t\t\treg_DATA_RB_VAL   <= internal_NEXT_DATA_RB_VAL;");
    433     vhdl->set_body ("\t\t\treg_DATA_RC_VAL   <= internal_NEXT_DATA_RC_VAL;");
    434     vhdl->set_body ("\t\t\treg_DATA_RA       <= internal_NEXT_DATA_RA    ;");
    435     vhdl->set_body ("\t\t\treg_DATA_RB       <= internal_NEXT_DATA_RB    ;");
    436     vhdl->set_body ("\t\t\treg_DATA_RC       <= internal_NEXT_DATA_RC    ;");
    437 
    438     vhdl->set_body ("\t\tend if;");
    439     vhdl->set_body ("");
    440     vhdl->set_body ("\tend if;");
    441     vhdl->set_body ("end process transition;");
     396          vhdl->set_body(1,"in_SPR_WRITE_"+toString(i)+"_DATA when ((in_SPR_WRITE_"+toString(i)+"_VAL='1') "+cmp+"and (in_SPR_WRITE_"+toString(i)+"_NUM_REG=internal_NUM_REG_RC)) else");
     397        }
     398      vhdl->set_body(1,"reg_DATA_RC when (internal_DATA_RC_VAL='1') else");
     399      vhdl->set_body(1,"in_SPR_READ_0_DATA;");
     400
     401    vhdl->set_body(0,"");
     402    vhdl->set_body(0,"-----------------------------------");
     403    vhdl->set_body(0,"-- transition");
     404    vhdl->set_body(0,"-----------------------------------");
     405    vhdl->set_body(0,"");
     406    vhdl->set_body(0,"-- need a new head if :");
     407    vhdl->set_body(0,"--   * queue is empty");
     408    vhdl->set_body(0,"--   * pop with queue");
     409    vhdl->set_body(0,"internal_NEXT_NEED_NEW_HEAD <= not internal_QUEUE_RETIRE_VAL or (internal_QUEUE_RETIRE_VAL and internal_QUEUE_RETIRE_ACK);");
     410
     411    vhdl->set_body(0,"internal_READ_RA_VAL   <=     internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_READ_RA_VAL;");
     412    vhdl->set_body(0,"internal_READ_RB_VAL   <=     internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_READ_RB_VAL;");
     413    vhdl->set_body(0,"internal_READ_RC_VAL   <=     internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_READ_RC_VAL;");
     414    vhdl->set_body(0,"internal_DATA_RA_VAL   <= not internal_READ_RA when reg_NEED_NEW_HEAD='1' else reg_DATA_RA_VAL;");
     415    vhdl->set_body(0,"internal_DATA_RB_VAL   <= not internal_READ_RB when reg_NEED_NEW_HEAD='1' else reg_DATA_RB_VAL;");
     416    vhdl->set_body(0,"internal_DATA_RC_VAL   <= not internal_READ_RC when reg_NEED_NEW_HEAD='1' else reg_DATA_RC_VAL;");
     417
     418
     419    vhdl->set_body(0,"");
     420    vhdl->set_body(0,"transition: process (in_CLOCK)");
     421    vhdl->set_body(0,"begin  -- process transition");
     422    vhdl->set_body(1,"if in_CLOCK'event and in_CLOCK = '1' then");
     423    vhdl->set_body(0,"");
     424    vhdl->set_body(2,"if (in_NRESET = '0') then");   
     425    vhdl->set_body(3,"reg_NEED_NEW_HEAD <= '1';");
     426    vhdl->set_body(2,"else");
     427    vhdl->set_body(3,"reg_NEED_NEW_HEAD <= internal_NEXT_NEED_NEW_HEAD;");
     428    vhdl->set_body(3,"reg_READ_RA_VAL   <= internal_NEXT_READ_RA_VAL;");
     429    vhdl->set_body(3,"reg_READ_RB_VAL   <= internal_NEXT_READ_RB_VAL;");
     430    vhdl->set_body(3,"reg_READ_RC_VAL   <= internal_NEXT_READ_RC_VAL;");
     431    vhdl->set_body(3,"reg_DATA_RA_VAL   <= internal_NEXT_DATA_RA_VAL;");
     432    vhdl->set_body(3,"reg_DATA_RB_VAL   <= internal_NEXT_DATA_RB_VAL;");
     433    vhdl->set_body(3,"reg_DATA_RC_VAL   <= internal_NEXT_DATA_RC_VAL;");
     434    vhdl->set_body(3,"reg_DATA_RA       <= internal_NEXT_DATA_RA    ;");
     435    vhdl->set_body(3,"reg_DATA_RB       <= internal_NEXT_DATA_RB    ;");
     436    vhdl->set_body(3,"reg_DATA_RC       <= internal_NEXT_DATA_RC    ;");
     437
     438    vhdl->set_body(2,"end if;");
     439    vhdl->set_body(0,"");
     440    vhdl->set_body(1,"end if;");
     441    vhdl->set_body(0,"end process transition;");
    442442
    443443    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_declaration.cpp

    r81 r97  
    8787        min = max+1;
    8888      }
    89     if(_param->_have_port_rob_id   )
     89    if(_param->_have_port_rob_ptr)
    9090      {
    91         size = _param->_size_rob_id;
     91        size = _param->_size_rob_ptr;
    9292        max = min-1+size;
    93         vhdl->set_alias ("internal_ROB_ID               ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     93        vhdl->set_alias ("internal_ROB_ID               ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
    9494        min = max+1;
    9595      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp

    r88 r97  
    66 * Test
    77 */
    8 #define NB_ITERATION  2
     8#define NB_ITERATION  1
    99#define CYCLE_MAX     (2048*NB_ITERATION)
    1010
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp

    r88 r97  
    231231         in_BYPASS_WRITE_GPR_DATA      [i] = interface->set_signal_in  <Tgeneral_data_t   > ("gpr_data"      ,_param->_size_general_data);
    232232         in_BYPASS_WRITE_SPR_VAL       [i] = interface->set_signal_valack_in ("spr_val",VAL);               
    233          in_BYPASS_WRITE_SPR_NUM_REG   [i] = interface->set_signal_in  <Tspecial_address_t> ("spr_num_reg"   ,_param->_size_general_register);
    234          in_BYPASS_WRITE_SPR_DATA      [i] = interface->set_signal_in  <Tspecial_data_t   > ("spr_data"      ,_param->_size_general_data);
     233         in_BYPASS_WRITE_SPR_NUM_REG   [i] = interface->set_signal_in  <Tspecial_address_t> ("spr_num_reg"   ,_param->_size_special_register);
     234         in_BYPASS_WRITE_SPR_DATA      [i] = interface->set_signal_in  <Tspecial_data_t   > ("spr_data"      ,_param->_size_special_data);
    235235      }
    236236
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp

    r88 r97  
    5050                   _queue[it_dump]._write_re             ,              \
    5151                   _queue[it_dump]._num_reg_re           ,              \
    52                    toString_type(_queue[it_dump]._type).c_str());       \
     52                   toString(_queue[it_dump]._type).c_str());       \
    5353    } while (0)
    5454#else
     
    8484                   _queue[(*_queue_control)[it_dump]]._write_re             , \
    8585                   _queue[(*_queue_control)[it_dump]]._num_reg_re           , \
    86                    toString_type(_queue[(*_queue_control)[it_dump]]._type).c_str());       \
     86                   toString(_queue[(*_queue_control)[it_dump]]._type).c_str());       \
    8787    } while (0)
    8888#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp

    r81 r97  
    8888        if (_param->_have_port_ooo_engine_id)                       
    8989        vhdl->set_body ("out_RETIRE_"+toString(i)+"_OOO_ENGINE_ID   <= reg_OOO_ENGINE_ID"+range_retire+";");
    90         if (_param->_have_port_rob_id)                             
     90        if (_param->_have_port_rob_ptr)                             
    9191        vhdl->set_body ("out_RETIRE_"+toString(i)+"_ROB_ID          <= reg_ROB_ID       "+range_retire+";");
    9292        vhdl->set_body ("out_RETIRE_"+toString(i)+"_OPERATION       <= reg_OPERATION    "+range_retire+";");
     
    268268    if (_param->_have_port_ooo_engine_id)
    269269    vhdl->set_body ("\t\t\t\treg_OOO_ENGINE_ID "+range_insert+" <= in_INSERT_OOO_ENGINE_ID;");
    270     if (_param->_have_port_rob_id)
     270    if (_param->_have_port_rob_ptr)
    271271    vhdl->set_body ("\t\t\t\treg_ROB_ID        "+range_insert+" <= in_INSERT_ROB_ID       ;");
    272272    vhdl->set_body ("\t\t\t\treg_OPERATION     "+range_insert+" <= in_INSERT_OPERATION    ;");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_declaration.cpp

    r81 r97  
    3232    if (_param->_have_port_ooo_engine_id)         
    3333    vhdl->set_type ("Tooo_engine_id  ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_ooo_engine_id));
    34     if (_param->_have_port_rob_id)               
    35     vhdl->set_type ("Trob_id         ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_rob_id));
     34    if (_param->_have_port_rob_ptr)               
     35    vhdl->set_type ("Trob_id         ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_rob_ptr));
    3636    vhdl->set_type ("Toperation      ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_operation));
    3737    vhdl->set_type ("Ttype           ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_type));
     
    4848    if (_param->_have_port_ooo_engine_id)         
    4949    vhdl->set_signal("reg_OOO_ENGINE_ID           ","Tooo_engine_id");
    50     if (_param->_have_port_rob_id)               
     50    if (_param->_have_port_rob_ptr)               
    5151    vhdl->set_signal("reg_ROB_ID                  ","Trob_id");
    5252    vhdl->set_signal("reg_OPERATION               ","Toperation");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp

    r88 r97  
    11/*
    2  * $Id$
     2 * $id: Read_unit_allocation.cpp 88 2008-12-10 18:31:39Z rosiere $
    33 *
    44 * [ Description ]
     
    115115       ALLOC1_VALACK_IN    ( in_GPR_READ_ACK,ACK);
    116116       ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
    117        ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
    118        ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_register);
     117       ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     118       ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
    119119       ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
    120120     }
     
    127127       ALLOC1_VALACK_IN    ( in_SPR_READ_ACK,ACK);
    128128       ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
    129        ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_data    );
    130        ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_register);
     129       ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
     130       ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data    );
    131131       ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL     ,"data_val"     ,Tcontrol_t        ,1);
    132132     }
     
    138138       ALLOC1_VALACK_IN    ( in_GPR_WRITE_VAL,VAL);
    139139       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
    140        ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
    141        ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_register);
     140       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     141       ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data);
    142142     }
    143143
     
    148148       ALLOC1_VALACK_IN    ( in_SPR_WRITE_VAL,VAL);
    149149       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
    150        ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_data    );
    151        ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_register);
     150       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_register);
     151       ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA         ,"data"         ,Tspecial_data_t   ,_param->_size_special_data);
    152152     }
    153153
     
    158158       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
    159159       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL      ,"gpr_val"      ,Tcontrol_t        ,1);
    160        ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_data    );
    161        ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_register);
     160       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG  ,"gpr_num_reg"  ,Tgeneral_address_t,_param->_size_general_register);
     161       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA     ,"gpr_data"     ,Tgeneral_data_t   ,_param->_size_general_data    );
    162162       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL      ,"spr_val"      ,Tcontrol_t        ,1);
    163        ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_data    );
    164        ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_register);
     163       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG  ,"spr_num_reg"  ,Tspecial_address_t,_param->_size_special_register);
     164       ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA     ,"spr_data"     ,Tspecial_data_t   ,_param->_size_special_data    );
    165165     }
    166166
     
    171171       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL          ,"val"          ,Tcontrol_t        ,1);
    172172       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
    173        ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
    174        ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_register);
     173       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_register);
     174       ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data    );
    175175     }
    176176
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/test.cpp

    r96 r97  
    123123  ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_EXCEPTION     ," in_EXECUTE_QUEUE_IN_EXCEPTION"     , Texception_t      );
    124124  ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
    125   ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_ADDRESS       ," in_EXECUTE_QUEUE_IN_ADDRESS"       , Tgeneral_data_t   );
     125  ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_ADDRESS       ," in_EXECUTE_QUEUE_IN_ADDRESS"       , Taddress_t        );
    126126  ALLOC_SC_SIGNAL ( in_EXECUTE_QUEUE_IN_DATA          ," in_EXECUTE_QUEUE_IN_DATA"          , Tgeneral_data_t   );
    127127  ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_VAL          ,"out_EXECUTE_QUEUE_OUT_VAL"          , Tcontrol_t        );
     
    136136  ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"out_EXECUTE_QUEUE_OUT_EXCEPTION"    , Texception_t      );
    137137  ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
    138   ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_ADDRESS      ,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , Tgeneral_data_t   );
     138  ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_ADDRESS      ,"out_EXECUTE_QUEUE_OUT_ADDRESS"      , Taddress_t        );
    139139  ALLOC_SC_SIGNAL (out_EXECUTE_QUEUE_OUT_DATA         ,"out_EXECUTE_QUEUE_OUT_DATA"         , Tgeneral_data_t   );
    140140
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h

    r88 r97  
    7878  public    : SC_IN (Texception_t      )    *  in_EXECUTE_QUEUE_IN_EXCEPTION     ;
    7979  public    : SC_IN (Tcontrol_t        )    *  in_EXECUTE_QUEUE_IN_NO_SEQUENCE   ;
    80   public    : SC_IN (Tgeneral_data_t   )    *  in_EXECUTE_QUEUE_IN_ADDRESS       ;
     80  public    : SC_IN (Taddress_t        )    *  in_EXECUTE_QUEUE_IN_ADDRESS       ;
    8181  public    : SC_IN (Tgeneral_data_t   )    *  in_EXECUTE_QUEUE_IN_DATA          ;
    8282
     
    9393  public    : SC_OUT(Texception_t      )    * out_EXECUTE_QUEUE_OUT_EXCEPTION    ;
    9494  public    : SC_OUT(Tcontrol_t        )    * out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ;
    95   public    : SC_OUT(Tgeneral_data_t   )    * out_EXECUTE_QUEUE_OUT_ADDRESS      ;
     95  public    : SC_OUT(Taddress_t        )    * out_EXECUTE_QUEUE_OUT_ADDRESS      ;
    9696  public    : SC_OUT(Tgeneral_data_t   )    * out_EXECUTE_QUEUE_OUT_DATA         ;
    9797
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp

    r88 r97  
    6767       ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    6868       ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
    69        ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data     );
     69       ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
    7070       ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA         ,"data"         ,Tgeneral_data_t   ,_param->_size_general_data     );
    7171     }
     
    9090       ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
    9191       ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
    92        ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_general_data );
     92       ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    9393       ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
    9494     }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp

    r96 r97  
    4141    if (is_toplevel)
    4242      {
     43        _size_instruction_address= size_general_data-2;
    4344        _size_context_id         = log2(_nb_context   );
    4445        _size_front_end_id       = log2(_nb_front_end );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp

    r88 r97  
    2222  public  : Tpacket_t          _packet_id    ;
    2323//public  : Toperation_t       _operation    ;
    24   public  : Ttype_t            _type         ;
     24//public  : Ttype_t            _type         ;
    2525  public  : Tcontrol_t         _write_rd     ;
    2626  public  : Tgeneral_address_t _num_reg_rd   ;
     
    3737                     Tcontext_t         ooo_engine_id,
    3838                     Tpacket_t          packet_id    ,
    39                      //Toperation_t       operation    ,
    40                      Ttype_t            type         ,
     39//                   Toperation_t       operation    ,
     40//                   Ttype_t            type         ,
    4141                     Tcontrol_t         write_rd     ,
    4242                     Tgeneral_address_t num_reg_rd   ,
     
    5353      _ooo_engine_id = ooo_engine_id;
    5454      _packet_id     = packet_id    ;
    55     //_operation     = operation    ;
    56       _type          = type         ;
     55//    _operation     = operation    ;
     56//    _type          = type         ;
    5757      _write_rd      = write_rd     ;
    5858      _num_reg_rd    = num_reg_rd   ;
     
    7474                    << " * _packet_id     : " << toString(x._packet_id    ) << std::endl
    7575                  //<< " * _operation     : " << toString(x._operation    ) << std::endl
    76                     << " * _type          : " << toString(x._type         ) << std::endl
     76                  //<< " * _type          : " << toString(x._type         ) << std::endl
    7777                    << " * _write_rd      : " << toString(x._write_rd     ) << std::endl
    7878                    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << std::endl
     
    133133  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_PACKET_ID     ," in_WRITE_UNIT_IN_PACKET_ID"     , Tpacket_t         );
    134134//ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_OPERATION     ," in_WRITE_UNIT_IN_OPERATION"     , Toperation_t      );
    135   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_TYPE          ," in_WRITE_UNIT_IN_TYPE"          , Ttype_t           );
     135//ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_TYPE          ," in_WRITE_UNIT_IN_TYPE"          , Ttype_t           );
    136136  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_WRITE_RD      ," in_WRITE_UNIT_IN_WRITE_RD"      , Tcontrol_t        );
    137137  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_NUM_REG_RD    ," in_WRITE_UNIT_IN_NUM_REG_RD"    , Tgeneral_address_t);
     
    142142  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_EXCEPTION     ," in_WRITE_UNIT_IN_EXCEPTION"     , Texception_t      );
    143143  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_NO_SEQUENCE   ," in_WRITE_UNIT_IN_NO_SEQUENCE"   , Tcontrol_t        );
    144   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_ADDRESS       ," in_WRITE_UNIT_IN_ADDRESS"       , Tgeneral_data_t   );
     144  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_ADDRESS       ," in_WRITE_UNIT_IN_ADDRESS"       , Taddress_t        );
    145145  ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_VAL          ,"out_WRITE_UNIT_OUT_VAL"          , Tcontrol_t        );
    146146  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_OUT_ACK          ," in_WRITE_UNIT_OUT_ACK"          , Tcontrol_t        );
     
    154154  ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_EXCEPTION    ,"out_WRITE_UNIT_OUT_EXCEPTION"    , Texception_t      );
    155155  ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"out_WRITE_UNIT_OUT_NO_SEQUENCE"  , Tcontrol_t        );
    156   ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_ADDRESS      ,"out_WRITE_UNIT_OUT_ADDRESS"      , Tgeneral_data_t   );
     156  ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_ADDRESS      ,"out_WRITE_UNIT_OUT_ADDRESS"      , Taddress_t        );
    157157  ALLOC_SC_SIGNAL (out_WRITE_UNIT_OUT_DATA         ,"out_WRITE_UNIT_OUT_DATA"         , Tgeneral_data_t   );
    158158  ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL                ,"out_GPR_WRITE_VAL"                , Tcontrol_t        , _param->_nb_gpr_write);
     
    195195  INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_PACKET_ID     );
    196196//INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_OPERATION     );
    197   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_TYPE          );
     197//INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_TYPE          );
    198198  INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_WRITE_RD      );
    199199  INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_NUM_REG_RD    );
     
    309309                                     i,
    310310                                   //range<Toperation_t      >(rand(),_param->_size_operation       ),
    311                                      range<Ttype_t           >(rand(),_param->_size_type            ),
     311                                   //range<Ttype_t           >(rand(),_param->_size_type            ),
    312312                                     range<Tcontrol_t        >(rand(),1                             ),
    313313                                     range<Tgeneral_address_t>(rand(),_param->_size_general_register),
     
    316316                                     range<Tspecial_address_t>(rand(),_param->_size_special_register),
    317317                                     range<Tspecial_data_t   >(rand(),_param->_size_special_data    ),
    318                                      range<Texception_t      >(rand(),_param->_size_exception       ),
     318                                     range<Texception_t      >(rand(),0                             ),
    319319                                     range<Tcontrol_t        >(rand(),1                             ),
    320320                                     range<Tgeneral_data_t   >(rand(),_param->_size_general_data    ));
     
    341341            in_WRITE_UNIT_IN_PACKET_ID    ->write(request [nb_request_in]->_packet_id    );
    342342          //in_WRITE_UNIT_IN_OPERATION    ->write(request [nb_request_in]->_operation    );
    343             in_WRITE_UNIT_IN_TYPE         ->write(request [nb_request_in]->_type         );
     343          //in_WRITE_UNIT_IN_TYPE         ->write(request [nb_request_in]->_type         );
    344344            in_WRITE_UNIT_IN_WRITE_RD     ->write(request [nb_request_in]->_write_rd     );
    345345            in_WRITE_UNIT_IN_NUM_REG_RD   ->write(request [nb_request_in]->_num_reg_rd   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp

    r88 r97  
    2222  public  : Tpacket_t          _packet_id    ;
    2323//public  : Toperation_t       _operation    ;
    24   public  : Ttype_t            _type         ;
     24//public  : Ttype_t            _type         ;
    2525  public  : Tcontrol_t         _write_rd     ;
    2626  public  : Tgeneral_address_t _num_reg_rd   ;
     
    3737                     Tcontext_t         ooo_engine_id,
    3838                     Tpacket_t          packet_id    ,
    39                      //Toperation_t       operation    ,
    40                      Ttype_t            type         ,
     39//                   Toperation_t       operation    ,
     40//                   Ttype_t            type         ,
    4141                     Tcontrol_t         write_rd     ,
    4242                     Tgeneral_address_t num_reg_rd   ,
     
    5454      _packet_id     = packet_id    ;
    5555    //_operation     = operation    ;
    56       _type          = type         ;
     56    //_type          = type         ;
    5757      _write_rd      = write_rd     ;
    5858      _num_reg_rd    = num_reg_rd   ;
     
    7474                    << " * _packet_id     : " << toString(x._packet_id    ) << std::endl
    7575                  //<< " * _operation     : " << toString(x._operation    ) << std::endl
    76                     << " * _type          : " << toString(x._type         ) << std::endl
     76                  //<< " * _type          : " << toString(x._type         ) << std::endl
    7777                    << " * _write_rd      : " << toString(x._write_rd     ) << std::endl
    7878                    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << std::endl
     
    132132  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_PACKET_ID     ," in_WRITE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
    133133//ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_OPERATION     ," in_WRITE_QUEUE_IN_OPERATION"     , Toperation_t      );
    134   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
     134//ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
    135135  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_WRITE_RD      ," in_WRITE_QUEUE_IN_WRITE_RD"      , Tcontrol_t        );
    136136  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NUM_REG_RD    ," in_WRITE_QUEUE_IN_NUM_REG_RD"    , Tgeneral_address_t);
     
    141141  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_EXCEPTION     ," in_WRITE_QUEUE_IN_EXCEPTION"     , Texception_t      );
    142142  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NO_SEQUENCE   ," in_WRITE_QUEUE_IN_NO_SEQUENCE"   , Tcontrol_t        );
    143   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_ADDRESS       ," in_WRITE_QUEUE_IN_ADDRESS"       , Tgeneral_data_t   );
     143  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_ADDRESS       ," in_WRITE_QUEUE_IN_ADDRESS"       , Taddress_t        );
    144144  ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_VAL          ,"out_WRITE_QUEUE_OUT_VAL"          , Tcontrol_t        );
    145145  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_OUT_ACK          ," in_WRITE_QUEUE_OUT_ACK"          , Tcontrol_t        );
     
    154154  ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE"  , Tcontrol_t        );
    155155  ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_ADDRESS      ,"out_WRITE_QUEUE_OUT_ADDRESS"      , Tgeneral_data_t   );
    156   ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_DATA         ,"out_WRITE_QUEUE_OUT_DATA"         , Tgeneral_data_t   );
     156  ALLOC_SC_SIGNAL (out_WRITE_QUEUE_OUT_DATA         ,"out_WRITE_QUEUE_OUT_DATA"         , Taddress_t        );
    157157  ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL                ,"out_GPR_WRITE_VAL"                , Tcontrol_t        , _param->_nb_gpr_write);
    158158  ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK                ," in_GPR_WRITE_ACK"                , Tcontrol_t        , _param->_nb_gpr_write);
     
    193193  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_PACKET_ID     );
    194194//INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_OPERATION     );
    195   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
     195//INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
    196196  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RD      );
    197197  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RD    );
     
    307307                                     i,
    308308                                   //range<Toperation_t      >(rand(),_param->_size_operation       ),
    309                                      range<Ttype_t           >(rand(),_param->_size_type            ),
     309                                   //range<Ttype_t           >(rand(),_param->_size_type            ),
    310310                                     range<Tcontrol_t        >(rand(),1                             ),
    311311                                     range<Tgeneral_address_t>(rand(),_param->_size_general_register),
     
    314314                                     range<Tspecial_address_t>(rand(),_param->_size_special_register),
    315315                                     range<Tspecial_data_t   >(rand(),_param->_size_special_data    ),
    316                                      range<Texception_t      >(rand(),_param->_size_exception       ),
     316                                     range<Texception_t      >(rand(),0                             ),
    317317                                     range<Tcontrol_t        >(rand(),1                             ),
    318318                                     range<Tgeneral_data_t   >(rand(),_param->_size_general_data    ));
     
    339339            in_WRITE_QUEUE_IN_PACKET_ID    ->write(request [nb_request_in]->_packet_id    );
    340340          //in_WRITE_QUEUE_IN_OPERATION    ->write(request [nb_request_in]->_operation    );
    341             in_WRITE_QUEUE_IN_TYPE         ->write(request [nb_request_in]->_type         );
     341          //in_WRITE_QUEUE_IN_TYPE         ->write(request [nb_request_in]->_type         );
    342342            in_WRITE_QUEUE_IN_WRITE_RD     ->write(request [nb_request_in]->_write_rd     );
    343343            in_WRITE_QUEUE_IN_NUM_REG_RD   ->write(request [nb_request_in]->_num_reg_rd   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Types.h

    r82 r97  
    2727  public  : Tpacket_t          _packet_id    ;
    2828//public  : Toperation_t       _operation    ;
    29   public  : Ttype_t            _type         ;
     29//public  : Ttype_t            _type         ;
    3030  public  : Tcontrol_t         _write_rd     ;
    3131  public  : Tgeneral_address_t _num_reg_rd   ;
     
    4242                                 Tcontext_t         ooo_engine_id,
    4343                                 Tpacket_t          packet_id    ,
    44                                //Toperation_t       operation    ,
    45                                  Ttype_t            type         ,
     44//                               Toperation_t       operation    ,
     45//                               Ttype_t            type         ,
    4646                                 Tcontrol_t         write_rd     ,
    4747                                 Tgeneral_address_t num_reg_rd   ,
     
    5959      _packet_id     = packet_id    ;
    6060    //_operation     = operation    ;
    61       _type          = type         ;
     61    //_type          = type         ;
    6262      _write_rd      = write_rd     ;
    6363      _num_reg_rd    = num_reg_rd   ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h

    r88 r97  
    7676  public    : SC_IN (Tpacket_t         )    *  in_WRITE_QUEUE_IN_PACKET_ID    ;
    7777//public    : SC_IN (Toperation_t      )    *  in_WRITE_QUEUE_IN_OPERATION    ;
    78   public    : SC_IN (Ttype_t           )    *  in_WRITE_QUEUE_IN_TYPE         ;
     78//public    : SC_IN (Ttype_t           )    *  in_WRITE_QUEUE_IN_TYPE         ;
    7979  public    : SC_IN (Tcontrol_t        )    *  in_WRITE_QUEUE_IN_WRITE_RD     ;
    8080  public    : SC_IN (Tgeneral_address_t)    *  in_WRITE_QUEUE_IN_NUM_REG_RD   ;
     
    8585  public    : SC_IN (Texception_t      )    *  in_WRITE_QUEUE_IN_EXCEPTION    ;
    8686  public    : SC_IN (Tcontrol_t        )    *  in_WRITE_QUEUE_IN_NO_SEQUENCE  ;
    87   public    : SC_IN (Tgeneral_data_t   )    *  in_WRITE_QUEUE_IN_ADDRESS      ;
     87  public    : SC_IN (Taddress_t        )    *  in_WRITE_QUEUE_IN_ADDRESS      ;
    8888
    8989    // -----[ Interface "Write_queue_out" ]-------------------------------   
     
    9999  public    : SC_OUT(Texception_t      )    * out_WRITE_QUEUE_OUT_EXCEPTION    ;
    100100  public    : SC_OUT(Tcontrol_t        )    * out_WRITE_QUEUE_OUT_NO_SEQUENCE  ;
    101   public    : SC_OUT(Tgeneral_data_t   )    * out_WRITE_QUEUE_OUT_ADDRESS      ;
     101  public    : SC_OUT(Taddress_t        )    * out_WRITE_QUEUE_OUT_ADDRESS      ;
    102102  public    : SC_OUT(Tgeneral_data_t   )    * out_WRITE_QUEUE_OUT_DATA         ;
    103103
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp

    r88 r97  
    5050    if (is_toplevel)
    5151      {
     52        _size_instruction_address= size_general_data-2;
    5253        _size_context_id         = log2(_nb_context         );
    5354        _size_front_end_id       = log2(_nb_front_end       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp

    r88 r97  
    6060       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
    6161//     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
    62        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
     62//     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
    6363       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
    6464       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
     
    6969       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    7070       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
    71        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data     );
     71       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
    7272     }
    7373
     
    8787       ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
    8888       ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
    89        ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_general_data );
     89       ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    9090       ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
    9191     }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp

    r88 r97  
    4141        delete      in_WRITE_QUEUE_IN_PACKET_ID    ;
    4242//      delete      in_WRITE_QUEUE_IN_OPERATION    ;
    43         delete      in_WRITE_QUEUE_IN_TYPE         ;
     43//      delete      in_WRITE_QUEUE_IN_TYPE         ;
    4444        delete      in_WRITE_QUEUE_IN_WRITE_RD     ;
    4545        delete      in_WRITE_QUEUE_IN_NUM_REG_RD   ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp

    r88 r97  
    5353               (_param->_have_port_rob_ptr      )?PORT_READ(in_WRITE_QUEUE_IN_PACKET_ID    ):0,
    5454             //PORT_READ(in_WRITE_QUEUE_IN_OPERATION    ),
    55                PORT_READ(in_WRITE_QUEUE_IN_TYPE         ),
     55             //PORT_READ(in_WRITE_QUEUE_IN_TYPE         ),
    5656               PORT_READ(in_WRITE_QUEUE_IN_WRITE_RD     ),
    5757               PORT_READ(in_WRITE_QUEUE_IN_NUM_REG_RD   ),
     
    7272        if ( (internal_WRITE_QUEUE_OUT_VAL and PORT_READ(in_WRITE_QUEUE_OUT_ACK)) or
    7373             ((_queue->empty() == false)                                         and
    74               (_queue->front()->_type      == TYPE_MEMORY)                       and
    75               (_queue->front()->_exception == EXCEPTION_MEMORY_LOAD_SPECULATIVE) and
     74//            (_queue->front()->_type      == TYPE_MEMORY)                       and
     75              (_queue->front()->_exception == EXCEPTION_MEMORY_LOAD_SPECULATIVE) and // this exception code must be uniq
    7676              (_queue->front()->_write_rd  == 0)                                 and
    7777              (_queue->front()->_write_re  == 0)))
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h

    r88 r97  
    7171  public    : SC_IN (Tpacket_t         )    *  in_WRITE_UNIT_IN_PACKET_ID    ;
    7272//public    : SC_IN (Toperation_t      )    *  in_WRITE_UNIT_IN_OPERATION    ;
    73   public    : SC_IN (Ttype_t           )    *  in_WRITE_UNIT_IN_TYPE         ;
     73//public    : SC_IN (Ttype_t           )    *  in_WRITE_UNIT_IN_TYPE         ;
    7474  public    : SC_IN (Tcontrol_t        )    *  in_WRITE_UNIT_IN_WRITE_RD     ;
    7575  public    : SC_IN (Tgeneral_address_t)    *  in_WRITE_UNIT_IN_NUM_REG_RD   ;
     
    8080  public    : SC_IN (Texception_t      )    *  in_WRITE_UNIT_IN_EXCEPTION    ;
    8181  public    : SC_IN (Tcontrol_t        )    *  in_WRITE_UNIT_IN_NO_SEQUENCE  ;
    82   public    : SC_IN (Tgeneral_data_t   )    *  in_WRITE_UNIT_IN_ADDRESS      ;
     82  public    : SC_IN (Taddress_t        )    *  in_WRITE_UNIT_IN_ADDRESS      ;
    8383
    8484    // -----[ Interface "write_unit_out" ]--------------------------------   
     
    9494  public    : SC_OUT(Texception_t      )    * out_WRITE_UNIT_OUT_EXCEPTION    ;
    9595  public    : SC_OUT(Tcontrol_t        )    * out_WRITE_UNIT_OUT_NO_SEQUENCE  ;
    96   public    : SC_OUT(Tgeneral_data_t   )    * out_WRITE_UNIT_OUT_ADDRESS      ;
     96  public    : SC_OUT(Taddress_t        )    * out_WRITE_UNIT_OUT_ADDRESS      ;
    9797  public    : SC_OUT(Tgeneral_data_t   )    * out_WRITE_UNIT_OUT_DATA         ;
    9898
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp

    r88 r97  
    7373    if (is_toplevel)
    7474      {
     75        _size_instruction_address     = size_general_data-2;
    7576        _size_context_id              = log2(_nb_context         );
    7677        _size_front_end_id            = log2(_nb_front_end       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp

    r88 r97  
    6666       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr          );
    6767//     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
    68        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
     68//     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
    6969       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
    7070       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
     
    7575       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception        );
    7676       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                              );
    77        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data     );
     77       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
    7878     }
    7979
     
    9393       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception    );
    9494       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1                          );
    95        ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_general_data );
     95       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    9696       ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data );
    9797     }
     
    206206       _component->port_map(name, "in_WRITE_QUEUE_IN_PACKET_ID"    , _name, "in_WRITE_UNIT_IN_PACKET_ID"    );
    207207     //_component->port_map(name, "in_WRITE_QUEUE_IN_OPERATION"    , _name, "in_WRITE_UNIT_IN_OPERATION"    );
    208        _component->port_map(name, "in_WRITE_QUEUE_IN_TYPE"         , _name, "in_WRITE_UNIT_IN_TYPE"         );
     208     //_component->port_map(name, "in_WRITE_QUEUE_IN_TYPE"         , _name, "in_WRITE_UNIT_IN_TYPE"         );
    209209       _component->port_map(name, "in_WRITE_QUEUE_IN_WRITE_RD"     , _name, "in_WRITE_UNIT_IN_WRITE_RD"     );
    210210       _component->port_map(name, "in_WRITE_QUEUE_IN_NUM_REG_RD"   , _name, "in_WRITE_UNIT_IN_NUM_REG_RD"   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp

    r88 r97  
    4040        delete      in_WRITE_UNIT_IN_PACKET_ID    ;
    4141//      delete      in_WRITE_UNIT_IN_OPERATION    ;
    42         delete      in_WRITE_UNIT_IN_TYPE         ;
     42//      delete      in_WRITE_UNIT_IN_TYPE         ;
    4343        delete      in_WRITE_UNIT_IN_WRITE_RD     ;
    4444        delete      in_WRITE_UNIT_IN_NUM_REG_RD   ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/test.cpp

    r88 r97  
    2020  public : Tpacket_t          _packet_id      ;
    2121//public : Toperation_t       _operation      ;
    22   public : Ttype_t            _type           ;
     22//public : Ttype_t            _type           ;
    2323  public : Tcontrol_t         _write_rd       ;
    2424  public : Tgeneral_address_t _num_reg_rd     ;
     
    3636                  Tpacket_t          packet_id      ,
    3737//                Toperation_t       operation      ,
    38                   Ttype_t            type           ,
     38//                Ttype_t            type           ,
    3939                  Tcontrol_t         write_rd       ,
    4040                  Tgeneral_address_t num_reg_rd     ,
     
    5252    _packet_id      = packet_id    ;
    5353//  _operation      = operation    ;
    54     _type           = type         ;
     54//  _type           = type         ;
    5555    _write_rd       = write_rd     ;
    5656    _num_reg_rd     = num_reg_rd   ;
     
    108108  ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_PACKET_ID    ," in_EXECUTE_UNIT_OUT_PACKET_ID    ",Tpacket_t         ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    109109//ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_OPERATION    ," in_EXECUTE_UNIT_OUT_OPERATION    ",Toperation_t      ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    110   ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ," in_EXECUTE_UNIT_OUT_TYPE         ",Ttype_t           ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     110//ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ," in_EXECUTE_UNIT_OUT_TYPE         ",Ttype_t           ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    111111  ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_WRITE_RD     ," in_EXECUTE_UNIT_OUT_WRITE_RD     ",Tcontrol_t        ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    112112  ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ," in_EXECUTE_UNIT_OUT_NUM_REG_RD   ",Tgeneral_address_t,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     
    117117  ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_EXCEPTION    ," in_EXECUTE_UNIT_OUT_EXCEPTION    ",Texception_t      ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    118118  ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ," in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ",Tcontrol_t        ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    119   ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_ADDRESS      ," in_EXECUTE_UNIT_OUT_ADDRESS      ",Tgeneral_data_t   ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     119  ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_ADDRESS      ," in_EXECUTE_UNIT_OUT_ADDRESS      ",Taddress_t        ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    120120
    121121  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_VAL             ,"out_WRITE_UNIT_IN_VAL             ",Tcontrol_t        ,_param->_nb_write_unit  );
     
    126126  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_PACKET_ID       ,"out_WRITE_UNIT_IN_PACKET_ID       ",Tpacket_t         ,_param->_nb_write_unit  );
    127127//ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_OPERATION       ,"out_WRITE_UNIT_IN_OPERATION       ",Toperation_t      ,_param->_nb_write_unit  );
    128   ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,"out_WRITE_UNIT_IN_TYPE            ",Ttype_t           ,_param->_nb_write_unit  );
     128//ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,"out_WRITE_UNIT_IN_TYPE            ",Ttype_t           ,_param->_nb_write_unit  );
    129129  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_WRITE_RD        ,"out_WRITE_UNIT_IN_WRITE_RD        ",Tcontrol_t        ,_param->_nb_write_unit  );
    130130  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_NUM_REG_RD      ,"out_WRITE_UNIT_IN_NUM_REG_RD      ",Tgeneral_address_t,_param->_nb_write_unit  );
     
    135135  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_EXCEPTION       ,"out_WRITE_UNIT_IN_EXCEPTION       ",Texception_t      ,_param->_nb_write_unit  );
    136136  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_NO_SEQUENCE     ,"out_WRITE_UNIT_IN_NO_SEQUENCE     ",Tcontrol_t        ,_param->_nb_write_unit  );
    137   ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_ADDRESS         ,"out_WRITE_UNIT_IN_ADDRESS         ",Tgeneral_data_t   ,_param->_nb_write_unit  );
     137  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_ADDRESS         ,"out_WRITE_UNIT_IN_ADDRESS         ",Taddress_t        ,_param->_nb_write_unit  );
    138138   
    139139  /********************************************************
     
    157157  INSTANCE2_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_PACKET_ID    ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    158158//INSTANCE2_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_OPERATION    ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    159   INSTANCE2_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     159//INSTANCE2_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    160160  INSTANCE2_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_WRITE_RD     ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    161161  INSTANCE2_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     
    179179  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_PACKET_ID       ,_param->_nb_write_unit  );
    180180//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_OPERATION       ,_param->_nb_write_unit  );
    181   INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
     181//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
    182182  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_WRITE_RD        ,_param->_nb_write_unit  );
    183183  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_NUM_REG_RD      ,_param->_nb_write_unit  );
     
    265265                                               ooo_engine_id,
    266266                                               nb_request_in,
    267                                                //range<Toperation_t      > (rand(), _param->_size_operation       ),
    268                                                range<Ttype_t           > (rand(), _param->_size_type            ),
     267//                                             range<Toperation_t      > (rand(), _param->_size_operation       ),
     268//                                             range<Ttype_t           > (rand(), _param->_size_type            ),
    269269                                               range<Tcontrol_t        > (rand(), 2                             ),
    270270                                               range<Tgeneral_address_t> (rand(), _param->_size_general_register),
     
    299299                    in_EXECUTE_UNIT_OUT_PACKET_ID            [i][j] ->write(request[i][j].front()._packet_id            );
    300300//                  in_EXECUTE_UNIT_OUT_OPERATION            [i][j] ->write(request[i][j].front()._operation            );
    301                     in_EXECUTE_UNIT_OUT_TYPE                 [i][j] ->write(request[i][j].front()._type                 );
     301//                  in_EXECUTE_UNIT_OUT_TYPE                 [i][j] ->write(request[i][j].front()._type                 );
    302302                    in_EXECUTE_UNIT_OUT_WRITE_RD             [i][j] ->write(request[i][j].front()._write_rd             );
    303303                    in_EXECUTE_UNIT_OUT_NUM_REG_RD           [i][j] ->write(request[i][j].front()._num_reg_rd           );
     
    367367                TEST(Tcontext_t        ,out_WRITE_UNIT_IN_OOO_ENGINE_ID        [i]->read(), request[x][y].front()._ooo_engine_id        );
    368368//              TEST(Toperation_t      ,out_WRITE_UNIT_IN_OPERATION            [i]->read(), request[x][y].front()._operation            );
    369                 TEST(Ttype_t           ,out_WRITE_UNIT_IN_TYPE                 [i]->read(), request[x][y].front()._type                 );
     369//              TEST(Ttype_t           ,out_WRITE_UNIT_IN_TYPE                 [i]->read(), request[x][y].front()._type                 );
    370370                TEST(Tcontrol_t        ,out_WRITE_UNIT_IN_WRITE_RD             [i]->read(), request[x][y].front()._write_rd             );
    371371                TEST(Tgeneral_address_t,out_WRITE_UNIT_IN_NUM_REG_RD           [i]->read(), request[x][y].front()._num_reg_rd           );
     
    404404  DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_PACKET_ID    ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    405405//DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_OPERATION    ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    406   DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     406//DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    407407  DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_WRITE_RD     ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
    408408  DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]);
     
    422422  DELETE1_SC_SIGNAL(out_WRITE_UNIT_IN_PACKET_ID       ,_param->_nb_write_unit  );
    423423//DELETE1_SC_SIGNAL(out_WRITE_UNIT_IN_OPERATION       ,_param->_nb_write_unit  );
    424   DELETE1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
     424//DELETE1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
    425425  DELETE1_SC_SIGNAL(out_WRITE_UNIT_IN_WRITE_RD        ,_param->_nb_write_unit  );
    426426  DELETE1_SC_SIGNAL(out_WRITE_UNIT_IN_NUM_REG_RD      ,_param->_nb_write_unit  );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h

    r88 r97  
    7272  public    : SC_IN (Tpacket_t         )  ***  in_EXECUTE_UNIT_OUT_PACKET_ID      ;
    7373//public    : SC_IN (Toperation_t      )  ***  in_EXECUTE_UNIT_OUT_OPERATION      ;
    74   public    : SC_IN (Ttype_t           )  ***  in_EXECUTE_UNIT_OUT_TYPE           ;
     74//public    : SC_IN (Ttype_t           )  ***  in_EXECUTE_UNIT_OUT_TYPE           ;
    7575  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_UNIT_OUT_WRITE_RD       ;
    7676  public    : SC_IN (Tgeneral_address_t)  ***  in_EXECUTE_UNIT_OUT_NUM_REG_RD     ;
     
    8181  public    : SC_IN (Texception_t      )  ***  in_EXECUTE_UNIT_OUT_EXCEPTION      ;
    8282  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_UNIT_OUT_NO_SEQUENCE    ;
    83   public    : SC_IN (Tgeneral_data_t   )  ***  in_EXECUTE_UNIT_OUT_ADDRESS        ;
     83  public    : SC_IN (Taddress_t        )  ***  in_EXECUTE_UNIT_OUT_ADDRESS        ;
    8484
    8585    // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    9191  public    : SC_OUT(Tpacket_t         )   ** out_WRITE_UNIT_IN_PACKET_ID      ;
    9292//public    : SC_OUT(Toperation_t      )   ** out_WRITE_UNIT_IN_OPERATION      ;
    93   public    : SC_OUT(Ttype_t           )   ** out_WRITE_UNIT_IN_TYPE           ;
     93//public    : SC_OUT(Ttype_t           )   ** out_WRITE_UNIT_IN_TYPE           ;
    9494  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_WRITE_RD       ;
    9595  public    : SC_OUT(Tgeneral_address_t)   ** out_WRITE_UNIT_IN_NUM_REG_RD     ;
     
    100100  public    : SC_OUT(Texception_t      )   ** out_WRITE_UNIT_IN_EXCEPTION      ;
    101101  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_NO_SEQUENCE    ;
    102   public    : SC_OUT(Tgeneral_data_t   )   ** out_WRITE_UNIT_IN_ADDRESS        ;
     102  public    : SC_OUT(Taddress_t        )   ** out_WRITE_UNIT_IN_ADDRESS        ;
    103103
    104104    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp

    r88 r97  
    6767       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr         , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    6868     //_ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation       , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    69        _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
     69     //_ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    7070       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                             , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    7171       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
     
    7676       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception       , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    7777       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                             , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    78        _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data    , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
     78       _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);
    7979     }
    8080
     
    9090       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_rob_ptr         );
    9191     //ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation       );
    92        ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
     92     //ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
    9393       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                             );
    9494       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register);
     
    9999       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception       );
    100100       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                             );
    101        ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data    );
     101       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Taddress_t        ,_param->_size_instruction_address);
    102102     }
    103103    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp

    r88 r97  
    3636        DELETE2_SIGNAL( in_EXECUTE_UNIT_OUT_PACKET_ID    , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1],_param->_size_rob_ptr         );
    3737     // DELETE2_SIGNAL( in_EXECUTE_UNIT_OUT_OPERATION    , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1],_param->_size_operation       );
    38        DELETE2_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1],_param->_size_type            );
     38     // DELETE2_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1],_param->_size_type            );
    3939        DELETE2_SIGNAL( in_EXECUTE_UNIT_OUT_WRITE_RD     , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1],1                             );
    4040        DELETE2_SIGNAL( in_EXECUTE_UNIT_OUT_NUM_REG_RD   , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1],_param->_size_general_register);
     
    5454        DELETE1_SIGNAL(out_WRITE_UNIT_IN_PACKET_ID    , _param->_nb_write_unit,_param->_size_rob_ptr         );
    5555     // DELETE1_SIGNAL(out_WRITE_UNIT_IN_OPERATION    , _param->_nb_write_unit,_param->_size_operation       );
    56        DELETE1_SIGNAL(out_WRITE_UNIT_IN_TYPE         , _param->_nb_write_unit,_param->_size_type            );
     56     // DELETE1_SIGNAL(out_WRITE_UNIT_IN_TYPE         , _param->_nb_write_unit,_param->_size_type            );
    5757        DELETE1_SIGNAL(out_WRITE_UNIT_IN_WRITE_RD     , _param->_nb_write_unit,1                             );
    5858        DELETE1_SIGNAL(out_WRITE_UNIT_IN_NUM_REG_RD   , _param->_nb_write_unit,_param->_size_general_register);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_genMealy.cpp

    r88 r97  
    7575                      if (_param->_have_port_rob_ptr  )
    7676                      PORT_WRITE(out_WRITE_UNIT_IN_PACKET_ID             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_PACKET_ID             [i][j]));
    77                   //  PORT_WRITE(out_WRITE_UNIT_IN_OPERATION             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_OPERATION             [i][j]));
    78                       PORT_WRITE(out_WRITE_UNIT_IN_TYPE                  [dest], PORT_READ(in_EXECUTE_UNIT_OUT_TYPE                  [i][j]));
     77//                    PORT_WRITE(out_WRITE_UNIT_IN_OPERATION             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_OPERATION             [i][j]));
     78//                    PORT_WRITE(out_WRITE_UNIT_IN_TYPE                  [dest], PORT_READ(in_EXECUTE_UNIT_OUT_TYPE                  [i][j]));
    7979                      PORT_WRITE(out_WRITE_UNIT_IN_WRITE_RD              [dest], PORT_READ(in_EXECUTE_UNIT_OUT_WRITE_RD              [i][j]));
    8080                      PORT_WRITE(out_WRITE_UNIT_IN_NUM_REG_RD            [dest], PORT_READ(in_EXECUTE_UNIT_OUT_NUM_REG_RD            [i][j]));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp

    r88 r97  
    5858    if (is_toplevel)
    5959      {
     60        _size_instruction_address= size_general_data-2;
    6061        _size_context_id         = log2(nb_context         );
    6162        _size_front_end_id       = log2(nb_front_end       );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp

    r88 r97  
    9595                // Test uniq type
    9696                if (type_present [j][k] and type_uniq[k])
    97                   test.error(toString(_("The execute_unit '%d' can execute operation of type '%s' at the thread '%d'. But an another execute_unit can be execute the same type for the same thread. And the type must be single !.\n"),i,toString_type(k).c_str(),j));
     97                  test.error(toString(_("The execute_unit '%d' can execute operation of type '%s' at the thread '%d'. But an another execute_unit can be execute the same type for the same thread. And the type must be single !.\n"),i,toString(k).c_str(),j));
    9898               
    9999                type_present [j][k] = true;
     
    104104        for (uint32_t i=0; i<_nb_thread; i++)
    105105          if (type_present [i][j])
    106             test.error(toString(_("The thread '%d' can execute the type's operation '%s' but this type is invalid.\n"),i,toString_type(j).c_str()));
     106            test.error(toString(_("The thread '%d' can execute the type's operation '%s' but this type is invalid.\n"),i,toString(j).c_str()));
    107107
    108108    for (Ttype_t j=0; j<_nb_type; j++)
     
    110110        for (uint32_t i=0; i<_nb_thread; i++)
    111111          if (not type_present [i][j])
    112             test.error(toString(_("The thread '%d' can't access at the execute_unit to execute the type's operation '%s' (and this type is not optional !).\n"),i,toString_type(j).c_str()));
     112            test.error(toString(_("The thread '%d' can't access at the execute_unit to execute the type's operation '%s' (and this type is not optional !).\n"),i,toString(j).c_str()));
    113113           
    114114    // Test all excluve type
     
    119119            if ((j != k) and (_table_execute_type[i][k] == true))
    120120              {
    121                 test.error(toString(_("The execute_unit [%d] implement the type '%s', and this type is exclusive with all others type.\n"),i,toString_type(j).c_str()));
     121                test.error(toString(_("The execute_unit [%d] implement the type '%s', and this type is exclusive with all others type.\n"),i,toString(j).c_str()));
    122122                break;
    123123              }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp

    r88 r97  
    5151#ifdef DEBUG_TEST
    5252              if (_destination[i][num_thread][type].empty())
    53                 throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no execute_unit to receive a operation from the read_unit ["+toString(i)+"], thread ["+toString(num_thread)+"] and a operation's type ["+toString_type(type)+"].");
     53                throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no execute_unit to receive a operation from the read_unit ["+toString(i)+"], thread ["+toString(num_thread)+"] and a operation's type ["+toString(type)+"].");
    5454#endif
    5555             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/SelfTest/src/test.cpp

    r88 r97  
    8484  ALLOC1_SC_SIGNAL(out_EXECUTE_LOOP_OUT_EXCEPTION           ,"out_EXECUTE_LOOP_OUT_EXCEPTION           ",Texception_t      ,_param->_nb_write_unit);
    8585  ALLOC1_SC_SIGNAL(out_EXECUTE_LOOP_OUT_NO_SEQUENCE         ,"out_EXECUTE_LOOP_OUT_NO_SEQUENCE         ",Tcontrol_t        ,_param->_nb_write_unit);
    86   ALLOC1_SC_SIGNAL(out_EXECUTE_LOOP_OUT_ADDRESS             ,"out_EXECUTE_LOOP_OUT_ADDRESS             ",Tgeneral_data_t   ,_param->_nb_write_unit);
     86  ALLOC1_SC_SIGNAL(out_EXECUTE_LOOP_OUT_ADDRESS             ,"out_EXECUTE_LOOP_OUT_ADDRESS             ",Taddress_t        ,_param->_nb_write_unit);
    8787  ALLOC1_SC_SIGNAL(out_EXECUTE_LOOP_OUT_DATA                ,"out_EXECUTE_LOOP_OUT_DATA                ",Tgeneral_data_t   ,_param->_nb_write_unit);
    8888  ALLOC2_SC_SIGNAL(out_DCACHE_REQ_VAL                       ,"out_DCACHE_REQ_VAL                       ",Tcontrol_t        ,_param->_nb_load_store_unit,_param->_nb_cache_port[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Execute_loop.h

    r88 r97  
    107107  public    : SC_OUT(Texception_t      )   ** out_EXECUTE_LOOP_OUT_EXCEPTION           ;//[nb_write_unit]
    108108  public    : SC_OUT(Tcontrol_t        )   ** out_EXECUTE_LOOP_OUT_NO_SEQUENCE         ;//[nb_write_unit]
    109   public    : SC_OUT(Tgeneral_data_t   )   ** out_EXECUTE_LOOP_OUT_ADDRESS             ;//[nb_write_unit]
     109  public    : SC_OUT(Taddress_t        )   ** out_EXECUTE_LOOP_OUT_ADDRESS             ;//[nb_write_unit]
    110110  public    : SC_OUT(Tgeneral_data_t   )   ** out_EXECUTE_LOOP_OUT_DATA                ;//[nb_write_unit]
    111111
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp

    r88 r97  
    9696       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_EXCEPTION    ,"exception"    ,Texception_t   ,_param->_size_exception);
    9797       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t     ,1);
    98        ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_general_data);
     98       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_ADDRESS      ,"address"      ,Taddress_t     ,_param->_size_instruction_address);
    9999       ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_DATA         ,"data"         ,Tgeneral_data_t,_param->_size_general_data);
    100100     }
     
    850850//             COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_OPERATION"    ,
    851851//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_OPERATION"    );
    852                COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_TYPE"         ,
    853                                          dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_TYPE"         );
     852//             COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_TYPE"         ,
     853//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_TYPE"         );
    854854               COMPONENT_MAP(_component ,src ,"out_EXECUTE_OUT_WRITE_RD"     ,
    855855                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_0_WRITE_RD"     );
     
    975975//             COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_OPERATION"    ,
    976976//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_OPERATION"    );
    977                COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_TYPE"         ,
    978                                          dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_TYPE"         );
     977//             COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_TYPE"         ,
     978//                                       dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_TYPE"         );
    979979               COMPONENT_MAP(_component ,src ,"out_MEMORY_OUT_"+toString(j)+"_WRITE_RD"     ,
    980980                                         dest, "in_EXECUTE_UNIT_OUT_"+toString(i)+"_"+toString(j)+"_WRITE_RD"     );
     
    10851085//         COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_OPERATION"    ,
    10861086//                                   dest,"out_WRITE_UNIT_IN_"+toString(i)+"_OPERATION"    );
    1087            COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_TYPE"         ,
    1088                                      dest,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE"         );
     1087//         COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_TYPE"         ,
     1088//                                   dest,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE"         );
    10891089           COMPONENT_MAP(_component ,src , "in_WRITE_UNIT_IN_WRITE_RD"     ,
    10901090                                     dest,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RD"     );
     
    15971597// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_OPERATION"    ,
    15981598// //                               dest,"out_EXECUTE_OUT_OPERATION"    );
    1599 //             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_TYPE"         ,
    1600 //                                  dest,"out_EXECUTE_OUT_TYPE"         );
     1599// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_TYPE"         ,
     1600// //                               dest,"out_EXECUTE_OUT_TYPE"         );
    16011601//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_WRITE_RD"     ,
    16021602//                                  dest,"out_EXECUTE_OUT_WRITE_RD"     );
     
    16441644// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_OPERATION"    ,
    16451645// //                               dest,"out_MEMORY_OUT_OPERATION"    );
    1646 //             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_TYPE"         ,
    1647 //                                  dest,"out_MEMORY_OUT_TYPE"         );
     1646// //          PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_TYPE"         ,
     1647// //                               dest,"out_MEMORY_OUT_TYPE"         );
    16481648//             PORT_MAP(_component ,src , "in_EXECUTE_UNIT_OUT_"+toString(i)+"_WRITE_RD"     ,
    16491649//                                  dest,"out_MEMORY_OUT_WRITE_RD"     );
     
    16951695// //      PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_OPERATION"    ,
    16961696// //                           dest, "in_WRITE_UNIT_IN_OPERATION"    );
    1697 //         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE"         ,
    1698 //                              dest, "in_WRITE_UNIT_IN_TYPE"         );
     1697// //      PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_TYPE"         ,
     1698// //                           dest, "in_WRITE_UNIT_IN_TYPE"         );
    16991699//         PORT_MAP(_component ,src ,"out_WRITE_UNIT_IN_"+toString(i)+"_WRITE_RD"     ,
    17001700//                              dest, "in_WRITE_UNIT_IN_WRITE_RD"     );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp

    r88 r97  
    156156                if (timing[x][j][k]._latence > 0)
    157157                  {
    158                     log_printf(TRACE,Execute_loop,FUNCTION,"Execute unit '%d' (functional unit '%d') can execute type '%s'.",i,x,toString_type(j).c_str());
     158                    log_printf(TRACE,Execute_loop,FUNCTION,"Execute unit '%d' (functional unit '%d') can execute type '%s'.",i,x,toString(j).c_str());
    159159                    _read_unit_to_execution_unit_table_execute_type [i][j] = true;
    160160                    break; // find an operation
     
    524524    if (is_toplevel)
    525525      {
     526        _size_instruction_address= size_general_data-2;
    526527        _size_context_id         = log2(nb_context);
    527528        _size_front_end_id       = log2(nb_front_end);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/test.cpp

    r95 r97  
    7575  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR      ," in_COMMIT_EVENT_ADDRESS_EPCR      ",Taddress_t   );
    7676  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ",Tcontrol_t   );
    77   ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Taddress_t   );
     77  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Tgeneral_data_t);
    7878
    7979  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL            ," in_BRANCH_COMPLETE_VAL            ",Tcontrol_t   ,_param->_nb_inst_branch_complete);
     
    9797  ALLOC1_SC_SIGNAL(out_EVENT_ADDRESS_NEXT_VAL         ,"out_EVENT_ADDRESS_NEXT_VAL         ",Tcontrol_t   ,_param->_nb_context   );
    9898  ALLOC1_SC_SIGNAL(out_EVENT_IS_DS_TAKE               ,"out_EVENT_IS_DS_TAKE               ",Tcontrol_t   ,_param->_nb_context   );
    99                                                                                            
     99  ALLOC1_SC_SIGNAL(out_EVENT_TYPE                     ,"out_EVENT_TYPE                     ",Tevent_type_t,_param->_nb_context   );
     100  ALLOC1_SC_SIGNAL(out_EVENT_DEPTH                    ,"out_EVENT_DEPTH                    ",Tdepth_t     ,_param->_nb_context   );
     101
    100102  ALLOC1_SC_SIGNAL(out_SPR_EVENT_VAL                  ,"out_SPR_EVENT_VAL                  ",Tcontrol_t   ,_param->_nb_context   );
    101103  ALLOC1_SC_SIGNAL( in_SPR_EVENT_ACK                  ," in_SPR_EVENT_ACK                  ",Tcontrol_t   ,_param->_nb_context   );
     
    177179  INSTANCE1_SC_SIGNAL(_Context_State,out_EVENT_ADDRESS_NEXT_VAL         ,_param->_nb_context   );
    178180  INSTANCE1_SC_SIGNAL(_Context_State,out_EVENT_IS_DS_TAKE               ,_param->_nb_context   );
     181  INSTANCE1_SC_SIGNAL(_Context_State,out_EVENT_TYPE                     ,_param->_nb_context   );
     182  if (_param->_have_port_depth)
     183  INSTANCE1_SC_SIGNAL(_Context_State,out_EVENT_DEPTH                    ,_param->_nb_context   );
    179184                                                                       
    180185  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_VAL                  ,_param->_nb_context   );
     
    12731278  DELETE1_SC_SIGNAL(out_EVENT_ADDRESS_NEXT_VAL         ,_param->_nb_context   );
    12741279  DELETE1_SC_SIGNAL(out_EVENT_IS_DS_TAKE               ,_param->_nb_context   );
     1280  DELETE1_SC_SIGNAL(out_EVENT_TYPE                     ,_param->_nb_context   );
     1281  DELETE1_SC_SIGNAL(out_EVENT_DEPTH                    ,_param->_nb_context   );
    12751282  DELETE1_SC_SIGNAL(out_SPR_EVENT_VAL                  ,_param->_nb_context   );
    12761283  DELETE1_SC_SIGNAL( in_SPR_EVENT_ACK                  ,_param->_nb_context   );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h

    r95 r97  
    9393  public    : SC_IN (Taddress_t         )   *  in_COMMIT_EVENT_ADDRESS_EPCR          ;
    9494  public    : SC_IN (Tcontrol_t         )   *  in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ;
    95   public    : SC_IN (Taddress_t         )   *  in_COMMIT_EVENT_ADDRESS_EEAR          ;
     95  public    : SC_IN (Tgeneral_data_t    )   *  in_COMMIT_EVENT_ADDRESS_EEAR          ;
    9696
    9797    // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp

    r95 r97  
    9797      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EPCR          ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
    9898      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,"address_eear_val",Tcontrol_t         ,1);
    99       ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR          ,"address_eear"    ,Taddress_t         ,_param->_size_instruction_address);
     99      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR          ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
    100100    }
    101101
     
    133133      ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT_VAL             ,"address_next_val",Tcontrol_t        ,1);
    134134      ALLOC1_SIGNAL_OUT(out_EVENT_IS_DS_TAKE                   ,"is_ds_take"      ,Tcontrol_t        ,1);
     135      ALLOC1_SIGNAL_OUT(out_EVENT_TYPE                         ,"type"            ,Tevent_type_t     ,_param->_size_event_type);
     136      ALLOC1_SIGNAL_OUT(out_EVENT_DEPTH                        ,"depth"           ,Tdepth_t          ,_param->_size_depth);
     137
    135138    }
    136139
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp

    r95 r97  
    7676        DELETE1_SIGNAL(out_EVENT_ADDRESS_NEXT_VAL             ,_param->_nb_context,1);
    7777        DELETE1_SIGNAL(out_EVENT_IS_DS_TAKE                   ,_param->_nb_context,1);
    78        
     78        DELETE1_SIGNAL(out_EVENT_TYPE                         ,_param->_nb_context,_param->_size_event_type);
     79        DELETE1_SIGNAL(out_EVENT_DEPTH                        ,_param->_nb_context,_param->_size_depth);
     80
    7981        DELETE1_SIGNAL(out_SPR_EVENT_VAL                      ,_param->_nb_context,1);
    8082        DELETE1_SIGNAL( in_SPR_EVENT_ACK                      ,_param->_nb_context,1);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMoore.cpp

    r88 r97  
    3838        // SR can't change in this cycle
    3939        // Exception Prefix High
    40         Taddress_t address          = reg_EVENT_ADDRESS [i] | (((state == CONTEXT_STATE_KO_EXCEP_ADDR) and PORT_READ(in_SPR_SR_EPH [i]))?(0xF000000>>2):0);
    41         Taddress_t address_next     = reg_EVENT_ADDRESS_EPCR [i];
    42         Tcontrol_t address_next_val = (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_ADDRESS_EPCR_VAL [i]);
    43         Tcontrol_t is_ds_take       = (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_IS_DS_TAKE       [i]);
     40        Taddress_t    address          = reg_EVENT_ADDRESS [i] | (((state == CONTEXT_STATE_KO_EXCEP_ADDR) and PORT_READ(in_SPR_SR_EPH [i]))?(0xF000000>>2):0);
     41        Taddress_t    address_next     = reg_EVENT_ADDRESS_EPCR [i];
     42        Tcontrol_t    address_next_val = (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_ADDRESS_EPCR_VAL [i]);
     43        Tcontrol_t    is_ds_take       = (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_IS_DS_TAKE       [i]);
    4444        // excep : address exception
    4545        // miss  : address delay_slot, and address dest
    4646        // psync : address next
    4747        // csync : address next
     48        Tevent_type_t type                         ;//[nb_context]
     49        Tdepth_t      depth            = reg_EVENT_DEPTH [i];
     50
     51        switch (state)
     52          {
     53          case CONTEXT_STATE_KO_EXCEP_ADDR : (type = EVENT_TYPE_EXCEPTION         ); break;
     54          case CONTEXT_STATE_KO_MISS_ADDR  : (type = EVENT_TYPE_MISS_SPECULATION  ); break;
     55          case CONTEXT_STATE_KO_PSYNC_ADDR : (type = EVENT_TYPE_PSYNC             ); break;
     56          case CONTEXT_STATE_KO_CSYNC_ADDR : (type = EVENT_TYPE_CSYNC             ); break;
     57          default                          : (type = EVENT_TYPE_NONE              ); break;
     58          }
     59//      (type = EVENT_TYPE_SPR_ACCESS        );
     60//      (type = EVENT_TYPE_MSYNC             );
     61//      (type = EVENT_TYPE_BRANCH_NO_ACCURATE);
     62
    4863        internal_EVENT_VAL [i] = val;
    4964        PORT_WRITE(out_EVENT_VAL              [i], val);
     
    5267        PORT_WRITE(out_EVENT_ADDRESS_NEXT_VAL [i], address_next_val);
    5368        PORT_WRITE(out_EVENT_IS_DS_TAKE       [i], is_ds_take);
     69        PORT_WRITE(out_EVENT_TYPE             [i], type);
     70        if (_param->_have_port_depth)
     71        PORT_WRITE(out_EVENT_DEPTH            [i], depth);
    5472
    5573        log_printf(TRACE,Context_State,FUNCTION,"  * EVENT Context      : %d", i);
     
    5977        log_printf(TRACE,Context_State,FUNCTION,"    * ADDRESS_NEXT_VAL : %d", address_next_val);
    6078        log_printf(TRACE,Context_State,FUNCTION,"    * IS_DS_TAKE       : %d", is_ds_take);
     79        log_printf(TRACE,Context_State,FUNCTION,"    * TYPE             : %d", type);
     80        log_printf(TRACE,Context_State,FUNCTION,"    * DEPTH            : %d", depth);
    6181      }
    6282
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/src/Instruction.cpp

    r88 r97  
    255255    inst->_operation          = instruction_information(INSTRUCTION_L_ADD)._operation; //OPERATION_ALU_L_ADD;
    256256    inst->_has_immediat       = 0;
    257 //  inst->_immediat           = ;
    258     inst->_read_ra            = 1;
    259     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    260     inst->_read_rb            = 1;
    261     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    262     inst->_read_rc            = 0;
    263 //  inst->_num_reg_rc         = ;
     257    inst->_immediat           = 0; // unnecessary
     258    inst->_read_ra            = 1;
     259    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     260    inst->_read_rb            = 1;
     261    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     262    inst->_read_rc            = 0;
     263    inst->_num_reg_rc         = 0; //unnecessary
    264264    inst->_write_rd           = 1;
    265265    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    271271//  inst->_branch_stack_write = ;
    272272//  inst->_branch_direction   = ;
    273 //  inst->_address_next       = ;
     273//  inst->_address_next       = ; // already define : PC+4
    274274    inst->_no_execute         = 0;
    275275    inst->_event_type         = EVENT_TYPE_NONE;
     
    283283    inst->_operation          = instruction_information(INSTRUCTION_L_ADDC)._operation; //OPERATION_ALU_L_ADD;
    284284    inst->_has_immediat       = 0;
    285 //  inst->_immediat           = ;
     285    inst->_immediat           = 0; // unnecessary
    286286    inst->_read_ra            = 1;
    287287    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     
    299299//  inst->_branch_stack_write = ;
    300300//  inst->_branch_direction   = ;
    301 //  inst->_address_next       = ;
     301//  inst->_address_next       = ; // already define : PC+4
    302302    inst->_no_execute         = 0;
    303303    inst->_event_type         = EVENT_TYPE_NONE;
     
    315315    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    316316    inst->_read_rb            = 0;
    317 //  inst->_num_reg_rb         = ;
    318     inst->_read_rc            = 0;
    319 //  inst->_num_reg_rc         = ;
     317    inst->_num_reg_rb         = 0; //unnecessary
     318    inst->_read_rc            = 0;
     319    inst->_num_reg_rc         = 0; //unnecessary
    320320    inst->_write_rd           = 1;
    321321    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    327327//  inst->_branch_stack_write = ;
    328328//  inst->_branch_direction   = ;
    329 //  inst->_address_next       = ;
     329//  inst->_address_next       = ; // already define : PC+4
    330330    inst->_no_execute         = 0;
    331331    inst->_event_type         = EVENT_TYPE_NONE;
     
    343343    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    344344    inst->_read_rb            = 0;
    345 //  inst->_num_reg_rb         = ;
     345    inst->_num_reg_rb         = 0; //unnecessary
    346346    inst->_read_rc            = 1;
    347347    inst->_num_reg_rc         = SPR_LOGIC_SR_CY_OV;
     
    355355//  inst->_branch_stack_write = ;
    356356//  inst->_branch_direction   = ;
    357 //  inst->_address_next       = ;
     357//  inst->_address_next       = ; // already define : PC+4
    358358    inst->_no_execute         = 0;
    359359    inst->_event_type         = EVENT_TYPE_NONE;
     
    367367    inst->_operation          = instruction_information(INSTRUCTION_L_AND)._operation; //OPERATION_ALU_L_AND;
    368368    inst->_has_immediat       = 0;
    369 //  inst->_immediat           = ;
    370     inst->_read_ra            = 1;
    371     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    372     inst->_read_rb            = 1;
    373     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    374     inst->_read_rc            = 0;
    375 //  inst->_num_reg_rc         = ;
    376     inst->_write_rd           = 1;
    377     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    378     inst->_write_re           = 0;
    379 //  inst->_num_reg_re         = ;
    380     inst->_exception_use      = EXCEPTION_USE_NONE;
    381     inst->_exception          = EXCEPTION_DECOD_NONE;
    382 //  inst->_branch_condition   = ;
    383 //  inst->_branch_stack_write = ;
    384 //  inst->_branch_direction   = ;
    385 //  inst->_address_next       = ;
     369    inst->_immediat           = 0; // unnecessary
     370    inst->_read_ra            = 1;
     371    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     372    inst->_read_rb            = 1;
     373    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     374    inst->_read_rc            = 0;
     375    inst->_num_reg_rc         = 0; //unnecessary
     376    inst->_write_rd           = 1;
     377    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     378    inst->_write_re           = 0;
     379    inst->_num_reg_re         = 0; //unnecessary
     380    inst->_exception_use      = EXCEPTION_USE_NONE;
     381    inst->_exception          = EXCEPTION_DECOD_NONE;
     382//  inst->_branch_condition   = ;
     383//  inst->_branch_stack_write = ;
     384//  inst->_branch_direction   = ;
     385//  inst->_address_next       = ; // already define : PC+4
    386386    inst->_no_execute         = 0;
    387387    inst->_event_type         = EVENT_TYPE_NONE;
     
    399399    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    400400    inst->_read_rb            = 0;
    401 //  inst->_num_reg_rb         = ;
    402     inst->_read_rc            = 0;
    403 //  inst->_num_reg_rc         = ;
    404     inst->_write_rd           = 1;
    405     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    406     inst->_write_re           = 0;
    407 //  inst->_num_reg_re         = ;
    408     inst->_exception_use      = EXCEPTION_USE_NONE;
    409     inst->_exception          = EXCEPTION_DECOD_NONE;
    410 //  inst->_branch_condition   = ;
    411 //  inst->_branch_stack_write = ;
    412 //  inst->_branch_direction   = ;
    413 //  inst->_address_next       = ;
     401    inst->_num_reg_rb         = 0; //unnecessary
     402    inst->_read_rc            = 0;
     403    inst->_num_reg_rc         = 0; //unnecessary
     404    inst->_write_rd           = 1;
     405    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     406    inst->_write_re           = 0;
     407    inst->_num_reg_re         = 0; //unnecessary
     408    inst->_exception_use      = EXCEPTION_USE_NONE;
     409    inst->_exception          = EXCEPTION_DECOD_NONE;
     410//  inst->_branch_condition   = ;
     411//  inst->_branch_stack_write = ;
     412//  inst->_branch_direction   = ;
     413//  inst->_address_next       = ; // already define : PC+4
    414414    inst->_no_execute         = 0;
    415415    inst->_event_type         = EVENT_TYPE_NONE;
     
    428428    inst->_immediat           = address_next;
    429429    inst->_read_ra            = 0;
    430 //  inst->_num_reg_ra         = ;
    431     inst->_read_rb            = 0;
    432 //  inst->_num_reg_rb         = ;
     430    inst->_num_reg_ra         = 0; //unnecessary
     431    inst->_read_rb            = 0;
     432    inst->_num_reg_rb         = 0; //unnecessary
    433433    inst->_read_rc            = 1;
    434434    inst->_num_reg_rc         = SPR_LOGIC_SR_F;
    435435    inst->_write_rd           = 0;
    436 //  inst->_num_reg_rd         = ;
    437     inst->_write_re           = 0;
    438 //  inst->_num_reg_re         = ;
     436    inst->_num_reg_rd         = 0; //unnecessary
     437    inst->_write_re           = 0;
     438    inst->_num_reg_re         = 0; //unnecessary
    439439    inst->_exception_use      = EXCEPTION_USE_NONE;
    440440    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    460460    inst->_immediat           = address_next;
    461461    inst->_read_ra            = 0;
    462 //  inst->_num_reg_ra         = ;
    463     inst->_read_rb            = 0;
    464 //  inst->_num_reg_rb         = ;
     462    inst->_num_reg_ra         = 0; //unnecessary
     463    inst->_read_rb            = 0;
     464    inst->_num_reg_rb         = 0; //unnecessary
    465465    inst->_read_rc            = 1;
    466466    inst->_num_reg_rc         = SPR_LOGIC_SR_F;
     
    468468    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    469469    inst->_write_re           = 0;
    470 //  inst->_num_reg_re         = ;
     470    inst->_num_reg_re         = 0; //unnecessary
    471471    inst->_exception_use      = EXCEPTION_USE_NONE;
    472472    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    486486    inst->_operation          = instruction_information(INSTRUCTION_L_CMOV)._operation; //OPERATION_MOVE_L_CMOV;
    487487    inst->_has_immediat       = 0;
    488 //  inst->_immediat           = ;
     488    inst->_immediat           = 0; // unnecessary
    489489    inst->_read_ra            = 1;
    490490    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     
    496496    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    497497    inst->_write_re           = 0;
    498 //  inst->_num_reg_re         = ;
    499     inst->_exception_use      = EXCEPTION_USE_NONE;
    500     inst->_exception          = EXCEPTION_DECOD_NONE;
    501 //  inst->_branch_condition   = ;
    502 //  inst->_branch_stack_write = ;
    503 //  inst->_branch_direction   = ;
    504 //  inst->_address_next       = ;
     498    inst->_num_reg_re         = 0; //unnecessary
     499    inst->_exception_use      = EXCEPTION_USE_NONE;
     500    inst->_exception          = EXCEPTION_DECOD_NONE;
     501//  inst->_branch_condition   = ;
     502//  inst->_branch_stack_write = ;
     503//  inst->_branch_direction   = ;
     504//  inst->_address_next       = ; // already define : PC+4
    505505    inst->_no_execute         = 0;
    506506    inst->_event_type         = EVENT_TYPE_NONE;
     
    520520    inst->_operation          = instruction_information(INSTRUCTION_L_CSYNC)._operation; //OPERATION_SPECIAL_L_CSYNC;
    521521    inst->_has_immediat       = 0;
    522 //  inst->_immediat           = ;
     522    inst->_immediat           = 0; // unnecessary
    523523    inst->_read_ra            = 0;
    524 //  inst->_num_reg_ra         = ;
    525     inst->_read_rb            = 0;
    526 //  inst->_num_reg_rb         = ;
    527     inst->_read_rc            = 0;
    528 //  inst->_num_reg_rc         = ;
    529     inst->_write_rd           = 0;
    530 //  inst->_num_reg_rd         = ;
    531     inst->_write_re           = 0;
    532 //  inst->_num_reg_re         = ;
    533     inst->_exception_use      = EXCEPTION_USE_NONE;
    534     inst->_exception          = EXCEPTION_DECOD_NONE;
    535 //  inst->_branch_condition   = ;
    536 //  inst->_branch_stack_write = ;
    537 //  inst->_branch_direction   = ;
    538 //  inst->_address_next       = ; // don't change
     524    inst->_num_reg_ra         = 0; //unnecessary
     525    inst->_read_rb            = 0;
     526    inst->_num_reg_rb         = 0; //unnecessary
     527    inst->_read_rc            = 0;
     528    inst->_num_reg_rc         = 0; //unnecessary
     529    inst->_write_rd           = 0;
     530    inst->_num_reg_rd         = 0; //unnecessary
     531    inst->_write_re           = 0;
     532    inst->_num_reg_re         = 0; //unnecessary
     533    inst->_exception_use      = EXCEPTION_USE_NONE;
     534    inst->_exception          = EXCEPTION_DECOD_NONE;
     535//  inst->_branch_condition   = ;
     536//  inst->_branch_stack_write = ;
     537//  inst->_branch_direction   = ;
     538//  inst->_address_next       = ; // already define : PC+4 // don't change
    539539    inst->_no_execute         = 0;
    540540    inst->_event_type         = EVENT_TYPE_CSYNC;
     
    558558    inst->_operation          = instruction_information(INSTRUCTION_L_DIV)._operation; //OPERATION_DIV_L_DIV;
    559559    inst->_has_immediat       = 0;
    560 //  inst->_immediat           = ;
    561     inst->_read_ra            = 1;
    562     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    563     inst->_read_rb            = 1;
    564     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    565     inst->_read_rc            = 0;
    566 //  inst->_num_reg_rc         = ;
     560    inst->_immediat           = 0; // unnecessary
     561    inst->_read_ra            = 1;
     562    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     563    inst->_read_rb            = 1;
     564    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     565    inst->_read_rc            = 0;
     566    inst->_num_reg_rc         = 0; //unnecessary
    567567    inst->_write_rd           = 1;
    568568    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    574574//  inst->_branch_stack_write = ;
    575575//  inst->_branch_direction   = ;
    576 //  inst->_address_next       = ;
     576//  inst->_address_next       = ; // already define : PC+4
    577577    inst->_no_execute         = 0;
    578578    inst->_event_type         = EVENT_TYPE_NONE;
     
    586586    inst->_operation          = instruction_information(INSTRUCTION_L_DIVU)._operation; //OPERATION_DIV_L_DIVU;
    587587    inst->_has_immediat       = 0;
    588 //  inst->_immediat           = ;
    589     inst->_read_ra            = 1;
    590     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    591     inst->_read_rb            = 1;
    592     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    593     inst->_read_rc            = 0;
    594 //  inst->_num_reg_rc         = ;
     588    inst->_immediat           = 0; // unnecessary
     589    inst->_read_ra            = 1;
     590    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     591    inst->_read_rb            = 1;
     592    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     593    inst->_read_rc            = 0;
     594    inst->_num_reg_rc         = 0; //unnecessary
    595595    inst->_write_rd           = 1;
    596596    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    602602//  inst->_branch_stack_write = ;
    603603//  inst->_branch_direction   = ;
    604 //  inst->_address_next       = ;
     604//  inst->_address_next       = ; // already define : PC+4
    605605    inst->_no_execute         = 0;
    606606    inst->_event_type         = EVENT_TYPE_NONE;
     
    618618    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    619619    inst->_read_rb            = 0;
    620 //  inst->_num_reg_rb         = ;
    621     inst->_read_rc            = 0;
    622 //  inst->_num_reg_rc         = ;
    623     inst->_write_rd           = 1;
    624     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    625     inst->_write_re           = 0;
    626 //  inst->_num_reg_re         = ;
    627     inst->_exception_use      = EXCEPTION_USE_NONE;
    628     inst->_exception          = EXCEPTION_DECOD_NONE;
    629 //  inst->_branch_condition   = ;
    630 //  inst->_branch_stack_write = ;
    631 //  inst->_branch_direction   = ;
    632 //  inst->_address_next       = ;
     620    inst->_num_reg_rb         = 0; //unnecessary
     621    inst->_read_rc            = 0;
     622    inst->_num_reg_rc         = 0; //unnecessary
     623    inst->_write_rd           = 1;
     624    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     625    inst->_write_re           = 0;
     626    inst->_num_reg_re         = 0; //unnecessary
     627    inst->_exception_use      = EXCEPTION_USE_NONE;
     628    inst->_exception          = EXCEPTION_DECOD_NONE;
     629//  inst->_branch_condition   = ;
     630//  inst->_branch_stack_write = ;
     631//  inst->_branch_direction   = ;
     632//  inst->_address_next       = ; // already define : PC+4
    633633    inst->_no_execute         = 0;
    634634    inst->_event_type         = EVENT_TYPE_NONE;
     
    646646    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    647647    inst->_read_rb            = 0;
    648 //  inst->_num_reg_rb         = ;
    649     inst->_read_rc            = 0;
    650 //  inst->_num_reg_rc         = ;
    651     inst->_write_rd           = 1;
    652     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    653     inst->_write_re           = 0;
    654 //  inst->_num_reg_re         = ;
    655     inst->_exception_use      = EXCEPTION_USE_NONE;
    656     inst->_exception          = EXCEPTION_DECOD_NONE;
    657 //  inst->_branch_condition   = ;
    658 //  inst->_branch_stack_write = ;
    659 //  inst->_branch_direction   = ;
    660 //  inst->_address_next       = ;
     648    inst->_num_reg_rb         = 0; //unnecessary
     649    inst->_read_rc            = 0;
     650    inst->_num_reg_rc         = 0; //unnecessary
     651    inst->_write_rd           = 1;
     652    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     653    inst->_write_re           = 0;
     654    inst->_num_reg_re         = 0; //unnecessary
     655    inst->_exception_use      = EXCEPTION_USE_NONE;
     656    inst->_exception          = EXCEPTION_DECOD_NONE;
     657//  inst->_branch_condition   = ;
     658//  inst->_branch_stack_write = ;
     659//  inst->_branch_direction   = ;
     660//  inst->_address_next       = ; // already define : PC+4
    661661    inst->_no_execute         = 0;
    662662    inst->_event_type         = EVENT_TYPE_NONE;
     
    674674    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    675675    inst->_read_rb            = 0;
    676 //  inst->_num_reg_rb         = ;
    677     inst->_read_rc            = 0;
    678 //  inst->_num_reg_rc         = ;
    679     inst->_write_rd           = 1;
    680     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    681     inst->_write_re           = 0;
    682 //  inst->_num_reg_re         = ;
    683     inst->_exception_use      = EXCEPTION_USE_NONE;
    684     inst->_exception          = EXCEPTION_DECOD_NONE;
    685 //  inst->_branch_condition   = ;
    686 //  inst->_branch_stack_write = ;
    687 //  inst->_branch_direction   = ;
    688 //  inst->_address_next       = ;
     676    inst->_num_reg_rb         = 0; //unnecessary
     677    inst->_read_rc            = 0;
     678    inst->_num_reg_rc         = 0; //unnecessary
     679    inst->_write_rd           = 1;
     680    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     681    inst->_write_re           = 0;
     682    inst->_num_reg_re         = 0; //unnecessary
     683    inst->_exception_use      = EXCEPTION_USE_NONE;
     684    inst->_exception          = EXCEPTION_DECOD_NONE;
     685//  inst->_branch_condition   = ;
     686//  inst->_branch_stack_write = ;
     687//  inst->_branch_direction   = ;
     688//  inst->_address_next       = ; // already define : PC+4
    689689    inst->_no_execute         = 0;
    690690    inst->_event_type         = EVENT_TYPE_NONE;
     
    702702    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    703703    inst->_read_rb            = 0;
    704 //  inst->_num_reg_rb         = ;
    705     inst->_read_rc            = 0;
    706 //  inst->_num_reg_rc         = ;
    707     inst->_write_rd           = 1;
    708     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    709     inst->_write_re           = 0;
    710 //  inst->_num_reg_re         = ;
    711     inst->_exception_use      = EXCEPTION_USE_NONE;
    712     inst->_exception          = EXCEPTION_DECOD_NONE;
    713 //  inst->_branch_condition   = ;
    714 //  inst->_branch_stack_write = ;
    715 //  inst->_branch_direction   = ;
    716 //  inst->_address_next       = ;
     704    inst->_num_reg_rb         = 0; //unnecessary
     705    inst->_read_rc            = 0;
     706    inst->_num_reg_rc         = 0; //unnecessary
     707    inst->_write_rd           = 1;
     708    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     709    inst->_write_re           = 0;
     710    inst->_num_reg_re         = 0; //unnecessary
     711    inst->_exception_use      = EXCEPTION_USE_NONE;
     712    inst->_exception          = EXCEPTION_DECOD_NONE;
     713//  inst->_branch_condition   = ;
     714//  inst->_branch_stack_write = ;
     715//  inst->_branch_direction   = ;
     716//  inst->_address_next       = ; // already define : PC+4
    717717    inst->_no_execute         = 0;
    718718    inst->_event_type         = EVENT_TYPE_NONE;
     
    730730    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    731731    inst->_read_rb            = 0;
    732 //  inst->_num_reg_rb         = ;
    733     inst->_read_rc            = 0;
    734 //  inst->_num_reg_rc         = ;
    735     inst->_write_rd           = 1;
    736     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    737     inst->_write_re           = 0;
    738 //  inst->_num_reg_re         = ;
    739     inst->_exception_use      = EXCEPTION_USE_NONE;
    740     inst->_exception          = EXCEPTION_DECOD_NONE;
    741 //  inst->_branch_condition   = ;
    742 //  inst->_branch_stack_write = ;
    743 //  inst->_branch_direction   = ;
    744 //  inst->_address_next       = ;
     732    inst->_num_reg_rb         = 0; //unnecessary
     733    inst->_read_rc            = 0;
     734    inst->_num_reg_rc         = 0; //unnecessary
     735    inst->_write_rd           = 1;
     736    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     737    inst->_write_re           = 0;
     738    inst->_num_reg_re         = 0; //unnecessary
     739    inst->_exception_use      = EXCEPTION_USE_NONE;
     740    inst->_exception          = EXCEPTION_DECOD_NONE;
     741//  inst->_branch_condition   = ;
     742//  inst->_branch_stack_write = ;
     743//  inst->_branch_direction   = ;
     744//  inst->_address_next       = ; // already define : PC+4
    745745    inst->_no_execute         = 0;
    746746    inst->_event_type         = EVENT_TYPE_NONE;
     
    758758    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    759759    inst->_read_rb            = 0;
    760 //  inst->_num_reg_rb         = ;
    761     inst->_read_rc            = 0;
    762 //  inst->_num_reg_rc         = ;
    763     inst->_write_rd           = 1;
    764     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    765     inst->_write_re           = 0;
    766 //  inst->_num_reg_re         = ;
    767     inst->_exception_use      = EXCEPTION_USE_NONE;
    768     inst->_exception          = EXCEPTION_DECOD_NONE;
    769 //  inst->_branch_condition   = ;
    770 //  inst->_branch_stack_write = ;
    771 //  inst->_branch_direction   = ;
    772 //  inst->_address_next       = ;
     760    inst->_num_reg_rb         = 0; //unnecessary
     761    inst->_read_rc            = 0;
     762    inst->_num_reg_rc         = 0; //unnecessary
     763    inst->_write_rd           = 1;
     764    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     765    inst->_write_re           = 0;
     766    inst->_num_reg_re         = 0; //unnecessary
     767    inst->_exception_use      = EXCEPTION_USE_NONE;
     768    inst->_exception          = EXCEPTION_DECOD_NONE;
     769//  inst->_branch_condition   = ;
     770//  inst->_branch_stack_write = ;
     771//  inst->_branch_direction   = ;
     772//  inst->_address_next       = ; // already define : PC+4
    773773    inst->_no_execute         = 0;
    774774    inst->_event_type         = EVENT_TYPE_NONE;
     
    782782    inst->_operation          = instruction_information(INSTRUCTION_L_FF1)._operation; //OPERATION_FIND_L_FF1;
    783783    inst->_has_immediat       = 0;
    784 //  inst->_immediat           = ;
    785     inst->_read_ra            = 1;
    786     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    787     inst->_read_rb            = 0;
    788 //  inst->_num_reg_rb         = ;
    789     inst->_read_rc            = 0;
    790 //  inst->_num_reg_rc         = ;
    791     inst->_write_rd           = 1;
    792     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    793     inst->_write_re           = 0;
    794 //  inst->_num_reg_re         = ;
    795     inst->_exception_use      = EXCEPTION_USE_NONE;
    796     inst->_exception          = EXCEPTION_DECOD_NONE;
    797 //  inst->_branch_condition   = ;
    798 //  inst->_branch_stack_write = ;
    799 //  inst->_branch_direction   = ;
    800 //  inst->_address_next       = ;
     784    inst->_immediat           = 0; // unnecessary
     785    inst->_read_ra            = 1;
     786    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     787    inst->_read_rb            = 0;
     788    inst->_num_reg_rb         = 0; //unnecessary
     789    inst->_read_rc            = 0;
     790    inst->_num_reg_rc         = 0; //unnecessary
     791    inst->_write_rd           = 1;
     792    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     793    inst->_write_re           = 0;
     794    inst->_num_reg_re         = 0; //unnecessary
     795    inst->_exception_use      = EXCEPTION_USE_NONE;
     796    inst->_exception          = EXCEPTION_DECOD_NONE;
     797//  inst->_branch_condition   = ;
     798//  inst->_branch_stack_write = ;
     799//  inst->_branch_direction   = ;
     800//  inst->_address_next       = ; // already define : PC+4
    801801    inst->_no_execute         = 0;
    802802    inst->_event_type         = EVENT_TYPE_NONE;
     
    810810    inst->_operation          = instruction_information(INSTRUCTION_L_FL1)._operation; //OPERATION_FIND_L_FL1;
    811811    inst->_has_immediat       = 0;
    812 //  inst->_immediat           = ;
    813     inst->_read_ra            = 1;
    814     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    815     inst->_read_rb            = 0;
    816 //  inst->_num_reg_rb         = ;
    817     inst->_read_rc            = 0;
    818 //  inst->_num_reg_rc         = ;
    819     inst->_write_rd           = 1;
    820     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    821     inst->_write_re           = 0;
    822 //  inst->_num_reg_re         = ;
    823     inst->_exception_use      = EXCEPTION_USE_NONE;
    824     inst->_exception          = EXCEPTION_DECOD_NONE;
    825 //  inst->_branch_condition   = ;
    826 //  inst->_branch_stack_write = ;
    827 //  inst->_branch_direction   = ;
    828 //  inst->_address_next       = ;
     812    inst->_immediat           = 0; // unnecessary
     813    inst->_read_ra            = 1;
     814    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     815    inst->_read_rb            = 0;
     816    inst->_num_reg_rb         = 0; //unnecessary
     817    inst->_read_rc            = 0;
     818    inst->_num_reg_rc         = 0; //unnecessary
     819    inst->_write_rd           = 1;
     820    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     821    inst->_write_re           = 0;
     822    inst->_num_reg_re         = 0; //unnecessary
     823    inst->_exception_use      = EXCEPTION_USE_NONE;
     824    inst->_exception          = EXCEPTION_DECOD_NONE;
     825//  inst->_branch_condition   = ;
     826//  inst->_branch_stack_write = ;
     827//  inst->_branch_direction   = ;
     828//  inst->_address_next       = ; // already define : PC+4
    829829    inst->_no_execute         = 0;
    830830    inst->_event_type         = EVENT_TYPE_NONE;
     
    838838    inst->_operation          = instruction_information(INSTRUCTION_L_J)._operation; //OPERATION_BRANCH_NONE;
    839839    inst->_has_immediat       = 0;
    840 //  inst->_immediat           = ;
     840    inst->_immediat           = 0; // unnecessary
    841841    inst->_read_ra            = 0;
    842 //  inst->_num_reg_ra         = ;
    843     inst->_read_rb            = 0;
    844 //  inst->_num_reg_rb         = ;
    845     inst->_read_rc            = 0;
    846 //  inst->_num_reg_rc         = ;
    847     inst->_write_rd           = 0;
    848 //  inst->_num_reg_rd         = ;
    849     inst->_write_re           = 0;
    850 //  inst->_num_reg_re         = ;
     842    inst->_num_reg_ra         = 0; //unnecessary
     843    inst->_read_rb            = 0;
     844    inst->_num_reg_rb         = 0; //unnecessary
     845    inst->_read_rc            = 0;
     846    inst->_num_reg_rc         = 0; //unnecessary
     847    inst->_write_rd           = 0;
     848    inst->_num_reg_rd         = 0; //unnecessary
     849    inst->_write_re           = 0;
     850    inst->_num_reg_re         = 0; //unnecessary
    851851    inst->_exception_use      = EXCEPTION_USE_NONE;
    852852    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    869869    inst->_immediat           = inst->_address_next+1;
    870870    inst->_read_ra            = 0;
    871 //  inst->_num_reg_ra         = ;
    872     inst->_read_rb            = 0;
    873 //  inst->_num_reg_rb         = ;
    874     inst->_read_rc            = 0;
    875 //  inst->_num_reg_rc         = ;
     871    inst->_num_reg_ra         = 0; //unnecessary
     872    inst->_read_rb            = 0;
     873    inst->_num_reg_rb         = 0; //unnecessary
     874    inst->_read_rc            = 0;
     875    inst->_num_reg_rc         = 0; //unnecessary
    876876    inst->_write_rd           = 1;
    877877    inst->_num_reg_rd         = 9; // Link register
    878878    inst->_write_re           = 0;
    879 //  inst->_num_reg_re         = ;
     879    inst->_num_reg_re         = 0; //unnecessary
    880880    inst->_exception_use      = EXCEPTION_USE_NONE;
    881881    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    904904    inst->_operation          = instruction_information(INSTRUCTION_L_JALR)._operation; //OPERATION_BRANCH_L_JALR;
    905905    inst->_has_immediat       = 0;
    906 //  inst->_immediat           = ;
     906    inst->_immediat           = 0; // unnecessary
    907907    inst->_read_ra            = 0;
    908 //  inst->_num_reg_ra         = ;
     908    inst->_num_reg_ra         = 0; //unnecessary
    909909    inst->_read_rb            = 1;
    910910//  inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    911911    inst->_read_rc            = 0;
    912 //  inst->_num_reg_rc         = ;
     912    inst->_num_reg_rc         = 0; //unnecessary
    913913    inst->_write_rd           = 1;
    914914    inst->_num_reg_rd         = 9; // Link register
    915915    inst->_write_re           = 0;
    916 //  inst->_num_reg_re         = ;
     916    inst->_num_reg_re         = 0; //unnecessary
    917917    inst->_exception_use      = EXCEPTION_USE_NONE;
    918918    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    921921//  inst->_branch_stack_write = 1;
    922922    inst->_branch_direction   = 1;
    923 //  inst->_address_next       = ;
     923//  inst->_address_next       = ; // already define : PC+4
    924924    inst->_no_execute         = 0;
    925925    inst->_event_type         = EVENT_TYPE_NONE;
     
    934934    inst->_operation          = instruction_information(INSTRUCTION_L_JR)._operation; //OPERATION_BRANCH_L_JALR;
    935935    inst->_has_immediat       = 0;
    936 //  inst->_immediat           = ;
     936    inst->_immediat           = 0; // unnecessary
    937937    inst->_read_ra            = 0;
    938 //  inst->_num_reg_ra         = ;
    939     inst->_read_rb            = 1;
    940     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    941     inst->_read_rc            = 0;
    942 //  inst->_num_reg_rc         = ;
    943     inst->_write_rd           = 0;
    944 //  inst->_num_reg_rd         = ;
    945     inst->_write_re           = 0;
    946 //  inst->_num_reg_re         = ;
     938    inst->_num_reg_ra         = 0; //unnecessary
     939    inst->_read_rb            = 1;
     940    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     941    inst->_read_rc            = 0;
     942    inst->_num_reg_rc         = 0; //unnecessary
     943    inst->_write_rd           = 0;
     944    inst->_num_reg_rd         = 0; //unnecessary
     945    inst->_write_re           = 0;
     946    inst->_num_reg_re         = 0; //unnecessary
    947947    inst->_exception_use      = EXCEPTION_USE_NONE;
    948948    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    950950//  inst->_branch_stack_write = 0;
    951951    inst->_branch_direction   = 1;
    952 //  inst->_address_next       = ;
     952//  inst->_address_next       = ; // already define : PC+4
    953953    inst->_no_execute         = 0;
    954954    inst->_event_type         = EVENT_TYPE_NONE;
     
    966966    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    967967    inst->_read_rb            = 0;
    968 //  inst->_num_reg_rb         = ;
    969     inst->_read_rc            = 0;
    970 //  inst->_num_reg_rc         = ;
    971     inst->_write_rd           = 1;
    972     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    973     inst->_write_re           = 0;
    974 //  inst->_num_reg_re         = ;
     968    inst->_num_reg_rb         = 0; //unnecessary
     969    inst->_read_rc            = 0;
     970    inst->_num_reg_rc         = 0; //unnecessary
     971    inst->_write_rd           = 1;
     972    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     973    inst->_write_re           = 0;
     974    inst->_num_reg_re         = 0; //unnecessary
    975975    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT;
    976976    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    978978//  inst->_branch_stack_write = ;
    979979//  inst->_branch_direction   = ;
    980 //  inst->_address_next       = ;
     980//  inst->_address_next       = ; // already define : PC+4
    981981    inst->_no_execute         = 0;
    982982    inst->_event_type         = EVENT_TYPE_NONE;
     
    994994    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    995995    inst->_read_rb            = 0;
    996 //  inst->_num_reg_rb         = ;
    997     inst->_read_rc            = 0;
    998 //  inst->_num_reg_rc         = ;
    999     inst->_write_rd           = 1;
    1000     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1001     inst->_write_re           = 0;
    1002 //  inst->_num_reg_re         = ;
     996    inst->_num_reg_rb         = 0; //unnecessary
     997    inst->_read_rc            = 0;
     998    inst->_num_reg_rc         = 0; //unnecessary
     999    inst->_write_rd           = 1;
     1000    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1001    inst->_write_re           = 0;
     1002    inst->_num_reg_re         = 0; //unnecessary
    10031003    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT;
    10041004    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    10061006//  inst->_branch_stack_write = ;
    10071007//  inst->_branch_direction   = ;
    1008 //  inst->_address_next       = ;
     1008//  inst->_address_next       = ; // already define : PC+4
    10091009    inst->_no_execute         = 0;
    10101010    inst->_event_type         = EVENT_TYPE_NONE;
     
    10221022    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    10231023    inst->_read_rb            = 0;
    1024 //  inst->_num_reg_rb         = ;
    1025     inst->_read_rc            = 0;
    1026 //  inst->_num_reg_rc         = ;
    1027     inst->_write_rd           = 1;
    1028     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1029     inst->_write_re           = 0;
    1030 //  inst->_num_reg_re         = ;
     1024    inst->_num_reg_rb         = 0; //unnecessary
     1025    inst->_read_rc            = 0;
     1026    inst->_num_reg_rc         = 0; //unnecessary
     1027    inst->_write_rd           = 1;
     1028    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1029    inst->_write_re           = 0;
     1030    inst->_num_reg_re         = 0; //unnecessary
    10311031    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    10321032    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    10341034//  inst->_branch_stack_write = ;
    10351035//  inst->_branch_direction   = ;
    1036 //  inst->_address_next       = ;
     1036//  inst->_address_next       = ; // already define : PC+4
    10371037    inst->_no_execute         = 0;
    10381038    inst->_event_type         = EVENT_TYPE_NONE;
     
    10501050    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    10511051    inst->_read_rb            = 0;
    1052 //  inst->_num_reg_rb         = ;
    1053     inst->_read_rc            = 0;
    1054 //  inst->_num_reg_rc         = ;
    1055     inst->_write_rd           = 1;
    1056     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1057     inst->_write_re           = 0;
    1058 //  inst->_num_reg_re         = ;
     1052    inst->_num_reg_rb         = 0; //unnecessary
     1053    inst->_read_rc            = 0;
     1054    inst->_num_reg_rc         = 0; //unnecessary
     1055    inst->_write_rd           = 1;
     1056    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1057    inst->_write_re           = 0;
     1058    inst->_num_reg_re         = 0; //unnecessary
    10591059    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    10601060    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    10621062//  inst->_branch_stack_write = ;
    10631063//  inst->_branch_direction   = ;
    1064 //  inst->_address_next       = ;
     1064//  inst->_address_next       = ; // already define : PC+4
    10651065    inst->_no_execute         = 0;
    10661066    inst->_event_type         = EVENT_TYPE_NONE;
     
    10781078    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    10791079    inst->_read_rb            = 0;
    1080 //  inst->_num_reg_rb         = ;
    1081     inst->_read_rc            = 0;
    1082 //  inst->_num_reg_rc         = ;
    1083     inst->_write_rd           = 1;
    1084     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1085     inst->_write_re           = 0;
    1086 //  inst->_num_reg_re         = ;
     1080    inst->_num_reg_rb         = 0; //unnecessary
     1081    inst->_read_rc            = 0;
     1082    inst->_num_reg_rc         = 0; //unnecessary
     1083    inst->_write_rd           = 1;
     1084    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1085    inst->_write_re           = 0;
     1086    inst->_num_reg_re         = 0; //unnecessary
    10871087    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    10881088    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    10901090//  inst->_branch_stack_write = ;
    10911091//  inst->_branch_direction   = ;
    1092 //  inst->_address_next       = ;
     1092//  inst->_address_next       = ; // already define : PC+4
    10931093    inst->_no_execute         = 0;
    10941094    inst->_event_type         = EVENT_TYPE_NONE;
     
    11061106    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    11071107    inst->_read_rb            = 0;
    1108 //  inst->_num_reg_rb         = ;
    1109     inst->_read_rc            = 0;
    1110 //  inst->_num_reg_rc         = ;
    1111     inst->_write_rd           = 1;
    1112     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1113     inst->_write_re           = 0;
    1114 //  inst->_num_reg_re         = ;
     1108    inst->_num_reg_rb         = 0; //unnecessary
     1109    inst->_read_rc            = 0;
     1110    inst->_num_reg_rc         = 0; //unnecessary
     1111    inst->_write_rd           = 1;
     1112    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1113    inst->_write_re           = 0;
     1114    inst->_num_reg_re         = 0; //unnecessary
    11151115    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    11161116    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    11181118//  inst->_branch_stack_write = ;
    11191119//  inst->_branch_direction   = ;
    1120 //  inst->_address_next       = ;
     1120//  inst->_address_next       = ; // already define : PC+4
    11211121    inst->_no_execute         = 0;
    11221122    inst->_event_type         = EVENT_TYPE_NONE;
     
    11341134    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    11351135    inst->_read_rb            = 0;
    1136 //  inst->_num_reg_rb         = ;
    1137     inst->_read_rc            = 0;
    1138 //  inst->_num_reg_rc         = ;
    1139     inst->_write_rd           = 1;
    1140     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1141     inst->_write_re           = 0;
    1142 //  inst->_num_reg_re         = ;
     1136    inst->_num_reg_rb         = 0; //unnecessary
     1137    inst->_read_rc            = 0;
     1138    inst->_num_reg_rc         = 0; //unnecessary
     1139    inst->_write_rd           = 1;
     1140    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1141    inst->_write_re           = 0;
     1142    inst->_num_reg_re         = 0; //unnecessary
    11431143    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    11441144    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    11461146//  inst->_branch_stack_write = ;
    11471147//  inst->_branch_direction   = ;
    1148 //  inst->_address_next       = ;
     1148//  inst->_address_next       = ; // already define : PC+4
    11491149    inst->_no_execute         = 0;
    11501150    inst->_event_type         = EVENT_TYPE_NONE;
     
    11581158    inst->_operation          = instruction_information(INSTRUCTION_L_MAC)._operation; //OPERATION_SPECIAL_L_MAC;
    11591159    inst->_has_immediat       = 0;
    1160 //  inst->_immediat           = ;
    1161     inst->_read_ra            = 1;
    1162     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1163     inst->_read_rb            = 1;
    1164     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1165     inst->_read_rc            = 0;
    1166 //  inst->_num_reg_rc         = ;
    1167     inst->_write_rd           = 0;
    1168 //  inst->_num_reg_rd         = ;
    1169     inst->_write_re           = 0;
    1170 //  inst->_num_reg_re         = ;
    1171     inst->_exception_use      = EXCEPTION_USE_NONE;
    1172     inst->_exception          = EXCEPTION_DECOD_NONE;
    1173 //  inst->_branch_condition   = ;
    1174 //  inst->_branch_stack_write = ;
    1175 //  inst->_branch_direction   = ;
    1176 //  inst->_address_next       = ; // don't change
     1160    inst->_immediat           = 0; // unnecessary
     1161    inst->_read_ra            = 1;
     1162    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1163    inst->_read_rb            = 1;
     1164    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1165    inst->_read_rc            = 0;
     1166    inst->_num_reg_rc         = 0; //unnecessary
     1167    inst->_write_rd           = 0;
     1168    inst->_num_reg_rd         = 0; //unnecessary
     1169    inst->_write_re           = 0;
     1170    inst->_num_reg_re         = 0; //unnecessary
     1171    inst->_exception_use      = EXCEPTION_USE_NONE;
     1172    inst->_exception          = EXCEPTION_DECOD_NONE;
     1173//  inst->_branch_condition   = ;
     1174//  inst->_branch_stack_write = ;
     1175//  inst->_branch_direction   = ;
     1176//  inst->_address_next       = ; // already define : PC+4 // don't change
    11771177    inst->_no_execute         = 0;
    11781178    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
     
    11911191    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    11921192    inst->_read_rb            = 0;
    1193 //  inst->_num_reg_rb         = ;
    1194     inst->_read_rc            = 0;
    1195 //  inst->_num_reg_rc         = ;
    1196     inst->_write_rd           = 0;
    1197 //  inst->_num_reg_rd         = ;
    1198     inst->_write_re           = 0;
    1199 //  inst->_num_reg_re         = ;
    1200     inst->_exception_use      = EXCEPTION_USE_NONE;
    1201     inst->_exception          = EXCEPTION_DECOD_NONE;
    1202 //  inst->_branch_condition   = ;
    1203 //  inst->_branch_stack_write = ;
    1204 //  inst->_branch_direction   = ;
    1205 //  inst->_address_next       = ; // don't change
     1193    inst->_num_reg_rb         = 0; //unnecessary
     1194    inst->_read_rc            = 0;
     1195    inst->_num_reg_rc         = 0; //unnecessary
     1196    inst->_write_rd           = 0;
     1197    inst->_num_reg_rd         = 0; //unnecessary
     1198    inst->_write_re           = 0;
     1199    inst->_num_reg_re         = 0; //unnecessary
     1200    inst->_exception_use      = EXCEPTION_USE_NONE;
     1201    inst->_exception          = EXCEPTION_DECOD_NONE;
     1202//  inst->_branch_condition   = ;
     1203//  inst->_branch_stack_write = ;
     1204//  inst->_branch_direction   = ;
     1205//  inst->_address_next       = ; // already define : PC+4 // don't change
    12061206    inst->_no_execute         = 0;
    12071207    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
     
    12211221    inst->_operation          = instruction_information(INSTRUCTION_L_MACRC)._operation; //OPERATION_SPECIAL_L_MACRC;
    12221222    inst->_has_immediat       = 0;
    1223 //  inst->_immediat           = ;
     1223    inst->_immediat           = 0; // unnecessary
    12241224    inst->_read_ra            = 0;
    1225 //  inst->_num_reg_ra         = ;
    1226     inst->_read_rb            = 0;
    1227 //  inst->_num_reg_rb         = ;
    1228     inst->_read_rc            = 0;
    1229 //  inst->_num_reg_rc         = ;
    1230     inst->_write_rd           = 1;
    1231     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1232     inst->_write_re           = 0;
    1233 //  inst->_num_reg_re         = ;
    1234     inst->_exception_use      = EXCEPTION_USE_NONE;
    1235     inst->_exception          = EXCEPTION_DECOD_NONE;
    1236 //  inst->_branch_condition   = ;
    1237 //  inst->_branch_stack_write = ;
    1238 //  inst->_branch_direction   = ;
    1239 //  inst->_address_next       = ; // don't change
     1225    inst->_num_reg_ra         = 0; //unnecessary
     1226    inst->_read_rb            = 0;
     1227    inst->_num_reg_rb         = 0; //unnecessary
     1228    inst->_read_rc            = 0;
     1229    inst->_num_reg_rc         = 0; //unnecessary
     1230    inst->_write_rd           = 1;
     1231    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1232    inst->_write_re           = 0;
     1233    inst->_num_reg_re         = 0; //unnecessary
     1234    inst->_exception_use      = EXCEPTION_USE_NONE;
     1235    inst->_exception          = EXCEPTION_DECOD_NONE;
     1236//  inst->_branch_condition   = ;
     1237//  inst->_branch_stack_write = ;
     1238//  inst->_branch_direction   = ;
     1239//  inst->_address_next       = ; // already define : PC+4 // don't change
    12401240    inst->_no_execute         = 0;
    12411241    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
     
    12541254    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    12551255    inst->_read_rb            = 0;
    1256 //  inst->_num_reg_rb         = ;
    1257     inst->_read_rc            = 0;
    1258 //  inst->_num_reg_rc         = ;
    1259     inst->_write_rd           = 1;
    1260     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1261     inst->_write_re           = 0;
    1262 //  inst->_num_reg_re         = ;
    1263     inst->_exception_use      = EXCEPTION_USE_NONE;
    1264     inst->_exception          = EXCEPTION_DECOD_NONE;
    1265 //  inst->_branch_condition   = ;
    1266 //  inst->_branch_stack_write = ;
    1267 //  inst->_branch_direction   = ;
    1268 //  inst->_address_next       = ; // don't change
     1256    inst->_num_reg_rb         = 0; //unnecessary
     1257    inst->_read_rc            = 0;
     1258    inst->_num_reg_rc         = 0; //unnecessary
     1259    inst->_write_rd           = 1;
     1260    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1261    inst->_write_re           = 0;
     1262    inst->_num_reg_re         = 0; //unnecessary
     1263    inst->_exception_use      = EXCEPTION_USE_NONE;
     1264    inst->_exception          = EXCEPTION_DECOD_NONE;
     1265//  inst->_branch_condition   = ;
     1266//  inst->_branch_stack_write = ;
     1267//  inst->_branch_direction   = ;
     1268//  inst->_address_next       = ; // already define : PC+4 // don't change
    12691269    inst->_no_execute         = 0;
    12701270    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
     
    12801280    inst->_immediat           = EXTENDZ(inst->_instruction,16);
    12811281    inst->_read_ra            = 0;
    1282 //  inst->_num_reg_ra         = ;
    1283     inst->_read_rb            = 0;
    1284 //  inst->_num_reg_rb         = ;
    1285     inst->_read_rc            = 0;
    1286 //  inst->_num_reg_rc         = ;
    1287     inst->_write_rd           = 1;
    1288     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1289     inst->_write_re           = 0;
    1290 //  inst->_num_reg_re         = ;
    1291     inst->_exception_use      = EXCEPTION_USE_NONE;
    1292     inst->_exception          = EXCEPTION_DECOD_NONE;
    1293 //  inst->_branch_condition   = ;
    1294 //  inst->_branch_stack_write = ;
    1295 //  inst->_branch_direction   = ;
    1296 //  inst->_address_next       = ;
     1282    inst->_num_reg_ra         = 0; //unnecessary
     1283    inst->_read_rb            = 0;
     1284    inst->_num_reg_rb         = 0; //unnecessary
     1285    inst->_read_rc            = 0;
     1286    inst->_num_reg_rc         = 0; //unnecessary
     1287    inst->_write_rd           = 1;
     1288    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1289    inst->_write_re           = 0;
     1290    inst->_num_reg_re         = 0; //unnecessary
     1291    inst->_exception_use      = EXCEPTION_USE_NONE;
     1292    inst->_exception          = EXCEPTION_DECOD_NONE;
     1293//  inst->_branch_condition   = ;
     1294//  inst->_branch_stack_write = ;
     1295//  inst->_branch_direction   = ;
     1296//  inst->_address_next       = ; // already define : PC+4
    12971297    inst->_no_execute         = 0;
    12981298    inst->_event_type         = EVENT_TYPE_NONE;
     
    13061306    inst->_operation          = instruction_information(INSTRUCTION_L_MSB)._operation; //OPERATION_SPECIAL_L_MSB;
    13071307    inst->_has_immediat       = 0;
    1308 //  inst->_immediat           = ;
    1309     inst->_read_ra            = 1;
    1310     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1311     inst->_read_rb            = 1;
    1312     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1313     inst->_read_rc            = 0;
    1314 //  inst->_num_reg_rc         = ;
    1315     inst->_write_rd           = 0;
    1316 //  inst->_num_reg_rd         = ;
    1317     inst->_write_re           = 0;
    1318 //  inst->_num_reg_re         = ;
    1319     inst->_exception_use      = EXCEPTION_USE_NONE;
    1320     inst->_exception          = EXCEPTION_DECOD_NONE;
    1321 //  inst->_branch_condition   = ;
    1322 //  inst->_branch_stack_write = ;
    1323 //  inst->_branch_direction   = ;
    1324 //  inst->_address_next       = ; // don't change
     1308    inst->_immediat           = 0; // unnecessary
     1309    inst->_read_ra            = 1;
     1310    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1311    inst->_read_rb            = 1;
     1312    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1313    inst->_read_rc            = 0;
     1314    inst->_num_reg_rc         = 0; //unnecessary
     1315    inst->_write_rd           = 0;
     1316    inst->_num_reg_rd         = 0; //unnecessary
     1317    inst->_write_re           = 0;
     1318    inst->_num_reg_re         = 0; //unnecessary
     1319    inst->_exception_use      = EXCEPTION_USE_NONE;
     1320    inst->_exception          = EXCEPTION_DECOD_NONE;
     1321//  inst->_branch_condition   = ;
     1322//  inst->_branch_stack_write = ;
     1323//  inst->_branch_direction   = ;
     1324//  inst->_address_next       = ; // already define : PC+4 // don't change
    13251325    inst->_no_execute         = 0;
    13261326    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
     
    13401340    inst->_operation          = instruction_information(INSTRUCTION_L_MSYNC)._operation; //OPERATION_SPECIAL_L_MSYNC;
    13411341    inst->_has_immediat       = 0;
    1342 //  inst->_immediat           = ;
     1342    inst->_immediat           = 0; // unnecessary
    13431343    inst->_read_ra            = 0;
    1344 //  inst->_num_reg_ra         = ;
    1345     inst->_read_rb            = 0;
    1346 //  inst->_num_reg_rb         = ;
    1347     inst->_read_rc            = 0;
    1348 //  inst->_num_reg_rc         = ;
    1349     inst->_write_rd           = 0;
    1350 //  inst->_num_reg_rd         = ;
    1351     inst->_write_re           = 0;
    1352 //  inst->_num_reg_re         = ;
    1353     inst->_exception_use      = EXCEPTION_USE_NONE;
    1354     inst->_exception          = EXCEPTION_DECOD_NONE;
    1355 //  inst->_branch_condition   = ;
    1356 //  inst->_branch_stack_write = ;
    1357 //  inst->_branch_direction   = ;
    1358 //  inst->_address_next       = ; // don't change
     1344    inst->_num_reg_ra         = 0; //unnecessary
     1345    inst->_read_rb            = 0;
     1346    inst->_num_reg_rb         = 0; //unnecessary
     1347    inst->_read_rc            = 0;
     1348    inst->_num_reg_rc         = 0; //unnecessary
     1349    inst->_write_rd           = 0;
     1350    inst->_num_reg_rd         = 0; //unnecessary
     1351    inst->_write_re           = 0;
     1352    inst->_num_reg_re         = 0; //unnecessary
     1353    inst->_exception_use      = EXCEPTION_USE_NONE;
     1354    inst->_exception          = EXCEPTION_DECOD_NONE;
     1355//  inst->_branch_condition   = ;
     1356//  inst->_branch_stack_write = ;
     1357//  inst->_branch_direction   = ;
     1358//  inst->_address_next       = ; // already define : PC+4 // don't change
    13591359    inst->_no_execute         = 0;
    13601360    inst->_event_type         = EVENT_TYPE_MSYNC;
     
    13761376    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    13771377    inst->_read_rc            = 0;
    1378 //  inst->_num_reg_rc         = ;
    1379     inst->_write_rd           = 0;
    1380 //  inst->_num_reg_rd         = ;
    1381     inst->_write_re           = 0;
    1382 //  inst->_num_reg_re         = ;
    1383     inst->_exception_use      = EXCEPTION_USE_NONE;
    1384     inst->_exception          = EXCEPTION_DECOD_NONE;
    1385 //  inst->_branch_condition   = ;
    1386 //  inst->_branch_stack_write = ;
    1387 //  inst->_branch_direction   = ;
    1388 //  inst->_address_next       = ; // don't change
     1378    inst->_num_reg_rc         = 0; //unnecessary
     1379    inst->_write_rd           = 0;
     1380    inst->_num_reg_rd         = 0; //unnecessary
     1381    inst->_write_re           = 0;
     1382    inst->_num_reg_re         = 0; //unnecessary
     1383    inst->_exception_use      = EXCEPTION_USE_NONE;
     1384    inst->_exception          = EXCEPTION_DECOD_NONE;
     1385//  inst->_branch_condition   = ;
     1386//  inst->_branch_stack_write = ;
     1387//  inst->_branch_direction   = ;
     1388//  inst->_address_next       = ; // already define : PC+4 // don't change
    13891389    inst->_no_execute         = 0;
    13901390    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
     
    13981398    inst->_operation          = instruction_information(INSTRUCTION_L_MUL)._operation; //OPERATION_MUL_L_MUL;
    13991399    inst->_has_immediat       = 0;
    1400 //  inst->_immediat           = ;
    1401     inst->_read_ra            = 1;
    1402     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1403     inst->_read_rb            = 1;
    1404     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1405     inst->_read_rc            = 0;
    1406 //  inst->_num_reg_rc         = ;
     1400    inst->_immediat           = 0; // unnecessary
     1401    inst->_read_ra            = 1;
     1402    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1403    inst->_read_rb            = 1;
     1404    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1405    inst->_read_rc            = 0;
     1406    inst->_num_reg_rc         = 0; //unnecessary
    14071407    inst->_write_rd           = 1;
    14081408    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    14141414//  inst->_branch_stack_write = ;
    14151415//  inst->_branch_direction   = ;
    1416 //  inst->_address_next       = ;
     1416//  inst->_address_next       = ; // already define : PC+4
    14171417    inst->_no_execute         = 0;
    14181418    inst->_event_type         = EVENT_TYPE_NONE;
     
    14301430    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    14311431    inst->_read_rb            = 0;
    1432 //  inst->_num_reg_rb         = ;
    1433     inst->_read_rc            = 0;
    1434 //  inst->_num_reg_rc         = ;
     1432    inst->_num_reg_rb         = 0; //unnecessary
     1433    inst->_read_rc            = 0;
     1434    inst->_num_reg_rc         = 0; //unnecessary
    14351435    inst->_write_rd           = 1;
    14361436    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    14421442//  inst->_branch_stack_write = ;
    14431443//  inst->_branch_direction   = ;
    1444 //  inst->_address_next       = ;
     1444//  inst->_address_next       = ; // already define : PC+4
    14451445    inst->_no_execute         = 0;
    14461446    inst->_event_type         = EVENT_TYPE_NONE;
     
    14541454    inst->_operation          = instruction_information(INSTRUCTION_L_MULU)._operation; //OPERATION_MUL_L_MULU;
    14551455    inst->_has_immediat       = 0;
    1456 //  inst->_immediat           = ;
    1457     inst->_read_ra            = 1;
    1458     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1459     inst->_read_rb            = 1;
    1460     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1461     inst->_read_rc            = 0;
    1462 //  inst->_num_reg_rc         = ;
     1456    inst->_immediat           = 0; // unnecessary
     1457    inst->_read_ra            = 1;
     1458    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1459    inst->_read_rb            = 1;
     1460    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1461    inst->_read_rc            = 0;
     1462    inst->_num_reg_rc         = 0; //unnecessary
    14631463    inst->_write_rd           = 1;
    14641464    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    14701470//  inst->_branch_stack_write = ;
    14711471//  inst->_branch_direction   = ;
    1472 //  inst->_address_next       = ;
     1472//  inst->_address_next       = ; // already define : PC+4
    14731473    inst->_no_execute         = 0;
    14741474    inst->_event_type         = EVENT_TYPE_NONE;
     
    14841484//  inst->_immediat           = EXTENDZ(inst->_instruction,16);
    14851485    inst->_has_immediat       = 0;
    1486 //  inst->_immediat           = ;
     1486    inst->_immediat           = 0; // unnecessary
    14871487    inst->_read_ra            = 0;
    1488 //  inst->_num_reg_ra         = ;
    1489     inst->_read_rb            = 0;
    1490 //  inst->_num_reg_rb         = ;
    1491     inst->_read_rc            = 0;
    1492 //  inst->_num_reg_rc         = ;
    1493     inst->_write_rd           = 0;
    1494 //  inst->_num_reg_rd         = ;
    1495     inst->_write_re           = 0;
    1496 //  inst->_num_reg_re         = ;
    1497     inst->_exception_use      = EXCEPTION_USE_NONE;
    1498     inst->_exception          = EXCEPTION_DECOD_NONE;
    1499 //  inst->_branch_condition   = ;
    1500 //  inst->_branch_stack_write = ;
    1501 //  inst->_branch_direction   = ;
    1502 //  inst->_address_next       = ;
     1488    inst->_num_reg_ra         = 0; //unnecessary
     1489    inst->_read_rb            = 0;
     1490    inst->_num_reg_rb         = 0; //unnecessary
     1491    inst->_read_rc            = 0;
     1492    inst->_num_reg_rc         = 0; //unnecessary
     1493    inst->_write_rd           = 0;
     1494    inst->_num_reg_rd         = 0; //unnecessary
     1495    inst->_write_re           = 0;
     1496    inst->_num_reg_re         = 0; //unnecessary
     1497    inst->_exception_use      = EXCEPTION_USE_NONE;
     1498    inst->_exception          = EXCEPTION_DECOD_NONE;
     1499//  inst->_branch_condition   = ;
     1500//  inst->_branch_stack_write = ;
     1501//  inst->_branch_direction   = ;
     1502//  inst->_address_next       = ; // already define : PC+4
    15031503    inst->_no_execute         = 1;
    15041504    inst->_event_type         = EVENT_TYPE_NONE;
     
    15121512    inst->_operation          = instruction_information(INSTRUCTION_L_OR)._operation; //OPERATION_ALU_L_OR;
    15131513    inst->_has_immediat       = 0;
    1514 //  inst->_immediat           = ;
    1515     inst->_read_ra            = 1;
    1516     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1517     inst->_read_rb            = 1;
    1518     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1519     inst->_read_rc            = 0;
    1520 //  inst->_num_reg_rc         = ;
    1521     inst->_write_rd           = 1;
    1522     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1523     inst->_write_re           = 0;
    1524 //  inst->_num_reg_re         = ;
    1525     inst->_exception_use      = EXCEPTION_USE_NONE;
    1526     inst->_exception          = EXCEPTION_DECOD_NONE;
    1527 //  inst->_branch_condition   = ;
    1528 //  inst->_branch_stack_write = ;
    1529 //  inst->_branch_direction   = ;
    1530 //  inst->_address_next       = ;
     1514    inst->_immediat           = 0; // unnecessary
     1515    inst->_read_ra            = 1;
     1516    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1517    inst->_read_rb            = 1;
     1518    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1519    inst->_read_rc            = 0;
     1520    inst->_num_reg_rc         = 0; //unnecessary
     1521    inst->_write_rd           = 1;
     1522    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1523    inst->_write_re           = 0;
     1524    inst->_num_reg_re         = 0; //unnecessary
     1525    inst->_exception_use      = EXCEPTION_USE_NONE;
     1526    inst->_exception          = EXCEPTION_DECOD_NONE;
     1527//  inst->_branch_condition   = ;
     1528//  inst->_branch_stack_write = ;
     1529//  inst->_branch_direction   = ;
     1530//  inst->_address_next       = ; // already define : PC+4
    15311531    inst->_no_execute         = 0;
    15321532    inst->_event_type         = EVENT_TYPE_NONE;
     
    15441544    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    15451545    inst->_read_rb            = 0;
    1546 //  inst->_num_reg_rb         = ;
    1547     inst->_read_rc            = 0;
    1548 //  inst->_num_reg_rc         = ;
    1549     inst->_write_rd           = 1;
    1550     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1551     inst->_write_re           = 0;
    1552 //  inst->_num_reg_re         = ;
    1553     inst->_exception_use      = EXCEPTION_USE_NONE;
    1554     inst->_exception          = EXCEPTION_DECOD_NONE;
    1555 //  inst->_branch_condition   = ;
    1556 //  inst->_branch_stack_write = ;
    1557 //  inst->_branch_direction   = ;
    1558 //  inst->_address_next       = ;
     1546    inst->_num_reg_rb         = 0; //unnecessary
     1547    inst->_read_rc            = 0;
     1548    inst->_num_reg_rc         = 0; //unnecessary
     1549    inst->_write_rd           = 1;
     1550    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1551    inst->_write_re           = 0;
     1552    inst->_num_reg_re         = 0; //unnecessary
     1553    inst->_exception_use      = EXCEPTION_USE_NONE;
     1554    inst->_exception          = EXCEPTION_DECOD_NONE;
     1555//  inst->_branch_condition   = ;
     1556//  inst->_branch_stack_write = ;
     1557//  inst->_branch_direction   = ;
     1558//  inst->_address_next       = ; // already define : PC+4
    15591559    inst->_no_execute         = 0;
    15601560    inst->_event_type         = EVENT_TYPE_NONE;
     
    15741574    inst->_operation          = instruction_information(INSTRUCTION_L_PSYNC)._operation; //OPERATION_SPECIAL_L_PSYNC;
    15751575    inst->_has_immediat       = 0;
    1576 //  inst->_immediat           = ;
     1576    inst->_immediat           = 0; // unnecessary
    15771577    inst->_read_ra            = 0;
    1578 //  inst->_num_reg_ra         = ;
    1579     inst->_read_rb            = 0;
    1580 //  inst->_num_reg_rb         = ;
    1581     inst->_read_rc            = 0;
    1582 //  inst->_num_reg_rc         = ;
    1583     inst->_write_rd           = 0;
    1584 //  inst->_num_reg_rd         = ;
    1585     inst->_write_re           = 0;
    1586 //  inst->_num_reg_re         = ;
    1587     inst->_exception_use      = EXCEPTION_USE_NONE;
    1588     inst->_exception          = EXCEPTION_DECOD_NONE;
    1589 //  inst->_branch_condition   = ;
    1590 //  inst->_branch_stack_write = ;
    1591 //  inst->_branch_direction   = ;
    1592 //  inst->_address_next       = ; // don't change
     1578    inst->_num_reg_ra         = 0; //unnecessary
     1579    inst->_read_rb            = 0;
     1580    inst->_num_reg_rb         = 0; //unnecessary
     1581    inst->_read_rc            = 0;
     1582    inst->_num_reg_rc         = 0; //unnecessary
     1583    inst->_write_rd           = 0;
     1584    inst->_num_reg_rd         = 0; //unnecessary
     1585    inst->_write_re           = 0;
     1586    inst->_num_reg_re         = 0; //unnecessary
     1587    inst->_exception_use      = EXCEPTION_USE_NONE;
     1588    inst->_exception          = EXCEPTION_DECOD_NONE;
     1589//  inst->_branch_condition   = ;
     1590//  inst->_branch_stack_write = ;
     1591//  inst->_branch_direction   = ;
     1592//  inst->_address_next       = ; // already define : PC+4 // don't change
    15931593    inst->_no_execute         = 0;
    15941594    inst->_event_type         = EVENT_TYPE_PSYNC;
     
    16031603    inst->_operation          = instruction_information(INSTRUCTION_L_RFE)._operation; //OPERATION_SPECIAL_L_RFE;
    16041604    inst->_has_immediat       = 0;
    1605 //  inst->_immediat           = ;
     1605    inst->_immediat           = 0; // unnecessary
    16061606    inst->_read_ra            = 0;
    1607 //  inst->_num_reg_ra         = ;
    1608     inst->_read_rb            = 0;
    1609 //  inst->_num_reg_rb         = ;
    1610     inst->_read_rc            = 0;
    1611 //  inst->_num_reg_rc         = ;
    1612     inst->_write_rd           = 0;
    1613 //  inst->_num_reg_rd         = ;
    1614     inst->_write_re           = 0;
    1615 //  inst->_num_reg_re         = ;
    1616     inst->_exception_use      = EXCEPTION_USE_NONE;
    1617     inst->_exception          = EXCEPTION_DECOD_NONE;
    1618 //  inst->_branch_condition   = ;
    1619 //  inst->_branch_stack_write = ;
    1620 //  inst->_branch_direction   = ;
    1621 //  inst->_address_next       = ; // don't change
     1607    inst->_num_reg_ra         = 0; //unnecessary
     1608    inst->_read_rb            = 0;
     1609    inst->_num_reg_rb         = 0; //unnecessary
     1610    inst->_read_rc            = 0;
     1611    inst->_num_reg_rc         = 0; //unnecessary
     1612    inst->_write_rd           = 0;
     1613    inst->_num_reg_rd         = 0; //unnecessary
     1614    inst->_write_re           = 0;
     1615    inst->_num_reg_re         = 0; //unnecessary
     1616    inst->_exception_use      = EXCEPTION_USE_NONE;
     1617    inst->_exception          = EXCEPTION_DECOD_NONE;
     1618//  inst->_branch_condition   = ;
     1619//  inst->_branch_stack_write = ;
     1620//  inst->_branch_direction   = ;
     1621//  inst->_address_next       = ; // already define : PC+4 // don't change
    16221622    inst->_no_execute         = 1;
    16231623    inst->_event_type         = EVENT_TYPE_NONE; // can't anticip this instruction : must read EPCR in rename stage
     
    16311631    inst->_operation          = instruction_information(INSTRUCTION_L_ROR)._operation; //OPERATION_SHIFT_L_ROR;
    16321632    inst->_has_immediat       = 0;
    1633 //  inst->_immediat           = ;
    1634     inst->_read_ra            = 1;
    1635     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1636     inst->_read_rb            = 1;
    1637     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1638     inst->_read_rc            = 0;
    1639 //  inst->_num_reg_rc         = ;
    1640     inst->_write_rd           = 1;
    1641     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1642     inst->_write_re           = 0;
    1643 //  inst->_num_reg_re         = ;
    1644     inst->_exception_use      = EXCEPTION_USE_NONE;
    1645     inst->_exception          = EXCEPTION_DECOD_NONE;
    1646 //  inst->_branch_condition   = ;
    1647 //  inst->_branch_stack_write = ;
    1648 //  inst->_branch_direction   = ;
    1649 //  inst->_address_next       = ;
     1633    inst->_immediat           = 0; // unnecessary
     1634    inst->_read_ra            = 1;
     1635    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1636    inst->_read_rb            = 1;
     1637    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1638    inst->_read_rc            = 0;
     1639    inst->_num_reg_rc         = 0; //unnecessary
     1640    inst->_write_rd           = 1;
     1641    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1642    inst->_write_re           = 0;
     1643    inst->_num_reg_re         = 0; //unnecessary
     1644    inst->_exception_use      = EXCEPTION_USE_NONE;
     1645    inst->_exception          = EXCEPTION_DECOD_NONE;
     1646//  inst->_branch_condition   = ;
     1647//  inst->_branch_stack_write = ;
     1648//  inst->_branch_direction   = ;
     1649//  inst->_address_next       = ; // already define : PC+4
    16501650    inst->_no_execute         = 0;
    16511651    inst->_event_type         = EVENT_TYPE_NONE;
     
    16631663    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    16641664    inst->_read_rb            = 0;
    1665 //  inst->_num_reg_rb         = ;
    1666     inst->_read_rc            = 0;
    1667 //  inst->_num_reg_rc         = ;
    1668     inst->_write_rd           = 1;
    1669     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    1670     inst->_write_re           = 0;
    1671 //  inst->_num_reg_re         = ;
    1672     inst->_exception_use      = EXCEPTION_USE_NONE;
    1673     inst->_exception          = EXCEPTION_DECOD_NONE;
    1674 //  inst->_branch_condition   = ;
    1675 //  inst->_branch_stack_write = ;
    1676 //  inst->_branch_direction   = ;
    1677 //  inst->_address_next       = ;
     1665    inst->_num_reg_rb         = 0; //unnecessary
     1666    inst->_read_rc            = 0;
     1667    inst->_num_reg_rc         = 0; //unnecessary
     1668    inst->_write_rd           = 1;
     1669    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     1670    inst->_write_re           = 0;
     1671    inst->_num_reg_re         = 0; //unnecessary
     1672    inst->_exception_use      = EXCEPTION_USE_NONE;
     1673    inst->_exception          = EXCEPTION_DECOD_NONE;
     1674//  inst->_branch_condition   = ;
     1675//  inst->_branch_stack_write = ;
     1676//  inst->_branch_direction   = ;
     1677//  inst->_address_next       = ; // already define : PC+4
    16781678    inst->_no_execute         = 0;
    16791679    inst->_event_type         = EVENT_TYPE_NONE;
     
    16941694    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    16951695    inst->_read_rc            = 0;
    1696 //  inst->_num_reg_rc         = ;
    1697     inst->_write_rd           = 0;
    1698 //  inst->_num_reg_rd         = ;
    1699     inst->_write_re           = 0;
    1700 //  inst->_num_reg_re         = ;
     1696    inst->_num_reg_rc         = 0; //unnecessary
     1697    inst->_write_rd           = 0;
     1698    inst->_num_reg_rd         = 0; //unnecessary
     1699    inst->_write_re           = 0;
     1700    inst->_num_reg_re         = 0; //unnecessary
    17011701    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT;
    17021702    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    17041704//  inst->_branch_stack_write = ;
    17051705//  inst->_branch_direction   = ;
    1706 //  inst->_address_next       = ;
     1706//  inst->_address_next       = ; // already define : PC+4
    17071707    inst->_no_execute         = 0;
    17081708    inst->_event_type         = EVENT_TYPE_NONE;
     
    17231723    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    17241724    inst->_read_rc            = 0;
    1725 //  inst->_num_reg_rc         = ;
    1726     inst->_write_rd           = 0;
    1727 //  inst->_num_reg_rd         = ;
    1728     inst->_write_re           = 0;
    1729 //  inst->_num_reg_re         = ;
     1725    inst->_num_reg_rc         = 0; //unnecessary
     1726    inst->_write_rd           = 0;
     1727    inst->_num_reg_rd         = 0; //unnecessary
     1728    inst->_write_re           = 0;
     1729    inst->_num_reg_re         = 0; //unnecessary
    17301730    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    17311731    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    17331733//  inst->_branch_stack_write = ;
    17341734//  inst->_branch_direction   = ;
    1735 //  inst->_address_next       = ;
     1735//  inst->_address_next       = ; // already define : PC+4
    17361736    inst->_no_execute         = 0;
    17371737    inst->_event_type         = EVENT_TYPE_NONE;
     
    17451745    inst->_operation          = instruction_information(INSTRUCTION_L_SFEQ)._operation; //OPERATION_TEST_L_SFEQ;
    17461746    inst->_has_immediat       = 0;
    1747 //  inst->_immediat           = ;
    1748     inst->_read_ra            = 1;
    1749     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1750     inst->_read_rb            = 1;
    1751     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1752     inst->_read_rc            = 0;
    1753 //  inst->_num_reg_rc         = ;
    1754     inst->_write_rd           = 0;
    1755 //  inst->_num_reg_rd         = ;
     1747    inst->_immediat           = 0; // unnecessary
     1748    inst->_read_ra            = 1;
     1749    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1750    inst->_read_rb            = 1;
     1751    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1752    inst->_read_rc            = 0;
     1753    inst->_num_reg_rc         = 0; //unnecessary
     1754    inst->_write_rd           = 0;
     1755    inst->_num_reg_rd         = 0; //unnecessary
    17561756    inst->_write_re           = 1;
    17571757    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    17611761//  inst->_branch_stack_write = ;
    17621762//  inst->_branch_direction   = ;
    1763 //  inst->_address_next       = ;
     1763//  inst->_address_next       = ; // already define : PC+4
    17641764    inst->_no_execute         = 0;
    17651765    inst->_event_type         = EVENT_TYPE_NONE;
     
    17771777    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    17781778    inst->_read_rb            = 0;
    1779 //  inst->_num_reg_rb         = ;
    1780     inst->_read_rc            = 0;
    1781 //  inst->_num_reg_rc         = ;
    1782     inst->_write_rd           = 0;
    1783 //  inst->_num_reg_rd         = ;
     1779    inst->_num_reg_rb         = 0; //unnecessary
     1780    inst->_read_rc            = 0;
     1781    inst->_num_reg_rc         = 0; //unnecessary
     1782    inst->_write_rd           = 0;
     1783    inst->_num_reg_rd         = 0; //unnecessary
    17841784    inst->_write_re           = 1;
    17851785    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    17891789//  inst->_branch_stack_write = ;
    17901790//  inst->_branch_direction   = ;
    1791 //  inst->_address_next       = ;
     1791//  inst->_address_next       = ; // already define : PC+4
    17921792    inst->_no_execute         = 0;
    17931793    inst->_event_type         = EVENT_TYPE_NONE;
     
    18011801    inst->_operation          = instruction_information(INSTRUCTION_L_SFGES)._operation; //OPERATION_TEST_L_SFGES;
    18021802    inst->_has_immediat       = 0;
    1803 //  inst->_immediat           = ;
    1804     inst->_read_ra            = 1;
    1805     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1806     inst->_read_rb            = 1;
    1807     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1808     inst->_read_rc            = 0;
    1809 //  inst->_num_reg_rc         = ;
    1810     inst->_write_rd           = 0;
    1811 //  inst->_num_reg_rd         = ;
     1803    inst->_immediat           = 0; // unnecessary
     1804    inst->_read_ra            = 1;
     1805    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1806    inst->_read_rb            = 1;
     1807    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1808    inst->_read_rc            = 0;
     1809    inst->_num_reg_rc         = 0; //unnecessary
     1810    inst->_write_rd           = 0;
     1811    inst->_num_reg_rd         = 0; //unnecessary
    18121812    inst->_write_re           = 1;
    18131813    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    18171817//  inst->_branch_stack_write = ;
    18181818//  inst->_branch_direction   = ;
    1819 //  inst->_address_next       = ;
     1819//  inst->_address_next       = ; // already define : PC+4
    18201820    inst->_no_execute         = 0;
    18211821    inst->_event_type         = EVENT_TYPE_NONE;
     
    18331833    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    18341834    inst->_read_rb            = 0;
    1835 //  inst->_num_reg_rb         = ;
    1836     inst->_read_rc            = 0;
    1837 //  inst->_num_reg_rc         = ;
    1838     inst->_write_rd           = 0;
    1839 //  inst->_num_reg_rd         = ;
     1835    inst->_num_reg_rb         = 0; //unnecessary
     1836    inst->_read_rc            = 0;
     1837    inst->_num_reg_rc         = 0; //unnecessary
     1838    inst->_write_rd           = 0;
     1839    inst->_num_reg_rd         = 0; //unnecessary
    18401840    inst->_write_re           = 1;
    18411841    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    18451845//  inst->_branch_stack_write = ;
    18461846//  inst->_branch_direction   = ;
    1847 //  inst->_address_next       = ;
     1847//  inst->_address_next       = ; // already define : PC+4
    18481848    inst->_no_execute         = 0;
    18491849    inst->_event_type         = EVENT_TYPE_NONE;
     
    18571857    inst->_operation          = instruction_information(INSTRUCTION_L_SFGEU)._operation; //OPERATION_TEST_L_SFGEU;
    18581858    inst->_has_immediat       = 0;
    1859 //  inst->_immediat           = ;
    1860     inst->_read_ra            = 1;
    1861     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1862     inst->_read_rb            = 1;
    1863     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1864     inst->_read_rc            = 0;
    1865 //  inst->_num_reg_rc         = ;
    1866     inst->_write_rd           = 0;
    1867 //  inst->_num_reg_rd         = ;
     1859    inst->_immediat           = 0; // unnecessary
     1860    inst->_read_ra            = 1;
     1861    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1862    inst->_read_rb            = 1;
     1863    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1864    inst->_read_rc            = 0;
     1865    inst->_num_reg_rc         = 0; //unnecessary
     1866    inst->_write_rd           = 0;
     1867    inst->_num_reg_rd         = 0; //unnecessary
    18681868    inst->_write_re           = 1;
    18691869    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    18731873//  inst->_branch_stack_write = ;
    18741874//  inst->_branch_direction   = ;
    1875 //  inst->_address_next       = ;
     1875//  inst->_address_next       = ; // already define : PC+4
    18761876    inst->_no_execute         = 0;
    18771877    inst->_event_type         = EVENT_TYPE_NONE;
     
    18891889    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    18901890    inst->_read_rb            = 0;
    1891 //  inst->_num_reg_rb         = ;
    1892     inst->_read_rc            = 0;
    1893 //  inst->_num_reg_rc         = ;
    1894     inst->_write_rd           = 0;
    1895 //  inst->_num_reg_rd         = ;
     1891    inst->_num_reg_rb         = 0; //unnecessary
     1892    inst->_read_rc            = 0;
     1893    inst->_num_reg_rc         = 0; //unnecessary
     1894    inst->_write_rd           = 0;
     1895    inst->_num_reg_rd         = 0; //unnecessary
    18961896    inst->_write_re           = 1;
    18971897    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    19011901//  inst->_branch_stack_write = ;
    19021902//  inst->_branch_direction   = ;
    1903 //  inst->_address_next       = ;
     1903//  inst->_address_next       = ; // already define : PC+4
    19041904    inst->_no_execute         = 0;
    19051905    inst->_event_type         = EVENT_TYPE_NONE;
     
    19131913    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTS)._operation; //OPERATION_TEST_L_SFGTS;
    19141914    inst->_has_immediat       = 0;
    1915 //  inst->_immediat           = ;
    1916     inst->_read_ra            = 1;
    1917     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1918     inst->_read_rb            = 1;
    1919     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1920     inst->_read_rc            = 0;
    1921 //  inst->_num_reg_rc         = ;
    1922     inst->_write_rd           = 0;
    1923 //  inst->_num_reg_rd         = ;
     1915    inst->_immediat           = 0; // unnecessary
     1916    inst->_read_ra            = 1;
     1917    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1918    inst->_read_rb            = 1;
     1919    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1920    inst->_read_rc            = 0;
     1921    inst->_num_reg_rc         = 0; //unnecessary
     1922    inst->_write_rd           = 0;
     1923    inst->_num_reg_rd         = 0; //unnecessary
    19241924    inst->_write_re           = 1;
    19251925    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    19291929//  inst->_branch_stack_write = ;
    19301930//  inst->_branch_direction   = ;
    1931 //  inst->_address_next       = ;
     1931//  inst->_address_next       = ; // already define : PC+4
    19321932    inst->_no_execute         = 0;
    19331933    inst->_event_type         = EVENT_TYPE_NONE;
     
    19451945    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    19461946    inst->_read_rb            = 0;
    1947 //  inst->_num_reg_rb         = ;
    1948     inst->_read_rc            = 0;
    1949 //  inst->_num_reg_rc         = ;
    1950     inst->_write_rd           = 0;
    1951 //  inst->_num_reg_rd         = ;
     1947    inst->_num_reg_rb         = 0; //unnecessary
     1948    inst->_read_rc            = 0;
     1949    inst->_num_reg_rc         = 0; //unnecessary
     1950    inst->_write_rd           = 0;
     1951    inst->_num_reg_rd         = 0; //unnecessary
    19521952    inst->_write_re           = 1;
    19531953    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    19571957//  inst->_branch_stack_write = ;
    19581958//  inst->_branch_direction   = ;
    1959 //  inst->_address_next       = ;
     1959//  inst->_address_next       = ; // already define : PC+4
    19601960    inst->_no_execute         = 0;
    19611961    inst->_event_type         = EVENT_TYPE_NONE;
     
    19691969    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTU)._operation; //OPERATION_TEST_L_SFGTU;
    19701970    inst->_has_immediat       = 0;
    1971 //  inst->_immediat           = ;
    1972     inst->_read_ra            = 1;
    1973     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    1974     inst->_read_rb            = 1;
    1975     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    1976     inst->_read_rc            = 0;
    1977 //  inst->_num_reg_rc         = ;
    1978     inst->_write_rd           = 0;
    1979 //  inst->_num_reg_rd         = ;
     1971    inst->_immediat           = 0; // unnecessary
     1972    inst->_read_ra            = 1;
     1973    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     1974    inst->_read_rb            = 1;
     1975    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     1976    inst->_read_rc            = 0;
     1977    inst->_num_reg_rc         = 0; //unnecessary
     1978    inst->_write_rd           = 0;
     1979    inst->_num_reg_rd         = 0; //unnecessary
    19801980    inst->_write_re           = 1;
    19811981    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    19851985//  inst->_branch_stack_write = ;
    19861986//  inst->_branch_direction   = ;
    1987 //  inst->_address_next       = ;
     1987//  inst->_address_next       = ; // already define : PC+4
    19881988    inst->_no_execute         = 0;
    19891989    inst->_event_type         = EVENT_TYPE_NONE;
     
    20012001    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    20022002    inst->_read_rb            = 0;
    2003 //  inst->_num_reg_rb         = ;
    2004     inst->_read_rc            = 0;
    2005 //  inst->_num_reg_rc         = ;
    2006     inst->_write_rd           = 0;
    2007 //  inst->_num_reg_rd         = ;
     2003    inst->_num_reg_rb         = 0; //unnecessary
     2004    inst->_read_rc            = 0;
     2005    inst->_num_reg_rc         = 0; //unnecessary
     2006    inst->_write_rd           = 0;
     2007    inst->_num_reg_rd         = 0; //unnecessary
    20082008    inst->_write_re           = 1;
    20092009    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    20132013//  inst->_branch_stack_write = ;
    20142014//  inst->_branch_direction   = ;
    2015 //  inst->_address_next       = ;
     2015//  inst->_address_next       = ; // already define : PC+4
    20162016    inst->_no_execute         = 0;
    20172017    inst->_event_type         = EVENT_TYPE_NONE;
     
    20252025    inst->_operation          = instruction_information(INSTRUCTION_L_SFLES)._operation; //OPERATION_TEST_L_SFLES;
    20262026    inst->_has_immediat       = 0;
    2027 //  inst->_immediat           = ;
    2028     inst->_read_ra            = 1;
    2029     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2030     inst->_read_rb            = 1;
    2031     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2032     inst->_read_rc            = 0;
    2033 //  inst->_num_reg_rc         = ;
    2034     inst->_write_rd           = 0;
    2035 //  inst->_num_reg_rd         = ;
     2027    inst->_immediat           = 0; // unnecessary
     2028    inst->_read_ra            = 1;
     2029    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2030    inst->_read_rb            = 1;
     2031    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2032    inst->_read_rc            = 0;
     2033    inst->_num_reg_rc         = 0; //unnecessary
     2034    inst->_write_rd           = 0;
     2035    inst->_num_reg_rd         = 0; //unnecessary
    20362036    inst->_write_re           = 1;
    20372037    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    20412041//  inst->_branch_stack_write = ;
    20422042//  inst->_branch_direction   = ;
    2043 //  inst->_address_next       = ;
     2043//  inst->_address_next       = ; // already define : PC+4
    20442044    inst->_no_execute         = 0;
    20452045    inst->_event_type         = EVENT_TYPE_NONE;
     
    20572057    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    20582058    inst->_read_rb            = 0;
    2059 //  inst->_num_reg_rb         = ;
    2060     inst->_read_rc            = 0;
    2061 //  inst->_num_reg_rc         = ;
    2062     inst->_write_rd           = 0;
    2063 //  inst->_num_reg_rd         = ;
     2059    inst->_num_reg_rb         = 0; //unnecessary
     2060    inst->_read_rc            = 0;
     2061    inst->_num_reg_rc         = 0; //unnecessary
     2062    inst->_write_rd           = 0;
     2063    inst->_num_reg_rd         = 0; //unnecessary
    20642064    inst->_write_re           = 1;
    20652065    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    20692069//  inst->_branch_stack_write = ;
    20702070//  inst->_branch_direction   = ;
    2071 //  inst->_address_next       = ;
     2071//  inst->_address_next       = ; // already define : PC+4
    20722072    inst->_no_execute         = 0;
    20732073    inst->_event_type         = EVENT_TYPE_NONE;
     
    20812081    inst->_operation          = instruction_information(INSTRUCTION_L_SFLEU)._operation; //OPERATION_TEST_L_SFLEU;
    20822082    inst->_has_immediat       = 0;
    2083 //  inst->_immediat           = ;
    2084     inst->_read_ra            = 1;
    2085     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2086     inst->_read_rb            = 1;
    2087     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2088     inst->_read_rc            = 0;
    2089 //  inst->_num_reg_rc         = ;
    2090     inst->_write_rd           = 0;
    2091 //  inst->_num_reg_rd         = ;
     2083    inst->_immediat           = 0; // unnecessary
     2084    inst->_read_ra            = 1;
     2085    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2086    inst->_read_rb            = 1;
     2087    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2088    inst->_read_rc            = 0;
     2089    inst->_num_reg_rc         = 0; //unnecessary
     2090    inst->_write_rd           = 0;
     2091    inst->_num_reg_rd         = 0; //unnecessary
    20922092    inst->_write_re           = 1;
    20932093    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    20972097//  inst->_branch_stack_write = ;
    20982098//  inst->_branch_direction   = ;
    2099 //  inst->_address_next       = ;
     2099//  inst->_address_next       = ; // already define : PC+4
    21002100    inst->_no_execute         = 0;
    21012101    inst->_event_type         = EVENT_TYPE_NONE;
     
    21132113    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    21142114    inst->_read_rb            = 0;
    2115 //  inst->_num_reg_rb         = ;
    2116     inst->_read_rc            = 0;
    2117 //  inst->_num_reg_rc         = ;
    2118     inst->_write_rd           = 0;
    2119 //  inst->_num_reg_rd         = ;
     2115    inst->_num_reg_rb         = 0; //unnecessary
     2116    inst->_read_rc            = 0;
     2117    inst->_num_reg_rc         = 0; //unnecessary
     2118    inst->_write_rd           = 0;
     2119    inst->_num_reg_rd         = 0; //unnecessary
    21202120    inst->_write_re           = 1;
    21212121    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    21252125//  inst->_branch_stack_write = ;
    21262126//  inst->_branch_direction   = ;
    2127 //  inst->_address_next       = ;
     2127//  inst->_address_next       = ; // already define : PC+4
    21282128    inst->_no_execute         = 0;
    21292129    inst->_event_type         = EVENT_TYPE_NONE;
     
    21372137    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTS)._operation; //OPERATION_TEST_L_SFLTS;
    21382138    inst->_has_immediat       = 0;
    2139 //  inst->_immediat           = ;
    2140     inst->_read_ra            = 1;
    2141     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2142     inst->_read_rb            = 1;
    2143     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2144     inst->_read_rc            = 0;
    2145 //  inst->_num_reg_rc         = ;
    2146     inst->_write_rd           = 0;
    2147 //  inst->_num_reg_rd         = ;
     2139    inst->_immediat           = 0; // unnecessary
     2140    inst->_read_ra            = 1;
     2141    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2142    inst->_read_rb            = 1;
     2143    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2144    inst->_read_rc            = 0;
     2145    inst->_num_reg_rc         = 0; //unnecessary
     2146    inst->_write_rd           = 0;
     2147    inst->_num_reg_rd         = 0; //unnecessary
    21482148    inst->_write_re           = 1;
    21492149    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    21532153//  inst->_branch_stack_write = ;
    21542154//  inst->_branch_direction   = ;
    2155 //  inst->_address_next       = ;
     2155//  inst->_address_next       = ; // already define : PC+4
    21562156    inst->_no_execute         = 0;
    21572157    inst->_event_type         = EVENT_TYPE_NONE;
     
    21692169    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    21702170    inst->_read_rb            = 0;
    2171 //  inst->_num_reg_rb         = ;
    2172     inst->_read_rc            = 0;
    2173 //  inst->_num_reg_rc         = ;
    2174     inst->_write_rd           = 0;
    2175 //  inst->_num_reg_rd         = ;
     2171    inst->_num_reg_rb         = 0; //unnecessary
     2172    inst->_read_rc            = 0;
     2173    inst->_num_reg_rc         = 0; //unnecessary
     2174    inst->_write_rd           = 0;
     2175    inst->_num_reg_rd         = 0; //unnecessary
    21762176    inst->_write_re           = 1;
    21772177    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    21812181//  inst->_branch_stack_write = ;
    21822182//  inst->_branch_direction   = ;
    2183 //  inst->_address_next       = ;
     2183//  inst->_address_next       = ; // already define : PC+4
    21842184    inst->_no_execute         = 0;
    21852185    inst->_event_type         = EVENT_TYPE_NONE;
     
    21932193    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTU)._operation; //OPERATION_TEST_L_SFLTU;
    21942194    inst->_has_immediat       = 0;
    2195 //  inst->_immediat           = ;
    2196     inst->_read_ra            = 1;
    2197     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2198     inst->_read_rb            = 1;
    2199     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2200     inst->_read_rc            = 0;
    2201 //  inst->_num_reg_rc         = ;
    2202     inst->_write_rd           = 0;
    2203 //  inst->_num_reg_rd         = ;
     2195    inst->_immediat           = 0; // unnecessary
     2196    inst->_read_ra            = 1;
     2197    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2198    inst->_read_rb            = 1;
     2199    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2200    inst->_read_rc            = 0;
     2201    inst->_num_reg_rc         = 0; //unnecessary
     2202    inst->_write_rd           = 0;
     2203    inst->_num_reg_rd         = 0; //unnecessary
    22042204    inst->_write_re           = 1;
    22052205    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    22092209//  inst->_branch_stack_write = ;
    22102210//  inst->_branch_direction   = ;
    2211 //  inst->_address_next       = ;
     2211//  inst->_address_next       = ; // already define : PC+4
    22122212    inst->_no_execute         = 0;
    22132213    inst->_event_type         = EVENT_TYPE_NONE;
     
    22252225    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    22262226    inst->_read_rb            = 0;
    2227 //  inst->_num_reg_rb         = ;
    2228     inst->_read_rc            = 0;
    2229 //  inst->_num_reg_rc         = ;
    2230     inst->_write_rd           = 0;
    2231 //  inst->_num_reg_rd         = ;
     2227    inst->_num_reg_rb         = 0; //unnecessary
     2228    inst->_read_rc            = 0;
     2229    inst->_num_reg_rc         = 0; //unnecessary
     2230    inst->_write_rd           = 0;
     2231    inst->_num_reg_rd         = 0; //unnecessary
    22322232    inst->_write_re           = 1;
    22332233    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    22372237//  inst->_branch_stack_write = ;
    22382238//  inst->_branch_direction   = ;
    2239 //  inst->_address_next       = ;
     2239//  inst->_address_next       = ; // already define : PC+4
    22402240    inst->_no_execute         = 0;
    22412241    inst->_event_type         = EVENT_TYPE_NONE;
     
    22492249    inst->_operation          = instruction_information(INSTRUCTION_L_SFNE)._operation; //OPERATION_TEST_L_SFNE;
    22502250    inst->_has_immediat       = 0;
    2251 //  inst->_immediat           = ;
    2252     inst->_read_ra            = 1;
    2253     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2254     inst->_read_rb            = 1;
    2255     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2256     inst->_read_rc            = 0;
    2257 //  inst->_num_reg_rc         = ;
    2258     inst->_write_rd           = 0;
    2259 //  inst->_num_reg_rd         = ;
     2251    inst->_immediat           = 0; // unnecessary
     2252    inst->_read_ra            = 1;
     2253    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2254    inst->_read_rb            = 1;
     2255    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2256    inst->_read_rc            = 0;
     2257    inst->_num_reg_rc         = 0; //unnecessary
     2258    inst->_write_rd           = 0;
     2259    inst->_num_reg_rd         = 0; //unnecessary
    22602260    inst->_write_re           = 1;
    22612261    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    22652265//  inst->_branch_stack_write = ;
    22662266//  inst->_branch_direction   = ;
    2267 //  inst->_address_next       = ;
     2267//  inst->_address_next       = ; // already define : PC+4
    22682268    inst->_no_execute         = 0;
    22692269    inst->_event_type         = EVENT_TYPE_NONE;
     
    22812281    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    22822282    inst->_read_rb            = 0;
    2283 //  inst->_num_reg_rb         = ;
    2284     inst->_read_rc            = 0;
    2285 //  inst->_num_reg_rc         = ;
    2286     inst->_write_rd           = 0;
    2287 //  inst->_num_reg_rd         = ;
     2283    inst->_num_reg_rb         = 0; //unnecessary
     2284    inst->_read_rc            = 0;
     2285    inst->_num_reg_rc         = 0; //unnecessary
     2286    inst->_write_rd           = 0;
     2287    inst->_num_reg_rd         = 0; //unnecessary
    22882288    inst->_write_re           = 1;
    22892289    inst->_num_reg_re         = SPR_LOGIC_SR_F;
     
    22932293//  inst->_branch_stack_write = ;
    22942294//  inst->_branch_direction   = ;
    2295 //  inst->_address_next       = ;
     2295//  inst->_address_next       = ; // already define : PC+4
    22962296    inst->_no_execute         = 0;
    22972297    inst->_event_type         = EVENT_TYPE_NONE;
     
    23122312    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    23132313    inst->_read_rc            = 0;
    2314 //  inst->_num_reg_rc         = ;
    2315     inst->_write_rd           = 0;
    2316 //  inst->_num_reg_rd         = ;
    2317     inst->_write_re           = 0;
    2318 //  inst->_num_reg_re         = ;
     2314    inst->_num_reg_rc         = 0; //unnecessary
     2315    inst->_write_rd           = 0;
     2316    inst->_num_reg_rd         = 0; //unnecessary
     2317    inst->_write_re           = 0;
     2318    inst->_num_reg_re         = 0; //unnecessary
    23192319    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    23202320    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    23222322//  inst->_branch_stack_write = ;
    23232323//  inst->_branch_direction   = ;
    2324 //  inst->_address_next       = ;
     2324//  inst->_address_next       = ; // already define : PC+4
    23252325    inst->_no_execute         = 0;
    23262326    inst->_event_type         = EVENT_TYPE_NONE;
     
    23342334    inst->_operation          = instruction_information(INSTRUCTION_L_SLL)._operation; //OPERATION_SHIFT_L_SLL;
    23352335    inst->_has_immediat       = 0;
    2336 //  inst->_immediat           = ;
    2337     inst->_read_ra            = 1;
    2338     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2339     inst->_read_rb            = 1;
    2340     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2341     inst->_read_rc            = 0;
    2342 //  inst->_num_reg_rc         = ;
    2343     inst->_write_rd           = 1;
    2344     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2345     inst->_write_re           = 0;
    2346 //  inst->_num_reg_re         = ;
    2347     inst->_exception_use      = EXCEPTION_USE_NONE;
    2348     inst->_exception          = EXCEPTION_DECOD_NONE;
    2349 //  inst->_branch_condition   = ;
    2350 //  inst->_branch_stack_write = ;
    2351 //  inst->_branch_direction   = ;
    2352 //  inst->_address_next       = ;
     2336    inst->_immediat           = 0; // unnecessary
     2337    inst->_read_ra            = 1;
     2338    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2339    inst->_read_rb            = 1;
     2340    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2341    inst->_read_rc            = 0;
     2342    inst->_num_reg_rc         = 0; //unnecessary
     2343    inst->_write_rd           = 1;
     2344    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2345    inst->_write_re           = 0;
     2346    inst->_num_reg_re         = 0; //unnecessary
     2347    inst->_exception_use      = EXCEPTION_USE_NONE;
     2348    inst->_exception          = EXCEPTION_DECOD_NONE;
     2349//  inst->_branch_condition   = ;
     2350//  inst->_branch_stack_write = ;
     2351//  inst->_branch_direction   = ;
     2352//  inst->_address_next       = ; // already define : PC+4
    23532353    inst->_no_execute         = 0;
    23542354    inst->_event_type         = EVENT_TYPE_NONE;
     
    23662366    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    23672367    inst->_read_rb            = 0;
    2368 //  inst->_num_reg_rb         = ;
    2369     inst->_read_rc            = 0;
    2370 //  inst->_num_reg_rc         = ;
    2371     inst->_write_rd           = 1;
    2372     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2373     inst->_write_re           = 0;
    2374 //  inst->_num_reg_re         = ;
    2375     inst->_exception_use      = EXCEPTION_USE_NONE;
    2376     inst->_exception          = EXCEPTION_DECOD_NONE;
    2377 //  inst->_branch_condition   = ;
    2378 //  inst->_branch_stack_write = ;
    2379 //  inst->_branch_direction   = ;
    2380 //  inst->_address_next       = ;
     2368    inst->_num_reg_rb         = 0; //unnecessary
     2369    inst->_read_rc            = 0;
     2370    inst->_num_reg_rc         = 0; //unnecessary
     2371    inst->_write_rd           = 1;
     2372    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2373    inst->_write_re           = 0;
     2374    inst->_num_reg_re         = 0; //unnecessary
     2375    inst->_exception_use      = EXCEPTION_USE_NONE;
     2376    inst->_exception          = EXCEPTION_DECOD_NONE;
     2377//  inst->_branch_condition   = ;
     2378//  inst->_branch_stack_write = ;
     2379//  inst->_branch_direction   = ;
     2380//  inst->_address_next       = ; // already define : PC+4
    23812381    inst->_no_execute         = 0;
    23822382    inst->_event_type         = EVENT_TYPE_NONE;
     
    23902390    inst->_operation          = instruction_information(INSTRUCTION_L_SRA)._operation; //OPERATION_SHIFT_L_SRA;
    23912391    inst->_has_immediat       = 0;
    2392 //  inst->_immediat           = ;
    2393     inst->_read_ra            = 1;
    2394     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2395     inst->_read_rb            = 1;
    2396     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2397     inst->_read_rc            = 0;
    2398 //  inst->_num_reg_rc         = ;
    2399     inst->_write_rd           = 1;
    2400     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2401     inst->_write_re           = 0;
    2402 //  inst->_num_reg_re         = ;
    2403     inst->_exception_use      = EXCEPTION_USE_NONE;
    2404     inst->_exception          = EXCEPTION_DECOD_NONE;
    2405 //  inst->_branch_condition   = ;
    2406 //  inst->_branch_stack_write = ;
    2407 //  inst->_branch_direction   = ;
    2408 //  inst->_address_next       = ;
     2392    inst->_immediat           = 0; // unnecessary
     2393    inst->_read_ra            = 1;
     2394    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2395    inst->_read_rb            = 1;
     2396    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2397    inst->_read_rc            = 0;
     2398    inst->_num_reg_rc         = 0; //unnecessary
     2399    inst->_write_rd           = 1;
     2400    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2401    inst->_write_re           = 0;
     2402    inst->_num_reg_re         = 0; //unnecessary
     2403    inst->_exception_use      = EXCEPTION_USE_NONE;
     2404    inst->_exception          = EXCEPTION_DECOD_NONE;
     2405//  inst->_branch_condition   = ;
     2406//  inst->_branch_stack_write = ;
     2407//  inst->_branch_direction   = ;
     2408//  inst->_address_next       = ; // already define : PC+4
    24092409    inst->_no_execute         = 0;
    24102410    inst->_event_type         = EVENT_TYPE_NONE;
     
    24222422    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    24232423    inst->_read_rb            = 0;
    2424 //  inst->_num_reg_rb         = ;
    2425     inst->_read_rc            = 0;
    2426 //  inst->_num_reg_rc         = ;
    2427     inst->_write_rd           = 1;
    2428     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2429     inst->_write_re           = 0;
    2430 //  inst->_num_reg_re         = ;
    2431     inst->_exception_use      = EXCEPTION_USE_NONE;
    2432     inst->_exception          = EXCEPTION_DECOD_NONE;
    2433 //  inst->_branch_condition   = ;
    2434 //  inst->_branch_stack_write = ;
    2435 //  inst->_branch_direction   = ;
    2436 //  inst->_address_next       = ;
     2424    inst->_num_reg_rb         = 0; //unnecessary
     2425    inst->_read_rc            = 0;
     2426    inst->_num_reg_rc         = 0; //unnecessary
     2427    inst->_write_rd           = 1;
     2428    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2429    inst->_write_re           = 0;
     2430    inst->_num_reg_re         = 0; //unnecessary
     2431    inst->_exception_use      = EXCEPTION_USE_NONE;
     2432    inst->_exception          = EXCEPTION_DECOD_NONE;
     2433//  inst->_branch_condition   = ;
     2434//  inst->_branch_stack_write = ;
     2435//  inst->_branch_direction   = ;
     2436//  inst->_address_next       = ; // already define : PC+4
    24372437    inst->_no_execute         = 0;
    24382438    inst->_event_type         = EVENT_TYPE_NONE;
     
    24462446    inst->_operation          = instruction_information(INSTRUCTION_L_SRL)._operation; //OPERATION_SHIFT_L_SRL;
    24472447    inst->_has_immediat       = 0;
    2448 //  inst->_immediat           = ;
    2449     inst->_read_ra            = 1;
    2450     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2451     inst->_read_rb            = 1;
    2452     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2453     inst->_read_rc            = 0;
    2454 //  inst->_num_reg_rc         = ;
    2455     inst->_write_rd           = 1;
    2456     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2457     inst->_write_re           = 0;
    2458 //  inst->_num_reg_re         = ;
    2459     inst->_exception_use      = EXCEPTION_USE_NONE;
    2460     inst->_exception          = EXCEPTION_DECOD_NONE;
    2461 //  inst->_branch_condition   = ;
    2462 //  inst->_branch_stack_write = ;
    2463 //  inst->_branch_direction   = ;
    2464 //  inst->_address_next       = ;
     2448    inst->_immediat           = 0; // unnecessary
     2449    inst->_read_ra            = 1;
     2450    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2451    inst->_read_rb            = 1;
     2452    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2453    inst->_read_rc            = 0;
     2454    inst->_num_reg_rc         = 0; //unnecessary
     2455    inst->_write_rd           = 1;
     2456    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2457    inst->_write_re           = 0;
     2458    inst->_num_reg_re         = 0; //unnecessary
     2459    inst->_exception_use      = EXCEPTION_USE_NONE;
     2460    inst->_exception          = EXCEPTION_DECOD_NONE;
     2461//  inst->_branch_condition   = ;
     2462//  inst->_branch_stack_write = ;
     2463//  inst->_branch_direction   = ;
     2464//  inst->_address_next       = ; // already define : PC+4
    24652465    inst->_no_execute         = 0;
    24662466    inst->_event_type         = EVENT_TYPE_NONE;
     
    24782478    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    24792479    inst->_read_rb            = 0;
    2480 //  inst->_num_reg_rb         = ;
    2481     inst->_read_rc            = 0;
    2482 //  inst->_num_reg_rc         = ;
    2483     inst->_write_rd           = 1;
    2484     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2485     inst->_write_re           = 0;
    2486 //  inst->_num_reg_re         = ;
    2487     inst->_exception_use      = EXCEPTION_USE_NONE;
    2488     inst->_exception          = EXCEPTION_DECOD_NONE;
    2489 //  inst->_branch_condition   = ;
    2490 //  inst->_branch_stack_write = ;
    2491 //  inst->_branch_direction   = ;
    2492 //  inst->_address_next       = ;
     2480    inst->_num_reg_rb         = 0; //unnecessary
     2481    inst->_read_rc            = 0;
     2482    inst->_num_reg_rc         = 0; //unnecessary
     2483    inst->_write_rd           = 1;
     2484    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2485    inst->_write_re           = 0;
     2486    inst->_num_reg_re         = 0; //unnecessary
     2487    inst->_exception_use      = EXCEPTION_USE_NONE;
     2488    inst->_exception          = EXCEPTION_DECOD_NONE;
     2489//  inst->_branch_condition   = ;
     2490//  inst->_branch_stack_write = ;
     2491//  inst->_branch_direction   = ;
     2492//  inst->_address_next       = ; // already define : PC+4
    24932493    inst->_no_execute         = 0;
    24942494    inst->_event_type         = EVENT_TYPE_NONE;
     
    25022502    inst->_operation          = instruction_information(INSTRUCTION_L_SUB)._operation; //OPERATION_ALU_L_SUB;
    25032503    inst->_has_immediat       = 0;
    2504 //  inst->_immediat           = ;
    2505     inst->_read_ra            = 1;
    2506     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2507     inst->_read_rb            = 1;
    2508     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2509     inst->_read_rc            = 0;
    2510 //  inst->_num_reg_rc         = ;
     2504    inst->_immediat           = 0; // unnecessary
     2505    inst->_read_ra            = 1;
     2506    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2507    inst->_read_rb            = 1;
     2508    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2509    inst->_read_rc            = 0;
     2510    inst->_num_reg_rc         = 0; //unnecessary
    25112511    inst->_write_rd           = 1;
    25122512    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     
    25182518//  inst->_branch_stack_write = ;
    25192519//  inst->_branch_direction   = ;
    2520 //  inst->_address_next       = ;
     2520//  inst->_address_next       = ; // already define : PC+4
    25212521    inst->_no_execute         = 0;
    25222522    inst->_event_type         = EVENT_TYPE_NONE;
     
    25372537    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    25382538    inst->_read_rc            = 0;
    2539 //  inst->_num_reg_rc         = ;
    2540     inst->_write_rd           = 0;
    2541 //  inst->_num_reg_rd         = ;
    2542     inst->_write_re           = 0;
    2543 //  inst->_num_reg_re         = ;
     2539    inst->_num_reg_rc         = 0; //unnecessary
     2540    inst->_write_rd           = 0;
     2541    inst->_num_reg_rd         = 0; //unnecessary
     2542    inst->_write_re           = 0;
     2543    inst->_num_reg_re         = 0; //unnecessary
    25442544    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
    25452545    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    25472547//  inst->_branch_stack_write = ;
    25482548//  inst->_branch_direction   = ;
    2549 //  inst->_address_next       = ;
     2549//  inst->_address_next       = ; // already define : PC+4
    25502550    inst->_no_execute         = 0;
    25512551    inst->_event_type         = EVENT_TYPE_NONE;
     
    25672567//  inst->_immediat           = EXTENDZ(inst->_instruction,16);
    25682568    inst->_has_immediat       = 0;
    2569 //  inst->_immediat           = ;
     2569    inst->_immediat           = 0; // unnecessary
    25702570    inst->_read_ra            = 0;
    2571 //  inst->_num_reg_ra         = ;
    2572     inst->_read_rb            = 0;
    2573 //  inst->_num_reg_rb         = ;
    2574     inst->_read_rc            = 0;
    2575 //  inst->_num_reg_rc         = ;
    2576     inst->_write_rd           = 0;
    2577 //  inst->_num_reg_rd         = ;
    2578     inst->_write_re           = 0;
    2579 //  inst->_num_reg_re         = ;
     2571    inst->_num_reg_ra         = 0; //unnecessary
     2572    inst->_read_rb            = 0;
     2573    inst->_num_reg_rb         = 0; //unnecessary
     2574    inst->_read_rc            = 0;
     2575    inst->_num_reg_rc         = 0; //unnecessary
     2576    inst->_write_rd           = 0;
     2577    inst->_num_reg_rd         = 0; //unnecessary
     2578    inst->_write_re           = 0;
     2579    inst->_num_reg_re         = 0; //unnecessary
    25802580    inst->_exception_use      = EXCEPTION_USE_SYSCALL;
    25812581    inst->_exception          = EXCEPTION_SYSCALL;
     
    25902590
    25912591
    2592 //  inst->_address_next       = ; // don't change
     2592//  inst->_address_next       = ; // already define : PC+4 // don't change
    25932593    inst->_no_execute         = 1;
    25942594    inst->_event_type         = EVENT_TYPE_EXCEPTION;
     
    26112611    inst->_immediat           = EXTENDZ(inst->_instruction,16);
    26122612    inst->_read_ra            = 0;
    2613 //  inst->_num_reg_ra         = ;
    2614     inst->_read_rb            = 0;
    2615 //  inst->_num_reg_rb         = ;
     2613    inst->_num_reg_ra         = 0; //unnecessary
     2614    inst->_read_rb            = 0;
     2615    inst->_num_reg_rb         = 0; //unnecessary
    26162616    inst->_read_rc            = 0; // read all SR
    2617 //  inst->_num_reg_rc         = ;
    2618     inst->_write_rd           = 0;
    2619 //  inst->_num_reg_rd         = ;
    2620     inst->_write_re           = 0;
    2621 //  inst->_num_reg_re         = ;
     2617    inst->_num_reg_rc         = 0; //unnecessary
     2618    inst->_write_rd           = 0;
     2619    inst->_num_reg_rd         = 0; //unnecessary
     2620    inst->_write_re           = 0;
     2621    inst->_num_reg_re         = 0; //unnecessary
    26222622    inst->_exception_use      = EXCEPTION_USE_TRAP;
    26232623    inst->_exception          = EXCEPTION_DECOD_NONE;
     
    26252625//  inst->_branch_stack_write = ;
    26262626//  inst->_branch_direction   = ;
    2627 //  inst->_address_next       = ;
     2627//  inst->_address_next       = ; // already define : PC+4
    26282628    inst->_no_execute         = 1;
    26292629    inst->_event_type         = EVENT_TYPE_NONE;
     
    26382638    inst->_operation          = instruction_information(INSTRUCTION_L_XOR)._operation; //OPERATION_ALU_L_XOR;
    26392639    inst->_has_immediat       = 0;
    2640 //  inst->_immediat           = ;
    2641     inst->_read_ra            = 1;
    2642     inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    2643     inst->_read_rb            = 1;
    2644     inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
    2645     inst->_read_rc            = 0;
    2646 //  inst->_num_reg_rc         = ;
    2647     inst->_write_rd           = 1;
    2648     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2649     inst->_write_re           = 0;
    2650 //  inst->_num_reg_re         = ;
    2651     inst->_exception_use      = EXCEPTION_USE_NONE;
    2652     inst->_exception          = EXCEPTION_DECOD_NONE;
    2653 //  inst->_branch_condition   = ;
    2654 //  inst->_branch_stack_write = ;
    2655 //  inst->_branch_direction   = ;
    2656 //  inst->_address_next       = ;
     2640    inst->_immediat           = 0; // unnecessary
     2641    inst->_read_ra            = 1;
     2642    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
     2643    inst->_read_rb            = 1;
     2644    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
     2645    inst->_read_rc            = 0;
     2646    inst->_num_reg_rc         = 0; //unnecessary
     2647    inst->_write_rd           = 1;
     2648    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2649    inst->_write_re           = 0;
     2650    inst->_num_reg_re         = 0; //unnecessary
     2651    inst->_exception_use      = EXCEPTION_USE_NONE;
     2652    inst->_exception          = EXCEPTION_DECOD_NONE;
     2653//  inst->_branch_condition   = ;
     2654//  inst->_branch_stack_write = ;
     2655//  inst->_branch_direction   = ;
     2656//  inst->_address_next       = ; // already define : PC+4
    26572657    inst->_no_execute         = 0;
    26582658    inst->_event_type         = EVENT_TYPE_NONE;
     
    26702670    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
    26712671    inst->_read_rb            = 0;
    2672 //  inst->_num_reg_rb         = ;
    2673     inst->_read_rc            = 0;
    2674 //  inst->_num_reg_rc         = ;
    2675     inst->_write_rd           = 1;
    2676     inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
    2677     inst->_write_re           = 0;
    2678 //  inst->_num_reg_re         = ;
    2679     inst->_exception_use      = EXCEPTION_USE_NONE;
    2680     inst->_exception          = EXCEPTION_DECOD_NONE;
    2681 //  inst->_branch_condition   = ;
    2682 //  inst->_branch_stack_write = ;
    2683 //  inst->_branch_direction   = ;
    2684 //  inst->_address_next       = ;
     2672    inst->_num_reg_rb         = 0; //unnecessary
     2673    inst->_read_rc            = 0;
     2674    inst->_num_reg_rc         = 0; //unnecessary
     2675    inst->_write_rd           = 1;
     2676    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
     2677    inst->_write_re           = 0;
     2678    inst->_num_reg_re         = 0; //unnecessary
     2679    inst->_exception_use      = EXCEPTION_USE_NONE;
     2680    inst->_exception          = EXCEPTION_DECOD_NONE;
     2681//  inst->_branch_condition   = ;
     2682//  inst->_branch_stack_write = ;
     2683//  inst->_branch_direction   = ;
     2684//  inst->_address_next       = ; // already define : PC+4
    26852685    inst->_no_execute         = 0;
    26862686    inst->_event_type         = EVENT_TYPE_NONE;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/SelfTest/src/test.cpp

    r88 r97  
    7575  ALLOC1_SC_SIGNAL(out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL             ,"out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL             ",Tcontrol_t,_param->_nb_context);
    7676  ALLOC1_SC_SIGNAL(out_EVENT_IFETCH_UNIT_IS_DS_TAKE                   ,"out_EVENT_IFETCH_UNIT_IS_DS_TAKE                   ",Tcontrol_t,_param->_nb_context);
     77  ALLOC1_SC_SIGNAL(out_EVENT_PREDICTION_UNIT_VAL                      ,"out_EVENT_PREDICTION_UNIT_VAL                      ",Tcontrol_t,_param->_nb_context);
     78  ALLOC1_SC_SIGNAL( in_EVENT_PREDICTION_UNIT_ACK                      ," in_EVENT_PREDICTION_UNIT_ACK                      ",Tcontrol_t,_param->_nb_context);
     79  ALLOC1_SC_SIGNAL(out_EVENT_PREDICTION_UNIT_TYPE                     ,"out_EVENT_PREDICTION_UNIT_TYPE                     ",Tevent_type_t,_param->_nb_context);
     80  ALLOC1_SC_SIGNAL(out_EVENT_PREDICTION_UNIT_DEPTH                    ,"out_EVENT_PREDICTION_UNIT_DEPTH                    ",Tdepth_t  ,_param->_nb_context);
    7781  ALLOC1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_VAL                        ," in_EVENT_CONTEXT_STATE_VAL                        ",Tcontrol_t,_param->_nb_context);
    7882  ALLOC1_SC_SIGNAL(out_EVENT_CONTEXT_STATE_ACK                        ,"out_EVENT_CONTEXT_STATE_ACK                        ",Tcontrol_t,_param->_nb_context);
     
    8185  ALLOC1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL           ," in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL           ",Tcontrol_t,_param->_nb_context);
    8286  ALLOC1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_IS_DS_TAKE                 ," in_EVENT_CONTEXT_STATE_IS_DS_TAKE                 ",Tcontrol_t,_param->_nb_context);
     87  ALLOC1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_TYPE                       ," in_EVENT_CONTEXT_STATE_TYPE                       ",Tevent_type_t,_param->_nb_context);
     88  ALLOC1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_DEPTH                      ," in_EVENT_CONTEXT_STATE_DEPTH                      ",Tdepth_t  ,_param->_nb_context);
    8389
    8490  ALLOC1_SC_SIGNAL(out_DEPTH_CURRENT                                  ,"out_DEPTH_CURRENT                                  ",Tdepth_t  ,_param->_nb_context);
     
    132138  INSTANCE1_SC_SIGNAL(_Front_end_Glue,out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL               ,_param->_nb_context);
    133139  INSTANCE1_SC_SIGNAL(_Front_end_Glue,out_EVENT_IFETCH_UNIT_IS_DS_TAKE                     ,_param->_nb_context);
     140  INSTANCE1_SC_SIGNAL(_Front_end_Glue,out_EVENT_PREDICTION_UNIT_VAL                        ,_param->_nb_context);
     141  INSTANCE1_SC_SIGNAL(_Front_end_Glue, in_EVENT_PREDICTION_UNIT_ACK                        ,_param->_nb_context);
     142  INSTANCE1_SC_SIGNAL(_Front_end_Glue,out_EVENT_PREDICTION_UNIT_TYPE                       ,_param->_nb_context);
     143  if (_param->_have_port_depth)
     144  INSTANCE1_SC_SIGNAL(_Front_end_Glue,out_EVENT_PREDICTION_UNIT_DEPTH                      ,_param->_nb_context);
    134145  INSTANCE1_SC_SIGNAL(_Front_end_Glue, in_EVENT_CONTEXT_STATE_VAL                          ,_param->_nb_context);
    135146  INSTANCE1_SC_SIGNAL(_Front_end_Glue,out_EVENT_CONTEXT_STATE_ACK                          ,_param->_nb_context);
     
    138149  INSTANCE1_SC_SIGNAL(_Front_end_Glue, in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL             ,_param->_nb_context);
    139150  INSTANCE1_SC_SIGNAL(_Front_end_Glue, in_EVENT_CONTEXT_STATE_IS_DS_TAKE                   ,_param->_nb_context);
     151  INSTANCE1_SC_SIGNAL(_Front_end_Glue, in_EVENT_CONTEXT_STATE_TYPE                         ,_param->_nb_context);
     152  if (_param->_have_port_depth)
     153  INSTANCE1_SC_SIGNAL(_Front_end_Glue, in_EVENT_CONTEXT_STATE_DEPTH                        ,_param->_nb_context);
    140154
    141155  for (uint32_t i=0; i<_param->_nb_context; ++i)
     
    230244  DELETE1_SC_SIGNAL(out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL               ,_param->_nb_context);
    231245  DELETE1_SC_SIGNAL(out_EVENT_IFETCH_UNIT_IS_DS_TAKE                     ,_param->_nb_context);
     246  DELETE1_SC_SIGNAL(out_EVENT_PREDICTION_UNIT_VAL                        ,_param->_nb_context);
     247  DELETE1_SC_SIGNAL( in_EVENT_PREDICTION_UNIT_ACK                        ,_param->_nb_context);
     248  DELETE1_SC_SIGNAL(out_EVENT_PREDICTION_UNIT_TYPE                       ,_param->_nb_context);
     249  DELETE1_SC_SIGNAL(out_EVENT_PREDICTION_UNIT_DEPTH                      ,_param->_nb_context);
    232250  DELETE1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_VAL                          ,_param->_nb_context);
    233251  DELETE1_SC_SIGNAL(out_EVENT_CONTEXT_STATE_ACK                          ,_param->_nb_context);
     
    236254  DELETE1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL             ,_param->_nb_context);
    237255  DELETE1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_IS_DS_TAKE                   ,_param->_nb_context);
     256  DELETE1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_TYPE                         ,_param->_nb_context);
     257  DELETE1_SC_SIGNAL( in_EVENT_CONTEXT_STATE_DEPTH                        ,_param->_nb_context);
    238258
    239259  DELETE1_SC_SIGNAL(out_DEPTH_MIN                                        ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/include/Front_end_Glue.h

    r88 r97  
    9797  public    : SC_OUT(Tcontrol_t           )  ** out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL                ;//[nb_context]
    9898  public    : SC_OUT(Tcontrol_t           )  ** out_EVENT_IFETCH_UNIT_IS_DS_TAKE                      ;//[nb_context]
     99
     100  public    : SC_OUT(Tcontrol_t           )  ** out_EVENT_PREDICTION_UNIT_VAL                         ;//[nb_context]
     101  public    : SC_IN (Tcontrol_t           )  **  in_EVENT_PREDICTION_UNIT_ACK                         ;//[nb_context]
     102  public    : SC_OUT(Tevent_type_t        )  ** out_EVENT_PREDICTION_UNIT_TYPE                        ;//[nb_context]
     103  public    : SC_OUT(Tdepth_t             )  ** out_EVENT_PREDICTION_UNIT_DEPTH                       ;//[nb_context]
    99104                                           
    100105  public    : SC_IN (Tcontrol_t           )  **  in_EVENT_CONTEXT_STATE_VAL                           ;//[nb_context]
     
    104109  public    : SC_IN (Tcontrol_t           )  **  in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL              ;//[nb_context]
    105110  public    : SC_IN (Tcontrol_t           )  **  in_EVENT_CONTEXT_STATE_IS_DS_TAKE                    ;//[nb_context]
     111  public    : SC_IN (Tevent_type_t        )  **  in_EVENT_CONTEXT_STATE_TYPE                          ;//[nb_context]
     112  public    : SC_IN (Tdepth_t             )  **  in_EVENT_CONTEXT_STATE_DEPTH                         ;//[nb_context]
    106113
    107114    // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue.cpp

    r88 r97  
    138138//      sensitive << (*(in_CLOCK)).neg(); // don't need internal register
    139139        for (uint32_t i=0; i<_param->_nb_context; ++i)
    140           sensitive << (*( in_EVENT_ACK                            [i]))
    141                     << (*( in_EVENT_IFETCH_UNIT_ACK                [i]))
    142                     << (*( in_EVENT_CONTEXT_STATE_VAL              [i]))
    143                     << (*( in_EVENT_CONTEXT_STATE_ADDRESS          [i]))
    144                     << (*( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT     [i]))
    145                     << (*( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL [i]))
    146                     << (*( in_EVENT_CONTEXT_STATE_IS_DS_TAKE       [i]));
     140          {
     141            sensitive << (*( in_EVENT_ACK                            [i]))
     142                      << (*( in_EVENT_IFETCH_UNIT_ACK                [i]))
     143                      << (*( in_EVENT_PREDICTION_UNIT_ACK            [i]))
     144                      << (*( in_EVENT_CONTEXT_STATE_VAL              [i]))
     145                      << (*( in_EVENT_CONTEXT_STATE_ADDRESS          [i]))
     146                      << (*( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT     [i]))
     147                      << (*( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL [i]))
     148                      << (*( in_EVENT_CONTEXT_STATE_IS_DS_TAKE       [i]))
     149                      << (*( in_EVENT_CONTEXT_STATE_TYPE             [i]));
     150            if (_param->_have_port_depth)
     151            sensitive << (*( in_EVENT_CONTEXT_STATE_DEPTH            [i]));
     152          }
    147153
    148154# ifdef SYSTEMCASS_SPECIFIC
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_allocation.cpp

    r88 r97  
    105105      ALLOC1_SIGNAL_OUT (out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL                ,"IFETCH_UNIT_ADDRESS_NEXT_VAL"  ,Tcontrol_t           ,1);
    106106      ALLOC1_SIGNAL_OUT (out_EVENT_IFETCH_UNIT_IS_DS_TAKE                      ,"IFETCH_UNIT_IS_DS_TAKE"        ,Tcontrol_t           ,1);
     107
     108      ALLOC1_SIGNAL_OUT (out_EVENT_PREDICTION_UNIT_VAL                         ,"PREDICTION_UNIT_VAL"           ,Tcontrol_t           ,1);
     109      ALLOC1_SIGNAL_IN  ( in_EVENT_PREDICTION_UNIT_ACK                         ,"PREDICTION_UNIT_ACK"           ,Tcontrol_t           ,1);
     110      ALLOC1_SIGNAL_OUT (out_EVENT_PREDICTION_UNIT_TYPE                        ,"PREDICTION_UNIT_TYPE"          ,Tevent_type_t        ,_param->_size_event_type);
     111      ALLOC1_SIGNAL_OUT (out_EVENT_PREDICTION_UNIT_DEPTH                       ,"PREDICTION_UNIT_DEPTH"         ,Tdepth_t             ,_param->_size_depth);
    107112                                                                                                           
    108113      ALLOC1_SIGNAL_IN  ( in_EVENT_CONTEXT_STATE_VAL                           ,"CONTEXT_STATE_VAL"             ,Tcontrol_t           ,1);
     
    112117      ALLOC1_SIGNAL_IN  ( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL              ,"CONTEXT_STATE_ADDRESS_NEXT_VAL",Tcontrol_t           ,1);
    113118      ALLOC1_SIGNAL_IN  ( in_EVENT_CONTEXT_STATE_IS_DS_TAKE                    ,"CONTEXT_STATE_IS_DS_TAKE"      ,Tcontrol_t           ,1);
     119      ALLOC1_SIGNAL_IN  ( in_EVENT_CONTEXT_STATE_TYPE                          ,"CONTEXT_STATE_TYPE"            ,Tevent_type_t        ,_param->_size_event_type);
     120      ALLOC1_SIGNAL_IN  ( in_EVENT_CONTEXT_STATE_DEPTH                         ,"CONTEXT_STATE_DEPTH"           ,Tdepth_t             ,_param->_size_depth);
     121
    114122    }
    115123
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_deallocation.cpp

    r88 r97  
    5555        DELETE1_SIGNAL(out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL               ,_param->_nb_context,1);
    5656        DELETE1_SIGNAL(out_EVENT_IFETCH_UNIT_IS_DS_TAKE                     ,_param->_nb_context,1);
     57
     58        DELETE1_SIGNAL(out_EVENT_PREDICTION_UNIT_VAL                        ,_param->_nb_context,1);
     59        DELETE1_SIGNAL( in_EVENT_PREDICTION_UNIT_ACK                        ,_param->_nb_context,1);
     60        DELETE1_SIGNAL(out_EVENT_PREDICTION_UNIT_TYPE                       ,_param->_nb_context,_param->_size_event_type);
     61        DELETE1_SIGNAL(out_EVENT_PREDICTION_UNIT_DEPTH                      ,_param->_nb_context,_param->_size_depth);
     62
    5763        DELETE1_SIGNAL( in_EVENT_CONTEXT_STATE_VAL                          ,_param->_nb_context,1);
    5864        DELETE1_SIGNAL(out_EVENT_CONTEXT_STATE_ACK                          ,_param->_nb_context,1);
     
    6167        DELETE1_SIGNAL( in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL             ,_param->_nb_context,1);
    6268        DELETE1_SIGNAL( in_EVENT_CONTEXT_STATE_IS_DS_TAKE                   ,_param->_nb_context,1);
     69        DELETE1_SIGNAL( in_EVENT_CONTEXT_STATE_TYPE                         ,_param->_nb_context,_param->_size_event_type);
     70        DELETE1_SIGNAL( in_EVENT_CONTEXT_STATE_DEPTH                        ,_param->_nb_context,_param->_size_depth);
    6371       
    6472        DELETE1_SIGNAL(out_DEPTH_MIN                                        ,_param->_nb_context,_param->_size_depth  );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_genMealy_event.cpp

    r88 r97  
    2525    for (uint32_t i=0; i<_param->_nb_context; ++i)
    2626      {
    27         Taddress_t address = PORT_READ(in_EVENT_CONTEXT_STATE_ADDRESS [i]);
     27        Taddress_t    address = PORT_READ(in_EVENT_CONTEXT_STATE_ADDRESS [i]);
    2828        PORT_WRITE(out_EVENT_ADDRESS             [i],address);
    2929        PORT_WRITE(out_EVENT_IFETCH_UNIT_ADDRESS [i],address);
    3030
    31         Taddress_t address_next = PORT_READ(in_EVENT_CONTEXT_STATE_ADDRESS_NEXT [i]);
     31        Taddress_t    address_next = PORT_READ(in_EVENT_CONTEXT_STATE_ADDRESS_NEXT [i]);
    3232        PORT_WRITE(out_EVENT_ADDRESS_NEXT             [i],address_next);
    3333        PORT_WRITE(out_EVENT_IFETCH_UNIT_ADDRESS_NEXT [i],address_next);
    3434
    35         Tcontrol_t address_next_val = PORT_READ(in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL [i]);
     35        Tcontrol_t    address_next_val = PORT_READ(in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL [i]);
    3636        PORT_WRITE(out_EVENT_ADDRESS_NEXT_VAL             [i],address_next_val);
    3737        PORT_WRITE(out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL [i],address_next_val);
    3838
    39         Tcontrol_t is_ds_take = PORT_READ(in_EVENT_CONTEXT_STATE_IS_DS_TAKE [i]);
     39        Tcontrol_t    is_ds_take = PORT_READ(in_EVENT_CONTEXT_STATE_IS_DS_TAKE [i]);
    4040        PORT_WRITE(out_EVENT_IS_DS_TAKE             [i],is_ds_take);
    4141        PORT_WRITE(out_EVENT_IFETCH_UNIT_IS_DS_TAKE [i],is_ds_take);
    4242
    43         Tcontrol_t val = PORT_READ(in_EVENT_CONTEXT_STATE_VAL [i]);
    44         PORT_WRITE(out_EVENT_VAL             [i],val);
    45         PORT_WRITE(out_EVENT_IFETCH_UNIT_VAL [i],val);
     43        Tevent_type_t event_type = PORT_READ(in_EVENT_CONTEXT_STATE_TYPE [i]);
     44        PORT_WRITE(out_EVENT_PREDICTION_UNIT_TYPE [i],event_type);
     45       
     46        if (_param->_have_port_depth)
     47          {
     48        Tdepth_t      depth = PORT_READ(in_EVENT_CONTEXT_STATE_DEPTH [i]);
     49        PORT_WRITE(out_EVENT_PREDICTION_UNIT_DEPTH [i],depth);
     50          }
     51       
    4652
    47         Tcontrol_t ack = (PORT_READ(in_EVENT_ACK             [i]) and
    48                           PORT_READ(in_EVENT_IFETCH_UNIT_ACK [i]));
    49         PORT_WRITE(out_EVENT_CONTEXT_STATE_ACK [i],ack);
     53        Tcontrol_t ack                 = PORT_READ(in_EVENT_ACK                 [i]);
     54        Tcontrol_t ifetch_unit_ack     = PORT_READ(in_EVENT_IFETCH_UNIT_ACK     [i]);
     55        Tcontrol_t prediction_unit_ack = PORT_READ(in_EVENT_PREDICTION_UNIT_ACK [i]);
     56        Tcontrol_t context_state_val   = PORT_READ(in_EVENT_CONTEXT_STATE_VAL   [i]);
     57
     58        Tcontrol_t val                 = (//ack                 and
     59                                            ifetch_unit_ack     and
     60                                            prediction_unit_ack and
     61                                            context_state_val   
     62                                          );
     63        Tcontrol_t ifetch_unit_val     = (  ack                 and
     64                                          //ifetch_unit_ack     and
     65                                            prediction_unit_ack and
     66                                            context_state_val   
     67                                            );
     68        Tcontrol_t prediction_unit_val = (  ack                 and
     69                                            ifetch_unit_ack     and
     70                                          //prediction_unit_ack and
     71                                            context_state_val   
     72                                            );
     73        Tcontrol_t context_state_ack   = (  ack                 and
     74                                            ifetch_unit_ack     and
     75                                            prediction_unit_ack // and
     76                                          //context_state_val   
     77                                            );
     78
     79        log_printf(TRACE,Front_end_Glue,FUNCTION,"  * val                 %d, ack                 %d",val                ,ack                );
     80        log_printf(TRACE,Front_end_Glue,FUNCTION,"  * ifetch_unit_val     %d, ifetch_unit_ack     %d",ifetch_unit_val    ,ifetch_unit_ack    );
     81        log_printf(TRACE,Front_end_Glue,FUNCTION,"  * prediction_unit_val %d, prediction_unit_ack %d",prediction_unit_val,prediction_unit_ack);
     82        log_printf(TRACE,Front_end_Glue,FUNCTION,"  * context_state_val   %d, context_state_ack   %d",context_state_val  ,context_state_ack  );
     83
     84
     85        PORT_WRITE(out_EVENT_VAL                 [i], val                );
     86        PORT_WRITE(out_EVENT_IFETCH_UNIT_VAL     [i], ifetch_unit_val    );
     87        PORT_WRITE(out_EVENT_PREDICTION_UNIT_VAL [i], prediction_unit_val);
     88        PORT_WRITE(out_EVENT_CONTEXT_STATE_ACK   [i], context_state_ack  );
    5089
    5190#ifdef DEBUG
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/SelfTest/src/test.cpp

    r95 r97  
    9494  ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST          ,"out_BRANCH_EVENT_ADDRESS_DEST          ",Taddress_t         ,_param->_nb_context);
    9595                                                                                                                         
    96   ALLOC1_SC_SIGNAL( in_EVENT_STATE                    ," in_EVENT_STATE                    ",Tevent_state_t     ,_param->_nb_context);
    97   ALLOC1_SC_SIGNAL( in_EVENT_TYPE                     ," in_EVENT_TYPE                     ",Tevent_type_t      ,_param->_nb_context);
    98   ALLOC1_SC_SIGNAL( in_EVENT_DEPTH                    ," in_EVENT_DEPTH                    ",Tdepth_t           ,_param->_nb_context);
     96  ALLOC1_SC_SIGNAL( in_EVENT_VAL                          ," in_EVENT_VAL                          ",Tcontrol_t         ,_param->_nb_context);
     97  ALLOC1_SC_SIGNAL(out_EVENT_ACK                          ,"out_EVENT_ACK                          ",Tcontrol_t         ,_param->_nb_context);
     98  ALLOC1_SC_SIGNAL( in_EVENT_TYPE                         ," in_EVENT_TYPE                         ",Tevent_type_t      ,_param->_nb_context);
     99  ALLOC1_SC_SIGNAL( in_EVENT_DEPTH                        ," in_EVENT_DEPTH                        ",Tdepth_t           ,_param->_nb_context);
    99100
    100101  ALLOC1_SC_SIGNAL(out_DEPTH_CURRENT                      ,"out_DEPTH_CURRENT                      ",Tdepth_t           ,_param->_nb_context);
     
    160161  INSTANCE1_SC_SIGNAL(_Prediction_unit,out_BRANCH_EVENT_ADDRESS_DEST          ,_param->_nb_context);
    161162
    162   INSTANCE1_SC_SIGNAL(_Prediction_unit, in_EVENT_STATE                        ,_param->_nb_context);
     163  INSTANCE1_SC_SIGNAL(_Prediction_unit, in_EVENT_VAL                          ,_param->_nb_context);
     164  INSTANCE1_SC_SIGNAL(_Prediction_unit,out_EVENT_ACK                          ,_param->_nb_context);
    163165  INSTANCE1_SC_SIGNAL(_Prediction_unit, in_EVENT_TYPE                         ,_param->_nb_context);
    164166  if (_param->_have_port_depth)
     
    364366  DELETE1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST     ,_param->_nb_context);
    365367
    366   DELETE1_SC_SIGNAL( in_EVENT_STATE                    ,_param->_nb_context);
     368  DELETE1_SC_SIGNAL( in_EVENT_VAL                      ,_param->_nb_context);
     369  DELETE1_SC_SIGNAL(out_EVENT_ACK                      ,_param->_nb_context);
    367370  DELETE1_SC_SIGNAL( in_EVENT_TYPE                     ,_param->_nb_context);
    368371  DELETE1_SC_SIGNAL( in_EVENT_DEPTH                    ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/Makefile.deps

    r81 r97  
    2121
    2222Update_Prediction_Table_LIBRARY         =       -lUpdate_Prediction_Table       \
    23                                         $(Behavioural_LIBRARY) 
     23                                        $(Behavioural_LIBRARY)
    2424
    2525Update_Prediction_Table_DIR_LIBRARY             =       -L$(Update_Prediction_Table_DIR)/lib    \
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp

    r95 r97  
    4242
    4343#ifdef STATISTICS
    44   morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
     44  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
    4545#endif
    4646
     
    137137  ALLOC1_SC_SIGNAL(out_UPDATE_RAS_PREDICTION_IFETCH   ,"out_UPDATE_RAS_PREDICTION_IFETCH   ",Tcontrol_t         ,_param->_nb_inst_update);
    138138
    139   ALLOC1_SC_SIGNAL( in_EVENT_STATE                    ," in_EVENT_STATE                    ",Tevent_state_t     ,_param->_nb_context);
     139  ALLOC1_SC_SIGNAL( in_EVENT_VAL                      ," in_EVENT_VAL                      ",Tcontrol_t         ,_param->_nb_context);
     140  ALLOC1_SC_SIGNAL(out_EVENT_ACK                      ,"out_EVENT_ACK                      ",Tcontrol_t         ,_param->_nb_context);
    140141  ALLOC1_SC_SIGNAL( in_EVENT_TYPE                     ," in_EVENT_TYPE                     ",Tevent_type_t      ,_param->_nb_context);
    141142  ALLOC1_SC_SIGNAL( in_EVENT_DEPTH                    ," in_EVENT_DEPTH                    ",Tdepth_t           ,_param->_nb_context);
     
    230231  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_INDEX               ,_param->_nb_inst_update);
    231232  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_PREDICTION_IFETCH   ,_param->_nb_inst_update);
    232   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_EVENT_STATE                    ,_param->_nb_context);
     233  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_EVENT_VAL                      ,_param->_nb_context);
     234  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_EVENT_ACK                      ,_param->_nb_context);
    233235  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_EVENT_TYPE                     ,_param->_nb_context);
    234236  if (_param->_have_port_depth)
     
    316318        in_UPDATE_ACK          [i]->write(0);
    317319      for (uint32_t i=0; i<_param->_nb_context; ++i)
    318         {
    319         in_EVENT_STATE [i]->write(EVENT_STATE_NO_EVENT);
    320         in_EVENT_TYPE  [i]->write(EVENT_TYPE_NONE     );
    321         }
     320        in_EVENT_VAL   [i]->write(0);
     321
    322322      //---------------------------------------------------------------------
    323323      //---------------------------------------------------------------------
     
    932932         
    933933          SC_START(1);
    934           in_EVENT_STATE [context]->write(EVENT_STATE_END            );
     934          in_EVENT_VAL   [context]->write(1);
    935935          in_EVENT_TYPE  [context]->write(EVENT_TYPE_MISS_SPECULATION);
    936936
    937937          SC_START(1);
    938           in_EVENT_STATE [context]->write(EVENT_STATE_NO_EVENT       );
     938          in_EVENT_VAL   [context]->write(0);
    939939          in_EVENT_TYPE  [context]->write(EVENT_TYPE_NONE            );
    940940        }
     
    13661366         
    13671367          SC_START(1);
    1368           in_EVENT_STATE [context]->write(EVENT_STATE_END            );
     1368          in_EVENT_VAL   [context]->write(1);
    13691369          in_EVENT_TYPE  [context]->write(EVENT_TYPE_MISS_SPECULATION);
    13701370
    13711371          SC_START(1);
    1372           in_EVENT_STATE [context]->write(EVENT_STATE_NO_EVENT       );
     1372          in_EVENT_VAL   [context]->write(0);
    13731373          in_EVENT_TYPE  [context]->write(EVENT_TYPE_NONE            );
    13741374        }
     
    19741974           
    19751975            SC_START(1);
    1976             in_EVENT_STATE [context]->write(EVENT_STATE_END            );
     1976            in_EVENT_VAL   [context]->write(1);
    19771977            in_EVENT_TYPE  [context]->write(EVENT_TYPE_MISS_SPECULATION);
    19781978           
    19791979            SC_START(1);
    1980             in_EVENT_STATE [context]->write(EVENT_STATE_NO_EVENT       );
     1980            in_EVENT_VAL   [context]->write(0);
    19811981            in_EVENT_TYPE  [context]->write(EVENT_TYPE_NONE            );
    19821982          }
     
    21552155  delete [] out_UPDATE_RAS_PREDICTION_IFETCH;
    21562156
    2157   DELETE1_SC_SIGNAL( in_EVENT_STATE                    ,_param->_nb_context);
     2157  DELETE1_SC_SIGNAL( in_EVENT_VAL                      ,_param->_nb_context);
     2158  DELETE1_SC_SIGNAL(out_EVENT_ACK                      ,_param->_nb_context);
    21582159  DELETE1_SC_SIGNAL( in_EVENT_TYPE                     ,_param->_nb_context);
    21592160  DELETE1_SC_SIGNAL( in_EVENT_DEPTH                    ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h

    r95 r97  
    5252  public    : Stat                           * _stat;
    5353
    54   private   : counter_t                     ** _stat_nb_branch_hit       ; //[nb_context]
    55   private   : counter_t                     ** _stat_nb_branch_miss      ; //[nb_context]
    56   private   : counter_t                     ** _stat_nb_branch_unused    ; //[nb_context]
    57   private   : counter_t                     ** _stat_queue_nb_cycle_empty; //[nb_context]
    58   private   : counter_t                     ** _stat_queue_nb_cycle_full ; //[nb_context]
    59   private   : counter_t                     ** _stat_queue_nb_elt        ; //[nb_context]
     54  private   : counter_t                    *** _stat_nb_branch_hit            ; //[nb_context][MAX_BRANCH_CONDITION]
     55  private   : counter_t                    *** _stat_nb_branch_miss           ; //[nb_context][MAX_BRANCH_CONDITION]
     56  private   : counter_t                     ** _stat_nb_branch_unused         ; //[nb_context]
     57  private   : counter_t                     ** _stat_ufpt_queue_nb_elt        ; //[nb_context]
     58  private   : counter_t                     ** _stat_upt_queue_nb_elt         ; //[nb_context]
    6059
    6160#endif
     
    143142
    144143    // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    145   public    : SC_IN (Tevent_state_t     )  **  in_EVENT_STATE                    ; //[nb_context]
     144  public    : SC_IN (Tcontrol_t         )  **  in_EVENT_VAL                      ; //[nb_context]
     145  public    : SC_OUT(Tcontrol_t         )  ** out_EVENT_ACK                      ; //[nb_context]
    146146  public    : SC_IN (Tevent_type_t      )  **  in_EVENT_TYPE                     ; //[nb_context]
    147147  public    : SC_IN (Tdepth_t           )  **  in_EVENT_DEPTH                    ; //[nb_context]
     
    197197  private   : Tdepth_t                      * internal_UPDATE_DEPTH                   ; //[nb_inst_update]
    198198  private   : bool                          * internal_UPDATE_RAS                     ; //[nb_inst_update]
     199  private   : Tcontrol_t                    * internal_EVENT_ACK                      ; //[nb_context]
    199200
    200201#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table.cpp

    r88 r97  
    7676    if (usage_is_set(_usage,USE_SYSTEMC))
    7777      {
    78 
     78        // Constant
    7979        for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
    8080          {
     
    8282            PORT_WRITE(out_BRANCH_COMPLETE_ACK [i], internal_BRANCH_COMPLETE_ACK [i]);
    8383          }
     84        for (uint32_t i=0; i<_param->_nb_context; ++i)
     85          {
     86            internal_EVENT_ACK [i] = 1;
     87            PORT_WRITE(out_EVENT_ACK [i], internal_EVENT_ACK [i]);
     88          }
    8489
    8590        log_printf(INFO,Update_Prediction_Table,FUNCTION,"Method - transition");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp

    r95 r97  
    151151      ALLOC1_INTERFACE("event", IN,SOUTH,"event", _param->_nb_context);
    152152
    153       ALLOC1_SIGNAL_IN ( in_EVENT_STATE  ,"state",Tevent_state_t,_param->_size_event_state);
     153      ALLOC1_VALACK_IN ( in_EVENT_VAL    ,VAL);
     154      ALLOC1_VALACK_OUT(out_EVENT_ACK    ,ACK);
    154155      ALLOC1_SIGNAL_IN ( in_EVENT_TYPE   ,"type" ,Tevent_type_t ,_param->_size_event_type );
    155156      ALLOC1_SIGNAL_IN ( in_EVENT_DEPTH  ,"depth",Tdepth_t      ,_param->_size_depth      );
     
    183184    ALLOC1(internal_UPDATE_DEPTH                    ,Tdepth_t  ,_param->_nb_inst_update);
    184185    ALLOC1(internal_UPDATE_RAS                      ,bool      ,_param->_nb_inst_update);
     186    ALLOC1(internal_EVENT_ACK                       ,Tcontrol_t,_param->_nb_context);
    185187
    186188    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_deallocation.cpp

    r95 r97  
    111111
    112112        // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    113         DELETE1_SIGNAL( in_EVENT_STATE  ,_param->_nb_context,_param->_size_event_state);
     113        DELETE1_SIGNAL( in_EVENT_VAL    ,_param->_nb_context,1);
     114        DELETE1_SIGNAL(out_EVENT_ACK    ,_param->_nb_context,1);
    114115        DELETE1_SIGNAL( in_EVENT_TYPE   ,_param->_nb_context,_param->_size_event_type );
    115116        DELETE1_SIGNAL( in_EVENT_DEPTH  ,_param->_nb_context,_param->_size_depth      );
     
    137138        DELETE1(internal_UPDATE_DEPTH                    ,_param->_nb_inst_update);
    138139        DELETE1(internal_UPDATE_RAS                      ,_param->_nb_inst_update);
     140        DELETE1(internal_EVENT_ACK                       ,_param->_nb_context);
    139141       
    140142        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_branch_complete.cpp

    r94 r97  
    6767              if (take != 1)
    6868                throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad direction.",i,toString(condition).c_str()));
    69               if (addr_dest != addr_good)
    70                 throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));
     69//               if (addr_dest != addr_good)
     70//                 throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));
    7171#endif
    7272
     
    8585
    8686#ifdef DEBUG_TEST
    87               if (addr_dest != addr_good)
    88                 throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));
     87//               if (addr_dest != addr_good)
     88//                 throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));
    8989#endif
    9090
     
    103103
    104104#ifdef DEBUG_TEST
    105               if (addr_dest != addr_good)
    106                 throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));
     105//               if (addr_dest != addr_good)
     106//                 throw ERRORMORPHEO(FUNCTION,toString("Branch_complete[%d] (condition %s) : bad destination address.",i,toString(condition).c_str()));
    107107#endif
    108108
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_statistics_allocation.cpp

    r88 r97  
    88
    99#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h"
     10#include "Behavioural/include/Allocation.h"
     11
    1012
    1113namespace morpheo {
     
    2830                      param_statistics);
    2931
    30 //     _stat_nb_branch_hit        = new counter_t * [_param->_nb_context];
    31 //     _stat_nb_branch_miss       = new counter_t * [_param->_nb_context];
    32 //     _stat_nb_branch_unused     = new counter_t * [_param->_nb_context];
    33 //     _stat_queue_nb_cycle_empty = new counter_t * [_param->_nb_context];
    34 //     _stat_queue_nb_cycle_full  = new counter_t * [_param->_nb_context];
    35 //     _stat_queue_nb_elt         = new counter_t * [_param->_nb_context];
    36  
    37 //     for (uint32_t i=0; i<_param->_nb_context; ++i)
    38 //       {
    39 //         _stat_nb_branch_hit        [i] = _stat->create_counter("nb_branch_hit_"       +toString(i),"",toString(_("Branch hit speculation (context %d)"),i));
    40 //         _stat_nb_branch_miss       [i] = _stat->create_counter("nb_branch_miss_"      +toString(i),"",toString(_("Branch miss speculation (context %d)"),i));
    41 //         _stat_nb_branch_unused     [i] = _stat->create_counter("nb_branch_unused_"    +toString(i),"",toString(_("Branch unused, because an previous branch have miss speculation (context %d)"),i));
    42 //         _stat_queue_nb_cycle_empty [i] = _stat->create_counter("queue_nb_cycle_empty_"+toString(i),"",toString(_("Cycle number where the Update Prediction Table is empty (context %d)"),i));
    43 //         _stat_queue_nb_cycle_full  [i] = _stat->create_counter("queue_nb_cycle_full_" +toString(i),"",toString(_("Cycle number where the Update Prediction Table is full (%d elements) (context %d)"),_param->_size_queue[i],i));
    44 //         _stat_queue_nb_elt         [i] = _stat->create_counter("queue_nb_elt_"        +toString(i),"",toString(_("Average branchement by cycle in Update Prediction Table (context %d)"),i));
    45 //       }
    46    
     32    {
     33      ALLOC2(_stat_nb_branch_hit        ,counter_t *,_param->_nb_context,MAX_BRANCH_CONDITION);
     34      ALLOC2(_stat_nb_branch_miss       ,counter_t *,_param->_nb_context,MAX_BRANCH_CONDITION);
     35      ALLOC1(_stat_nb_branch_unused     ,counter_t *,_param->_nb_context);
     36     
     37      for (uint32_t i=0; i<_param->_nb_context; ++i)
     38        {
     39          std::string sum_miss        = "0";
     40          std::string sum_branchement = "0";
     41
     42          for (uint32_t j=0; j<MAX_BRANCH_CONDITION; ++j)
     43            if (is_branch_condition_valid(j))
     44              {
     45                std::string nb_miss        = "nb_branch_miss_"+toString(i)+"_"+toString(j);
     46                std::string nb_branchement = "+ nb_branch_hit_"+toString(i)+"_"+toString(j)+" nb_branch_miss_"+toString(i)+"_"+toString(j);
     47                _stat_nb_branch_hit  [i][j] = _stat->create_counter("nb_branch_hit_" +toString(i)+"_"+toString(j),"",toString(_("Branch hit  speculation, branch condition : %s (context %d)"),toString(static_cast<branch_condition_t>(j)).c_str(),i));
     48                _stat_nb_branch_miss [i][j] = _stat->create_counter(nb_miss,"",toString(_("Branch miss speculation, branch condition : %s (context %d)"),toString(static_cast<branch_condition_t>(j)).c_str(),i));
     49
     50//                 _stat->create_expr_average("average_miss_"+toString(i)+"_"+toString(j),
     51//                                            "nb_branch_miss_"+toString(i)+"_"+toString(j),
     52//                                            nb_branchement,
     53//                                            "miss/branchement",
     54//                                            toString(_("Average miss by branchement, branch condition : %s (context %d)"),toString(static_cast<branch_condition_t>(j)).c_str(),i));
     55
     56                _stat->create_expr_percent("percent_miss_"+toString(i)+"_"+toString(j),
     57                                           nb_miss,
     58                                           nb_branchement,
     59                                           toString(_("Percent miss by branchement, branch condition : %s (context %d)"),toString(static_cast<branch_condition_t>(j)).c_str(),i));
     60
     61                sum_miss        = "+ "+nb_miss       +" "+ sum_miss;
     62                sum_branchement = "+ "+nb_branchement+" "+sum_branchement;
     63              }
     64
     65//           _stat->create_expr_average("average_miss_"+toString(i),
     66//                                      sum_miss,
     67//                                      sum_branchement,
     68//                                      "miss/branchement",
     69//                                      toString(_("Average miss by branchement (context %d)"),i));
     70
     71          _stat->create_expr_percent("percent_miss_"+toString(i),
     72                                     sum_miss,
     73                                     sum_branchement,
     74                                     toString(_("Percent miss by branchement (context %d)"),i));
     75         
     76          _stat_nb_branch_unused [i] = _stat->create_counter("nb_branch_unused_" +toString(i),"",toString(_("Branch unused (previous speculation) (context %d)"),i));
     77        }
     78    }
     79
     80    {
     81      ALLOC1(_stat_ufpt_queue_nb_elt        ,counter_t *,_param->_nb_context);
     82     
     83      for (uint32_t i=0; i<_param->_nb_context; ++i)
     84        {
     85          _stat_ufpt_queue_nb_elt         [i] = _stat->create_counter("ufpt_queue_nb_elt_"+toString(i),"",toString(_("Branchement in Update Fetch Prediction Table (context %d)"),i));
     86         
     87          _stat->create_expr_average_by_cycle("average_occupation_ufpt_queue_"+toString(i),"ufpt_queue_nb_elt_"+toString(i), "", toString(_("Average instruction by cycle in Update Fetch Prediction Table (context %d)"),i));
     88          _stat->create_expr_percent         ("percent_occupation_ufpt_queue_"+toString(i), "average_occupation_ufpt_queue_"+toString(i), toString(_param->_size_ufpt_queue[i]), toString(_("Percent occupation of Update Fetch Prediction Table (context %d)"),i));
     89        }
     90    }
     91
     92    {
     93      ALLOC1(_stat_upt_queue_nb_elt        ,counter_t *,_param->_nb_context);
     94     
     95      for (uint32_t i=0; i<_param->_nb_context; ++i)
     96        {
     97          _stat_upt_queue_nb_elt         [i] = _stat->create_counter("upt_queue_nb_elt_"+toString(i),"",toString(_("Average branchement by cycle in Update Prediction Table (context %d)"),i));
     98         
     99          _stat->create_expr_average_by_cycle("average_occupation_upt_queue_"+toString(i),"upt_queue_nb_elt_"+toString(i), "", toString(_("Average instruction by cycle in Update Prediction Table (context %d)"),i));
     100          _stat->create_expr_percent         ("percent_occupation_upt_queue_"+toString(i), "average_occupation_upt_queue_"+toString(i), toString(_param->_size_upt_queue[i]), toString(_("Percent occupation of Update Prediction Table (context %d)"),i));
     101        }
     102    }
     103
    47104    log_printf(FUNC,Update_Prediction_Table,FUNCTION,"End");
    48105  };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_statistics_deallocation.cpp

    r88 r97  
    88
    99#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h"
     10#include "Behavioural/include/Allocation.h"
    1011
    1112namespace morpheo {
     
    2728   
    2829    delete    _stat;
    29 //     delete [] _stat_nb_branch_hit       ;
    30 //     delete [] _stat_nb_branch_miss      ;
    31 //     delete [] _stat_nb_branch_unused    ;
    32 //     delete [] _stat_queue_nb_cycle_empty;
    33 //     delete [] _stat_queue_nb_cycle_full ;
    34 //     delete [] _stat_queue_nb_elt        ;
     30
     31    DELETE2(_stat_nb_branch_hit            ,_param->_nb_context,MAX_BRANCH_CONDITION);
     32    DELETE2(_stat_nb_branch_miss           ,_param->_nb_context,MAX_BRANCH_CONDITION);
     33    DELETE1(_stat_nb_branch_unused         ,_param->_nb_context);
     34    DELETE1(_stat_ufpt_queue_nb_elt        ,_param->_nb_context);
     35    DELETE1(_stat_upt_queue_nb_elt         ,_param->_nb_context);
    3536   
    3637    log_printf(FUNC,Update_Prediction_Table,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp

    r95 r97  
    472472//                    bool have_event = ((reg_UPDATE_PREDICTION_TABLE [context][depth]._state == UPDATE_PREDICTION_STATE_KO) or
    473473//                                       (reg_UPDATE_PREDICTION_TABLE [context][depth]._state == UPDATE_PREDICTION_STATE_EVENT));
     474#ifdef STATISTICS
     475                      Tbranch_condition_t condition = reg_UPDATE_PREDICTION_TABLE [context][depth]._condition;
     476                      bool ok     = (reg_UPDATE_PREDICTION_TABLE [context][depth]._state == UPDATE_PREDICTION_STATE_OK);
     477#endif
    474478                      bool ko     = (reg_UPDATE_PREDICTION_TABLE [context][depth]._state == UPDATE_PREDICTION_STATE_KO);
    475479
     
    480484                         
    481485                          reg_UPDATE_PREDICTION_TABLE [context][depth]._state = UPDATE_PREDICTION_STATE_END_KO;
     486
     487#ifdef STATISTICS
     488                          if (usage_is_set(_usage,USE_STATISTICS))
     489                            (*_stat_nb_branch_miss [context][condition])++;
     490#endif
    482491                        }
    483492                      else
     
    486495                         
    487496                          reg_UPDATE_PREDICTION_TABLE [context][depth]._state = UPDATE_PREDICTION_STATE_END_OK;
     497
     498
     499#ifdef STATISTICS
     500                          if (usage_is_set(_usage,USE_STATISTICS))
     501                            {
     502                              if (ok)
     503                                (*_stat_nb_branch_hit    [context][condition]) ++;
     504                              else
     505                                (*_stat_nb_branch_unused [context]) ++;
     506                            }
     507#endif
    488508                        }
    489509                     
     
    548568        // ===================================================================
    549569        for (uint32_t i=0; i<_param->_nb_context; ++i)
    550           {
    551             //----------------------------------------------------------------
    552             // Cases
    553             //----------------------------------------------------------------
    554             //   * EVENT_TYPE_NONE               - nothing
    555             //   * EVENT_TYPE_MISS_SPECULATION   
    556             //     * EVENT_STATE_END             - Change state, reset pointer
    557             //   * EVENT_TYPE_EXCEPTION          -
    558             //     * EVENT_STATE_EVENT           - Flush upft and upt
    559             //     * EVENT_STATE_END             - Change state, reset pointer
    560             //   * EVENT_TYPE_BRANCH_NO_ACCURATE - nothing : manage in decod and update
    561             //   * EVENT_TYPE_SPR_ACCESS         - nothing
    562             //   * EVENT_TYPE_MSYNC              - nothing
    563             //   * EVENT_TYPE_PSYNC              - nothing
    564             //   * EVENT_TYPE_CSYNC              - nothing
    565 
    566             Tevent_state_t event_state = PORT_READ(in_EVENT_STATE [i]);
    567             Tevent_type_t  event_type  = PORT_READ(in_EVENT_TYPE  [i]);
    568 //             Tdepth_t       depth       = PORT_READ(in_EVENT_DEPTH [i]);
     570          if (PORT_READ(in_EVENT_VAL [i]) and internal_EVENT_ACK [i])
     571            {
     572              //----------------------------------------------------------------
     573              // Cases
     574              //----------------------------------------------------------------
     575              //   * EVENT_TYPE_NONE               - nothing
     576              //   * EVENT_TYPE_MISS_SPECULATION   - Change state, reset pointer
     577              //   * EVENT_TYPE_EXCEPTION          - Flush upft and upt, Change state, reset pointer
     578              //   * EVENT_TYPE_BRANCH_NO_ACCURATE - nothing : manage in decod and update
     579              //   * EVENT_TYPE_SPR_ACCESS         - nothing
     580              //   * EVENT_TYPE_MSYNC              - nothing
     581              //   * EVENT_TYPE_PSYNC              - nothing
     582              //   * EVENT_TYPE_CSYNC              - nothing
     583             
     584              Tevent_type_t  event_type  = PORT_READ(in_EVENT_TYPE  [i]);
     585//            Tdepth_t       depth       = PORT_READ(in_EVENT_DEPTH [i]);
    569586           
    570             // Test if end of miss
    571             if ((event_state == EVENT_STATE_END) and
    572                 (event_type  == EVENT_TYPE_MISS_SPECULATION))
    573               {
    574                 log_printf(TRACE,Update_Prediction_Table,FUNCTION,"  * EVENT");
    575                 log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * state : EVENT_STATE_END");
    576                 log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * type  : EVENT_TYPE_MISS_SPECULATION");
    577 
    578 #ifdef DEBUG_TEST
    579                 if (reg_EVENT_STATE [i] != EVENT_STATE_WAIT_END_EVENT)
    580                   throw ERRORMORPHEO(FUNCTION,_("Event : invalid event state."));
    581 #endif
    582                
    583                 // Change state
    584                 log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_OK (event)",i);
    585                
    586                 reg_EVENT_STATE [i] = EVENT_STATE_OK;
    587 
    588 //                 uint32_t bottom = reg_UPT_BOTTOM [i];
    589 
    590 //                 reg_UPT_TOP    [i] = bottom;
    591 //                 reg_UPT_UPDATE [i] = bottom;
    592               }
    593           }
     587              // Test if end of miss
     588              if (event_type  == EVENT_TYPE_MISS_SPECULATION)
     589                {
     590                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"  * EVENT");
     591                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * type  : EVENT_TYPE_MISS_SPECULATION");
     592                 
     593#ifdef DEBUG_TEST
     594                  if (reg_EVENT_STATE [i] != EVENT_STATE_WAIT_END_EVENT)
     595                    throw ERRORMORPHEO(FUNCTION,_("Event : invalid event state."));
     596#endif
     597                 
     598                  // Change state
     599                  log_printf(TRACE,Update_Prediction_Table,FUNCTION,"    * EVENT [%d] <- EVENT_STATE_OK (event)",i);
     600                 
     601                  reg_EVENT_STATE [i] = EVENT_STATE_OK;
     602                }
     603            }
    594604
    595605        // ===================================================================
     
    634644          }
    635645
     646#ifdef STATISTICS
     647        if (usage_is_set(_usage,USE_STATISTICS))
     648          for (uint32_t i=0; i<_param->_nb_context; i++)
     649            {
     650              for (uint32_t j=0; j<_param->_size_ufpt_queue[i]; j++)
     651                if (reg_UPDATE_FETCH_PREDICTION_TABLE [i][j]._state != UPDATE_FETCH_PREDICTION_STATE_EMPTY)
     652                  (*_stat_ufpt_queue_nb_elt [i]) ++;
     653              for (uint32_t j=0; j<_param->_size_upt_queue[i]; j++)
     654                if (reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_EMPTY)
     655                  (*_stat_upt_queue_nb_elt [i]) ++;
     656            }
     657#endif
     658       
    636659        // ===================================================================
    637660        // =====[ PRINT ]=====================================================
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/include/Prediction_unit.h

    r95 r97  
    115115
    116116    // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    117   public    : SC_IN (Tevent_state_t     )  **  in_EVENT_STATE                    ; //[nb_context]
     117  public    : SC_IN (Tcontrol_t         )  **  in_EVENT_VAL                      ; //[nb_context]
     118  public    : SC_OUT(Tcontrol_t         )  ** out_EVENT_ACK                      ; //[nb_context]
    118119  public    : SC_IN (Tevent_type_t      )  **  in_EVENT_TYPE                     ; //[nb_context]
    119120  public    : SC_IN (Tdepth_t           )  **  in_EVENT_DEPTH                    ; //[nb_context]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit_allocation.cpp

    r95 r97  
    136136      ALLOC1_INTERFACE("event", IN,SOUTH,"event", _param->_nb_context);
    137137
    138       ALLOC1_SIGNAL_IN ( in_EVENT_STATE  ,"state",Tevent_state_t,_param->_size_event_state);
     138      ALLOC1_VALACK_IN ( in_EVENT_VAL    ,VAL);
     139      ALLOC1_VALACK_OUT(out_EVENT_ACK    ,ACK);
    139140      ALLOC1_SIGNAL_IN ( in_EVENT_TYPE   ,"type" ,Tevent_type_t ,_param->_size_event_type );
    140141      ALLOC1_SIGNAL_IN ( in_EVENT_DEPTH  ,"depth",Tdepth_t      ,_param->_size_depth      );
     
    711712#endif
    712713
    713           PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_STATE",dest, "in_EVENT_"+toString(i)+"_STATE");
     714          PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_VAL"  ,dest, "in_EVENT_"+toString(i)+"_VAL"  );
     715          PORT_MAP(_component,src ,"out_EVENT_"+toString(i)+"_ACK"  ,dest,"out_EVENT_"+toString(i)+"_ACK"  );
    714716          PORT_MAP(_component,src , "in_EVENT_"+toString(i)+"_TYPE" ,dest, "in_EVENT_"+toString(i)+"_TYPE" );
    715717          if (_param->_have_port_depth)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit_deallocation.cpp

    r95 r97  
    7171        DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST     ,_param->_nb_context,_param->_size_instruction_address);
    7272
    73         DELETE1_SIGNAL( in_EVENT_STATE  ,_param->_nb_context,_param->_size_event_state);
     73        DELETE1_SIGNAL( in_EVENT_VAL    ,_param->_nb_context,1);
     74        DELETE1_SIGNAL(out_EVENT_ACK    ,_param->_nb_context,1);
    7475        DELETE1_SIGNAL( in_EVENT_TYPE   ,_param->_nb_context,_param->_size_event_type );
    7576        DELETE1_SIGNAL( in_EVENT_DEPTH  ,_param->_nb_context,_param->_size_depth      );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/SelfTest/src/test.cpp

    r88 r97  
    9999  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR      ," in_COMMIT_EVENT_ADDRESS_EPCR      ",Taddress_t           );
    100100  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ",Tcontrol_t           );
    101   ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Taddress_t           );
     101  ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Tgeneral_data_t      );
    102102  ALLOC1_SC_SIGNAL(out_EVENT_VAL                      ,"out_EVENT_VAL                      ",Tcontrol_t           ,_param->_nb_context);
    103103  ALLOC1_SC_SIGNAL( in_EVENT_ACK                      ," in_EVENT_ACK                      ",Tcontrol_t           ,_param->_nb_context);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp

    r95 r97  
    140140      ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"     ,Taddress_t           ,_param->_size_instruction_address   );
    141141      ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL" ,Tcontrol_t           ,1                       );
    142       ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"     ,Taddress_t           ,_param->_size_instruction_address   );
     142      ALLOC_SIGNAL_IN   ( in_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"     ,Tgeneral_data_t      ,_param->_size_general_data          );
    143143    }
    144144
     
    580580          COMPONENT_MAP(_component,src ,"out_BRANCH_EVENT_"+toString(i)+"_ADDRESS_DEST"    ,
    581581                                   dest, "in_BRANCH_EVENT_"+toString(i)+"_ADDRESS_DEST"    );
     582        }
     583
     584      // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     585      for (uint32_t i=0; i<_param->_nb_context; ++i)
     586        {
     587          dest = _name+"_glue";
     588#ifdef POSITION
     589          _component->interface_map (src ,"event_"+toString(i),
     590                                     dest,"event_"+toString(i));
     591#endif
     592          COMPONENT_MAP(_component,src , "in_EVENT_"+toString(i)+                "_VAL"  ,
     593                                   dest,"out_EVENT_"+toString(i)+"_PREDICTION_UNIT_VAL"  );
     594          COMPONENT_MAP(_component,src ,"out_EVENT_"+toString(i)+                "_ACK"  ,
     595                                   dest, "in_EVENT_"+toString(i)+"_PREDICTION_UNIT_ACK"  );
     596          COMPONENT_MAP(_component,src , "in_EVENT_"+toString(i)+                "_TYPE" ,
     597                                   dest,"out_EVENT_"+toString(i)+"_PREDICTION_UNIT_TYPE" );
     598          if (_param->_have_port_depth)
     599          COMPONENT_MAP(_component,src , "in_EVENT_"+toString(i)+                "_DEPTH",
     600                                   dest,"out_EVENT_"+toString(i)+"_PREDICTION_UNIT_DEPTH");
    582601        }
    583602
     
    967986          COMPONENT_MAP(_component,src ,"out_EVENT_"+toString(i)+              "_IS_DS_TAKE"      ,
    968987                                   dest, "in_EVENT_"+toString(i)+"_CONTEXT_STATE_IS_DS_TAKE"      );
     988          COMPONENT_MAP(_component,src ,"out_EVENT_"+toString(i)+              "_TYPE"            ,
     989                                   dest, "in_EVENT_"+toString(i)+"_CONTEXT_STATE_TYPE"            );
     990          if (_param->_have_port_depth)
     991          COMPONENT_MAP(_component,src ,"out_EVENT_"+toString(i)+              "_DEPTH"           ,
     992                                   dest, "in_EVENT_"+toString(i)+"_CONTEXT_STATE_DEPTH"           );
    969993        }
    970994
     
    11291153      //   in_EVENT_IFETCH_UNIT_ACK                             - component_ifetch_unit
    11301154      //  out_EVENT_IFETCH_UNIT_ADDRESS                         - component_ifetch_unit
    1131       //   in_EVENT_IFETCH_UNIT_ADDRESS_NEXT                    - component_ifetch_unit
     1155      //  out_EVENT_IFETCH_UNIT_ADDRESS_NEXT                    - component_ifetch_unit
    11321156      //  out_EVENT_IFETCH_UNIT_ADDRESS_NEXT_VAL                - component_ifetch_unit
    11331157      //   in_EVENT_IFETCH_UNIT_IS_DS_TAKE                      - component_ifetch_unit
     1158      //  out_EVENT_PREDICTION_UNIT_VAL                         - component_prediction_unit
     1159      //   in_EVENT_PREDICTION_UNIT_ACK                         - component_prediction_unit
     1160      //  out_EVENT_PREDICTION_UNIT_TYPE                        - component_prediction_unit
     1161      //  out_EVENT_PREDICTION_UNIT_DEPTH                       - component_prediction_unit
    11341162      //   in_EVENT_CONTEXT_STATE_VAL                           - component_context_state
    11351163      //  out_EVENT_CONTEXT_STATE_ACK                           - component_context_state
    11361164      //   in_EVENT_CONTEXT_STATE_ADDRESS                       - component_context_state
    11371165      //   in_EVENT_CONTEXT_STATE_ADDRESS_NEXT                  - component_context_state
    1138       //  out_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL              - component_context_state
     1166      //   in_EVENT_CONTEXT_STATE_ADDRESS_NEXT_VAL              - component_context_state
    11391167      //   in_EVENT_CONTEXT_STATE_IS_DS_TAKE                    - component_context_state
     1168      //   in_EVENT_CONTEXT_STATE_TYPE                          - component_context_state
     1169      //   in_EVENT_CONTEXT_STATE_DEPTH                         - component_context_state
    11401170
    11411171      // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/SelfTest/src/test.cpp

    r88 r97  
    6868  ALLOC2_SC_SIGNAL( in_INSERT_NO_EXECUTE              ," in_INSERT_NO_EXECUTE              ",Tcontrol_t        ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    6969  ALLOC2_SC_SIGNAL( in_INSERT_IS_DELAY_SLOT           ," in_INSERT_IS_DELAY_SLOT           ",Tcontrol_t        ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    70   ALLOC2_SC_SIGNAL( in_INSERT_ADDRESS                 ," in_INSERT_ADDRESS                 ",Tgeneral_data_t   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     70  ALLOC2_SC_SIGNAL( in_INSERT_ADDRESS                 ," in_INSERT_ADDRESS                 ",Taddress_t        ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7171  ALLOC2_SC_SIGNAL( in_INSERT_EXCEPTION               ," in_INSERT_EXCEPTION               ",Texception_t      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7272  ALLOC2_SC_SIGNAL( in_INSERT_EXCEPTION_USE           ," in_INSERT_EXCEPTION_USE           ",Texception_t      ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    123123  ALLOC1_SC_SIGNAL( in_COMMIT_EXCEPTION               ," in_COMMIT_EXCEPTION         ",Texception_t      ,_param->_nb_inst_commit);
    124124  ALLOC1_SC_SIGNAL( in_COMMIT_NO_SEQUENCE             ," in_COMMIT_NO_SEQUENCE       ",Tcontrol_t        ,_param->_nb_inst_commit);
    125   ALLOC1_SC_SIGNAL( in_COMMIT_ADDRESS                 ," in_COMMIT_ADDRESS           ",Tgeneral_data_t   ,_param->_nb_inst_commit);
     125  ALLOC1_SC_SIGNAL( in_COMMIT_ADDRESS                 ," in_COMMIT_ADDRESS           ",Taddress_t        ,_param->_nb_inst_commit);
    126126  ALLOC1_SC_SIGNAL(out_COMMIT_NUM_REG_RD              ,"out_COMMIT_NUM_REG_RD        ",Tgeneral_address_t,_param->_nb_inst_commit);
    127127  ALLOC1_SC_SIGNAL(out_REEXECUTE_VAL                  ,"out_REEXECUTE_VAL                  ",Tcontrol_t        ,_param->_nb_inst_reexecute);
     
    151151  ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EPCR             ,"out_UPDATE_ADDRESS_EPCR             ",Taddress_t        );
    152152  ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR_VAL         ,"out_UPDATE_ADDRESS_EEAR_VAL         ",Tcontrol_t        );
    153   ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR             ,"out_UPDATE_ADDRESS_EEAR             ",Taddress_t        );
     153  ALLOC_SC_SIGNAL (out_UPDATE_ADDRESS_EEAR             ,"out_UPDATE_ADDRESS_EEAR             ",Tgeneral_data_t   );
    154154
    155155  ALLOC2_SC_SIGNAL( in_EVENT_VAL             ," in_EVENT_VAL             ",Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h

    r88 r97  
    8282  public    : SC_IN (Tcontrol_t         ) ***  in_INSERT_NO_EXECUTE                ;//[nb_rename_unit][nb_inst_insert]
    8383  public    : SC_IN (Tcontrol_t         ) ***  in_INSERT_IS_DELAY_SLOT             ;//[nb_rename_unit][nb_inst_insert]
    84   public    : SC_IN (Tgeneral_data_t    ) ***  in_INSERT_ADDRESS                   ;//[nb_rename_unit][nb_inst_insert]
     84  public    : SC_IN (Taddress_t         ) ***  in_INSERT_ADDRESS                   ;//[nb_rename_unit][nb_inst_insert]
    8585  public    : SC_IN (Texception_t       ) ***  in_INSERT_EXCEPTION                 ;//[nb_rename_unit][nb_inst_insert]
    8686  public    : SC_IN (Texception_t       ) ***  in_INSERT_EXCEPTION_USE             ;//[nb_rename_unit][nb_inst_insert]
     
    141141  public    : SC_IN (Texception_t       )  **  in_COMMIT_EXCEPTION                 ;//[nb_inst_commit]
    142142  public    : SC_IN (Tcontrol_t         )  **  in_COMMIT_NO_SEQUENCE               ;//[nb_inst_commit]
    143   public    : SC_IN (Tgeneral_data_t    )  **  in_COMMIT_ADDRESS                   ;//[nb_inst_commit]
     143  public    : SC_IN (Taddress_t         )  **  in_COMMIT_ADDRESS                   ;//[nb_inst_commit]
    144144  public    : SC_OUT(Tgeneral_address_t )  ** out_COMMIT_NUM_REG_RD                ;//[nb_inst_commit]
    145145                                                                                   
     
    175175  public    : SC_OUT(Taddress_t         )   * out_UPDATE_ADDRESS_EPCR              ;
    176176  public    : SC_OUT(Tcontrol_t         )   * out_UPDATE_ADDRESS_EEAR_VAL          ;
    177   public    : SC_OUT(Taddress_t         )   * out_UPDATE_ADDRESS_EEAR              ;
     177  public    : SC_OUT(Tgeneral_data_t    )   * out_UPDATE_ADDRESS_EEAR              ;
    178178
    179179    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp

    r88 r97  
    7171      _ALLOC2_SIGNAL_IN ( in_INSERT_NO_EXECUTE              ,"no_execute"           ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7272      _ALLOC2_SIGNAL_IN ( in_INSERT_IS_DELAY_SLOT           ,"is_delay_slot"        ,Tcontrol_t        ,1                                   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    73       _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS                 ,"address"              ,Tgeneral_data_t   ,_param->_size_instruction_address   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     73      _ALLOC2_SIGNAL_IN ( in_INSERT_ADDRESS                 ,"address"              ,Taddress_t        ,_param->_size_instruction_address   ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7474      _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION               ,"exception"            ,Texception_t      ,_param->_size_exception             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
    7575      _ALLOC2_SIGNAL_IN ( in_INSERT_EXCEPTION_USE           ,"exception_use"        ,Texception_t      ,_param->_size_exception             ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);
     
    138138      ALLOC1_SIGNAL_IN ( in_COMMIT_EXCEPTION         ,"exception"  ,Texception_t      ,_param->_size_exception       );
    139139      ALLOC1_SIGNAL_IN ( in_COMMIT_NO_SEQUENCE       ,"no_sequence",Tcontrol_t        ,1                             );
    140       ALLOC1_SIGNAL_IN ( in_COMMIT_ADDRESS           ,"address"    ,Tgeneral_data_t   ,_param->_size_instruction_address);
     140      ALLOC1_SIGNAL_IN ( in_COMMIT_ADDRESS           ,"address"    ,Taddress_t        ,_param->_size_instruction_address);
    141141//    ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD        ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register+_param->_size_rename_unit_id);
    142142      ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD        ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register);
     
    185185      ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR             ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
    186186      ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL         ,"address_eear_val",Tcontrol_t         ,1);
    187       ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR             ,"address_eear"    ,Taddress_t         ,_param->_size_instruction_address);
     187      ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR             ,"address_eear"    ,Tgeneral_data_t    ,_param->_size_general_data);
    188188    }
    189189
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp

    r88 r97  
    7575                  log_printf(TRACE,Commit_unit,FUNCTION,"    * front_end_id   : %d",front_end_id);
    7676                  log_printf(TRACE,Commit_unit,FUNCTION,"    * context_id     : %d",context_id);
    77                   log_printf(TRACE,Commit_unit,FUNCTION,"    * type           : %s",toString_type(type).c_str());
     77                  log_printf(TRACE,Commit_unit,FUNCTION,"    * type           : %s",toString(type).c_str());
    7878                  log_printf(TRACE,Commit_unit,FUNCTION,"    * operation      : %d",operation );
    7979                  log_printf(TRACE,Commit_unit,FUNCTION,"    * exception      : %d",exception );
     
    478478             it++)
    479479          {
    480             log_printf(TRACE,Commit_unit,FUNCTION,"      [%d] %.8x (%.8x) %s - ptr : %d",
     480            log_printf(TRACE,Commit_unit,FUNCTION,"      [%.4d] %.4d %.4d %.4d %.4d, %.3d %.3d, %.8x %.1d, %.1d %.4d, %.1d %.4d, %s - %d",
    481481                       x,
    482                        (*it)->address,
    483                        (*it)->address<<2,
    484                        toString((*it)->state).c_str(),
    485                        (*it)->ptr);
     482                       (*it)->front_end_id            ,
     483                       (*it)->context_id              ,
     484                       (*it)->rename_unit_id          ,
     485                       (*it)->depth                   ,
     486                       (*it)->type                    ,
     487                       (*it)->operation               ,
     488                       (*it)->address                 ,
     489                       (*it)->is_delay_slot           ,
     490                       (*it)->use_store_queue         ,
     491                       (*it)->store_queue_ptr_write   ,
     492                       (*it)->use_load_queue          ,
     493                       (*it)->load_queue_ptr_write    ,
     494                       toString((*it)->state).c_str() ,
     495                       (*it)->ptr                     );
     496            log_printf(TRACE,Commit_unit,FUNCTION,"             %.1d %.5d %.6d, %.1d %.5d %.6d, %.1d %.5d %.6d, %.1d %.1d %.6d %.6d, %.1d %.1d %.6d %.6d ",
     497                       (*it)->read_ra                 ,
     498                       (*it)->num_reg_ra_log          ,
     499                       (*it)->num_reg_ra_phy          ,
     500                       (*it)->read_rb                 ,
     501                       (*it)->num_reg_rb_log          ,
     502                       (*it)->num_reg_rb_phy          ,
     503                       (*it)->read_rc                 ,
     504                       (*it)->num_reg_rc_log          ,
     505                       (*it)->num_reg_rc_phy          ,
     506                       (*it)->write_rd                ,
     507                       (*it)->num_reg_rd_log          ,
     508                       (*it)->num_reg_rd_phy_old      ,
     509                       (*it)->num_reg_rd_phy_new      ,
     510                       (*it)->write_re                ,
     511                       (*it)->num_reg_re_log          ,
     512                       (*it)->num_reg_re_phy_old      ,
     513                       (*it)->num_reg_re_phy_new      );
     514           
     515            log_printf(TRACE,Commit_unit,FUNCTION,"             %.2d %.2d %.1d %.1d %.8x %s",
     516                       (*it)->exception     ,
     517                       (*it)->exception_use ,
     518                       (*it)->flags         ,
     519                       (*it)->no_sequence   ,
     520                       (*it)->data_commit   ,
     521                       toString((*it)->event_state).c_str()
     522                       );
     523
    486524            x++;
    487525          }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters_msg_error.cpp

    r88 r97  
    7878          for (uint32_t j=0; j<_nb_type; j++)
    7979            if (not type_present [j])
    80               test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString_type(j).c_str()));
     80              test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString(j).c_str()));
    8181      }
    8282   
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_allocation.cpp

    r88 r97  
    7373      ALLOC1_SIGNAL_OUT (out_INSERT_RD_NUM_REG                            ,"RD_NUM_REG"                            ,Tgeneral_address_t ,_param->_size_general_register);
    7474      ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE                                ,"RE_USE"                                ,Tcontrol_t         ,1                             );
    75       ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                            ,"RE_NUM_REG"                            ,Tspecial_address_t ,_param->_size_general_register);
     75      ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG                            ,"RE_NUM_REG"                            ,Tspecial_address_t ,_param->_size_special_register);
    7676    }
    7777
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/include/Reexecute_unit.h

    r88 r97  
    8080  public    : SC_IN (Texception_t       ) ***  in_EXECUTE_LOOP_EXCEPTION               ;//[nb_execute_loop][nb_inst_execute]
    8181  public    : SC_IN (Tcontrol_t         ) ***  in_EXECUTE_LOOP_NO_SEQUENCE             ;//[nb_execute_loop][nb_inst_execute]
    82   public    : SC_IN (Tgeneral_data_t    ) ***  in_EXECUTE_LOOP_ADDRESS                 ;//[nb_execute_loop][nb_inst_execute]
     82  public    : SC_IN (Taddress_t         ) ***  in_EXECUTE_LOOP_ADDRESS                 ;//[nb_execute_loop][nb_inst_execute]
    8383  public    : SC_IN (Tgeneral_data_t    ) ***  in_EXECUTE_LOOP_DATA                    ;//[nb_execute_loop][nb_inst_execute]
    8484
     
    9595  public    : SC_OUT(Texception_t       )  ** out_COMMIT_EXCEPTION                     ;//[nb_inst_commit]
    9696  public    : SC_OUT(Tcontrol_t         )  ** out_COMMIT_NO_SEQUENCE                   ;//[nb_inst_commit]
    97   public    : SC_OUT(Tgeneral_data_t    )  ** out_COMMIT_ADDRESS                       ;//[nb_inst_commit]
     97  public    : SC_OUT(Taddress_t         )  ** out_COMMIT_ADDRESS                       ;//[nb_inst_commit]
    9898  public    : SC_IN (Tgeneral_address_t )  **  in_COMMIT_NUM_REG_RD                    ;//[nb_inst_commit]
    9999
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Parameters.cpp

    r88 r97  
    7171    if (is_toplevel)
    7272      {
     73        _size_instruction_address = size_general_data-2     ;
    7374        _size_context_id          = size_context_id         ;
    7475        _size_front_end_id        = size_front_end_id       ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_allocation.cpp

    r88 r97  
    7070      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_EXCEPTION               ,"exception"   ,Texception_t       ,_param->_size_exception   ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7171      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_NO_SEQUENCE             ,"no_sequence" ,Tcontrol_t         ,1                         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    72       _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS                 ,"address"     ,Tgeneral_data_t    ,_param->_size_general_data,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     72      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS                 ,"address"     ,Taddress_t         ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7373      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                    ,"data"        ,Tgeneral_data_t    ,_param->_size_general_data,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    7474    }
     
    8989      ALLOC1_SIGNAL_OUT(out_COMMIT_EXCEPTION                     ,"exception"   ,Texception_t       ,_param->_size_exception   );
    9090      ALLOC1_SIGNAL_OUT(out_COMMIT_NO_SEQUENCE                   ,"no_sequence" ,Tcontrol_t         ,1                         );
    91       ALLOC1_SIGNAL_OUT(out_COMMIT_ADDRESS                       ,"address"     ,Tgeneral_data_t    ,_param->_size_general_data);
     91      ALLOC1_SIGNAL_OUT(out_COMMIT_ADDRESS                       ,"address"     ,Taddress_t         ,_param->_size_instruction_address);
    9292      ALLOC1_SIGNAL_IN ( in_COMMIT_NUM_REG_RD                    ,"num_reg_rd"  ,Tgeneral_address_t ,_param->_size_general_register);
    9393    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_genMealy_commit.cpp

    r88 r97  
    5858                // Need spr_acces / reexecute ?
    5959                Texception_t    exception  = PORT_READ(in_EXECUTE_LOOP_EXCEPTION [x][y]);
    60                 Tgeneral_data_t address    = PORT_READ(in_EXECUTE_LOOP_ADDRESS   [x][y]);
     60                Taddress_t      address    = PORT_READ(in_EXECUTE_LOOP_ADDRESS   [x][y]);
    6161                Tcontrol_t      spr_access = ((exception ==  EXCEPTION_ALU_SPR_ACCESS_MUST_READ ) or
    6262                                              (exception ==  EXCEPTION_ALU_SPR_ACCESS_MUST_WRITE));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_allocation.cpp

    r88 r97  
    8080//       ALLOC1_SIGNAL_IN ( in_RETIRE_TYPE                 ,"type"                 ,Ttype_t     ,_param->_size_type           );
    8181//       ALLOC1_SIGNAL_IN ( in_RETIRE_OPERATION            ,"operation"            ,Toperation_t,_param->_size_operation      );
    82       ALLOC1_SIGNAL_IN ( in_RETIRE_USE_STORE_QUEUE      ,"use_store_queue"      ,Tcontrol_t  ,_param->_size_operation      );
    83       ALLOC1_SIGNAL_IN ( in_RETIRE_USE_LOAD_QUEUE       ,"use_load_queue"       ,Tcontrol_t  ,_param->_size_operation      );
     82      ALLOC1_SIGNAL_IN ( in_RETIRE_USE_STORE_QUEUE      ,"use_store_queue"      ,Tcontrol_t  ,1);
     83      ALLOC1_SIGNAL_IN ( in_RETIRE_USE_LOAD_QUEUE       ,"use_load_queue"       ,Tcontrol_t  ,1);
    8484      ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t  ,_param->_size_store_queue_ptr);
    8585      ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t  ,_param->_size_load_queue_ptr );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_rename.cpp

    r88 r97  
    2727
    2828    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
     29      if (PORT_READ(in_RENAME_VAL [i])) // not in sensitive list : it's to have valide value to array access
    2930      {
    3031        Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_FRONT_END_ID [i]):0;
    3132        Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_CONTEXT_ID   [i]):0;
    3233
    33         PORT_WRITE(out_RENAME_NUM_REG_RA_PHY     [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RA_LOG [i])]);
    34         PORT_WRITE(out_RENAME_NUM_REG_RB_PHY     [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RB_LOG [i])]);
    35         PORT_WRITE(out_RENAME_NUM_REG_RC_PHY     [i], rat_spr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RC_LOG [i])]);
    36         PORT_WRITE(out_RENAME_NUM_REG_RD_PHY_OLD [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RD_LOG [i])]);
    37         PORT_WRITE(out_RENAME_NUM_REG_RE_PHY_OLD [i], rat_spr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RE_LOG [i])]);
     34        Tgeneral_address_t num_reg_ra_log = PORT_READ(in_RENAME_NUM_REG_RA_LOG [i]); //%_param->_nb_general_register;
     35        Tgeneral_address_t num_reg_rb_log = PORT_READ(in_RENAME_NUM_REG_RB_LOG [i]); //%_param->_nb_general_register;
     36        Tspecial_address_t num_reg_rc_log = PORT_READ(in_RENAME_NUM_REG_RC_LOG [i]); //%_param->_nb_special_register;
     37        Tgeneral_address_t num_reg_rd_log = PORT_READ(in_RENAME_NUM_REG_RD_LOG [i]); //%_param->_nb_general_register;
     38        Tspecial_address_t num_reg_re_log = PORT_READ(in_RENAME_NUM_REG_RE_LOG [i]); //%_param->_nb_special_register;
     39
     40        PORT_WRITE(out_RENAME_NUM_REG_RA_PHY     [i], rat_gpr[front_end_id][context_id][num_reg_ra_log]);
     41        PORT_WRITE(out_RENAME_NUM_REG_RB_PHY     [i], rat_gpr[front_end_id][context_id][num_reg_rb_log]);
     42        PORT_WRITE(out_RENAME_NUM_REG_RC_PHY     [i], rat_spr[front_end_id][context_id][num_reg_rc_log]);
     43        PORT_WRITE(out_RENAME_NUM_REG_RD_PHY_OLD [i], rat_gpr[front_end_id][context_id][num_reg_rd_log]);
     44        PORT_WRITE(out_RENAME_NUM_REG_RE_PHY_OLD [i], rat_spr[front_end_id][context_id][num_reg_re_log]);
     45        log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"yo6");
    3846      }
    3947
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/SelfTest/src/test.cpp

    r88 r97  
    5959  ALLOC2_SC_SIGNAL( in_RENAME_IN_NO_EXECUTE    ," in_RENAME_IN_NO_EXECUTE    ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6060  ALLOC2_SC_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ," in_RENAME_IN_IS_DELAY_SLOT ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    61   ALLOC2_SC_SIGNAL( in_RENAME_IN_ADDRESS       ," in_RENAME_IN_ADDRESS       ",Tgeneral_data_t   ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     61  ALLOC2_SC_SIGNAL( in_RENAME_IN_ADDRESS       ," in_RENAME_IN_ADDRESS       ",Taddress_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6262  ALLOC2_SC_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT  ," in_RENAME_IN_HAS_IMMEDIAT  ",Tcontrol_t        ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
    6363  ALLOC2_SC_SIGNAL( in_RENAME_IN_IMMEDIAT      ," in_RENAME_IN_IMMEDIAT      ",Tgeneral_data_t   ,_param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    8484  ALLOC1_SC_SIGNAL(out_RENAME_OUT_NO_EXECUTE   ,"out_RENAME_OUT_NO_EXECUTE   ",Tcontrol_t        ,_param->_nb_inst_rename);
    8585  ALLOC1_SC_SIGNAL(out_RENAME_OUT_IS_DELAY_SLOT,"out_RENAME_OUT_IS_DELAY_SLOT",Tcontrol_t        ,_param->_nb_inst_rename);
    86   ALLOC1_SC_SIGNAL(out_RENAME_OUT_ADDRESS      ,"out_RENAME_OUT_ADDRESS      ",Tgeneral_data_t   ,_param->_nb_inst_rename);
     86  ALLOC1_SC_SIGNAL(out_RENAME_OUT_ADDRESS      ,"out_RENAME_OUT_ADDRESS      ",Taddress_t        ,_param->_nb_inst_rename);
    8787  ALLOC1_SC_SIGNAL(out_RENAME_OUT_HAS_IMMEDIAT ,"out_RENAME_OUT_HAS_IMMEDIAT ",Tcontrol_t        ,_param->_nb_inst_rename);
    8888  ALLOC1_SC_SIGNAL(out_RENAME_OUT_IMMEDIAT     ,"out_RENAME_OUT_IMMEDIAT     ",Tgeneral_data_t   ,_param->_nb_inst_rename);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h

    r88 r97  
    7676  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_NO_EXECUTE    ;//[nb_front_end][nb_inst_decod]
    7777  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_IS_DELAY_SLOT ;//[nb_front_end][nb_inst_decod]
    78   public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IN_ADDRESS       ;//[nb_front_end][nb_inst_decod]
     78  public    : SC_IN (Taddress_t        )  ***  in_RENAME_IN_ADDRESS       ;//[nb_front_end][nb_inst_decod]
    7979  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_HAS_IMMEDIAT  ;//[nb_front_end][nb_inst_decod]
    8080  public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IN_IMMEDIAT      ;//[nb_front_end][nb_inst_decod]
     
    102102  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_NO_EXECUTE   ;//[nb_inst_rename]
    103103  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_IS_DELAY_SLOT;//[nb_inst_rename]
    104   public    : SC_OUT(Tgeneral_data_t   )   ** out_RENAME_OUT_ADDRESS      ;//[nb_inst_rename]
     104  public    : SC_OUT(Taddress_t        )   ** out_RENAME_OUT_ADDRESS      ;//[nb_inst_rename]
    105105  public    : SC_OUT(Tcontrol_t        )   ** out_RENAME_OUT_HAS_IMMEDIAT ;//[nb_inst_rename]
    106106  public    : SC_OUT(Tgeneral_data_t   )   ** out_RENAME_OUT_IMMEDIAT     ;//[nb_inst_rename]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Parameters.cpp

    r88 r97  
    5050    if (is_toplevel)
    5151      {
    52         _size_general_data     = size_general_data    ;
    53         _size_depth            = log2(max_branch_speculated);
    54         _size_front_end_id     = log2(_nb_front_end);
    55         _size_context_id       = log2(max<uint32_t>(_nb_context,_nb_front_end));
    56        
    57         _have_port_front_end_id= _size_front_end_id > 0;
    58         _have_port_context_id  = _size_context_id   > 0;
    59         _have_port_depth       = _size_depth        > 0;
     52        _size_instruction_address = size_general_data-2;
     53        _size_general_data        = size_general_data    ;
     54        _size_depth               = log2(max_branch_speculated);
     55        _size_front_end_id        = log2(_nb_front_end);
     56        _size_context_id          = log2(max<uint32_t>(_nb_context,_nb_front_end));
     57                                 
     58        _have_port_front_end_id   = _size_front_end_id > 0;
     59        _have_port_context_id     = _size_context_id   > 0;
     60        _have_port_depth          = _size_depth        > 0;
    6061       
    6162        copy();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp

    r88 r97  
    6969      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NO_EXECUTE    ,"no_execute"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7070      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    71       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     71      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7272      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7373      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IMMEDIAT      ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    8282      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_WRITE_RE      ,"write_re"     ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8383      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE    ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic, _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    84       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     84      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8585      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    8686    }
     
    9999      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NO_EXECUTE    ,"no_execute"   ,Tcontrol_t        ,1                                   );
    100100      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   );
    101       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_ADDRESS       ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          );
     101      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   );
    102102      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   );
    103103      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_IMMEDIAT      ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          );
     
    112112      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_WRITE_RE      ,"write_re"     ,Tcontrol_t        ,1                                   );
    113113      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE    ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic);
    114       ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception             );
     114      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION_USE ,"exception_use",Texception_t      ,_param->_size_exception_use         );
    115115      ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION     ,"exception"    ,Texception_t      ,_param->_size_exception             );
    116116    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Rename_unit.h

    r88 r97  
    7878  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_NO_EXECUTE        ;//[nb_front_end][nb_inst_decod]
    7979  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_IS_DELAY_SLOT     ;//[nb_front_end][nb_inst_decod]
    80   public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IN_ADDRESS           ;//[nb_front_end][nb_inst_decod]
     80  public    : SC_IN (Taddress_t        )  ***  in_RENAME_IN_ADDRESS           ;//[nb_front_end][nb_inst_decod]
    8181  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IN_HAS_IMMEDIAT      ;//[nb_front_end][nb_inst_decod]
    8282  public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IN_IMMEDIAT          ;//[nb_front_end][nb_inst_decod]
     
    104104  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_NO_EXECUTE           ;//[nb_inst_insert]
    105105  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_IS_DELAY_SLOT        ;//[nb_inst_insert]
    106   public    : SC_OUT(Tgeneral_data_t   )   ** out_INSERT_ADDRESS              ;//[nb_inst_insert]
     106  public    : SC_OUT(Taddress_t        )   ** out_INSERT_ADDRESS              ;//[nb_inst_insert]
    107107  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_HAS_IMMEDIAT         ;//[nb_inst_insert]
    108108  public    : SC_OUT(Tgeneral_data_t   )   ** out_INSERT_IMMEDIAT             ;//[nb_inst_insert]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp

    r88 r97  
    119119    if (is_toplevel)
    120120      {
     121        _size_instruction_address          = size_general_data-2;
    121122        _size_front_end_id                 = log2(_nb_front_end);
    122123        _size_context_id                   = log2(max<uint32_t>(_nb_context,_nb_front_end));
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp

    r88 r97  
    6969      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_NO_EXECUTE    ,"no_execute"   ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7070      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IS_DELAY_SLOT ,"is_delay_slot",Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    71       _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     71      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_ADDRESS       ,"address"      ,Taddress_t        ,_param->_size_instruction_address   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7272      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_HAS_IMMEDIAT  ,"has_immediat" ,Tcontrol_t        ,1                                   , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
    7373      _ALLOC2_SIGNAL_IN ( in_RENAME_IN_IMMEDIAT      ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          , _param->_nb_front_end, _param->_nb_inst_decod[it1]);
     
    9999      ALLOC1_SIGNAL_OUT(out_INSERT_NO_EXECUTE           ,"no_execute"           ,Tcontrol_t        ,1                                   );
    100100      ALLOC1_SIGNAL_OUT(out_INSERT_IS_DELAY_SLOT        ,"is_delay_slot"        ,Tcontrol_t        ,1                                   );
    101       ALLOC1_SIGNAL_OUT(out_INSERT_ADDRESS              ,"address"              ,Tgeneral_data_t   ,_param->_size_general_data          );
     101      ALLOC1_SIGNAL_OUT(out_INSERT_ADDRESS              ,"address"              ,Taddress_t        ,_param->_size_instruction_address   );
    102102      ALLOC1_SIGNAL_OUT(out_INSERT_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                                   );
    103103      ALLOC1_SIGNAL_OUT(out_INSERT_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data          );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/test.cpp

    r88 r97  
    5757  ALLOC2_SC_SIGNAL( in_RENAME_NO_EXECUTE                ," in_RENAME_NO_EXECUTE                ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    5858  ALLOC2_SC_SIGNAL( in_RENAME_IS_DELAY_SLOT             ," in_RENAME_IS_DELAY_SLOT             ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    59   ALLOC2_SC_SIGNAL( in_RENAME_ADDRESS                   ," in_RENAME_ADDRESS                   ",Tgeneral_data_t   ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     59  ALLOC2_SC_SIGNAL( in_RENAME_ADDRESS                   ," in_RENAME_ADDRESS                   ",Taddress_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6060  ALLOC2_SC_SIGNAL( in_RENAME_HAS_IMMEDIAT              ," in_RENAME_HAS_IMMEDIAT              ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6161  ALLOC2_SC_SIGNAL( in_RENAME_IMMEDIAT                  ," in_RENAME_IMMEDIAT                  ",Tgeneral_data_t   ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    105105  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_EXCEPTION           ," in_EXECUTE_LOOP_EXCEPTION           ",Texception_t      ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    106106  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_NO_SEQUENCE         ," in_EXECUTE_LOOP_NO_SEQUENCE         ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    107   ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_ADDRESS             ," in_EXECUTE_LOOP_ADDRESS             ",Tgeneral_data_t   ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     107  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_ADDRESS             ," in_EXECUTE_LOOP_ADDRESS             ",Taddress_t        ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    108108  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_DATA                ," in_EXECUTE_LOOP_DATA                ",Tgeneral_data_t   ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    109109
     
    145145  ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EPCR        ,"out_COMMIT_EVENT_ADDRESS_EPCR        ",Taddress_t        );
    146146  ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ",Tcontrol_t        );
    147   ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,"out_COMMIT_EVENT_ADDRESS_EEAR        ",Taddress_t        );
     147  ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ADDRESS_EEAR        ,"out_COMMIT_EVENT_ADDRESS_EEAR        ",Tgeneral_data_t   );
    148148
    149149  ALLOC2_SC_SIGNAL( in_EVENT_VAL                        ," in_EVENT_VAL                        ",Tcontrol_t        ,_param->_nb_front_end,_param->_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_transition.cpp

    r88 r97  
    3838                        throw ERRORMORPHEO(FUNCTION,toString(_("Register [%d][%d] is not implemented.\n"),k,l));
    3939#endif
    40 //                    log_printf(TRACE,Special_Register_unit,FUNCTION,"Reset SPR [%d][%d][%d][%d]",i,j,k,l);
     40                      log_printf(TRACE,Special_Register_unit,FUNCTION,"Reset SPR [%d][%d][%d][%d]",i,j,k,l);
    4141                      _spr [i][j][k][l]->reset();
    4242                    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/OOO_Engine.h

    r88 r97  
    7777  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_NO_EXECUTE                ;//[nb_front_end][nb_inst_decod]
    7878  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_IS_DELAY_SLOT             ;//[nb_front_end][nb_inst_decod]
    79   public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_ADDRESS                   ;//[nb_front_end][nb_inst_decod]
     79  public    : SC_IN (Taddress_t        )  ***  in_RENAME_ADDRESS                   ;//[nb_front_end][nb_inst_decod]
    8080  public    : SC_IN (Tcontrol_t        )  ***  in_RENAME_HAS_IMMEDIAT              ;//[nb_front_end][nb_inst_decod]
    8181  public    : SC_IN (Tgeneral_data_t   )  ***  in_RENAME_IMMEDIAT                  ;//[nb_front_end][nb_inst_decod]
     
    127127  public    : SC_IN (Texception_t      )  ***  in_EXECUTE_LOOP_EXCEPTION           ;//[nb_execute_loop][nb_inst_execute]
    128128  public    : SC_IN (Tcontrol_t        )  ***  in_EXECUTE_LOOP_NO_SEQUENCE         ;//[nb_execute_loop][nb_inst_execute]
    129   public    : SC_IN (Tgeneral_data_t   )  ***  in_EXECUTE_LOOP_ADDRESS             ;//[nb_execute_loop][nb_inst_execute]
     129  public    : SC_IN (Taddress_t        )  ***  in_EXECUTE_LOOP_ADDRESS             ;//[nb_execute_loop][nb_inst_execute]
    130130  public    : SC_IN (Tgeneral_data_t   )  ***  in_EXECUTE_LOOP_DATA                ;//[nb_execute_loop][nb_inst_execute]
    131131
     
    171171  public    : SC_OUT(Taddress_t        )    * out_COMMIT_EVENT_ADDRESS_EPCR        ;
    172172  public    : SC_OUT(Tcontrol_t        )    * out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ;
    173   public    : SC_OUT(Taddress_t        )    * out_COMMIT_EVENT_ADDRESS_EEAR        ;
     173  public    : SC_OUT(Tgeneral_data_t   )    * out_COMMIT_EVENT_ADDRESS_EEAR        ;
    174174
    175175    // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp

    r88 r97  
    6666      _ALLOC2_SIGNAL_IN ( in_RENAME_NO_EXECUTE                ,"NO_EXECUTE"                ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6767      _ALLOC2_SIGNAL_IN ( in_RENAME_IS_DELAY_SLOT             ,"IS_DELAY_SLOT"             ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    68       _ALLOC2_SIGNAL_IN ( in_RENAME_ADDRESS                   ,"ADDRESS"                   ,Tgeneral_data_t   ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     68      _ALLOC2_SIGNAL_IN ( in_RENAME_ADDRESS                   ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    6969      _ALLOC2_SIGNAL_IN ( in_RENAME_HAS_IMMEDIAT              ,"HAS_IMMEDIAT"              ,Tcontrol_t        ,1                                    ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
    7070      _ALLOC2_SIGNAL_IN ( in_RENAME_IMMEDIAT                  ,"IMMEDIAT"                  ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
     
    124124      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_EXCEPTION           ,"EXCEPTION"                 ,Texception_t      ,_param->_size_exception              ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    125125      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_NO_SEQUENCE         ,"NO_SEQUENCE"               ,Tcontrol_t        ,1                                    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    126       _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS             ,"ADDRESS"                   ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
     126      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS             ,"ADDRESS"                   ,Taddress_t        ,_param->_size_instruction_address    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    127127      _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA                ,"DATA"                      ,Tgeneral_data_t   ,_param->_size_general_data           ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
    128128    }
     
    184184      ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EPCR        ,"ADDRESS_EPCR"              ,Taddress_t        ,_param->_size_instruction_address    );
    185185      ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR_VAL    ,"ADDRESS_EEAR_VAL"          ,Tcontrol_t        ,1                                    );
    186       ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Taddress_t        ,_param->_size_general_data           );
     186      ALLOC_SIGNAL_OUT  (out_COMMIT_EVENT_ADDRESS_EEAR        ,"ADDRESS_EEAR"              ,Tgeneral_data_t   ,_param->_size_general_data           );
    187187    }
    188188
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp

    r88 r97  
    6363    for (uint32_t i=0; i<_nb_inst_issue ; ++i)
    6464    for (uint32_t j=0; j<_nb_type; ++j)
    65     str+= toString(MSG_INFORMATION)+"   * table_issue_type                   ["+toString(i)+"]["+toString_type(j)+"] : "+toString<bool             >(_table_issue_type [i][j]          )+"\n";//[nb_inst_issue][nb_type]
     65    str+= toString(MSG_INFORMATION)+"   * table_issue_type                   ["+toString(i)+"]["+toString(j)+"] : "+toString<bool             >(_table_issue_type [i][j]          )+"\n";//[nb_inst_issue][nb_type]
    6666    str+= toString(MSG_INFORMATION)+"   * size_reexecute_queue             : "+toString<uint32_t         >(_size_reexecute_queue             )+"\n";
    6767    str+= toString(MSG_INFORMATION)+"   * reexecute_priority               : "+toString<Tpriority_t      >(_reexecute_priority               )+"\n";
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/config-min.cfg

    r88 r97  
    772       2       +1      # ras_size_queue                          [0]       [nb_thread]                                 
    881       1       +1      # upt_size_queue                          [0]       [nb_thread]                                 
     91       1       +1      # ufpt_size_queue                         [0]       [nb_thread]                                 
    9101       1       +1      # nb_decod_bloc                                                                           
    10111       1       +1      # size_decod_queue                        [0]       [nb_decod_bloc]                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/config-w1a.cfg

    r88 r97  
    774       4       +1      # ras_size_queue                          [0]       [nb_thread]                                 
    884       4       +1      # upt_size_queue                          [0]       [nb_thread]                                 
     92       2       +1      # ufpt_size_queue                         [0]       [nb_thread]                                 
    9101       1       +1      # nb_decod_bloc                                                                           
    10114       4       +1      # size_decod_queue                        [0]       [nb_decod_bloc]                             
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/src/main.cpp

    r88 r97  
    2525  err (_(" * ras_size_queue                          [nb_thread]                                  (uint32_t         )\n"));
    2626  err (_(" * upt_size_queue                          [nb_thread]                                  (uint32_t         )\n"));
     27  err (_(" * ufpt_size_queue                         [nb_thread]                                  (uint32_t         )\n"));
    2728
    2829  err (_(" * nb_decod_bloc                                                                        (uint32_t         )\n"));
     
    183184  uint32_t              * _ras_size_queue                                ;//[nb_thread]
    184185  uint32_t              * _upt_size_queue                                ;//[nb_thread]
     186  uint32_t              * _ufpt_size_queue                               ;//[nb_thread]
    185187
    186188  // Decod_bloc
     
    335337  SELFTEST0(_nb_thread                                     ,uint32_t                ,argv,x);
    336338
    337   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread))
     339  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread))
    338340    usage (argc, argv);
    339341 
     
    346348  SELFTEST1(_ras_size_queue                                ,uint32_t                ,argv,x,_nb_thread);
    347349  SELFTEST1(_upt_size_queue                                ,uint32_t                ,argv,x,_nb_thread);
     350  SELFTEST1(_ufpt_size_queue                               ,uint32_t                ,argv,x,_nb_thread);
    348351
    349352  // Decod bloc
     
    351354  SELFTEST0(_nb_decod_bloc                                 ,uint32_t                ,argv,x);
    352355
    353   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc))
     356  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc))
    354357    usage (argc, argv);
    355358 
     
    364367  SELFTEST0(_nb_rename_bloc                                ,uint32_t                ,argv,x);
    365368
    366   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc))
     369  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc))
    367370    usage (argc, argv);
    368371 
     
    382385  SELFTEST0(_nb_read_bloc                                  ,uint32_t                ,argv,x);
    383386
    384   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc))
     387  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc))
    385388    usage (argc, argv);
    386389 
     
    393396  SELFTEST0(_nb_write_bloc                                 ,uint32_t                ,argv,x);
    394397
    395   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc))
     398  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc))
    396399    usage (argc, argv);
    397400 
     
    404407  SELFTEST0(_nb_load_store_unit                            ,uint32_t                ,argv,x);
    405408
    406   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit))
     409  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit))
    407410    usage (argc, argv);
    408411 
     
    421424  SELFTEST0(_nb_functionnal_unit                           ,uint32_t                ,argv,x);
    422425
    423   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit))
     426  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit))
    424427    usage (argc, argv);
    425428 
     
    464467  SELFTEST0(_nb_front_end                                  ,uint32_t                ,argv,x);
    465468
    466   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end))
     469  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end))
    467470    usage (argc, argv);
    468471 
     
    491494  SELFTEST0(_nb_ooo_engine                                 ,uint32_t                ,argv,x);
    492495 
    493   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine))
     496  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine))
    494497    usage (argc, argv);
    495498 
     
    518521  SELFTEST0(_nb_execute_loop                               ,uint32_t                ,argv,x);
    519522
    520   if (argc < static_cast<int>(2+NB_PARAMS+4*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine+11*_nb_execute_loop))
     523  if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+5*_nb_decod_bloc+10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine+11*_nb_execute_loop))
    521524    usage (argc, argv);
    522525 
     
    536539  printf(" * Link\n");
    537540
    538   if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+11*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine+11*_nb_execute_loop))
     541  if (argc < static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+11*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine+11*_nb_execute_loop))
    539542    usage (argc, argv);
    540543 
     
    590593    _sum_cache_port += _nb_cache_port[i];
    591594 
    592   if (argc != static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+11*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine+11*_nb_execute_loop+
     595  if (argc != static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+11*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+18*_nb_ooo_engine+11*_nb_execute_loop+
    593596                               3*_nb_thread+_nb_front_end+_sum_inst_issue*_nb_read_bloc+_nb_load_store_unit*(_nb_read_bloc+_nb_write_bloc+_nb_thread)+_nb_functionnal_unit*(_nb_read_bloc+_nb_write_bloc)+_sum_cache_port))
    594597    usage (argc, argv);
     
    626629         _ras_size_queue                                ,
    627630         _upt_size_queue                                ,
     631         _ufpt_size_queue                               ,
    628632
    629633         _nb_decod_bloc                                 ,
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h

    r88 r97  
    4646  public : uint32_t              * _ras_size_queue                                ;//[nb_thread]
    4747  public : uint32_t              * _upt_size_queue                                ;//[nb_thread]
     48  public : uint32_t              * _ufpt_size_queue                               ;//[nb_thread]
    4849
    4950  // Decod bloc
     
    221222  public : uint32_t             ** _front_end_ras_size_queue                      ;//[nb_front_end][nb_context]
    222223  public : uint32_t             ** _front_end_upt_size_queue                      ;//[nb_front_end][nb_context]
     224  public : uint32_t             ** _front_end_ufpt_size_queue                     ;//[nb_front_end][nb_context]
    223225
    224226  // translate for ooo_engine
     
    346348  uint32_t              * ras_size_queue                                ,//[nb_thread]
    347349  uint32_t              * upt_size_queue                                ,//[nb_thread]
     350  uint32_t              * ufpt_size_queue                               ,//[nb_thread]
    348351
    349352  // Decod bloc
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp

    r88 r97  
    8484  uint32_t              * ras_size_queue                                ,//[nb_thread]
    8585  uint32_t              * upt_size_queue                                ,//[nb_thread]
     86  uint32_t              * ufpt_size_queue                               ,//[nb_thread]
    8687
    8788  // Decod bloc
     
    237238    _ras_size_queue                          = ras_size_queue                          ;
    238239    _upt_size_queue                          = upt_size_queue                          ;
     240    _ufpt_size_queue                         = ufpt_size_queue                         ;
    239241
    240242    _nb_decod_bloc                           = nb_decod_bloc                           ;
     
    441443    ALLOC2(_front_end_ras_size_queue                      ,uint32_t         ,_nb_front_end,_nb_context[it1]);
    442444    ALLOC2(_front_end_upt_size_queue                      ,uint32_t         ,_nb_front_end,_nb_context[it1]);
     445    ALLOC2(_front_end_ufpt_size_queue                     ,uint32_t         ,_nb_front_end,_nb_context[it1]);
    443446
    444447    for (uint32_t i=0; i<_nb_front_end; ++i)
     
    451454          _front_end_ras_size_queue               [i][j] = _ras_size_queue    [num_thread];
    452455          _front_end_upt_size_queue               [i][j] = _upt_size_queue    [num_thread];
     456          _front_end_ufpt_size_queue              [i][j] = _ufpt_size_queue   [num_thread];
    453457
    454458          uint32_t num_decod_bloc = _link_decod_bloc_with_thread [num_thread];
     
    17331737        _front_end_ras_size_queue               [i],
    17341738        _front_end_upt_size_queue               [i],
     1739        _front_end_ufpt_size_queue              [i],
    17351740        _size_nb_inst_commit                   
    17361741        );
     
    20272032    DELETE1(_front_end_nb_inst_branch_complete                      ,_nb_front_end);
    20282033    DELETE3(_front_end_instruction_implemeted                       ,_nb_front_end,_nb_context[it1],NB_INSTRUCTION);
     2034    DELETE2(_front_end_ufpt_size_queue                              ,_nb_front_end,_nb_context[it1]);
    20292035    DELETE2(_front_end_upt_size_queue                               ,_nb_front_end,_nb_context[it1]);
    20302036    DELETE2(_front_end_ras_size_queue                               ,_nb_front_end,_nb_context[it1]);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_print.cpp

    r88 r97  
    4343    str+= toString(MSG_INFORMATION)+"     * ras_size_queue                              : "+toString<uint32_t>(_ras_size_queue    [i])+"\n";
    4444    str+= toString(MSG_INFORMATION)+"     * upt_size_queue                              : "+toString<uint32_t>(_upt_size_queue    [i])+"\n";
     45    str+= toString(MSG_INFORMATION)+"     * ufpt_size_queue                             : "+toString<uint32_t>(_ufpt_size_queue   [i])+"\n";
    4546   
    4647    for (uint32_t j=0; j<NB_GROUP; ++j)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp

    r94 r97  
    1818  void RegisterFile_Monolithic::vhdl_declaration (Vhdl * & vhdl)
    1919  {
    20     vhdl->set_type ("Tregfile", "array " + std_logic_range(_param->_nb_word,true) + " of " + std_logic(_param->_size_word));
     20    vhdl->set_type ("Tregfile", "array " + _std_logic_range(_param->_nb_word) + " of " + std_logic(_param->_size_word));
    2121
    2222    vhdl->set_signal ("reg_DATA", "Tregfile");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest/include/test.h

    r81 r97  
    1616
    1717#include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h"
     18#include "Common/include/Time.h"
    1819
    1920using namespace std;
     
    2829              morpheo::behavioural::generic::registerfile::registerfile_multi_banked::Parameters * param);
    2930
    30 
    31 class Time
    32 {
    33 private : timeval time_begin;
    34 // private : timeval time_end;
    35  
    36 public  : Time ()
    37   {
    38     gettimeofday(&time_begin     ,NULL);
    39   };
    40 
    41 public  : ~Time ()
    42   {
    43     cout << *this;
    44   };
    45 
    46 public  : friend ostream& operator<< (ostream& output_stream,
    47                                       const Time & x)
    48   {
    49     timeval time_end;
    50    
    51     gettimeofday(&time_end       ,NULL);
    52    
    53     uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
    54 
    55     double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
    56    
    57     output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
    58 
    59     return output_stream;
    60   }
    61 };
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/include/test.h

    r81 r97  
    1515
    1616#include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h"
     17#include "Common/include/Time.h"
    1718
    1819using namespace std;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/SelfTest/src/test.cpp

    r88 r97  
    9494
    9595  cout << "<" << name << "> Start Simulation ............" << endl;
     96  Time * _time = new Time();
    9697
    9798  if (_param->_nb_entity > (8*sizeof (Tentity_t)))
     
    148149   ********************************************************/
    149150
     151  delete    _time;
    150152  cout << "<" << name << "> ............ Stop Simulation" << endl;
    151153
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed.cpp

    r88 r97  
    5252
    5353#ifdef VHDL
    54     if (usage_is_set(_usage,USE_VHDL)
     54    if (usage_is_set(_usage,USE_VHDL))
    5555      {
    5656        // generate the vhdl
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common

    r88 r97  
    2727DIR_SRC                         = src
    2828DIR_OBJ                         = obj
    29 #DIR_LIB                                = $(DIR_TMP)/lib
    3029DIR_SCRIPT                      = $(MORPHEO_SCRIPT)
    3130
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps

    r81 r97  
    2020#-----[ Library ]------------------------------------------
    2121
    22 Behavioural_LIBRARY             =       -lBehavioural   \
    23                                         -lCommon                                       
     22Behavioural_LIBRARY             =       -lBehavioural   \
     23                                        -lCommon
     24                                                                               
    2425
    2526Behavioural_DIR_LIBRARY         =       -L$(Behavioural_DIR)/lib        \
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h

    r88 r97  
    1616  [0][19] - SPR_CID
    1717*/
     18
     19#include "Common/include/ToString.h"
    1820
    1921namespace morpheo {
     
    3335
    3436  //=========================================================[ Type ]=====
    35 #  define TYPE_ALU                                 0x0        // 00000 - unit multiple
    36 #  define TYPE_SHIFT                               0x1        // 00000 - unit multiple
    37 #  define TYPE_MOVE                                0x2        // 00000 - unit multiple
    38 #  define TYPE_TEST                                0x3        // 00000 - unit multiple
    39 #  define TYPE_MUL                                 0x4        // 00000 - unit multiple
    40 #  define TYPE_DIV                                 0x5        // 00000 - unit multiple, type optionnal
    41 #  define TYPE_EXTEND                              0x6        // 00000 - unit multiple, type optionnal
    42 #  define TYPE_FIND                                0x7        // 00000 - unit multiple, type optionnal
    43 #  define TYPE_SPECIAL                             0x8        // 00000 - unit uniq
    44 #  define TYPE_CUSTOM                              0x9        // 00000 - unit uniq    , type optionnal
    45 #  define TYPE_BRANCH                              0xa        // 00000 - unit multiple
    46 #  define TYPE_MEMORY                              0xb        // 00000 - unit uniq
     37typedef enum
     38  {
     39    TYPE_ALU                               = 0x0,       // 00000 - unit multiple
     40    TYPE_SHIFT                             = 0x1,       // 00000 - unit multiple
     41    TYPE_MOVE                              = 0x2,       // 00000 - unit multiple
     42    TYPE_TEST                              = 0x3,       // 00000 - unit multiple
     43    TYPE_MUL                               = 0x4,       // 00000 - unit multiple
     44    TYPE_DIV                               = 0x5,       // 00000 - unit multiple, type optionnal
     45    TYPE_EXTEND                            = 0x6,       // 00000 - unit multiple, type optionnal
     46    TYPE_FIND                              = 0x7,       // 00000 - unit multiple, type optionnal
     47    TYPE_SPECIAL                           = 0x8,       // 00000 - unit uniq
     48    TYPE_CUSTOM                            = 0x9,       // 00000 - unit uniq    , type optionnal
     49    TYPE_BRANCH                            = 0xa,       // 00000 - unit multiple
     50    TYPE_MEMORY                            = 0xb        // 00000 - unit uniq
     51  } type_t;
    4752
    4853//#define NB_TYPE                                  11
     
    610615
    611616#  define SIZE_BRANCH_CONDITION                    4
    612 
    613 #  define BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK          0x0        // None condition (jump)
    614 #  define BRANCH_CONDITION_NONE_WITH_WRITE_STACK             0x8        // None condition (jump)
    615 #  define BRANCH_CONDITION_FLAG_UNSET                        0x2        // Branch if Flag is clear
    616 #  define BRANCH_CONDITION_FLAG_SET                          0x3        // Branch if Flag is set
    617 #  define BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK 0x4        // Branch if a register is read
    618 #  define BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK    0xc        // Branch if a register is read
    619 #  define BRANCH_CONDITION_READ_STACK                        0xf        // Branch with pop  in stack pointer
    620 
     617#  define MAX_BRANCH_CONDITION                     (1<<SIZE_BRANCH_CONDITION)
     618  typedef enum
     619    {
     620      BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK          = 0x0,        // None condition (jump)
     621      BRANCH_CONDITION_NONE_WITH_WRITE_STACK             = 0x8,        // None condition (jump)
     622      BRANCH_CONDITION_FLAG_UNSET                        = 0x2,        // Branch if Flag is clear
     623      BRANCH_CONDITION_FLAG_SET                          = 0x3,        // Branch if Flag is set
     624      BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK = 0x4,        // Branch if a register is read
     625      BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK    = 0xc,        // Branch if a register is read
     626      BRANCH_CONDITION_READ_STACK                        = 0xf         // Branch with pop  in stack pointer
     627    } branch_condition_t;
     628
     629#  define is_branch_condition_valid(x)                           \
     630  (( x == BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK         ) or \
     631   ( x == BRANCH_CONDITION_NONE_WITH_WRITE_STACK            ) or \
     632   ( x == BRANCH_CONDITION_FLAG_UNSET                       ) or \
     633   ( x == BRANCH_CONDITION_FLAG_SET                         ) or \
     634   ( x == BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK) or \
     635   ( x == BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK   ) or \
     636   ( x == BRANCH_CONDITION_READ_STACK                       ))
     637
     638
     639  /*
     640enum
     641  {
     642    BRANCH_TYPE_SEQUENTIAL,
     643    BRANCH_TYPE_JUMP,
     644    BRANCH_TYPE_CONDITIONNAL,
     645    BRANCH_TYPE_REGISTER,
     646    BRANCH_TYPE_CALL,
     647    BRANCH_TYPE_RETURN,
     648    NB_BRANCH_TYPE
     649  };
     650
     651#  define branch_condition_to_type(x)                                   \
     652  (x == BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK         )?BRANCH_TYPE_JUMP: \
     653  ((x == BRANCH_CONDITION_NONE_WITH_WRITE_STACK            )?BRANCH_TYPE_CALL: \
     654   ((x == BRANCH_CONDITION_FLAG_UNSET                       )?BRANCH_TYPE_CONDITIONNAL: \
     655    ((x == BRANCH_CONDITION_FLAG_SET                         )?BRANCH_TYPE_CONDITIONNAL: \
     656     ((x == BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK)?BRANCH_TYPE_REGISTER: \
     657      ((x == BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK   )?BRANCH_TYPE_CALL: \
     658       ((x == BRANCH_CONDITION_READ_STACK                       )?BRANCH_TYPE_RETURN:BRANCH_TYPE_SEQUENTIAL))))));
     659  */
     660 
    621661  //--------------------------------------------------[ instruction ]-----
    622662#  define NB_INSTRUCTION                           213        // 92 ORBIS, 30 ORFPX (15 simple, 15 double), 91 ORVDX (38 on byte, 41 on half, 12 independant format)
     
    9911031
    9921032}; // end namespace behavioural
     1033
     1034  template<> inline std::string toString<morpheo::behavioural::type_t>(const morpheo::behavioural::type_t& x)
     1035  {
     1036    switch (x)
     1037      {
     1038      case morpheo::behavioural::TYPE_ALU     : return "ALU"        ;
     1039      case morpheo::behavioural::TYPE_SHIFT   : return "SHIFT"      ;
     1040      case morpheo::behavioural::TYPE_MOVE    : return "MOVE"       ;
     1041      case morpheo::behavioural::TYPE_TEST    : return "TEST"       ;
     1042      case morpheo::behavioural::TYPE_MUL     : return "MUL"        ;
     1043      case morpheo::behavioural::TYPE_DIV     : return "DIV"        ;
     1044      case morpheo::behavioural::TYPE_EXTEND  : return "EXTEND"     ;
     1045      case morpheo::behavioural::TYPE_FIND    : return "FIND"       ;
     1046      case morpheo::behavioural::TYPE_SPECIAL : return "SPECIAL"    ;
     1047      case morpheo::behavioural::TYPE_CUSTOM  : return "CUSTOM"     ;
     1048      case morpheo::behavioural::TYPE_BRANCH  : return "BRANCH"     ;
     1049      case morpheo::behavioural::TYPE_MEMORY  : return "MEMORY"     ;
     1050      default : return "";
     1051      }
     1052  };
     1053
     1054  template<> inline std::string toString<morpheo::behavioural::branch_condition_t>(const morpheo::behavioural::branch_condition_t& x)
     1055  {
     1056    switch (x)
     1057      {
     1058      case morpheo::behavioural::BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK          : return "none_without_write_stack"         ;
     1059      case morpheo::behavioural::BRANCH_CONDITION_NONE_WITH_WRITE_STACK             : return "none_with_write_stack"            ;
     1060      case morpheo::behavioural::BRANCH_CONDITION_FLAG_UNSET                        : return "flag_unset"                       ;
     1061      case morpheo::behavioural::BRANCH_CONDITION_FLAG_SET                          : return "flag_set"                         ;
     1062      case morpheo::behavioural::BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK : return "read_register_without_write_stack";
     1063      case morpheo::behavioural::BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK    : return "read_register_with_write_stack"   ;
     1064      case morpheo::behavioural::BRANCH_CONDITION_READ_STACK                        : return "read_stack"                       ;
     1065      default : return "";
     1066      }
     1067  };
     1068
    9931069}; // end namespace morpheo             
    9941070
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h

    r88 r97  
    152152
    153153}; // end namespace behavioural
    154 
    155   inline std::string toString_type(const morpheo::behavioural::Ttype_t& x)
    156   {
    157     switch (x)
    158       {
    159       case TYPE_ALU     : return "ALU"        ; break;
    160       case TYPE_SHIFT   : return "SHIFT"      ; break;
    161       case TYPE_MOVE    : return "MOVE"       ; break;
    162       case TYPE_TEST    : return "TEST"       ; break;
    163       case TYPE_MUL     : return "MUL"        ; break;
    164       case TYPE_DIV     : return "DIV"        ; break;
    165       case TYPE_EXTEND  : return "EXTEND"     ; break;
    166       case TYPE_FIND    : return "FIND"       ; break;
    167       case TYPE_SPECIAL : return "SPECIAL"    ; break;
    168       case TYPE_CUSTOM  : return "CUSTOM"     ; break;
    169       case TYPE_BRANCH  : return "BRANCH"     ; break;
    170       case TYPE_MEMORY  : return "MEMORY"     ; break;
    171       default           : return "Unknow type"; break;
    172       }
    173   };
    174154
    175155  template<> inline std::string toString<morpheo::behavioural::Tpriority_t>(const morpheo::behavioural::Tpriority_t& x)
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h

    r96 r97  
    1010#define MORPHEO_MAJOR_VERSION 0
    1111#define MORPHEO_MINOR_VERSION 2
    12 #define MORPHEO_REVISION      "96"
     12#define MORPHEO_REVISION      "97"
    1313#define MORPHEO_CODENAME      "Castor"
    1414
    15 #define MORPHEO_DATE_DAY      "16
     15#define MORPHEO_DATE_DAY      "19
    1616#define MORPHEO_DATE_MONTH    "12"
    1717#define MORPHEO_DATE_YEAR     "2008"
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Vhdl.h

    r95 r97  
    2323  namespace behavioural          {
    2424
    25     std::string std_logic          (uint32_t size);
    26     std::string std_logic_conv     (uint32_t size, std::string   value);
    27     std::string std_logic_conv     (uint32_t size, uint32_t value);
    28     std::string std_logic_cst      (uint32_t size, uint32_t value);
    29     std::string std_logic_range    (uint32_t size, uint32_t max , uint32_t min , bool force=false);
    30     std::string std_logic_range    (               uint32_t max , uint32_t min , bool force=false);
    31     std::string std_logic_range    (uint32_t size,                               bool force=false);
    32     std::string std_logic_others   (uint32_t size, bool cst);
     25    std::string std_logic        (uint32_t size);
     26    std::string std_logic_conv   (uint32_t size, std::string   value);
     27    std::string std_logic_conv   (uint32_t size, uint32_t value);
     28    std::string std_logic_cst    (uint32_t size, uint32_t value);
     29    std::string std_logic_range  (uint32_t size, uint32_t max , uint32_t min );
     30    std::string std_logic_range  (               uint32_t max , uint32_t min );
     31    std::string std_logic_range  (uint32_t size                              );
     32    std::string _std_logic_range (uint32_t size, uint32_t max , uint32_t min );
     33    std::string _std_logic_range (               uint32_t max , uint32_t min );
     34    std::string _std_logic_range (uint32_t size                              );
     35    std::string std_logic_others (uint32_t size, bool cst);
    3336
    3437    class Vhdl
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Component_test_map.cpp

    r94 r97  
    4848         i != _list_component->end();
    4949         ++i)
    50       {
    51         test_ok &= (*i)->_entity->test_map(depth+1,false,is_behavioural);
    52         if (recursive)
    53           try
    54             {
    55               test_ok &= (*i)->_component->test_map(depth+1,recursive);
    56             }
    57           catch (morpheo::ErrorMorpheo & error)
    58             {
    59               // no error propagation, only top level
    60             }
    61       }
     50      if (((*i)->_instance & INSTANCE_COMPONENT) != 0)
     51        {
     52          test_ok &= (*i)->_entity->test_map(depth+1,false,is_behavioural);
     53          if (recursive)
     54            try
     55              {
     56                test_ok &= (*i)->_component->test_map(depth+1,recursive);
     57              }
     58            catch (morpheo::ErrorMorpheo & error)
     59              {
     60                // no error propagation, only top level
     61              }
     62        }
    6263   
    6364    log_printf(FUNC,Behavioural,FUNCTION,"End");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_exist.cpp

    r88 r97  
    11#include "Behavioural/include/SPR_access_mode.h"
     2// #include "Common/include/Debug.h"
    23
    34namespace morpheo {
     
    1516
    1617    spr_access_mode_t mode = _spr_generic [num_group][num_reg];
     18//     log_printf(TRACE,true,"exist","  * exist");
     19//     log_printf(TRACE,true,"exist","    * num_group              : %d",num_group);
     20//     log_printf(TRACE,true,"exist","    * num_register           : %d",num_reg);
     21//     log_printf(TRACE,true,"exist","    * supervisor_access_mode : %d",mode._supervisor_access_mode);
     22//     log_printf(TRACE,true,"exist","    * user_access_mode       : %d",mode._user_access_mode      );
    1723
    1824    return ((mode._supervisor_access_mode != SPR_ACCESS_MODE_NONE) or
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/SPR_access_mode_implement_group.cpp

    r88 r97  
    3333            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][  20]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
    3434           
    35             const uint32_t nb_shadow = 1;
     35            const uint32_t nb_shadow = 1; // max 16
    3636           
    37             for (uint32_t i=32; i<=32+nb_shadow; i++)
    38             _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
    39             for (uint32_t i=48; i<=48+nb_shadow; i++)
    40             _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
    41             for (uint32_t i=64; i<=64+nb_shadow; i++)
    42             _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
    43             for (uint32_t i=1024; i<=1024+32*nb_shadow; i++)
    44             _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     37            for (uint32_t i=32; i<32+nb_shadow; i++)
     38            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     39            for (uint32_t i=48; i<48+nb_shadow; i++)
     40            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     41            for (uint32_t i=64; i<64+nb_shadow; i++)
     42            _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
     43//          for (uint32_t i=1024; i<1024+32*nb_shadow; i++)
     44//          _spr_generic [GROUP_SYSTEM_AND_CONTROL ][   i]._supervisor_access_mode = SPR_ACCESS_MODE_READ_WRITE;
    4545
    4646            break;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_set_body_component_port_map.cpp

    r81 r97  
    1818#define FUNCTION "Vhdl::set_body_component_port_map"
    1919  void Vhdl::set_body_component_port_map (std::list<std::string> & list_port_map      ,
    20                                           std::string         name_port          ,
    21                                           uint32_t       size_port          ,
    22                                           std::string         name_signal        ,
    23                                           uint32_t       size_signal        )
     20                                          std::string              name_port          ,
     21                                          uint32_t                 size_port          ,
     22                                          std::string              name_signal        ,
     23                                          uint32_t                 size_signal        )
    2424  {
    2525    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp

    r95 r97  
    8080#undef  FUNCTION
    8181#define FUNCTION "Vhdl::std_logic_range"
    82   std::string std_logic_range (uint32_t size, uint32_t max, uint32_t min, bool force)
     82  std::string std_logic_range (uint32_t size, uint32_t max, uint32_t min)
    8383  {
    8484    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    8585    std::string type;
    8686
    87     if (force)
    8887      {
    89         type = "("+toString(max)+" downto "+toString(min)+")";
    90       }
    91     else
    92       {
    93         if (max == min)
    94           {
    95             type = "("+toString(max)+")";
    96           }
     88        if (size < 2)
     89          type = "";
    9790        else
    9891          {
    99             if (size < 2)
    100               type = "";
     92            if (max == min)
     93              {
     94                type = "("+toString(max)+")";
     95              }
    10196            else
    102               type = "("+toString(max)+" downto "+toString(min)+")";
     97              {
     98                type = "("+toString(max)+" downto "+toString(min)+")";
     99              }
    103100          }
    104101      }
     
    109106  };
    110107
    111   std::string std_logic_range (uint32_t max, uint32_t min, bool force)
     108  std::string std_logic_range (uint32_t max, uint32_t min)
    112109  {
    113110    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    114111    std::string type;
    115112
    116     if (force)
    117       {
    118         type = "("+toString(max)+" downto "+toString(min)+")";
    119       }
    120     else
    121113      {
    122114        if (max == min)
     
    138130  };
    139131
    140   std::string std_logic_range (uint32_t size, bool force)
     132  std::string std_logic_range (uint32_t size)
    141133  {
    142134    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
    143     std::string _return = std_logic_range(size-1,0,force);
     135    std::string _return = std_logic_range(size,size-1,0);
     136    log_printf(FUNC,Behavioural,FUNCTION,"End");
     137
     138    return _return;
     139  }
     140
     141#undef  FUNCTION
     142#define FUNCTION "Vhdl::_std_logic_range"
     143  std::string _std_logic_range (uint32_t size, uint32_t max, uint32_t min)
     144  {
     145    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     146    std::string type=_std_logic_range(max,min);
     147    log_printf(FUNC,Behavioural,FUNCTION,"End");
     148
     149    return type;
     150  };
     151
     152  std::string _std_logic_range (uint32_t max, uint32_t min)
     153  {
     154    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     155    std::string type = "("+toString(max)+" downto "+toString(min)+")";
     156    log_printf(FUNC,Behavioural,FUNCTION,"End");
     157
     158    return type;
     159  };
     160
     161  std::string _std_logic_range (uint32_t size)
     162  {
     163    log_printf(FUNC,Behavioural,FUNCTION,"Begin");
     164    std::string _return = _std_logic_range(size,size-1,0);
    144165    log_printf(FUNC,Behavioural,FUNCTION,"End");
    145166
  • trunk/IPs/systemC/processor/Morpheo/Common/include/Debug.h

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

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

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

    r88 r97  
    1111namespace morpheo {
    1212
    13 static uint32_t _debug_depth = 0;
     13#ifdef DEBUG
     14static bool       debug_initialized;
     15#endif
     16debug_verbosity_t debug;
    1417
    1518#undef  FUNCTION
    16 #define FUNCTION "debug_tab"
    17 std::string debug_tab (void)
     19#define FUNCTION "debug_init"
     20void debug_init (void)
    1821{
    19   return std::string(_debug_depth,'\t');
     22#ifdef DEBUG
     23  if (not debug_initialized)
     24    {
     25      debug = DEBUG;
     26
     27//       debug_initialized = true;
     28    }
     29#endif
    2030}
    2131
    2232#undef  FUNCTION
    23 #define FUNCTION "debug_tab_inc"
    24 void debug_tab_inc (void)
     33#define FUNCTION "debug_init"
     34void debug_init (debug_verbosity_t level)
    2535{
    26 //   _debug_depth ++;
    27 }
    28 
    29 #undef  FUNCTION
    30 #define FUNCTION "debug_tab_dec"
    31 void debug_tab_dec (void)
    32 {
    33 //   _debug_depth --;
     36#ifdef DEBUG
     37  if (not debug_initialized)
     38    {
     39      // Take min
     40      debug = (level < DEBUG)?level:DEBUG;
     41     
     42      debug_initialized = true;
     43    }
     44#endif
    3445}
    3546
  • trunk/IPs/systemC/processor/Morpheo/Common/src/Environment.cpp

    r88 r97  
    99#include "Common/include/ErrorMorpheo.h"
    1010#include "Common/include/Debug.h"
     11#include "Common/include/Message.h"
    1112#include <sys/stat.h>
    1213
  • trunk/IPs/systemC/processor/Morpheo/Common/src/Message.cpp

    r88 r97  
    1 #ifdef LOG_FILE
    21/*
    32 * $Id$
     
    1615namespace morpheo {
    1716
    18 static bool log_initialized;
    19 FILE * log_stream;
    20 
     17  static bool log_initialized;
     18  FILE * log_stream;
     19 
     20#undef  FUNCTION
     21#define FUNCTION "log"
     22  FILE * log (FILE * stream)
     23  {
     24    // if log stream is initialized, take this, else return the default stream.
     25    return (log_initialized and (log_stream!=NULL))?log_stream:stream;
     26  };
     27 
    2128#undef  FUNCTION
    2229#define FUNCTION "log_init"
    23 void log_init (void)
    24 {
    25   if (not log_initialized)
    26     {
    27       log_initialized = true;
    28 
    29       directory();
    30      
    31       std::string filename = MORPHEO_LOG+"/Morpheo_"+toString<pid_t>(getpid())+".log";
    32 
    33       log_stream = fopen (filename.c_str(), "w");
    34 
    35       if (log_stream==NULL)
    36         {
    37           fprintf(stderr,_("%s Error create log file \"%s\", take the standard output.\n"),MSG_ERROR,filename.c_str());
    38           log_stream = stdout;
    39         }
    40       else
    41         {
    42           fprintf(stdout,_("%s Create log file \"%s\".\n"),MSG_INFORMATION,filename.c_str());
    43         }
    44     }
    45 }
    46 
     30  void log_init (bool        have_file,
     31                 std::string directory,
     32                 std::string file)
     33  {
     34    if (not log_initialized)
     35      {
     36        log_initialized = true;
     37       
     38        if (have_file)
     39          {
     40            // if the file is not define, take pid.
     41            std::string filename = directory+"/Morpheo_"+((file!="")?file:toString<pid_t>(getpid()))+".log";
     42           
     43            log_stream = fopen (filename.c_str(), "w");
     44           
     45            if (log_stream==NULL)
     46              {
     47                fprintf(stderr,_("%s Error create log file \"%s\", take the standard output.\n"),MSG_ERROR,filename.c_str());
     48                log_stream = stdout;
     49              }
     50            else
     51              {
     52                fprintf(stdout,_("%s Create log file \"%s\".\n"),MSG_INFORMATION,filename.c_str());
     53              }
     54          }
     55        else
     56          {
     57            log_stream = NULL;
     58          }
     59      }
     60  }
     61 
    4762}; // end namespace morpheo
    48 #endif
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen

    r88 r97  
    2020  <parameter name="ras_size_queue"                        min="2"   max="8"    step="* 2" default="2"   level="..." description="..." />
    2121  <parameter name="upt_size_queue"                        min="1"   max="8"    step="* 2" default="2"   level="..." description="..." />
     22  <parameter name="ufpt_size_queue"                       min="1"   max="8"    step="* 2" default="2"   level="..." description="..." />
    2223                                                                               
    2324  <parameter name="nb_decod_bloc"                         min="1"   max="8"    step="* 2" default="1"   level="..." description="..." />
  • trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim

    r95 r97  
    1010  <parameter name="use_statistics"             value="0" />
    1111  <parameter name="use_information"            value="0" />
    12   <parameter name="use_header"                 value="0" />
     12  <parameter name="use_header"                 value="1" />
    1313                                               
    1414  <parameter name="nb_cycle_before_begin"      value="0" />
     
    1818  <parameter name="simulation_nb_instruction"  value="0"   />
    1919
    20   <parameter name="directory_statistics"       value="/tmp/Morpheo/" />
    21   <parameter name="directory_vhdl"             value="/tmp/Morpheo/" />
    22   <parameter name="directory_position"         value="/tmp/Morpheo/" />
    23   <parameter name="directory_log"              value="/tmp/Morpheo/" />
     20  <parameter name="directory_statistics"       value="." />
     21  <parameter name="directory_vhdl"             value="." />
     22  <parameter name="directory_position"         value="." />
     23  <parameter name="directory_log"              value="." />
    2424
    25   <parameter name="debug"                      value="0" />
     25  <parameter name="debug_level"                value="trace" />
     26  <parameter name="debug_have_log_file"        value="0" />
    2627
    2728</parameters>
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/include/Morpheo.h

    r88 r97  
    150150  public  :            ~Morpheo                   (void);
    151151
    152   private : std::string header                    (void);
    153 
    154152  private : void        configuration             (std::string filename_simulator,
    155153                                                   std::string filename_generator,
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo.cpp

    r88 r97  
    3737                   filename_instance,
    3838                   get_custom_information);
    39  
    40     if (usage_is_set(_usage,USE_HEADER))
    41       std::cout << header();
    4239 
    4340    log_printf(INFO,Morpheo,FUNCTION,_("<%s> : Allocation"),_name.c_str());
  • trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_configuration.cpp

    r88 r97  
    5252       param->_ras_size_queue                                ,
    5353       param->_upt_size_queue                                ,
     54       param->_ufpt_size_queue                               ,
    5455
    5556       param->_nb_decod_bloc                                 ,
  • trunk/Makefile.flags

    r88 r97  
    2323
    2424#                                       -DPRINT_COLOR           \
    25 #                                       -DLOG_FILE              \
    2625#                                       -DPOSITION              \
    2726#                                       -DREGISTER_INIT         \
     
    2928# Flags :
    3029# DEBUG={level}                               - Print Debug Message
    31 # LOG_FILE                                    - Print Message in a log file
    3230# SYSTEMC                                     - To generate a systemc's model
    3331# VHDL                                        - To generate a vhdl's    models
  • trunk/Platforms/Test/Makefile

    r88 r97  
    5858OBJECTS                         =       $(patsubst $(DIR_SRC)/%.cpp,$(DIR_OBJ)/%.o,$(wildcard $(DIR_SRC)/*.cpp))
    5959LOGS                            =       $(patsubst $(DIR_DATA)/%.cfg,$(DIR_LOG)/%.log,$(wildcard $(DIR_DATA)/*.cfg))
     60DEBUG_CFG                       =       $(DIR_DATA)/debug.cfg
     61DEBUG_LOG                       =       $(DIR_LOG)/debug.log
    6062
    6163EXEC                            =       $(DIR_BIN)/soft.x
     
    106108run                             : $(DIR_LOG) all
    107109                                @\
    108                                 $(MAKE) $(LOGS);                                        \
     110                                declare logs;                                           \
     111                                if $(TEST) -f "$(DEBUG_CFG)"; then                      \
     112                                        logs="$(DEBUG_LOG)";                            \
     113                                else                                                    \
     114                                        logs="$(LOGS)";                                 \
     115                                fi;                                                     \
     116                                $(MAKE) $$logs;                                         \
    109117                                declare -i have_test_ko=0;                              \
    110                                 for log in $(LOGS); do                                  \
     118                                for log in $$logs; do                                   \
    111119                                        $(GREP) -q "Test OK" $$log;                     \
    112120                                        declare -i test_ok=$$?;                         \
Note: See TracChangeset for help on using the changeset viewer.