Posted by: Dave Vandenbout 3 years, 10 months ago

(0 comments)

Having hung out on forum.kicad.info for over a year, I'm quite aware of the problems engineers have with their CAD tools. In particular, I hear a lot of moaning and groaning about schematic editors. (For the record, I know my graphic to the left shows a PCB, not a schematic. What can I say? Art trumps accuracy.)

For all the complaints, we don't seem to change: resignedly shuffling off to use the same tools that mistreated us the day before. And I thought: "Well, that's pretty dysfunctional!" So I googled "are you in an abusive relationship" and my computer came back with 3,830,000 hits. (Luckily, they were all the same basic article, just with different pictures.)

I glanced through a few lists of characteristics for these relationships and I thought they seemed kind of familiar. Then I picked a prototypical example and repurposed it for schematic designers. Take a look and see how many of these excuses you've made in the past month...

Take the Test!

___ It's Normal, Really.

Everyone who uses schematic editors has problems with them. Using a DOS program that was ported to linux and then back to Windows 10, that's just part of the job. No biggie!

___ It's My Fault: I Made It Do That.

It wouldn't have core dumped and destroyed three hours of work if I hadn't tried to merge two named nets. My bad!

___ It's Just the Way It Works. It's Not Malicious.

Sure, the pins have to be exactly on the grid (an imperial grid, mind you, not metric) or else the wires won't connect (even though they look connected). That's just the way it works. It's a pain, but it's not intentional. I mean, I guess...

___ It's Just Its Weird Way of Showing It Loves Me.

Yes, it makes me open two instances of the editor outside the normal design flow in order to copy-and-paste stuff from one schematic to another. But knowing how to do that makes me less replaceable. My schematic editor is helping me keep my job!

___ I'm Not Perfect, Either.

I'll admit that - from time to time - I call my schematic editor "old poopy doo-doo head". Perhaps if I were more understanding it wouldn't freeze while loading libraries from Github.

___ I Can Take It.

I'm an engineer: I've been shit on by the worst of the worst! (And, to be honest, pretty much everybody else.) So there's no way this schematic editor can break me.

What? You say I have to route a 128-wire bus from twenty levels deep in the hierarchy? Bring it on!

___ I Like Being Treated This Way.

Is that a global bus? A hierarchical connection? A local net? Hell, I don't know! But figuring out puzzles like that is the best part of my day.

___ It Could Be Worse

Even the simplest operation takes several point-and-click operations with the mouse combined with pressing obscure hotkeys, but at least the editor doesn't snap off my fingers with some crazy keyboard guillotine thingy last seen in a "Saw" movie.

Oh, wait, that's planned for the next release?

___ If I Just Stick It Out, Things Will Change.

They're really trying to change and the next release will fix a lot of these issues. I know they've said that before, but this time they mean it. If I can just hold out, things will be better.

Except for the keyboard guillotine thingy: that's gonna suck.

So, How'd You Do?

How many of those excuses did you check, and what does that mean? Read on to find out...

Five or More...

You're definitely ready to get out. If there was a safe house, you'd be checking into it.

Two to Four...

You recognize you have a problem, you're looking for something better, but there doesn't seem to be a reasonable alternative.

Just One...

You're throwing me a bone, right? You really wanted to say "zero" but were afraid you'd be labeled as a GUI fanboy.

None. Not a Single One...

Your are so deep in denial. You're obviously involved with some Svengaliesk Rasputin of a schematic editor that has trapped you in a Stockholm Syndrome nightmare.

What Now?

Have I taken you all this way, shown you that you have a problem, and then left you with no solution? Would I do that?

Well, yeah, I probably would do something like that. But not this time!

I've suffered from the same problems with schematics as everyone else, but I decided to do something about it. Taking my cue from things like PHDL and MyHDL, I created the SKiDL module that turns Python into a language for building schematics. It changes circuit design from a fiddly drawing exercise into a programming task.

Why is that important? Because for decades, coders have been successfully building programs a lot larger and more complicated than any schematic. SKiDL acts as a bridge that allows the methods and tools of programmers to be applied to the problem of electronic design because it:

Has a powerful, flexible syntax (because it is Python).

Permits compact descriptions of electronic circuits (think about not having to trace signals through a multi-page schematic).

Allows textual descriptions of electronic circuits (think about using diff and git for circuits).

Enables global refactoring of a design (and eliminates the need to point-and-click on every ... single ... component).

Performs electrical rules checking (ERC) for common mistakes (e.g., unconnected device I/O pins).

Supports linear / hierarchical / mixed descriptions of electronic systems.

Fosters design reuse (think about using PyPi and Github to distribute electronic designs).

Makes possible the creation of smart circuit modules whose behavior / structure are changed parametrically (think about filters whose component values are automatically adjusted based on your desired cutoff frequency).

Can work with any ECAD tool (only two methods are needed: one for reading the part libraries and another for outputing the correct netlist format).

Takes advantage of all the features and benefits of the Python ecosystem (because it is Python).

Getting started with SKiDL is easy. If you already have Python on your system (either 2 or 3), then just use:

pip install skidl

and you're ready to go! (Well, almost ready to go. Right now, SKiDL only supports KiCad, but I'm working on others.)

[Credits: I used "Scream" by Paulius Lizdenis for my opening image and merged it with a picture of a PCB. Sorry I mangled your artwork, Paulius, but what can I say? Marketing trumps art.]