<div dir="ltr">My two cents, as a mechanical designer, electrical designer, and programmer:<div><br></div><div>>><span style="font-size:12.8px">Board-level circuits are *absolutely* designed via declarative languages often</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Like Matthew, I have only ever seen and done board design and layout by hand in a GUI (altium, orcad, eagle - the list goes on). I think this is because it is very hard to state a complete enough set of constraints to fully define a board of any meaningful complexity and because board layout is a high dimension, highly coupled problem. For highly coupled problems it seems to me that the "state of the heart" is a high-bandwidth way of experiencing the design (GUI) coupled with an awesome parallel processor (your brain). And certainly the market has already spoken on this point.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">That said: The rules processing for verifying the board meets manufacturing constraints is wonderful, because rather than using rules to generate a design it uses rules to assist the person laying out the board. Electrical CAD packages are very good at this. As an appeal to your intuition, consider: Verifying a solution to a NP-hard problem is still in P.</span></div><div><span style="font-size:12.8px"> </span></div><div><span style="font-size:12.8px">I wonder if this similar approach could be successfully applied to solidmodeling programs, that is, skip the declarative stuff for design creation, but use declared rules for verifying the part or assembly (fits, clearance, mold flow thickness, t-stacks, etc).</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">I also think that scripting would be a poor replacement for a good GUI for 3D CAD, but I do think that a bit of scripting to automate certain types of feature creation is a great idea. I think of linear/circular patterning and transforms as a very, very simple version of scripting for solidmodel cad. For an interesting commercial example of this approach, see Rhino + Grasshopper.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">Sorry I bailed on the last two meetups. I've read the papers though! Great stuff so far. Looking forward to Sunday. </span></div><div><br></div><div><span style="font-size:12.8px"> </span><span style="font-size:12.8px">-Josh</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px">PS </span><span style="font-size:12.8px">In my own work, Ive stumbled on a practical area for improvement in current CAD tools: Designing things that are fabricated in 2D (lasercut parts, stampings, packaging design) but being able to visualize and manipulate in 3D at the same time. I've been using Onshape to design packaging for my startup and my workflow is "design the package as discrete panels, then lay them flat and move them around to get the 2D pattern". Painful.</span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div><div><span style="font-size:12.8px"><br></span></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Nov 11, 2015 at 12:24 PM, Matthew Keeter <span dir="ltr"><<a href="mailto:matt.j.keeter@gmail.com" target="_blank">matt.j.keeter@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Do you have any examples of declarative PCB design in industry?<div><br><div>I’m curious about what software tools folks are using for this kind of design;</div><div>in my experience, most hardware companies are using Altium or similar.<div><div><br></div><div>-Matt<div><div class="h5"><br><div><br></div><div><div><div>On Nov 11, 2015, at 3:09 PM, Ilia Lebedev <<a href="mailto:ilebedev@mit.edu" target="_blank">ilebedev@mit.edu</a>> wrote:</div><br><blockquote type="cite"><div dir="ltr">Setting aside the quality of opencores, which is mainly an FPGA circuit repository, Board-level circuits are *absolutely* designed via declarative languages often in order to remain maintainable. There is a wealth of graphical user interfaces, and one-off boards make great use of them, but this is by no means a summary of the entire field of PCB design :|</div><br><div class="gmail_quote"><div dir="ltr">On Wed, Nov 11, 2015 at 3:06 PM Bryan Bishop <<a href="mailto:kanzure@gmail.com" target="_blank">kanzure@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Nov 11, 2015 at 12:43 PM, Nancy Ouyang <span dir="ltr"><<a href="mailto:nancy.ouyang@gmail.com" target="_blank">nancy.ouyang@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Very few people seem to argue for text-based circuit-board design, and I only know of one person who designs circuits that way.<div></div></div></blockquote></div><br></div></div><div dir="ltr"><div class="gmail_extra">There's millions of lines of source code written in Verilog/VHDL available on github, or <a href="http://opencores.org/" target="_blank">http://opencores.org/</a> is an interesting starting point.</div></div><div dir="ltr"><div class="gmail_extra"><br><div><br></div><div>- Bryan<br><a href="http://heybryan.org/" target="_blank">http://heybryan.org/</a><br><a href="tel:1%20512%20203%200507" value="+15122030507" target="_blank">1 512 203 0507</a></div>
</div></div></blockquote></div>
</blockquote></div><br></div></div></div></div></div></div></div></div></blockquote></div><br></div>