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.
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.
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
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.
Cadence library: ahdlLib/amp
Example use case: when you want to scale your signal (amplify or attenuate)
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.
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)
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).
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.
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.
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).
RFInsights
Published: 16 Jun 2023
Last Edit: 16 Jun 2023