For some mad reason, I thought that it would be a really good idea to layout a quad rational DAC on a 100mm*100mm board. The result of this attempt was mixed.
I've had multiple false starts with microcontrollers and processors. I've also had multiple false starts with circuit design. I started using KiCAD in Jan 2020 but quickly found it to be overwhelming. I quite like the schematic capture. That is the typical barrier for most people. However, I had no idea how to specify the size or shape of a board. I still have no idea how to specify surface mount component placement.
I tried out-sourcing design in Feb 2020. Unfortunately, Internet connectivity to the Sheep Pen was, erm, tenuous. I tried another attempt at out-sourced design in Jul 2020. My plan was to out-source some trivial designs as a matter of due diligence and then offer more substantial work to a successful contractor. I was looking to be genuinely wowwed by someone who, for example, knew how to draw an uninterrupted "edge cut". After four hours of complaining on upwork.com's "live chat" I obtained a USD100 refund for an 18 LED design which failed to meet any criteria of my 600 word specification. I wasn't asking for anything complicated. Just little things like "make it credit card size", "put wires on one side only", "make the labels such that silk-screen is optional". (I was only planning ahead for high volume production.)
I hoped to be wowwed and awed. The result was worse than my very first attempt using KiCAD. To make matters worse, upwork.com's website is so broken, I felt like the victim in a confidence game where the website was almost being written on demand. The only part of the website which didn't break was the "live chat" which seemed to be mostly automated. After this incident, I got my credit card number changed because it is very much the type of website which will get hacked. The website sprawls across multiple virtual hosting companies and outsourced services, everything is styled until interactive elements are unrecognizable and there is zero vetting for any skill of any contractor. The only vetting concerns laundering. Even here, there is a conflict of interest where any party can offer "work", any party can accept "work" and upwork.com takes 20% for being the unwitting financial laundry. Where does the money go? Much of it goes into fixing a constantly broken website.
By Feb 2021, I passed the first anniversary of not getting any circuit board manufactured. In particular, I was willing to pay USD1000 for an AVR version of
MicroCoreLab's MCL65+ (and at least another USD300 to ensure that the contractor was suitable). When I teach programming, I mention that Napster (the person) went from non-programmer to millionaire within 18 months. Napster knew how the Napster application should function and its appearance. However, Napster couldn't write a specification or afford to out-source it. Instead, Napster was an annoyingly persistent lamer on multiple programming forums. Learning to use KiCAD *must* be easier than programming Napster. And the only way to achieve this target in the remaining six months was to not out-source it.
By Jul 2021, I spent more than 200 hours using KiCAD. That's six weeks over six months. Objectively, I curse more frequently when using KiCAD than when I use vim and I curse at both because they have unforgiving interfaces which encourage errors. There is a common misapprehension that vi and vim are text editors. I suffered under this misapprehension for more than 20 years. However, vi and its derivative are much more clearly understood as a collection of off-by-one errors operating within a modal interface. Apparently, if you put enough off-by-one errors in one place, they can be used to manipulate text. However, it is a category error to describe the result as a text editor. Unfortunately, one hour using vim remains preferable to one hour using KiCAD. The reason is that vim has the most forgiving interface. If I do something wrong in vim, I undo, switch mode and do it again. In KiCAD, you may, for example, specify a grid. Sometimes KiCAD draws the grid. Sometimes KiCAD follows the grid. Sometimes, you can draw the same thing five times before getting the desired result. Sometimes, it is easier to edit the saved state; manually or via a script. This is not a feature. Another reason to prefer a borked interface like vim is that I'm often programming. There is a creative tension and release which often occurs in cycles of 20 minutes or less. I have a creative urge to write a subroutine. 15 minutes later, the subroutine is written. With hardware, it is 12 hours of rising tension and I'm not even half way. When working with FPGA, signals have names and components form a modular hierarchy. KiCAD does nothing to encourage similar good practice.
In 1987, I started writing a circuit design program in BASIC. I am astounded that I should have continued. I'm not asking for Adobe Illustrator. I'd be quite happy with the functionality of OpenOffice Draw - and most people find that to be unacceptably poor for any task. I don't say this jokingly. A friend had a contract to teach circuitry to kids. I discovered this in a makerspace at midnight. On a computer which blocked software installs, I designed a flip-flop circuit in OpenOffice Draw. This was printed onto transparencies and UV etched. My friend took a bus to another city at 8AM and seven out of eight kids soldered a working flip-flop circuit with minimal help. My friend's panic was pleasant compared to using KiCAD. I don't have high standards. I just want holes and wires. Preferably on a grid. After using KiCAD for 20 hours, I shouldn't be thinking "Is it too late to download/write gif2gerber?"
I spent 14 hours doing schematic capture for a quad rational DAC. Then I spent seven hours doing layout. Then I spent 5.5 hours doing another layout. Then I abandoned a third layout. After a total of 38 hours, I had a design which was moderately acceptable. Amusingly, after designing for 38 hours, I thought "How do I export this data?" After reading some help text, "Oh that's what the plot menu item does!" I can appreciate industry anachronisms. However, there is a reputation for KiCAD being simultaneously lax, nannying and muddled. For example, there is an understandable assumption that schematic capture cannot be skipped. However, if the footprint editor is accessed via the layout editor, it is possible to insert any arbitrary footprint into layout and wire it without restriction. I'm not sure how I found this exception but it is bad design. Alan Kay stated that simple tasks should be simple and complex tasks should be possible. In KiCAD, the three dimensional viewer and microwave differential paths are simple. However, components are uniquely identified by hexadecimal Unix timestamps and their connectivity is somewhat strained across redundant, grammatically incompatible file formats and eight major modal interfaces, of which only two pairs seem to share any consistent implementation. It is a sprawling mess which is designed primarily to absorb funding from its major sponsors.
Eventually, I sent the DAC design to be manufactured. The result was pretty but there's absolutely no way that I can solder it. An 8 bit rational DAC requires two 8 bit registers (low phase duration, high phase duration) which reload the 9 bit counters. This can be compacted to 10 4 bit counter chips per channel. One strip of chips per channel can be arranged into two five chip clusters (low phase, high phase) where three chips are on one side of the board and the remaining two chips are on the other side of the board. Unfortunately, I doubt that I could solder one channel correctly. The integrated H-bridges (using 2222A transistors) are also too small. It is annoying because it works quite well on a breadboard.
It hasn't been a complete failure. I am now able to work at three times my initial speed - although I remain uncertain this has any commercial value. I have good practice with the "horizontal on one side, vertical on the other" principle. I first encountered this principle while studying the Commodore Amiga500 board but I recently discovered that the principle has been widely used since the 1960s; particularly on 16 bit mini-computers. Ignoring that, my effort has been little more than a "Hello World" of CADCAM but the metrics are useful. I designed a circuit with more than 750 pads. Indeed, as a ratio where 0% is empty board and 100% is perf-board, it is possible to exceed 50% - if I could solder it. This has led to more moderate chip stacking ideas where, for example, MAX3100 UARTs may optionally be fitted on both sides of a board or an optional third 6522 requires no additional board. More recently, I have discovered that it is possible fit a shift register, temperature sensor and real-time clock under one 6522. Most significantly, I discovered that that it is possible to fit 47 DIP chips onto one board (three DIP chips per square inch) while using less than one via per chip.
I am perhaps over-reliant on via count as a metric of quality. However, when I look at, for example
POC2.0 or
kalj's unnamed design, my thoughts can be politely re-cast as "What are you doing? No, really. Have you considered a design with less than 50 vias?"
I stared agog at the POC2.0 layout for about 4.5 hours over four sessions. Y'know, one signal switches layers six times. Nothing should exceed a dog-leg of two crossings - and even this incurs unwanted inductance. The flourish on the bottom left of the EEPROM is particularly revealing. Maximum symmetry could have been achieved by overlapping the A0 of the address bus and D7 of the data bus. However, asymmetry has be created by keeping them apart - for no good reason. Most worryingly, it took me more than one hour to recognize my own influence. Specifically, I find that
my advice to *not* implement a parallel bus on a EuroCard or 100mm*100mm board has been taken as a challenge. I particularly appreciate the hedge where the dedicated parallel connector and EEPROM socket sit either side of the 100mm*100mm boundary. This only occurred to me after considering the EMF in three dimensions and this partly explains the experimental bus termination. It makes more sense when SCSI style active termination is re-located to the far end of a hypothetical stack. The upside is that a budget mini version of POC2.0 can be made without quad UART. Or perhaps alternative circuitry may occupy 1/3 of the board, such as sound and video.
After spending 38 hours on the XR8400 Series rational DAC, I might modify the design. The winner of
PCBWay's third design competition was a
100kW IGBT controller. I had no idea this was possible. Unfortunately, the plans for this ostensibly open-source competition winning design have disappeared and have been replaced with promotion for a motor control venture. I have no idea how much "Intellectual Property" can be arranged around PWM but I suspect it is minimal. Well, rational DACs can control a poly-phase motor. I thought that 4kW was optimistic but perhaps I should raise my optimism. With the experimental USD8, 144mm^2, 4kW GaNFETs, it should be possible to make a ridiculously fast accelerating vehicle. Admittedly, the task is made easier by the almost linear acceleration of electric motors. Regardless, with one motor per wheel, enough phases per motor and enough wheels per vehicle, it should be possible to complete 1/4 mile standing start in less than 10 seconds - and do so without exceeding a 4kW per transistor limit. With this type of power envelope, a mission critical control system is required. Potentially, something used in
pacemakers or
engine control systems may be sufficiently reliable.