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