Logic Gates

Logic gates can be drawn by importing the schemdraw.logic.logic module:

from schemdraw import logic

Logic gates are shown below. Gates define anchors for out and in1, in2, etc. Buf, Not, and NotNot, and their Schmitt-trigger counterparts, are two-terminal elements that extend leads.

../_images/logic_1_0.svg

Gates with more than 2 inputs can be created using the inputs parameter. With more than 3 inputs, the back of the gate will extend up and down.

logic.Nand(inputs=3)
../_images/logic_2_0.svg
logic.Nor(inputs=4)
../_images/logic_3_0.svg

Finally, any input can be pre-inverted (active low) using the inputnots keyword with a list of input numbers, starting at 1 to match the anchor names, on which to add an invert bubble.

logic.Nand(inputs=3, inputnots=[1])
../_images/logic_4_0.svg

Logic Parser

Logic trees can also be created from a string logic expression such as “(a and b) or c” using using schemdraw.parsing.logic_parser.logicparse(). The logic parser requires the pyparsing module.

Examples:

from schemdraw.parsing import logicparse
logicparse('not ((w and x) or (y and z))', outlabel='$\overline{Q}$')
../_images/logic_5_0.svg
logicparse('((a xor b) and (b or c) and (d or e)) or ((w and x) or (y and z))')
../_images/logic_6_0.svg

Logicparse understands spelled-out logic functions “and”, “or”, “nand”, “nor”, “xor”, “xnor”, “not”, but also common symbols such as “+”, “&”, “⊕” representing “or”, “and”, and “xor”.

logicparse('¬ (a ∨ b) & (c ⊻ d)')  # Using symbols
../_images/logic_7_0.svg

Use the gateH and gateW parameters to adjust how gates line up:

logicparse('(not a) and b or c', gateH=.5)
../_images/logic_8_0.svg