def getCircuit(self):
    relaySource = resource_string('simulations', 'halfAdder.cir').decode('utf-8')
    circuit = Circuit(relaySource)

    circuit.inspectVoltage('overflow')
    circuit.inspectVoltage('result')
    return circuit
Example #2
0
    def getExampleCircuit(self):
        returnData = []
        returnData.append((0, {
            'v(a)': 1.0,
            'v(b)': 5.0,
            'i(a)': 0.0,
            'i(b)': 6.0
        }))
        returnData.append((1, {
            'v(a)': 2.0,
            'v(b)': 2.0,
            'i(a)': 0.1,
            'i(b)': 0.0
        }))
        returnData.append((2, {
            'v(a)': 3.0,
            'v(b)': 5.0,
            'i(a)': 0.2,
            'i(b)': 0.0
        }))
        returnData.append((3, {
            'v(a)': 4.0,
            'v(b)': 2.0,
            'i(a)': 0.3,
            'i(b)': 6.0
        }))

        simulator = SpiceSimulator()
        simulator.run = MagicMock(return_value=returnData)

        circuitDescription = self.getExampleDescription()
        circuit = Circuit(circuitDescription)
        circuit.simulator = simulator

        return (circuit, simulator)
  def getCircuit(self):
    schematicSource = resource_string('simulations', 'halfAdder.sch')
    schematic = EagleSchematic(schematicSource)
    circuit = Circuit(schematic.getSpiceData())

    circuit.inspectVoltage('OVERFLOW')
    circuit.inspectVoltage('RESULT')
    return circuit
Example #4
0
  def testLowLowShouldResultInHigh(self):
    circuit = Circuit.fromFile("NAND.cir")

    circuit.setSignal(SignalWithResistance("A", 0.0, 10))
    circuit.setSignal(SignalWithResistance("B", 0.0, 10))
    circuit.inspectVoltage('NAND')

    circuit.run(200)
    self.assertGreater(circuit.getVoltage('NAND'), 4.5)
Example #5
0
  def testHighHighShouldResultInLow(self):
    circuit = Circuit.fromFile("NAND.cir")

    circuit.setSignal(SignalWithResistance("A", 5.0, 10))
    circuit.setSignal(SignalWithResistance("B", 5.0, 10))
    circuit.inspectVoltage('NAND')

    circuit.run(200)
    self.assertLess(circuit.getVoltage('NAND'), 0.5)
Example #6
0
  def testShouldSwitchOnIn50ns(self):
    circuit = Circuit.fromFile("NAND.cir")

    circuit.setSignal(SignalWithResistance("A", 5.0, 10))
    circuit.setSignal(DelayedSignal("B", value=0.0, delay=100, resistance=10, startValue=5.0))
    circuit.inspectVoltage('NAND')

    circuit.run(200, 0.05)
    self.assertLess(circuit.getMaxVoltage('NAND', 0.1, 100), 0.5)
    self.assertGreater(circuit.getMinVoltage('NAND', 100.05, 200), 4.5)
Example #7
0
    def setupCircuit(self):
        circuit = Circuit.fromFile("ALU.cir")

        circuit.setSignal(SignalWithResistance("A", 0.0, 10))
        circuit.setSignal(SignalWithResistance("B", 0.0, 10))
        circuit.setSignal(SignalWithResistance("C", 0.0, 10))
        circuit.setSignal(SignalWithResistance("INV", 0.0, 10))

        circuit.inspectVoltage('XOR')
        circuit.inspectVoltage('NAND')
        circuit.inspectVoltage('NOR')
        circuit.inspectVoltage('CARRY')
        circuit.inspectVoltage('SUM')

        circuit.inspectCurrent('Vs')

        return circuit
Example #8
0
    def setupCircuit(self):
        circuit = Circuit.fromFile("ALU.cir")

        circuit.setSignal(SignalWithResistance("A", 0.0, 10))
        circuit.setSignal(SignalWithResistance("B", 0.0, 10))
        circuit.setSignal(SignalWithResistance("C", 0.0, 10))
        circuit.setSignal(SignalWithResistance("INV", 0.0, 10))

        circuit.inspectVoltage('XOR')
        circuit.inspectVoltage('NAND')
        circuit.inspectVoltage('NOR')
        circuit.inspectVoltage('CARRY')
        circuit.inspectVoltage('SUM')

        circuit.inspectCurrent('Vs')

        return circuit
Example #9
0
  def testShouldNotUseTooMuchCurrent(self):
    circuit = Circuit.fromFile("NAND.cir")

    circuit.setSignal(SignalWithResistance("A", 5.0, 10))
    circuit.setSignal(SignalWithResistance("B", 5.0, 10))
    circuit.inspectCurrent('Vs')

    circuit.run(200)
    self.assertLess(circuit.getMaxCurrent('Vs'), .001)

    circuit.setSignal(SignalWithResistance("A", 0.0, 10))
    circuit.run(200)
    self.assertLess(circuit.getMaxCurrent('Vs'), 0.001)

    circuit.setSignal(SignalWithResistance("B", 0.0, 10))
    circuit.run(200)
    self.assertLess(circuit.getMaxCurrent('Vs'), 0.001)

    circuit.setSignal(SignalWithResistance("A", 5.0, 10))
    circuit.run(200)
    self.assertLess(circuit.getMaxCurrent('Vs'), 0.001)
Example #10
0
 def getCircuit(self):
   schematicSource = resource_string('hw', schematicFileName)
   schematic = EagleSchematic(schematicSource)
   circuit = Circuit(schematic.getSpiceData())
   circuit.setSignal(GenericVoltageSource(supplyName, '_VP', '_VN', 5.0))
   return circuit
  def getCircuit(self):
    relaySource = resource_string('simulations', 'relayExample.cir')
    circuit = Circuit(relaySource)

    circuit.inspectVoltage('OUT')
    return circuit