Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Melting KiCad (mitxela.com)
278 points by donquichotte on April 22, 2022 | hide | past | favorite | 81 comments


Relevant:

TopoR, an EDA program developed and maintained by the Russian company Eremex:

> https://en.wikipedia.org/wiki/TopoR

"The most recognizable feature of TopoR is the absence of preferred routing directions, which results in unusual looking PCBs."

> https://www.eremex.com/products/topor/


> which results in unusual looking PCBs

I really love things like this that break the non-technical cargo-cultish norms in a technical field. There's no electrical reason to wiggle wires around at 45 degrees, but you're looked down upon and made to feel bad if you don't. Technically, it just add parasitics.

One could claim "it's pride/art", well why constrain yourself to 45 degree lines if you're making art!?


> There's no electrical reason to wiggle wires around at 45 degrees,

No, but there can be various kinds of over-etch issues in corners that sharp corners make worse.

> Technically, it just add parasitics.

Depends. 2 45 degree bends is a better approximation of a smooth arc than a 90 degree sharp corner.

Yes, arcs are even better electrically and better for physical manufacturing. But they are annoying to nudge around. Note that the author of this article suggests saving the "melting" for the very end of the process, because making things all smooth and melty makes it harder to edit the board. It's a bit niche. And as a result, the software at both board fabs and for engineers deals a bit worse from CAD standpoint. And in turn, even worse from a designer point of view.

I spend a bit of time trying to minimize angles (e.g. if I can make a 30 degree turn further away going to a pad instead of a 45 degree one, that's nice-- straighter routing), spreading traces more, and teardropping.


There used to be a technical reason for 45 degree angles: as an upgrade to engineers drawing traces on big blown up transparencies to be shrunk and applied with photochemical processes... the first computer circuit CAD programs weren't able to handle more than traces with the 8 45 degree angles around a circle.

That got to be the style and (almost) nobody changed since then.


There's a technical reason to use something with no technical reason precisely because it's engineering. Your job is to make a circuit board that works, a trace that has the right impedance, etc. so doing the dumb thing reduces your risk of not doing that. More of a principle than a practical issue in this case, of course.


Yeah because it’s so easy to verify creepage and clearance requirements with a bunch of squiggly lines all over the board… Add to that thermal properties and temp rise calculations. There’s a heck of a lot more to PCB design than just an “electrical reason”.


Are you being sarcastic? I can't imagine why squiggly lines would make it harder for a computer to check clearance. They can definitely already handle it. They even showed examples in this post!

Similarly I don't see why thermal calculations would require a particular geometry. That would be a very strange way to do things.


> Similarly I don't see why thermal calculations would require a particular geometry

I imagine a curve could have more error, or require more time, with an FTDT simulation, compared to something grid like.


I think one of the hidden benefits of 45 degree bends is implicit organization.

I have zero experience with boards like what this TopoR router can create, but the sample images are chaos to my eyes and difficult to follow. That could just be what I'm used to seeing, however... but it looks like paint flung onto a canvas vs. highway lanes to me.


Electrons (or should I say holes) dont care. On the other hand less sharp angles means less danger of over-etching. https://www.protoexpress.com/blog/dfm-issues-pcb-manufacturi...


Ah yes. The Pollock Router.


It depends on frequency, transmission line with, and bend radius. A properly mitered bend will have less parasitical and radiation than a curved bend. Due to internal inductance, the currents flow at the edges of a trace, thus when you have a curved bend, the currents in the outer radius fall out of phase with the inner. Thus is why you don’t see a lot of curved bends in microwave PCB, rather mitered bends.


I am a little disappointed to see this comment so far down. Not sure how anyone can dismiss all those concerns as "only" parasitics.


I didn't dismiss all of those concerns. In the high microwave/mm wave RF case, where this would happen, you also wouldn't wiggle around at 45 degree angles either, to match up with some pretty grid, you would have as straight of a shot as possible, or a large radius arc. RF circuits rarely follow aesthetically driven norms, and already have unusual looking PCBs, because the geometry of the trace eventually becomes the component.


@dang, madengr's insightful comment (sibling of this) seems to have been unfairly murdered? He's absolutely right.


For EM analysis, it actually helps to be “on grid” as the gridded solvers have a lot more dynamic range than gridless, like 100 dB more. Analyzing structures such as filters require high dynamic range, so adding a bunch of curved artwork will introduce errors in the simulation, or take much more resources. I do all my PCB layouts on a 0.1 mm grid and try to keep things snapped. I’ll even round footprints to the nearest 25 um or larger.

Also, the GDSII format for IC does not handle curves well. Unlike DXF, it can’t handle a circle, so has to decimate it into a polygon.

When doing signal integrity analysis on PCB, the tools can break those long runs of straight, parallel lines into closed form models (i.e. coupled transmission lines) which greatly speeds up the analysis. With a bunch of curves, you can’t do that, and it has to break those out for EM analysis.

If one could easily make square via holes in PCB, those would be preferable for situations like grounding vias as they better terminate the EM wave.


I thought about how lazy I am and how difficult and a pain in the ass it is to design a schematic, how annoying it is to pick components and make sure they are properly rated. Routing is almost trivial except for some of the tricky high frequency and analog stuff.

I would prefer some sort of "Smart EDA" that automatically understands that I want to place a switch mode power supply with X constraints here, then automatically rates resistors, capacitors, inductors, mosfets, etc and automatically picks manufactured components from mouser. I could get behind that. If the software does that part I will gladly do component placement and routing myself!


For switch mode PSUs (which are usualy the biggest pain to design), TI has a switch mode design tool (WEBENCH) that is mostly what you are describing (you specify your constraints and it gives you a selection of designs, usually cheapest, most efficient, and smallest). It'll even let you download a CAD file with the schematic and layout, though I'm not sure if using it is completely seamless. Of course, it'll only suggest TI parts...


We are working on exactly that at https://flux.ai


Does the company have any in-house guidance on the application domain? Or is it all external feedback so far?


Both in-house and external

Almost everybody here has worked in hardware before. Bunch of people from Apple, Siemens, NASA, and other places


mitxela discusses topor in the video. i used topoR in the past. it has does have import-export options from many EDAs, here its imported from eagle. here is a gif of it at work. http://i.imgur.com/66S5KMv.gif


TopoR is excellent... And the only auto router I found to actually work. I use it along with Diptrace (which is also Russian developed).


I wonder how it works? I imagine some sort of hill-climbing search method, simulated annealing perhaps?


Whatever it is, you’ll be seeing it in a FAANG interview soon


I don't know how TopoR implements this, but the linked Wikipedia article contains a reference to a PhD thesis on this topic:

> https://web.archive.org/web/20170718184145/https://pdfs.sema...


I was thinking wave function collapse. An SMT solver should be capable as well.


Can you elaborate/rephrase, please? Sounds interesting, but I also didn't understand. :)


I think wave collapse could work with a PCB that already has the components placed on it. So only routing remains. Essentially you divide the PCB up into small discrete chunks and either fill that with copper or not. You start at every component pin and fill in the copper. Then you pick edges of where copper is filled in and either fill in or not. Repeat this process and backtrack when you violate a electrical rule. Either this process finishes with a valid routing or won't find a route.

With an SMT solver you could specify similar constraints.


“Topor” also means axe/hatchet in Russian


The author has also made a video about it recently: https://www.youtube.com/watch?v=euJgtLcWWyo

It reminds me of Boldport, who made project kits that were also works of art [0]. The funky PCB traces and shapes were all hand-drawn, I believe, rather than drawn up in a regular EDA program.

[0] https://boldport.com/shop?category=Soldering+projects


I recently just finished a custom PCB art piece -> https://www.behance.net/gallery/137418457/NGC-2336

It was an interesting learning experience that brought me much closer to being able to create functional PCBs. The 45° angled traces however are just such a part of the classic aesthetic it's hard to go for something else. I'll definitely try some more exotic ones in the future.


The Boldport kits were designed with PCBmod-e (https://pcbmode.com/), which was created by Boldport's founder Saar Drimer.


It seems all of it is sold out. But yes, looks marvelous on the pictures.


I've pretty much given up on KiCad. LibrePCB has a much easier UI, KiCad is essentially the Vim of PCBs.

Libre is already good enough in all ways except the fact you have to make a lot of parts yourself(Which is pretty fast, but still), for anything simple.

Anything it can't do, is probably a high budget kind of thing and you can afford the really good tools(But Libre might get there too, if it keeps going for another 5 years)


I wonder if you have used 6.x?

As soon as 6.0 was released we switched all future work to KiCad from Altium Designer. This after held licenses for AD going back to P-CAD days (2006, if I remember correctly) and previously using OrCAD and other professional tools. In short, I got sick and tired of sending thousands of dollars per year to Altium for them to burn the cash adding cloud-based functionality nobody I know wants at all. As a result, AD is just piled-on with bugs, issues, inconsistencies and you can pretty much expect every single update to deliver new bugs.

Anyhow, we've done several boards with KiCAD. We are not sorry at all that we made the change. Sure, it could be improved. The good news is, it will. Also, we are happy to financially contribute towards KiCad development because we know it will not go towards bullshit designed to try to sell the company to a larger company (Altium tried to attract Autodesk, and failed --ADSK probably saw the mess AD had become and backed away).

Anyhow, I think KiCad is good for probably 95%, if not 99%, of any board anyone might want to design. I go back to the early 80's for PCB design, which means that I have done some pretty advanced boards with tools that were far more primitive than KiCad.

As a side note, being able to use Python to drive aspects of KiCad is awesome. We've already created a number of useful utilities relevant to our work.


My experience exactly.

Kicad 6 feels a bit like a modernized version of Protel 99, with far less bugs too. So it is like Altium going back in time and choosing the correct development path instead of all the nonsense and disrespect for its users of the last two decades.


I have yet to meet anyone who was actually looking for a cloud-based EDA tool.

[EDIT: To clarify, what I am saying here is that, given all needs and desired features and functionality of EDA tools, I doubt anyone has been clamoring for a shift to the cloud because locally hosted software did not allow them to do the required work effectively.

For example: Had Altium devoted tens of millions of dollars towards the development of truly useful auto-routing, design tools and advanced library editing/maintenance tools this would have been a million times more valuable to every single one of their customers.]

I am sure there are use cases for this. However, the negatives, in my experience, by far outweigh the positives. We cannot have designs in the cloud. Period. We cannot subvert our PDM/PLM (Project Data Management/Project Lifecycle Management) to the whims of each software vendor.

Simple example: Today all of our PDM is handled through local directory structures where you can find and access design files for electrical, mechanical, optical, software and other engineering disciplines involved in product development. This also includes testing (for each of the above) and manufacturing (for each of the above). Now, multiply that by the equivalent to commits, release candidates, releases to manufacturing and product releases for, again, each of the above disciplines. Etc.

In short, physical hardware/software products are not distilled down to a single set of files. The idea of placing your EDA work on the cloud while everything else is stored and maintained in a local managed repository is nothing less than ludicrous. This is also the reason for which we use Solidworks instead of Fusion 360 (of which we own licenses but only use it in a very limited context).

The thought that a company like Altium would actually believe that non trivial companies would say "Oh, OK, we'll move all of our EDA work to the cloud now" is nothing less than ignorant. The circuit board is just one element of a product, and, sometimes a very minor part.

> the nonsense and disrespect for its users of the last two decades.

Exactly. For the reasons I listed above and more.

Once you get to the point where the thousands of dollars you send a software vendor every year are being used for crap that is utterly useless and irrelevant to you (and, I argue, the majority of users) it's time to move on. They don't get it. And I hope they pay for it with a massive loss of revenue. KiCad is actually at the point where most open minded professionals would have no problems at all. Sure, the GUI is kind of "retro" and it might not be as visually refined as other tools. Who the "*ck" cares? Seriously. It gets the job done. That's all that matters.


We are also considering to move from Altium to KiCad. I am glad to hear some positiv experience.


I almost can't think of a type of board you cannot do with KiCad. I would suggest you try it with a hobby project or two and go from there. Version 6 made important improvements to the file format and other areas. This is what we were waiting for. I wouldn't have touched it before 6.0.

Watch this and see what portions of it align with the kind of work you do:

https://www.youtube.com/watch?v=C7-8nUU6e3E

Also, like I said in my prior comment, Python scripting turns KiCad into a very powerful tool. A loot of these videos are outdated (prior versions). The point is to illustrate the range of ideas that can be covered using Python.

https://www.youtube.com/results?search_query=kicad+python


I have to say KiCad 6 is much nicer, since Pcbnew and Eeschema finally have the same UI. Having made a lot of mistakes on my first "big" design, resulting in multiple redraws, I actually find KiCad quite usable.

LibrePCB sadly doesn't have hierarhical schematics, and they've saved me a lot of time and effort. I hear Horizon EDA now has them, though, I'll have to try it.


Not having hierarchical schematics is a deal breaker for me. It saves so much time in SCH capture, and especially in layout where you can duplicate layouts of identical circuit blocks.

I do find some of the routing actions in PCBnew to be a bit buggy in v6. Weird selections, and a lot of adding short trace segments where none seem to be necessary.

I also don't like having to give up the PCB and SCH diff tools that emerged around the v5 file format ecosystem. Those make working collaboratively in Kicad a breeze.

If I could wave a wand and change one thing about kicad, it would be support for parts databases. Having database managed component libraries with sourcing information stored in the db makes a ton of stuff about designing electronics easier.


I recently did my first KiCad project and found it to be quite cool. Most of my previous experience was 10+ years ago with Orcad and whatever free EDA tools were around then, so I'm not up to date regarding KiCad's competition but I didn't find much to complain about. The issues I had were quickly resolved with a rich assortment of how-to videos and tutorials.

I had to make a part using KiCad as well, and even that process was straightforward. I'm excited to work on my next layout project now after having used it. Bonus points for the 3D rendering mode which worked spectacularly on Ubuntu out of the box. It was very handy to visualize the finished board before assembly.


Kicad is a huge breath of fresh air coming from Orcad. The ease of hierarchical designs and the 3D rendering were mindblowingly cool to have after a decade of designing boards without them.

Fellow Orcad user for almost a decade; was absolutely thrilled to move to kicad.


I'm tempted to give it a try. I've been using ExpressPCB at work, and something called FreePCB at home. The boards that I make at home tend to be simple 2-layer analog circuits.

I tried KiCad, and it seems like just getting to the starting point of beginning to route a PCB requires an enormous amount of sheer physical labor that left me with an eyestrain headache.

I'm glad we've got engineers to do this work, but I also kind of pity them, and have gained a better understanding of why projects take so long. I get it that at the end of the day, they need to be able to push a button and have a finished PCB stuffed with parts drop out of an automated machine in China. But I don't, and I think that for folks like hobbyists and hackers, going directly from a hand drawn schematic to manual layout in a simple PCB editor may still be the winning ticket.


Yeah, KiCad is a fucking hurdle. ExpressPCB was so much easier. With KiCad you really have to do things in s specific order (beginning with the schematic). Trying to "wing it" in KiCad is a doomed path.

I forced myself though to use/learn KiCad for a keyboard project. Worked. I've done another 3 or 4 new PCBs since and each one gets easier (no surprise).


Express is quite easy to grow out of. Well, the old one, I think the new one is based on something they bought.

The old one made it quite difficult to use anyone but their mfg service (obviously their business model).


The new one (ExpressPCB Plus) is much nicer. At my workplace, being tied to their service is not a problem for me. I'm doing R&D, and need to spin up simple boards quickly, sometimes for no reason other than wanting to "break out" an IC with good enough layout so I can test its performance in a tame environment. Anything I make that threatens to go into a product gets handed over to the real engineers, who have full blown commercial tools.

And it's like the difference between programming and software development -- the latter involves a lot more moving parts and needs more sophisticated tools to manage all of them.

At home, I like to order simple boards from lower cost suppliers, so I've been using FreePCB, and that's what I'm mainly interested in upgrading.


In ease of use KiCad seems to be on par with pads, orcad, altium, etc. Not all that different. It just lacks a lot of features.


I don't think making your own parts is really a downside... For any commercial application actually making the part footprints is such a small part of the total engineering effort required for supply chain management. On top of that, it is important to really understand every pin!


I use Horizon EDA and it's really nice.


What drew me to Horizon EDA was that it has interactive router (based on code from KiCad) with push and shove functions. It also has straightforward interface, and it's fast. Recently ODB++ support was added, probably the first (and only?) for open source EDA.

I wish it had ready to use footprints (other than basic resistors, caps, etc), especially from LCSC catalogue.


Me too. Much much much better than KiCAD which is quite unusable IMO and the devs were actively hostile to UX improvements.

I haven't tried LibrePCB though.


Great work and writeup.

In terms of the pictured old pcbs with rounded traces, I wonder if when applying tape "on film" or "on mylar" it was rather easy, when applying narrow fixed-width tape for a track, to bend and follow curves while doing so. Thus, I presume, one could both avoid cutting the tape at bends, and follow smooth curves already drafted by hand.

Here's what came up for me with a search for datak tape:

http://www.philmore-datak.com/mc/Page%20274.pdf


Tape didn't really like to bend (at least not the stuff I used when I dabbled in old school layout 20+ years ago), for the same reason cars need differentials.

Markers, on the other hand... markers were perfect for that.


I think that's right. I found some envelopes at work with design documents for similar looking boards, and that's how they were made. Drawn on paper, laid out on clear film with tape and adhesive transfer pads, and photographically reduced for etching. One of the envelopes even includes a roll of punched paper tape, which I assume is the drill NC program. I've since re-created the boards in KiCAD, but I hung onto the old documents because they're such neat historical artifacts.


I'm quite excited by this - it's my personal PCB design preference, usually done by hand in Eagle


You should try some other alternatives Eagle is really really bad and KiCAD is quite bad.

Horizon EDA is decent and I've heard good things about LibrePCB but not tried it.

DesignSpark PCB is also a fairly reasonable option. Certainly better than Eagle and a better UX than KiCAD. Not open source, but not limited in any way like most commercial options are.


I've used Eagle for years, built big 8 layer boards in it so it's the thing I understand and can use for all its faults - if I'm going to put the time in to relearn something it's likely going to be KiCad (because I can fix stuff myself)


If anyone else is wondering what is a "DRC problem":

Design Rule Checking (DRC) is a process used to identify errors and mismatches such as spacing & trace widths in a PCB design/layout.


To elaborate, you specify design rules for your PCB design and layout based off what your chosen fabrication company's abilities are. Each company's fab process is slightly different and will have varying requirements or specifications you must meet in order to have a successfully produced board.

Things like minimum/maximum trace widths, minimum/maximum via size, via types (buried, blind, tented, etc), pad size, solder mask tolerances, component separation distances, etc.

This often means you need to choose a fab before you design your board... and changing to a different fab later on might mean you have to redesign part/all of your board (particularly if you are pushing tolerances). Each fab has different abilities and requirements.


You shouldn't really target a particular fab, you should target a sort of "class" averaged from the capabilities of multiple fabricators. Services that shop your order around basically do this for you, if they bother to quote standard rules at all.

This will save you from redesign work, though realistically it's saving you from vendor lock-in and price gouging. Sierra can manufacture pretty much anything... but who can afford them?


As long as people are putting their wish lists out… I want a standard DRC format that I can get from a mfg and drop into my program.


That is one of the goals of the new KiCAD DRC system. I really hope it pans out, because it's a great idea and ought to reduce friction for designers.


I love how these boards look, the design is really smooth and unique.

Are most manufacturers equipped to print boards with these curves - would it impact the cost of printing?

I've been working on a web-based drc & renderer and the math to support these looks like a fun challenge.


Etching masks are usually digitally printed; they shouldn't care about the shape of the traces.


I really like the action plugins in KiCad; it gives the ability to do things that users want (hence bothered to make the plugin) but that the maintainers don't always agree with/prioritize.

I do wish there was some kind of central directory of plugins though.


Good news. KiCad 6.0 now comes with a Plug-in Manager.


This looks so much better. There are actual engineering reasons to prefer it this way listed in the article, and although they are pretty unimportant, why not make it the best we can? 45 degree angles as a rule feel rather cargo-cultish.


Nice but there is one feature I want more than this: automatic placement & routing.


I thought I wanted/needed this too when doing my first design. Having a few under my belt now, I firmly believe it would be more of a problem than not.

Automatic placement/routing would become a crutch that would prevent folks from learning what actually is necessary to design a half-decent PCB.

Folks that need auto-routing won't be aware/skilled enough to notice and fix problems before sending the design off to be fab'ed, and then will spend unnecessary amounts of time debugging a broken board only to learn what they should have before sending it off... or will grow frustrated and think the software sucks or something.

There's a lot more to PCB design than just connecting nets together, and skipping the step where you learn how to do it properly would be like refusing to learn to code and instead only want to use no-code UI widgets. It will bite you hard one day and you will lack the skillset to know why.

Besides that... auto-placement is really an impossible task, even for the "big guys" like Altium. The editor cannot possibly know what's inside the component's data sheet, or infer best practices etc. Things like this one particular switching boost converter chip requires a capacitor on the output no further than 0.2" away... etc. So any auto-placement or auto-route feature will be half-baked at it's best, even if done well.


I'm not an EE, but I've been dabbling recently. I wonder if it might be possible to set constraints on certain nets, like a rough FFT and current. Or even on specific pins--an IC could say, that it'd draw power with specific typical frequency characteristics, and capacitors could provide power with specific frequency characteristics.

Anyway, just thinking out loud. There's endless potentional issues with this sort of stuff, and lots of heuristics needed.

It definitely wouldn't be a shortcut tool, since all this stuff would need to be set up. It would help a lot with making rapid changes to designs, and it'd tie in very well with circuit design as code.


Most of the things you're talking about have never been measured for 99% of nets. I'm often building the board to make the measurement. So I kind of don't have that input for the auto-layout widget, even if I had the time to set it up.

Honestly, one of the biggest reasons autorouters aren't used is they take as long to set up as just routing it yourself, and the result is usually inferior. So setup time is crucial.

This approach also wouldn't help one bit with making changes if input data can get stale. And it can and will if system-level measurements are involved. Honestly, making changes to a known-good layout is actually really easy. It's greenfield layouts that are hard, or underdocumented ones, or designs previously done by psychotic morons (like past me!).

"Circuit design as code" is an idea that just doesn't work at the system level. We can't even write documentation for many systems. Expressing things precisely enough for a machine to repeat it is folly.


Auto-routing can be done (and has been done in some designers), but it never generates ideal routes. In low-speed trivial designs, not usually a big issue (ie. if you can make it work on a breadboard, it might work well enough even on a horribly routed board).

Auto-placement is really a problem though. Good PCB design is nearly 100% about placement before you even start routing, and requires a higher level understanding of the design to get right. The last thing you want on an even semi-non-trivial design is to have something start moving your components and traces around in a non-controlled way.

Part of the problem is your "Pros" don't need/want or use either feature, and your amateurs don't understand how to solve un-obvious (and obvious!) issues that the auto-placer/router might introduce until it's too late and the board has been fab'ed and money wasted.

Which means the folks making the design software don't really have a huge interest in making these features at all, or even improving them if they exist.


A designer can also pull neat tricks like reassigning FPGA pin assignments to make a board a lot easier to route to the other components. Auto place and route just won't have that kind of insight.


Automatic place and route on the board level is a neat problem to think about, but the practical usefulness is somewhat questionable. For 6U eurocard sized boards with sea of random MHz-ish SSI/MSI logic it makes some kind of sense, but who does that today. The board is either going to be so simple, that the placement and routing is obvious or so complex, that just even capturing all the constraints is more work than doing the layout mostly manually.


I was able to autoroute several years ago.


Does this work well yet for high speed and/or high current circuits, following good layout for ground bounce, etc?

Did yours require labelling traces as low, med, and high frequency?


I can't speak about how well it worked. I did not have to label traces. It just connected the stuff that was supposed to be together with traces.


For low-speed designs (think arduino and other similar hobby projects), auto-routing might work good enough, but auto-placement will be a disaster in all but the most trivial of board designs.


Wouldn’t it take a photo plotter longer to interpolate around a curve? Seems like 0/45/90 routing would be faster to plot.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: