If the important thing is "with code" then show me the code.
I gave up hunting through your website because I never managed to find an example of what the code for a real circuit looks like. That should be front and center on the first page.
title says design circuit boards, but it looks to just be netlist generation which is used as input to an external layout tool. step 5 is to use kicad to do lay out.
So the idea is you basically do all of your connections (the netlist) in code. That actually seems like a reasonable idea to me, especially for digital electronics.
However, I would say that schematic capture is only a small minority of the work of most circuit design. Probably 90% is creating components and layout/routing.
> If you want to layout or route PCBs you will need to install KiCAD.
I couldn't really figure out what the deal is with components. They have a website with a few packages on it (https://packages.atopile.io/) and they say:
> Check first-party packages for a list designed and used internally at atopile. Discussion planning to open this up publicly These are built, known to work and come with a functioning layout too.
Ah also I didn't realise this is actually a startup. Makes sense given how much effort seems to have gone into that website!
I think a hardware design language for schematics makes a lot of sense (that's what this appears to be), but good luck doing board layout (the hard part).
I guess what I'm not seeing, and I feel this way about all circuits as code, is why this isn't just a file format spec. I appreciate the INA228 example showing that it can describe functions/constraints of the part. I've certainly made mistakes (and had reviewers catch some of them) with swapped SDA/SCL or voltages being too high. Basically, things you can't always tell from the symbol itself or won't get caught by DRC. Buuuuut, my problem with this is that it feels better suited to be a way to DRC other EDA tools.
For example, most of the .ato files are just basically netlists? https://github.com/atopile/spin-servo-drive/blob/main/elec/s... for example is just a bunch of "this connects to that". We really need a whole new for that? I feel like this could all be done with an xml or something. Maybe more modern like a yaml idk. Every one of these solutions has its own language with its own limitations, instead of using what's around first and focusing on what makes this *better* than click and drag. Because I have to say,
9 comments
[ 2.7 ms ] story [ 30.6 ms ] threadI gave up hunting through your website because I never managed to find an example of what the code for a real circuit looks like. That should be front and center on the first page.
Show HN: Atopile – Design circuit boards with code - https://news.ycombinator.com/item?id=39263854 - Feb 2024 (292 comments)
https://atopile.io/atopile/quickstart#a-typical-workflow
A typical workflow
1. Sketch your circuit on paper.
2. Search https://packages.atopile.io and GitHub for pre-existing modules you need, and use ato install to install them.
3. Design a module and do its calculations using ato code.
4. Run ato build to compile your project, choose components to suit your design, and update your layout (PCB) file.
5. Use KiCAD to lay out any changes
6. Repeat steps 3-5 until you’re happy with your design.
7. When you’re done with your design, push your changes to your repo.
8. CI will automatically build and test your project, and generate the manufacturing files you need to order your PCBs.
9. Take these manufacturing files to your PCB manufacturer to get your PCBAs.
https://atopile.io/atopile/essentials/1-the-ato-language
So the idea is you basically do all of your connections (the netlist) in code. That actually seems like a reasonable idea to me, especially for digital electronics.
However, I would say that schematic capture is only a small minority of the work of most circuit design. Probably 90% is creating components and layout/routing.
> If you want to layout or route PCBs you will need to install KiCAD.
I couldn't really figure out what the deal is with components. They have a website with a few packages on it (https://packages.atopile.io/) and they say:
> Check first-party packages for a list designed and used internally at atopile. Discussion planning to open this up publicly These are built, known to work and come with a functioning layout too.
Ah also I didn't realise this is actually a startup. Makes sense given how much effort seems to have gone into that website!
For example, most of the .ato files are just basically netlists? https://github.com/atopile/spin-servo-drive/blob/main/elec/s... for example is just a bunch of "this connects to that". We really need a whole new for that? I feel like this could all be done with an xml or something. Maybe more modern like a yaml idk. Every one of these solutions has its own language with its own limitations, instead of using what's around first and focusing on what makes this *better* than click and drag. Because I have to say,
> cm5.cm5.ethernet.pairs[0].n.line.override_net_name = "eth0_N"
Just cannot be easier than plopping down a net label.