from skidl import SKIDL, TEMPLATE, Alias, Part, Pin, SchLib

SKIDL_lib_version = "0.0.1"

generate_netlist_lib = SchLib(tool=SKIDL).add_parts(
    *[
        Part(
            **{
                "name": "C",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Unpolarized capacitor",
                "keywords": "cap capacitor",
                "ref_prefix": "C",
                "num_units": 1,
                "fplist": ["C_*"],
                "do_erc": True,
                "footprint": "Capacitor_THT:C_Disc_D4.7mm_W2.5mm_P5.00mm",
                "pins": [
                    Pin(num="1", name="~", func=Pin.types.PASSIVE, do_erc=True),
                    Pin(num="2", name="~", func=Pin.types.PASSIVE, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS04",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74AHC04", "74HCT04", "74HC04", "74AHCT04"}),
                "description": "Hex Inverter",
                "keywords": "TTL not inv",
                "ref_prefix": "U",
                "num_units": 7,
                "fplist": ["DIP*W7.62mm*", "SSOP?14*", "TSSOP?14*"],
                "do_erc": True,
                "aliases": Alias({"74AHC04", "74HCT04", "74HC04", "74AHCT04"}),
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="3", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="5", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="8", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="5Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="11", name="5A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="6Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="13", name="6A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS02",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"7402", "74LS28", "74HCT02", "74HC02"}),
                "description": "quad 2-input NOR buffer NRND",
                "keywords": "TTL Nor2 Buffer",
                "ref_prefix": "U",
                "num_units": 5,
                "fplist": ["SO14*", "DIP*W7.62mm*"],
                "do_erc": True,
                "aliases": Alias({"7402", "74LS28", "74HCT02", "74HC02"}),
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="2", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="5", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="8", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="9", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="4B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS11",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Triple 3-input AND",
                "keywords": "TTL And3",
                "ref_prefix": "U",
                "num_units": 4,
                "fplist": ["DIP*W7.62mm*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="13", name="1C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="2C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="3C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="3A", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS32",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Quad 2-input OR",
                "keywords": "TTL Or2",
                "ref_prefix": "U",
                "num_units": 5,
                "fplist": ["DIP?14*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="4", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="12", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="4B", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS08",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74LS09"}),
                "description": "Quad 2-input AND Open Collect",
                "keywords": "TTL and2 OpenCol",
                "ref_prefix": "U",
                "num_units": 5,
                "fplist": ["DIP*W7.62mm*"],
                "do_erc": True,
                "aliases": Alias({"74LS09"}),
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="4", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="12", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="4B", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS257",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Quad 2 to 1 Multiplexer",
                "keywords": "TTL MUX MUX2",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?16*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-16_W7.62mm",
                "pins": [
                    Pin(num="1", name="S", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="4Y", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="13", name="4B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="OE", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="2", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="1Y", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="5", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="7", name="2Y", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="8", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="9", name="3Y", func=Pin.types.TRISTATE, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS00",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74HCT00", "74HC00", "7400", "74LS37"}),
                "description": "quad 2-input NAND buffer",
                "keywords": "TTL nand 2-input buffer",
                "ref_prefix": "U",
                "num_units": 5,
                "fplist": ["DIP*W7.62mm*", "SO14*"],
                "do_erc": True,
                "aliases": Alias({"74HCT00", "74HC00", "7400", "74LS37"}),
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="4", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="12", name="4B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="4A", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS10",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Triple 3-input NAND",
                "keywords": "TTL Nand3",
                "ref_prefix": "U",
                "num_units": 4,
                "fplist": ["DIP*W7.62mm*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="13", name="1C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="2C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="3C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="3A", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS20",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74LS22", "74LS40"}),
                "description": "Dual 4-input NAND",
                "keywords": "TTL Nand4",
                "ref_prefix": "U",
                "num_units": 3,
                "fplist": ["DIP?12*"],
                "do_erc": True,
                "aliases": Alias({"74LS22", "74LS40"}),
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="1C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="1D", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="2C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="2D", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="2A", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS158",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Quad 2 to 1 multiplexer",
                "keywords": "TTL Mux MUX2",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?16*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-16_W7.62mm",
                "pins": [
                    Pin(num="1", name="S", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="13", name="4B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="OE", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="2", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="5", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="7", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="8", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="9", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS86",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74HC86"}),
                "description": "Quad 2-input XOR",
                "keywords": "TTL XOR2",
                "ref_prefix": "U",
                "num_units": 5,
                "fplist": ["DIP*W7.62mm*"],
                "do_erc": True,
                "aliases": Alias({"74HC86"}),
                "footprint": "Package_DIP:DIP-14_W7.62mm",
                "pins": [
                    Pin(num="1", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="4", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="3B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="3Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="9", name="3A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="4Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="12", name="4A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="4B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="7", name="GND", func=Pin.types.PWRIN, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS241",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74LS244"}),
                "description": "8-bit Bus Buffer 3-State outputs",
                "keywords": "TTL Buffer BUS 3State",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?20*"],
                "do_erc": True,
                "aliases": Alias({"74LS244"}),
                "footprint": "Package_DIP:DIP-20_W7.62mm",
                "pins": [
                    Pin(num="1", name="OE0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="11", name="A8", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="Y4", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="13", name="A7", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="Y3", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="15", name="A6", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="Y2", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="17", name="A5", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="18", name="Y1", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="19", name="OE1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="2", name="A1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="20", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="3", name="Y5", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="4", name="A2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="Y6", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="6", name="A3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="7", name="Y7", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="8", name="A4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="9", name="Y8", func=Pin.types.TRISTATE, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS283",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "4-bit full Adder",
                "keywords": "TTL ADD Arith ALU",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?16*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-16_W7.62mm",
                "pins": [
                    Pin(num="1", name="S2", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="10", name="S4", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="11", name="B4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="A4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="S3", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="14", name="A3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="B3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="2", name="B2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="A2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="S1", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="5", name="A1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="B1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="7", name="C0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="9", name="C4", func=Pin.types.OUTPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS153",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Dual Multiplexer 4 to 1",
                "keywords": "TTL Mux4",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?16*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-16_W7.62mm",
                "pins": [
                    Pin(num="1", name="0E", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="2A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="2B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="2C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="2D", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="S0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="1E", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="2", name="S1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="1A", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="1B", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="1C", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="1D", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="7", name="1Y", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="8", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="9", name="2Y", func=Pin.types.OUTPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS151",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "Multiplexer 8 to 1",
                "keywords": "TTL MUX8",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?16*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-16_W7.62mm",
                "pins": [
                    Pin(num="1", name="I3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="S1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="S0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="I7", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="I6", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="I5", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="I4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="2", name="I2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="I1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="I0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="Z", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="6", name="~Z", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="7", name="~E", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="9", name="S2", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS374",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "_aliases": Alias({"74HC374", "74AHCT374", "74AHC374", "74HCT374"}),
                "description": "8-bit Register, 3-state outputs",
                "keywords": "TTL DFF DFF8 REG 3State",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?20*", "SOIC?20*", "SO?20*"],
                "do_erc": True,
                "aliases": Alias({"74HC374", "74AHCT374", "74AHC374", "74HCT374"}),
                "footprint": "Package_DIP:DIP-20_W7.62mm",
                "pins": [
                    Pin(num="1", name="OE", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="11", name="Cp", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="O4", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="13", name="D4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="D5", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="O5", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="16", name="O6", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="17", name="D6", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="18", name="D7", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="19", name="O7", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="2", name="O0", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="20", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="3", name="D0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="D1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="O1", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="6", name="O2", func=Pin.types.TRISTATE, do_erc=True),
                    Pin(num="7", name="D2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="D3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="9", name="O3", func=Pin.types.TRISTATE, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS377",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "8-bit Register",
                "keywords": "TTL REG DFF DFF8",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?20*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-20_W7.62mm",
                "pins": [
                    Pin(num="1", name="~E", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="11", name="CP", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="Q4", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="13", name="D4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="D5", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="Q5", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="16", name="Q6", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="17", name="D6", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="18", name="D7", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="19", name="Q7", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="2", name="Q0", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="20", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="3", name="D0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="D1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="Q1", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="6", name="Q2", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="7", name="D2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="D3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="9", name="Q3", func=Pin.types.OUTPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS688",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "8-bit Comparator",
                "keywords": "TTL DECOD Arith",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?20*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-20_W7.62mm",
                "pins": [
                    Pin(num="1", name="G", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="11", name="P4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="R4", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="P5", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="R5", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="P6", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="R6", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="17", name="P7", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="18", name="R7", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="19", name="P=R", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="2", name="P0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="20", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="3", name="R0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="P1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="R1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="6", name="P2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="7", name="R2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="8", name="P3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="9", name="R3", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
        Part(
            **{
                "name": "74LS85",
                "dest": TEMPLATE,
                "tool": SKIDL,
                "description": "4-bit Comparator",
                "keywords": "TTL COMP ARITH",
                "ref_prefix": "U",
                "num_units": 1,
                "fplist": ["DIP?16*"],
                "do_erc": True,
                "footprint": "Package_DIP:DIP-16_W7.62mm",
                "pins": [
                    Pin(num="1", name="B3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="10", name="A0", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="11", name="B1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="12", name="A1", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="13", name="A2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="14", name="B2", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="15", name="A3", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="16", name="VCC", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="2", name="Ia<b", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="3", name="Ia=b", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="4", name="Ia>b", func=Pin.types.INPUT, do_erc=True),
                    Pin(num="5", name="Oa>b", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="6", name="Oa=b", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="7", name="Oa<b", func=Pin.types.OUTPUT, do_erc=True),
                    Pin(num="8", name="GND", func=Pin.types.PWRIN, do_erc=True),
                    Pin(num="9", name="B0", func=Pin.types.INPUT, do_erc=True),
                ],
            }
        ),
    ]
)
