Ignore:
Timestamp:
Apr 15, 2008, 8:40:01 PM (16 years ago)
Author:
rosiere
Message:
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
Location:
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack
Files:
39 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/Makefile

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/Makefile.defs

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/Makefile.deps

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/Makefile

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/config_mono_context.cfg

    • Property svn:keywords set to Id
    r78 r81  
    11Return_Address_Stack
    221       1       +1      # nb_context     
    3 2       2       *2      # size_queue     [0]
     32       4       *2      # size_queue     [0]
    4432      32      *2      # size_address   
    551       1       +1      # nb_inst_predict
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/config_multi_context.cfg

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/include/test.h

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/src/main.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/SelfTest/src/test.cpp

    • Property svn:keywords set to Id
    r78 r81  
    1111#include "Behavioural/include/Allocation.h"
    1212
    13 #define NB_ITERATION  1024
    14 #define CYCLE_MAX     (128*NB_ITERATION)
     13#define NB_ITERATION  16
     14#define CYCLE_MAX     (1024*NB_ITERATION)
    1515
    1616#define LABEL(str...)                                                   \
     
    2121  } while(0)
    2222
    23 #define SC_START(cycle_offset)                                                       \
    24   do                                                                                 \
    25     {                                                                                \
    26       /*cout << "SC_START (begin)" << endl;*/                                        \
    27                                                                                      \
    28       uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time());          \
    29       if (cycle_offset != 0)                                                         \
    30         {                                                                            \
    31           cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
    32         }                                                                            \
    33                                                                                      \
    34       if (cycle_current > CYCLE_MAX)                                                 \
    35         {                                                                            \
    36           TEST_KO("Maximal cycles Reached");                                         \
    37         }                                                                            \
    38                                                                                      \
    39       sc_start(cycle_offset);                                                        \
    40                                                                                      \
    41       /*cout << "SC_START (end  )" << endl;*/                                        \
     23#define SC_START(cycle_offset)                                          \
     24  do                                                                    \
     25    {                                                                   \
     26      uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time()); \
     27      if (cycle_offset != 0)                                            \
     28        {                                                               \
     29          cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]"; \
     30          cout << " (" << __LINE__ << ")" << endl;                      \
     31        }                                                               \
     32                                                                        \
     33      if (cycle_current > CYCLE_MAX)                                    \
     34        {                                                               \
     35          TEST_KO("Maximal cycles Reached");                            \
     36        }                                                               \
     37                                                                        \
     38      sc_start(cycle_offset);                                           \
     39                                                                        \
    4240    } while(0)
    4341
     
    9088  ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS        ," in_UPDATE_ADDRESS        ",Taddress_t,_param->_nb_inst_update );
    9189  ALLOC1_SC_SIGNAL( in_UPDATE_MISS_PREDICTION," in_UPDATE_MISS_PREDICTION",Tcontrol_t,_param->_nb_inst_update );
     90  ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTION_IFETCH," in_UPDATE_PREDICTION_IFETCH",Tcontrol_t,_param->_nb_inst_update );
    9291 
    9392  /********************************************************
     
    127126  INSTANCE1_SC_SIGNAL(_Return_Address_Stack, in_UPDATE_ADDRESS        ,_param->_nb_inst_update );
    128127  INSTANCE1_SC_SIGNAL(_Return_Address_Stack, in_UPDATE_MISS_PREDICTION,_param->_nb_inst_update );
     128  INSTANCE1_SC_SIGNAL(_Return_Address_Stack, in_UPDATE_PREDICTION_IFETCH,_param->_nb_inst_update );
    129129
    130130  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
     
    157157      LABEL("Iteration %d",iteration);
    158158
    159       SC_START(1);
     159      if (1)
     160        {
     161        uint32_t port = rand()%_param->_nb_inst_predict;
     162
     163        LABEL("PREDICT - PUSH");
     164       
     165        in_PREDICT_VAL  [port]->write(1);
     166        in_PREDICT_PUSH [port]->write(1);
     167        for (uint32_t i=0; i<_param->_nb_context; i++)
     168          for (uint32_t j=0; j<_param->_size_queue[i]; j++)
     169            {
     170              in_PREDICT_CONTEXT_ID   [port]->write(i);
     171              in_PREDICT_ADDRESS_PUSH [port]->write(0xdeadbeef+j);
     172             
     173              SC_START(0);
     174             
     175              TEST(Tcontrol_t, out_PREDICT_ACK  [port]->read(), 1);
     176              TEST(Tptr_t    , out_PREDICT_INDEX[port]->read(),(j+1)%_param->_size_queue[i]);
     177             
     178              SC_START(1);
     179             
     180            }
     181        in_PREDICT_VAL [port]->write(0);
     182       
     183        SC_START(1);
     184       
     185        in_PREDICT_VAL  [port]->write(1);
     186        in_PREDICT_PUSH [port]->write(1);
     187        for (uint32_t i=0; i<_param->_nb_context; i++)
     188          for (uint32_t j=0; j<_param->_size_queue[i]; j++)
     189            {
     190              in_PREDICT_CONTEXT_ID   [port]->write(i);
     191              in_PREDICT_ADDRESS_PUSH [port]->write(0x21071981+j);
     192             
     193              SC_START(0);
     194             
     195              TEST(Tcontrol_t, out_PREDICT_ACK        [port]->read(), 1);
     196              TEST(Tptr_t    , out_PREDICT_INDEX      [port]->read(),(j+1)%_param->_size_queue[i]);
     197              TEST(Taddress_t, out_PREDICT_ADDRESS_POP[port]->read(),0xdeadbeef+j);
     198             
     199              SC_START(1);
     200            }
     201        in_PREDICT_VAL [port]->write(0);
     202       
     203        LABEL("PREDICT - POP");
     204       
     205        in_PREDICT_VAL  [port]->write(1);
     206        in_PREDICT_PUSH [port]->write(0);
     207        for (uint32_t i=0; i<_param->_nb_context; i++)
     208          for (uint32_t j=0; j< _param->_size_queue[i]; j++)
     209            {
     210              in_PREDICT_CONTEXT_ID   [port]->write(i);
     211              in_PREDICT_ADDRESS_PUSH [port]->write(0xbabedead);
     212             
     213              SC_START(0);
     214             
     215              TEST(Tcontrol_t, out_PREDICT_ACK        [port]->read(), 1);
     216              TEST(Tcontrol_t, out_PREDICT_HIT        [port]->read(), 1);
     217              uint32_t k=(_param->_size_queue[i]-j)%_param->_size_queue[i];
     218              TEST(Tptr_t    , out_PREDICT_INDEX      [port]->read(), k);
     219              TEST(Taddress_t, out_PREDICT_ADDRESS_POP[port]->read(),(0x21071981+((k==0)?(_param->_size_queue[i]-1):(k-1))));
     220             
     221              SC_START(1);
     222            }
     223        in_PREDICT_VAL [port]->write(0);
     224        }
     225
     226      // Now, the stack is empty
     227
     228      if (1)
     229        {
     230        uint32_t port1 = rand()%_param->_nb_inst_decod;
     231        uint32_t port2 = rand()%_param->_nb_inst_predict;
     232
     233        LABEL("DECOD - without predict");
     234       
     235        LABEL("DECOD - PUSH"); 
     236       
     237        in_DECOD_VAL             [port1]->write(1);
     238        in_DECOD_PUSH            [port1]->write(1);
     239        in_DECOD_MISS_PREDICTION [port1]->write(0);
     240       
     241        for (uint32_t i=0; i<_param->_nb_context; i++)
     242          for (uint32_t j=0; j<_param->_size_queue[i]; j++)
     243            {
     244              in_DECOD_CONTEXT_ID   [port1]->write(i);
     245              in_DECOD_ADDRESS_PUSH [port1]->write(0xbeefcaca+j);
     246             
     247              SC_START(0);
     248             
     249              TEST(Tcontrol_t, out_DECOD_ACK  [port1]->read(), 1);
     250              TEST(Tptr_t    , out_DECOD_INDEX[port1]->read(),(j+1)%_param->_size_queue[i]);
     251             
     252              SC_START(1);
     253             
     254            }
     255        in_DECOD_VAL [port1]->write(0);
     256       
     257        SC_START(1);
     258       
     259        in_DECOD_VAL  [port1]->write(1);
     260        in_DECOD_PUSH [port1]->write(1);
     261        for (uint32_t i=0; i<_param->_nb_context; i++)
     262          for (uint32_t j=0; j<_param->_size_queue[i]; j++)
     263            {
     264              in_DECOD_CONTEXT_ID   [port1]->write(i);
     265              in_DECOD_ADDRESS_PUSH [port1]->write(0x21071981+j);
     266             
     267              SC_START(0);
     268             
     269              TEST(Tcontrol_t, out_DECOD_ACK        [port1]->read(), 1);
     270              TEST(Tptr_t    , out_DECOD_INDEX      [port1]->read(),(j+1)%_param->_size_queue[i]);
     271              TEST(Taddress_t, out_DECOD_ADDRESS_POP[port1]->read(),0xbeefcaca+j);
     272             
     273              SC_START(1);
     274            }
     275        in_DECOD_VAL [port1]->write(0);
     276       
     277        LABEL("DECOD - POP");
     278       
     279        in_DECOD_VAL  [port1]->write(1);
     280        in_DECOD_PUSH [port1]->write(0);
     281        for (uint32_t i=0; i<_param->_nb_context; i++)
     282          for (uint32_t j=0; j< _param->_size_queue[i]; j++)
     283            {
     284              in_DECOD_CONTEXT_ID   [port1]->write(i);
     285              in_DECOD_ADDRESS_PUSH [port1]->write(0xbabedead);
     286             
     287              SC_START(0);
     288             
     289              TEST(Tcontrol_t, out_DECOD_ACK        [port1]->read(), 1);
     290              TEST(Tcontrol_t, out_DECOD_HIT        [port1]->read(), 1);
     291              uint32_t k=(_param->_size_queue[i]-j)%_param->_size_queue[i];
     292              TEST(Tptr_t    , out_DECOD_INDEX      [port1]->read(), k);
     293              TEST(Taddress_t, out_DECOD_ADDRESS_POP[port1]->read(),(0x21071981+((k==0)?(_param->_size_queue[i]-1):(k-1))));
     294             
     295              SC_START(1);
     296            }
     297        in_DECOD_VAL [port1]->write(0);
     298
     299        LABEL("DECOD - with predict");
     300       
     301        LABEL("DECOD - PUSH (size_queue/2)"); 
     302       
     303        in_DECOD_VAL             [port1]->write(1);
     304        in_DECOD_PUSH            [port1]->write(1);
     305        in_DECOD_MISS_PREDICTION [port1]->write(1);
     306       
     307        for (uint32_t i=0; i<_param->_nb_context; i++)
     308          for (uint32_t j=0; j<_param->_size_queue[i]/2;j++)
     309            {
     310              in_DECOD_CONTEXT_ID   [port1]->write(i);
     311              in_DECOD_ADDRESS_PUSH [port1]->write(0x01234567+j);
     312             
     313              SC_START(0);
     314             
     315              TEST(Tcontrol_t, out_DECOD_ACK  [port1]->read(), 1);
     316              TEST(Tptr_t    , out_DECOD_INDEX[port1]->read(),(j+1)%_param->_size_queue[i]);
     317             
     318              SC_START(1);
     319             
     320            }
     321        in_DECOD_VAL [port1]->write(0);
     322
     323        LABEL("PREDICT - PUSH (size_queue/2)"); 
     324       
     325        in_PREDICT_VAL             [port2]->write(1);
     326        in_PREDICT_PUSH            [port2]->write(1);
     327       
     328        for (uint32_t i=0; i<_param->_nb_context; i++)
     329          for (uint32_t j=0; j<_param->_size_queue[i]/2;j++)
     330            {
     331              in_PREDICT_CONTEXT_ID   [port2]->write(i);
     332              in_PREDICT_ADDRESS_PUSH [port2]->write((0x89abcdef+j)+(_param->_size_queue[i]/2));
     333             
     334              SC_START(0);
     335             
     336              TEST(Tcontrol_t, out_PREDICT_ACK  [port2]->read(), 1);
     337              TEST(Tptr_t    , out_PREDICT_INDEX[port2]->read(),(j+1+(_param->_size_queue[i]/2))%_param->_size_queue[i]);
     338             
     339              SC_START(1);
     340            }
     341
     342        in_PREDICT_VAL [port2]->write(0);
     343
     344        LABEL("PREDICT - POP (size_queue/2)"); 
     345
     346        in_PREDICT_VAL  [port2]->write(1);
     347        in_PREDICT_PUSH [port2]->write(0);
     348        for (uint32_t i=0; i<_param->_nb_context; i++)
     349          {
     350            for (uint32_t j=0; j< _param->_size_queue[i]/2; j++)
     351              {
     352                in_PREDICT_CONTEXT_ID   [port2]->write(i);
     353                in_PREDICT_ADDRESS_PUSH [port2]->write(0xbabedead);
     354               
     355                SC_START(0);
     356               
     357                TEST(Tcontrol_t, out_PREDICT_ACK        [port2]->read(), 1);
     358                TEST(Tcontrol_t, out_PREDICT_HIT        [port2]->read(), 1);
     359                uint32_t k=  (_param->_size_queue[i]-j)%_param->_size_queue[i];
     360                TEST(Tptr_t    , out_PREDICT_INDEX      [port2]->read(), k);
     361
     362                Taddress_t res = (0x89abcdef+((k==0)?(_param->_size_queue[i]-1):(k-1)));
     363                LABEL("k      : %d",k);
     364                LABEL("res    : %x",res);
     365                LABEL("@_pop  : %x",out_PREDICT_ADDRESS_POP[port2]->read());
     366
     367                TEST(Taddress_t, out_PREDICT_ADDRESS_POP[port2]->read(),res);
     368               
     369                SC_START(1);
     370              }
     371
     372            for (uint32_t j=0; j< _param->_size_queue[i]/2; j++)
     373              {
     374                in_PREDICT_CONTEXT_ID   [port2]->write(i);
     375                in_PREDICT_ADDRESS_PUSH [port2]->write(0xbabedead);
     376               
     377                SC_START(0);
     378               
     379                TEST(Tcontrol_t, out_PREDICT_ACK        [port2]->read(), 1);
     380                TEST(Tcontrol_t, out_PREDICT_HIT        [port2]->read(), 1);
     381                uint32_t k=(_param->_size_queue[i]/2-j)%_param->_size_queue[i];
     382                TEST(Tptr_t    , out_PREDICT_INDEX      [port2]->read(), k);
     383
     384                Taddress_t res = (0x01234567+((k==0)?(_param->_size_queue[i]/2-1):(k-1)));
     385
     386                LABEL("k      : %d",k);
     387                LABEL("res    : %x",res);
     388                LABEL("@_pop  : %x",out_PREDICT_ADDRESS_POP[port2]->read());
     389
     390                TEST(Taddress_t, out_PREDICT_ADDRESS_POP[port2]->read(),res);
     391               
     392                SC_START(1);
     393              }
     394          }
     395
     396        in_PREDICT_VAL [port2]->write(0);
     397
     398        in_DECOD_VAL  [port1]->write(1);
     399        in_DECOD_PUSH [port1]->write(0);
     400        in_DECOD_MISS_PREDICTION [port1]->write(0);
     401
     402        for (uint32_t i=0; i<_param->_nb_context; i++)
     403          {
     404            for (uint32_t j=0; j< _param->_size_queue[i]/2; j++)
     405              {
     406                in_DECOD_CONTEXT_ID   [port1]->write(i);
     407                in_DECOD_ADDRESS_PUSH [port1]->write(0xbabedead);
     408               
     409                SC_START(0);
     410               
     411                TEST(Tcontrol_t, out_DECOD_ACK        [port1]->read(), 1);
     412                TEST(Tcontrol_t, out_DECOD_HIT        [port1]->read(), 1);
     413                uint32_t k=(_param->_size_queue[i]/2-j)%_param->_size_queue[i];
     414                TEST(Tptr_t    , out_DECOD_INDEX      [port1]->read(), k);
     415
     416                Taddress_t res = (0x01234567+((k==0)?(_param->_size_queue[i]/2-1):(k-1)));
     417
     418                LABEL("k      : %d",k);
     419                LABEL("res    : %x",res);
     420                LABEL("@_pop  : %x",out_DECOD_ADDRESS_POP[port1]->read());
     421
     422                TEST(Taddress_t, out_DECOD_ADDRESS_POP[port1]->read(),res);
     423               
     424                SC_START(1);
     425              }
     426          }
     427
     428        in_DECOD_VAL [port1]->write(0);
     429
     430      }
    160431    }
    161432
     
    195466  delete []  in_UPDATE_INDEX         ;
    196467  delete []  in_UPDATE_ADDRESS       ;
     468  delete []  in_UPDATE_MISS_PREDICTION;
     469  delete []  in_UPDATE_PREDICTION_IFETCH;
    197470
    198471#endif
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/Makefile

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/Return_Address_Stack.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/sty/header.sty

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/01_introduction.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/02_features.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/03_description.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/04_pinout.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/05_parameters.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/06_performance.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/07_details.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/08_history.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/doc/tex/root.tex

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/include/Parameters.h

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/include/Return_Address_Stack.h

    • Property svn:keywords set to Id
    r78 r81  
    8484
    8585    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    86   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL            ; //[nb_inst_update]
    87   public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK            ; //[nb_inst_update]
    88   public    : SC_IN (Tcontext_t)           **  in_UPDATE_CONTEXT_ID     ; //[nb_inst_update]
    89   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PUSH           ; //[nb_inst_update]  1 = push, else pop
    90   public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS        ; //[nb_inst_update]
    91   public    : SC_IN (Tptr_t    )           **  in_UPDATE_INDEX          ; //[nb_inst_update]
    92   public    : SC_IN (Tcontrol_t)           **  in_UPDATE_MISS_PREDICTION; //[nb_inst_update]
     86  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_VAL              ; //[nb_inst_update]
     87  public    : SC_OUT(Tcontrol_t)           ** out_UPDATE_ACK              ; //[nb_inst_update]
     88  public    : SC_IN (Tcontext_t)           **  in_UPDATE_CONTEXT_ID       ; //[nb_inst_update]
     89  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PUSH             ; //[nb_inst_update]  1 = push, else pop
     90  public    : SC_IN (Taddress_t)           **  in_UPDATE_ADDRESS          ; //[nb_inst_update]
     91  public    : SC_IN (Tptr_t    )           **  in_UPDATE_INDEX            ; //[nb_inst_update]
     92  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_MISS_PREDICTION  ; //[nb_inst_update]
     93  public    : SC_IN (Tcontrol_t)           **  in_UPDATE_PREDICTION_IFETCH; //[nb_inst_update] // prediction only ifetch
    9394
    9495    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    9899  private   : Tptr_t                        * reg_TOP           ; //[nb_context]
    99100  private   : Tptr_t                        * reg_BOTTOM        ; //[nb_context]
    100   private   : Tcontrol_t                    * reg_EMPTY         ; //[nb_context]
     101  private   : Tptr_t                        * reg_NB_ELT        ; //[nb_context]
    101102  private   : Tptr_t                        * reg_PREDICT_TOP   ; //[nb_context]
    102103  private   : Tptr_t                        * reg_PREDICT_BOTTOM; //[nb_context]
    103   private   : Tcontrol_t                    * reg_PREDICT_EMPTY ; //[nb_context]
     104  private   : Tptr_t                        * reg_PREDICT_NB_ELT; //[nb_context]
    104105
    105106    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
    143144  public  : void        transition                (void);
    144145  public  : void        genMealy_predict          (void);
    145 //   public  : void        genMealy_decod            (void);
     146  public  : void        genMealy_decod            (void);
    146147//   public  : void        genMealy_update           (void);
    147148#endif                                         
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/include/Types.h

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters_msg_error.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Parameters_print.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack.cpp

    • Property svn:keywords set to Id
    r78 r81  
    9494# endif   
    9595
     96        log_printf(INFO,Return_Address_Stack,FUNCTION,"Method - genMealy_decod");
     97
     98        SC_METHOD (genMealy_decod);
     99        dont_initialize ();
     100        sensitive << (*(in_CLOCK)).neg(); // use internal registers
     101        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
     102          {
     103            if (_param->_have_port_context_id)
     104            sensitive << (*( in_DECOD_CONTEXT_ID [i]));
     105            sensitive << (*( in_DECOD_PUSH       [i]));
     106          }
     107
     108# ifdef SYSTEMCASS_SPECIFIC
     109        // List dependency information
     110        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
     111          {
     112            if (_param->_have_port_context_id)
     113            (*(out_DECOD_HIT         [i])) (*( in_DECOD_CONTEXT_ID [i]));
     114            (*(out_DECOD_HIT         [i])) (*( in_DECOD_PUSH       [i]));
     115
     116            if (_param->_have_port_context_id)
     117            (*(out_DECOD_ADDRESS_POP [i])) (*( in_DECOD_CONTEXT_ID [i]));
     118            (*(out_DECOD_ADDRESS_POP [i])) (*( in_DECOD_PUSH       [i]));
     119
     120            if (_param->_have_port_context_id)
     121            (*(out_DECOD_INDEX       [i])) (*( in_DECOD_CONTEXT_ID [i]));
     122            (*(out_DECOD_INDEX       [i])) (*( in_DECOD_PUSH       [i]));
     123          }
     124# endif
     125
    96126        log_printf(INFO,Return_Address_Stack,FUNCTION,"Method - genMealy_predict");
    97127
     
    122152            (*(out_PREDICT_INDEX       [i])) (*( in_PREDICT_PUSH       [i]));
    123153          }
    124 # endif   
     154# endif
    125155#endif
    126156      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_allocation.cpp

    • Property svn:keywords set to Id
    r78 r81  
    9696      ALLOC1_SIGNAL_IN ( in_UPDATE_INDEX          ,"index"          ,Tptr_t    ,_param->_size_index);
    9797      ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1);
     98      ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1);
    9899    }
    99100
     
    106107    reg_TOP              = new Tptr_t     [_param->_nb_context];
    107108    reg_BOTTOM           = new Tptr_t     [_param->_nb_context];
    108     reg_EMPTY            = new Tcontrol_t [_param->_nb_context];
     109    reg_NB_ELT           = new Tptr_t    [_param->_nb_context];
    109110
    110111    reg_PREDICT_TOP      = new Tptr_t     [_param->_nb_context];
    111112    reg_PREDICT_BOTTOM   = new Tptr_t     [_param->_nb_context];
    112     reg_PREDICT_EMPTY    = new Tcontrol_t [_param->_nb_context];
     113    reg_PREDICT_NB_ELT   = new Tptr_t    [_param->_nb_context];
    113114
    114115    internal_PREDICT_ACK = new Tcontrol_t [_param->_nb_inst_predict];
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_deallocation.cpp

    • Property svn:keywords set to Id
    r78 r81  
    1 */*
     1/*
    22 * $Id$
    33 *
     
    5454        delete []  in_UPDATE_INDEX         ;
    5555        delete []  in_UPDATE_ADDRESS       ;
     56        delete []  in_UPDATE_MISS_PREDICTION;
     57        delete []  in_UPDATE_PREDICTION_IFETCH;
    5658      }
    5759
     
    6163    delete [] reg_TOP;
    6264    delete [] reg_BOTTOM;
    63     delete [] reg_EMPTY;
     65    delete [] reg_NB_ELT;
    6466    delete [] reg_PREDICT_TOP;
    6567    delete [] reg_PREDICT_BOTTOM;
    66     delete [] reg_PREDICT_EMPTY;
     68    delete [] reg_PREDICT_NB_ELT;
    6769   
    6870    delete [] internal_PREDICT_ACK;
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_end_cycle.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_decod.cpp

    • Property svn:keywords set to Id
    r78 r81  
    4848        // if push : value is hit
    4949        // if pop  : val and not miss
    50         internal_DECOD_HIT [i] = (push or (reg_stack[context][top]._val and not reg_stack[context][top]._miss));
     50        //   when the predictor : if hit = 0, wait (is not accurate)
     51        internal_DECOD_HIT [i] = (push or (reg_stack[context][top]._val and not reg_stack[context][top]._miss and (reg_NB_ELT[context]>0)));
    5152        PORT_WRITE(out_DECOD_HIT         [i], internal_DECOD_HIT [i]);
    5253
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_genMealy_predict.cpp

    • Property svn:keywords set to Id
    r78 r81  
    4848        // if push : value is hit
    4949        // if pop  : val and not miss
    50         internal_PREDICT_HIT [i] = (push or (reg_stack[context][top]._val and not reg_stack[context][top]._miss));
     50        internal_PREDICT_HIT [i] = (push or (reg_stack[context][top]._val and not reg_stack[context][top]._miss and (reg_PREDICT_NB_ELT[context]>0)));
    5151        PORT_WRITE(out_PREDICT_HIT         [i], internal_PREDICT_HIT [i]);
    5252
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_statistics_allocation.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_statistics_deallocation.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_transition.cpp

    • Property svn:keywords set to Id
    r78 r81  
    2424    log_printf(FUNC,Return_Address_Stack,FUNCTION,"Begin");
    2525
    26     if (PORT_READ(in_NRESET))
     26    if (PORT_READ(in_NRESET)==0)
    2727      {
    2828        for (uint32_t i=0; i<_param->_nb_context; i++)
     
    3030            reg_TOP    [i] = 0;
    3131            reg_BOTTOM [i] = 0;
     32            reg_NB_ELT [i] = 0;
    3233
    3334            reg_PREDICT_TOP    [i] = 0;
    3435            reg_PREDICT_BOTTOM [i] = 0;
     36            reg_PREDICT_NB_ELT [i] = 0;
    3537
    3638            for (uint32_t j=0; j<_param->_size_queue [i]; j++)
    37               reg_stack[i][j]._val = false;
     39              {
     40                reg_stack[i][j]._val     = false;
     41                reg_stack[i][j]._predict = false;
     42                reg_stack[i][j]._miss    = false;
     43              }
    3844          }
    3945      }
     
    4652          if (PORT_READ(in_PREDICT_VAL [i]) and internal_PREDICT_ACK [i])
    4753            {
    48               Tcontrol_t context = (_param->_have_port_context_id)?PORT_READ(in_PREDICT_CONTEXT_ID [i]):0;
    49               Tcontrol_t push    = PORT_READ(in_PREDICT_PUSH [i]);
    50               Tptr_t     top_old = reg_PREDICT_TOP [i];
    51               Tptr_t     top_new;
    52 
     54              log_printf(TRACE,Return_Address_Stack,FUNCTION,"PREDICT[%d] : Transaction",i);
     55              Tcontext_t context    = (_param->_have_port_context_id)?PORT_READ(in_PREDICT_CONTEXT_ID [i]):0;
     56              Tcontrol_t push       = PORT_READ(in_PREDICT_PUSH [i]);
     57              Tptr_t     top_old    = reg_PREDICT_TOP    [context];
     58              Tptr_t     top_new    = top_old;
     59              Tptr_t     bottom_old = reg_PREDICT_BOTTOM [context];
     60
     61              log_printf(TRACE,Return_Address_Stack,FUNCTION," * context : %d",context);
     62
     63              // Hit  : push or (val and not miss and not empty)
     64              // Miss : ifetch is stall, no update
    5365              if (internal_PREDICT_HIT [i])
    5466                {
     67                  log_printf(TRACE,Return_Address_Stack,FUNCTION," * before");
     68                  log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_predict_top     : %d",reg_PREDICT_TOP    [context]);
     69                  log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_predict_bottom  : %d",reg_PREDICT_BOTTOM [context]);
     70                  log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_predict_nb_elt  : %d",reg_PREDICT_NB_ELT [context]);
     71
    5572                  if (push)
    5673                    {
    57                       // push
     74                      // push : increase the top (circular)
    5875                      top_new = (top_old+1)%_param->_size_queue[context];
    5976                     
    6077                      reg_stack [context][top_new]._val     = true; // New addr
    61                       reg_stack [context][top_new]._predict = true; // Is speculative (erase a old addr)
     78                      reg_stack [context][top_new]._predict = true; // Is speculative (erase a old addr (or not))
    6279                    //reg_stack [context][top_new]._miss    = ;
    6380                      reg_stack [context][top_new]._address = PORT_READ(in_PREDICT_ADDRESS_PUSH [i]);
    6481
    6582                      // the stack is full, erase the most old stack
    66                       if (top_new == reg_PREDICT_BOTTOM [i])
    67                         reg_PREDICT_BOTTOM [i] = (reg_PREDICT_BOTTOM [i]+1)%_param->_size_queue[context];
     83
     84                      // Test if full
     85                      if (reg_PREDICT_NB_ELT[context]==_param->_size_queue[context])
     86                        reg_PREDICT_BOTTOM [context] = (bottom_old+1)%_param->_size_queue[context];
     87                      // A new data is write : the stack is not empty
     88                      if (reg_PREDICT_NB_ELT[context]< _param->_size_queue[context])
     89                        reg_PREDICT_NB_ELT[context]++;
    6890                    }
    6991                  else
    7092                    {
    7193                      // pop
    72                       top_new = (top_old==0)?(_param->_size_queue[context]-1):(top_old-1);
     94//                    top_new = (top_old==0)?(_param->_size_queue[context]-1):(top_old-1);
    7395                     
    7496                    //reg_stack [context][top_new]._val     = ;
     
    78100
    79101                      // the stack is empty
    80                       if (top_old == reg_PREDICT_BOTTOM [i])
    81                         reg_PREDICT_BOTTOM [i] = top_new;
    82 
     102                      if (reg_PREDICT_NB_ELT[context]>0)
     103                        {
     104                          top_new = (top_old==0)?(_param->_size_queue[context]-1):(top_old-1);
     105                          reg_PREDICT_NB_ELT[context] --;
     106                        }
    83107                    }
    84108                 
    85                   reg_PREDICT_TOP [i] = top_new;
     109                  reg_PREDICT_TOP [context] = top_new;
     110
     111                  log_printf(TRACE,Return_Address_Stack,FUNCTION," * after");
     112                  log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_predict_top     : %d",reg_PREDICT_TOP    [context]);
     113                  log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_predict_bottom  : %d",reg_PREDICT_BOTTOM [context]);
     114                  log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_predict_nb_elt  : %d",reg_PREDICT_NB_ELT [context]);
    86115                }
    87116            }
    88117
    89 //      // ===================================================================
    90 //      // =====[ DECOD ]=====================================================
    91 //      // ===================================================================
    92 //      for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
    93 //        if (PORT_READ(in_DECOD_VAL [i]) and internal_DECOD_ACK [i])
    94 //          {
    95 //            Tcontrol_t context = (_param->_have_port_context_id)?PORT_READ(in_DECOD_CONTEXT_ID [i]):0;
    96 //            Tcontrol_t push    = PORT_READ(in_DECOD_PUSH [i]);
    97 //            Tptr_t     top_old = reg_TOP [i];
    98 //            Tptr_t     top_new;
    99 
    100 //            Tcontrol_t hit  = PORT_READ(in_DECOD_HIT             [i]);
    101 //            Tcontrol_t miss = PORT_READ(in_DECOD_MISS_PREDICTION [i]);
    102 
    103 //            if (push)
    104 //              {
    105 //                // push
    106 //                top_new = (top_old+1)%_param->_size_queue[context];
    107 
    108 //                reg_stack [context][top_new]._val     = true;
    109 //                reg_stack [context][top_new]._predict = false;
    110 //                reg_stack [context][top_new]._miss    = false;
    111 //                reg_stack [context][top_new]._address = PORT_READ(in_DECOD_ADDRESS_PUSH [i]);
    112 
    113 //                // the stack is full, erase the most old stack
    114 //                if (top_old == reg_BOTTOM [i])
    115 //                  reg_BOTTOM [i] = top_new;
    116 //              }
    117 //            else
    118 //              {
    119 //                // pop
     118        // ===================================================================
     119        // =====[ DECOD ]=====================================================
     120        // ===================================================================
     121        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
     122          if (PORT_READ(in_DECOD_VAL [i]) and internal_DECOD_ACK [i])
     123            {
     124              log_printf(TRACE,Return_Address_Stack,FUNCTION,"DECOD[%d] : Transaction",i);
     125              Tcontext_t context    = (_param->_have_port_context_id)?PORT_READ(in_DECOD_CONTEXT_ID [i]):0;
     126              Tcontrol_t push       = PORT_READ(in_DECOD_PUSH [i]);
     127              Tptr_t     top_old    = reg_TOP    [context];
     128              Tptr_t     top_new    = top_old;
     129              Tptr_t     bottom_old = reg_BOTTOM [context];
     130              //Tcontrol_t hit        = internal_DECOD_HIT [i];
     131              Tcontrol_t miss       = PORT_READ(in_DECOD_MISS_PREDICTION [i]);
     132
     133              log_printf(TRACE,Return_Address_Stack,FUNCTION," * context : %d",context);
     134
     135              log_printf(TRACE,Return_Address_Stack,FUNCTION," * before");
     136              log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_top     : %d",reg_TOP    [context]);
     137              log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_bottom  : %d",reg_BOTTOM [context]);
     138              log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_nb_elt  : %d",reg_NB_ELT [context]);
     139
     140              if (push)
     141                {
     142                  // push : increase the top (circular)
     143                  top_new = (top_old+1)%_param->_size_queue[context];
     144                 
     145                  reg_stack [context][top_new]._val     = true;  // New address
     146                  reg_stack [context][top_new]._predict = false; // No speculative
     147                  reg_stack [context][top_new]._miss    = false;
     148                  reg_stack [context][top_new]._address = PORT_READ(in_DECOD_ADDRESS_PUSH [i]);
     149                 
     150                  // Test if full : if true, then icrease the bottom (erase the most old stack)
     151                  if (reg_NB_ELT[context]==_param->_size_queue[context])
     152                    reg_BOTTOM [context] = (bottom_old+1)%_param->_size_queue[context];
     153                  // A new data is write : the stack is not empty
     154                  if (reg_NB_ELT[context]< _param->_size_queue[context])
     155                    reg_NB_ELT[context]++;
     156                }
     157              else
     158                {
     159                  // pop
    120160//                top_new = (top_old==0)?(_param->_size_queue[context]-1):(top_old-1);
    121161
    122 //              //reg_stack [context][top_new]._val     = ;
    123 //              //reg_stack [context][top_new]._predict = ;
    124 //              //reg_stack [context][top_new]._miss    = ;
    125 //              //reg_stack [context][top_new]._address = ;
    126 //              }
    127 
    128 //            reg_TOP [i] = top_new;
    129 
    130 //            // have previous miss of ifetch ?
    131 //            // 2 miss :
    132 //            //   1) miss predict : is very limited (local at context), can be update very quickly
    133 //            //   2) miss decod   : result is in commit stage ...
    134 //            if (miss)
    135 //              {
    136 //                reg_PREDICT_BOTTOM [i] = reg_BOTTOM [i];
    137 //                reg_PREDICT_TOP    [i] = reg_TOP    [i];
    138 
    139 //                for (uint32_t j=0; j<_param->_size_queue [i]; j++)
    140 //                  if (reg_stack [context][top_new]._predict)
    141 //                    {
    142 //                      reg_stack [context][top_new]._predict = false;
    143 //                      reg_stack [context][top_new]._miss    = true;
    144 //                    }
    145 //              }
    146 //          }
     162                  //reg_stack [context][top_new]._val     = ;
     163                  //reg_stack [context][top_new]._predict = ;
     164                  //reg_stack [context][top_new]._miss    = ;
     165                  //reg_stack [context][top_new]._address = ;
     166                 
     167                  // the stack is empty
     168                  if (reg_NB_ELT[context]>0)
     169                    {
     170                      top_new = (top_old==0)?(_param->_size_queue[context]-1):(top_old-1);
     171                      reg_NB_ELT[context] --;
     172                    }
     173                }
     174             
     175              reg_TOP [context] = top_new;
     176             
     177              log_printf(TRACE,Return_Address_Stack,FUNCTION," * after");
     178              log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_top     : %d",reg_TOP    [context]);
     179              log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_bottom  : %d",reg_BOTTOM [context]);
     180              log_printf(TRACE,Return_Address_Stack,FUNCTION,"   * reg_nb_elt  : %d",reg_NB_ELT [context]);
     181
     182              // have previous miss of ifetch ?
     183              // 2 miss :
     184              //   1) miss predict : is very limited (local at context), can be update very quickly
     185              //   2) miss decod   : result is in commit stage ...
     186              if (miss)
     187                {
     188                  reg_PREDICT_BOTTOM [context] = reg_BOTTOM [context];
     189                  reg_PREDICT_TOP    [context] = reg_TOP    [context];
     190                  reg_PREDICT_NB_ELT [context] = reg_NB_ELT [context];
     191                 
     192                  // Scan full assoc !!!
     193                  for (uint32_t j=0; j<_param->_size_queue [i]; j++)
     194                    // Test if this slot is tagged with "predict" : if true, tagged as miss
     195                    if (reg_stack [context][j]._predict)
     196                      {
     197                        reg_stack [context][j]._predict = false;
     198                        reg_stack [context][j]._miss    = true;
     199                      }
     200                }
     201            }
    147202
    148203        // ===================================================================
     
    152207          if (PORT_READ(in_UPDATE_VAL [i]) and internal_UPDATE_ACK [i])
    153208            {
    154               Tcontrol_t context = (_param->_have_port_context_id)?PORT_READ(in_UPDATE_CONTEXT_ID [i]):0;
    155               Tcontrol_t push    = PORT_READ(in_UPDATE_PUSH  [i]);
    156               Tptr_t     index   = PORT_READ(in_UPDATE_INDEX [i]);
     209              ERRORMORPHEO(FUNCTION,"Fonction à implémenter !!!!!!!!!!!!");
    157210             
    158               if (PORT_READ(in_UPDATE_MISS_PREDICTION [i]))
    159                 {
    160                   if (push)
    161                     {
    162                       // push
    163                       top_new = (top_old+1)%_param->_size_queue[context];
     211
     212//            Tcontrol_t miss   = PORT_READ(in_UPDATE_MISS_PREDICTION [i]);
     213//            //
     214//            if (miss)
     215//              {
     216//                Tcontrol_t context = (_param->_have_port_context_id)?PORT_READ(in_UPDATE_CONTEXT_ID [i]):0;
     217//                Tcontrol_t ifetch  = PORT_READ(in_UPDATE_PREDICTION_IFETCH [i]);
     218//                Tcontrol_t push    = PORT_READ(in_UPDATE_PUSH             [i]);
     219//                Tptr_t     index   = PORT_READ(in_UPDATE_INDEX            [i]);
     220//                Taddress_t address = PORT_READ(in_UPDATE_ADDRESS          [i]);
     221                 
     222//                if (push)
     223//                  {
     224// //                 // push
     225// //                 top_new = (top_old+1)%_param->_size_queue[context];
    164226                     
    165                       reg_stack [context][index]._val     = true;
    166                       reg_stack [context][index]._predict = false;
    167                       reg_stack [context][index]._miss    = false;
    168                       reg_stack [context][index]._address = PORT_READ(in_UPDATE_ADDRESS [i]);
    169 
    170                     }
    171                   else
    172                     {
    173                     //reg_stack [context][top_new]._val     = ;
    174                     //reg_stack [context][top_new]._predict = ;
    175                     //reg_stack [context][top_new]._miss    = ;
    176                     //reg_stack [context][top_new]._address = ;
    177                     }
    178                  
    179                   // Mouais bof .......
    180                   reg_PREDICT_TOP [i] = index;
    181                 }
     227// //                 reg_stack [context][index]._val     = true;
     228// //                 reg_stack [context][index]._predict = false;
     229// //                 reg_stack [context][index]._miss    = false;
     230// //                 reg_stack [context][index]._address = PORT_READ(in_UPDATE_ADDRESS [i]);
     231
     232//                  }
     233//                else
     234//                  {
     235// //               //reg_stack [context][top_new]._val     = ;
     236// //               //reg_stack [context][top_new]._predict = ;
     237// //               //reg_stack [context][top_new]._miss    = ;
     238// //               //reg_stack [context][top_new]._address = ;
     239//                  }
     240                 
     241// // //                  // Mouais bof .......
     242// // //                  reg_PREDICT_TOP [context] = index;
     243//              }
    182244            }
    183245      }
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_vhdl.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_vhdl_body.cpp

    • Property svn:keywords set to Id
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_vhdl_declaration.cpp

    • Property svn:keywords set to Id
Note: See TracChangeset for help on using the changeset viewer.