Ignore:
Timestamp:
Mar 18, 2009, 11:36:26 PM (15 years ago)
Author:
rosiere
Message:

1) Stat_list : fix retire old and new register bug
2) Stat_list : remove read_counter and valid flag, because validation of destination is in retire step (not in commit step)
3) Model : add class Model (cf Morpheo.sim)
4) Allocation : alloc_interface_begin and alloc_interface_end to delete temporary array.
5) Script : add distexe.sh
6) Add Comparator, Multiplier, Divider. But this component are not implemented
7) Software : add Dhrystone

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp

    r106 r112  
    3131        {
    3232          // An event occure
    33           bool no_event = not (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) and (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT));
     33          // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT);
     34          bool reset_update_table = (PORT_READ(in_RETIRE_EVENT_VAL [i][j]) and // always ack
     35                                     (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT));
     36
     37          // not event -> update_table == 1 -> always update
     38          // event     -> update_table and not reset
    3439          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
    35             internal_rat_gpr_update_table [i][j][k] = rat_gpr_update_table [i][j][k] and no_event;
     40            internal_rat_gpr_update_table [i][j][k] = // not event or
     41                                                      (rat_gpr_update_table [i][j][k] and not reset_update_table);
    3642          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
    37             internal_rat_spr_update_table [i][j][k] = rat_spr_update_table [i][j][k] and no_event;
     43            internal_rat_spr_update_table [i][j][k] = // not event or
     44                                                      (rat_spr_update_table [i][j][k] and not reset_update_table);
    3845        }
    3946
     
    5057        Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
    5158        Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
     59        Tcontrol_t restore      = (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT);
    5260
    5361        // Test if event -> need restore ?
    54         if (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT)
     62        if (restore)
    5563          {
    5664            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Have event");
     
    8290            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_re_phy_old   : %d",retire_restore_re_phy_old);
    8391          }
     92
     93        internal_RETIRE_RESTORE_RD_PHY_OLD[i] = retire_restore_rd_phy_old;
     94        internal_RETIRE_RESTORE_RE_PHY_OLD[i] = retire_restore_re_phy_old;
    8495             
    85         PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], retire_restore_rd_phy_old);
    86         PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], retire_restore_re_phy_old);
     96        PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], internal_RETIRE_RESTORE_RD_PHY_OLD[i]);
     97        PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], internal_RETIRE_RESTORE_RE_PHY_OLD[i]);
     98        PORT_WRITE(out_RETIRE_RESTORE           [i], restore);
    8799      }
    88100
Note: See TracChangeset for help on using the changeset viewer.