Ignore:
Timestamp:
Oct 2, 2013, 4:26:12 PM (11 years ago)
Author:
haoliu
Message:

RWT - Bug fixed in vci_mem_cache:
The alloc_trt fsm is modified for respecting the round robin scheduling

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/RWT/modules/vci_mem_cache/caba/source/src/vci_mem_cache.cpp

    r526 r539  
    304304  "ALLOC_TRT_XRAM_RSP",
    305305  "ALLOC_TRT_IXR_RSP",
    306   "ALLOC_TRT_CLEANUP"
     306  "ALLOC_TRT_CLEANUP",
    307307  "ALLOC_TRT_IXR_CMD",
    308308  "ALLOC_TRT_CONFIG"
     
    45054505
    45064506        r_xram_rsp_victim_copy      = victim.owner.srcid;
    4507 
    4508 #if L1_MULTI_CACHE
    4509         r_xram_rsp_victim_copy_cache= victim.owner.cache_id;
    4510 #endif
    45114507        r_xram_rsp_victim_coherent  = victim.cache_coherent;
    45124508        r_xram_rsp_victim_copy_inst = victim.owner.inst;
     
    45294525          << " way = " << std::dec << way
    45304526          << " / set = " << set
     4527          << "/ count = " << victim.count
    45314528          << " / inval_required = " << inval << std::endl;
    45324529#endif
     
    46944691          << " / owner_ins = " << std::dec << entry.owner.inst
    46954692          << " / count = " << entry.count
     4693          << " / nline = " << r_xram_rsp_trt_buf.nline
    46964694          << " / is_cnt = " << entry.is_cnt << std::endl;
    46974695if(r_xram_rsp_victim_inval.read())
     
    85908588          r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
    85918589       
     8590        else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
     8591          r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
     8592
    85928593        else if (r_cleanup_fsm.read() == CLEANUP_IXR_REQ)
    85938594          r_alloc_trt_fsm = ALLOC_TRT_CLEANUP;
    8594 
    8595         else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
    8596           r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
    85978595
    85988596        else if(r_read_fsm.read() == READ_TRT_LOCK)
     
    86288626          r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
    86298627       
     8628        else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
     8629          r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
     8630
    86308631        else if (r_cleanup_fsm.read() == CLEANUP_IXR_REQ)
    86318632          r_alloc_trt_fsm = ALLOC_TRT_CLEANUP;
    86328633
    8633         else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
    8634           r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
    8635  
    86368634        else if(r_read_fsm.read() == READ_TRT_LOCK)
    86378635          r_alloc_trt_fsm = ALLOC_TRT_READ;
     
    86648662                  r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
    86658663
     8664              else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
     8665                  r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
     8666
    86668667              else if (r_cleanup_fsm.read() == CLEANUP_IXR_REQ)
    86678668                  r_alloc_trt_fsm = ALLOC_TRT_CLEANUP;
    8668 
    8669 
    8670               else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
    8671                   r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
    86728669
    86738670              else if(r_read_fsm.read() == READ_TRT_LOCK)
     
    86958692            (r_ixr_rsp_fsm.read() == IXR_RSP_TRT_READ))
    86968693          r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
     8694
     8695         else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
     8696          r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
    86978697       
    86988698        else if (r_cleanup_fsm.read() == CLEANUP_IXR_REQ)
     
    87108710          r_alloc_trt_fsm = ALLOC_TRT_CAS;
    87118711
    8712         else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
    8713           r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
    8714  
    87158712        else if((r_ixr_cmd_fsm.read() == IXR_CMD_READ_TRT) or
    87168713               (r_ixr_cmd_fsm.read() == IXR_CMD_WRITE_TRT) or
     
    87698766      break;
    87708767
    8771       ////////////////////////
     8768      //////////////////////
     8769      case ALLOC_TRT_CONFIG:
     8770          if((r_config_fsm.read() != CONFIG_TRT_LOCK) and
     8771             (r_config_fsm.read() != CONFIG_TRT_SET))
     8772          {
     8773              if (r_cleanup_fsm.read() == CLEANUP_IXR_REQ)
     8774                  r_alloc_trt_fsm = ALLOC_TRT_CLEANUP;
     8775
     8776              else if(r_read_fsm.read() == READ_TRT_LOCK)
     8777                  r_alloc_trt_fsm = ALLOC_TRT_READ;
     8778
     8779              else if((r_write_fsm.read() == WRITE_MISS_TRT_LOCK) or
     8780                      (r_write_fsm.read() == WRITE_BC_TRT_LOCK))
     8781                  r_alloc_trt_fsm = ALLOC_TRT_WRITE;
     8782
     8783              else if((r_cas_fsm.read() == CAS_MISS_TRT_LOCK) or
     8784                      (r_cas_fsm.read() == CAS_BC_TRT_LOCK))
     8785                  r_alloc_trt_fsm = ALLOC_TRT_CAS;
     8786
     8787              else if((r_ixr_cmd_fsm.read() == IXR_CMD_READ_TRT) or
     8788                      (r_ixr_cmd_fsm.read() == IXR_CMD_WRITE_TRT) or
     8789                      (r_ixr_cmd_fsm.read() == IXR_CMD_CAS_TRT) or
     8790                      (r_ixr_cmd_fsm.read() == IXR_CMD_XRAM_TRT) or
     8791                      (r_ixr_cmd_fsm.read() == IXR_CMD_CLEANUP_TRT) or
     8792                      (r_ixr_cmd_fsm.read() == IXR_CMD_CONFIG_TRT) )
     8793                  r_alloc_trt_fsm = ALLOC_TRT_IXR_CMD;
     8794
     8795              else if((r_xram_rsp_fsm.read()  == XRAM_RSP_DIR_LOCK) and
     8796                      (r_alloc_dir_fsm.read() == ALLOC_DIR_XRAM_RSP))
     8797                  r_alloc_trt_fsm = ALLOC_TRT_XRAM_RSP;
     8798
     8799              else if((r_ixr_rsp_fsm.read() == IXR_RSP_TRT_ERASE) or
     8800                      (r_ixr_rsp_fsm.read() == IXR_RSP_TRT_READ))
     8801                  r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
     8802          }
     8803          break;
     8804
     8805    ////////////////////////
    87728806    case ALLOC_TRT_CLEANUP:
    87738807      /*ODCCP*///std::cout << "TRT ALLOCATED TO CLEANUP" << std::endl;
     
    87848818                (r_cas_fsm.read() == CAS_BC_TRT_LOCK))
    87858819          r_alloc_trt_fsm = ALLOC_TRT_CAS;
    8786 
    8787         else if((r_xram_rsp_fsm.read()  == XRAM_RSP_DIR_LOCK) and
    8788                 (r_alloc_dir_fsm.read() == ALLOC_DIR_XRAM_RSP))
    8789           r_alloc_trt_fsm = ALLOC_TRT_XRAM_RSP;
    8790 
    8791         else if((r_ixr_rsp_fsm.read() == IXR_RSP_TRT_ERASE) ||
    8792             (r_ixr_rsp_fsm.read() == IXR_RSP_TRT_READ))
    8793           r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
    8794 
    8795         else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
    8796           r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
    87978820
    87988821        else if((r_ixr_cmd_fsm.read() == IXR_CMD_READ_TRT) or
     
    88038826                (r_ixr_cmd_fsm.read() == IXR_CMD_CONFIG_TRT) )
    88048827          r_alloc_trt_fsm = ALLOC_TRT_IXR_CMD;
    8805       }
    8806       break;
    8807       //////////////////////
    8808       case ALLOC_TRT_CONFIG:
    8809           if((r_config_fsm.read() != CONFIG_TRT_LOCK) and
    8810              (r_config_fsm.read() != CONFIG_TRT_SET))
    8811           {
    8812               if(r_read_fsm.read() == READ_TRT_LOCK)
    8813                   r_alloc_trt_fsm = ALLOC_TRT_READ;
    8814 
    8815               else if((r_write_fsm.read() == WRITE_MISS_TRT_LOCK) or
    8816                       (r_write_fsm.read() == WRITE_BC_TRT_LOCK))
    8817                   r_alloc_trt_fsm = ALLOC_TRT_WRITE;
    8818 
    8819               else if((r_cas_fsm.read() == CAS_MISS_TRT_LOCK) or
    8820                       (r_cas_fsm.read() == CAS_BC_TRT_LOCK))
    8821                   r_alloc_trt_fsm = ALLOC_TRT_CAS;
    8822 
    8823               else if((r_ixr_cmd_fsm.read() == IXR_CMD_READ_TRT) or
    8824                       (r_ixr_cmd_fsm.read() == IXR_CMD_WRITE_TRT) or
    8825                       (r_ixr_cmd_fsm.read() == IXR_CMD_CAS_TRT) or
    8826                       (r_ixr_cmd_fsm.read() == IXR_CMD_XRAM_TRT) or
    8827                       (r_ixr_cmd_fsm.read() == IXR_CMD_CLEANUP_TRT) or
    8828                       (r_ixr_cmd_fsm.read() == IXR_CMD_CONFIG_TRT) )
    8829                   r_alloc_trt_fsm = ALLOC_TRT_IXR_CMD;
    8830 
    8831               else if((r_xram_rsp_fsm.read()  == XRAM_RSP_DIR_LOCK) and
    8832                       (r_alloc_dir_fsm.read() == ALLOC_DIR_XRAM_RSP))
    8833                   r_alloc_trt_fsm = ALLOC_TRT_XRAM_RSP;
    8834 
    8835               else if (r_cleanup_fsm.read() == CLEANUP_IXR_REQ)
    8836                   r_alloc_trt_fsm = ALLOC_TRT_CLEANUP;
    8837 
    8838               else if((r_ixr_rsp_fsm.read() == IXR_RSP_TRT_ERASE) or
    8839                       (r_ixr_rsp_fsm.read() == IXR_RSP_TRT_READ))
    8840                   r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
    8841           }
    8842           break;
     8828
     8829        else if((r_xram_rsp_fsm.read()  == XRAM_RSP_DIR_LOCK) and
     8830                (r_alloc_dir_fsm.read() == ALLOC_DIR_XRAM_RSP))
     8831          r_alloc_trt_fsm = ALLOC_TRT_XRAM_RSP;
     8832
     8833        else if((r_ixr_rsp_fsm.read() == IXR_RSP_TRT_ERASE) ||
     8834            (r_ixr_rsp_fsm.read() == IXR_RSP_TRT_READ))
     8835          r_alloc_trt_fsm = ALLOC_TRT_IXR_RSP;
     8836
     8837        else if( r_config_fsm.read() == CONFIG_TRT_LOCK )
     8838          r_alloc_trt_fsm = ALLOC_TRT_CONFIG;
     8839      }
     8840      break;
    88438841
    88448842
Note: See TracChangeset for help on using the changeset viewer.