Show HN: GPU-Based Autorouting for KiCad

github.com

5 points by wanderingjew 4 hours ago

This project began when I decided it would be easier to write an autorouter than route a 8000+ net backplane by hand.

This is a KiCad plugin with a few different algorithms, the coolest of which is a 'Manhattan routing grid' autorouter that routes along orthogonal traces. The basic idea was to steal an algorithm from FPGA routing and apply it to PCBs. I'm using CuPy for speeding up the routing; CPU-bound is at least 10x slower than the GPU version.

This is in a very pre-alpha state, but it does _technically_ work. It's not great by any measure but then again it is an autorouter.

I have a writeup with the how and why it was made: https://bbenchoff.github.io/pages/OrthoRoute.html

And a video showing it route a 512-net backplane in just over 2 minutes: https://www.youtube.com/watch?v=KXxxNQPTagA

This is very cool and one of the first good uses of the KiCad IPC API that was released a few months ago. If this sounds interesting and useful, PRs and issues welcome.

tverbeure 4 hours ago

This is really impressive and I love how it came into existence out of necessity.

Could you share the application that you're using this backplane for? Is it a (very expensive) hobby project or a real world use case? You don't often see projects with a 12 layer PCB where the routing isn't critical in terms of reflection.

  • wanderingjew 4 hours ago

    It's for a 4096-node cluster arranged in a 12-bit hamming-distance 1 graph. If you know what I'm talking about please don't spoil it for the others.

    Yeah, it's a very expensive hobby project, but I can see some applications for similar pathological backplanes and BGA escape routing. Of course it doesn't do impedance control, length matching or differential pairs, but this could be useful on a _very small subset_ of _very complex boards_.

    Basically I accidently stumbled into one of the hardest routing problems I've ever seen, and decided to build an autorouter. And that might be useful for other people.

    • tverbeure 4 hours ago

      > If you know what I'm talking about please don't spoil it for the others.

      I didn't, but now I'm intrigued and googling for cues. :-)

all2 4 hours ago

By _the_ Brian Benchoff? Of Hackaday fame? Pretty cool I'll have to give this a shot.

  • wanderingjew 4 hours ago

    "fame"

    • all2 4 hours ago

      My man, your articles were the mainstay of my internet reading for the better part of a decade. Suffice to say that you are part of why I'm an engineer. Thank you for that, at least.