• 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 SKILL
  3. Enabling a pCell to Netlist as a noConn

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 8780
  • 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

Enabling a pCell to Netlist as a noConn

Ynishant
Ynishant over 2 years ago

Hi,

     I have a custom pCell with a layout and symbol view. The pCell is that of a component that doesn't have a sub-circuit or model associated with it. I'd like that component to netlist as a no-connect (noConn from the basic library) when I include it in a schematic. I'd like to do that as designers tend to include the component in their layouts and schematics for LVS. However, when they run a simulation, they'd essentially like the component to netlist as nothing. Is there a way to do that? Does what I'm asking for even make sense? For some background, I've attached the cdf to this post. 

Thank you!

  • Cancel
Parents
  • Ynishant
    Ynishant over 2 years ago

    /****************************************************/
    LIBRARY = "Custom_lib"
    CELL = "bump_pad"
    /****************************************************/

    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 "process"
    ?prompt "Process"
    ?defValue "Cu Pillar"
    ?choices '("Cu Pillar" "Solder Bump")
    ?type "cyclic"
    ;?callback "rdsFlipChipCB2()"
    ?callback "pad_cb( 'process )"
    ?storeDefault "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "pitch"
    ?prompt "Bump Pitch"
    ?defValue "140u"
    ?type "string"
    ?editable "nil"
    )
    cdfCreateParam( cdfId
    ?name "topM"
    ?prompt "Al Pad Size"
    ?defValue "95u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'topM )"
    )
    cdfCreateParam( cdfId
    ?name "ubm_cp"
    ?prompt "UBM Size"
    ?defValue "85u"
    ?choices '("70u" "85u" "88u" "90u" "95u")
    ?type "cyclic"
    ?display "cdfgData->process->value==\"Cu Pillar\" "
    ;?callback "rdsFlipChipCB2()"
    ?callback "pad_cb( 'ubm_cp )"
    ?storeDefault "yes"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "ubm_sb"
    ?prompt "UBM Size"
    ?defValue "90u"
    ?choices '("90u" "110u" "115u")
    ?type "cyclic"
    ?display "cdfgData->process->value==\"Solder Bump\" "
    ;?callback "rdsFlipChipCB2()"
    ?callback "pad_cb( 'ubm_sb )"
    ?storeDefault "yes"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "padwidth"
    ?prompt "Passivation Width"
    ?defValue "65u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'padwidth )"
    )
    cdfCreateParam( cdfId
    ?name "padlength"
    ?prompt "Passivation Length"
    ?defValue "65u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'padlength )"
    )
    cdfCreateParam( cdfId
    ?name "diel2"
    ?prompt "Diel2 Via"
    ?defValue "55u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'diel2 )"
    )

    cdfCreateParam( cdfId
    ?name "padaspect"
    ?prompt "Pad Aspect"
    ?defValue "single"
    ?choices '("single" )
    ;?choices '("single" "bar")
    ?type "cyclic"
    ?editable "nil"
    ;?callback "pad_wb_aspectCB()"
    ?storeDefault "yes"
    )

    cdfCreateParam( cdfId
    ?name "square_x"
    ?prompt "M4 Slot X Dimension(min 1um)"
    ?defValue "4u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'square_x )"
    )

    cdfCreateParam( cdfId
    ?name "square_y"
    ?prompt "M4 Slot Y Dimension(min 1um)"
    ?defValue "4u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'square_y )"
    )

    cdfCreateParam( cdfId
    ?name "spacing_x"
    ?prompt "M4 Slot X Spacing(<2um =>long rects for NPN)"
    ?defValue "2.5u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'spacing_x )"
    )

    cdfCreateParam( cdfId
    ?name "spacing_y"
    ?prompt "M4 Slot Y Spacing(min 2um)"
    ?defValue "2.5u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'spacing_y )"
    )
    cdfCreateParam( cdfId
    ?name "disable_slots"
    ?prompt "Disable slot patterns (draw your own)"
    ?defValue nil
    ?type "boolean"
    ?editable "t"
    ?storeDefault "yes"
    )

    ;;; Simulator Information
    cdfId->simInfo = list( nil )
    cdfId->simInfo->GoldenGate = '( nil
    performance nil
    opParamExprList nil
    backAnnotationHierarchy nil
    backAnnotationPropMapping nil
    libary ""
    ggElement ""
    ggLibrary ""
    namePrefix ""
    propMapping nil
    termOrder nil
    macroArguments nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )
    cdfId->simInfo->ads = '( nil
    opParamExprList nil
    uselib nil
    typeMapping nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    termOrder (in)
    componentName "bump_pad"
    netlistProcedure IdfSubcktCall
    )
    cdfId->simInfo->afs = '( nil
    modelParamExprList nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    namePrefix nil
    termOrder nil
    componentName nil
    netlistProcedure nil
    )
    cdfId->simInfo->afscosim = '( nil
    modelParamExprList nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    namePrefix nil
    termOrder nil
    componentName nil
    netlistProcedure 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
    propMapping (nil In in)
    instParameters (padwidth padlength)
    otherParameters nil
    namePrefix "X"
    termOrder (in)
    componentName subcircuit
    netlistProcedure ansCdlSubcktCall
    )
    cdfId->simInfo->auLvs = '( nil
    permuteRule ""
    propMapping nil
    deviceTerminals "in"
    instParameters (padwidth padlength)
    otherParameters nil
    namePrefix "X"
    termOrder (in)
    componentName "bump_pad"
    netlistProcedure ansLvsCompPrim
    )
    cdfId->simInfo->spectre = '( nil
    modelParamExprList nil
    optParamExprList nil
    opParamExprList nil
    stringParameters nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    termOrder nil
    componentName nil
    netlistProcedure nil
    )
    cdfId->simInfo->symphony = '( nil
    modelParamExprList nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    termOrder nil
    namePrefix ""
    componentName nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )

    ;;; Properties
    cdfId->formInitProc = "pad_m2cs_init"
    cdfId->doneProc = ""
    cdfId->buttonFieldWidth = 340
    cdfId->fieldHeight = 35
    cdfId->fieldWidth = 350
    cdfId->promptWidth = 175
    cdfId->paramDisplayMode = "parameter"
    cdfId->paramLabelSet = "pitch padwidth -process"
    cdfSaveCDF( cdfId )
    )

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Ynishant
    Ynishant over 2 years ago

    /****************************************************/
    LIBRARY = "Custom_lib"
    CELL = "bump_pad"
    /****************************************************/

    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 "process"
    ?prompt "Process"
    ?defValue "Cu Pillar"
    ?choices '("Cu Pillar" "Solder Bump")
    ?type "cyclic"
    ;?callback "rdsFlipChipCB2()"
    ?callback "pad_cb( 'process )"
    ?storeDefault "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "pitch"
    ?prompt "Bump Pitch"
    ?defValue "140u"
    ?type "string"
    ?editable "nil"
    )
    cdfCreateParam( cdfId
    ?name "topM"
    ?prompt "Al Pad Size"
    ?defValue "95u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'topM )"
    )
    cdfCreateParam( cdfId
    ?name "ubm_cp"
    ?prompt "UBM Size"
    ?defValue "85u"
    ?choices '("70u" "85u" "88u" "90u" "95u")
    ?type "cyclic"
    ?display "cdfgData->process->value==\"Cu Pillar\" "
    ;?callback "rdsFlipChipCB2()"
    ?callback "pad_cb( 'ubm_cp )"
    ?storeDefault "yes"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "ubm_sb"
    ?prompt "UBM Size"
    ?defValue "90u"
    ?choices '("90u" "110u" "115u")
    ?type "cyclic"
    ?display "cdfgData->process->value==\"Solder Bump\" "
    ;?callback "rdsFlipChipCB2()"
    ?callback "pad_cb( 'ubm_sb )"
    ?storeDefault "yes"
    ?parseAsNumber "yes"
    ?parseAsCEL "yes"
    )
    cdfCreateParam( cdfId
    ?name "padwidth"
    ?prompt "Passivation Width"
    ?defValue "65u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'padwidth )"
    )
    cdfCreateParam( cdfId
    ?name "padlength"
    ?prompt "Passivation Length"
    ?defValue "65u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'padlength )"
    )
    cdfCreateParam( cdfId
    ?name "diel2"
    ?prompt "Diel2 Via"
    ?defValue "55u"
    ?type "string"
    ?editable "nil"
    ?callback "pad_cb( 'diel2 )"
    )

    cdfCreateParam( cdfId
    ?name "padaspect"
    ?prompt "Pad Aspect"
    ?defValue "single"
    ?choices '("single" )
    ;?choices '("single" "bar")
    ?type "cyclic"
    ?editable "nil"
    ;?callback "pad_wb_aspectCB()"
    ?storeDefault "yes"
    )

    cdfCreateParam( cdfId
    ?name "square_x"
    ?prompt "M4 Slot X Dimension(min 1um)"
    ?defValue "4u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'square_x )"
    )

    cdfCreateParam( cdfId
    ?name "square_y"
    ?prompt "M4 Slot Y Dimension(min 1um)"
    ?defValue "4u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'square_y )"
    )

    cdfCreateParam( cdfId
    ?name "spacing_x"
    ?prompt "M4 Slot X Spacing(<2um =>long rects for NPN)"
    ?defValue "2.5u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'spacing_x )"
    )

    cdfCreateParam( cdfId
    ?name "spacing_y"
    ?prompt "M4 Slot Y Spacing(min 2um)"
    ?defValue "2.5u"
    ?type "string"
    ?editable "t"
    ?callback "pad_cb( 'spacing_y )"
    )
    cdfCreateParam( cdfId
    ?name "disable_slots"
    ?prompt "Disable slot patterns (draw your own)"
    ?defValue nil
    ?type "boolean"
    ?editable "t"
    ?storeDefault "yes"
    )

    ;;; Simulator Information
    cdfId->simInfo = list( nil )
    cdfId->simInfo->GoldenGate = '( nil
    performance nil
    opParamExprList nil
    backAnnotationHierarchy nil
    backAnnotationPropMapping nil
    libary ""
    ggElement ""
    ggLibrary ""
    namePrefix ""
    propMapping nil
    termOrder nil
    macroArguments nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )
    cdfId->simInfo->ads = '( nil
    opParamExprList nil
    uselib nil
    typeMapping nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    termOrder (in)
    componentName "bump_pad"
    netlistProcedure IdfSubcktCall
    )
    cdfId->simInfo->afs = '( nil
    modelParamExprList nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    namePrefix nil
    termOrder nil
    componentName nil
    netlistProcedure nil
    )
    cdfId->simInfo->afscosim = '( nil
    modelParamExprList nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    namePrefix nil
    termOrder nil
    componentName nil
    netlistProcedure 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
    propMapping (nil In in)
    instParameters (padwidth padlength)
    otherParameters nil
    namePrefix "X"
    termOrder (in)
    componentName subcircuit
    netlistProcedure ansCdlSubcktCall
    )
    cdfId->simInfo->auLvs = '( nil
    permuteRule ""
    propMapping nil
    deviceTerminals "in"
    instParameters (padwidth padlength)
    otherParameters nil
    namePrefix "X"
    termOrder (in)
    componentName "bump_pad"
    netlistProcedure ansLvsCompPrim
    )
    cdfId->simInfo->spectre = '( nil
    modelParamExprList nil
    optParamExprList nil
    opParamExprList nil
    stringParameters nil
    propMapping nil
    termMapping nil
    instParameters nil
    otherParameters nil
    termOrder nil
    componentName nil
    netlistProcedure nil
    )
    cdfId->simInfo->symphony = '( nil
    modelParamExprList nil
    optParamExprList nil
    propMapping nil
    termMapping nil
    termOrder nil
    namePrefix ""
    componentName nil
    instParameters nil
    otherParameters nil
    netlistProcedure nil
    )

    ;;; Properties
    cdfId->formInitProc = "pad_m2cs_init"
    cdfId->doneProc = ""
    cdfId->buttonFieldWidth = 340
    cdfId->fieldHeight = 35
    cdfId->fieldWidth = 350
    cdfId->promptWidth = 175
    cdfId->paramDisplayMode = "parameter"
    cdfId->paramLabelSet = "pitch padwidth -process"
    cdfSaveCDF( cdfId )
    )

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • skillUser
    skillUser over 2 years ago in reply to Ynishant

    Hi,

    I think that you need to set this component up using 'nlIgnore' on the schematic side, the master (i.e. the symbol view or 'spectre' view if you are using that) should contain the cellview property: nlIgnore="spectre", I think this should do what you want to do. Since you simply want to omit the device and don't need to worry about connectivity, this should be sufficient (for 2 (or more) terminals sometimes you want to short them together; there is another method for that).

    Best regards,


    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Ynishant
    Ynishant over 2 years ago in reply to skillUser

    Hi Lawrence, 

                        Thank you! I have a question about where to include the "nlAction" or "nlIgnore" options. I'm currently able to do it by adding a parameter using the SHIFT+Q method (SHIFT+Q--> Add--> nlAction , ignore). Is there a way to add the parameter to the CDF? Or, can I add it in the pCell definition, i.e. in the pCell SKILL code? I have looked around the documentation and I can't seem to find a way to package the pCell with the "nlIgnore" functionality....

    Regards,

    Nishant.  

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Ynishant
    Ynishant over 2 years ago in reply to Ynishant

    Ah, I just realized that the parameter can be added to the cdf. I think I'm all set, thank you Lawrence!

    • 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