All Projects → xesscorp → Skidl

xesscorp / Skidl

Licence: mit
SKiDL is a module that extends Python with the ability to design electronic circuits.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Skidl

Pcbdl
PCB Design Language: A programming way to design schematics.
Stars: ✭ 84 (-86.32%)
Mutual labels:  eda, schematics, electronics
nestronic
Nestronic Game Music Synthesizer Alarm Clock
Stars: ✭ 24 (-96.09%)
Mutual labels:  electronics, schematics, kicad
Awesome Electronics
A curated list of awesome resources for electronic engineers and hobbyists
Stars: ✭ 3,782 (+515.96%)
Mutual labels:  kicad, electronics
kicad-jlcpcb-tools
Plugin to generate BOM + CPL files for JLCPCB, assigning LCSC part numbers directly from the plugin, query the JLCPCB parts database, lookup datasheets and much more.
Stars: ✭ 537 (-12.54%)
Mutual labels:  eda, kicad
pykicad
Library for working with KiCAD file formats
Stars: ✭ 46 (-92.51%)
Mutual labels:  eda, kicad
rs485-moist-sensor
Digital (RS485 - based) soil moisture and temperature sensor
Stars: ✭ 51 (-91.69%)
Mutual labels:  electronics, kicad
KiCad sharp
A C# library wrapping some of KiCad's functionallity, allowing for some features not in the software and programmatic circuit creation
Stars: ✭ 28 (-95.44%)
Mutual labels:  eda, kicad
stack-chan
A JavaScript-driven M5Stack-embedded super-kawaii robot.
Stars: ✭ 242 (-60.59%)
Mutual labels:  schematics, kicad
Plotkicadsch
This project aims at being able to export Kicad Sch files to structured picture files
Stars: ✭ 153 (-75.08%)
Mutual labels:  kicad, schematics
Pinion
Generate interactive and nice-looking diagrams for your PCBs!
Stars: ✭ 264 (-57%)
Mutual labels:  eda, kicad
imxrt1020-module
iMX RT 1020 CPU module
Stars: ✭ 28 (-95.44%)
Mutual labels:  electronics, kicad
Altium2kicad
Altium to KiCad converter for PCB and schematics
Stars: ✭ 490 (-20.2%)
Mutual labels:  kicad, schematics
Bit Preserve
Project for capturing vintage, classic, aka old computer schematics in KiCad.
Stars: ✭ 219 (-64.33%)
Mutual labels:  kicad, schematics
Kicad footprints
A collection of all the KiCad footprints on the internet
Stars: ✭ 216 (-64.82%)
Mutual labels:  kicad, electronics
omega-dock-new
A dock for Onion omega, omega2 and omega2+. It features: Microusb for power supply, USB host, Ethernet
Stars: ✭ 36 (-94.14%)
Mutual labels:  electronics, kicad
Raemixx500
Open Hardware Remake of the Commodore Amiga 500+ Mainboard
Stars: ✭ 161 (-73.78%)
Mutual labels:  kicad, schematics
kicad-exports
Auto generate exports (schematics, gerbers, plots) for any KiCAD5 project.
Stars: ✭ 69 (-88.76%)
Mutual labels:  schematics, kicad
Dji Hardware Schematics
Community made schematics for the DJI drones and devices.
Stars: ✭ 72 (-88.27%)
Mutual labels:  kicad, schematics
Goldfish
A small, thin, USB-C, Pro Micro compatible microcontroller
Stars: ✭ 120 (-80.46%)
Mutual labels:  kicad, electronics
Simulacra
Simple and Ideal Circuit Simulation
Stars: ✭ 12 (-98.05%)
Mutual labels:  electronics, eda

=============================== skidl

.. image:: https://img.shields.io/pypi/v/skidl.svg :target: https://pypi.python.org/pypi/skidl .. image:: https://travis-ci.com/xesscorp/skidl.svg?branch=master :target: https://travis-ci.com/xesscorp/skidl

SKiDL is a module that allows you to compactly describe the interconnection of electronic circuits and components 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.

Features

  • Has a powerful, flexible syntax (because it is Python).
  • Permits compact descriptions of electronic circuits (think about not tracing signals through a multi-page schematic).
  • Allows textual descriptions of electronic circuits (think about using diff and git <https://en.wikipedia.org/wiki/Git_(software)>_ for circuits).
  • Performs electrical rules checking (ERC) for common mistakes (e.g., unconnected device I/O pins).
  • Supports linear / hierarchical / mixed descriptions of electronic designs.
  • Fosters design reuse (think about using PyPi <https://pypi.org/>_ and Github <https://github.com/>_ to distribute electronic designs).
  • Makes possible the creation of smart circuit modules whose behavior / structure are changed parametrically (think about filters whose component values are automatically adjusted based on your desired cutoff frequency).
  • Can work with any ECAD tool (only two methods are needed: one for reading the part libraries and another for outputing the correct netlist format).
  • Can perform SPICE simulations (Python 3 only).
  • Takes advantage of all the benefits of the Python ecosystem (because it is Python).

As a very simple example (and you can see more examples in the SKiDL blog <https://xesscorp.github.io/skidl/docs/_site/blog/>_), the SKiDL program below describes a circuit that takes an input voltage, divides it by three, and outputs it:

.. code-block:: python

from skidl import *

# Create input & output voltages and ground reference.
vin, vout, gnd = Net('VI'), Net('VO'), Net('GND')

# Create two resistors.
r1, r2 = 2 * Part("Device", 'R', TEMPLATE, footprint='Resistor_SMD.pretty:R_0805_2012Metric')
r1.value = '1K'   # Set upper resistor value.
r2.value = '500'  # Set lower resistor value.

# Connect the nets and resistors.
vin += r1[1]      # Connect the input to the upper resistor.
gnd += r2[2]      # Connect the lower resistor to ground.
vout += r1[2], r2[1] # Output comes from the connection of the two resistors.

generate_netlist()

And this is the output that can be fed to a program like KiCad's PCBNEW to create the physical PCB::

(export (version D)                                                                                    
  (design                                                                                              
    (source "C:\xesscorp\KiCad\tools\skidl\tests\vdiv.py")                                             
    (date "09/14/2018 08:49 PM")                                                                       
    (tool "SKiDL (0.0.23)"))                                                                           
  (components                                                                                          
    (comp (ref R1)                                                                                     
      (value 1K)                                                                                       
      (footprint Resistor_SMD.pretty:R_0805_2012Metric)                                                                 
      (fields                                                                                          
        (field (name description) Resistor)                                                            
        (field (name keywords) "r res resistor"))                                                      
      (libsource (lib device) (part R))                                                                
      (sheetpath (names /top/12995167876889795071) (tstamps /top/12995167876889795071)))               
    (comp (ref R2)                                                                                     
      (value 500)                                                                                      
      (footprint Resistor_SMD.pretty:R_0805_2012Metric)                                                                 
      (fields                                                                                          
        (field (name description) Resistor)                                                            
        (field (name keywords) "r res resistor"))                                                      
      (libsource (lib device) (part R))                                                                
      (sheetpath (names /top/8869138953290924483) (tstamps /top/8869138953290924483))))                
  (nets                                                                                                
    (net (code 0) (name GND)                                                                           
      (node (ref R2) (pin 2)))                                                                         
    (net (code 1) (name VI)                                                                            
      (node (ref R1) (pin 1)))                                                                         
    (net (code 2) (name VO)                                                                            
      (node (ref R1) (pin 2))                                                                          
      (node (ref R2) (pin 1))))                                                                        
)                                                                                                      
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].