Mercurial > cgi-bin > hgwebdir.cgi > PR > Applications > HWSim > HWSim__LPGPU_Arch__HWDef
changeset 7:29981612638f
Netlist Updated with different Context Unit activities
| author | sohan |
|---|---|
| date | Tue, 13 Mar 2012 18:05:16 +0100 |
| parents | 4a758d3877d7 |
| children | 36fc881c883e |
| files | LPGPUArchitecture_Netlistcreator.c |
| diffstat | 1 files changed, 34 insertions(+), 17 deletions(-) [+] |
line diff
1.1 --- a/LPGPUArchitecture_Netlistcreator.c Wed Mar 07 14:41:54 2012 -0800 1.2 +++ b/LPGPUArchitecture_Netlistcreator.c Tue Mar 13 18:05:16 2012 +0100 1.3 @@ -41,11 +41,20 @@ 1.4 netlist->numElems = numElems; 1.5 netlist->elems = elems; 1.6 //numActivityTypes will change as we add more Elements 1.7 - netlist->numTriggerTypes = 3; 1.8 - netlist->triggerTypes = malloc(netlist->numTriggerTypes*sizeof(HWSimTriggerType*)); 1.9 - netlist->triggerTypes[CONTEXT_SCHEDULER_TYPE] = createContextSchedulerActivityType(); 1.10 - netlist->triggerTypes[FSM_STATE_UPDATE_TYPE] = createFsmUpdateActivityType(); 1.11 - netlist->triggerTypes[INSTRUCTION_FETCH_TYPE] = createInstructionFetchActivityType(); 1.12 + netlist->numActivityTypes = 7; 1.13 + 1.14 + netlist->activityTypes = malloc(netlist->numActivityTypes*sizeof(HWSimActivityType*)); 1.15 + netlist->activityTypes[RESET] = createContextSchedulerActivityType(); 1.16 + netlist->activityTypes[RESET] = createInstructionFetchActivityType(); 1.17 + netlist->activityTypes[FSM_UPDATE_NEW_INSTR] = createFsmUpdateIFActivityType(); 1.18 + netlist->activityTypes[FSM_UPDATE_MSGFROM_DECODE] = createFsmUpdateDecActivityType(); 1.19 + netlist->activityTypes[ FSM_UPDATE_MSGFROM_REG] = createFsmUpdateRegActivityType(); 1.20 + netlist->activityTypes[FSM_UPDATE_MSGFROM_WB] = createFsmUpdateWbActivityType(); 1.21 + netlist->activityTypes[FSM_UPDATE_MSGINLDST] = createFsmUpdateInLdStActivityType(); 1.22 + netlist->activityTypes[FSM_UPDATE_MSGINSTRDONE] = createFsmUpdateInstrDoneActivityType(); 1.23 + netlist->activityTypes[FSM_UPDATE_LDST_DONE] = createFsmUpdateLdDtdoneActivityType(); 1.24 + 1.25 + 1.26 elems[0] = createContextUnitElem( netlist ); //uses info from netlist 1.27 1.28 //on one of the elems, make reset trigger an action 1.29 @@ -80,7 +89,7 @@ 1.30 1.31 elemState = malloc( sizeof(ContextUnitState) ); 1.32 elemState->animatorContexts = malloc(numContexts * sizeof(AnimatorContext)); 1.33 - CU->elemState = elemState; 1.34 + (ContextUnitState *)CU->elemState = elemState; 1.35 CU->timingState = NULL; 1.36 1.37 //numInPorts may change with change in Design 1.38 @@ -102,23 +111,31 @@ 1.39 // the same structure as the circuit. In the circuit, each input would 1.40 // have independent access to the FSM state-bits, and would 1.41 // independently update the state, using gates separate from the rest. 1.42 - CU->inPorts[RESET].triggerType = netlist->triggerTypes[RESET_CTXT_UNIT]; //reset port 1.43 - CU->inPorts[INSTR_FETCHED].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.44 - CU->inPorts[NEWPC_1].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.45 - CU->inPorts[NEWPC_2].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.46 - CU->inPorts[IN_LDST].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.47 - CU->inPorts[NEWPC_3].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.48 - CU->inPorts[DONE_WITH_PIPE].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.49 - CU->inPorts[LDST_DONE].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; 1.50 + CU->inPorts[0].triggerType = netlist->activityTypes[RESET_CTXT_UNIT]; //reset port 1.51 + CU->inPorts[INSTR_FETCHED].triggerType = netlist->activityTypes[FSM_UPDATE_NEW_INSTR]; 1.52 + CU->inPorts[NEWPC_1].triggerType = netlist->activityTypes[FSM_UPDATE_MSGFROM_DECODE]; 1.53 + CU->inPorts[NEWPC_2].triggerType = netlist->activityTypes[FSM_UPDATE_MSGFROM_REG]; 1.54 + CU->inPorts[NEWPC_3].triggerType = netlist->activityTypes[FSM_UPDATE_MSGFROM_WB]; 1.55 + CU->inPorts[IN_LDST].triggerType = netlist->activityTypes[FSM_UPDATE_MSGINLDST]; 1.56 + CU->inPorts[DONE_WITH_PIPE].triggerType = netlist->activityTypes[FSM_UPDATE_MSGINSTRDONE]; 1.57 + CU->inPorts[LDST_DONE].triggerType = netlist->activityTypes[FSM_UPDATE_LDST_DONE]; 1.58 } 1.59 1.60 -HWSimTriggerType * 1.61 +HWSimActivityType * 1.62 createContextSchedulerActivityType() 1.63 - { HWSimTriggerType *contextSchedulerActivityType; 1.64 - contextSchedulerActivityType = malloc( sizeof(HWSimTriggerType) ); 1.65 + { HWSimActivityType *contextSchedulerActivityType; 1.66 + contextSchedulerActivityType = malloc( sizeof(HWSimActivityType) ); 1.67 contextSchedulerActivityType->behaviorFn = &contextUnitElem_SchedulerActivity_behavior; 1.68 contextSchedulerActivityType->timingFn = &contextUnitElem_SchedulerActivity_timing; 1.69 return contextSchedulerActivityType; 1.70 } 1.71 1.72 1.73 +HWSimActivityType * 1.74 +createInstructionFetchActivityType() 1.75 + { HWSimActivityType *fsmUpdateActivityType; 1.76 + fsmUpdateActivityType = malloc( sizeof(HWSimActivityType) ); 1.77 + fsmUpdateActivityType->behaviorFn = &contextUnitElem_FetchInstrActivity_behavior; 1.78 + fsmUpdateActivityType->timingFn = &contextUnitElem_FetchInstrActivity_timing; 1.79 + return fsmUpdateActivityType; 1.80 + } 1.81 \ No newline at end of file
