source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_declaration.cpp @ 135

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

1) Add Vhdl component
2) Inhib VHDL Seltest interface

  • Property svn:keywords set to Id
File size: 5.1 KB
Line 
1#ifdef VHDL
2/*
3 * $Id: Ifetch_queue_vhdl_declaration.cpp 135 2009-07-17 08:59:05Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16namespace ifetch_unit {
17namespace ifetch_queue {
18
19
20#undef  FUNCTION
21#define FUNCTION "Ifetch_queue::vhdl_declaration"
22  void Ifetch_queue::vhdl_declaration (Vhdl * & vhdl)
23  {
24    log_printf(FUNC,Ifetch_queue,FUNCTION,"Begin");
25
26    vhdl->set_constant ("IFETCH_QUEUE_STATE_EMPTY           ",IFETCH_QUEUE_STATE_SIZE,IFETCH_QUEUE_STATE_EMPTY);
27//  vhdl->set_constant ("IFETCH_QUEUE_STATE_WAIT_REQ        ",IFETCH_QUEUE_STATE_SIZE,IFETCH_QUEUE_STATE_WAIT_REQ);
28    vhdl->set_constant ("IFETCH_QUEUE_STATE_WAIT_RSP        ",IFETCH_QUEUE_STATE_SIZE,IFETCH_QUEUE_STATE_WAIT_RSP);
29    vhdl->set_constant ("IFETCH_QUEUE_STATE_HAVE_RSP        ",IFETCH_QUEUE_STATE_SIZE,IFETCH_QUEUE_STATE_HAVE_RSP);
30    vhdl->set_constant ("IFETCH_QUEUE_STATE_ERROR_WAIT_RSP  ",IFETCH_QUEUE_STATE_SIZE,IFETCH_QUEUE_STATE_ERROR_WAIT_RSP);
31   
32    vhdl->set_constant ("EXCEPTION_IFETCH_NONE              ",_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE);
33    vhdl->set_constant ("EXCEPTION_IFETCH_BUS_ERROR         ",_param->_size_exception_ifetch,EXCEPTION_IFETCH_BUS_ERROR);
34
35    vhdl->set_constant ("ICACHE_ERROR_NONE                  ",_param->_size_icache_error,ICACHE_ERROR_NONE);   
36    vhdl->set_constant ("ICACHE_ERROR_BUS_ERROR             ",_param->_size_icache_error,ICACHE_ERROR_BUS_ERROR);   
37
38    if (_param->_size_queue>1)
39      {
40    vhdl->set_signal  ("reg_PTR_READ                        ", log2(_param->_size_queue));
41    vhdl->set_signal  ("reg_PTR_WRITE                       ", log2(_param->_size_queue));
42      }
43     if (_param->_have_port_ifetch_queue_ptr)
44       {
45         if (_param->_size_queue>1)
46           vhdl->set_signal  ("reg_PACKET_PTR                 ", log2(_param->_size_queue));
47         else 
48           vhdl->set_signal  ("reg_PACKET_PTR                 ", 1);
49       }
50
51    vhdl->set_signal  ("reg_EMPTY                            ", 1);     
52
53    vhdl->set_type    ("Tcase                                ","array ("+toString(_param->_nb_instruction-1)+" downto 0) of "+std_logic(_param->_size_instruction));
54    vhdl->set_type    ("Tcase_enable                         ","array ("+toString(_param->_nb_instruction-1)+" downto 0) of std_logic");
55
56    vhdl->set_type    ("Tstate                               ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(IFETCH_QUEUE_STATE_SIZE));
57    vhdl->set_signal  ("reg_STATE                            ", "Tstate");
58   
59    vhdl->set_type    ("Tqueue                               ","array ("+toString(_param->_size_queue-1)+" downto 0) of Tcase");
60    vhdl->set_signal  ("reg_DATA                             ", "Tqueue");
61   
62    vhdl->set_type    ("Tenable                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of Tcase_enable");
63    vhdl->set_signal  ("reg_INSTRUCTION_ENABLE               ", "Tenable");
64    vhdl->set_type    ("Tadress                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_instruction));
65    vhdl->set_signal  ("reg_ADDRESS                          ", "Tadress");
66
67    if (_param->_have_port_inst_ifetch_ptr) 
68      {
69       vhdl->set_type    ("Tinst_ptr                         ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_inst_ifetch_ptr));
70       vhdl->set_signal  ("reg_INST_IFETCH_PTR               ", "Tinst_ptr");
71      }
72    if (_param->_have_port_depth)
73      {
74        vhdl->set_type    ("Tbranch                           ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_depth));
75        vhdl->set_signal  ("reg_BRANCH_UPDATE_PREDICTION_ID   ", "Tbranch");
76      }
77    vhdl->set_type    ("Tbranch_state                         ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_branch_state));
78    vhdl->set_signal  ("reg_BRANCH_STATE                      ", "Tbranch_state");
79    vhdl->set_type    ("Texception                            ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_exception_ifetch));
80    vhdl->set_signal  ("reg_EXCEPTION                         ", "Texception"); 
81   
82    for (uint32_t i=0; i<_param->_nb_instruction; ++i)
83    vhdl->set_signal  ("internal_DECOD_"+toString(i)+"_VAL                      ", 1);
84    vhdl->set_signal  ("internal_ADDRESS_ACK                  ", 1);   
85    vhdl->set_signal  ("internal_ICACHE_RSP_ACK               ", 1);
86    vhdl->set_signal  ("internal_EVENT_RESET_ACK              ", 1);
87    if(_param->_have_port_ifetch_queue_ptr)
88    vhdl->set_signal  ("internal_ICACHE_RSP_PACKET_ID         ", _param->_size_ifetch_queue_ptr);
89    vhdl->set_signal  ("internal_ack                          ", 1);
90
91    log_printf(FUNC,Ifetch_queue,FUNCTION,"End");
92  };
93
94}; // end namespace ifetch_queue
95}; // end namespace ifetch_unit
96}; // end namespace front_end
97}; // end namespace multi_front_end
98}; // end namespace core
99
100}; // end namespace behavioural
101}; // end namespace morpheo             
102#endif
Note: See TracBrowser for help on using the repository browser.