fengqzHD / gmIdNeoKit

Gm Id Kit with GUI to Work with Matlab Data file similar to Prof. Boris Murmann's gm/ID Starter Kit
GNU General Public License v3.0
40 stars 22 forks source link

The signs of Operating Point parameters #3

Closed wgtLencha closed 4 years ago

wgtLencha commented 4 years ago

I am using PSP103 models and was able to determine the signs of the Operating point parameters such as - IDS, VT, IGD, IGS, GM, GMB, GDS, CGG, CGS, CGD, CGB, CDD, CDG, CSS, CSG, CGSOL, CGDOL, CGBOL, CJD, CJS from ADEXL DC operating point. Did you determine these signs from the DC operating point? I couldn't find their sings in the PSP design kit.

fengqzHD commented 4 years ago

I reused the part from Prof. Murmann’s gm/ID Starter Kit for the signs.

wgtLencha commented 4 years ago

I found the issue. In the PSP103 model, the signs for the operating point parameters are different from BSIM4 or BSIM3 models. I was able to check inside the ADEXL > result > print > DC operating points. That was able to lower down the average errors down to 5%. In Professors Murmann starter kit (gm_ID_starter_kit_v2.3), in the README file, he mentions that he corrected some typos in techsweep_config files (VGS and VDS were swapped in some places). In your techSw_config_bsim3_180msrf_spectre lines #131-134c.VGS_max, c.VGS_step, ... c.VDS_max, c.VDS_step, ... c.VGS_max, c.VGS_step, ... c.VDS_max, c.VDS_step); According to him should be,c.VDS_max, c.VDS_step, ... c.VGS_max, c.VGS_step, ... c.VDS_max, c.VDS_step, ... c.VGS_max, c.VGS_step); Did it make any difference in your case? I am checking if that is the issue with my case. When I did compare the percentage error between the data generated through MATLAB script and through ADEXL simulation, the error varies from 0.35% to 5% and the average error is 5%.

fengqzHD commented 4 years ago

Based on line 121 ~ 125, Prof. Murmann's code is correct as the outer loop should be VDS.

In fact, as we usually set VDS_max == VGS_Max, VDS_step == VGS_step, this typo should not have any effect on the output.

I am not sure if 5% is within expectation or if it is good enough to use this tool for your particular design. You could try the lookup function in the python version and compare the result as it would be the function used by the GUI in python.

wgtLencha commented 4 years ago

What I wanted to say was comparing the simulation results of ID_vs_VDS obtained through ADE-XL GUI vs the look_up function of the MATLAB script. In your readme documentation, you mentioned about the accuracy limitation section.

fengqzHD commented 4 years ago

The Python look_up function is in Python and is implemented based on the pyMosChar (https://github.com/ashwith/pyMOSChar).

So, it is different from the one in Matlab.

wgtLencha commented 4 years ago

I am not familiar with Python. Can you give me a link to the quickest way to learn Python? Thanks

fengqzHD commented 4 years ago

I don't think I know Python good enough to give any recommendations. Yet there are plenty of the introduction videos and courses online.

I will close this ticket.