• 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. deveice parameters dont match

Stats

  • Locked Locked
  • Replies 16
  • Subscribers 143
  • Views 15116
  • 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

deveice parameters dont match

galaxyGuo
galaxyGuo over 4 years ago

Hi,guys,I recently encountered a problem,I exported a skill file with spicevision, but the schemati formed by the skill file has some problems,the externally displayed parameters of the device are different from the internal ones. In fact, the internal parameters correspond to the spice netlist. How can I fix it?

thanks.

  • Cancel
Parents
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    You might want to follow this up with Concept Engineering since SPICE Vision is their tool, but one possibility might be to use this How to call CDF callbacks procedurally from SKILL to update CDF parameters? to invoke the callbacks after the schematics have been generated. You might need to pass the ?order argument to the function to limit trigger the callbacks in the right order (usually you don't need to trigger all of the callbacks with TSMC PDKs - probably the length and finger_width (you might need to check in the CDF to see the names of those parameters rather than what the prompt is).

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    Thanks, Andrew, I will try it,I still have a problem which about LVS,the netlist exported from the schematic have wrong component width but right length,I want to know if this problem is caused by the above problem, thanks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    Hi, Andrew, I load the CCSinvokeCdfCallbacks.il, the internal parameters are the same as the external parameters, which is exactly the opposite of what I want. How should I deal with it? thanks

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    I got it,I should use the CCSinvokeCdfCallbacks(geGetEditCellView() ?callInitProc t ?useInstCDF t ?order list("w") ,then everything will return to normal, how amazing

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to galaxyGuo

    Glad you figured it out before I had a chance to respond!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    Hi,Andrew, thank you very much for helping me solve this problem first,Is there a way to help me callback all the cells at once?  I try to callback top cell only ,but it doesn't work,:(   the callbackentirelib will spend a lot of time and I dont think the result will be what I want,it is still running, lol

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to galaxyGuo

    The CCSCdfCallbackEntireLib function in the article wasn't written by me (another colleague added it to my article), but you'll see that it suggests modifying the CCSinvokeCdfCallbacks() call to pass any other arguments you want (such as those you suggested earlier). Did you make that change?

    You can't run them in parallel (SKILL is single-threaded), but I wouldn't expect it to take that long if you've just got ?order list("w") since that's only calling a single callback per instance.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    do u means I should use CCSCdfCallbackEntireLib(“MYLIB” ?order list(“w”))just like CCSinvokeCdfCallbacks(),but it doesn't work, by the way, when I use CCSinvokeCdfCallbacks(geGetEditCellview()?orderlist(”w“))which means I only calling a single callback, but the diode‘s area and pj will also change, I just want callback mos‘ length and width ,the diode’s parameters is right ,so I dont want to change it  The first picture is before the callback, and the second picture is after the callback

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to galaxyGuo

    I've just looked at the CCSCdfCallbackEntireLib function in the article (which as I mentioned, I didn't write) and rewrote it so that it can now pass through all the keyword arguments to the underlying CCSinvokeCdfCallbacks function. This avoids having to take the code and modify it each time you want to pass different arguments. So now you can use it similarly to CCSinvokeCdfCallbacks and pass ?order, etc to the function.

    What you specifically need in this case is the ?filterFunc argument, as that allows you to skip certain components. The diodes in the tsmcN40 library do have a "w" and "l" parameter, and you don't want to call the callbacks for these since these will compute the area and perimeter from the w and l (there's a second mode which allows area and w to be specified, but nothing that allows area and perimeter to be specified and compute the w/l - that's a little ambiguous anyway). You may need the w and l ultimately for layout purposes, but for simulation and LVS purposes area and pj are sufficient.

    So download the latest CCSCdfCallbackEntireLib from the article, and also load this function:

    ; filtering function to return t for anything other than a PDK component
    ; with "dio" in the cellName
    procedure(CCFfilterDiodes(cdf paramName callback)
      destructuringBind((lib @optional cell) CCSgetLibCellFromCDF(cdf) 
        unless(lib=="tsmcN40" && pcreMatchp("dio" cell)
          t
        )
      )
    )

    Then you can do:

    CCSCdfCallbackEntireLib("mylib" ?order list("w") ?filterFunc 'CCFfilterDiodes)

    or:

    CCSCdfCallbackEntireLib("mylib" ?callInitProc t ?useInstCDF t ?order list("w") ?filterFunc 'CCFfilterDiodes)

    whichever you found worked best.

    I hope that helps!

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    wow, it works perfectly, I changed “dio” to “pnp” ,it also filtered all the pnp ,whether it is dio or pnp, are there any rules for naming here? And it seems that two filterFuncs are not allowed to exist at the same time, so if I want to filter the diodes and pnps, should I callback twice? just like CCSCdfCallbackEntireLib("mylib" ?order list("w") ?filterFunc 'CCFfilterDiodes and CCSCdfCallbackEntireLib("mylib" ?order list("w") ?filterFunc 'CCFfilterpnps.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to galaxyGuo

    You can only have a single filtering function. Calling it twice won't do what you want. In the filtering function, you can either just use a more complicated regular expression:

        unless(lib=="tsmcN40" && pcreMatchp("dio|pnp" cell)
    

    Or use something like this:

        unless(lib=="tsmcN40" && (pcreMatchp("dio" cell) || pcreMatchp("pnp" cell))
    

    Hope that helps.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    Hi, Andrew, thank you very much for answering my questions patiently these days, that helped me a lot, thanks again :)

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • galaxyGuo
    galaxyGuo over 4 years ago in reply to Andrew Beckett

    Hi, Andrew, thank you very much for answering my questions patiently these days, that helped me a lot, thanks again :)

    • 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