def getCircuit(self): relaySource = resource_string('simulations', 'halfAdder.cir').decode('utf-8') circuit = Circuit(relaySource) circuit.inspectVoltage('overflow') circuit.inspectVoltage('result') return circuit
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
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)
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)
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)
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
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)
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