RFIC Design


Ideal Blocks in Cadence

Time to time, debugging or modelling a circuit, we look for ideal blocks in Cadence that can do the job, prove the concept before you go on fully developing the thing. We heard you. Here are some ideal blocks that are already available in Cadence Virtuoso libraries that you can get started from.

ideal blocks in cadence

Ideal Adder

Cadence library: ahdlLib/adder

Example use case: Adder can be used for adding signals, for example, if you want to add I and Q signal to generate 45 deg signal.

Ideal Subtractor

Cadence library: ahdlLib/subtractor

Example use case: Subtractor can be used when you want to take difference of signals, for example, differential to single ended conversion

Ideal Multiplier

Cadence library: ahdlLib/multiplier

Example use case: Multiplier can be used when you want to multiply two signals, for example, you can use it as a mixer. A mixer is an multiplier ideally. You can multiply baseband and LO signal, and at output you should see LO+BB and LO-BB signal.

Ideal Scaler

Cadence library: ahdlLib/amp

Example use case: when you want to scale your signal (amplify or attenuate)

Ideal Delay

Cadence library: analogLib/delay

Example use case: Adding a delay to signal, for example, you can generate Q signal from I by adding a T/4 delay to it.

Cadence library: analogLib/delayline

Example use case: This blocks also adds a delay and has a characteristic impedance. For example, it can act as an ideal transmission line with some delay.

Ideal Phase Shifter

Cadence library: analogLib/delay

Example use case: We can repurpose delay block to act as a phase shifter. For example, if you want to add phase delay of \(\phi\) at frequency f, you can add \(\dfrac{\phi}{2\pi f}\) delay.

This adds phase delay/lag only, phase advance/lead is not possible with this. To add phase lead, you can add delay to your reference. (afterall you added phase delay wrt some reference, so find that reference, and add delay to it, it will be as if you added phase lead to your intended signal)

Ideal Amplifier with Non-Linearity

Cadence library: rfLib/LNA_PB

Example use case: We can add distortion and noise using this block. For example, if you want excite your power amplifier with some already distorted signal (signal+IM3).

Selective Non-Linearity

Cadence library: ahdlLib/polynomial

Example use case: This is a very useful block. If you only want to inject particular non-linearity, say only second order harmonics, you can use this block to set the coefficients of polynomial. For example, if you set p3 to zero in image below, it will only create 2nd order non-linearity.

polynomial block in cadence to add non linearity

Misc Ideal Blocks in Cadence

There are many other blocks to be explored in analogLib, ahdlLib and rfLib libraries. For example, you can insert bandpass ideal filters from rfLib/butterworth_bp. We already have a dedicated article on ideal low pass filters. You can use ahdlLib/diffamp as opamp.

Deep Probe

This is an extremely useful probe. Sometimes you want to attach something to a node (say for debugging purposes, you want to attach a capacitor to rdegen node shown in image below) that is buried deep in hierarchy, and ripping up that hierarchy or bringing a pin out just for this is way too much work. In this case, you can use analogLib/deepprobe to access that node anywhere in your top level cell.

For example, say we want to access vp node as shown image below. We would insert a deepprobe at top level schematic, and write gm.ich.rdgn.vp (syntax: cell instance name. cell instance name…node name) in its hierarchical node property. This will get us access to the node, and now we can connect whatever we want to this node (like we connected a capacitor in this case). 

deepprobe use example
deepprobe in cadence


Published: 16 Jun 2023
Last Edit: 16 Jun 2023