/*
 * $Id: Parameters_copy.cpp 117 2009-05-16 14:42:39Z rosiere $
 *
 * [ Description ]
 * 
 */

#include "Behavioural/include/Parameters.h"

namespace morpheo              {
namespace behavioural          {

#undef  FUNCTION
#define FUNCTION "Parameters::duplicate" 
  void Parameters::duplicate (Parameters * param)
  {
    param->_simulation_nb_cyle                    = _simulation_nb_cyle                    ;
    param->_simulation_nb_instruction             = _simulation_nb_instruction             ;

    param->_size_context_id                       = _size_context_id                       ;
    param->_have_port_context_id                  = _have_port_context_id                  ;
    
    param->_size_front_end_id                     = _size_front_end_id                     ;
    param->_have_port_front_end_id                = _have_port_front_end_id                ;

    param->_size_ooo_engine_id                    = _size_ooo_engine_id                    ;
    param->_have_port_ooo_engine_id               = _have_port_ooo_engine_id               ;

    param->_size_instruction_address              = _size_instruction_address              ;
//  param->_have_port_instruction_address         = _have_port_instruction_address         ; // always true
    
    param->_size_data_address                     = _size_data_address                     ;
//  param->_have_port_data_address                = _have_port_data_address                ; // always true

    param->_size_nb_inst_decod                    = _size_nb_inst_decod                    ;
//  param->_have_port_nb_inst_decod               = _have_port_nb_inst_decod               ; // always true

    param->_size_nb_inst_commit                   = _size_nb_inst_commit                   ;
//  param->_have_port_nb_inst_commit              = _have_port_nb_inst_commit              ; // always true

    param->_size_depth                            = _size_depth                            ;
    param->_have_port_depth                       = _have_port_depth                       ;

    param->_size_ifetch_queue_ptr                 = _size_ifetch_queue_ptr                 ;
    param->_have_port_ifetch_queue_ptr            = _have_port_ifetch_queue_ptr            ;

    param->_size_inst_ifetch_ptr                  = _size_inst_ifetch_ptr                  ; // nb_inst_fetch
    param->_have_port_inst_ifetch_ptr             = _have_port_inst_ifetch_ptr             ;

//  param->_size_branch_update_prediction_id      = _size_branch_update_prediction_id      ; // = size_depth
//  param->_have_port_branch_update_prediction_id = _have_port_branch_update_prediction_id ; // = size_depth

    param->_size_rob_ptr                          = _size_rob_ptr                          ;
    param->_have_port_rob_ptr                     = _have_port_rob_ptr                     ;

    param->_size_load_queue_ptr                   = _size_load_queue_ptr                   ;
    param->_have_port_load_queue_ptr              = _have_port_load_queue_ptr              ;

    param->_size_store_queue_ptr                  = _size_store_queue_ptr                  ;
    param->_have_port_store_queue_ptr             = _have_port_store_queue_ptr             ; // always true (min = 1)

    param->_size_general_data                     = _size_general_data                     ;
//  param->_have_port_general_data                = _have_port_general_data                ; // always true

    param->_size_special_data                     = _size_special_data                     ;
//  param->_have_port_special_data                = _have_port_special_data                ; // always true

    param->_size_general_register                 = _size_general_register                 ;
//  param->_have_port_general_register            = _have_port_general_register            ; // always true

    param->_size_special_register                 = _size_special_register                 ;
//  param->_have_port_special_register            = _have_port_special_register            ; // always true
  }

}; // end namespace behavioural          
}; // end namespace morpheo              
