From KiCad https://en.wikipedia.org/wiki/KiCad :

> KiCad is a free software suite for electronic design automation (EDA). It facilitates the design and simulation of electronic hardware. It features an integrated environment for schematic capture, PCB layout, manufacturing file viewing, SPICE simulation, and engineering calculation. Tools exist within the package to create bill of materials, artwork, Gerber files, and 3D models of the PCB and its components.

https://www.kicad.org/discover/spice/ :

> KiCad integrates the open source spice simulator ngspice to provide simulation capability in graphical form through integration with the Schematic Editor.

PySpice > Examples: https://pyspice.fabrice-salvaire.fr/releases/v1.6/examples/i... :

+ Diode, Rectifier (AC to DC), Filter, Capacitor, Power Supply, Transformer, [Physical Relay Switche (Open/Closed) -> Vacuum Tube Transistor -> Solid-state [MOSFET,]] Transistor,

From the Ngspice User's Manual https://ngspice.sourceforge.io/docs/ngspice-37-manual.pdf :

> Ngspice is a general-purpose circuit simulation program for nonlinear and linear analyses.*

> Circuits may contain resistors, capacitors, inductors, mutual inductors, independent or dependent voltage and current sources, loss-less and lossy transmission lines, switches, uniform distributed RC lines, and the five most common semiconductor devices: diodes, BJTs, JFETs, MESFETs, and MOSFETs.

> [...] Ngspice has built-in models for the semiconductor devices, and the user need specify only the pertinent model parameter values. [...] New devices can be added to ngspice by several means: behavioral B-, E- or G-sources, the XSPICE code-model interface for C-like device coding, and the ADMS interface based on Verilog-A and XML.

Turing completeness: https://en.wikipedia.org/wiki/Turing_completeness :

> In colloquial usage, the terms "Turing-complete" and "Turing-equivalent" are used to mean that any real-world general-purpose computer or computer language can approximately simulate the computational aspects of any other real-world general-purpose computer or computer language. In real life this leads to the practical concepts of computing virtualization and emulation. [citation needed]

> Real computers constructed so far can be functionally analyzed like a single-tape Turing machine (the "tape" corresponding to their memory); thus the associated mathematics can apply by abstracting their operation far enough. However, real computers have limited physical resources, so they are only linear bounded automaton complete. In contrast, a universal computer is defined as a device with a Turing-complete instruction set, infinite memory, and infinite available time.

Church–Turing thesis: https://en.wikipedia.org/wiki/Church%E2%80%93Turing_thesis ... Lamda calculus (Church): https://en.wikipedia.org/wiki/Lambda_calculus

HDL: Hardware Description Language > Examples:
https://en.wikipedia.org/wiki/Hardware_description_language#...

HVL: Hardware Verification Language: https://en.wikipedia.org/wiki/Hardware_verification_language

awesome-electronics > Free EDA Packages: https://github.com/kitspace/awesome-electronics#free-eda-pac...

https://github.com/TM90/awesome-hwd-tools

EDA: Electronic Design Automation: https://en.wikipedia.org/wiki/Electronic_design_automation