How to export Cadence plot data into MATLAB
This will describe how to do a Parametric Analysis in Cadence, as well as how to export the data from that analysis into MATLAB for further processing.
The goal of this simulation is to measure the drain current of an NMOS as a function of Vgs for different values of Vds. We will use the circuit shown below. Make sure to enter "Vds" as the value of the DC voltage field for the drain's voltage source.
Next, click "Launch → ADE L" to launch the simulator. In the simulator, select a DC analysis, sweeping Vgs from 0 to 3V. Add the drain current as the output. Next, click on "Variables → Edit" to bring up the variable editor. Enter Vds as the name and click add. Don't worry about the Value, this will be set when the parametric sweep is initialized. It should look like this:
Say OK to close the editor window. Now, click "Tools → Parametric Analysis" to bring up the parametric analysis setup. In the variable name, put Vds. In the range, put From 1 to 3. As the Step Control, select Linear Steps and put a Step Size of 1. The window should look like this:
Now, click "Analysis → Start", and this will begin the simulation. Parametric analysis runs the DC simulation for changing Vgs from 0 to 3, but it runs it one time each for Vds = 1, 2, and 3V. The output from Cadence will look like this:
To export the data into MATLAB, click on "Trace → Select All". This will select all of the waveforms. Next, click "Trace → Save". This will bring up a file dialog. Select your location, select the file type to be "Comma Separated Value (.csv)", and give it a name of filename.csv (Make sure to put the .csv as part of the filename.
This creates a plaintext version of all the X,Y pairs from the Cadence plot. If there are multiple waveforms, the first column is the X value of the first waveform, the second column is the Y value of the first waveform, the third column is the X value of the second waveform, the fourth column is the Y value of the second waveform, and so on.
Next, run MATLAB. The first command to type is
>> plotData = importdata('parametricOut.csv');
This will import all the plot data from your csv file into a MATLAB struct. It contains both the text that is at the top of the columns and the data. The text for column one, for example, can be accessed by typing
>> plotData.colheaders(1)
ans =
'N0:d (Vds=1.00e+00) X'
To access the data, you could type
>> plotData.data(1)
which would show all of the X values from your Cadence plot. Now, to recreate our plot, the following code is run:
>>figure(1)
>>clf
>>hold on
>>grid on
>>plot(plotData.data(:,1),plotData.data(:,2),'r','LineWidth',2)
>>plot(plotData.data(:,3),plotData.data(:,4),'g','LineWidth',2)
>>plot(plotData.data(:,5),plotData.data(:,6),'b','LineWidth',2)
The output should look like this:
which is exactly the same graph as above from Cadence.