Ignore:
Timestamp:
Feb 5, 2008, 5:21:20 PM (16 years ago)
Author:
rosiere
Message:
  • Add two component :
    • network between read unit and execute unit
    • network between execute unit and write unit
  • remove parameters "nb_operation" and "nb_type"
  • in write_queue add the special case : load_speculative
Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/Makefile.deps

    r74 r77  
    1919
    2020#-----[ Library ]------------------------------------------
     21
    2122Write_queue_LIBRARY             =       -lWrite_queue   \
    2223                                        $(Behavioural_LIBRARY) 
     
    2526                                        $(Behavioural_DIR_LIBRARY)
    2627
    27 Write_queue_DEPENDENCIES        =       Behavioural_library
     28#-----[ Rules ]--------------------------------------------
    2829
    29 Write_queue_CLEAN               =       Behavioural_library_clean
    30 
    31 #-----[ Rules ]--------------------------------------------
    32 #.NOTPARALLEL                   : Write_queue_library Write_queue_library_clean
    33 
    34 Write_queue_library             : $(Write_queue_DEPENDENCIES)
     30Write_queue_library             :
    3531                                @\
     32                                $(MAKE) Behavioural_library;    \
    3633                                $(MAKE) --directory=$(Write_queue_DIR) --makefile=Makefile;
    3734
    38 Write_queue_library_clean       : $(Write_queue_CLEAN)
     35Write_queue_library_clean       :
    3936                                @\
     37                                $(MAKE) Behavioural_library_clean;      \
    4038                                $(MAKE) --directory=$(Write_queue_DIR) --makefile=Makefile clean;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/configuration.cfg

    r73 r77  
    992       2       *2 # uint32_t size_special_data 
    101016      16      *2 # uint32_t nb_special_register
    11 10      10      *2 # uint32_t nb_operation       
    12 4       4       *2 # uint32_t nb_type           
    13111       8       *2 # uint32_t nb_bypass_write 
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp

    r73 r77  
    88#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 12
     10#define NB_PARAMS 10
    1111
    1212void usage (int argc, char * argv[])
     
    2323  err (_(" * size_special_data   (uint32_t)\n"));
    2424  err (_(" * nb_special_register (uint32_t)\n"));
    25   err (_(" * nb_operation        (uint32_t)\n"));
    26   err (_(" * nb_type             (uint32_t)\n"));
    2725  err (_(" * nb_bypass_write     (uint32_t)\n"));
    2826
     
    5149  const uint32_t size_special_data   = atoi(argv[x++]);
    5250  const uint32_t nb_special_register = atoi(argv[x++]);
    53   const uint32_t nb_operation        = atoi(argv[x++]);
    54   const uint32_t nb_type             = atoi(argv[x++]);
    5551  const uint32_t nb_bypass_write     = atoi(argv[x++]);
    5652
     
    6763         size_special_data  ,
    6864         nb_special_register,
    69          nb_operation       ,
    70          nb_type            ,
    7165         nb_bypass_write    );
    7266     
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp

    r74 r77  
    5050  public  : Tpacket_t          _packet_id    ;
    5151//public  : Toperation_t       _operation    ;
    52 //public  : Ttype_t            _type         ;
     52  public  : Ttype_t            _type         ;
    5353  public  : Tcontrol_t         _write_rd     ;
    5454  public  : Tgeneral_address_t _num_reg_rd   ;
     
    6666                     Tpacket_t          packet_id    ,
    6767                     //Toperation_t       operation    ,
    68                      //Ttype_t            type         ,
     68                     Ttype_t            type         ,
    6969                     Tcontrol_t         write_rd     ,
    7070                     Tgeneral_address_t num_reg_rd   ,
     
    8282      _packet_id     = packet_id    ;
    8383    //_operation     = operation    ;
    84     //_type          = type         ;
     84      _type          = type         ;
    8585      _write_rd      = write_rd     ;
    8686      _num_reg_rd    = num_reg_rd   ;
     
    102102                    << " * _packet_id     : " << toString(x._packet_id    ) << std::endl
    103103                  //<< " * _operation     : " << toString(x._operation    ) << std::endl
    104                   //<< " * _type          : " << toString(x._type         ) << std::endl
     104                    << " * _type          : " << toString(x._type         ) << std::endl
    105105                    << " * _write_rd      : " << toString(x._write_rd     ) << std::endl
    106106                    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << std::endl
     
    149149  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_PACKET_ID     ," in_WRITE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
    150150//ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_OPERATION     ," in_WRITE_QUEUE_IN_OPERATION"     , Toperation_t      );
    151 //ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
     151  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
    152152  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_WRITE_RD      ," in_WRITE_QUEUE_IN_WRITE_RD"      , Tcontrol_t        );
    153153  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NUM_REG_RD    ," in_WRITE_QUEUE_IN_NUM_REG_RD"    , Tgeneral_address_t);
     
    209209  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_PACKET_ID     );
    210210//INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_OPERATION     );
    211 //INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
     211  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
    212212  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RD      );
    213213  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RD    );
     
    322322                                     i,
    323323                                   //range<Toperation_t      >(rand(),_param->_size_operation       ),
    324                                    //range<Ttype_t           >(rand(),_param->_size_type            ),
     324                                     range<Ttype_t           >(rand(),_param->_size_type            ),
    325325                                     range<Tcontrol_t        >(rand(),1                             ),
    326326                                     range<Tgeneral_address_t>(rand(),_param->_size_general_register),
     
    354354            in_WRITE_QUEUE_IN_PACKET_ID    ->write(request [nb_request_in]->_packet_id    );
    355355          //in_WRITE_QUEUE_IN_OPERATION    ->write(request [nb_request_in]->_operation    );
    356           //in_WRITE_QUEUE_IN_TYPE         ->write(request [nb_request_in]->_type         );
     356            in_WRITE_QUEUE_IN_TYPE         ->write(request [nb_request_in]->_type         );
    357357            in_WRITE_QUEUE_IN_WRITE_RD     ->write(request [nb_request_in]->_write_rd     );
    358358            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/Parameters.h

    r73 r77  
    3535  public : const uint32_t            _size_special_data            ;
    3636  public : const uint32_t            _nb_special_register          ;
    37   public : const uint32_t            _nb_operation                 ;
    38   public : const uint32_t            _nb_type                      ;
    3937  public : const uint32_t            _nb_bypass_write              ;
    4038
     
    4846  public : const uint32_t            _size_general_register        ;
    4947  public : const uint32_t            _size_special_register        ;
    50   public : const uint32_t            _size_operation               ;
    51   public : const uint32_t            _size_type                    ;
    5248
    5349  public : const bool                _have_port_context_id         ;
     
    6662                        uint32_t size_special_data  ,
    6763                        uint32_t nb_special_register,
    68                         uint32_t nb_operation       ,
    69                         uint32_t nb_type            ,
    7064                        uint32_t nb_bypass_write    );
    7165  public : Parameters  (Parameters & param) ;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h

    r75 r77  
    4545  public  : Tpacket_t          _packet_id    ;
    4646//public  : Toperation_t       _operation    ;
    47 //public  : Ttype_t            _type         ;
     47  public  : Ttype_t            _type         ;
    4848  public  : Tcontrol_t         _write_rd     ;
    4949  public  : Tgeneral_address_t _num_reg_rd   ;
     
    6161                                 Tpacket_t          packet_id    ,
    6262                               //Toperation_t       operation    ,
    63                                //Ttype_t            type         ,
     63                                 Ttype_t            type         ,
    6464                                 Tcontrol_t         write_rd     ,
    6565                                 Tgeneral_address_t num_reg_rd   ,
     
    7777      _packet_id     = packet_id    ;
    7878    //_operation     = operation    ;
    79     //_type          = type         ;
     79      _type          = type         ;
    8080      _write_rd      = write_rd     ;
    8181      _num_reg_rd    = num_reg_rd   ;
     
    128128  public    : SC_IN (Tpacket_t         )    *  in_WRITE_QUEUE_IN_PACKET_ID    ;
    129129//public    : SC_IN (Toperation_t      )    *  in_WRITE_QUEUE_IN_OPERATION    ;
    130 //public    : SC_IN (Ttype_t           )    *  in_WRITE_QUEUE_IN_TYPE         ;
     130  public    : SC_IN (Ttype_t           )    *  in_WRITE_QUEUE_IN_TYPE         ;
    131131  public    : SC_IN (Tcontrol_t        )    *  in_WRITE_QUEUE_IN_WRITE_RD     ;
    132132  public    : SC_IN (Tgeneral_address_t)    *  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/Parameters.cpp

    r74 r77  
    2929                          uint32_t size_special_data  ,
    3030                          uint32_t nb_special_register,
    31                           uint32_t nb_operation       ,
    32                           uint32_t nb_type            ,
    3331                          uint32_t nb_bypass_write    ):
    3432    _size_queue              (size_queue         ),
     
    4139    _size_special_data       (size_special_data  ),
    4240    _nb_special_register     (nb_special_register),
    43     _nb_operation            (nb_operation       ),
    44     _nb_type                 (nb_type            ),
    4541    _nb_bypass_write         (nb_bypass_write    ),
    4642
     
    5450    _size_general_register   (log2(_nb_general_register)),
    5551    _size_special_register   (log2(_nb_special_register)),
    56     _size_operation          (log2(_nb_operation       )),
    57     _size_type               (log2(_nb_type            )),
    5852
    5953    _have_port_context_id    (_size_context_id    > 0),
     
    7973    _size_special_data       (param._size_special_data      ),
    8074    _nb_special_register     (param._nb_special_register    ),
    81     _nb_operation            (param._nb_operation           ),
    82     _nb_type                 (param._nb_type                ),
    8375    _nb_bypass_write         (param._nb_bypass_write        ),
    8476
     
    9284    _size_general_register   (param._size_general_register  ),
    9385    _size_special_register   (param._size_special_register  ),
    94     _size_operation          (param._size_operation         ),
    95     _size_type               (param._size_type              ),
    9686
    9787    _have_port_context_id    (param._have_port_context_id   ),
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_print.cpp

    r73 r77  
    3737    xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
    3838    xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
    39     xml.singleton_begin("nb_operation       "); xml.attribut("value",toString(_nb_operation       )); xml.singleton_end();
    40     xml.singleton_begin("nb_type            "); xml.attribut("value",toString(_nb_type            )); xml.singleton_end();
    4139    xml.singleton_begin("nb_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
    4240    xml.balise_close();
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp

    r76 r77  
    6060       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id        );
    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 );
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp

    r73 r77  
    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

    r74 r77  
    5353               (_param->_have_port_packet_id    )?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   ),
     
    6767          }
    6868
    69         // Test if pop
    70         if (internal_WRITE_QUEUE_OUT_VAL and PORT_READ(in_WRITE_QUEUE_OUT_ACK))
     69        // Test if pop :
     70        //  * transaction on write_queue_out interface
     71        //  * have a speculative load and all register is write in registerfile
     72        if ( (internal_WRITE_QUEUE_OUT_VAL and PORT_READ(in_WRITE_QUEUE_OUT_ACK)) or
     73             ((_queue->empty() == false)                                         and
     74              (_queue->front()->_type      == TYPE_MEMORY)                       and
     75              (_queue->front()->_exception == EXCEPTION_MEMORY_LOAD_SPECULATIVE) and
     76              (_queue->front()->_write_rd  == 0)                                 and
     77              (_queue->front()->_write_re  == 0)))
    7178          {
    7279            delete _queue->front();
Note: See TracChangeset for help on using the changeset viewer.