The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Simulators >> Circuit Simulators >> How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
https://designers-guide.org/forum/YaBB.pl?num=1302085117

Message started by boldbutcaution on Apr 6th, 2011, 3:18am

Title: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by boldbutcaution on Apr 6th, 2011, 3:18am

Hello,
I am new in Virtuoso. May I ask how to add drain/source diffusion area and perimeter "ad as pd ps" of MOSFET for Spectre simulation in Virtuoso Schematic Editing? Given that I only have spectre model and (symbol, hspice and spectre views) for PMOS & NMOS cells with simple CDF of only L & W and with only design rule document. I searched many webs just saying "typing in W & L, then all ad as pd ps can be automatically calculated!" But I can't find how to make by myself. Would anyone be generous to tell how to do?

If my post is at wrong forum, would you please help to move to proper forum? And please kindly let me know.

Thank you very much for your help.
I'm eager to know how to make these. Thanks a lot.

Title: Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by Geoffrey_Coram on Apr 6th, 2011, 9:32am

Do you have write access to the CDF?  I think there's a way to add CDF parameters if you do.

Title: Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by boldbutcaution on Apr 6th, 2011, 6:45pm

Yes, I can modify CDF data. Some people told me that I can write the followings in the component parameters inside CDF. In fact, the generated spectre nestlist does not automatically calculate but just lists out the equations of ad, as, pd & ps respectively
(e.g. P1 (D G S B) ne2 w=nw l=nl as=0.48*(nw) ad=0.48*(nw) ps=0.96+2*(nw) pd=0.96+2*(nw))
Since I use .option scale=1e-6 to insert um, the above equations automatically multiple 1e-6 & 1e-12 to their length and area respectively.

Please kindly help to show step-by-step how to set automatic calculation of ad,as,pd,ps without using fixed constant equations shown above because this mos symbol cannot be used in any other process with different constant!

Thank you for your help & kindness
cdfCreateParam( cdfId
       ?name           "model"
       ?prompt         "Modelname"
       ?defValue       "ne2"
       ?type           "string"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "m"
       ?prompt         "Multiplier"
       ?defValue       ""
       ?type           "string"
       ?display        "artParameterInToolDisplay('m)"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "l"
       ?prompt         "length"
       ?defValue       "pPar(\"ln\")"
       ?type           "string"
       ?callback       "nMOSl()"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "w"
       ?prompt         "width"
       ?defValue       "pPar(\"wn\")"
       ?type           "string"
       ?callback       "nMOSw()"
       ?parseAsCEL     "yes"
   )
     cdfCreateParam( cdfId
       ?name           "ad"
       ?prompt         "Drain diffusion area"
       ?defValue       "0.48*iPar(\"w\")"
       ?type           "string"
       ?display        "artParameterInToolDisplay('ad)"
       ?parseAsNumber  "yes"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "as"
       ?prompt         "Source diffusion area"
       ?defValue       "0.48*iPar(\"w\")"
       ?type           "string"
       ?display        "artParameterInToolDisplay('as)"
       ?parseAsNumber  "yes"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "pd"
       ?prompt         "Drain diffusion periphery"
       ?units          "lengthMetric"
       ?defValue       "0.96+2*iPar(\"w\")"
       ?type           "string"
       ?display        "artParameterInToolDisplay('pd)"
       ?parseAsNumber  "yes"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "ps"
       ?prompt         "Source diffusion periphery"
       ?units          "lengthMetric"
       ?defValue       "0.96+2*iPar(\"w\")"
       ?type           "string"
       ?display        "artParameterInToolDisplay('ps)"
       ?parseAsNumber  "yes"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "nrd"
       ?prompt         "Drain diffusion resistor squares"
       ?defValue       "(0.16+0.22/2)/iPar(\"w\")"
       ?type           "string"
       ?display        "artParameterInToolDisplay('nrd)"
       ?parseAsNumber  "yes"
       ?parseAsCEL     "yes"
   )
   cdfCreateParam( cdfId
       ?name           "nrs"
       ?prompt         "Source diffusion resistor squares"
       ?defValue       "(0.16+0.22/2)/iPar(\"w\")"
       ?type           "string"
       ?display        "artParameterInToolDisplay('nrs)"
       ?parseAsNumber  "yes"
       ?parseAsCEL     "yes"
   )

The simulation information is shown below.
cdfId->simInfo->spectre = '( nil
       modelParamExprList nil
       optParamExprList  nil
       opParamExprList   nil
       stringParameters  nil
       propMapping       nil
       netlistProcedure  ansSpectreDevPrim
       otherParameters   (model)
       instParameters    (w l as ad ps pd nrd nrs rsc rdc ld ls m trise region)
       termOrder         (D G S B)
       termMapping       (nil D d G g S s B b)
       namePrefix        "M"
       componentName     mos2
       current           port
   )
cdfId->simInfo->hspiceD = '( nil
       termMapping       (nil D \,D G \,G S \,S B \,B)
       netlistProcedure  hspiceDCompPrim
       instParameters    (m w l ad as pd ps nrd nrs rdc rsc off Vds Vgs Vbs dtemp geo)
       otherParameters   (model)
       componentName     nmos
       termOrder         (D G S B)
       dataAccessMap     (IDC((D "id")))
       propMapping       (nil vds Vds vgs Vgs vbs Vbs)
       namePrefix        "M"

Title: Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by boe on Apr 14th, 2011, 4:10am

boldbutcaution,

boldbutcaution wrote on Apr 6th, 2011, 6:45pm:
Please kindly help to show step-by-step how to set automatic calculation of ad,as,pd,ps without using fixed constant equations shown above because this mos symbol cannot be used in any other process with different constant!
ad, as, ... are process dependent, so somewhere you will need to define the process parameters.
You could e.g. change the equations for ad, ad, ... in your CDFs when you change the process. Why is this not acceptable for you?
B O E

Title: Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by Geoffrey_Coram on Apr 14th, 2011, 8:17am

The BSIM3/BSIM4 models in most simulators have default calculations for estimating ad/as/pd/ps when they are not specified.  Are you sure you need to specify them in the netlist?

Title: Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by boldbutcaution on May 2nd, 2011, 7:11pm

Thanks boe & Geoffrey_Coram,
I am looking for some way that I don't need to type in the value of the constant. Instead, I prefer to using variable and then use different file containing these variables for each process. This is more convenience, is this possible & how?

Geoffrey_Coram said, "The BSIM3/BSIM4 models in most simulators have default calculations for estimating ad/as/pd/ps when they are not specified.  Are you sure you need to specify them in the netlist?"
May I know where I can know my BSIM3/BSIM4 did automatically calculate ad/as/pd/ps or not? If not, how could I add in CDF? Some people said writing SKILL language to do but I don't know how? Any examples how to do?

If anyone know, please kindly let me .
Thanks in advance for your comment/replies.

Title: Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Post by Geoffrey_Coram on May 3rd, 2011, 6:59am

BSIM4 has parameters DMCG, DMCI, DMDG that are used with W to compute the diffusion area; I expect if you specify those model parameters, you will get AD/AS/PD/PS calculated.

You should get the operating-point report for your device, and/or make up a test netlist with a single device and a simple JSS/JSD and CJS/CJD so you can measure the diode current and capacitance and confirm.

The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.