source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_declaration.cpp @ 69

Last change on this file since 69 was 69, checked in by rosiere, 17 years ago

Station de reservation : systemC et VHDL ok

File size: 5.0 KB
Line 
1#ifdef VHDL
2/*
3 * $Id$
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_execute_loop {
15namespace execute_loop {
16namespace multi_read_unit {
17namespace read_unit {
18namespace reservation_station {
19
20
21#undef  FUNCTION
22#define FUNCTION "Reservation_station::vhdl_declaration"
23  void Reservation_station::vhdl_declaration (Vhdl * & vhdl)
24  {
25    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
26
27    vhdl->set_type ("Tcontrol        ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(1));
28    if (_param->_have_port_context_id)           
29    vhdl->set_type ("Tcontext_id     ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_context_id));
30    if (_param->_have_port_front_end_id)         
31    vhdl->set_type ("Tfront_end_id   ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_front_end_id));
32    if (_param->_have_port_ooo_engine_id)         
33    vhdl->set_type ("Tooo_engine_id  ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_ooo_engine_id));
34    if (_param->_have_port_rob_id)               
35    vhdl->set_type ("Trob_id         ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_rob_id));
36    vhdl->set_type ("Toperation      ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_operation));
37    vhdl->set_type ("Ttype           ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_type));
38    vhdl->set_type ("Tgeneral_data   ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_general_data));
39    vhdl->set_type ("Tspecial_data   ","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_special_data));   
40    vhdl->set_type ("Tgeneral_address","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_general_register));
41    vhdl->set_type ("Tspecial_address","array (" + toString(_param->_size_queue-1) + " downto 0) of " + std_logic(_param->_size_special_register));   
42
43    vhdl->set_signal("reg_VAL                     ","Tcontrol");
44    if (_param->_have_port_context_id)           
45    vhdl->set_signal("reg_CONTEXT_ID              ","Tcontext_id");
46    if (_param->_have_port_front_end_id)         
47    vhdl->set_signal("reg_FRONT_END_ID            ","Tfront_end_id");
48    if (_param->_have_port_ooo_engine_id)         
49    vhdl->set_signal("reg_OOO_ENGINE_ID           ","Tooo_engine_id");
50    if (_param->_have_port_rob_id)               
51    vhdl->set_signal("reg_ROB_ID                  ","Trob_id");
52    vhdl->set_signal("reg_OPERATION               ","Toperation");
53    vhdl->set_signal("reg_TYPE                    ","Ttype");
54    vhdl->set_signal("reg_HAS_IMMEDIAT            ","Tcontrol");
55    vhdl->set_signal("reg_IMMEDIAT                ","Tgeneral_data");
56    vhdl->set_signal("reg_NUM_REG_RA              ","Tgeneral_address");
57    vhdl->set_signal("reg_DATA_RA_VAL             ","Tcontrol");
58    vhdl->set_signal("reg_DATA_RA                 ","Tgeneral_data");
59    vhdl->set_signal("reg_NUM_REG_RB              ","Tgeneral_address");
60    vhdl->set_signal("reg_DATA_RB_VAL             ","Tcontrol");
61    vhdl->set_signal("reg_DATA_RB                 ","Tgeneral_data");
62    vhdl->set_signal("reg_NUM_REG_RC              ","Tspecial_address");
63    vhdl->set_signal("reg_DATA_RC_VAL             ","Tcontrol");
64    vhdl->set_signal("reg_DATA_RC                 ","Tspecial_data");
65    vhdl->set_signal("reg_WRITE_RD                ","Tcontrol");
66    vhdl->set_signal("reg_NUM_REG_RD              ","Tgeneral_address");
67    vhdl->set_signal("reg_WRITE_RE                ","Tcontrol");
68    vhdl->set_signal("reg_NUM_REG_RE              ","Tspecial_address");
69
70    if (_param->_size_queue == 1)
71      vhdl->set_alias(" internal_FULL               ",1,"internal_INSERT_SLOT","");
72    else
73      vhdl->set_alias(" internal_FULL               ",1,"internal_INSERT_SLOT","("+toString(log2(_param->_size_queue))+")");
74//  vhdl->set_signal("internal_EMPTY              ",1);
75
76    vhdl->set_signal("internal_INSERT_TRANSACTION ",1);
77    vhdl->set_signal("internal_INSERT_SLOT        ",log2(_param->_size_queue)+1);
78
79   
80    for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
81      {
82        vhdl->set_signal("internal_RETIRE_TRANSACTION_"+toString(i),1);
83        vhdl->set_signal("internal_RETIRE_SLOT_"+toString(i)+"      ",log2(_param->_size_queue)+1);
84      }
85    log_printf(FUNC,Reservation_station,FUNCTION,"End");
86  };
87
88}; // end namespace reservation_station
89}; // end namespace read_unit
90}; // end namespace multi_read_unit
91}; // end namespace execute_loop
92}; // end namespace multi_execute_loop
93}; // end namespace core
94}; // end namespace behavioural
95}; // end namespace morpheo             
96#endif
Note: See TracBrowser for help on using the repository browser.