This looks painful. 6 minutes to use a snipped, manual renumbering etc. Imagine you would have a Verilog for circuits and you could just write "include powersupply; supply1=new 5Vsupply(); supply1.in = header-in; supply1.gnd = header-gnd; supply1.out=amplifier1.vcc;" in a few seconds, hit "compile" and you get a nicely drawn circuit and the fully layouted board.
[Jokingly,]
Ahh, you digi-kiddies are so naive. You have it easy: a digital signal propagates down a wire, and dead-ends. It goes into some gates, and that's end of story.
Real white-beard burly-man analog signals go back and forth. Wires obey reciprocity: there is never action without reaction. You can't simply place a power supply, without knowing how much current might be drawn from it! You can't place an RF amplifier, without a specified system impedance! You can't tune a filter without a defined frequency!
...But seriously, it would seem the sheer magnitude of complexity, and relative lack of demand ("screw it, we'll just throw it in a DSP!"), has obviated attempts at synthesized analog circuitry. At least, that we know of...
They even tried analog computers, where between the frequent use of buffering amplifiers, and circuits with lightly-loading inputs, they can avoid reciprocity for the most part. It didn't last long, though. (Scarily: mechanical computers had been in use for quite some time as well, and usually have to obey reciprocity even more strongly than analog circuits! Designing some of those beasts must've been such a chore, nevermind machining the thousands of tiny parts needed to build them!)
FWIW, IIRC, Verilog or one of the HDLs can
specify analog circuitry just fine. Perhaps more to the point: SPICE netlists specify circuitry just fine, too. But AFAIK, neither one provides much semantic assistance, beyond compartmentalizing building blocks (blocks, instances, subcircuits, whatever) and basic type checking. Strong typed languages are one thing, but the equivalent for analog circuitry must include the source's load characteristics as well as the load's sourcing characteristics!
A little more background on reciprocity:
Newton's law (action and reaction) is a succinct statement of the mechanical version. More broadly, it's a conservation law; a symmetry of the medium. In circuits, we have Kirchoff's laws. In any case, any input and outputs from a system (whether it's a black box full of cogs with shafts on the outside, or a black box full of components with wires on the outside) must obey these rules.
Now, if we have an external source of power, we can conditionally divert some of the input or output "force" (force, torque, pressure, voltage, whatever..) to the supply, and violate reciprocity between any remaining set of shafts.
A digital logic gate does this by drawing supply current to force the output around. In turn, some of the output voltage is fed back to the input, through various physical means (most often capacitance). Which means, a change in the load characteristic can still have some effect on the input characteristic, though less than if the gate were not present. Example: a 74HCU04 (unbuffered, so, a single CMOS inverter stage) will read less input capacitance when the output is shorted (held at a constant voltage), than when it's allowed to move on its own (where Miller effect takes place). But a regular 74HC04's input characteristic will change only imperceptibly, because it contains three inverter stages in cascade. Each stage is nonreciprocal (allowed because output power is sourced from the supplies rather than the input), but not completely so; for N stages in cascade, the nonreciprocity goes as R^-N, so if the one stage is at least modest, then feedback, from the output proper, very quickly becomes negligible!
This is what's so easy about digital logic. You can click pieces together without a care in the world for anything going "backwards". If nothing else, the synthesizer knows to keep limits on the number of gates connected together, and to add buffers as needed, to transparently maintain that rule for you.
A lot of analog circuitry is about this, too, though. One of the challenges of RF circuitry is building an amplifier with good isolation, i.e., low backwards feedback. Indeed, if backwards feedback were zero, the available (stable) gain from a stage could be infinite! Instead, such circuits oscillate, or are only stable with very particular input and load impedances. It's desirable to have isolation between antennae (so internal signals don't go back out on the air), filters (so the filter's frequency response isn't upset by reflected power), mixers (so the undesired frequencies don't go where they're unwanted), and so on.
Tim