Ignore:
Timestamp:
Jul 5, 2007, 5:50:19 PM (17 years ago)
Author:
rosiere
Message:

Modification des classes d'encapsulation des interfaces :

  • gère les signaux à écrire dans le vhdl
  • les traces pour le testbench
  • la génération des vhdl structurelles

-> test sur la Pattern History Table

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp

    r15 r42  
    1717  void Victim_Pseudo_LRU::allocation (void)
    1818  {
    19     in_CLOCK  = new SC_CLOCK           ("in_CLOCK");
    20     in_NRESET = new SC_IN (Tcontrol_t) ("in_NRESET");
     19#ifdef POSITION
     20    _component   = new Component ();
    2121
    22     // -----[ Interface access ]-------------------------------------------
    23      in_ACCESS_VAL     = new SC_IN (Tcontrol_t) * [_param._nb_access];
    24     out_ACCESS_ACK     = new SC_OUT(Tcontrol_t) * [_param._nb_access];
    25     if (_param._size_table>1)
    26       in_ACCESS_ADDRESS = new SC_IN (Taddress_t) * [_param._nb_access];
    27     out_ACCESS_ENTITY  = new SC_OUT(Tentity_t ) * [_param._nb_access];
     22    Entity * entity = _component->set_entity (_name                  ,
     23                                             "Select_Priority_Fixed",
     24                                             COMBINATORY            );
    2825   
    29     for (uint32_t i=0; i<_param._nb_access; i++)
    30       {
    31         string rename;
     26    _interfaces = entity->set_interfaces();
     27#else
     28    _interfaces = new Interfaces();
     29#endif
    3230
    33         rename = "in_ACCESS_VAL["     + toString(i) + "]";
    34          in_ACCESS_VAL     [i] = new SC_IN (Tcontrol_t) (rename.c_str());
     31    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     32    {
     33      Interface_fifo * interface = _interfaces->set_interface("", IN  ,WEST, "Generalist interface");
     34     
     35      in_CLOCK        = interface->set_signal_clk              ("clock" ,1);
     36      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1);
     37    }
    3538
    36         rename = "out_ACCESS_ACK["    + toString(i) + "]";
    37         out_ACCESS_ACK     [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
     39    // ~~~~~[ Interface : "access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     40    {
     41       in_ACCESS_VAL     = new SC_IN (Tcontrol_t) * [_param._nb_access];
     42      out_ACCESS_ACK     = new SC_OUT(Tcontrol_t) * [_param._nb_access];
     43      if (_param._size_table>1)
     44       in_ACCESS_ADDRESS = new SC_IN (Taddress_t) * [_param._nb_access];
     45      out_ACCESS_ENTITY  = new SC_OUT(Tentity_t ) * [_param._nb_access];
     46     
     47      for (uint32_t i=0; i<_param._nb_access; i++)
     48        {
     49          Interface_fifo * interface = _interfaces->set_interface("access_"+toString(i), IN  ,WEST, "Access");
    3850
    39         if (_param._size_table>1)
    40           {
    41             rename = "in_ACCESS_ADDRESS[" + toString(i) + "]";
    42             in_ACCESS_ADDRESS [i] = new SC_IN (Taddress_t) (rename.c_str());
    43           }
    44         rename = "out_ACCESS_ENTITY[" + toString(i) + "]";
    45         out_ACCESS_ENTITY  [i] = new SC_OUT(Tentity_t ) (rename.c_str());
    46       }
     51           in_ACCESS_VAL     [i] = interface->set_signal_valack_in        ("val"    , VAL);
     52          out_ACCESS_ACK     [i] = interface->set_signal_valack_out       ("ack"    , ACK);
     53         
     54          if (_param._size_table>1)
     55           in_ACCESS_ADDRESS [i] = interface->set_signal_in  <Taddress_t> ("address",static_cast<uint32_t>(log2(_param._size_table)));
     56          out_ACCESS_ENTITY  [i] = interface->set_signal_out <Tentity_t>  ("entity" ,static_cast<uint32_t>(log2(_param._nb_entity )));
     57        }
     58    }
    4759
    48     // -----[ Interface update ]-------------------------------------------
    49      in_UPDATE_VAL     = new SC_IN (Tcontrol_t) *  [_param._nb_update];
    50     out_UPDATE_ACK     = new SC_OUT(Tcontrol_t) *  [_param._nb_update];
    51     if (_param._size_table>1)
    52       in_UPDATE_ADDRESS = new SC_IN (Taddress_t) *  [_param._nb_update];
    53      in_UPDATE_ENTITY  = new SC_IN (Tentity_t ) *  [_param._nb_update];
     60    // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     61   
     62    {
     63       in_UPDATE_VAL     = new SC_IN (Tcontrol_t) *  [_param._nb_update];
     64      out_UPDATE_ACK     = new SC_OUT(Tcontrol_t) *  [_param._nb_update];
     65      if (_param._size_table>1)
     66       in_UPDATE_ADDRESS = new SC_IN (Taddress_t) *  [_param._nb_update];
     67       in_UPDATE_ENTITY  = new SC_IN (Tentity_t ) *  [_param._nb_update];
     68     
     69      for (uint32_t i=0; i<_param._nb_update; i++)
     70        {
     71          Interface_fifo * interface = _interfaces->set_interface("update_"+toString(i), IN  ,EAST, "Update");
    5472
    55     for (uint32_t i=0; i<_param._nb_update; i++)
    56       {
    57         string rename;
    58 
    59         rename = "in_UPDATE_VAL["     + toString(i) + "]";
    60          in_UPDATE_VAL     [i] = new SC_IN (Tcontrol_t) (rename.c_str());
    61 
    62         rename = "out_UPDATE_ACK["    + toString(i) + "]";;
    63         out_UPDATE_ACK     [i] = new SC_OUT(Tcontrol_t) (rename.c_str());
    64 
    65         if (_param._size_table>1)
    66           {
    67             rename = "in_UPDATE_ADDRESS[" + toString(i) + "]";
    68             in_UPDATE_ADDRESS [i] = new SC_IN (Taddress_t) (rename.c_str());
    69           }
    70 
    71         rename = "in_UPDATE_ENTITY["  + toString(i) + "]";
    72          in_UPDATE_ENTITY  [i] = new SC_IN (Tentity_t ) (rename.c_str());
    73       }
    74 
     73          in_UPDATE_VAL     [i] = interface->set_signal_valack_in        ("val"    , VAL);
     74         out_UPDATE_ACK     [i] = interface->set_signal_valack_out       ("ack"    , ACK);
     75         if (_param._size_table>1)
     76          in_UPDATE_ADDRESS [i] = interface->set_signal_in  <Taddress_t> ("address",static_cast<uint32_t>(log2(_param._size_table)));
     77          in_UPDATE_ENTITY  [i] = interface->set_signal_in  <Tentity_t>  ("entity" ,static_cast<uint32_t>(log2(_param._nb_entity )));
     78        }
     79    }
    7580    // -----[ Register ]---------------------------------------------------
    7681    reg_TABLE = new entry_t *  [_param._size_table];
     
    8186    // -----[ Internal ]---------------------------------------------------
    8287    internal_ACCESS_ENTITY = new Tentity_t [_param._nb_entity];
     88
     89#ifdef POSITION
     90    _component->generate_file();
     91#endif
    8392  };
    8493
Note: See TracChangeset for help on using the changeset viewer.