All digital ICs exist in an analog world. This Skills Education Module will teach you to understand and simulate the analog properties of the digital logic gates that are at the heart of all electronics.
If you have ever looked into how computers work, you know that all computers are made up of arrays and arrays of hundreds of billions of logic gates. If you ever looked into how those logic gates worked, you probably learned about the layouts of transistors that create these logic gates. For example, consider this simple CMOS inverter.

This layout was probably explained similarly to as follows
When the input is at low voltage, the gate-source voltage of the PMOS (on the top) is large, connecting the output to full voltage. Conversely, when the input is at low voltage, the gate source voltage of the NMOS (on the bottom) is large and so the output is connected to ground or 0 voltage.
Now this isn’t untrue, but it is definitely an oversimplification of things. For some purposes, the abstraction of assuming transistors switch instantly and perfectly is a reasonable one, when designing large chips for example seeing things from this digital frame of mind greatly simplifies a still immense task.
But just like every abstraction, digital logic was created by someone, and it is maintained by many someone who design and optimize the cells that chip designers place arrays of and never even need to consider the functionality of.
In this learning module we will see beyond this abstraction and come to understand what really goes on inside logic gates.
This module uses the Cadence Virtuoso software running with the FreePDK45 Basekit from NCSU. Instructions for how to install and set up your cadence environment can be found here. It is also expected for this module that you are capable of using all the basic tools in Cadence Virtuoso taught in the module, so it is highly encouraged to complete the previous module first.
To set up an environment identical to the one used in this learning module and then learn how to use Cadence Virtuoso, the software this module is based on, follow these steps
Initializing and Using a Cadence Virtuoso Environment with the NCSU FreePDK45 Basekit