• 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. pcell eval fails on export cdl

Stats

  • Locked Locked
  • Replies 2
  • Subscribers 143
  • Views 9131
  • 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

pcell eval fails on export cdl

MorrisDH
MorrisDH over 2 years ago

Schematic pcell that appears to work fine in virtuoso experiences pcell evaluation failure when attempting to export a cdl.

*WARNING* (DB-270001): Pcell evaluation for UC16_DEV/switchR90_stackrows/schematic has the following error(s):
*WARNING* (DB-270002): ("eval" 0 t nil ("*Error* eval: undefined function" geGetEditCellView))
ERROR (OSSHNL-408): Failed to generate the netlist because of a PCell evaluation error on cellview
'UC16_DEV/switchR90_stackrows/schematic'. Set simStopNetlistOnPCellFailure to "ignore" to prevent this
error.

To debug I modified the code to run outside the pcell and generate the schematic view. Load the function and upon execution I see similar error. The code partially builds the schematic before generating the below error message.

*Error* arrayref: can't handle db:0x26ac7d1c[0]
<<< Stack Trace >>>
netG[i]
dbCreateConnByName(netG[i] inst "G")
for(i 0 (length(addM2Stack) - 1) (addM2Column = nth(i addM2Stack)) (pctBussColumn = nth(i pctBussStack)) ... )
let((cvId addM2Stack pctBussStack addM2Column pctBussColumn ... ) (cvId = geGetEditCellView()) (addM2Stack = reverse(parseString(addM2 ","))) (pctBussStack = reverse(parseString(pctBuss ","))) (netS = dbMakeNet(cvId "S")) ... )
switchR90_stackrowsSchPC()

I can delete all from the schematic and run again and there are no errors on the second invocation of the function.

The netG is defined as follows.
    netG    = makeTable("netG"    nil)

then inside a for loop with "i" as the value for the iteration.

  dbCreateConnByName(netG[i] gateResInst "MINUS")

      netG[i]    = dbMakeNet(cvId sprintf(nil "G<%d>"    i))

      dbCreateTerm(netG[i]    netG[i]->name    "inputOutput")

      dbCreateConnByName(netG[i]    inst "G")

        dbCreateConnByName(netG[i]    gateResInst "MINUS")

Obviously there is more code around these commands but it's to much I think to add here.

I'm not sure what is going wrong, why it works fine in a pcell, breaks on only first try and a schematic, and never works for cdl export. I don't think there anything wrong with the way I setting up the net and connections but hopefully I doing something completely wrong that is easily caught by someone here.

The could be something wrong in other parts of the code that I've not posted here. Not sure what that would be; it's very basic just instantiating a array of switches and resistors and doing the connections.

Thanks in advance,
Cheers,

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago

    The first problem is simply that your code is calling geGetEditCellView which is not legal in a PCell. You can't call graphic editor functions since there is no graphical editor environment in the stream interface, CDL netlisting (which uses "si") (plus in non-UI applications). You're only allowed to call core SKILL, db, dd, tech, cdf, abe and a few pc functions within PCells.

    The other points it's really hard to know without seeing the code and an example, but unless you remove the calls to geGetEditCellView(), it's never going to work.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • MorrisDH
    MorrisDH over 2 years ago in reply to Andrew Beckett

    The geGetEditCellView thing was used on temporarily for debugging.

    I understand that seeing all the code would be helpful. Was hoping there was something obvious about the way I was defining nets/terms/connections that would show the error of my ways.

    Submitted an SR on this issue.

    • 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