source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_declaration.cpp @ 68

Last change on this file since 68 was 68, checked in by rosiere, 16 years ago

read_queue : systemC et vhdl ok !
queue : quelques petits modif pour avoir une queue de taille 1
nettoyage des fichiers *mkf*

File size: 7.2 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/Read_queue/include/Read_queue.h"
10
11namespace morpheo {
12namespace behavioural {
13namespace core {
14namespace multi_execute_loop {
15namespace execute_loop {
16namespace multi_read_unit {
17namespace read_unit {
18namespace read_queue {
19
20
21  void Read_queue::vhdl_declaration (Vhdl * & vhdl)
22  {
23    log_printf(FUNC,Read_queue,"vhdl_declaration","Begin");
24
25
26    vhdl->set_signal ("internal_READ_QUEUE_OUT_VAL   ",1);
27
28    vhdl->set_signal ("reg_NEED_NEW_HEAD             ",1);
29    vhdl->set_signal ("reg_READ_RA_VAL               ",1);
30    vhdl->set_signal ("reg_READ_RB_VAL               ",1);
31    vhdl->set_signal ("reg_READ_RC_VAL               ",1);
32    vhdl->set_signal ("reg_DATA_RA_VAL               ",1);
33    vhdl->set_signal ("reg_DATA_RB_VAL               ",1);
34    vhdl->set_signal ("reg_DATA_RA                   ",_param->_size_general_data);
35    vhdl->set_signal ("reg_DATA_RB                   ",_param->_size_general_data);
36    vhdl->set_signal ("reg_DATA_RC_VAL               ",1);
37    vhdl->set_signal ("reg_DATA_RC                   ",_param->_size_special_data);
38
39    vhdl->set_signal ("internal_NEXT_NEED_NEW_HEAD   ",1);
40    vhdl->set_signal ("internal_NEXT_READ_RA_VAL     ",1);
41    vhdl->set_signal ("internal_NEXT_READ_RB_VAL     ",1);
42    vhdl->set_signal ("internal_NEXT_READ_RC_VAL     ",1);
43    vhdl->set_signal ("internal_NEXT_DATA_RA_VAL     ",1);
44    vhdl->set_signal ("internal_NEXT_DATA_RB_VAL     ",1);
45    vhdl->set_signal ("internal_NEXT_DATA_RA         ",_param->_size_general_data);
46    vhdl->set_signal ("internal_NEXT_DATA_RB         ",_param->_size_general_data);
47    vhdl->set_signal ("internal_NEXT_DATA_RC_VAL     ",1);
48    vhdl->set_signal ("internal_NEXT_DATA_RC         ",_param->_size_special_data);
49
50    vhdl->set_signal ("internal_READ_RA_VAL          ",1);
51    vhdl->set_signal ("internal_READ_RB_VAL          ",1);
52    vhdl->set_signal ("internal_READ_RC_VAL          ",1);
53    vhdl->set_signal ("internal_DATA_RA_VAL          ",1);
54    vhdl->set_signal ("internal_DATA_RB_VAL          ",1);
55    vhdl->set_signal ("internal_DATA_RC_VAL          ",1);
56 
57
58    vhdl->set_alias  ("internal_QUEUE_INSERT_VAL     ",std_logic(1)," in_READ_QUEUE_IN_VAL",std_logic_range(1));
59    vhdl->set_alias  ("internal_QUEUE_INSERT_ACK     ",std_logic(1),"out_READ_QUEUE_IN_ACK",std_logic_range(1));
60    vhdl->set_signal ("internal_QUEUE_INSERT_DATA    ",_param->_size_internal_queue);
61    vhdl->set_signal ("internal_QUEUE_RETIRE_DATA    ",_param->_size_internal_queue);
62    vhdl->set_signal ("internal_QUEUE_RETIRE_VAL     ",1);
63    vhdl->set_signal ("internal_QUEUE_RETIRE_ACK     ",1);
64   
65    uint32_t min = 0;
66    uint32_t max, size;
67   
68    if(_param->_have_port_context_id   )
69      {
70        size = _param->_size_context_id;
71        max = min-1+size;
72        vhdl->set_alias ("internal_CONTEXT_ID           ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
73        min = max+1;
74      }
75    if(_param->_have_port_front_end_id   )
76      {
77        size = _param->_size_front_end_id;
78        max = min-1+size;
79        vhdl->set_alias ("internal_FRONT_END_ID         ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
80        min = max+1;
81      }
82    if(_param->_have_port_ooo_engine_id   )
83      {
84        size = _param->_size_ooo_engine_id;
85        max = min-1+size;
86        vhdl->set_alias ("internal_OOO_ENGINE_ID        ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
87        min = max+1;
88      }
89    if(_param->_have_port_rob_id   )
90      {
91        size = _param->_size_rob_id;
92        max = min-1+size;
93        vhdl->set_alias ("internal_ROB_ID               ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
94        min = max+1;
95      }
96
97    size = _param->_size_operation;
98    max = min-1+size;
99    vhdl->set_alias ("internal_OPERATION            ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
100    min = max+1;
101
102    size = _param->_size_type;
103    max = min-1+size;
104    vhdl->set_alias ("internal_TYPE                 ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
105    min = max+1;
106
107    size = 1;
108    max = min-1+size;
109    vhdl->set_alias ("internal_HAS_IMMEDIAT         ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
110    min = max+1;
111
112    size = _param->_size_general_data;
113    max = min-1+size;
114    vhdl->set_alias ("internal_IMMEDIAT             ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
115    min = max+1;
116
117    size = 1;
118    max = min-1+size;
119    vhdl->set_alias ("internal_READ_RA              ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
120    min = max+1;
121
122    size = _param->_size_general_register;
123    max = min-1+size;
124    vhdl->set_alias ("internal_NUM_REG_RA           ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
125    min = max+1;
126
127    size = 1;
128    max = min-1+size;
129    vhdl->set_alias ("internal_READ_RB              ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
130    min = max+1;
131
132    size = _param->_size_general_register;
133    max = min-1+size;
134    vhdl->set_alias ("internal_NUM_REG_RB           ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
135    min = max+1;
136
137    size = 1;
138    max = min-1+size;
139    vhdl->set_alias ("internal_READ_RC              ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
140    min = max+1;
141
142    size = _param->_size_special_register;
143    max = min-1+size;
144    vhdl->set_alias ("internal_NUM_REG_RC           ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
145    min = max+1;
146
147    size = 1;
148    max = min-1+size;
149    vhdl->set_alias ("internal_WRITE_RD             ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
150    min = max+1;
151
152    size = _param->_size_general_register;
153    max = min-1+size;
154    vhdl->set_alias ("internal_NUM_REG_RD           ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
155    min = max+1;
156
157    size = 1;
158    max = min-1+size;
159    vhdl->set_alias ("internal_WRITE_RE             ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
160    min = max+1;
161
162    size = _param->_size_special_register;
163    max = min-1+size;
164    vhdl->set_alias ("internal_NUM_REG_RE           ",std_logic(size),"internal_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
165    min = max+1;
166
167
168    log_printf(FUNC,Read_queue,"vhdl_declaration","End");
169  };
170
171}; // end namespace read_queue
172}; // end namespace read_unit
173}; // end namespace multi_read_unit
174}; // end namespace execute_loop
175}; // end namespace multi_execute_loop
176}; // end namespace core
177
178}; // end namespace behavioural
179}; // end namespace morpheo             
180#endif
Note: See TracBrowser for help on using the repository browser.