1 | #ifdef VHDL |
---|
2 | /* |
---|
3 | * $Id: Functionnal_unit_vhdl_declaration.cpp 116 2009-04-30 13:51:41Z moulu $ |
---|
4 | * |
---|
5 | * [ Description ] |
---|
6 | * |
---|
7 | */ |
---|
8 | |
---|
9 | #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h" |
---|
10 | |
---|
11 | namespace morpheo { |
---|
12 | namespace behavioural { |
---|
13 | namespace core { |
---|
14 | namespace multi_execute_loop { |
---|
15 | namespace execute_loop { |
---|
16 | namespace multi_execute_unit { |
---|
17 | namespace execute_unit { |
---|
18 | namespace functionnal_unit { |
---|
19 | |
---|
20 | |
---|
21 | #undef FUNCTION |
---|
22 | #define FUNCTION "Functionnal_unit::vhdl_declaration" |
---|
23 | void Functionnal_unit::vhdl_declaration (Vhdl * & vhdl) |
---|
24 | { |
---|
25 | log_printf(FUNC,Functionnal_unit,FUNCTION,"Begin"); |
---|
26 | vhdl->set_signal ("sig_EXECUTE_IN_ACK",1); |
---|
27 | |
---|
28 | vhdl->set_signal ("reg_BUSY_IN",1); |
---|
29 | |
---|
30 | if(_param->_have_port_context_id) |
---|
31 | vhdl->set_signal ("reg_EXECUTE_IN_CONTEXT_ID", _param->_size_context_id); |
---|
32 | if(_param->_have_port_front_end_id) |
---|
33 | vhdl->set_signal ("reg_EXECUTE_IN_FRONT_END_ID", _param->_size_front_end_id); |
---|
34 | if(_param->_have_port_ooo_engine_id) |
---|
35 | vhdl->set_signal ("reg_EXECUTE_IN_OOO_ENGINE_ID", _param->_size_ooo_engine_id); |
---|
36 | if(_param->_have_port_rob_ptr) |
---|
37 | vhdl->set_signal ("reg_EXECUTE_IN_PACKET_ID", _param->_size_rob_ptr); |
---|
38 | vhdl->set_signal ("reg_EXECUTE_IN_OPERATION", _param->_size_operation); |
---|
39 | vhdl->set_signal ("reg_EXECUTE_IN_TYPE", _param->_size_type); |
---|
40 | vhdl->set_signal ("reg_EXECUTE_IN_HAS_IMMEDIAT", 1); |
---|
41 | vhdl->set_signal ("reg_EXECUTE_IN_IMMEDIAT", _param->_size_general_data); |
---|
42 | vhdl->set_signal ("reg_EXECUTE_IN_DATA_RA", _param->_size_general_data); |
---|
43 | vhdl->set_signal ("reg_EXECUTE_IN_DATA_RB", _param->_size_general_data); |
---|
44 | vhdl->set_signal ("reg_EXECUTE_IN_DATA_RC", _param->_size_special_data); |
---|
45 | vhdl->set_signal ("reg_EXECUTE_IN_WRITE_RD", 1); |
---|
46 | vhdl->set_signal ("reg_EXECUTE_IN_NUM_REG_RD", _param->_size_general_register); |
---|
47 | vhdl->set_signal ("reg_EXECUTE_IN_WRITE_RE", 1); |
---|
48 | vhdl->set_signal ("reg_EXECUTE_IN_NUM_REG_RE", _param->_size_special_register); |
---|
49 | |
---|
50 | vhdl->set_signal ("sig_B_OPERAND",_param->_size_general_data); |
---|
51 | |
---|
52 | vhdl->set_signal ("sig_IS_ARITH",1); |
---|
53 | vhdl->set_signal ("sig_IS_LOGIC",1); |
---|
54 | vhdl->set_signal ("sig_CIN_ARITH",1); |
---|
55 | vhdl->set_signal ("sig_ARITH_B_OPERAND",_param->_size_general_data); |
---|
56 | vhdl->set_signal ("sig_RES_ARITH",_param->_size_general_data+1); |
---|
57 | vhdl->set_signal ("sig_A_AND_B",_param->_size_general_data); |
---|
58 | vhdl->set_signal ("sig_A_OR_B",_param->_size_general_data); |
---|
59 | vhdl->set_signal ("sig_A_XOR_B",_param->_size_general_data); |
---|
60 | vhdl->set_signal ("sig_RES_LOGIC",_param->_size_general_data); |
---|
61 | vhdl->set_signal ("sig_RES_ALU",_param->_size_general_data); |
---|
62 | vhdl->set_signal ("sig_OVR_ALU",1); |
---|
63 | vhdl->set_signal ("sig_COUT_ALU",1); |
---|
64 | |
---|
65 | vhdl->set_signal ("sig_RES_MOVE",_param->_size_general_data); |
---|
66 | vhdl->set_signal ("sig_CMOV",_param->_size_general_data); |
---|
67 | vhdl->set_signal ("sig_MOVHI",_param->_size_general_data); |
---|
68 | |
---|
69 | vhdl->set_signal ("sig_RES_BRANCH",_param->_size_general_data); |
---|
70 | vhdl->set_signal ("sig_ADDR_BRANCH",_param->_size_instruction_address); |
---|
71 | vhdl->set_signal ("sig_NOSQ_BRANCH",1); |
---|
72 | |
---|
73 | vhdl->set_signal ("sig_RES_SHIFTER",_param->_size_general_data); |
---|
74 | |
---|
75 | vhdl->set_signal ("sig_EXT_BYTE_S",_param->_size_general_data); |
---|
76 | vhdl->set_signal ("sig_EXT_BYTE_Z",_param->_size_general_data); |
---|
77 | vhdl->set_signal ("sig_EXT_HALF_WORD_S",_param->_size_general_data); |
---|
78 | vhdl->set_signal ("sig_EXT_HALF_WORD_Z",_param->_size_general_data); |
---|
79 | vhdl->set_signal ("sig_EXT_WORD_S",_param->_size_general_data); |
---|
80 | vhdl->set_signal ("sig_EXT_WORD_Z",_param->_size_general_data); |
---|
81 | vhdl->set_signal ("sig_EXT_S",_param->_size_general_data); |
---|
82 | vhdl->set_signal ("sig_EXT_Z",_param->_size_general_data); |
---|
83 | vhdl->set_signal ("sig_RES_EXTEND",_param->_size_general_data); |
---|
84 | |
---|
85 | vhdl->set_signal ("sig_FF1",log2(_param->_size_general_data)+1); |
---|
86 | vhdl->set_signal ("sig_FL1",log2(_param->_size_general_data)+1); |
---|
87 | vhdl->set_signal ("sig_RES_FIND",_param->_size_general_data); |
---|
88 | |
---|
89 | vhdl->set_signal ("sig_SPR_IS_HERE",1); |
---|
90 | vhdl->set_signal ("sig_MFSPR",_param->_size_spr); |
---|
91 | vhdl->set_signal ("sig_MTSPR",_param->_size_spr); |
---|
92 | |
---|
93 | vhdl->set_signal ("sig_RES_SPECIAL",_param->_size_general_data); |
---|
94 | |
---|
95 | |
---|
96 | vhdl->set_signal ("sig_EXECUTE_OUT_VAL", 1); |
---|
97 | vhdl->set_signal ("sig_EXECUTE_OUT_UPDATE", 1); |
---|
98 | |
---|
99 | vhdl->set_signal ("reg_BUSY_OUT",1); |
---|
100 | |
---|
101 | if(_param->_have_port_context_id){ |
---|
102 | vhdl->set_signal ("reg_EXECUTE_OUT_CONTEXT_ID", _param->_size_context_id); |
---|
103 | vhdl->set_signal ("sig_EXECUTE_OUT_CONTEXT_ID", _param->_size_context_id);} |
---|
104 | if(_param->_have_port_front_end_id){ |
---|
105 | vhdl->set_signal ("reg_EXECUTE_OUT_FRONT_END_ID", _param->_size_front_end_id); |
---|
106 | vhdl->set_signal ("sig_EXECUTE_OUT_FRONT_END_ID", _param->_size_front_end_id);} |
---|
107 | if(_param->_have_port_ooo_engine_id){ |
---|
108 | vhdl->set_signal ("reg_EXECUTE_OUT_OOO_ENGINE_ID", _param->_size_ooo_engine_id); |
---|
109 | vhdl->set_signal ("sig_EXECUTE_OUT_OOO_ENGINE_ID", _param->_size_ooo_engine_id);} |
---|
110 | if(_param->_have_port_rob_ptr){ |
---|
111 | vhdl->set_signal ("reg_EXECUTE_OUT_PACKET_ID", _param->_size_rob_ptr); |
---|
112 | vhdl->set_signal ("sig_EXECUTE_OUT_PACKET_ID", _param->_size_rob_ptr);} |
---|
113 | vhdl->set_signal ("reg_EXECUTE_OUT_WRITE_RD", 1); |
---|
114 | vhdl->set_signal ("sig_EXECUTE_OUT_WRITE_RD", 1); |
---|
115 | vhdl->set_signal ("reg_EXECUTE_OUT_NUM_REG_RD", _param->_size_general_register); |
---|
116 | vhdl->set_signal ("sig_EXECUTE_OUT_NUM_REG_RD", _param->_size_general_register); |
---|
117 | vhdl->set_signal ("reg_EXECUTE_OUT_DATA_RD", _param->_size_general_data); |
---|
118 | vhdl->set_signal ("sig_EXECUTE_OUT_DATA_RD", _param->_size_general_data); |
---|
119 | vhdl->set_signal ("reg_EXECUTE_OUT_WRITE_RE", 1); |
---|
120 | vhdl->set_signal ("sig_EXECUTE_OUT_WRITE_RE", 1); |
---|
121 | vhdl->set_signal ("reg_EXECUTE_OUT_NUM_REG_RE", _param->_size_special_register); |
---|
122 | vhdl->set_signal ("sig_EXECUTE_OUT_NUM_REG_RE", _param->_size_special_register); |
---|
123 | vhdl->set_signal ("reg_EXECUTE_OUT_DATA_RE", _param->_size_special_data); |
---|
124 | vhdl->set_signal ("sig_EXECUTE_OUT_DATA_RE", _param->_size_special_data); |
---|
125 | vhdl->set_signal ("reg_EXECUTE_OUT_EXCEPTION", _param->_size_exception); |
---|
126 | vhdl->set_signal ("sig_EXECUTE_OUT_EXCEPTION", _param->_size_exception); |
---|
127 | vhdl->set_signal ("reg_EXECUTE_OUT_NO_SEQUENCE", 1); |
---|
128 | vhdl->set_signal ("sig_EXECUTE_OUT_NO_SEQUENCE", 1); |
---|
129 | vhdl->set_signal ("reg_EXECUTE_OUT_ADDRESS", _param->_size_instruction_address); |
---|
130 | vhdl->set_signal ("sig_EXECUTE_OUT_ADDRESS", _param->_size_instruction_address); |
---|
131 | |
---|
132 | vhdl->set_type ("Tmac","array ("+toString(_param->_nb_context)+" downto 0) of "+std_logic(_param->_size_spr)); |
---|
133 | vhdl->set_signal ("reg_MACLO ", "Tmac"); |
---|
134 | vhdl->set_signal ("reg_MACHI ", "Tmac"); |
---|
135 | |
---|
136 | log_printf(FUNC,Functionnal_unit,FUNCTION,"End"); |
---|
137 | }; |
---|
138 | |
---|
139 | }; // end namespace functionnal_unit |
---|
140 | }; // end namespace execute_unit |
---|
141 | }; // end namespace multi_execute_unit |
---|
142 | }; // end namespace execute_loop |
---|
143 | }; // end namespace multi_execute_loop |
---|
144 | }; // end namespace core |
---|
145 | |
---|
146 | }; // end namespace behavioural |
---|
147 | }; // end namespace morpheo |
---|
148 | #endif |
---|