source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_genMealy_decod.cpp @ 98

Last change on this file since 98 was 98, checked in by rosiere, 15 years ago

1) Fix bug (read unit, RAT -> write in R0, SPR desallocation ...)
2) Change VHDL Execute_queue -> use Generic/Queue?
3) Complete document on VHDL generation
4) Add soc test

  • Property svn:keywords set to Id
File size: 3.0 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: Branch_Target_Buffer_Glue_genMealy_decod.cpp 98 2008-12-31 10:18:08Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/include/Branch_Target_Buffer_Glue.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16namespace prediction_unit {
17namespace branch_target_buffer {
18namespace branch_target_buffer_glue {
19
20#undef  FUNCTION
21#define FUNCTION "Branch_Target_Buffer_Glue::genMealy_decod"
22  void Branch_Target_Buffer_Glue::genMealy_decod (void)
23  {
24    log_begin(Branch_Target_Buffer_Glue,FUNCTION);
25    log_function(Branch_Target_Buffer_Glue,FUNCTION,_name.c_str());
26
27    for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
28      {
29        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"  * DECOD [%d]",i);
30        Tcontrol_t val          = PORT_READ(in_DECOD_VAL          [i]);
31        Tcontrol_t register_ack = PORT_READ(in_DECOD_REGISTER_ACK [i]);
32        Tcontrol_t victim_ack   = (_param->_have_port_victim)?PORT_READ(in_DECOD_VICTIM_ACK [i]):true;
33       
34        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * val          : %d", val         );
35        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * register_ack : %d", register_ack);
36        log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * victim_ack   : %d", victim_ack  );
37
38        PORT_WRITE(out_DECOD_ACK            [i], (
39//                                                val          and
40                                                  register_ack and
41                                                  victim_ack
42                                                  ));
43        PORT_WRITE(out_DECOD_REGISTER_VAL   [i], (
44                                                  val          and
45//                                                register_ack and
46                                                  victim_ack
47                                                  ));
48        if (_param->_have_port_victim)
49          {
50        PORT_WRITE(out_DECOD_VICTIM_VAL     [i], (
51                                                  val          and
52                                                  register_ack // and
53//                                                victim_ack
54                                                  ));
55        if (not _param->_is_full_associative)
56          {
57            Tgeneral_data_t address_src = PORT_READ(in_DECOD_ADDRESS_SRC [i]);
58            log_printf(TRACE,Branch_Target_Buffer_Glue,FUNCTION,"    * address_src  : %.8x", address_src);
59           
60            PORT_WRITE(out_DECOD_VICTIM_ADDRESS [i], (address_src >> _param->_shift_bank)&_param->_mask_bank);
61          }
62          }
63      }
64
65    log_end(Branch_Target_Buffer_Glue,FUNCTION);
66  };
67
68}; // end namespace branch_target_buffer_glue
69}; // end namespace branch_target_buffer
70}; // end namespace prediction_unit
71}; // end namespace front_end
72}; // end namespace multi_front_end
73}; // end namespace core
74}; // end namespace behavioural
75}; // end namespace morpheo             
76#endif
Note: See TracBrowser for help on using the repository browser.