• 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. Change default "analogLib" => "cap" CDF auCdl netlist modelName...

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 2614
  • 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

Change default "analogLib" => "cap" CDF auCdl netlist modelName "CP" at schematic instance level with on-disk persistence from SKILL

Luca Pacher
Luca Pacher over 6 years ago

For an analog-on-top top-level signoff LVS I need to have a few dummy capacitors from analogLib instantiated in the top-level schematic of my design to match full-chip LVS. From the top-level schematic in Virtuoso I generate a CDL netlist with the si netlister to be compared with a CDL netlist generated by a third party layout extraction tool.

The final LVS doesn't match only because those dummy capacitors by default are netlisted by si with their default "CP" modelName as registered in CDF simInfo~>auCdl property list, while the mapping file from the foundry maps those dummy extra capacitors into capacitors from analogLib with modelName "CM" causing mismatch errors between layout and schematic.

If I edit by hand the CDL netlist generated by si by replacing all "CP" occurrences with "CM" the LVS is clean. Indeed, I would prefer to have si to netlist my schematic and export dummy capacitors with modelName "CM" as requested.

There are a lot of documentation on Cadence Online Suppor and SKILL examples about CDF and auCdl starting from

https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nXDrEAM&pageName=ArticleContent&oMenu=People%20who%20viewed%20this%20also%20viewed

but for me it's definitely not clear if I can modify with on-disk persistence the CDF  simInfo~>auCdl properties at the instance level without the need of making a local copy of the component from analogLib and override CDFs in the base-layer on that copy as described in

https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nVoxEAE&pageName=ArticleContent

I tried to write a simple SKILL script that opens the top-level schematic view that I want to netlist, loops over all instances, gets CDFs if the instance is a cap from analogLib and tries to override modelName in the simInfo~>auCdl section but it doesn't work :

cv = dbOpenCellViewByType("myLibName" "myCellName" "schematic" nil "a")

foreach(instPtr cv~>instances

   ;; process ONLY dummy capacitors
   if(instPtr~>libName == "analogLib" && instPtr~>cellName == "cap"

   then

      printf("Updating CDF for cell name: %s\n" instPtr~>cellName)

      instCdfPtr = cdfGetInstCDF(instPtr)

      putpropq(

         getq(instCdfPtr simInfo) '( nil
            netlistProcedure   ansCdlCompPrim
            instParameters     (C)
            componentName      cap
            termOrder          (PLUS MINUS)
            propMapping        (nil C c)
            namePrefix         "C"
            modelName          "CM"  => this value by default is "CP" and I want it to become "CM" for all dummy capacitors from analogLib in my schematic view
         )
         auCdl
      )

      cdfSaveCDF(instCdfPtr)  => this fails with " *WARNING* Invalid CDF data type - instData"
      cdfRefreshCDF(cv)       => this fails because cv is not a ddObj pointer

   )   ;; if
)   ;; foreach


schCheck(cv)

dbSave(cv)
dbClose(cv)

Thanks in advance, any hint or suggestion will be more than appreciated

Regards

Luca

  • Cancel
Parents
  • RiadKaced
    RiadKaced over 6 years ago

    Hi,

    1. *WARNING* Invalid CDF data type - instData. You are getting this error because you can save only base-level CDF descriptions. You cannot pass an instance CDF to the cdfSaveCDF() function. The warning is a bit obscure as it fails you on the data Type. In fact, cdfSaveCDF() expects an argument of type g_cdfDataId, however an instance CDF returns an object of type instData, you cam run: instCdfPtr~>type, this will return "instData".

    You have 2 alternatives to work around this:

    1. Work at "User Cell CDF", All the changes are made at user and effective CDF level and are stored into the memory. The user-level CDF is a user-specific overlay description on top of the base-level CDF for a cell. The effective-level CDF is an overlay of a user-level CDF description on top of a corresponding base-level CDF description. This will be a much faster solution than iterating on instances of aa given design, you don't need write permissions on the design as well. the issue is you lose everything when you close virtuoso.

    2. Working at Effective CDF level for signoff purposes is dangerous bacause you cannot reproduce your results in a regression system unless you load/run the SKILL code that updates the CDF at start. A better and more reliable solution isfor you to copy the analogLib/cap cell into a project library, update the base CDF and use this cell accross your project. This is a very common practice in most design teams

    Riad.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • RiadKaced
    RiadKaced over 6 years ago

    Hi,

    1. *WARNING* Invalid CDF data type - instData. You are getting this error because you can save only base-level CDF descriptions. You cannot pass an instance CDF to the cdfSaveCDF() function. The warning is a bit obscure as it fails you on the data Type. In fact, cdfSaveCDF() expects an argument of type g_cdfDataId, however an instance CDF returns an object of type instData, you cam run: instCdfPtr~>type, this will return "instData".

    You have 2 alternatives to work around this:

    1. Work at "User Cell CDF", All the changes are made at user and effective CDF level and are stored into the memory. The user-level CDF is a user-specific overlay description on top of the base-level CDF for a cell. The effective-level CDF is an overlay of a user-level CDF description on top of a corresponding base-level CDF description. This will be a much faster solution than iterating on instances of aa given design, you don't need write permissions on the design as well. the issue is you lose everything when you close virtuoso.

    2. Working at Effective CDF level for signoff purposes is dangerous bacause you cannot reproduce your results in a regression system unless you load/run the SKILL code that updates the CDF at start. A better and more reliable solution isfor you to copy the analogLib/cap cell into a project library, update the base CDF and use this cell accross your project. This is a very common practice in most design teams

    Riad.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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