Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > HWSim > HWSim__LPGPU_Arch__HWDef
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 +
