Ignore:
Timestamp:
Dec 12, 2007, 5:02:47 PM (17 years ago)
Author:
rosiere
Message:

Station de reservation : systemC et VHDL ok

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h

    r56 r69  
    1717#include "Common/include/Debug.h"
    1818
     19#ifndef  SYSTEMC_VHDL_COMPATIBILITY
    1920#include "Behavioural/Generic/Queue_Control/include/Queue_Control.h"
     21#endif
    2022#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
    21 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h"
     23#include "Behavioural/include/Types.h"
    2224#ifdef STATISTICS
    2325#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h"
     
    4244  class Treservation_station_entry_t
    4345  {
    44   public    : Tcontext_t         _context_id  ;
    45   public    : Tpacket_t          _packet_id   ;
     46  public    : Tcontext_t         _context_id     ;
     47  public    : Tcontext_t         _front_end_id   ;
     48  public    : Tcontext_t         _ooo_engine_id  ;
     49  public    : Tpacket_t          _rob_id         ;
    4650  public    : Toperation_t       _operation   ;
    4751  public    : Ttype_t            _type        ;
     
    6872                                morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Treservation_station_entry_t & x)
    6973    {
    70       output_stream << " * _context_id  : " << toString(x._context_id  ) << endl
    71                     << " * _packet_id   : " << toString(x._packet_id   ) << endl
    72                     << " * _operation   : " << toString(x._operation   ) << endl
    73                     << " * _type        : " << toString(x._type        ) << endl
    74                     << " * _has_immediat: " << toString(x._has_immediat) << endl
    75                     << " * _immediat    : " << toString(x._immediat    ) << endl
    76 //                  << " * _read_ra     : " << toString(x._read_ra     ) << endl
    77                     << " * _num_reg_ra  : " << toString(x._num_reg_ra  ) << endl
    78                     << " * _data_ra_val : " << toString(x._data_ra_val ) << endl
    79                     << " * _data_ra     : " << toString(x._data_ra     ) << endl
    80 //                  << " * _read_rb     : " << toString(x._read_rb     ) << endl
    81                     << " * _num_reg_rb  : " << toString(x._num_reg_rb  ) << endl
    82                     << " * _data_rb_val : " << toString(x._data_rb_val ) << endl
    83                     << " * _data_rb     : " << toString(x._data_rb     ) << endl
    84 //                  << " * _read_rc     : " << toString(x._read_rc     ) << endl
    85                     << " * _num_reg_rc  : " << toString(x._num_reg_rc  ) << endl
    86                     << " * _data_rc_val : " << toString(x._data_rc_val ) << endl
    87                     << " * _data_rc     : " << toString(x._data_rc     ) << endl
    88                     << " * _write_rd    : " << toString(x._write_rd    ) << endl
    89                     << " * _num_reg_rd  : " << toString(x._num_reg_rd  ) << endl
    90                     << " * _write_re    : " << toString(x._write_re    ) << endl
    91                     << " * _num_reg_re  : " << toString(x._num_reg_re  ) << endl;
     74      output_stream << " * _context_id     : " << toString(x._context_id     ) << endl
     75                    << " * _front_end_id   : " << toString(x._front_end_id   ) << endl
     76                    << " * _ooo_engine_id  : " << toString(x._ooo_engine_id  ) << endl
     77                    << " * _rob_id         : " << toString(x._rob_id         ) << endl
     78                    << " * _operation      : " << toString(x._operation      ) << endl
     79                    << " * _type           : " << toString(x._type           ) << endl
     80                    << " * _has_immediat   : " << toString(x._has_immediat   ) << endl
     81                    << " * _immediat       : " << toString(x._immediat       ) << endl
     82//                  << " * _read_ra        : " << toString(x._read_ra        ) << endl
     83                    << " * _num_reg_ra     : " << toString(x._num_reg_ra     ) << endl
     84                    << " * _data_ra_val    : " << toString(x._data_ra_val    ) << endl
     85                    << " * _data_ra        : " << toString(x._data_ra        ) << endl
     86//                  << " * _read_rb        : " << toString(x._read_rb        ) << endl
     87                    << " * _num_reg_rb     : " << toString(x._num_reg_rb     ) << endl
     88                    << " * _data_rb_val    : " << toString(x._data_rb_val    ) << endl
     89                    << " * _data_rb        : " << toString(x._data_rb        ) << endl
     90//                  << " * _read_rc        : " << toString(x._read_rc        ) << endl
     91                    << " * _num_reg_rc     : " << toString(x._num_reg_rc     ) << endl
     92                    << " * _data_rc_val    : " << toString(x._data_rc_val    ) << endl
     93                    << " * _data_rc        : " << toString(x._data_rc        ) << endl
     94                    << " * _write_rd       : " << toString(x._write_rd       ) << endl
     95                    << " * _num_reg_rd     : " << toString(x._num_reg_rd     ) << endl
     96                    << " * _write_re       : " << toString(x._write_re       ) << endl
     97                    << " * _num_reg_re     : " << toString(x._num_reg_re     ) << endl;
    9298
    9399      return output_stream;
     
    123129  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
    124130
    125     // ~~~~~[ Interface "reservation_station_in" ]~~~~~~~~~~~~~~~~~~~~~~~~
    126   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_VAL         ;
    127   public    : SC_OUT(Tcontrol_t        )    * out_RESERVATION_STATION_IN_ACK         ;
    128   public    : SC_IN (Tcontext_t        )    *  in_RESERVATION_STATION_IN_CONTEXT_ID  ;
    129   public    : SC_IN (Tpacket_t         )    *  in_RESERVATION_STATION_IN_PACKET_ID   ;
    130   public    : SC_IN (Toperation_t      )    *  in_RESERVATION_STATION_IN_OPERATION   ;
    131   public    : SC_IN (Ttype_t           )    *  in_RESERVATION_STATION_IN_TYPE        ;
    132   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_HAS_IMMEDIAT;
    133   public    : SC_IN (Tgeneral_data_t   )    *  in_RESERVATION_STATION_IN_IMMEDIAT    ;
    134 //public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_READ_RA     ;
    135   public    : SC_IN (Tgeneral_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RA  ;
    136   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_DATA_RA_VAL ;
    137   public    : SC_IN (Tgeneral_data_t   )    *  in_RESERVATION_STATION_IN_DATA_RA     ;
    138 //public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_READ_RB     ;
    139   public    : SC_IN (Tgeneral_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RB  ;
    140   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_DATA_RB_VAL ;
    141   public    : SC_IN (Tgeneral_data_t   )    *  in_RESERVATION_STATION_IN_DATA_RB     ;
    142 //public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_READ_RC     ;
    143   public    : SC_IN (Tspecial_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RC  ;
    144   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_DATA_RC_VAL ;
    145   public    : SC_IN (Tspecial_data_t   )    *  in_RESERVATION_STATION_IN_DATA_RC     ;
    146   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_WRITE_RD    ;
    147   public    : SC_IN (Tgeneral_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RD  ;
    148   public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_WRITE_RE    ;
    149   public    : SC_IN (Tspecial_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RE  ;
    150 
    151     // ~~~~~[ Interface "reservation_station_out" ]~~~~~~~~~~~~~~~~~~~~~~~
    152   public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_VAL         ;
    153   public    : SC_IN (Tcontrol_t        )   **  in_RESERVATION_STATION_OUT_ACK         ;
    154   public    : SC_OUT(Tcontext_t        )   ** out_RESERVATION_STATION_OUT_CONTEXT_ID  ;
    155   public    : SC_OUT(Tpacket_t         )   ** out_RESERVATION_STATION_OUT_PACKET_ID   ;
    156   public    : SC_OUT(Toperation_t      )   ** out_RESERVATION_STATION_OUT_OPERATION   ;
    157   public    : SC_OUT(Ttype_t           )   ** out_RESERVATION_STATION_OUT_TYPE        ;
    158   public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_HAS_IMMEDIAT;
    159   public    : SC_OUT(Tgeneral_data_t   )   ** out_RESERVATION_STATION_OUT_IMMEDIAT    ;
    160   public    : SC_OUT(Tgeneral_data_t   )   ** out_RESERVATION_STATION_OUT_DATA_RA     ;
    161   public    : SC_OUT(Tgeneral_data_t   )   ** out_RESERVATION_STATION_OUT_DATA_RB     ;
    162   public    : SC_OUT(Tspecial_data_t   )   ** out_RESERVATION_STATION_OUT_DATA_RC     ;
    163   public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_WRITE_RD    ;
    164   public    : SC_OUT(Tgeneral_address_t)   ** out_RESERVATION_STATION_OUT_NUM_REG_RD  ;
    165   public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_WRITE_RE    ;
    166   public    : SC_OUT(Tspecial_address_t)   ** out_RESERVATION_STATION_OUT_NUM_REG_RE  ;
     131    // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~
     132  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_VAL            ;
     133  public    : SC_OUT(Tcontrol_t        )    * out_INSERT_ACK            ;
     134  public    : SC_IN (Tcontext_t        )    *  in_INSERT_CONTEXT_ID     ;
     135  public    : SC_IN (Tcontext_t        )    *  in_INSERT_FRONT_END_ID   ;
     136  public    : SC_IN (Tcontext_t        )    *  in_INSERT_OOO_ENGINE_ID  ;
     137  public    : SC_IN (Tpacket_t         )    *  in_INSERT_ROB_ID         ;
     138  public    : SC_IN (Toperation_t      )    *  in_INSERT_OPERATION      ;
     139  public    : SC_IN (Ttype_t           )    *  in_INSERT_TYPE           ;
     140  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_HAS_IMMEDIAT   ;
     141  public    : SC_IN (Tgeneral_data_t   )    *  in_INSERT_IMMEDIAT       ;
     142//public    : SC_IN (Tcontrol_t        )    *  in_INSERT_READ_RA        ;
     143  public    : SC_IN (Tgeneral_address_t)    *  in_INSERT_NUM_REG_RA     ;
     144  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_DATA_RA_VAL    ;
     145  public    : SC_IN (Tgeneral_data_t   )    *  in_INSERT_DATA_RA        ;
     146//public    : SC_IN (Tcontrol_t        )    *  in_INSERT_READ_RB        ;
     147  public    : SC_IN (Tgeneral_address_t)    *  in_INSERT_NUM_REG_RB     ;
     148  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_DATA_RB_VAL    ;
     149  public    : SC_IN (Tgeneral_data_t   )    *  in_INSERT_DATA_RB        ;
     150//public    : SC_IN (Tcontrol_t        )    *  in_INSERT_READ_RC        ;
     151  public    : SC_IN (Tspecial_address_t)    *  in_INSERT_NUM_REG_RC     ;
     152  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_DATA_RC_VAL    ;
     153  public    : SC_IN (Tspecial_data_t   )    *  in_INSERT_DATA_RC        ;
     154  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_WRITE_RD       ;
     155  public    : SC_IN (Tgeneral_address_t)    *  in_INSERT_NUM_REG_RD     ;
     156  public    : SC_IN (Tcontrol_t        )    *  in_INSERT_WRITE_RE       ;
     157  public    : SC_IN (Tspecial_address_t)    *  in_INSERT_NUM_REG_RE     ;
     158
     159    // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~
     160  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_VAL            ;
     161  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_ACK            ;
     162  public    : SC_OUT(Tcontext_t        )   ** out_RETIRE_CONTEXT_ID     ;
     163  public    : SC_OUT(Tcontext_t        )   ** out_RETIRE_FRONT_END_ID   ;
     164  public    : SC_OUT(Tcontext_t        )   ** out_RETIRE_OOO_ENGINE_ID  ;
     165  public    : SC_OUT(Tpacket_t         )   ** out_RETIRE_ROB_ID         ;
     166  public    : SC_OUT(Toperation_t      )   ** out_RETIRE_OPERATION      ;
     167  public    : SC_OUT(Ttype_t           )   ** out_RETIRE_TYPE           ;
     168  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_HAS_IMMEDIAT   ;
     169  public    : SC_OUT(Tgeneral_data_t   )   ** out_RETIRE_IMMEDIAT       ;
     170  public    : SC_OUT(Tgeneral_data_t   )   ** out_RETIRE_DATA_RA        ;
     171  public    : SC_OUT(Tgeneral_data_t   )   ** out_RETIRE_DATA_RB        ;
     172  public    : SC_OUT(Tspecial_data_t   )   ** out_RETIRE_DATA_RC        ;
     173  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_WRITE_RD       ;
     174  public    : SC_OUT(Tgeneral_address_t)   ** out_RETIRE_NUM_REG_RD     ;
     175  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_WRITE_RE       ;
     176  public    : SC_OUT(Tspecial_address_t)   ** out_RETIRE_NUM_REG_RE     ;
    167177
    168178    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    169179
    170   public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL       ; // val and ack
    171   public    : SC_IN (Tcontext_t        )   **  in_GPR_WRITE_CONTEXT_ID;
    172   public    : SC_IN (Tgeneral_address_t)   **  in_GPR_WRITE_NUM_REG   ;
    173   public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA      ;
     180  public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL          ; // val and ack
     181  public    : SC_IN (Tcontext_t        )   **  in_GPR_WRITE_OOO_ENGINE_ID;
     182  public    : SC_IN (Tgeneral_address_t)   **  in_GPR_WRITE_NUM_REG      ;
     183  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA         ;
    174184
    175185    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    176186
    177   public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL       ; // val and ack
    178   public    : SC_IN (Tcontext_t        )   **  in_SPR_WRITE_CONTEXT_ID;
    179   public    : SC_IN (Tspecial_address_t)   **  in_SPR_WRITE_NUM_REG   ;
    180   public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA      ;
     187  public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL          ; // val and ack
     188  public    : SC_IN (Tcontext_t        )   **  in_SPR_WRITE_OOO_ENGINE_ID;
     189  public    : SC_IN (Tspecial_address_t)   **  in_SPR_WRITE_NUM_REG      ;
     190  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA         ;
    181191
    182192    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    183193
    184   public    : SC_IN (Tcontext_t        )   **  in_BYPASS_WRITE_CONTEXT_ID ;
    185   public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_GPR_VAL    ;
    186   public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_WRITE_GPR_NUM_REG; // RD
    187   public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_WRITE_GPR_DATA   ;
    188   public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_SPR_VAL    ;
    189   public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_WRITE_SPR_NUM_REG; // RE
    190   public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_WRITE_SPR_DATA   ;
     194  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_WRITE_OOO_ENGINE_ID ;
     195  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_GPR_VAL       ;
     196  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_WRITE_GPR_NUM_REG   ; // RD
     197  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_WRITE_GPR_DATA      ;
     198  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_SPR_VAL       ;
     199  public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_WRITE_SPR_NUM_REG   ; // RE
     200  public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_WRITE_SPR_DATA      ;
    191201
    192202    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    193203
    194   public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_MEMORY_VAL       ;
    195   public    : SC_IN (Tcontext_t        )   **  in_BYPASS_MEMORY_CONTEXT_ID;
    196   public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_MEMORY_NUM_REG   ;
    197   public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_MEMORY_DATA      ;
     204  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_MEMORY_VAL          ;
     205  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_MEMORY_OOO_ENGINE_ID;
     206  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_MEMORY_NUM_REG      ;
     207  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_MEMORY_DATA         ;
    198208
    199209
     
    203213
    204214    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     215#ifdef  SYSTEMC_VHDL_COMPATIBILITY
     216  protected : bool                          *  _queue_valid;
     217  protected : uint32_t                         internal_INSERT_SLOT;
     218#else
    205219  protected : morpheo::behavioural::generic::queue_control::Queue_Control * _queue_control;
     220#endif
    206221  protected : Treservation_station_entry_t  *  _queue;
    207222
    208   protected : Tcontrol_t                       internal_RESERVATION_STATION_IN_ACK;
    209   protected : Tcontrol_t                    *  internal_RESERVATION_STATION_OUT_VAL;
     223  protected : Tcontrol_t                       internal_INSERT_ACK;
     224  protected : Tcontrol_t                    *  internal_RETIRE_VAL;
     225  protected : uint32_t                      *  internal_RETIRE_SLOT;
    210226#endif
    211227
     
    244260#endif                                         
    245261                                               
    246 #ifdef VHDL_TESTBENCH                         
    247   private : void     vhdl_testbench_transition (void);
    248 #endif
     262  private : void     end_cycle                 (void);
    249263  };
    250264
Note: See TracChangeset for help on using the changeset viewer.