I build weird PCBs. Most include copper- and mask-layer graphics, and they often feature complex routed outlines beyond the normal 'this-needs-to-fit-in-an-enclosure'. My tools of choice are Inkscape and KiCad, following a clunky but effective workflow:

I usually lead with KiCad: throw together a preliminary schematic, make footprints as needed, pull them into Pcbnew, right-click-global-spread-and-place, and export the grid of components into Inkscape. Starting this way ensures the graphical work gets done at scale; most graphics and board outline decisions are bounded by component sizes so it's nice to have this in place up front. Then I put together a first pass at graphics and board outline, export to KiCad, and start high-level routing. Inevitably this results in numerous minor changes that drive the iterative loop until I get sick of the process and send the board out for fabrication. It's no PCBmodE, but I don't think I could live without real-time DRC and push-and-shove routing.



Fundamentally, this process doesn't change with SMT cordwood construction beyond a few extra considerations.

First, cordwood design is confusing. You are designing a circuit in which every component is split in half on the schematic, so it's a lot to keep track of. Between this project and #Splinter, I have found that (a) drawing the schematic (and potentially testing the circuit) in a conventional manner is helpful; and (b) keeping components precisely laid out across from their counterparts is a necessity:



As you can see, I've made a few schematic symbols that are specifically designed to minimize confusion; they even look like they're supposed to interlock across the gap. Remember, KiCad knows how to handle routing on a single PCB, but you have to keep track of routing between the two boards. Note that this means you can't just drop GND and VCC labels everywhere -- keep them on one side if you use them at all!

This layout strategy extends to the part placement process, since opposing boards must be inverted and perfectly aligned. The strategy here is to sort parts into two piles, flip half to the back side, align the two PCB outlines to the same grid, and use comment-layer lines and visual cues to ensure component alignment:





Second, component selection is driven by component length in addition to the usual myriad of other characteristics that one finds via parametric search. SMT cordwood doesn't have the luxury of component leads to absorb small differences between components; everything has to be pretty much spot-on. In the case of this project (and #Splinter for that matter), the key gap of 4mm is based on the dimension of the QFN version of the ATtiny85. Why this part?



Beyond the general excellence and simplicity of the ATtiny series, the QFN version of the ATtiny85 in particular is great for cordwood construction because it uses a 20-pin package for an 8-pin part. Atmel wisely chose to only utilize pins on two opposing sides of the package, meaning one can access the chip's full functionality in a cordwood design (using a jumper wire for the ground pad, which seems to work without tapping Pin 8). Furthermore, QFNs have square edges, meaning one can solder the chip to half the board and be fairly confident in its alignment and mechanical strength:



[above, the resistors marked '106' are 10M each -- effectively insulators for the part of the circuit they short out. They are purely structural elements. The resistors marked '0', on the other hand, are jumpers and quite important for circuit operation!]



Once this chip was selected, I worked backwards using Digi-Key's parametric search and a good bit of datasheet examination. I'll put up a Page later on with an updated list, but for now my 4mm span cordwood compatibility guide looks something like this: