changeset 8:36fc881c883e

Activities for various inports and Instruction Fetch defined
author sohan
date Tue, 13 Mar 2012 18:07:25 +0100
parents 29981612638f
children a4fc1d735dce
files HWSim__LPGPU_Arch__HWDef/ContextUnitElem_Activities.c
diffstat 1 files changed, 188 insertions(+), 1 deletions(-) [+]
line diff
     1.1 --- a/HWSim__LPGPU_Arch__HWDef/ContextUnitElem_Activities.c	Tue Mar 13 18:05:16 2012 +0100
     1.2 +++ b/HWSim__LPGPU_Arch__HWDef/ContextUnitElem_Activities.c	Tue Mar 13 18:07:25 2012 +0100
     1.3 @@ -55,4 +55,191 @@
     1.4  contextUnitElem_SchedulerActivity_timing( void * dataFromBehaviorFn )
     1.5   {
     1.6     return 10;
     1.7 - }
     1.8 \ No newline at end of file
     1.9 + }
    1.10 +
    1.11 +
    1.12 +void
    1.13 +contextUnitElem_FetchInstrActivity_behavior( void *triggeringMsg, void *elemState )
    1.14 + { 
    1.15 +    ScheduledCtxtForFetch *msgToInstrCache;
    1.16 + 
    1.17 +         DEBUG( dbgHW, "Fetch Instruction activity\n", elemState );
    1.18 +         
    1.19 +   ContextUnitState *state;
    1.20 +   AnimatorContext  *currentCtxt;
    1.21 +   int32             lastFetchedContext;
    1.22 +   
    1.23 +   state = (ContextUnitState *)elemState;
    1.24 +   
    1.25 +   
    1.26 +   lastFetchedContext = state->lastFetchedContext;
    1.27 +   currentCtxt    = state->animatorContexts[lastFetchedContext];
    1.28 +  
    1.29 +   numChecked = 0;
    1.30 +   while( currentCtxt->FSMState.IF.ReadyForIF != true && numChecked < NUM_CONTEXTS )
    1.31 +    { currentCtxt += 1;  //Addr arithmetic advances entire struct
    1.32 +      numChecked  += 1;
    1.33 +    }
    1.34 +   
    1.35 +   msgToInstrCache->PC      = &(currentCtxt->PC);
    1.36 +   msgToInstrCache->ctxtAddr = &(currentCtxt->ctxtAddr);
    1.37 +      //This HWSim command sends the message on the port, and also
    1.38 +   HWSim__send_on_port_w_cont( msgToInstrCache, PORT_TO_PIPE, elemState );
    1.39 + }
    1.40 +
    1.41 +HWSimTimeSpan
    1.42 +contextUnitElem_FetchInstrActivity_timing( void * dataFromBehaviorFn )
    1.43 + {
    1.44 +   return 10;
    1.45 + }
    1.46 +
    1.47 +void 
    1.48 +contextUnitElem_FsmUpdateIFActivity_behavior( void *triggeringMsg, void *elemState )
    1.49 +{
    1.50 +         DEBUG( dbgHW, "FSM Update on Instruction Fetch \n", elemState);
    1.51 +   
    1.52 +   MsgOnPortFromInstrCache *msg;
    1.53 +   msg = (MsgOnPortFromInstrCache *)triggeringMsg;
    1.54 +   AnimatorContext *updateCtxt;
    1.55 +   ContextUnitState *state;
    1.56 +         
    1.57 +   state =(ContextUnitState *)elemState;
    1.58 +   //
    1.59 +   updateCtxt=state->animatorContexts[msg->ctxtAddr]; 
    1.60 +   updateCtxt->instr=msg->Instr;
    1.61 +   updateCtxt->FSMState.PS.ReadyForPipe=true;
    1.62 +      
    1.63 +}
    1.64 +
    1.65 +HWSimTimeSpan
    1.66 +contextUnitElem_FsmUpdatebyIFActivity_timing( void * dataFromBehaviorFn )
    1.67 + {
    1.68 +   return 10;
    1.69 + }
    1.70 +
    1.71 +void 
    1.72 +contextUnitElem_FsmUpdatebyDecActivity_behavior( void *triggeringMsg, void *elemState )
    1.73 +{
    1.74 +         DEBUG( dbgHW, "FSM Update Activity on Msg from Decode stage\n", elemState);
    1.75 +   
    1.76 +   MsgOnPortFromDecStage *msg;
    1.77 +   msg = (MsgOnPortFromDecStage *)triggeringMsg;
    1.78 +   AnimatorContext *updateCtxt;
    1.79 +   ContextUnitState *state;
    1.80 +         
    1.81 +   state =(ContextUnitState *)elemState;
    1.82 +   //
    1.83 +   updateCtxt=state->animatorContexts[msg->ctxtAddr]; 
    1.84 +   updateCtxt->PC=msg->PC;
    1.85 +   updateCtxt->FSMState.IF.ReadyForIF=true;
    1.86 +    
    1.87 +}
    1.88 +
    1.89 +HWSimTimeSpan
    1.90 +contextUnitElem_FsmUpdatebyDecActivity_timing( void * dataFromBehaviorFn )
    1.91 + {
    1.92 +   return 10;
    1.93 + }
    1.94 +
    1.95 +void 
    1.96 +contextUnitElem_FsmUpdatebyRegActivity_behavior( void *triggeringMsg, void *elemState )
    1.97 +{
    1.98 +         DEBUG( dbgHW, "FSM Update Activity on Msg from Register Stage1 \n", elemState);
    1.99 +   
   1.100 +   MsgOnPortFromRegStage *msg;
   1.101 +   msg = (MsgOnPortFromRegStage *)triggeringMsg;
   1.102 +   AnimatorContext *updateCtxt;
   1.103 +   ContextUnitState *state;
   1.104 +         
   1.105 +   state =(ContextUnitState *)elemState;
   1.106 +   //
   1.107 +   updateCtxt=state->animatorContexts[msg->ctxtAddr]; 
   1.108 +   updateCtxt->PC=msg->PC;
   1.109 +   updateCtxt->FSMState.IF.ReadyForIF=true;
   1.110 +    
   1.111 +}
   1.112 +
   1.113 +HWSimTimeSpan
   1.114 +contextUnitElem_FsmUpdatebyRegActivity_timing( void * dataFromBehaviorFn )
   1.115 + {
   1.116 +   return 10;
   1.117 + }
   1.118 +
   1.119 +
   1.120 +void 
   1.121 +contextUnitElem_FsmUpdateWbActivity_behavior( void *triggeringMsg, void *elemState )
   1.122 +{
   1.123 +         DEBUG( dbgHW, "FSM Update Activity on New PC from WB Stage\n", elemState);
   1.124 +   
   1.125 +   MsgOnPortFromWbStage *msg;
   1.126 +   msg = (MsgOnPortFromWbStage *)triggeringMsg;
   1.127 +   AnimatorContext *updateCtxt;
   1.128 +   ContextUnitState *state;
   1.129 +         
   1.130 +   state =(ContextUnitState *)elemState;
   1.131 +   //
   1.132 +   updateCtxt=state->animatorContexts[msg->ctxtAddr]; 
   1.133 +   updateCtxt->PC=msg->PC;
   1.134 +   updateCtxt->FSMState.IF.ReadyForIF=true;
   1.135 +    
   1.136 +}
   1.137 +
   1.138 +
   1.139 +HWSimTimeSpan
   1.140 +contextUnitElem_FsmUpdatebyWbActivity_timing( void * dataFromBehaviorFn )
   1.141 + {
   1.142 +   return 10;
   1.143 + }
   1.144 +
   1.145 +
   1.146 +void 
   1.147 +contextUnitElem_FsmUpdateWBActivity_behavior( void *triggeringMsg, void *elemState )
   1.148 +{
   1.149 +         DEBUG( dbgHW, "FSM Update Activity on InstrInLdSt\n", elemState);
   1.150 +   
   1.151 +   MsgOnPortFromWBStage *msg;
   1.152 +   msg = (MsgOnPortFromWBStage *)triggeringMsg;
   1.153 +   AnimatorContext *updateCtxt;
   1.154 +   ContextUnitState *state;
   1.155 +         
   1.156 +   state =(ContextUnitState *)elemState;
   1.157 +   //
   1.158 +   updateCtxt=state->animatorContexts[msg->ctxtAddr]; 
   1.159 +   updateCtxt->FSMState.LS.InLdSt=msg->InstrInLdst;
   1.160 +      
   1.161 +}
   1.162 +
   1.163 +HWSimTimeSpan
   1.164 +contextUnitElem_FsmUpdatebyWBActivity_timing( void * dataFromBehaviorFn )
   1.165 + {
   1.166 +   return 10;
   1.167 + }
   1.168 +
   1.169 +
   1.170 +void 
   1.171 +contextUnitElem_FsmUpdateWBBActivity_behavior( void *triggeringMsg, void *elemState )
   1.172 +{
   1.173 +         DEBUG( dbgHW, "FSM Update Activity on Instr Done\n", elemState);
   1.174 +   
   1.175 +   MsgOnPortFromWBBStage *msg;
   1.176 +   msg = (MsgOnPortFromWBStage *)triggeringMsg;
   1.177 +   AnimatorContext *updateCtxt;
   1.178 +   ContextUnitState *state;
   1.179 +         
   1.180 +   state =(ContextUnitState *)elemState;
   1.181 +   //
   1.182 +   updateCtxt=state->animatorContexts[msg->ctxtAddr]; 
   1.183 +   updateCtxt->FSMState.IF.ReadyForIF=msg->InstrDone;
   1.184 +      
   1.185 +}
   1.186 +
   1.187 +HWSimTimeSpan
   1.188 +contextUnitElem_FsmUpdatebyWBBActivity_timing( void * dataFromBehaviorFn )
   1.189 + {
   1.190 +   return 10;
   1.191 + }
   1.192 +
   1.193 +
   1.194 +
   1.195 +
   1.196 +