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
Circuit
Circuit.parts
Circuit.nets
Circuit.buses
Circuit.interfaces
Circuit.hierarchy
Circuit.level
Circuit.context
Circuit.erc_list
Circuit.NC
Circuit.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_list
Circuit.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.netclasses
Circuit.no_files
Circuit.partclasses
Circuit.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
NCNet
Net
Net.connect()
Net.copy()
Net.create_network()
Net.disconnect()
Net.drive
Net.erc_list
Net.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.name
Net.netclasses
Net.nets
Net.pins
Net.stub
Net.test_validity()
Net.valid
Net.width
- skidl.netlist_to_skidl module
HierarchicalConverter
HierarchicalConverter.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()
NetSexp
NetlistSexp
PartSexp
PinSexp
PropertySexp
Sheet
SheetSexp
find_common_path_prefix()
legalize_name()
netlist_to_skidl()
- skidl.netpinlist module
- skidl.network module
- skidl.node module
- skidl.note module
- skidl.part module
Part
Part.name
Part.description
Part.ref
Part.ref_prefix
Part.pins
Part.unit
Part.circuit
Part.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_list
Part.export()
Part.foot
Part.generate_svg_component()
Part.get()
Part.get_pins()
Part.grab_pins()
Part.hiername
Part.hiertuple
Part.is_connected()
Part.is_movable()
Part.make_unit()
Part.match_pin_regex
Part.ordered_pins
Part.parse()
Part.partclasses
Part.ref
Part.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_name
Part.validate()
Part.value
Part.value_to_str()
PartUnit
default_empty_footprint_handler()
- skidl.part_query module
- skidl.pckg_info module
- skidl.pin module
PhantomPin
Pin
Pin.nets
Pin.part
Pin.name
Pin.num
Pin.func
Pin.do_erc
Pin.stub
Pin.aliases
Pin.MAX_PIN_NUM
Pin.chk_conflict()
Pin.circuit
Pin.connect()
Pin.copy()
Pin.create_network()
Pin.disconnect()
Pin.drive
Pin.drives
Pin.erc_desc()
Pin.export()
Pin.funcs
Pin.get_nets()
Pin.get_pin_info()
Pin.get_pins()
Pin.is_assigned()
Pin.is_attached()
Pin.is_connected()
Pin.move()
Pin.net
Pin.pins
Pin.ref
Pin.split_name()
Pin.types
Pin.width
- skidl.pyspice module
- skidl.schlib module
- skidl.scriptinfo module
- skidl.skidl module
- skidl.skidlbaseobj module
SkidlBaseObject
SkidlBaseObject.ERC()
SkidlBaseObject.add_erc_assertion()
SkidlBaseObject.add_erc_function()
SkidlBaseObject.aliases
SkidlBaseObject.check_tag()
SkidlBaseObject.copy()
SkidlBaseObject.erc_assertion_list
SkidlBaseObject.erc_list
SkidlBaseObject.name
SkidlBaseObject.notes
SkidlBaseObject.src_line()
SkidlBaseObject.tag
- skidl.utilities module
Rgx
TriggerDict
add_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()