source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_insert_valack.cpp @ 109

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

1) Configuration : instance configuration file : regroup similar instance
2) Configuration : timing default = 0
3) Debug/Commit_unit : Add watch dog timer
4) Issue_queue : Test parameters : add test if type is optionnal
5) Cor_glue : Fix insert index
6) Free_list : remove bank_by_pop (else deadlock)
7) Update Free List : add register to source event

  • Property svn:keywords set to Id
File size: 4.4 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: OOO_Engine_Glue_genMealy_insert_valack.cpp 109 2009-02-16 20:28:31Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/include/OOO_Engine_Glue.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace ooo_engine_glue {
17
18
19#undef  FUNCTION
20#define FUNCTION "OOO_Engine_Glue::genMealy_insert_valack"
21  void OOO_Engine_Glue::genMealy_insert_valack (void)
22  {
23    log_begin(OOO_Engine_Glue,FUNCTION);
24    log_function(OOO_Engine_Glue,FUNCTION,_name.c_str());
25
26    uint32_t x=0;
27    for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
28      {
29        // Transaction must be in-order : make in Rename_unit
30
31        for (uint32_t j=0; j<_param->_nb_inst_insert[i]; ++j)
32          {
33            Tcontrol_t ack                    = PORT_READ(in_INSERT_ACK                    [x]   );
34            Tcontrol_t rename_unit_val        = PORT_READ(in_INSERT_RENAME_UNIT_VAL        [i][j]);
35            Tcontrol_t rename_unit_no_execute = PORT_READ(in_INSERT_RENAME_UNIT_NO_EXECUTE [i][j]);
36            Tcontrol_t commit_unit_ack        = PORT_READ(in_INSERT_COMMIT_UNIT_ACK        [i][j]);
37            Tcontrol_t issue_queue_ack        = PORT_READ(in_INSERT_ISSUE_QUEUE_ACK        [i][j]);
38           
39            // if not execute -> don't route to issue_queue
40           
41            Tcontrol_t val             = (
42                                          rename_unit_val        and
43                                          commit_unit_ack        and
44                                          (rename_unit_no_execute or
45                                           issue_queue_ack));
46            Tcontrol_t rename_unit_ack = (
47                                          ack                    and
48                                          commit_unit_ack        and
49                                          (rename_unit_no_execute or
50                                           issue_queue_ack));
51            Tcontrol_t commit_unit_val = (
52                                          ack                    and
53                                          rename_unit_val        and
54                                          (rename_unit_no_execute or
55                                           issue_queue_ack));
56            Tcontrol_t issue_queue_val = (
57                                          ack                    and
58                                          rename_unit_val        and
59                                          commit_unit_ack        and
60                                          not rename_unit_no_execute);
61           
62            PORT_WRITE(out_INSERT_VAL             [x]   ,val            );
63            PORT_WRITE(out_INSERT_RENAME_UNIT_ACK [i][j],rename_unit_ack);
64            PORT_WRITE(out_INSERT_COMMIT_UNIT_VAL [i][j],commit_unit_val);
65            PORT_WRITE(out_INSERT_ISSUE_QUEUE_VAL [i][j],issue_queue_val);
66
67            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"  * rename_unit [%d].inst_insert[%d] -> %d",i,j,x);
68            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_val (RegisterFile)     (w) : %d",val                   );
69            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_ack (RegisterFile)     (r) : %d",ack                   );
70            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_rename_unit_val        (r) : %d",rename_unit_val       );
71            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_rename_unit_ack        (w) : %d",rename_unit_ack       );
72            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_rename_unit_no_execute (r) : %d",rename_unit_no_execute);
73            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_commit_unit_val        (w) : %d",commit_unit_val       );
74            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_commit_unit_ack        (r) : %d",commit_unit_ack       );
75            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_issue_queue_val        (w) : %d",issue_queue_val       );
76            log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * insert_issue_queue_ack        (r) : %d",issue_queue_ack       );
77
78            x ++;
79          }
80      }
81   
82    log_end(OOO_Engine_Glue,FUNCTION);
83  };
84
85}; // end namespace ooo_engine_glue
86}; // end namespace ooo_engine
87}; // end namespace multi_ooo_engine
88}; // end namespace core
89
90}; // end namespace behavioural
91}; // end namespace morpheo             
92#endif
Note: See TracBrowser for help on using the repository browser.