Ignore:
Timestamp:
Apr 30, 2009, 3:51:41 PM (15 years ago)
Author:
moulu
Message:

1) added a generic multiplier (systemC isn't working with 8bits)
2) added a partial functionnal unit vhdl.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_vhdl_declaration.cpp

    r81 r116  
    2424  {
    2525    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
    26136    log_printf(FUNC,Functionnal_unit,FUNCTION,"End");
    27137  };
Note: See TracChangeset for help on using the changeset viewer.