I had no idea how ICs work on the inside, this does a great deep dive on what’s going on in there!
Realizing how many transistors are involved is making me think, too - is there a domain specific language or compiler for turning simple equations/programs into transistor logic networks? Could be a cool way to develop modules.
Okay, I have apparently rediscovered Verilog/VHDL. One step deeper down the rabbit hole, one step further away from actually making music…
wait, we sposed to be making music?!
Thanks for the warning, I’ll be sure not to look at any links you post!
This remembers me of this guy…
He built his own scanning electron microscope, and “watched” a 555 while it was working.
Fun fact, VHDL stands for VHSIC HDL - or Very High Speed Integrated Circuit Hardware Description Language. Hardware descriptions written in VHDL and Verilog are referred to as RTL or Register Transfer Level. Basically you described a bunch of operations happening in parallel. The RTL is fed into a synthesis engine, along with a description of all the logic blocks you have available (AND, OR, FLOPS etc) and you get what’s called a “gate level netlist” out of it, which is more or less the same thing as a schematic in KiCad.
Then, the netlist goes to another tool for placement and routing - kind of like doing the PCB, where all the logic cells are placed and connected up together. You end up with an ASIC - application specific IC. Smaller ARM cores, like the cortex m0 in the Raspberry Pi RP2040 on the Pico would have something like 12000 gates, but big desktop processors or GPUs would have upwards of 1 billion gates, where each “gate” is made up of somewhere between 4 to 20 transistors. To hook all this up they’d be using over 10 layers of metal for routing.
The RTL can be targeted at FPGAs as well, and the latest craze is something called HLS or High Level Synthesis, where you write your chip description in a language like C++ or SystemC and then the HLS will synthesize that to RTL.
Getting back to the 555 - that kind of thing is actually an analog circuit - so it’d have mostly be done the old fashioned way, with schematic entry, spice simulation and manual layout - like:
If you’re into silicon die shots, check out ZeptoBars
Are you a pro FPGA user? I’m imaging something like the gate level netlist you’re describing, but the purposes is very different and more stupid than the usual FPGA use case.
I’d like to describe a function and have a transistor network created.
For example, a distortion function:
v in = input();
v out = output();
v thresh = 5.0;
v max = 10.0;
v min = 0.0;
if (in >= thresh){
out = max;
} else{
out = min;
}
Which would output a transistor logic network in the form like this:
Is that possible with the gate level netlist you’re talking about?
I’ve used FPGAs before for work, yes, but it’s been a while.
Typically RTLs are for things done in the digital domain. There is some work on doing similar things with analog circuits, but it’s mostly research level to my knowledge.
So in your example, the input() function would be an ADC, and output() would be a single digital IO. The comparison would be a digital comparison between the binary numbers representing the ADC output and your threshold and set the output bit accordingly. You’d get a bunch of gates to do that, here’s a representative picture I found of what it might look like:
On the left is the schematic representation, on the right is the gate level netlist. Each of the NAND gates would be an instance of what’s referred to as a standard cell. Here’s what an example standard cell would look like:
Those are the physical transistors and their pins needed to make up the bit of logic. The destination here is silicon - not really discrete components.
TL;DR: - Verilog and VHDL are used for doing digital circuit design.
Nice, thank you for the detailed explanation! That’s really interesting.
Yeah, in my example, in/out would just be labelled pins, no DAC. I guess I’m interested in the all-analog approach, which probably doesn’t have much active research and development since the only use case I can think of is for describing schematics for DIY synth modules and guitar pedals, not high performance aerospace equipment
thanks again!