source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp @ 123

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

1) Fix performance
2) add auto generation to SPECINT2000
3) add reset in genMoore and genMealy

  • Property svn:keywords set to Id
File size: 3.4 KB
Line 
1#ifdef SYSTEMC
2//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
3/*
4 * $Id: Register_unit_Glue_genMealy_insert.cpp 123 2009-06-08 20:43:30Z rosiere $
5 *
6 * [ Description ]
7 *
8 */
9
10#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
11
12namespace morpheo                    {
13namespace behavioural {
14namespace core {
15namespace multi_execute_loop {
16namespace execute_loop {
17namespace register_unit {
18namespace register_unit_glue {
19
20
21#undef  FUNCTION
22#define FUNCTION "Register_unit_Glue::genMealy_insert"
23  void Register_unit_Glue::genMealy_insert (void)
24  {
25    log_begin(Register_unit_Glue,FUNCTION);
26    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
27
28    if (PORT_READ(in_NRESET))
29      {
30    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
31      for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
32        {
33          Tcontrol_t val            = PORT_READ(in_INSERT_ROB_VAL [i][j]);
34          Tcontrol_t gpr_use        = PORT_READ(in_INSERT_ROB_RD_USE [i][j]);
35          Tcontrol_t spr_use        = PORT_READ(in_INSERT_ROB_RE_USE [i][j]);
36          Tcontrol_t gpr_status_ack = PORT_READ(in_INSERT_ROB_GPR_STATUS_ACK [i][j]);
37          Tcontrol_t spr_status_ack = PORT_READ(in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
38         
39          Tcontrol_t ack            = (gpr_status_ack and
40                                       spr_status_ack);     
41          Tcontrol_t gpr_status_val = (val     and
42                                       gpr_use and
43                                       spr_status_ack);
44          Tcontrol_t spr_status_val = (val     and
45                                       spr_use and
46                                       gpr_status_ack);
47
48          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"  * insert_rob [%d][%d]",i,j);
49          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * val            (r) : %d",val           );
50          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
51          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
52          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
53          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
54          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
55          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
56          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
57
58          PORT_WRITE(out_INSERT_ROB_ACK            [i][j], ack           );
59          PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], gpr_status_val);
60          PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], spr_status_val);
61
62        }
63      }
64    else
65      {
66        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
67          for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
68            {
69              PORT_WRITE(out_INSERT_ROB_ACK            [i][j], 0);
70              PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], 0);
71              PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], 0);
72            }
73      }
74
75    log_end(Register_unit_Glue,FUNCTION);
76  };
77
78}; // end namespace register_unit_glue
79}; // end namespace register_unit
80}; // end namespace execute_loop
81}; // end namespace multi_execute_loop
82}; // end namespace core
83
84}; // end namespace behavioural
85}; // end namespace morpheo             
86#endif
87//#endif
Note: See TracBrowser for help on using the repository browser.