Ignore:
Timestamp:
May 16, 2009, 4:42:39 PM (15 years ago)
Author:
rosiere
Message:

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/config_min.cfg

    r111 r117  
    13131       1       *2      # size_store_queue_ptr   
    14140       0       *2      # size_load_queue_ptr     
    15 1       1       *2      # nb_inst_issue           
    16151       1       *2      # nb_inst_rename         [0]               [nb_rename_unit]
    17161       1       *2      # nb_inst_reexecute       
     
    19181       1       *2      # priority               
    20191       1       *2      # load_balancing         
    21 1       1       +1      # table_routing          [0][0]            [nb_rename_unit][nb_inst_issue]
    22 1       1       +1      # table_issue_type       [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    23 1       1       +1      # table_issue_type       [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    24 1       1       +1      # table_issue_type       [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    25 1       1       +1      # table_issue_type       [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    26 1       1       +1      # table_issue_type       [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    27 1       1       +1      # table_issue_type       [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    28 1       1       +1      # table_issue_type       [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    29 1       1       +1      # table_issue_type       [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    30 1       1       +1      # table_issue_type       [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    31 1       1       +1      # table_issue_type       [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    32 1       1       +1      # table_issue_type       [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    33 1       1       +1      # table_issue_type       [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/config_mono_rename_unit.cfg

    r111 r117  
    13131       1       *2      # size_store_queue_ptr   
    14140       0       *2      # size_load_queue_ptr     
    15 2       2       *4      # nb_inst_issue           
    16151       4       *4      # nb_inst_rename         [0]               [nb_rename_unit]
    17161       4       *4      # nb_inst_reexecute       
     
    19181       1       *2      # priority               
    20191       1       *2      # load_balancing         
    21 1       1       +1      # table_routing          [0][0]            [nb_rename_unit][nb_inst_issue]
    22 1       1       +1      # table_routing          [0][1]            [nb_rename_unit][nb_inst_issue]
    23 1       1       +1      # table_issue_type       [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    24 1       1       +1      # table_issue_type       [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    25 1       1       +1      # table_issue_type       [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    26 1       1       +1      # table_issue_type       [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    27 0       0       +1      # table_issue_type       [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    28 0       0       +1      # table_issue_type       [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    29 1       1       +1      # table_issue_type       [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    30 1       1       +1      # table_issue_type       [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    31 0       0       +1      # table_issue_type       [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    32 0       0       +1      # table_issue_type       [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    33 0       0       +1      # table_issue_type       [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    34 1       1       +1      # table_issue_type       [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    35 1       1       +1      # table_issue_type       [1][TYPE_ALU    ] [nb_inst_issue][nb_type]
    36 1       1       +1      # table_issue_type       [1][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    37 1       1       +1      # table_issue_type       [1][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    38 1       1       +1      # table_issue_type       [1][TYPE_TEST   ] [nb_inst_issue][nb_type]
    39 1       1       +1      # table_issue_type       [1][TYPE_MUL    ] [nb_inst_issue][nb_type]
    40 1       1       +1      # table_issue_type       [1][TYPE_DIV    ] [nb_inst_issue][nb_type]
    41 0       0       +1      # table_issue_type       [1][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    42 0       0       +1      # table_issue_type       [1][TYPE_FIND   ] [nb_inst_issue][nb_type]
    43 1       1       +1      # table_issue_type       [1][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    44 1       1       +1      # table_issue_type       [1][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    45 1       1       +1      # table_issue_type       [1][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    46 0       0       +1      # table_issue_type       [1][TYPE_MEMORY ] [nb_inst_issue][nb_type]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/config_multi_rename_unit.cfg

    r111 r117  
    13131       1       *2      # size_store_queue_ptr   
    14140       0       *2      # size_load_queue_ptr     
    15 4       4       *4      # nb_inst_issue           
    16154       4       *4      # nb_inst_rename         [0]               [nb_rename_unit]
    17161       1       *4      # nb_inst_rename         [1]               [nb_rename_unit]
     
    22211       1       *2      # priority               
    23221       1       *2      # load_balancing         
    24 1       1       +1      # table_routing          [0][0]            [nb_rename_unit][nb_inst_issue]
    25 1       1       +1      # table_routing          [0][1]            [nb_rename_unit][nb_inst_issue]
    26 0       0       +1      # table_routing          [0][2]            [nb_rename_unit][nb_inst_issue]
    27 0       0       +1      # table_routing          [0][3]            [nb_rename_unit][nb_inst_issue]
    28 1       1       +1      # table_routing          [1][0]            [nb_rename_unit][nb_inst_issue]
    29 1       1       +1      # table_routing          [1][1]            [nb_rename_unit][nb_inst_issue]
    30 0       0       +1      # table_routing          [1][2]            [nb_rename_unit][nb_inst_issue]
    31 0       0       +1      # table_routing          [1][3]            [nb_rename_unit][nb_inst_issue]
    32 0       0       +1      # table_routing          [2][0]            [nb_rename_unit][nb_inst_issue]
    33 0       0       +1      # table_routing          [2][1]            [nb_rename_unit][nb_inst_issue]
    34 1       1       +1      # table_routing          [2][2]            [nb_rename_unit][nb_inst_issue]
    35 1       1       +1      # table_routing          [2][3]            [nb_rename_unit][nb_inst_issue]
    36 0       0       +1      # table_routing          [3][0]            [nb_rename_unit][nb_inst_issue]
    37 0       0       +1      # table_routing          [3][1]            [nb_rename_unit][nb_inst_issue]
    38 1       1       +1      # table_routing          [3][2]            [nb_rename_unit][nb_inst_issue]
    39 1       1       +1      # table_routing          [3][3]            [nb_rename_unit][nb_inst_issue]
    40 1       1       +1      # table_issue_type       [0][TYPE_ALU    ] [nb_inst_issue][nb_type]
    41 1       1       +1      # table_issue_type       [0][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    42 1       1       +1      # table_issue_type       [0][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    43 1       1       +1      # table_issue_type       [0][TYPE_TEST   ] [nb_inst_issue][nb_type]
    44 1       1       +1      # table_issue_type       [0][TYPE_MUL    ] [nb_inst_issue][nb_type]
    45 1       1       +1      # table_issue_type       [0][TYPE_DIV    ] [nb_inst_issue][nb_type]
    46 1       1       +1      # table_issue_type       [0][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    47 1       1       +1      # table_issue_type       [0][TYPE_FIND   ] [nb_inst_issue][nb_type]
    48 1       1       +1      # table_issue_type       [0][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    49 1       1       +1      # table_issue_type       [0][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    50 1       1       +1      # table_issue_type       [0][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    51 1       1       +1      # table_issue_type       [0][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    52 1       1       +1      # table_issue_type       [1][TYPE_ALU    ] [nb_inst_issue][nb_type]
    53 1       1       +1      # table_issue_type       [1][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    54 1       1       +1      # table_issue_type       [1][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    55 1       1       +1      # table_issue_type       [1][TYPE_TEST   ] [nb_inst_issue][nb_type]
    56 1       1       +1      # table_issue_type       [1][TYPE_MUL    ] [nb_inst_issue][nb_type]
    57 1       1       +1      # table_issue_type       [1][TYPE_DIV    ] [nb_inst_issue][nb_type]
    58 1       1       +1      # table_issue_type       [1][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    59 1       1       +1      # table_issue_type       [1][TYPE_FIND   ] [nb_inst_issue][nb_type]
    60 1       1       +1      # table_issue_type       [1][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    61 1       1       +1      # table_issue_type       [1][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    62 1       1       +1      # table_issue_type       [1][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    63 1       1       +1      # table_issue_type       [1][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    64 1       1       +1      # table_issue_type       [2][TYPE_ALU    ] [nb_inst_issue][nb_type]
    65 1       1       +1      # table_issue_type       [2][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    66 1       1       +1      # table_issue_type       [2][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    67 1       1       +1      # table_issue_type       [2][TYPE_TEST   ] [nb_inst_issue][nb_type]
    68 1       1       +1      # table_issue_type       [2][TYPE_MUL    ] [nb_inst_issue][nb_type]
    69 1       1       +1      # table_issue_type       [2][TYPE_DIV    ] [nb_inst_issue][nb_type]
    70 1       1       +1      # table_issue_type       [2][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    71 1       1       +1      # table_issue_type       [2][TYPE_FIND   ] [nb_inst_issue][nb_type]
    72 1       1       +1      # table_issue_type       [2][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    73 1       1       +1      # table_issue_type       [2][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    74 1       1       +1      # table_issue_type       [2][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    75 1       1       +1      # table_issue_type       [2][TYPE_MEMORY ] [nb_inst_issue][nb_type]
    76 1       1       +1      # table_issue_type       [3][TYPE_ALU    ] [nb_inst_issue][nb_type]
    77 1       1       +1      # table_issue_type       [3][TYPE_SHIFT  ] [nb_inst_issue][nb_type]
    78 1       1       +1      # table_issue_type       [3][TYPE_MOVE   ] [nb_inst_issue][nb_type]
    79 1       1       +1      # table_issue_type       [3][TYPE_TEST   ] [nb_inst_issue][nb_type]
    80 1       1       +1      # table_issue_type       [3][TYPE_MUL    ] [nb_inst_issue][nb_type]
    81 1       1       +1      # table_issue_type       [3][TYPE_DIV    ] [nb_inst_issue][nb_type]
    82 1       1       +1      # table_issue_type       [3][TYPE_EXTEND ] [nb_inst_issue][nb_type]
    83 1       1       +1      # table_issue_type       [3][TYPE_FIND   ] [nb_inst_issue][nb_type]
    84 1       1       +1      # table_issue_type       [3][TYPE_SPECIAL] [nb_inst_issue][nb_type]
    85 1       1       +1      # table_issue_type       [3][TYPE_CUSTOM ] [nb_inst_issue][nb_type]
    86 1       1       +1      # table_issue_type       [3][TYPE_BRANCH ] [nb_inst_issue][nb_type]
    87 1       1       +1      # table_issue_type       [3][TYPE_MEMORY ] [nb_inst_issue][nb_type]
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/src/main.cpp

    r111 r117  
    88#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/include/test.h"
    99
    10 #define NB_PARAMS 18
     10#define NB_PARAMS 17
    1111
    1212void usage (int argc, char * argv[])
     
    2727  err (_(" * size_store_queue_ptr                                  (uint32_t             )\n"));
    2828  err (_(" * size_load_queue_ptr                                   (uint32_t             )\n"));
    29   err (_(" * nb_inst_issue                                         (uint32_t             )\n"));
    3029  err (_(" * nb_inst_rename        [nb_rename_unit]                (uint32_t             )\n"));
    3130  err (_(" * nb_inst_reexecute                                     (uint32_t             )\n"));
     
    3332  err (_(" * priority                                              (Tpriority_t          )\n"));
    3433  err (_(" * load_balancing                                        (Tload_balancing_t    )\n"));
    35   err (_(" * table_routing         [nb_rename_unit][nb_inst_issue] (bool                 )\n"));
    36   err (_(" * table_routing         [nb_inst_issue][nb_type]        (bool                 )\n"));
    37   err (_("   * TYPE_ALU    \n"));
    38   err (_("   * TYPE_SHIFT  \n"));
    39   err (_("   * TYPE_MOVE   \n"));
    40   err (_("   * TYPE_TEST   \n"));
    41   err (_("   * TYPE_MUL    \n"));
    42   err (_("   * TYPE_DIV    \n"));
    43   err (_("   * TYPE_EXTEND \n"));
    44   err (_("   * TYPE_FIND   \n"));
    45   err (_("   * TYPE_SPECIAL\n"));
    46   err (_("   * TYPE_CUSTOM \n"));
    47   err (_("   * TYPE_BRANCH \n"));
    48   err (_("   * TYPE_MEMORY \n"));
     34//   err (_(" * table_routing         [nb_rename_unit][nb_inst_issue] (bool                 )\n"));
     35//   err (_(" * table_issue_type      [nb_inst_issue][nb_type]        (bool                 )\n"));
     36//   err (_("   * TYPE_ALU    \n"));
     37//   err (_("   * TYPE_SHIFT  \n"));
     38//   err (_("   * TYPE_MOVE   \n"));
     39//   err (_("   * TYPE_TEST   \n"));
     40//   err (_("   * TYPE_MUL    \n"));
     41//   err (_("   * TYPE_DIV    \n"));
     42//   err (_("   * TYPE_EXTEND \n"));
     43//   err (_("   * TYPE_FIND   \n"));
     44//   err (_("   * TYPE_SPECIAL\n"));
     45//   err (_("   * TYPE_CUSTOM \n"));
     46//   err (_("   * TYPE_BRANCH \n"));
     47//   err (_("   * TYPE_MEMORY \n"));
    4948
    5049  exit (1);
     
    6867  uint32_t          _nb_rename_unit         = fromString<uint32_t         >(argv[x++]);
    6968
    70   if (argc <= static_cast<int>(2+NB_PARAMS+_nb_rename_unit))
     69  if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit))
    7170    usage (argc, argv);
    7271
     
    8180  uint32_t          _size_store_queue_ptr   = fromString<uint32_t         >(argv[x++]);
    8281  uint32_t          _size_load_queue_ptr    = fromString<uint32_t         >(argv[x++]);
    83   uint32_t          _nb_inst_issue          = fromString<uint32_t         >(argv[x++]);
     82//uint32_t          _nb_inst_issue          = fromString<uint32_t         >(argv[x++]);
    8483  uint32_t        * _nb_inst_rename         = new uint32_t [_nb_rename_unit];
    8584  for (uint32_t i=0; i<_nb_rename_unit; i++)
     
    9089  Tload_balancing_t _load_balancing         = fromString<Tload_balancing_t>(argv[x++]);
    9190
    92   if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit+(_nb_rename_unit+12)*_nb_inst_issue))
    93     usage (argc, argv);
     91//   if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit+(_nb_rename_unit+12)*_nb_inst_issue))
     92//     usage (argc, argv);
    9493
    95   bool           ** _table_routing          = new bool * [_nb_rename_unit];
    96   for (uint32_t i=0; i<_nb_rename_unit; i++)
    97     {
    98       _table_routing [i] = new bool [_nb_inst_issue];
    99       for (uint32_t j=0; j<_nb_inst_issue; j++)
    100         _table_routing [i][j] = fromString<bool>(argv[x++]);
    101     }
     94//   bool           ** _table_routing          = new bool * [_nb_rename_unit];
     95//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     96//     {
     97//       _table_routing [i] = new bool [_nb_inst_issue];
     98//       for (uint32_t j=0; j<_nb_inst_issue; j++)
     99//      _table_routing [i][j] = fromString<bool>(argv[x++]);
     100//     }
    102101
    103   bool           ** _table_issue_type          = new bool * [_nb_inst_issue];
    104   for (uint32_t i=0; i<_nb_inst_issue; i++)
    105     {
    106       _table_issue_type [i] = new bool [_nb_inst_issue];
     102//   bool           ** _table_issue_type          = new bool * [_nb_inst_issue];
     103//   for (uint32_t i=0; i<_nb_inst_issue; i++)
     104//     {
     105//       _table_issue_type [i] = new bool [_nb_inst_issue];
    107106
    108       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
    109       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
    110       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
    111       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
    112       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
    113       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
    114       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
    115       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
    116       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
    117       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
    118       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
    119       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
    120     }
     107//       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
     108//       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
     109//       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
     110//       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
     111//       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
     112//       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
     113//       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
     114//       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
     115//       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
     116//       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
     117//       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
     118//       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
     119//     }
    121120
    122121  int _return = EXIT_SUCCESS;
     
    137136         _size_store_queue_ptr  ,
    138137         _size_load_queue_ptr   ,
    139          _nb_inst_issue         ,
     138//       _nb_inst_issue         ,
    140139         _nb_inst_rename        ,
    141140         _nb_inst_reexecute     ,
     
    143142         _priority              ,
    144143         _load_balancing        ,
    145          _table_routing         ,
    146          _table_issue_type      ,
     144//       _table_routing         ,
     145//       _table_issue_type      ,
    147146         true // is_toplevel
    148147         );
     
    173172  delete [] _nb_inst_rename;
    174173
    175   for (uint32_t i=0; i<_nb_rename_unit; i++)
    176     delete [] _table_routing [i];
    177   delete [] _table_routing   ;
    178   for (uint32_t i=0; i<_nb_inst_issue; i++)
    179     delete [] _table_issue_type [i];
    180   delete [] _table_issue_type;
     174//   for (uint32_t i=0; i<_nb_rename_unit; i++)
     175//     delete [] _table_routing [i];
     176//   delete [] _table_routing   ;
     177//   for (uint32_t i=0; i<_nb_inst_issue; i++)
     178//     delete [] _table_issue_type [i];
     179//   delete [] _table_issue_type;
    181180
    182181  return (_return);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/SelfTest/src/test.cpp

    r110 r117  
    4848  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
    4949  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
     50
     51  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_VAL                   ;
     52  sc_signal<Tcontrol_t        > *** out_ISSUE_IN_ACK                   ;
     53  sc_signal<Tcontext_t        > ***  in_ISSUE_IN_CONTEXT_ID            ;
     54  sc_signal<Tcontext_t        > ***  in_ISSUE_IN_FRONT_END_ID          ;
     55  sc_signal<Tpacket_t         > ***  in_ISSUE_IN_PACKET_ID             ;
     56  sc_signal<Toperation_t      > ***  in_ISSUE_IN_OPERATION             ;
     57  sc_signal<Ttype_t           > ***  in_ISSUE_IN_TYPE                  ;
     58  sc_signal<Tlsq_ptr_t        > ***  in_ISSUE_IN_STORE_QUEUE_PTR_WRITE ;
     59  sc_signal<Tlsq_ptr_t        > ***  in_ISSUE_IN_LOAD_QUEUE_PTR_WRITE  ;
     60  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_HAS_IMMEDIAT          ;
     61  sc_signal<Tgeneral_data_t   > ***  in_ISSUE_IN_IMMEDIAT              ;
     62  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_READ_RA               ;
     63  sc_signal<Tgeneral_address_t> ***  in_ISSUE_IN_NUM_REG_RA            ;
     64  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_READ_RB               ;
     65  sc_signal<Tgeneral_address_t> ***  in_ISSUE_IN_NUM_REG_RB            ;
     66  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_READ_RC               ;
     67  sc_signal<Tspecial_address_t> ***  in_ISSUE_IN_NUM_REG_RC            ;
     68  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_WRITE_RD              ;
     69  sc_signal<Tgeneral_address_t> ***  in_ISSUE_IN_NUM_REG_RD            ;
     70  sc_signal<Tcontrol_t        > ***  in_ISSUE_IN_WRITE_RE              ;
     71  sc_signal<Tspecial_address_t> ***  in_ISSUE_IN_NUM_REG_RE            ;
     72  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_VAL                  ;
     73  sc_signal<Tcontrol_t        >  ** out_REEXECUTE_ACK                  ;
     74  sc_signal<Tcontext_t        >  **  in_REEXECUTE_CONTEXT_ID           ;
     75  sc_signal<Tcontext_t        >  **  in_REEXECUTE_FRONT_END_ID         ;
     76  sc_signal<Tpacket_t         >  **  in_REEXECUTE_PACKET_ID            ;
     77  sc_signal<Toperation_t      >  **  in_REEXECUTE_OPERATION            ;
     78  sc_signal<Ttype_t           >  **  in_REEXECUTE_TYPE                 ;
     79  sc_signal<Tlsq_ptr_t        >  **  in_REEXECUTE_STORE_QUEUE_PTR_WRITE;
     80  sc_signal<Tlsq_ptr_t        >  **  in_REEXECUTE_LOAD_QUEUE_PTR_WRITE ;
     81  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_HAS_IMMEDIAT         ;
     82  sc_signal<Tgeneral_data_t   >  **  in_REEXECUTE_IMMEDIAT             ;
     83  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_READ_RA              ;
     84  sc_signal<Tgeneral_address_t>  **  in_REEXECUTE_NUM_REG_RA           ;
     85  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_READ_RB              ;
     86  sc_signal<Tgeneral_address_t>  **  in_REEXECUTE_NUM_REG_RB           ;
     87  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_READ_RC              ;
     88  sc_signal<Tspecial_address_t>  **  in_REEXECUTE_NUM_REG_RC           ;
     89  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_WRITE_RD             ;
     90  sc_signal<Tgeneral_address_t>  **  in_REEXECUTE_NUM_REG_RD           ;
     91  sc_signal<Tcontrol_t        >  **  in_REEXECUTE_WRITE_RE             ;
     92  sc_signal<Tspecial_address_t>  **  in_REEXECUTE_NUM_REG_RE           ;
     93  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_VAL                  ;
     94  sc_signal<Tcontrol_t        >  **  in_ISSUE_OUT_ACK                  ;
     95  sc_signal<Tcontext_t        >  ** out_ISSUE_OUT_CONTEXT_ID           ;
     96  sc_signal<Tcontext_t        >  ** out_ISSUE_OUT_FRONT_END_ID         ;
     97  sc_signal<Tpacket_t         >  ** out_ISSUE_OUT_PACKET_ID            ;
     98  sc_signal<Toperation_t      >  ** out_ISSUE_OUT_OPERATION            ;
     99  sc_signal<Ttype_t           >  ** out_ISSUE_OUT_TYPE                 ;
     100  sc_signal<Tlsq_ptr_t        >  ** out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE;
     101  sc_signal<Tlsq_ptr_t        >  ** out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE ;
     102  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_HAS_IMMEDIAT         ;
     103  sc_signal<Tgeneral_data_t   >  ** out_ISSUE_OUT_IMMEDIAT             ;
     104  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_READ_RA              ;
     105  sc_signal<Tgeneral_address_t>  ** out_ISSUE_OUT_NUM_REG_RA           ;
     106  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_READ_RB              ;
     107  sc_signal<Tgeneral_address_t>  ** out_ISSUE_OUT_NUM_REG_RB           ;
     108  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_READ_RC              ;
     109  sc_signal<Tspecial_address_t>  ** out_ISSUE_OUT_NUM_REG_RC           ;
     110  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_WRITE_RD             ;
     111  sc_signal<Tgeneral_address_t>  ** out_ISSUE_OUT_NUM_REG_RD           ;
     112  sc_signal<Tcontrol_t        >  ** out_ISSUE_OUT_WRITE_RE             ;
     113  sc_signal<Tspecial_address_t>  ** out_ISSUE_OUT_NUM_REG_RE           ;
    50114
    51115  ALLOC2_SC_SIGNAL( in_ISSUE_IN_VAL                   ," in_ISSUE_IN_VAL                   ",Tcontrol_t        ,_param->_nb_rename_unit,_param->_nb_inst_rename[it1]);
     
    309373            Ttype_t type = out_ISSUE_OUT_TYPE[i]->read();
    310374            TEST(Ttype_t,type, tab_type[imm%NB_TYPE]);
    311             TEST(bool   ,_param->_table_issue_type[i][type],true);
     375//          TEST(bool   ,_param->_table_issue_type[i][type],true);
    312376          }
    313377
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/include/Parameters.h

    r111 r117  
    3838//public : uint32_t              _size_store_queue_ptr    ;
    3939//public : uint32_t              _size_load_queue_ptr     ;
    40   public : uint32_t              _nb_inst_issue           ;
    4140  public : uint32_t            * _nb_inst_rename          ;//[nb_rename_unit]
    4241  public : uint32_t              _nb_inst_reexecute       ;
     
    4443  public : Tpriority_t           _priority                ;
    4544  public : Tload_balancing_t     _load_balancing          ;
    46   public : bool               ** _table_routing           ;//[nb_rename_unit][nb_inst_issue]
    47   public : bool               ** _table_issue_type        ;//[nb_inst_issue][nb_type]
     45//public : bool               ** _table_routing           ;//[nb_rename_unit][nb_inst_issue]
     46//public : bool               ** _table_issue_type        ;//[nb_inst_issue][nb_type]
    4847  public : uint32_t              _size_reexecute_queue    ;
    4948                             
     49  public : uint32_t              _nb_inst_issue           ;
    5050//public : uint32_t              _nb_bank_select_out      ;
    5151  public : uint32_t              _max_nb_inst_rename      ;
     
    7474                        uint32_t              size_store_queue_ptr    ,
    7575                        uint32_t              size_load_queue_ptr     ,
    76                         uint32_t              nb_inst_issue           ,
     76//                      uint32_t              nb_inst_issue           ,
    7777                        uint32_t            * nb_inst_rename          ,
    7878                        uint32_t              nb_inst_reexecute       ,
     
    8080                        Tpriority_t           priority                ,
    8181                        Tload_balancing_t     load_balancing          ,
    82                         bool               ** table_routing           ,
    83                         bool               ** table_issue_type        ,
     82//                      bool               ** table_routing           ,
     83//                      bool               ** table_issue_type        ,
    8484                        bool                  is_toplevel=false);
    8585
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_in_order_genMealy_issue_out.cpp

    r115 r117  
    3030      Tcontrol_t val [_param->_nb_inst_issue];
    3131
     32      uint32_t index=0;
    3233      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    3334        val [i] = 0;
    3435
     36      //--------------------------------------
    3537      // From Reexecute_queue
     38      //--------------------------------------
    3639
     40      // scan all reexecute_queue slot ...
    3741//       uint32_t num_reexecute_entry = 0;
    3842      for (std::list<entry_t*>::iterator it=_reexecute_queue.begin();
     
    4246          entry_t* entry = (*it);
    4347
    44           for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    45             // test if no previous transaction and can accept this type
    46             if ((val[i] == 0) and _param->_table_issue_type [i][entry->_type])
    47               {
    48                 // find a issue port
    49                 val [i] = 1;
    50            
    51                 if (_param->_have_port_context_id)
    52                 PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [i], entry->_context_id           );
    53                 if (_param->_have_port_front_end_id)
    54                 PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [i], entry->_front_end_id         );
    55                 if (_param->_have_port_rob_ptr  )
    56                 PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [i], entry->_packet_id            );
    57                 PORT_WRITE(out_ISSUE_OUT_OPERATION             [i], entry->_operation            );
    58                 PORT_WRITE(out_ISSUE_OUT_TYPE                  [i], entry->_type                 );
    59                 PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [i], entry->_store_queue_ptr_write);
    60                 if (_param->_have_port_load_queue_ptr)
    61                 PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [i], entry->_load_queue_ptr_write );
    62                 PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [i], entry->_has_immediat         );
    63                 PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [i], entry->_immediat             );
    64                 PORT_WRITE(out_ISSUE_OUT_READ_RA               [i], entry->_read_ra              );
    65                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [i], entry->_num_reg_ra           );
    66                 PORT_WRITE(out_ISSUE_OUT_READ_RB               [i], entry->_read_rb              );
    67                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [i], entry->_num_reg_rb           );
    68                 PORT_WRITE(out_ISSUE_OUT_READ_RC               [i], entry->_read_rc              );
    69                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [i], entry->_num_reg_rc           );
    70                 PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [i], entry->_write_rd             );
    71                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [i], entry->_num_reg_rd           );
    72                 PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [i], entry->_write_re             );
    73                 PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [i], entry->_num_reg_re           );
     48          val [index] = 1;
     49             
     50          if (_param->_have_port_context_id)
     51          PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [index], entry->_context_id           );
     52          if (_param->_have_port_front_end_id)
     53          PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [index], entry->_front_end_id         );
     54          if (_param->_have_port_rob_ptr  )
     55          PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [index], entry->_packet_id            );
     56          PORT_WRITE(out_ISSUE_OUT_OPERATION             [index], entry->_operation            );
     57          PORT_WRITE(out_ISSUE_OUT_TYPE                  [index], entry->_type                 );
     58          PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [index], entry->_store_queue_ptr_write);
     59          if (_param->_have_port_load_queue_ptr)
     60          PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [index], entry->_load_queue_ptr_write );
     61          PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [index], entry->_has_immediat         );
     62          PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [index], entry->_immediat             );
     63          PORT_WRITE(out_ISSUE_OUT_READ_RA               [index], entry->_read_ra              );
     64          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [index], entry->_num_reg_ra           );
     65          PORT_WRITE(out_ISSUE_OUT_READ_RB               [index], entry->_read_rb              );
     66          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [index], entry->_num_reg_rb           );
     67          PORT_WRITE(out_ISSUE_OUT_READ_RC               [index], entry->_read_rc              );
     68          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [index], entry->_num_reg_rc           );
     69          PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [index], entry->_write_rd             );
     70          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [index], entry->_num_reg_rd           );
     71          PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [index], entry->_write_re             );
     72          PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [index], entry->_num_reg_re           );
    7473
    75                 internal_ISSUE_OUT_FROM_REEXECUTE [i] = true;
    76 //              internal_ISSUE_OUT_NUM_BANK       [i] = num_reexecute_entry;
    77                 internal_ISSUE_OUT_ENTRY          [i] = entry;
     74          internal_ISSUE_OUT_FROM_REEXECUTE [index] = true;
     75//        internal_ISSUE_OUT_NUM_BANK       [index] = num_reexecute_entry;
     76          internal_ISSUE_OUT_ENTRY          [index] = entry;
    7877
    79                 break; // stop scan
    80               }
    81 //           num_reexecute_entry ++;
     78          index ++; // next slot
    8279        }
     80     
     81      //--------------------------------------
     82      // From Issue_queue
     83      //--------------------------------------
     84      index = _param->_nb_inst_reexecute;
    8385
    84       // From Issue_queue
     86      log_printf(TRACE,Issue_queue,FUNCTION,"  * From Issue_queue");
     87
     88      // for all instruction in issue_queue head ...
    8589      for (uint32_t i=0; i<_param->_nb_bank; ++i)
    8690        {
     
    8993          log_printf(TRACE,Issue_queue,FUNCTION,"    * Bank [%d]",num_bank);
    9094         
    91           bool find = false;
     95//           bool find = false;
    9296         
    93           // Have instruction ?
     97          // ... test if have an instruction
    9498          if (not _issue_queue [num_bank].empty())
    9599            {
    96100              log_printf(TRACE,Issue_queue,FUNCTION,"      * Not Empty !!!");
    97101
     102              // read instruction
    98103              entry_t* entry = _issue_queue [num_bank].front();
    99104             
    100               // have valid instruction, search a valid issue slot.
    101               for (uint32_t j=0; j<_param->_nb_inst_issue; j++)
    102                 {
    103                   Tcontrol_t issue_ack = PORT_READ(in_ISSUE_OUT_ACK [j]);
     105//               Tcontrol_t issue_ack = PORT_READ(in_ISSUE_OUT_ACK [index]);
     106             
     107              log_printf(TRACE,Issue_queue,FUNCTION,"      * Issue [%d]",index);
     108//               log_printf(TRACE,Issue_queue,FUNCTION,"        * issue_ack            : %d",issue_ack);
     109//            log_printf(TRACE,Issue_queue,FUNCTION,"        * previous transaction : %d",val[index]);
     110//            log_printf(TRACE,Issue_queue,FUNCTION,"        * can issue type       : %d",_param->_table_issue_type [index][entry->_type]);
    104111
    105                   log_printf(TRACE,Issue_queue,FUNCTION,"      * Issue [%d]",j);
    106                   log_printf(TRACE,Issue_queue,FUNCTION,"        * issue_ack            : %d",issue_ack);
    107                   log_printf(TRACE,Issue_queue,FUNCTION,"        * previous transaction : %d",val[j]);
    108                   log_printf(TRACE,Issue_queue,FUNCTION,"        * can issue type       : %d",_param->_table_issue_type [j][entry->_type]);
     112              // in_order : test if find a valid read_unit
     113//               if (issue_ack)
     114//                 {
     115//                log_printf(TRACE,Issue_queue,FUNCTION,"        * find !!!");
     116                 
     117//                   find = true;
     118//                 }
    109119
    110                   // test if no previous transaction and can accept this type
    111                   if (not val[j] and
    112                       _param->_table_issue_type [j][entry->_type] and
    113                       issue_ack)
    114                     {
    115                       log_printf(TRACE,Issue_queue,FUNCTION,"        * find !!!");
    116                      
    117                       // find a issue port
    118                       val [j] = 1;
    119                      
    120                       if (_param->_have_port_context_id)
    121                       PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [j], entry->_context_id           );
    122                       if (_param->_have_port_front_end_id)
    123                       PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [j], entry->_front_end_id         );
    124                       if (_param->_have_port_rob_ptr  )
    125                       PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [j], entry->_packet_id            );
    126                       PORT_WRITE(out_ISSUE_OUT_OPERATION             [j], entry->_operation            );
    127                       PORT_WRITE(out_ISSUE_OUT_TYPE                  [j], entry->_type                 );
    128                       PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [j], entry->_store_queue_ptr_write);
    129                       if (_param->_have_port_load_queue_ptr)
    130                       PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [j], entry->_load_queue_ptr_write );
    131                       PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [j], entry->_has_immediat         );
    132                       PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [j], entry->_immediat             );
    133                       PORT_WRITE(out_ISSUE_OUT_READ_RA               [j], entry->_read_ra              );
    134                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [j], entry->_num_reg_ra           );
    135                       PORT_WRITE(out_ISSUE_OUT_READ_RB               [j], entry->_read_rb              );
    136                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [j], entry->_num_reg_rb           );
    137                       PORT_WRITE(out_ISSUE_OUT_READ_RC               [j], entry->_read_rc              );
    138                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [j], entry->_num_reg_rc           );
    139                       PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [j], entry->_write_rd             );
    140                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [j], entry->_num_reg_rd           );
    141                       PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [j], entry->_write_re             );
    142                       PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [j], entry->_num_reg_re           );
    143                      
    144                       internal_ISSUE_OUT_FROM_REEXECUTE [j] = false;
    145                       internal_ISSUE_OUT_NUM_BANK       [j] = num_bank;
    146                       internal_ISSUE_OUT_ENTRY          [j] = entry;
    147                      
    148                       find = true;
    149                       break; // find : stop scan
    150                     }
    151                 }
     120              // find a issue port
     121              val [index] = true; // instruction is valid
     122             
     123              if (_param->_have_port_context_id)
     124              PORT_WRITE(out_ISSUE_OUT_CONTEXT_ID            [index], entry->_context_id           );
     125              if (_param->_have_port_front_end_id)
     126              PORT_WRITE(out_ISSUE_OUT_FRONT_END_ID          [index], entry->_front_end_id         );
     127              if (_param->_have_port_rob_ptr  )
     128              PORT_WRITE(out_ISSUE_OUT_PACKET_ID             [index], entry->_packet_id            );
     129              PORT_WRITE(out_ISSUE_OUT_OPERATION             [index], entry->_operation            );
     130              PORT_WRITE(out_ISSUE_OUT_TYPE                  [index], entry->_type                 );
     131              PORT_WRITE(out_ISSUE_OUT_STORE_QUEUE_PTR_WRITE [index], entry->_store_queue_ptr_write);
     132              if (_param->_have_port_load_queue_ptr)
     133              PORT_WRITE(out_ISSUE_OUT_LOAD_QUEUE_PTR_WRITE  [index], entry->_load_queue_ptr_write );
     134              PORT_WRITE(out_ISSUE_OUT_HAS_IMMEDIAT          [index], entry->_has_immediat         );
     135              PORT_WRITE(out_ISSUE_OUT_IMMEDIAT              [index], entry->_immediat             );
     136              PORT_WRITE(out_ISSUE_OUT_READ_RA               [index], entry->_read_ra              );
     137              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RA            [index], entry->_num_reg_ra           );
     138              PORT_WRITE(out_ISSUE_OUT_READ_RB               [index], entry->_read_rb              );
     139              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RB            [index], entry->_num_reg_rb           );
     140              PORT_WRITE(out_ISSUE_OUT_READ_RC               [index], entry->_read_rc              );
     141              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RC            [index], entry->_num_reg_rc           );
     142              PORT_WRITE(out_ISSUE_OUT_WRITE_RD              [index], entry->_write_rd             );
     143              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RD            [index], entry->_num_reg_rd           );
     144              PORT_WRITE(out_ISSUE_OUT_WRITE_RE              [index], entry->_write_re             );
     145              PORT_WRITE(out_ISSUE_OUT_NUM_REG_RE            [index], entry->_num_reg_re           );
     146             
     147              internal_ISSUE_OUT_FROM_REEXECUTE [index] = false;
     148              internal_ISSUE_OUT_NUM_BANK       [index] = num_bank;
     149              internal_ISSUE_OUT_ENTRY          [index] = entry;
     150
     151              index ++; // next slot
    152152            }
    153153
    154           if (not find)
    155             break; // stop scan (in order)
     154//           if (not find)
     155//             {
     156//            log_printf(TRACE,Issue_queue,FUNCTION,"      * Not find. Stop Scan (in order)");
     157             
     158//               break; // stop scan (in order)
     159//             }
    156160        }
    157 
     161     
     162      // Output
    158163      for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    159164        {
    160165          internal_ISSUE_OUT_VAL [i] = val [i];
    161166          PORT_WRITE(out_ISSUE_OUT_VAL [i], internal_ISSUE_OUT_VAL [i]);
     167
     168//           // Type invalid to the Core_Glue network
     169//           if (not val [i]) // == empty
     170//             PORT_WRITE(out_ISSUE_OUT_TYPE [i], TYPE_INVALID);
    162171        }
    163172    }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_function_out_of_order_genMoore.cpp

    r111 r117  
    109109          for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    110110            // test if no previous transaction and can accept this type
    111             if ((val[i] == 0) and _param->_table_issue_type [i][entry->_type])
     111            if ((val[i] == 0)
     112//                 and _param->_table_issue_type [i][entry->_type]
     113                )
    112114              {
    113115                // find a issue port
     
    168170              for (uint32_t i=0; i<_param->_nb_inst_issue; i++)
    169171                // test if no previous transaction and can accept this type
    170                 if ((val[i] == 0) and _param->_table_issue_type [i][entry->_type])
     172                if ((val[i] == 0)
     173//                     and _param->_table_issue_type [i][entry->_type]
     174                    )
    171175                  {
    172176                    // find a issue port
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_transition.cpp

    r111 r117  
    106106    log_printf(TRACE,Issue_queue,FUNCTION,"  * Dump Issue_queue");
    107107
     108    if (_param->_queue_scheme == ISSUE_QUEUE_SCHEME_IN_ORDER)
     109      {
     110    log_printf(TRACE,Issue_queue,FUNCTION,"    * reg_NUM_BANK_HEAD : %d",reg_NUM_BANK_HEAD);
     111    log_printf(TRACE,Issue_queue,FUNCTION,"    * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL);
     112      }
     113
    108114    for (uint32_t i=0; i<_param->_nb_bank; i++)
    109115      {
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters.cpp

    r111 r117  
    3232                          uint32_t              size_store_queue_ptr    ,
    3333                          uint32_t              size_load_queue_ptr     ,
    34                           uint32_t              nb_inst_issue           ,
     34//                        uint32_t              nb_inst_issue           ,
    3535                          uint32_t            * nb_inst_rename          ,
    3636                          uint32_t              nb_inst_reexecute       ,
     
    3838                          Tpriority_t           priority                ,
    3939                          Tload_balancing_t     load_balancing          ,
    40                           bool               ** table_routing           ,
    41                           bool               ** table_issue_type        ,
     40//                        bool               ** table_routing           ,
     41//                        bool               ** table_issue_type        ,
    4242                          bool                  is_toplevel             )
    4343  {
     
    5050    _queue_scheme             = queue_scheme         ;
    5151    _nb_bank                  = nb_bank              ;   
    52     _nb_inst_issue            = nb_inst_issue        ;
     52//  _nb_inst_issue            = nb_inst_issue        ;
    5353    _nb_inst_rename           = nb_inst_rename       ;
    5454    _nb_inst_reexecute        = nb_inst_reexecute    ;
     
    5656    _priority                 = priority             ;
    5757    _load_balancing           = load_balancing       ;
    58     _table_routing            = table_routing        ;
    59     _table_issue_type         = table_issue_type     ;
     58//  _table_routing            = table_routing        ;
     59//  _table_issue_type         = table_issue_type     ;
    6060    _size_reexecute_queue     = nb_inst_reexecute    ;
    6161
    62     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
    63     for (uint32_t i=0; i<_nb_rename_unit; ++i)
    64       for (uint32_t j=0; j<_nb_inst_issue; ++j)
    65         if (_table_routing [i][j])
    66           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
     62    _nb_inst_issue            = _nb_inst_reexecute+_nb_bank;
     63
     64//     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_routing [nb_rename_unit][nb_inst_issue]");
     65//     for (uint32_t i=0; i<_nb_rename_unit; ++i)
     66//       for (uint32_t j=0; j<_nb_inst_issue; ++j)
     67//         if (_table_routing [i][j])
     68//           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
    6769       
    68     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
    69     for (uint32_t i=0; i<_nb_inst_issue; ++i)
    70       for (uint32_t j=0; j<_nb_type; ++j)
    71         if (_table_issue_type [i][j])
    72           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
     70//     log_printf(TRACE,Issue_queue,FUNCTION,"  * table_issue_type [nb_inst_issue][nb_type]");
     71//     for (uint32_t i=0; i<_nb_inst_issue; ++i)
     72//       for (uint32_t j=0; j<_nb_type; ++j)
     73//         if (_table_issue_type [i][j])
     74//           log_printf(TRACE,Issue_queue,FUNCTION,"    [%d][%d] -> true",i,j);
    7375   
    7476    _max_nb_inst_rename       = max<uint32_t>(_nb_inst_rename,_nb_rename_unit);
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Parameters_msg_error.cpp

    r111 r117  
    4848      test.error(toString(_("nb_bank (%d) must be a multiple of size_queue (%d).\n"),_nb_bank,_size_queue));
    4949   
    50     if (not is_multiple(_nb_bank, _nb_inst_issue))
    51       test.error(toString(_("nb_inst_issue (%d) must be a multiple of nb_bank (%d) .\n"),_nb_inst_issue,_nb_bank));
     50//     if (not is_multiple(_nb_bank, _nb_inst_issue))
     51//       test.error(toString(_("nb_inst_issue (%d) must be a multiple of nb_bank (%d) .\n"),_nb_inst_issue,_nb_bank));
    5252
    5353    if (_nb_rename_unit_select > _nb_rename_unit)
     
    5757      test.warning(_("For better performance, the bank's size (size_queue/nb_bank) must be > 1.\n"));
    5858
    59     for (uint32_t i=0; i<_nb_rename_unit; i++)
    60       {
    61         bool type_present [_nb_type];
     59//     for (uint32_t i=0; i<_nb_rename_unit; i++)
     60//       {
     61//      bool type_present [_nb_type];
    6262       
    63         for (uint32_t j=0; j<_nb_type; j++)
    64           type_present [j] = not is_type_valid(j);
     63//      for (uint32_t j=0; j<_nb_type; j++)
     64//        type_present [j] = not is_type_valid(j);
    6565
    66         bool find = false;
    67         for (uint32_t j=0; j<_nb_inst_issue; j++)
    68           if (_table_routing [i][j])
    69           {
    70             find = true;
     66//      bool find = false;
     67//      for (uint32_t j=0; j<_nb_inst_issue; j++)
     68//        if (_table_routing [i][j])
     69//        {
     70//          find = true;
    7171
    72             for (uint32_t k=0; k<_nb_type; k++)
    73               type_present [k] |= _table_issue_type [j][k];
    74           }
     72//          for (uint32_t k=0; k<_nb_type; k++)
     73//            type_present [k] |= _table_issue_type [j][k];
     74//        }
    7575
    76         if (not find)
    77           test.error(toString(_("Rename_unit [%d] is not connected with a issue slot.\n"),i));
    78         else
    79           for (uint32_t j=0; j<_nb_type; j++)
    80             if (not type_present [j] and not is_type_optionnal(j))
    81               test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString(j).c_str()));
    82       }
     76//      if (not find)
     77//        test.error(toString(_("Rename_unit [%d] is not connected with a issue slot.\n"),i));
     78//      else
     79//        for (uint32_t j=0; j<_nb_type; j++)
     80//          if (not type_present [j] and not is_type_optionnal(j))
     81//            test.error(toString(_("Rename_unit [%d] can't issue instruction's type \"%s\".\n"),i,toString(j).c_str()));
     82//       }
    8383   
    8484    if ((_priority != PRIORITY_ROUND_ROBIN))
Note: See TracChangeset for help on using the changeset viewer.