Closed wgtLencha closed 4 years ago
Line # 22 The model specified in this line is included in the output netlist. (techsweep_180msrf.scs in the sample file). You can see that clearly from Line # 102 to Line # 134 especially Line # 104 and Line # 127. If you want to include more models, you have to define more models and insert them into the output netlist. For example In Line # 22 c.modelfile0 = sprintf('"/GF8HP/models/spectre/design.scs" section=%s', c.corner); c.modelfile1 = sprintf('"/GF8HP/models/spectre/wafer.scs" section=%s', c.corner); c.modelfile2 = sprintf('"/GF8HP/models/spectre/allModels.scs" section=%s', c.corner);
In Line # 104 'include %s\n'... 'include %s\n'... 'include %s\n'...
In Line # 127 ], c.modelfile0, c.modelfile1, c.modelfile2, ...
As for your questions about Line # 29 and Line # 30, you don't need to set the output path to the psf folder from ADE XL.
Based on my limited understanding, once you run techSw_spectre_run in Matlab. Matlab would start the simulation in spectre using the command in Line # 29. Then the data would be collected by a Matlab function cds_srr. You can find more about how the data is generated in Prof. Murmann's book and read the script of techSw_spectre_run.m.
Given that the error is a syntax error of the netlist, it would be helpful if we could get a working netlist first to debug the error. I would check the netlist generated in ADE and compare that to the one generated by the config file as I am not sure what is the syntax error.
I don't think the difference in the sweep section may cause the syntax error.
One thing I notice is this one include ""/grps/ef-test/GF8HP/Models/Spectre/models/allModels.scs" section=tt"
I think it should be include "/grps/ef-test/GF8HP/Models/Spectre/models/allModels.scs" section=tt
Also on your techSw_config_bsim3_180msrf_spectre line #120 'simOptions options gmin=1e-13 reltol=1e-4 vabstol=1e-6 iabstol=1e-10 temp=%d tnom=27 rawfmt=psfbin rawfile="./%s" \n'... The simulation fails to generate a netlist file and errors out but when I remove the rawfile="./%s" The simulation works if I do this: 'simOptions options gmin=1e-13 reltol=1e-4 vabstol=1e-6 iabstol=1e-10 temp=%d tnom=27 rawfmt=psfbin rawfile="./techsweep_120psp.raw" \n'... or if I remove in my case rawfile = "./techsweep_12pps.raw" and remove in your case rawfile = "./%s" 'simOptions options gmin=1e-13 reltol=1e-4 vabstol=1e-6 iabstol=1e-10 temp=%d tnom=27 rawfmt=psfbin \n'... Can you please double-check and let me now?
Can you also do a quick test if the lookup table generated is correct? I have done a check and found a discrepancy b/n values. This is what I have done: In ADEXL I did a DC sweep of VDS from 0 to 1.2 in 25mV step and parametric sweep of VGS from 0:25e-3:1.2 and plotted ID vs VDS with 13 different VGS plots. The channel length is set to 120nm the Width 10um with 5 fingers (2um for each finger width). Likewise, the main MATLAB script was configured with the same VGS and VDS step of 25e-3. I am attaching the ADE XL plot generated below. Then, in ADE XL, I looked up for ID at VGS = 1 and VDS = 0.6, and captured the ID value and compared it to the result I obtained through the MATLAB script by doing in MATLAB command window: look_up(nch, ‘ID’, ‘L’, 0.12, ‘VGS’, 1, ‘VDS’, 0.6, ‘VSB’, 0) and I get different value from what I obtained through ADE XL.
Can you also do a quick check for your technology and compare the results? ID_vs_VDS.pdf
There are too many questions asked here. I do think to ask different questions in different tickets is the better way. I will try to answer here and close the ticket. 1) rawfile issue As long as you can create the netlist and get the data you need, you can create the netlist in the way you like. In the netlist I created, the line is _simOptions options gmin=1e-13 reltol=1e-4 vabstol=1e-6 iabstol=1e-10 temp=27 tnom=27 rawfmt= psfbin rawfile="./techsweep130bcd.raw" 2) Different result I've done a comparison of the result from Spectre through ADE and the result from the MAT file using the lookup function in LupMos.py. The average error is less than 1 %. Given that the error you mentioned are connected to the MATLAB script, sending an email to Prof. Murmann would be a more effective way.
Here are my questions: From your techSw_config_bsim3_180msr_spectre.m file: Line # 22: c.modelfile = sprintf('"/tech/tsmc/tsmc180/tsmc180_fengqz_flybackv1/tsmc180/models/spectre/rf018.scs" section=%s', c.corner); Is that the location of the model file? What if I have more than one model files? Do I have to repeat the command line? For Example, c.modelfile = sprintf('"/GF8HP/models/spectre/design.scs" section=%s', c.corner); c.modelfile = sprintf('"/GF8HP/models/spectre/wafer.scs" section=%s', c.corner); c.modelfile = sprintf('"/GF8HP/models/spectre/allModels.scs" section=%s', c.corner);
Line # 29: c.simcmd = 'spectre -64 techsweep_180msrf.scs +log techsweep_180msrf.out'; That is the name you are giving to the spectre output file?
Line # 30: c.outfile = 'techsweep_180msrf.raw'; Is the name of the output file?
In my case what I have done is as follows: I created a test bench in Cadence virtuoso ADE XL separately for each MOS transistors with ideal DC voltage sources and created the testbench so that it matches the following netlisting for example for NMOS. And I repeated the same step for PMOS transistor. vnoi (vx 0) vsource dc=0 \n'... 'vdsn (vdn vx) vsource dc=ds \n'... 'vgsn (vgn 0) vsource dc=gs \n'... 'vbsn (vbn 0) vsource dc=-sb \n'...
Then I swept the channel length and did a parametric sweep of vds, vgs, and vsb. Once the simulation finishes, I provided the psf path in my techsweep_config file by doing: c.outfile = ‘/home/users/simulation/techsweep_config_psp_120nm_nmos_spectre/adexl/results/data/pmos_ch/psf/pmos_charct/psf’; For both PMOS and NMOS transistors separately. Any feedback will be appreciated. Thanks a lot