Maker.io main logo

Ring Oscillator Design and Characterization In Cadence Virtuoso

2025-11-24 | By Mustahsin Zarif

Crystals / Oscillators

Ring oscillators are a very important circuit design concept used for a variety of applications, including clock generators and random number generators. They are built using a chain of an odd number of inverters (NOT gates), with the output fed back to the input, resulting in an ever-oscillating signal. In this post, we will see how we can make our own ring oscillator in Cadence Virtuoso using 45nm technology.

Ring oscillator SchemeIt

Above, we see a schematic diagram of a 7-inverter chain ring oscillator that we want to design. The inverting function is easy to understand, but the interesting part of the oscillator is that the output from the final inverter that loops to the input is the logical opposite of the original input. This is why the oscillator can never reach stability.

The first step to building the oscillator is to build an inverter first. An inverter is a PMOS in series with an NMOS, with a common input and output taken from the drains:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: inverter schematic in Virtuoso

At first, we use 120nm widths for both PMOS and NMOS in 45nm technology, but this might pose a problem: in theory, a PMOS is twice as bad at passing logic compared to an NMOS, so this inverter might not have equal pull-up and pull-down strength. We can verify this by keeping Vin = 0.5*Vout, sweeping the width of the PMOS, and measuring Vout.

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: Vout vs PMOS width for inverter

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: Vout vs Vin for an inverter with PMOS: NMOS width ratio = 140nm:120nm

We are using a power supply VDD = 1.1V, so the Vout of interest is 550mV. This is achieved at a width of 140nm. This is closer to 120nm and not 240nm from theory because technology has been evolving to make PMOS performance better. With the appropriate width found, we can reflect the change in our design:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: Inverter loaded with an inverter

This is a full schematic of the converter we tested, with 1.1V as the supply to the PMOS (to pass logic 1), ground connected to NMOS (to pass logic 0), and a Vin going into the gates of the inverters. Let’s convert it to a symbol so that it’s easier to use the inverter multiple times, make connections easily, and make it look compact:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: Inverter symbol

Great! Now, we can cascade 7 of these and build our oscillator! Wrong. I wish I could tell you it is that easy, but unfortunately, what happens as we add more and more inverters is that the load capacitance for the inverters near the input increases, so it gets harder for them to drive the loads. This is why we need to taper the inverter stages (increase their size). However, for the sake of simplicity, we skip the math for our design. Nevertheless, I want to show you the difference in propagation delays, and rise and fall times between an unloaded inverter and an inverter loaded with 1 inverter:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: propagation delay, rise time, and fall time for loaded vs unloaded inverter

From these two output boxes, we can see that the average propagation delay of an unloaded inverter (left) is 3.07765 ps whereas that of a loaded inverter (right) is larger at 4.78045 ps. Consequently, adding more stages will mean increasing the delay per inverter.

Going back to designing our inverter, this is what a symbolic arrangement of a ring oscillator looks like in Virtuoso schematic view:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: Ring oscillator with 7 inverters (n = 7)

Running a transient response simulation on this design, we get the following graph:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: Transient response of ring oscillator with initial node voltage condition set to 0V

Here, the initial flat response is due to the fact that it takes some time for the input to propagate all the way to the output. Once it does, it loops back to the input, thereby beginning oscillations at a constant frequency of f = 1/(2tn), where “t” is the delay per stage (half a period), and “n” is the number of inverters. We can use Cadence’s built-in calculator to measure the frequency during oscillation times:

Image of Ring Oscillator Design and Characterization In Cadence Virtuoso Fig: frequency of oscillator

With the above-mentioned formula, we find our delay per stage to be t = 1/(2*7*9.05G) = 7.8897ps → much larger than the delay of an inverter loaded with 1 inverter!!

By now, we have learned how an odd number of inverters can be used to get an oscillatory output that can be used as a clock generator, among other applications requiring constant oscillations. Under the hood, we saw how to determine the ideal width ratios for PMOS and NMOS to get an inverter that is as good at passing logic HIGHs as it is at passing logic LOWs. Finally, we learned how to find the average propagation delay per inverter and understand the importance of increasing the size of inverters in the path from the input to the output so that the delay does not keep getting worse; this could significantly reduce the performance speed of devices.

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.