{#- This file was automatically generated - do not edit -#} {% extends "main.html" %} {% block tabs %} {{ super() }}
atopile

    # atopile

    # compile code to hardware

    import RP2040 from "rp2040.ato"
    import USBC from "usb.ato"
    import LEDIndicator from "led_indicator.ato"

    module Blinky:
        micro = new RP2040
        usb = new USBC
        micro.usb_data ~ usb.data

        psu = new Buck
        psu.input ~ usb.power
        psu.output ~ micro.power_in

        led = new LEDIndicator
        led.input ~ micro.gpio_13
        led.gnd ~ psu.output.gnd
    

Describing hardware with code might seem odd at first glance. But once you realize it introduces software development paradigms and toolchains to hardware design, you'll be hooked, just like we've become.

Code can capture the intelligence you put into your work. Imagine configuring not the resistance values of a voltage divider, but its ratio and total resistance, all using physcial units and tolerances. You can do this because someone before you described precisely what this module is and described the relationships between the values of the components and the function you care about. Now instead imagine what you can gain from reusing a buck design you can merely configure the target voltage and ripple of. Now imagine installing a servo drive the same way you might numpy.

Version controlling your designs using git means you can deeply validate and review changes a feature at a time, isolated from impacting others' work. It means you can detangle your organisation and collaborate on an unprecedented scale. We can forgo half-baked "releases" in favor of stamping a simple git-hash on our prototypes, providing an anchor off which to associate test data and expectations.

Implementing CI to test our work ensures both high-quality and compliance, all summarised in a green check mark, emboldening teams to target excellence.

Intrigued?

Get in touch with Matt, Tim and Narayan:

{% endblock %} {% block content %}{% endblock %} {% block footer %}{% endblock %}