skidl package¶
SKiDL: A Python-Based Schematic Design Language
SKiDL is a module that allows you to compactly describe electronic circuits using Python. The resulting Python program performs electrical rules checking for common mistakes and outputs a netlist that serves as input to a PCB layout tool.
SKiDL reads in libraries of electronic parts and converts them into Python objects. The objects can be instantiated into components and connected into a circuit using net objects. The circuit can be checked for common errors automatically by the ERC (electrical rules checking) module, and then a netlist can be generated for input to a PCB layout tool.
Full documentation is available at https://devbisme.github.io/skidl
Here’s a simple example of SKiDL used to describe a circuit with a resistor and LED in series powered by a battery:
import skidl from skidl import *
# Create a resistor and LED. r1 = Part(‘Device’, ‘R’, value=’1K’) # Create a 1K resistor. led = Part(‘Device’, ‘LED’) # Create a LED.
# Create a battery. bat = Part(‘Device’, ‘Battery_Cell’)
# Connect the components. vcc = Net(‘VCC’) # Net for VCC. gnd = Net(‘GND’) # Net for ground. vcc += bat[‘+’] # Connect the battery positive terminal to VCC. gnd += bat[‘-’] # Connect the battery negative terminal to GND. vcc += r1[1] # Connect one end of the resistor to VCC. r1[2] += led[‘A’] # Connect the other end to the LED anode. led[‘K’] += gnd # Connect the LED cathode to GND.
# Output the netlist to a file. generate_netlist()
Subpackages¶
Submodules¶
- skidl.alias module
- skidl.bus module
- skidl.circuit module
CircuitCircuit.partsCircuit.netsCircuit.busesCircuit.interfacesCircuit.hierarchyCircuit.levelCircuit.contextCircuit.erc_listCircuit.NCCircuit.ERC()Circuit.activate()Circuit.add_buses()Circuit.add_netclasses()Circuit.add_nets()Circuit.add_partclasses()Circuit.add_parts()Circuit.add_stuff()Circuit.backup_parts()Circuit.check_for_empty_footprints()Circuit.check_tags()Circuit.cull_unconnected_parts()Circuit.deactivate()Circuit.erc_listCircuit.generate_dot()Circuit.generate_graph()Circuit.generate_netlist()Circuit.generate_netlistsvg_skin()Circuit.generate_pcb()Circuit.generate_schematic()Circuit.generate_svg()Circuit.generate_xml()Circuit.get_net_nc_stubs()Circuit.get_nets()Circuit.get_node_names()Circuit.merge_net_names()Circuit.merge_nets()Circuit.mini_reset()Circuit.netclassesCircuit.no_filesCircuit.partclassesCircuit.reset()Circuit.rmv_buses()Circuit.rmv_nets()Circuit.rmv_parts()Circuit.rmv_stuff()Circuit.to_tuple()
- skidl.config_ module
- skidl.design_class module
- skidl.erc module
- skidl.geometry module
- skidl.interface module
- skidl.logger module
- skidl.net module
NCNetNetNet.connect()Net.copy()Net.create_network()Net.disconnect()Net.driveNet.erc_listNet.fetch()Net.generate_netlist_net()Net.generate_xml_net()Net.get()Net.get_nets()Net.get_pins()Net.is_attached()Net.is_implicit()Net.is_movable()Net.merge_names()Net.nameNet.netclassesNet.netsNet.pinsNet.stubNet.test_validity()Net.validNet.width
- skidl.netlist_to_skidl module
HierarchicalConverterHierarchicalConverter.analyze_nets()HierarchicalConverter.assign_components_to_sheets()HierarchicalConverter.component_to_skidl()HierarchicalConverter.convert()HierarchicalConverter.cull_from_top()HierarchicalConverter.extract_sheet_info()HierarchicalConverter.find_lowest_common_ancestor()HierarchicalConverter.generate_main_code()HierarchicalConverter.generate_sheet_code()HierarchicalConverter.net_to_skidl()
NetSexpNetlistSexpPartSexpPinSexpPropertySexpSheetSheetSexpfind_common_path_prefix()legalize_name()netlist_to_skidl()
- skidl.netpinlist module
- skidl.network module
- skidl.node module
- skidl.note module
- skidl.part module
PartPart.namePart.descriptionPart.refPart.ref_prefixPart.pinsPart.unitPart.circuitPart.add_pins()Part.associate_pins()Part.attached_to()Part.convert_for_spice()Part.copy()Part.copy_units()Part.create_network()Part.disconnect()Part.erc_desc()Part.erc_listPart.export()Part.footPart.generate_svg_component()Part.get()Part.get_pins()Part.grab_pins()Part.hiernamePart.hiertuplePart.is_connected()Part.is_movable()Part.make_unit()Part.match_pin_regexPart.ordered_pinsPart.parse()Part.partclassesPart.refPart.release_pins()Part.rename_pin()Part.renumber_pin()Part.rmv_pins()Part.rmv_unit()Part.similarity()Part.split_pin_names()Part.swap_pins()Part.tag_ref_namePart.validate()Part.valuePart.value_to_str()
PartUnitdefault_empty_footprint_handler()
- skidl.part_query module
- skidl.pckg_info module
- skidl.pin module
PhantomPinPinPin.netsPin.partPin.namePin.numPin.funcPin.do_ercPin.stubPin.aliasesPin.MAX_PIN_NUMPin.chk_conflict()Pin.circuitPin.connect()Pin.copy()Pin.create_network()Pin.disconnect()Pin.drivePin.drivesPin.erc_desc()Pin.export()Pin.funcsPin.get_nets()Pin.get_pin_info()Pin.get_pins()Pin.is_assigned()Pin.is_attached()Pin.is_connected()Pin.move()Pin.netPin.pinsPin.refPin.split_name()Pin.typesPin.width
- skidl.pyspice module
- skidl.schlib module
- skidl.scriptinfo module
- skidl.skidl module
- skidl.skidlbaseobj module
SkidlBaseObjectSkidlBaseObject.ERC()SkidlBaseObject.add_erc_assertion()SkidlBaseObject.add_erc_function()SkidlBaseObject.aliasesSkidlBaseObject.check_tag()SkidlBaseObject.copy()SkidlBaseObject.erc_assertion_listSkidlBaseObject.erc_listSkidlBaseObject.nameSkidlBaseObject.notesSkidlBaseObject.src_line()SkidlBaseObject.tag
- skidl.utilities module
RgxTriggerDictadd_quotes()add_unique_attr()cnvt_to_var_name()consistent_hash()debug_trace()detect_os()expand_buses()expand_indices()expand_path()export_to_all()filter_list()find_and_open_file()find_and_read_file()find_num_copies()flatten()from_iadd()fullmatch()get_abs_filename()get_unique_name()is_binary_file()is_url()list_or_scalar()merge_dicts()norecurse()num_to_chars()opened()reset_get_unique_name()rmv_attr()rmv_iadd()rmv_quotes()rmv_unique_name()set_attr()set_iadd()sgn()to_list()
