The Designer's Guide Community
Forum
Welcome, Guest. Please Login or Register. Please follow the Forum guidelines.
May 18th, 2024, 7:54pm
Pages: 1
Send Topic Print
How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing? (Read 7402 times)
boldbutcaution
New Member
*
Offline



Posts: 3

How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Apr 06th, 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.
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Reply #1 - 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.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
boldbutcaution
New Member
*
Offline



Posts: 3

Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Reply #2 - 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"
Back to top
 
 
View Profile   IP Logged
boe
Community Fellow
*****
Offline



Posts: 615

Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Reply #3 - 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
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Reply #4 - 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?
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
boldbutcaution
New Member
*
Offline



Posts: 3

Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Reply #5 - 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.
Back to top
 
 
View Profile   IP Logged
Geoffrey_Coram
Senior Fellow
******
Offline



Posts: 1999
Massachusetts, USA
Re: How to write ad as pd ps for Spectre simulation in Virtuoso Schematic Editing?
Reply #6 - 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.
Back to top
 
 

If at first you do succeed, STOP, raise your standards, and stop wasting your time.
View Profile WWW   IP Logged
Pages: 1
Send Topic Print
Copyright 2002-2024 Designer’s Guide Consulting, Inc. Designer’s Guide® is a registered trademark of Designer’s Guide Consulting, Inc. All rights reserved. Send comments or questions to editor@designers-guide.org. Consider submitting a paper or model.