Posts

Showing posts from May, 2025

Wait, Which Version of the Tool Did Your EDA Folks Install?

Image
Do you get a pop up with this message, when you click the Run button in Assembler? ERROR (ASSEMBLER-1613): Following tests use older version of Spectre <list of tests> Make sure to use MMSIM60 or above for these tests. Look in your CIW for a message about setenv and spectre.dat. If the path it mentions contains tools.lnx86 and you don't see that folder in your file-system, it may mean the installation (that is, which <tool name> returns *some* thing) was for the wrong processor. That's possible - if it's just about downloading a binary - the vendor isn't going to give you the source to build 😊

Python Script that Tells You the RMS Cycle-to-Cycle Jitter of Your Oscillator

Image
$ python3 script.py phas_noi_export.csv f_center [f_lower or 0] [f_higher] # if specify only f_higher, then use 0 for arg2 import numpy as np import pandas as pd import sys def read_phase_noise_file ( filename ):     with open ( filename , 'r' ) as f :         first_line = f . readline ()     try :         float ( first_line . split ( ',' )[ 0 ])         df = pd . read_csv ( filename , header = None )     except ValueError :         df = pd . read_csv ( filename )     freq = df . iloc [:, 0 ]. values     L_dbc_per_hz = df . iloc [:, 1 ]. values     return freq , L_dbc_per_hz def calc_cycle_to_cycle_jitter ( freq , L_dbc_per_hz , f0 , f_min = None , f_max = None ):     # Apply frequency limits     mask = np .ones_like( freq , dtype = bool )     if f_min is not None :       ...

When You Want to Get Cycle-to-Cycle Jitter at PLL Output Due to the Reference Oscillator

Image
Caution - the script does not provide the correct result. You expect cycle-to-cycle to be a high-frequency phenomenon - and therefore, to not depend on the oscillator phase-noise or jitter. But the script will show a large value for c2c jitter on the PLL output. If you can figure it out, please post/comment. Designers Guide : Phase Noise and Jitter prediction , by Ken Kundert Converting Phase Noise to Cycle-to-Cycle Jitter in a PLL When designing or analyzing phase-locked loops (PLLs), one key metric of interest is the RMS cycle-to-cycle jitter at the output. Given phase noise data (typically in dBc/Hz) for the reference oscillator, how do we estimate the jitter after the PLL processes it? 🎯 Goal Estimate RMS cycle-to-cycle jitter (in seconds or picoseconds) at the output of a PLL , based on: Measured or simulated phase noise data (dBc/Hz vs. offset frequency) PLL dynamics: natural frequency ( fn ), damping ratio ( ζ ), divider ratio ( N ) Carrier frequency ( fc ) ...

spectre CMI-2116 Too Few Terminals

Image
ERROR (CMI-2116): I1: Too few terminals given (0 < 3). In my case, the line in the netlist for the veriloga current mirror had only the cell name. I had just copied symbol and veriloga view from another library. It might help to open up the veriloga view and do an "Extract components and nets". That took care of it in my case.

Plotting Device Parameters (gm, vdsat, etc) Vs Time or Temp

Image
I feel like this has gotten more complicated. I think it might have been easier 10 years ago. Then again, I could be w. Go to resource: How to save and plot operating point parameters for Spectre simulator from ADE Explorer/Assembler In Explorer, you go to Outputs > To be Saved > Select OP Parameters Now, the schematic window is active and you can click on instances and each gets highlighted as you do. These get populated in the Assembler Outputs Setup You will see that the "Type" is not signal but oppoint. If you click on the Details field, it splits into two - the /whatever/deviceName is on the left, and on the new field on the right, you can enter parameters appropriate for that device, like vdsat, vth, cgs, etc.  The UI is very poor, but, on the right of this field is a button you can actually click to choose from a list. It'll even run a sim if necessary! If you want these plotted, you have to check the box to the right under the Plot column.

Simulating Oscillator Noise

Image
(Note, transient noise is NOT recommended for oscillators) Useful resource: Performing Oscillator Noise Simulation in Spectre RF (on COS)   Why is it called “Beat Frequency”? Why is video showing 1.9G? When I launch form, both BF and Number of Harmonics are blank BL: You have to enter both. Set known frequency of oscillation for BF and 15 for number of harmonics. For an oscillator, always set Conservative Setting “Decide automatically” causes TSTAB to run ideal steady-state till it is achieved and then switch to the “Shooting” phase automatically. Only set Save Initial Transient Results if you are interested in that startup waveform. Leave “Oscillator node-“ blank even for a differential oscillator! Then, click Apply and move to the pnoise form by checking that button at the top of the form   Max sidebands should be set to same value as Number of Harmonics on the PSS form. Unlike with PSS, for the PNOISE form, both nodes...