Ignore:
Timestamp:
Jan 16, 2009, 5:55:32 PM (15 years ago)
Author:
moulu
Message:

1) write queue vhdl
2) bug fix : in generic queue

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_vhdl_declaration.cpp

    r81 r103  
    1 #ifdef VHDL
     1 #ifdef VHDL
    22/*
    33 * $Id$
     
    2424  {
    2525    log_printf(FUNC,Write_queue,FUNCTION,"Begin");
     26
     27    vhdl->set_alias  ("sig_QUEUE_INSERT_VAL     ",1," in_WRITE_QUEUE_IN_VAL",std_logic_range(1));
     28    vhdl->set_alias  ("sig_QUEUE_INSERT_ACK     ",1,"out_WRITE_QUEUE_IN_ACK",std_logic_range(1));
     29    vhdl->set_signal ("sig_QUEUE_INSERT_DATA    ",_param->_size_internal_queue);
     30    vhdl->set_signal ("sig_QUEUE_RETIRE_DATA    ",_param->_size_internal_queue);
     31    vhdl->set_signal ("sig_QUEUE_RETIRE_VAL     ",1);
     32    vhdl->set_signal ("sig_QUEUE_RETIRE_ACK     ",1);
     33    for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
     34      {
     35        vhdl->set_signal ("sig_QUEUE_SLOT_"+toString(i)+"_VAL",1);
     36        vhdl->set_signal ("sig_QUEUE_SLOT_"+toString(i)+"_DATA",_param->_size_internal_queue);
     37      }
     38    for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
     39      {
     40        vhdl->set_signal ("sig_BYPASS_WRITE_"+toString(i)+"_GPR_VAL",1);
     41        vhdl->set_signal ("sig_BYPASS_WRITE_"+toString(i)+"_SPR_VAL",1);
     42      }
     43
     44    vhdl->set_signal ("sig_GPR_WRITE_0_VAL",1);
     45    vhdl->set_signal ("sig_SPR_WRITE_0_VAL",1);
     46    vhdl->set_signal ("sig_DELETE_QUEUE_FRONT",1);
     47    vhdl->set_signal ("sig_WRITE_QUEUE_OUT_VAL",1);
     48    vhdl->set_signal ("reg_GPR_WRITE",1);
     49    vhdl->set_signal ("reg_SPR_WRITE",1);
     50    vhdl->set_signal ("sig_GPR_WRITE",1);
     51    vhdl->set_signal ("sig_SPR_WRITE",1);
     52    vhdl->set_signal ("reg_UPDATE",1);
     53
     54    uint32_t min = 0;
     55    uint32_t max, size;
     56    uint32_t min_ooo, max_ooo;
     57    uint32_t pos_write_rd, min_gpr_num_reg, max_gpr_num_reg, min_gpr_data, max_gpr_data;
     58    uint32_t pos_write_re, min_spr_num_reg, max_spr_num_reg, min_spr_data, max_spr_data;
     59
     60    if(_param->_have_port_context_id   )
     61      {
     62        size = _param->_size_context_id;
     63        max = min-1+size;
     64        vhdl->set_alias ("sig_WRITE_QUEUE_OUT_CONTEXT_ID           ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     65        min = max+1;
     66      }
     67    if(_param->_have_port_front_end_id   )
     68      {
     69        size = _param->_size_front_end_id;
     70        max = min-1+size;
     71        vhdl->set_alias ("sig_WRITE_QUEUE_OUT_FRONT_END_ID         ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     72        min = max+1;
     73      }
     74    if(_param->_have_port_ooo_engine_id   )
     75      {
     76        size = _param->_size_ooo_engine_id;
     77        max = min-1+size;
     78        vhdl->set_alias ("sig_WRITE_QUEUE_OUT_OOO_ENGINE_ID        ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     79        vhdl->set_alias ("sig_GPR_WRITE_0_OOO_ENGINE_ID        ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     80        vhdl->set_alias ("sig_SPR_WRITE_0_OOO_ENGINE_ID        ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     81        min_ooo = min;
     82        max_ooo = max;
     83        min = max+1;
     84      }
     85    if(_param->_have_port_rob_ptr)
     86      {
     87        size = _param->_size_rob_ptr;
     88        max = min-1+size;
     89        vhdl->set_alias ("sig_WRITE_QUEUE_OUT_PACKET_ID            ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     90        min = max+1;
     91      }
     92
     93    size = 1;
     94    max = min-1+size;
     95    vhdl->set_alias ("sig_WRITE_RD                         ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     96    pos_write_rd = max;
     97    min = max+1;
     98
     99    size = _param->_size_general_register;
     100    max = min-1+size;
     101    vhdl->set_alias ("sig_GPR_WRITE_0_NUM_REG                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     102    min_gpr_num_reg = min;
     103    max_gpr_num_reg = max;
     104    min = max+1;
     105
     106    size = _param->_size_general_data;
     107    max = min-1+size;
     108    vhdl->set_alias ("sig_GPR_WRITE_0_DATA                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     109    vhdl->set_alias ("sig_WRITE_QUEUE_OUT_DATA                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     110    min_gpr_data = min;
     111    max_gpr_data = max;
     112    min = max+1;
     113
     114    size = 1;
     115    max = min-1+size;
     116    vhdl->set_alias ("sig_WRITE_RE                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     117    pos_write_re = max;
     118    min = max+1;
     119
     120    size = _param->_size_special_register;
     121    max = min-1+size;
     122    vhdl->set_alias ("sig_SPR_WRITE_0_NUM_REG                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     123    min_spr_num_reg = min;
     124    max_spr_num_reg = max;
     125    min = max+1;
     126
     127    size = _param->_size_special_data;
     128    max = min-1+size;
     129    vhdl->set_alias ("sig_SPR_WRITE_0_DATA                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     130    vhdl->set_alias ("sig_WRITE_QUEUE_OUT_FLAGS                 ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     131    min_spr_data = min;
     132    max_spr_data = max;
     133    min = max+1;
     134
     135    size = _param->_size_exception;   
     136    max = min-1+size;
     137    vhdl->set_alias ("sig_WRITE_QUEUE_OUT_EXCEPTION            ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     138    min = max+1;
     139
     140    size = 1;
     141    max = min-1+size;
     142    vhdl->set_alias ("sig_WRITE_QUEUE_OUT_NO_SEQUENCE          ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     143    min = max+1;
     144
     145    size = _param->_size_instruction_address;
     146    max = min-1+size;
     147    vhdl->set_alias ("sig_WRITE_QUEUE_OUT_ADDRESS              ",std_logic(size),"sig_QUEUE_RETIRE_DATA",std_logic_range(_param->_size_internal_queue,max,min));
     148    min = max+1;
     149
     150    for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
     151      {
     152        if(_param->_have_port_ooo_engine_id)
     153        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_OOO_ENGINE_ID",std_logic(_param->_size_ooo_engine_id),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_ooo,min_ooo));
     154        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_GPR_NUM_REG",std_logic(_param->_size_general_register),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_gpr_num_reg,min_gpr_num_reg));
     155        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_GPR_DATA",std_logic(_param->_size_general_data),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_gpr_data,min_gpr_data));
     156        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_SPR_NUM_REG",std_logic(_param->_size_special_register),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_spr_num_reg,min_spr_num_reg));
     157        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_SPR_DATA",std_logic(_param->_size_special_data),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,max_spr_data,min_spr_data));
     158
     159        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_WRITE_RD",std_logic(1),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,pos_write_rd,pos_write_rd));
     160        vhdl->set_alias ("sig_BYPASS_WRITE_"+toString(i)+"_WRITE_RE",std_logic(1),"sig_QUEUE_SLOT_"+toString(i)+"_DATA",std_logic_range(_param->_size_internal_queue,pos_write_re,pos_write_re));
     161      }
     162
    26163    log_printf(FUNC,Write_queue,FUNCTION,"End");
    27164  };
Note: See TracChangeset for help on using the changeset viewer.