jaga.pj.circuits.fpgaft
Class SimulatorFaultyCircuit

java.lang.Object
  |
  +--jaga.pj.circuits.fpgaft.SimulatorFaultyCircuit
All Implemented Interfaces:
FaultyCircuit, java.io.Serializable, SimulatorCircuit, StateManipulableSimulatorCircuit
Direct Known Subclasses:
SimulatorFaultyCircuitAsynchronous, SimulatorFaultyCircuitOpt

public class SimulatorFaultyCircuit
extends java.lang.Object
implements SimulatorCircuit, FaultyCircuit, java.io.Serializable, StateManipulableSimulatorCircuit

A circuit to be simulated. Includes faults, currently only single stuck at faults are simulated. Must be extended to provide the reconfigure method which will take a BitSet and build a network of SimulatorFaultyDelayLE logic elements of whichever type.

There are two possible runModes: the NORMAL one is same as the normal circuit and faults are introduced by using the set and get methods. The other mode FAULTS_AS_INPUTS allows the fault definitions as the first lines of the inputs array of the run method.

See Also:
Serialized Form

Field Summary
 int FAULTS_AS_INPUTS
           
 int NORMAL
           
 
Fields inherited from interface jaga.pj.circuits.SimulatorCircuit
ELEMENTS, INPUTS, OUTPUTS
 
Constructor Summary
SimulatorFaultyCircuit(CircuitMapping mapping)
           
SimulatorFaultyCircuit(int bitsPerVar, int nrSSAFaults, CircuitMapping mapping)
          Creates new SimulatorCircuit
 
Method Summary
 SimulatorLogicElement[] getElements()
           
 SimulatorLogicElement[][] getInOutEls()
          0 - Inputs, 1 - Outputs, 2 - Elements
 CircuitState getState()
           
 void randomReset()
          Does not affect faults.
 void reconfigure(BitSet genotype)
          Implements this gentoype's phenotype in this circuit.
 void removeFault(int pos)
           
 void removeFault(java.awt.Point fault)
           
 void reset()
          Does not affect faults.
 void resetDelays(java.lang.Object delayDef)
           
 SampleData[] run(SampleData[] inputData)
           
 SampleData[] run(SampleData[] inputData, int startFrom, int endBefore)
          Sends these inputs to the circuit and returns the outputs.
 void setFault(int elNr, int faultID)
          Sets an element to a fault.
 void setFault(java.awt.Point fault)
           
 void setPersistentFaults(int[] pfus, int[] pfvs)
           
 void setPersistentFaults(java.awt.Point[] pfs)
           
 void setRunMode(int rm)
          Sets the runMode to the appropriate mode as defined by constants
 void setState(CircuitState cs)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FAULTS_AS_INPUTS

public final int FAULTS_AS_INPUTS

NORMAL

public final int NORMAL
Constructor Detail

SimulatorFaultyCircuit

public SimulatorFaultyCircuit(CircuitMapping mapping)

SimulatorFaultyCircuit

public SimulatorFaultyCircuit(int bitsPerVar,
                              int nrSSAFaults,
                              CircuitMapping mapping)
Creates new SimulatorCircuit
Method Detail

reconfigure

public void reconfigure(BitSet genotype)
Implements this gentoype's phenotype in this circuit.
Specified by:
reconfigure in interface SimulatorCircuit

run

public SampleData[] run(SampleData[] inputData)
Specified by:
run in interface SimulatorCircuit

run

public SampleData[] run(SampleData[] inputData,
                        int startFrom,
                        int endBefore)
Sends these inputs to the circuit and returns the outputs. The input sample separation is taken into account to sample the outputs at the appropriate frequency.
Parameters:
inputData - The inputs
startFrom - What input data index to start running from
endBefore - What input data index to end running just before

getElements

public SimulatorLogicElement[] getElements()
Specified by:
getElements in interface SimulatorCircuit

reset

public void reset()
Does not affect faults. Just wipes out all state.
Specified by:
reset in interface SimulatorCircuit

randomReset

public void randomReset()
Does not affect faults. Just wipes out all state to random value.
Specified by:
randomReset in interface SimulatorCircuit

setRunMode

public void setRunMode(int rm)
Sets the runMode to the appropriate mode as defined by constants

setFault

public void setFault(int elNr,
                     int faultID)
Sets an element to a fault.
Specified by:
setFault in interface FaultyCircuit
Parameters:
elNr - number of element to define fault for.
faultID - ID of fault to set as defined in FTLib

resetDelays

public void resetDelays(java.lang.Object delayDef)
Specified by:
resetDelays in interface SimulatorCircuit

toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getInOutEls

public SimulatorLogicElement[][] getInOutEls()
Description copied from interface: SimulatorCircuit
0 - Inputs, 1 - Outputs, 2 - Elements
Specified by:
getInOutEls in interface SimulatorCircuit

setPersistentFaults

public void setPersistentFaults(java.awt.Point[] pfs)
Specified by:
setPersistentFaults in interface FaultyCircuit

setPersistentFaults

public void setPersistentFaults(int[] pfus,
                                int[] pfvs)

setFault

public void setFault(java.awt.Point fault)
Specified by:
setFault in interface FaultyCircuit

removeFault

public void removeFault(java.awt.Point fault)
Specified by:
removeFault in interface FaultyCircuit

removeFault

public void removeFault(int pos)
Specified by:
removeFault in interface FaultyCircuit

getState

public CircuitState getState()
Specified by:
getState in interface StateManipulableSimulatorCircuit

setState

public void setState(CircuitState cs)
Specified by:
setState in interface StateManipulableSimulatorCircuit