# atopile/atopile

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/atopile-atopile).**

3,070 stars · 167 forks · Python · mit

## Links

- GitHub: https://github.com/atopile/atopile
- Homepage: https://atopile.io
- awesome-repositories: https://awesome-repositories.com/repository/atopile-atopile.md

## Topics

`cad` `eda` `electronics` `engineering` `tools-and-automation`

## Description

atopile is an electronic design automation software and hardware description language that enables the definition of electronic circuits and components as code. It functions as a modular electronics framework and a compiler that transforms programmatic circuit definitions into a normalized model and KiCad project files for physical layout.

The system distinguishes itself through automated hardware design automation, using a constraint-based value solver to calculate required component values and validate electrical specifications during the build process. It employs a modular approach to hardware engineering, allowing for the creation, sharing, and installation of parameterized circuit blocks via a centralized design registry.

The platform covers a broad range of capabilities, including declarative circuit modeling, automated component selection based on manufacturer attributes, and the generation of electronic manufacturing data such as bills of materials. It integrates directly with PCB layout tools to synchronize code-based designs with physical board routing and visualization.

Users can prototype designs through an online design sandbox or manage projects locally using a command-line interface for dependency management and build configuration.

## Tags

### Part of an Awesome List

- [Electronic Design Automation](https://awesome-repositories.com/f/awesome-lists/devtools/electronic-design-automation.md) — A suite for defining circuit topologies and generating manufacturing data via a code-first workflow.
- [KiCad Integrations](https://awesome-repositories.com/f/awesome-lists/devtools/kicad-integrations.md) — Generating project files from code and synchronizing declarative designs with external PCB layout software.
- [Project File Generators](https://awesome-repositories.com/f/awesome-lists/devtools/kicad-ecosystem/project-file-generators.md) — A utility that produces KiCad project files from declarative code and opens them automatically for layout work. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/6-layout.md))

### Hardware & IoT

- [Declarative Hardware Modeling](https://awesome-repositories.com/f/hardware-iot/declarative-hardware-modeling.md) — Enables the definition of electronic circuits and components as code using a hierarchical structure with support for subclassing and inheritance.
- [Electrical Constraint Solvers](https://awesome-repositories.com/f/hardware-iot/electrical-constraint-solvers.md) — A utility that automatically calculates required component values by solving systems of constraints based on defined relationships. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/1-the-ato-language.md))
- [PCB Design Tooling](https://awesome-repositories.com/f/hardware-iot/pcb-design-tooling.md) — A compiler that transforms declarative code and dependencies into a PCB model by solving design equations. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/2-the-ato-compiler.md))
- [Automated Component Selection](https://awesome-repositories.com/f/hardware-iot/automated-component-selection.md) — A system for matching generic requirements for passive and standard parts to specific hardware components based on defined values and packages. ([source](https://docs.atopile.io/atopile-0.14.x/quickstart/3-adding-parts.md))
- [Programmatic Modeling](https://awesome-repositories.com/f/hardware-iot/circuit-topology-definitions/programmatic-modeling.md) — A feature enabling the definition of electronics designs using procedural logic and scriptable capabilities for complex circuit modeling. ([source](https://docs.atopile.io/atopile-0.14.x/guides/fabll.md))
- [Reusable Modules](https://awesome-repositories.com/f/hardware-iot/circuit-topology-definitions/reusable-modules.md) — A way to create parameterized circuit blocks with defined interfaces and logic that can be instantiated multiple times. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/2-the-ato-compiler.md))
- [Component Constraint Validations](https://awesome-repositories.com/f/hardware-iot/component-constraint-validations.md) — A system that checks mathematical assertions across physical attributes to verify circuit behavior. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/1-the-ato-language.md))
- [Design Constraint Validations](https://awesome-repositories.com/f/hardware-iot/design-constraint-validations.md) — A process that executes embedded calculations and requirement checks on every build to ensure specifications are met. ([source](https://docs.atopile.io/atopile-0.14.x/introduction.md))
- [Digital Signal Modeling](https://awesome-repositories.com/f/hardware-iot/digital-signal-modeling.md) — Represents digital signals with binary high and low states to model connectivity and signal integrity. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/electricsignal.md))
- [Electrical Connection Mapping](https://awesome-repositories.com/f/hardware-iot/electrical-connection-mapping.md) — Provides a mechanism to link electrical signals between components and interfaces to establish the physical wiring of a circuit board. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/swd.md))
- [Constraint Definitions](https://awesome-repositories.com/f/hardware-iot/electrical-constraint-solvers/constraint-definitions.md) — Provides a system to define required voltage levels and current maximums to ensure circuit stability. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/ldo.md))
- [Parameter Constraints](https://awesome-repositories.com/f/hardware-iot/electrical-constraint-solvers/parameter-constraints.md) — Implements a system of assertions to enforce electrical relationships and voltage ranges during component selection. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/2-the-ato-compiler.md))
- [Electrical Design Validation](https://awesome-repositories.com/f/hardware-iot/electrical-design-validation.md) — Executes embedded assertions and tolerance checks on every build to verify that electrical specifications are met.
- [Hardware Design Automation](https://awesome-repositories.com/f/hardware-iot/electrical-design-validation/hardware-design-automation.md) — A system that automates component selection and validates electrical constraints through a build process.
- [Electrical Interface Definitions](https://awesome-repositories.com/f/hardware-iot/electrical-interface-definitions.md) — Allows the definition of connection points for electronic signals that link components or external pins to form electrical nets. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/electrical.md))
- [Hardware Attribute Specifications](https://awesome-repositories.com/f/hardware-iot/hardware-attribute-specifications.md) — A system for assigning values to hardware components using integrated units and tolerances to ensure physical specifications are met. ([source](https://docs.atopile.io/atopile/essentials/1-the-ato-language))
- [Hardware Component Attribute Definitions](https://awesome-repositories.com/f/hardware-iot/hardware-component-attribute-definitions.md) — A way to assign values, physical packages, and properties to modules and interfaces to drive compiler behavior. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/1-the-ato-language.md))
- [Hardware Component Class Definitions](https://awesome-repositories.com/f/hardware-iot/hardware-component-class-definitions.md) — A way to specify new hardware components by mapping electrical interfaces to physical footprint pads. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/3-add-component.md))
- [Hardware Component Registries](https://awesome-repositories.com/f/hardware-iot/hardware-component-registries.md) — Distributes and synchronizes reusable hardware components and design blocks through a centralized package management system.
- [Interface Connectivity Linking](https://awesome-repositories.com/f/hardware-iot/interface-connectivity-linking.md) — Implements a mechanism to link compatible hardware interfaces together using a connection operator to establish electrical paths. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/1-the-ato-language.md))
- [Modular Circuit Reuse](https://awesome-repositories.com/f/hardware-iot/modular-circuit-reuse.md) — Enables the integration of external, pre-tested circuit modules into projects to accelerate hardware development. ([source](https://docs.atopile.io/atopile/essentials/4-packages))
- [Power Rail Modeling](https://awesome-repositories.com/f/hardware-iot/power-rail-modeling.md) — A system for representing electrical power paths by specifying potential points to manage voltage distribution. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/electricpower.md))
- [Reusable Hardware Modules](https://awesome-repositories.com/f/hardware-iot/reusable-hardware-modules.md) — A capability to add pre-validated design and layout modules to a project to quickly implement complex components and functionality. ([source](https://docs.atopile.io/atopile-0.14.x/quickstart/3-adding-parts.md))
- [Transistor Modeling](https://awesome-repositories.com/f/hardware-iot/transistor-modeling.md) — A feature to define a metal-oxide-semiconductor field-effect transistor to control electricity between a power supply and load. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/mosfet.md))
- [Capacitor Specifications](https://awesome-repositories.com/f/hardware-iot/capacitor-specifications.md) — Provides specifications for the placement and polar connections of electrolytic capacitors for bulk filtering. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/capacitorelectrolytic.md))
- [Capacitor Banks](https://awesome-repositories.com/f/hardware-iot/capacitor-specifications/capacitor-banks.md) — A way to group multiple capacitors into a single logical component to achieve a specific total capacitance. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/multicapacitor.md))
- [Circuit Connectivity Mapping](https://awesome-repositories.com/f/hardware-iot/circuit-connectivity-mapping.md) — Models electronic designs as a network of nodes and edges to resolve signal paths and electrical nets.
- [Circuit Topology Definitions](https://awesome-repositories.com/f/hardware-iot/circuit-topology-definitions.md) — Implements a declarative system to define modules and physical components through inheritance and subclassing. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/1-the-ato-language.md))
- [Connection Requirement Enforcement](https://awesome-repositories.com/f/hardware-iot/connection-requirement-enforcement.md) — Ensures design completeness by marking module interfaces as required, which the compiler verifies are connected to external signals. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/addressor.md))
- [RS485 Communication](https://awesome-repositories.com/f/hardware-iot/connectivity-iot/hardware-communication/serial-device-communication/rs485-communication.md) — A specification for a half-duplex RS485 communication interface, including the necessary signal pins. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/rs485halfduplex.md))
- [Manufacturing Outputs](https://awesome-repositories.com/f/hardware-iot/design-lifecycle-management/electronics/manufacturing-outputs.md) — Producing bills of materials and fabrication files required to order and assemble physical circuit boards.
- [Hardware Design Verifiers](https://awesome-repositories.com/f/hardware-iot/design-lifecycle-management/hardware-engineering-management/hardware-management/hardware-design-verifiers.md) — Uses automated assertions and constraints to verify electrical specifications and design integrity before manufacturing. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/2-the-ato-compiler.md))
- [Differential Pair Specifications](https://awesome-repositories.com/f/hardware-iot/differential-pair-specifications.md) — Provides tools for specifying high-speed differential signal pairs with matched impedance and shared power references. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/differentialpair.md))
- [Digital Circuit Construction](https://awesome-repositories.com/f/hardware-iot/digital-circuit-construction.md) — Represents electronic design relationships and circuit components using a structure of nodes and edges. ([source](https://docs.atopile.io/atopile-0.14.x/guides/faebryk.md))
- [Electronic Power Switches](https://awesome-repositories.com/f/hardware-iot/electronic-power-switches.md) — A method for creating a circuit component that uses transistors to control the flow of electricity to a load. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/powerswitch.md))
- [Hardware Component Abstractions](https://awesome-repositories.com/f/hardware-iot/hardware-component-abstractions.md) — Implements a method for inheriting generic attributes from base component types to ensure consistency across hardware parts. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/3-add-component.md))
- [Hardware Design Registries](https://awesome-repositories.com/f/hardware-iot/hardware-design-registries.md) — A capability to upload circuit design libraries to a public registry to make them available for reuse. ([source](https://docs.atopile.io/atopile-0.14.x/guides/publish.md))
- [UART Interfaces](https://awesome-repositories.com/f/hardware-iot/integration-performance/hardware-interfacing-integration/hardware-interfacing/serial-communication-interfaces/uart-interfaces.md) — A system to create serial communication ports with configurable logic level references and optional flow control. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/uart.md))
- [Interface Connection Enforcement](https://awesome-repositories.com/f/hardware-iot/interface-connection-enforcement.md) — Allows marking specific module interfaces as mandatory to ensure components link to external signals before the design is finalized. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/electrical.md))
- [Interface Connectivity Requirements](https://awesome-repositories.com/f/hardware-iot/interface-connectivity-requirements.md) — Allows developers to specify whether a module interface must be connected to an external signal to ensure design completeness. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/powermux.md))
- [Interface Property Configurations](https://awesome-repositories.com/f/hardware-iot/interface-property-configurations.md) — Provides a system to set physical attributes such as frequency, addresses, and net name overrides for communication interfaces. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/i2c.md))
- [Logic Level Reference Specifications](https://awesome-repositories.com/f/hardware-iot/logic-level-reference-specifications.md) — Implements a system to assign power references to signal pins to define voltage levels for logic transitions. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/usb_c.md))
- [Logic-to-Power Signal Conversion](https://awesome-repositories.com/f/hardware-iot/logic-to-power-signal-conversion.md) — A mechanism to transform logic signals into power signals to control the flow of electricity through a switch. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/powerswitchstatic.md))
- [Manufacturing Data Generation](https://awesome-repositories.com/f/hardware-iot/manufacturing-data-generation.md) — A utility that produces the files and reports required to order physical circuit boards from manufacturers. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/2-the-ato-compiler.md))
- [Manufacturing Output Generation](https://awesome-repositories.com/f/hardware-iot/manufacturing-output-generation.md) — A utility that produces bills of materials and fabrication data required for PCB assembly and production. ([source](https://cdn.jsdelivr.net/gh/atopile/atopile@main/README.md))
- [Layout Visualization](https://awesome-repositories.com/f/hardware-iot/pcb-design-tooling/layout-visualization.md) — A utility to launch a PCB editor to visualize and refine the physical layout of a compiled design. ([source](https://docs.atopile.io/atopile-0.14.x/quickstart/5-examples.md))
- [PCB Layout Synchronizations](https://awesome-repositories.com/f/hardware-iot/pcb-layout-synchronizations.md) — A feature to import pre-defined physical layouts from external modules and apply them to local circuit components. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/6-layout.md))
- [Physical Package Assignments](https://awesome-repositories.com/f/hardware-iot/physical-package-assignments.md) — A way to specify the physical package for a module to determine the correct footprint and component selection. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/interfaces/usb3_if.md))
- [RC Filter Designs](https://awesome-repositories.com/f/hardware-iot/rc-filter-designs.md) — Provides a utility to define electrical RC filter components using specific cutoff frequencies or resistor and capacitor values. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/filterelectricalrc.md))

### Programming Languages & Runtimes

- [Hardware Description Languages](https://awesome-repositories.com/f/programming-languages-runtimes/programming-language-varieties/hardware-description-languages.md) — A declarative language for modeling electronic circuits and components as code.

### Business & Productivity Software

- [Electronic Component Importing](https://awesome-repositories.com/f/business-productivity-software/manufacturing-operations-management/parts-and-bom-managements/electronic-component-importing.md) — A system to fetch part details, including pinouts and footprints, using manufacturer part numbers or supplier IDs. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/3-add-component.md))
- [Automated Part Selection](https://awesome-repositories.com/f/business-productivity-software/manufacturing-operations-management/parts-and-bom-managements/automated-part-selection.md) — Matches generic module requirements to specific manufacturer part numbers and footprints using a database of hardware attributes.
- [Electronic Part Databases](https://awesome-repositories.com/f/business-productivity-software/manufacturing-operations-management/parts-and-bom-managements/electronic-part-databases.md) — A database search utility to locate specific electronic components by name, description, or part number for direct addition to the design. ([source](https://docs.atopile.io/atopile-0.14.x/quickstart/3-adding-parts.md))

### Data & Databases

- [Model-as-a-Table Integrations](https://awesome-repositories.com/f/data-databases/model-as-a-table-integrations.md) — A way to define a P-channel enhancement-mode MOSFET to act as a switch or amplifier. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/pfet.md))
- [Voltage Constraints](https://awesome-repositories.com/f/data-databases/schema-enforcement-tools/validation-constraints/project-constraint-validation/voltage-constraints.md) — Ships an automated assertion process to ensure system power levels remain within battery operating limits. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/battery.md))

### Development Tools & Productivity

- [Hardware Module Registries](https://awesome-repositories.com/f/development-tools-productivity/dependency-managers/package-registry-integrations/hardware-module-registries.md) — Allows installing pre-defined hardware component definitions from a remote registry to reuse common modules. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/3-add-component.md))
- [Package Dependency Management](https://awesome-repositories.com/f/development-tools-productivity/package-dependency-management.md) — A system to add and synchronize third-party packages from repositories to maintain a consistent development environment. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/2-the-ato-compiler.md))
- [Discrete Component Selection](https://awesome-repositories.com/f/development-tools-productivity/selective-component-loading/discrete-component-selection.md) — A system for identifying and picking specific discrete components based on defined design requirements and constraints. ([source](https://cdn.jsdelivr.net/gh/atopile/atopile@main/README.md))
- [Build Configurations](https://awesome-repositories.com/f/development-tools-productivity/cli-build-tools/build-configurations.md) — A feature to configure multiple output variations for a project, such as default boards or test jigs. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/5-project-structure.md))
- [Electrical Parameter Specifications](https://awesome-repositories.com/f/development-tools-productivity/component-configuration/electrical-parameter-specifications.md) — A system to set electrical specifications like trip current and response types to ensure technical requirements are met. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/fuse.md))
- [Hardware Design CI Pipelines](https://awesome-repositories.com/f/development-tools-productivity/continuous-integration-workflows/hardware-design-ci-pipelines.md) — Provides a continuous integration workflow that verifies design integrity and ensures the project state is buildable. ([source](https://docs.atopile.io/atopile-0.14.x/essentials/7-saving-your-work.md))

### Operating Systems & Systems Programming

- [Voltage Regulators](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/system-power-utilities/hardware-power-controllers/voltage-regulators.md) — A way to define voltage regulators and connect unregulated input sources to regulated output power rails. ([source](https://docs.atopile.io/atopile-0.14.x/api-reference/components/regulator.md))

### Software Engineering & Architecture

- [PCB](https://awesome-repositories.com/f/software-engineering-architecture/data-formats/intermediate-representations/pcb.md) — Transforms high-level code into a normalized circuit model that can be exported to external layout software.

### Scientific & Mathematical Computing

- [Quantum Circuit Visualization](https://awesome-repositories.com/f/scientific-mathematical-computing/high-performance-execution-environments/quantum-computing/quantum-circuit-design/quantum-circuit-visualization.md) — Models electronics using a declarative hierarchy of modules and components with support for subclassing and inheritance. ([source](https://docs.atopile.io/atopile/essentials/1-the-ato-language))
