For whatever perspective it may provide, I’ve designed PCBs for <customers you’ve heard of> using EAGLE, DxDesigner/PADS, Altium, and now KiCad. Some of them have reached orbit. I’m no Robert Feranec, but I have done some PCB design work in a few different systems from which I have developed opinions over somewhat fewer years than yourself, Glen.
I recently laid out a second spin of a design with a 64-bit DDR3 SODIMM hanging off a Zynq 7000 - both spins done in Altium, roughly similar levels of effort and both successful. Did it again a couple of months later in KiCad just to check the state of diff pair support. I found that while Altium has better support for (e.g.) adjusting an existing diff route or for length-matching all the lines in a byte group, I finished the process a LOT faster in KiCad; the length tuning was a teensy smidge more awkward but I firmly believe produced better routes. The X-signals in Altium are probably the biggest feature I would miss, but you can work around that by laying out fly-by segments sequentially. I did not fab the KiCad version, so I cannot verify that the complete route was successful. I won’t be going back to Altium. We’re letting my seat lapse.
Rooms:
The biggest challenge I have faced when importing existing designs with Rooms is that for a given repeated part, Altium wants to use the same RefDes with a (dynamically-generated) suffix per room but KiCad numbers everything flat and static. The parts in the (existing) layout will not link to the symbols in the (existing) schematic. There’s a lot of cleanup there and I haven’t found a satisfactory workaround. Best way to learn on the Internet is to post something wrong, so maybe someone has better info or a better way.
Plugins:
For new layout work (as opposed to imported from Altium), MitjaN’s ReplicateLayout Plugin is, again, maybe not as slick-looking or integrated as Altium’s Rooms but I think it works far better as a layout tool. (Thank you!) It’s a better operational paradigm IMNSHO. REALLY fast too. Also, while we’re bragging about plugins, Interactive HTML BOM is a home run. Poster boy for Why Plugins Are A Good Idea. At least once I’ve imported a design we had done in Altium just so I could use the Interactive HTML BOM for assembly. I personally could not be happier with the use of Python for scripting.
I’ve transferred a few existing designs over from A to K, and Rooms and Harnesses are the only significant issues I can think of. There’s some cleanup; harnesses don’t really have an analog, aren’t usefully imported. You’ll probably use busses instead, and moving forward will probably need to adjust your habits for assigning signals to busses. If you want to keep developing and revising the design, you may want to replace the imported symbols and footprints with native ones for consistency (or for database libraries in KiCad). One might ask why import at all if you’re going to end up changing all the parts and fixing a bunch of harness differences; I suppose the biggest advantage is that you keep the topology intact in both schematic and layout, which has some value.
Overall, what I’m describing as challenges I mostly ascribe to differences in operational paradigm rather than KiCad faults, and there’s only so much that can be done in the import and conversion - which I think KiCad handles at least as well as the other three on my list. There’s minor stuff: I’ve got a design I’m sending out today with 88˚ arcs for traces, and current stable versions of KiCad made that really hard to get right. V7.99 handles it perfectly. Development is ongoing and rapid and gratifyingly responsive to designer needs.
All of the above are, of course, my own opinion and very possibly wrong. Definitely long-winded. Glen, hope it helps.
–Rob