| ▲ | akiselev 11 hours ago |
| I've been working on this exact same thing with both Solidworks and Altium! There has definitely been a step change in Opus 4.5; I first had it first reverse engineer the Altium file format using a Ghidra MCP and was impressed and how well it worked with decompiled Delphi. Gemini 3 Pro/Flash also make a huge difference with data extraction from PDFs like foot prints or mechanical drawings so we're close to closing the whole loop on several different fields, not just with software engineering. For the most part they still suck at anything resembling real spatial reasoning but they're capable of doing incredibly monotonous things that most people wouldn't put themselves through like meticulously labeling every pin or putting strict design rule checks on each net or setting up DSN files for autorouter. It even makes the hard routing quite easy because it can set up the DRC using the Saturn calculator so I don't have to deal with that. If you give them a natural language interface [1] (a CLI in a claude skill, thats it) that you can translate to concrete actions, coordinates, etc. it shines. Opus can prioritize nets for manual vs autorouting, place the major components using language like "middle of board" which I then use another LLM to translate to concrete steps, and just in general do a lot of the annoying things I used to have to do. You can even combine the visual understanding of Gemini with the actions generated by Opus to take it a step further, by having the latter generate instructions and the former generates JSON DSL to that gets executed. I'm really curious what the defensibility of all these businesses is going to be going forward. I have no plans on entering that business but my limit at this point is I'm not willing to pay more than $200/mo for several Max plans to have dozens of agents running all the time. When it only takes an hour to create a harness that allows Claude to go hog wild with desktop apps there is a LOT of unexplored space but just about anyone who can torrent Solidworks or Altium can figure it out. On the other hand, if it's just a bunch of people bootstrapping, they won't have the same pressure to grow. Good luck! [1] Stuff like "place U1 to the left of U4, 50mm away" and the CLI translates that to structured data with absolute coordinates on the PCB. Having the LLM spit out natural language and then using another LLM with structured outputs to translate that to a JSON DSL works very well, including when you need Opus to do stuff like click on screen. |
|
| ▲ | WillNickols 11 hours ago | parent | next [-] |
| Thanks for the input! Haven't done much with Altium but it seems like you get at least somewhat of a boost for it being slightly more about the logic and less about the spatial reasoning. 2 things related to what you said I hadn't put in the original post: 1. In our experience, the LLMs were awful at taking actions directly with any of the SolidWorks API scripting formats (C#, VBA, etc.). Probably 75% of what they wrote just failed to run, and even when they had access to browse the documentation it wasn't much better. If you're getting Opus or anything else to interact with SolidWorks from the CLI, can you say more about how you're getting it to interface effectively? 2. The LLMs are indeed surprisingly bad at spatial reasoning unless prompted specifically and individually. The most notable case of this is when they need to choose the right plane to sketch on. When creating revolve features, they'll often choose the face that would've only worked if they were going to extrude rather than revolve, and when creating sweeps they'll often try to put the sketch that's going to be swept on the same plane as the path that's being swept. If you go back and ask them why they did that and point out that it's wrong, they can fix it pretty fast, but when left to their own devices they often get quite stuck on this. |
| |
| ▲ | akiselev 10 hours ago | parent [-] | | > If you're getting Opus or anything else to interact with SolidWorks from the CLI, can you say more about how you're getting it to interface effectively? I just have a Solidworks plugin that translates CLI calls to JSON to Solidworks API calls and back again. What really started working was creating a bunch of high level CLI commands so that Claude Code could query the part/assembly by asking stuff like "What is the closest distance between the southmost surface of Extrusion1 and the surface of Cylinder2" which would then be translated to a specific high level command or a bunch of lower level commands by Gemini 3 Flash. Those would then be translated to Solidworks API calls, as would any editing commands. It also really helps to give it the ability to parametrize the queries so instead of "all features smaller than 2mm" it can say "all features smaller than $MinFeatureSize", with some logic and a downstream LLM to translate that parameter into values in the design and review it with the human in the loop before committing it to the project. The key is to absolutely minimize how often the LLMs think about numbers and have them think in relationships instead. The hard part is translating those relationships back to the CAD API calls but LLMs are much better at hot hallucinating if you resolve all the parametrized equations last. |
|
|
| ▲ | hot_iron_dust 11 hours ago | parent | prev | next [-] |
| Interesting! How did you make Claude "know" the PCB layout/schematic specifics? Is just giving it a "reference prompt" enough to produce any interesting results? One thing that comes to mind is to use LLMs understanding of SVG to build "spatial representation" of the board layout by presenting components and tracks as SVG primitives of different type etc.
I imagine a practical "PCB Design Copilot" would come from specialized models, trained from the ground up on a large design dataset. There is no GitHub for free professional grade PCB design sources to scrape though. |
| |
| ▲ | akiselev 10 hours ago | parent [-] | | > How did you make Claude "know" the PCB layout/schematic specifics? Is just giving it a "reference prompt" enough to produce any interesting results? I have a mini query language in the CLI that implements a lot of spatial queries, both structured and via prompts (another LLM translates the prompt to a structured query), against the Altium file format and an intermediate representation I keep. Most queries and editing commands use relative positioning ("to the left of"), units ("right edge minus 10mm"), and parameters (U1.P1.Top + MinSpacing * 5), etc. The LLM rarely needs to use concrete units because it's mostly parametrized by component clearances and design rules - I just choose some numbers at the beginning like board size and layer stackup (mostly set by the fab). The CLI has over a hundred subcommands and I use Claude skills to split up the documentation, but the agent actively explores the schematic and PCB themselves. The Claude skills include instructions to use the measurement subcommands to sanity check after making a move or when doing a review at the end, although I'm in the process of implementing a GPU based design rule checker. My Solidworks interface works the same but there are many more "verbs" there for the LLM to manage. At the end of the day it's mostly just orchestrating another tool which does most of the spatial logic and calculations. It's definitely easier with Altium than Solidworks so far. |
|
|
| ▲ | 8note 5 hours ago | parent | prev | next [-] |
| have you figured out something like an LSP for returning the constraints back? ive been starting to play around with 2.5D cad system so i can sketch patterns for leather work and auto-convert into constraints, but id like to be able to have an agent in there too eventually |
|
| ▲ | hardware2415 11 hours ago | parent | prev [-] |
| Very interested in your workflow - do you have anything online to share? Also looked into automating altium more and found having to do a lot of GUI work to guide the models along. How much of going from ‘design in head’ to schematic and layout have you automated? |
| |
| ▲ | akiselev 10 hours ago | parent [-] | | > Very interested in your workflow - do you have anything online to share? Not yet but once I'm ready it's all going to be open source. > Also looked into automating altium more and found having to do a lot of GUI work to guide the models along. Have you tried the Windows UI Automation/Accessibility APIs? You can download Accessibility Insights for Windows to see the data structure and it's well supported by Altium. It has everything you need to tell the LLM what's on screen without ever sending a screenshot (except for the 2d/3d CAD view) and the UIA provides an API that can actually click, focus, etc. without sending fake keyboard events manually. When reverse engineering the file format I put Opus on a loop and it just kept fiddling with the binary file format until Altium stopped throwing parsing errors. > How much of going from ‘design in head’ to schematic and layout have you automated? At this point everything but the final PCB routing. My autorouter and autoplacer are very much a work in progress and LLMs aren't great at routing complex traces, but they can brute force it given enough time and DRC checks. Right now I just shell out to autorouters like Specctra with a DSN and route the most important nets by hand in Altium. Since the LLM sets up all the design rules and can spend hours on a loop figuring out the optimal placement, it's usually a breeze. Especially compared to when I first started out in EE and spent days with part selection and footprint capture. Now a lot of that tedium is completely automated. Soon I'll integrating probe-rs into the whole workflow and making end to end vibe PCBs, adding support for FPGAs, and integrating Solidworks so it does enclosures and molds too. | | |
| ▲ | hardware2415 5 hours ago | parent [-] | | Very cool, definitely interested when you open source it! Great idea to use those apis, as not having the AI be able to check its own output was the big blocker. Is most of the work on the schematics therefore done through this, or manipulating the binaries themselves? Why Altium and not text based kicad for this? I presume just for the ‘professional features’ Altium has | | |
| ▲ | akiselev 3 hours ago | parent [-] | | > Is most of the work on the schematics therefore done through this, or manipulating the binaries themselves? Why Altium and not text based kicad for this? I presume just for the ‘professional features’ Altium has I'm just manipulating the file format directly because I don't want to be tied to Windows (bleh). I only fire up Altium for a few features that I haven't implemented yet like the autorouting and the UI automation was to let the LLM figure out file corruption issues. I learned Altium long before KiCad was a viable option and Altium's ActiveRoute routing is the perfect blend between manual routing and autorouting so it's really hard to switch. ActiveRoute gets even better with the LLM filling out all the design rules. |
|
|
|