3 ms·
Slightly offtopic: are there PCB design tools that are _text_ based? I would prefer to _program_ a design, rather than _drawing_ it.
by gioele 12y ago
Slightly offtopic: are there PCB design tools that are _text_ based?
I would prefer to _program_ a design, rather than _drawing_ it.
- csirac2 12y agoThere's netlist files for schematics, but they're a bit raw to do by hand... Each PCB design package has its own programming language, here's an example of what you can do with Eagle's ULP: http://irq5.io/2013/03/30/circular-layout-ulp-for-eagle/ http://irq5.io/2013/03/30/circular-layout-ulp-for-eagle/ Edit: I suppose you're talking about something more declarative like Eg. povray scripts, I'm not aware of such a thing. Edit2: Eagle's .brd/.sch files are actually XML, FWIW, and from the git diffs I've done from time to time between commits - almost human readable (but perhaps not human writable). Edit3: Agree with jimmyswimmy, there are so many compromises, trade-offs and optimizations going on which (for me at least) require the visual cues when placing parts and routing traces. Sometimes even the 2D visualization on the screen seems inadequate, when you get a board fabbed and see it assembled & fitted, sometimes you have that... oh damn, I wish I had seen it like that, I would have done X.
- jimmyswimmy 12y agoThis is hard to understand. A PCB is fundamentally a graphical design. I would think you would need to see it to understand what it's doing. There are no fixed references in a PCB design as there are on a page of paper (which will always have an upper-left corner to reference everything from). On the other hand, the schematic requires no graphical representation and is easily written as a netlist. SPICE works in netlists and most (all?) PCB packages import a netlist. If you wish to represent a schematic as code, that's the way to do it. My initial opinion notwithstanding, if you write a program to let me compile gerbers from code, I'll try my hand at writing a PCB out.
- joshvm 12y agoThen essentially you want to write an autorouter. Modern autorouting is incredibly powerful, but it's also incredibly stupid. You really need to know exactly when to use it and how to set it up so that it fulfills all your design requirements. Part of the point of PCB design is that it's a _design_ process. You need to make executive decisions about where you can place those components. Things like connectors and interfaces absolutely need to be manually placed (or at least have defined locations). In principle what you're asking is simple - you pass in the netlist and manually place important components and then let the autorouter do the rest. In practice you have to think about: - Grounding schemes - Differential traces - Thermal management - Isolation - Analog/Digital separation - Grounding/stitch vias - Potential room for expansion in the future so board revisions have minimal impact Don't forget that at least some of PCB design is 'artistic'. Your boards should be beautiful!
- jacquesm 12y agoI don't think that would work. A lot of the art in PCB design is fine tuning the routing after the components are placed and your basic connectivity is done. So to go from a net-list to a routed PCB requires manual intervention somewhere in the middle and that intervention is very interactive in nature. Everything influences everything else locally and sometimes even globally. To visualize a PCB like that as 'code' would require you to perform a feat similar to keeping the whole execution state of a program you wrote in your head rather than just the local scope. I don't think anybody (except maybe Chuck Moore, and he designs interactively too) can do that. And so we chose for graphical interaction. If you can get your idea to the point where it is possible to take a textual description of a schematic and compile down to placement data, silkscreen, tracks+pads and a Gerber file then I would be very happy to be one of your guinnea pigs.
- coryrc 12y agoThere's a guy who does that with gEDA. If you read the mailing list, you'll find his posts. (Sorry, don't remember his name). Also, the file formats are ASCII so you easily can.