Recently I studied the very fundamentals of how computers work at the level of 1s and 0s, wires, and logic gates from a book written for laypersons. I followed the book along and built a very, very primitive computer with a cpu and ram in a simulator by plotting different kinds of logic gates and connecting them with wires.

After this exercise I’m left wondering how are new chips designed nowadays considering that there are billions and billions of microscopic transistors in a modern chip? I’m assuming there are some levels of abstraction to simplify the process? I can’t imagine all those billions of transistors and wires being plotted manually one by one by people. Is there like a programming language of some sort where a compiler converts syntax into circuitry layouts?

Also, I don’t mean the physical manufacturing process. I think I have a good grasp of that. I’m purely talking about the design stage.

  • dhork@lemmy.world
    link
    fedilink
    English
    arrow-up
    14
    ·
    edit-2
    17 hours ago

    Is there like a programming language of some sort where a compiler converts syntax into circuitry layouts?

    You are looking for something like System Verilog (Or VHDL).

    Both these languages let you describe hardware. They can both go down to the circuit and transistor level, but people won’t write that by hand. Rather, they will write code that is a description of digital hardware (flip-flops and the logic between them), and then let tools synthesize their description down to individual logic cells and simple functions. Often, chip fab houses have “standard cell libraries” that implement the most common logical functions, and the tools stich them together based on the higher level description.

    Then there is all the verification that needs to be done, not just verification that the design is doing what it needs to do at all times, but that every individual chip is made correctly. Defects do happen, and you want to find them as early as possible in the process. Chip companies spend considerable effort on verification.

    Lots and lots of expensive tools and specialized knowledge! A good middle ground are FPGAs. These are special chips with lots of generic logic building blocks, and ways to programmatically make connections between them. You can write the same VHDL or Verilog for FPGAs, butt the tools map the logic to the FPGA vendor’s chip directly, and “programs” the chip to implement the logic. These still require tools and specialized knowledge, but much cheaper than a fully custom chip.

    One of the trippy things to understand about digital logic when coming from a software background is that it is massively parallel. All the logic is ticking on each clock edge, all the time. While there may be an order to how an HDL file is written, the individual blocks in it are all operating at the same time once the design is actually running in silicon. So when you write it, you need to keep all this parallelism in mind