- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters.cpp
r88 r112 29 29 _size_data_completion ((carry != external_completion)?0:((_shift_value==0)?size_data:_shift_value)), 30 30 _type_completion_bool (type_completion_bool), 31 32 _size_shift (static_cast<uint32_t>(ceil(log2(_size_data)))), 31 33 32 34 _internal_direction ((direction == internal_right_shift)?_right :_left ), -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Shifter/include/Shifter.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 33 34 , IN 34 35 , SOUTH 35 , "Generalist interface"36 , _("Generalist interface") 36 37 #endif 37 38 ); … … 43 44 44 45 { 45 // Interface "shifter" 46 in_SHIFTER_DATA = new SC_IN (Tdata_t) * [_param->_nb_port]; 46 ALLOC1_INTERFACE_BEGIN("shifter", IN, SOUTH,_("Generalist interface"),_param->_nb_port); 47 48 ALLOC1_SIGNAL_IN ( in_SHIFTER_DATA ,"data" ,Tdata_t ,_param->_size_data); 47 49 if (_param->_shift_value == 0) 48 in_SHIFTER_SHIFT = new SC_IN (Tshift_t) * [_param->_nb_port]; 49 if (_param->_direction == external_direction) 50 in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param->_nb_port]; 51 if (_param->_rotate == external_rotate) 52 in_SHIFTER_TYPE = new SC_IN (Ttype_t) * [_param->_nb_port]; 53 if (_param->_carry == external_carry) 54 in_SHIFTER_CARRY = new SC_IN (Tcarry_t) * [_param->_nb_port]; 55 if (_param->_carry == external_completion) 50 ALLOC1_SIGNAL_IN ( in_SHIFTER_SHIFT ,"shift" ,Tshift_t ,_param->_size_shift); 51 if (_param->_direction == external_direction) 52 ALLOC1_SIGNAL_IN ( in_SHIFTER_DIRECTION ,"direction" ,Tdirection_t,1); 53 if (_param->_rotate == external_rotate) 54 ALLOC1_SIGNAL_IN ( in_SHIFTER_TYPE ,"type" ,Ttype_t ,1); 55 if (_param->_carry == external_carry) 56 ALLOC1_SIGNAL_IN ( in_SHIFTER_CARRY ,"carry" ,Tcarry_t ,1); 57 if (_param->_carry == external_completion) 58 { 56 59 if (_param->_type_completion_bool == true) 57 in_SHIFTER_CARRY_IN = new SC_IN (Tcontrol_t) * [_param->_nb_port]; 60 { 61 ALLOC1_SIGNAL_IN ( in_SHIFTER_CARRY_IN ,"carry_in" ,Tcontrol_t ,1); 62 } 58 63 else 59 in_SHIFTER_COMPLETION= new SC_IN (Tdata_t) * [_param->_nb_port]; 60 out_SHIFTER_DATA = new SC_OUT(Tdata_t) * [_param->_nb_port]; 64 { 65 ALLOC1_SIGNAL_IN ( in_SHIFTER_COMPLETION ,"completion",Tdata_t ,_param->_size_data_completion); 66 } 67 } 68 ALLOC1_SIGNAL_OUT(out_SHIFTER_DATA ,"data" ,Tdata_t ,_param->_size_data); 61 69 62 for (uint32_t i=0; i<_param->_nb_port; i++) 63 { 64 Interface_fifo * interface = _interfaces->set_interface("shifter_"+toString(i) 65 #ifdef POSITION 66 , IN 67 , SOUTH 68 , "Generalist interface" 69 #endif 70 ); 71 72 in_SHIFTER_DATA [i] = interface->set_signal_in <Tdata_t > ("data" ,_param->_size_data); 73 if (_param->_shift_value == 0) 74 in_SHIFTER_SHIFT [i] = interface->set_signal_in <Tshift_t > ("shift" ,static_cast<uint32_t>(ceil(log2(_param->_size_data)))); 75 if (_param->_direction == external_direction) 76 in_SHIFTER_DIRECTION [i] = interface->set_signal_in <Tdirection_t> ("direction" ,1); 77 if (_param->_rotate == external_rotate) 78 in_SHIFTER_TYPE [i] = interface->set_signal_in <Ttype_t > ("type" ,1); 79 if (_param->_carry == external_carry) 80 in_SHIFTER_CARRY [i] = interface->set_signal_in <Tcarry_t > ("carry" ,1); 81 if (_param->_carry == external_completion) 82 if (_param->_type_completion_bool == true) 83 in_SHIFTER_CARRY_IN [i] = interface->set_signal_in <Tcontrol_t > ("carry_in" ,1); 84 else 85 in_SHIFTER_COMPLETION [i] = interface->set_signal_in <Tdata_t > ("completion",_param->_size_data_completion); 86 out_SHIFTER_DATA [i] = interface->set_signal_out <Tdata_t > ("data" ,_param->_size_data); 87 } 70 ALLOC1_INTERFACE_END(_param->_nb_port); 88 71 } 89 72 90 73 #ifdef POSITION 91 74 if (usage_is_set(_usage,USE_POSITION)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Shifter/include/Shifter.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 19 20 { 20 21 #if (defined(STATISTICS) || defined (VHDL_TESTBENCH)) 21 delete in_CLOCK;22 delete in_CLOCK; 22 23 #endif 23 24 24 delete [] in_SHIFTER_DATA ; 25 if (_param->_shift_value == 0) 26 delete [] in_SHIFTER_SHIFT ; 27 if (_param->_direction == external_direction ) 28 delete [] in_SHIFTER_DIRECTION ; 29 if (_param->_rotate == external_rotate ) 30 delete [] in_SHIFTER_TYPE ; 31 if (_param->_carry == external_carry ) 32 delete [] in_SHIFTER_CARRY ; 33 if (_param->_carry == external_completion) 34 if (_param->_type_completion_bool == true) 35 delete [] in_SHIFTER_CARRY_IN ; 36 else 37 delete [] in_SHIFTER_COMPLETION; 38 delete [] out_SHIFTER_DATA ; 25 DELETE1_SIGNAL( in_SHIFTER_DATA ,_param->_nb_port,_param->_size_data); 26 if (_param->_shift_value == 0) 27 DELETE1_SIGNAL( in_SHIFTER_SHIFT ,_param->_nb_port,_param->_size_shift); 28 if (_param->_direction == external_direction) 29 DELETE1_SIGNAL( in_SHIFTER_DIRECTION ,_param->_nb_port,1); 30 if (_param->_rotate == external_rotate) 31 DELETE1_SIGNAL( in_SHIFTER_TYPE ,_param->_nb_port,1); 32 if (_param->_carry == external_carry) 33 DELETE1_SIGNAL( in_SHIFTER_CARRY ,_param->_nb_port,1); 34 if (_param->_carry == external_completion) 35 { 36 if (_param->_type_completion_bool == true) 37 { 38 DELETE1_SIGNAL( in_SHIFTER_CARRY_IN ,_param->_nb_port,1); 39 } 40 else 41 { 42 DELETE1_SIGNAL( in_SHIFTER_COMPLETION ,_param->_nb_port,_param->_size_data_completion); 43 } 44 } 45 DELETE1_SIGNAL(out_SHIFTER_DATA ,_param->_nb_port,_param->_size_data); 39 46 } 40 47 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_declaration.cpp
r81 r112 17 17 void Shifter::vhdl_declaration (Vhdl * & vhdl) 18 18 { 19 uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param ._size_data)));19 uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param->_size_data))); 20 20 21 21 vhdl->set_constant("cst_is_direction_left ",1,_left ); … … 25 25 vhdl->set_constant("cst_is_carry_arithmetic",1,_arithmetic); 26 26 vhdl->set_constant("cst_is_carry_logic ",1,_logic ); 27 vhdl->set_constant("cst_completion ",_param ._size_data,"(others => '1')");27 vhdl->set_constant("cst_completion ",_param->_size_data,"(others => '1')"); 28 28 29 for (uint32_t i=0; i<_param ._nb_port; i++)29 for (uint32_t i=0; i<_param->_nb_port; i++) 30 30 { 31 if (_param ._shift_value != 0)32 vhdl->set_constant("shift_"+toString(i),log2_size_data, _param ._shift_value);31 if (_param->_shift_value != 0) 32 vhdl->set_constant("shift_"+toString(i),log2_size_data, _param->_shift_value); 33 33 else 34 34 vhdl->set_alias ("shift_"+toString(i),std_logic(log2_size_data), "in_SHIFTER_"+toString(i)+"_SHIFT",std_logic_range(log2_size_data)); 35 35 36 if (_param ._size_data_completion > 0)36 if (_param->_size_data_completion > 0) 37 37 { 38 vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param ._size_data);39 vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param ._size_data);40 vhdl->set_signal ("mask_completion_left_"+toString(i)+" ",_param ._size_data);41 vhdl->set_signal ("mask_completion_right_"+toString(i)+" ",_param ._size_data);38 vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param->_size_data); 39 vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param->_size_data); 40 vhdl->set_signal ("mask_completion_left_"+toString(i)+" ",_param->_size_data); 41 vhdl->set_signal ("mask_completion_right_"+toString(i)+" ",_param->_size_data); 42 42 } 43 43 44 44 //-----[ Shift logic Left ]-------------------------------------------- 45 if (_param ._have_shift_logic_left)46 vhdl->set_signal ("shift_logic_left_"+toString(i)+" ",_param ._size_data);45 if (_param->_have_shift_logic_left) 46 vhdl->set_signal ("shift_logic_left_"+toString(i)+" ",_param->_size_data); 47 47 48 48 //-----[ Shift logic Right ]------------------------------------------- 49 if (_param ._have_shift_logic_right)50 vhdl->set_signal ("shift_logic_right_"+toString(i)+" ",_param ._size_data);49 if (_param->_have_shift_logic_right) 50 vhdl->set_signal ("shift_logic_right_"+toString(i)+" ",_param->_size_data); 51 51 52 52 //-----[ Shift arithmetic Left ]--------------------------------------- 53 if (_param ._have_shift_arithmetic_left)54 vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param ._size_data);53 if (_param->_have_shift_arithmetic_left) 54 vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param->_size_data); 55 55 56 56 //-----[ Shift arithmetic Right ]-------------------------------------- 57 if (_param ._have_shift_arithmetic_right)58 vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param ._size_data);57 if (_param->_have_shift_arithmetic_right) 58 vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param->_size_data); 59 59 60 60 //-----[ Rotate Left ]------------------------------------------------- 61 if (_param ._have_rotate_left)62 vhdl->set_signal ("rotate_left_"+toString(i)+" ",_param ._size_data);61 if (_param->_have_rotate_left) 62 vhdl->set_signal ("rotate_left_"+toString(i)+" ",_param->_size_data); 63 63 64 64 //-----[ Rotate Right ]------------------------------------------------ 65 if (_param ._have_rotate_right)66 vhdl->set_signal ("rotate_right_"+toString(i)+" ",_param ._size_data);65 if (_param->_have_rotate_right) 66 vhdl->set_signal ("rotate_right_"+toString(i)+" ",_param->_size_data); 67 67 } 68 68 };
Note: See TracChangeset
for help on using the changeset viewer.