# HG changeset patch # User sohan # Date 1331658316 -3600 # Node ID 29981612638fc93c196b01a4a1407dc578768d6e # Parent 4a758d3877d7fbb527f919edaa4c70c455db3083 Netlist Updated with different Context Unit activities diff -r 4a758d3877d7 -r 29981612638f LPGPUArchitecture_Netlistcreator.c --- a/LPGPUArchitecture_Netlistcreator.c Wed Mar 07 14:41:54 2012 -0800 +++ b/LPGPUArchitecture_Netlistcreator.c Tue Mar 13 18:05:16 2012 +0100 @@ -41,11 +41,20 @@ netlist->numElems = numElems; netlist->elems = elems; //numActivityTypes will change as we add more Elements - netlist->numTriggerTypes = 3; - netlist->triggerTypes = malloc(netlist->numTriggerTypes*sizeof(HWSimTriggerType*)); - netlist->triggerTypes[CONTEXT_SCHEDULER_TYPE] = createContextSchedulerActivityType(); - netlist->triggerTypes[FSM_STATE_UPDATE_TYPE] = createFsmUpdateActivityType(); - netlist->triggerTypes[INSTRUCTION_FETCH_TYPE] = createInstructionFetchActivityType(); + netlist->numActivityTypes = 7; + + netlist->activityTypes = malloc(netlist->numActivityTypes*sizeof(HWSimActivityType*)); + netlist->activityTypes[RESET] = createContextSchedulerActivityType(); + netlist->activityTypes[RESET] = createInstructionFetchActivityType(); + netlist->activityTypes[FSM_UPDATE_NEW_INSTR] = createFsmUpdateIFActivityType(); + netlist->activityTypes[FSM_UPDATE_MSGFROM_DECODE] = createFsmUpdateDecActivityType(); + netlist->activityTypes[ FSM_UPDATE_MSGFROM_REG] = createFsmUpdateRegActivityType(); + netlist->activityTypes[FSM_UPDATE_MSGFROM_WB] = createFsmUpdateWbActivityType(); + netlist->activityTypes[FSM_UPDATE_MSGINLDST] = createFsmUpdateInLdStActivityType(); + netlist->activityTypes[FSM_UPDATE_MSGINSTRDONE] = createFsmUpdateInstrDoneActivityType(); + netlist->activityTypes[FSM_UPDATE_LDST_DONE] = createFsmUpdateLdDtdoneActivityType(); + + elems[0] = createContextUnitElem( netlist ); //uses info from netlist //on one of the elems, make reset trigger an action @@ -80,7 +89,7 @@ elemState = malloc( sizeof(ContextUnitState) ); elemState->animatorContexts = malloc(numContexts * sizeof(AnimatorContext)); - CU->elemState = elemState; + (ContextUnitState *)CU->elemState = elemState; CU->timingState = NULL; //numInPorts may change with change in Design @@ -102,23 +111,31 @@ // the same structure as the circuit. In the circuit, each input would // have independent access to the FSM state-bits, and would // independently update the state, using gates separate from the rest. - CU->inPorts[RESET].triggerType = netlist->triggerTypes[RESET_CTXT_UNIT]; //reset port - CU->inPorts[INSTR_FETCHED].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; - CU->inPorts[NEWPC_1].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; - CU->inPorts[NEWPC_2].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; - CU->inPorts[IN_LDST].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; - CU->inPorts[NEWPC_3].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; - CU->inPorts[DONE_WITH_PIPE].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; - CU->inPorts[LDST_DONE].triggerType = netlist->triggerTypes[FSM_STATE_UPDATE_TYPE]; + CU->inPorts[0].triggerType = netlist->activityTypes[RESET_CTXT_UNIT]; //reset port + CU->inPorts[INSTR_FETCHED].triggerType = netlist->activityTypes[FSM_UPDATE_NEW_INSTR]; + CU->inPorts[NEWPC_1].triggerType = netlist->activityTypes[FSM_UPDATE_MSGFROM_DECODE]; + CU->inPorts[NEWPC_2].triggerType = netlist->activityTypes[FSM_UPDATE_MSGFROM_REG]; + CU->inPorts[NEWPC_3].triggerType = netlist->activityTypes[FSM_UPDATE_MSGFROM_WB]; + CU->inPorts[IN_LDST].triggerType = netlist->activityTypes[FSM_UPDATE_MSGINLDST]; + CU->inPorts[DONE_WITH_PIPE].triggerType = netlist->activityTypes[FSM_UPDATE_MSGINSTRDONE]; + CU->inPorts[LDST_DONE].triggerType = netlist->activityTypes[FSM_UPDATE_LDST_DONE]; } -HWSimTriggerType * +HWSimActivityType * createContextSchedulerActivityType() - { HWSimTriggerType *contextSchedulerActivityType; - contextSchedulerActivityType = malloc( sizeof(HWSimTriggerType) ); + { HWSimActivityType *contextSchedulerActivityType; + contextSchedulerActivityType = malloc( sizeof(HWSimActivityType) ); contextSchedulerActivityType->behaviorFn = &contextUnitElem_SchedulerActivity_behavior; contextSchedulerActivityType->timingFn = &contextUnitElem_SchedulerActivity_timing; return contextSchedulerActivityType; } +HWSimActivityType * +createInstructionFetchActivityType() + { HWSimActivityType *fsmUpdateActivityType; + fsmUpdateActivityType = malloc( sizeof(HWSimActivityType) ); + fsmUpdateActivityType->behaviorFn = &contextUnitElem_FetchInstrActivity_behavior; + fsmUpdateActivityType->timingFn = &contextUnitElem_FetchInstrActivity_timing; + return fsmUpdateActivityType; + } \ No newline at end of file