• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC Design
  3. Unit of self_gain in BSIM4(V4.5)

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 124
  • Views 3234
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Unit of self_gain in BSIM4(V4.5)

wgtkan
wgtkan over 5 years ago

Hello,

I am characterizing a  BSIM4 MODEL (V4.5). In my variable mapping, I have different dc parameters to be mapped and one of them is self_gain with the unit of rall. 

When I run the code, I get an error that says that Reference to non-existent field 'rall'.

My Cadence virtuoso version is: IC 6.1.8-64b.500.9 and my spectre version is 19.1.0.237.isr3 

Perhaps there might be a change of unit that I am not aware of.

I have provided more details below. Any idea how to proceed with this issue?

Thanks for your help. 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago

    I have no idea what you mean by "When I run the code". What code? What is this variable mapping you're talking about? I've no idea what "rall" might be, but it's presumably something in your setup or what you're doing.

    You're really going to have to provide more detail if you expect an answer.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wgtkan
    wgtkan over 5 years ago in reply to Andrew Beckett

    Hello Andrew,

    Thank you for your prompt response. I am attaching the Matlab code. I am running techsweep_config_bsim4_180_spectre.m by using techsweep_spectre_run. Inside,   techsweep_config_bsim4_180_spectre.m, code line # 56 and #78, I have DC parameters 'mn:self_gain','rall'and 'mp:self_gain','rall', where the parameters are self_gain and their units 'rall' respectively. My question is what is the unit of the DC parameter self_gain? If you do a simple DC sweep of NFET or PFET and go to result > print > operating point and click on the transistor, you see, self-gain listed as one of the parameters.   

    Thanks a lot and stay safe.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wgtkan
    wgtkan over 5 years ago in reply to wgtkan

    Hello,

    Any idea how should I proceed with this issue?

    Thanks a lot in advance.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to wgtkan

    First of all, you should be polite enough to wait a little. It's a Sunday evening (for me) and I'm really not going to work on this tonight. This forum is for community assistance, and should come with no expectation of a quick response from anyone who answers here - including those of us from Cadence, who answer here in our spare time and not as part of our jobs (which often is covering the official support channel).

    self_gain has no units (it's a gain, so it's dimensionless). I've not worked out what your MATLAB code is doing (I'd have to try to create some fake models to emulate what your code does, assuming I can find some time to look at it), so I've not tried to work out why you have this 'rall' value in the code. Presumably you wrote it, so why did you put 'rall' there?

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wgtkan
    wgtkan over 5 years ago in reply to Andrew Beckett

    Hello Andrew,

    My apologies. I didn’t mean to be impolite.

    you have helped me a lot over the years. 
    I didn’t know what unit to put there. 
    I am really sorry again.

    Thanks a lot.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to wgtkan

    OK, I realised that you didn't provide enough code for me to run anything - you provided MATLAB with a table and the netlist generation, but nothing that retrieved the results, or anything that actually shows the error - you also didn't show the error anywhere.

    Anyway, I did some experiments with a simple netlist where I did a dc sweep of a bsim4 model and saved all the operating point data in the dc sweep. I'd already checked an info analysis from a dc operating point and found that self_gain was unitless, but with a dc sweep as follows:

    //
    
    model nch bsim4 type=n
    
    Vd (d 0) vsource dc=1.2
    Vg (g 0) vsource dc=1.0
    M1 (d g 0 0) nch w=1u l=0.2u
    
    sweep1 sweep param=dc dev=Vg start=0.1 stop=1.2 step=0.1 {
      dc dc dev=Vd start=0.1 step=0.1 stop=1.2
    //  dcOpInfo info what=oppoint where=rawfile
    }
    
    save M1:oppoint

    the self_gain has a unit of "-real" in the PSF data (see the y axis in ViVA):

    I assume the minus is because real is probably a keyword in PSF.

    Anyway, for some odd reason (probably because the "-" is a special character in MATLAB) this gets translated into "rall" by cds_srr (there's no usage of cds_srr in the code  you posted, but I assume you're using that). I don't know why it gets translated to rall - this seems peculiar to me:

    >> data=cds_srr('testbsim4.raw','sweep1_dc-sweep','M1:self_gain')

    data =

    struct with fields:

    info: {'rall' '' 'dc' 'V' 'Vg_dc' 'V'}
    Vg_dc: [0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1 1.1000 1.2000]
    dc: [12×1 double]
    rall: [12×12 double]

    So if you're needing the field to access, it's called rall . I don't know what your real problem is though because you've not provided enough code or shown the error you're getting.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • wgtkan
    wgtkan over 5 years ago in reply to Andrew Beckett

    Hello Andrew,

    The unit of self_gain is real and it is working now.

    Thank you very much indeed.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to wgtkan

    No idea why - I managed to download the code you posted before you deleted it, and it works for me as-is (with 'rall'). In fact it fails if I change it to "real". Maybe this was dependent upon the version of MATLAB you're using (I was running R2019a as it was what I happened to have installed on my laptop). I used the same spectre version as you.

    Anyway, it's solved now for you, which I guess is all that matters. 

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information