CDF/pcell problems cadence 6.1

Discussion in 'Cadence' started by Paul Shepherd, Dec 20, 2010.

  1. I am trying to build an extremely simple PDK and have run into an
    issue which might be a bug. I'm looking for some feedback to figure
    out if I have overlooked something.

    I have built a graphical PCell for an NFET which has parameters
    "width", "length", and "fingers". I have tested this on it's own, and
    it works fine. Now I am creating a symbol and CDF data so that later I
    will be able to run LVS checks and simulations. When I attempt to
    instantiate the layout PCell, or edit the parameters in properties of
    the symbol or layout PCell, the parameters always return to their
    default values. The callback script is working, but something else is
    forcing things to always be return to the default value whenever I hit
    "OK" or "Apply".

    Example of the skill code dumped for "w" parameter:
    cdfCreateParam( cdfId
    ?name "w"
    ?prompt "w"
    ?units "lengthMetric"
    ?defValue "4u"
    ?type "string"
    ?use "t"
    ?display "t"
    ?editable "t"
    ?callback "cdfgData->width->value =
    cdfParseFloatString( cdfgData->w->value )/1e-6"
    ?dontSave "nil"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )

    Properties dumped from the CDF edit dialog:
    cdfId->formInitProc = ""
    cdfId->doneProc = ""
    cdfId->buttonFieldWidth = 340
    cdfId->fieldHeight = 35
    cdfId->fieldWidth = 350
    cdfId->promptWidth = 175
    cdfId->instNameType = "schematic"
    cdfId->instDisplayMode = "cellName"
    cdfId->netNameType = "schematic"
    cdfId->termSimType = "DC"
    cdfId->termDisplayMode = "none"
    cdfId->paramSimType = "DC"
    cdfId->paramEvaluate = "t nil nil nil nil"
    cdfId->paramDisplayMode = "parameter"
    cdfId->paramLabelSet = "w l Fingers"
    cdfSaveCDF( cdfId )


    Thanks in advance!
     
    Paul Shepherd, Dec 20, 2010
    #1
  2. Paul Shepherd wrote, on 12/20/10 22:07:
    Hi Paul,

    I think I'd have to see the complete example - rather hard to tell from just the
    above. Either can you post it, or contact http://support.cadence.com and log a
    service request with Cadence?

    Regards,

    Andrew.
     
    Andrew Beckett, Dec 22, 2010
    #2
  3. Thanks Andrew, here is the complete output:


    /****************************************************/
    LIBRARY = XXXXXXXX
    CELL = "NMOSenh"
    /****************************************************/

    let( ( libId cellId cdfId )
    unless( cellId = ddGetObj( LIBRARY CELL )
    error( "Could not get cell %s." CELL )
    )
    when( cdfId = cdfGetBaseCellCDF( cellId )
    cdfDeleteCDF( cdfId )
    )
    cdfId = cdfCreateBaseCellCDF( cellId )

    ;;; Parameters
    cdfCreateParam( cdfId
    ?name "w"
    ?prompt "w"
    ?units "lengthMetric"
    ?defValue "4u"
    ?type "string"
    ?use "t"
    ?display "t"
    ?editable "t"
    ?callback "cdfgData->width->value =
    cdfParseFloatString( cdfgData->w->value )/1e-6"
    ?dontSave "nil"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "l"
    ?prompt "l"
    ?units "lengthMetric"
    ?defValue "2u"
    ?type "string"
    ?use "t"
    ?display "t"
    ?editable "t"
    ?callback "cdfgData->length->value =
    cdfParseFloatString( cdfgData->l->value )/1e-6"
    ?dontSave "nil"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "width"
    ?prompt "PCell width"
    ?defValue 4.0
    ?type "float"
    ?display "t"
    ?dontSave "nil"
    ?storeDefault "yes"
    )
    cdfCreateParam( cdfId
    ?name "length"
    ?prompt "PCell length"
    ?defValue 2.0
    ?type "float"
    ?display "t"
    ?dontSave "nil"
    ?storeDefault "yes"
    )
    cdfCreateParam( cdfId
    ?name "fingers"
    ?prompt "fingers"
    ?defValue 1
    ?type "int"
    ?use "t"
    ?display "t"
    ?editable "t"
    ?dontSave "nil"
    ?storeDefault "yes"
    )

    ;;; Simulator Information
    cdfId->simInfo = list( nil )
    cdfId->simInfo->ams = '( nil
    isPrimitive nil
    extraTerminals nil
    propMapping nil
    termMapping nil
    termOrder nil
    componentName nil
    excludeParameters nil
    arrayParameters nil
    stringParameters nil
    referenceParameters nil
    enumParameters nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )
    cdfId->simInfo->auCdl = '( nil
    dollarEqualParams nil
    dollarParams nil
    modelName ""
    namePrefix ""
    propMapping nil
    termOrder nil
    componentName nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )
    cdfId->simInfo->auLvs = '( nil
    namePrefix ""
    permuteRule ""
    propMapping nil
    deviceTerminals ""
    termOrder nil
    componentName nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )
    cdfId->simInfo->hspiceD = '( nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    termOrder nil
    namePrefix ""
    componentName nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )
    cdfId->simInfo->spectre = '( nil
    modelParamExprList nil
    optParamExprList nil
    opParamExprList nil
    stringParameters nil
    propMapping nil
    termMapping nil
    termOrder nil
    componentName nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )

    ;;; Properties
    cdfId->formInitProc = ""
    cdfId->doneProc = ""
    cdfId->buttonFieldWidth = 340
    cdfId->fieldHeight = 35
    cdfId->fieldWidth = 350
    cdfId->promptWidth = 175
    cdfId->instNameType = "schematic"
    cdfId->instDisplayMode = "cellName"
    cdfId->netNameType = "schematic"
    cdfId->termSimType = "DC"
    cdfId->termDisplayMode = "none"
    cdfId->paramSimType = "DC"
    cdfId->paramEvaluate = "t nil nil nil nil"
    cdfId->paramDisplayMode = "parameter"
    cdfId->paramLabelSet = "w l Fingers"
    cdfSaveCDF( cdfId )
    )
     
    Paul Shepherd, Dec 30, 2010
    #3
  4. Paul Shepherd wrote, on 12/30/10 17:29:
    Paul,

    I can't see any good reason why this should happen. I think I'd need to see the
    pcell too, and know exactly what version you're using, and so on.

    Regards,

    Andrew.
     
    Andrew Beckett, Jan 4, 2011
    #4
Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.