• 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. PasCdfDone errors from callbacks

Stats

  • Replies 5
  • Subscribers 143
  • Views 1323
  • Members are here 0

PasCdfDone errors from callbacks

BS202501273649
BS202501273649 13 days ago

I am using using SKILL to create a single instance and set some properties.  This code generally works fine on other PDKs but on this PDK I am sometimes seeing an error (though the error is wrapped in a warning (?!)):

WARNING* (CDF-262): Cannot call doneProc SKILL function '(apply GFcdfDone (db:0x3015251a))' because a SKILL error '*Error* PasCdfDone: failed to find valid initialization data!'.

I'll include the full transcript below but basically it creates a schematic, instantiates a single instance with `dbCreateParamInst` and then sets some parameters.  When the callbacks are invoked using `CCSinvokeCdfCallbacks` I am seeing this `PasCdfDone` error message even though I am using the flags on the `CCSinvokeCdfCallbacks` call which usually fixes that problem.

The device ends up correctly instantiated with the properties set correctly but the warning seems to imply that some part of the callback code has not executed correctly and so some parameters of the device might not be correct.

The really odd behaviour is that this is what happens the first time I run the code.  But if I do the creation and instantiation again then the error does not appear - as you can see below.

I am running this in Virtuoso IC23.1-64b.ISR15.37.   The version of CCSInvokeCdfCallbacks is CCSinvokeCdfCallbacks.il 04/25/22.17:40:23 1.19

procedure( createSchematic(pdkLibraryName libraryName cellName)

if(!ddGetObj(libraryName)
ddCreateLib( libraryName ".")
techBindTechFile( (ddGetObj libraryName) pdkLibraryName)
)
; Create Cellview
dbOpenCellViewByType(libraryName cellName "schematic" "schematic" "w")
)

procedure( createInst(cellview pdkLibraryName masterName instanceName)
let( (master instance)
master=dbOpenCellViewByType(pdkLibraryName masterName "symbol" "schematicSymbol" nil)
instance = dbCreateParamInst( cellview master instanceName 0:0 "R0" 1 )
schCheck(cellview)
dbSave(cellview)
instance
)
)

procedure( setProp(instance propName propValue)
let( (prop)
prop = dbSearchPropByName(instance propName)
if( prop then
dbReplaceProp(instance propName "string" propValue)
else
dbCreateProp(instance propName "string" propValue)
)
)
)

cellview = createSchematic("foundryLib" "testLib" "testCell")
instance = createInst(cellview "foundryLib" "foundryCell" "I0")

setProp(instance "dimensionMode" "FingerWidth")
setProp(instance "l" "50n")
setProp(instance "wf" "110n")
setProp(instance "n" "1")
CCSinvokeCdfCallbacks(cellview ?callInitProc t ?useInstCDF t ?order list( "dimensionMode" "wf" "l" "n"))
createSchematic
createInst
setProp
db:0x30152d9a
INFO (SCH-1170): Extracting "testCell schematic"
Warning: Pin "b" on instance "I0": floating input/output.
Warning: Pin "s" on instance "I0": floating input/output.
Warning: Pin "g" on instance "I0": floating input.
Warning: Pin "d" on instance "I0": floating input/output.
db:0x3015251a
db:0x30151b9f
db:0x30151ba0
db:0x30151ba1
db:0x30151ba2
t
*WARNING* **Info** when Finger Length is "0.050u", maximum allowable Finger Width is "35.000u"
*WARNING* **Info** when Finger Width is "0.110u", maximum allowable Finger Length is "10.000u"
*WARNING* (CDF-262): Cannot call doneProc SKILL function '(apply GFcdfDone (db:0x3015251a))' because a SKILL error '*Error* PasCdfDone: failed to find valid initialization data!'.
t


cellview = createSchematic("foundryLib" "testLib" "testCell")
instance = createInst(cellview "foundryLIb" "foundryCell" "I0")

setProp(instance "dimensionMode" "FingerWidth")
setProp(instance "l" "50n")
setProp(instance "wf" "110n")
setProp(instance "n" "1")
CCSinvokeCdfCallbacks(cellview ?callInitProc t ?useInstCDF t ?order list( "dimensionMode" "wf" "l" "n"))
db:0x30152d9a
INFO (SCH-1170): Extracting "testCell schematic"
Warning: Pin "b" on instance "I0": floating input/output.
Warning: Pin "s" on instance "I0": floating input/output.
Warning: Pin "g" on instance "I0": floating input.
Warning: Pin "d" on instance "I0": floating input/output.
db:0x30151d9a
db:0x3015181f
db:0x30151820
db:0x30151821
db:0x30151822
t
*WARNING* **Info** when Finger Length is "0.050u", maximum allowable Finger Width is "35.000u"
*WARNING* **Info** when Finger Width is "0.110u", maximum allowable Finger Length is "10.000u"
t


  • Cancel
  • Sign in to reply
Parents
  • Andrew Beckett
    Andrew Beckett 13 days ago

    You're using an up-to-date enough version of my callback-calling code, so I think you should just omit the ?useInstCDF t argument. It by default (nowadays) uses the actual effective CDF data (usually, unless you tell it not to) and not the "lookalike" approach I used in the past - that's only used for emulating the cdfgForm if needed (and nothing in the messages above suggests it is).

    If that doesn't work, can you let me know which GF PDK you're using and an affected device? Then I can test it.

    By the way, in your setProp function, you don't really need to use dbReplaceProp if it exists and dbCreateProp if it doesn't; you can always use dbReplaceProp (this works if the property exists or not). Needless to say, we recommend writing functions with a unique prefix to avoid clashes - names such as setProp, createSchematic etc are likely to clash with other code which may have different behaviour (that's just something I like to mention before you get burnt by it!)

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • BS202501273649
    BS202501273649 12 days ago in reply to Andrew Beckett

    Thanks for the quick response!

    I took out the ?useInstCDF t argument and that didn't prevent the problem.  I guess we should remove that from our code anyway but it doesn't seem to be the issue here.

    I'll PM you with the PDK specifics so you can try to reproduce.  Thanks again!  And for the code improvements.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 12 days ago in reply to BS202501273649
    BS202501273649 said:
    I'll PM you with the PDK specifics so you can try to reproduce

    You'll need to send me a friend request so you can do that (note, this is not an open invitation to others to do this - I normally decline direct friend requests as technical questions should be asked in the forums rather than to me directly - I don't have the capacity to deal with direct questions).

    Happy to investigate in this case, so please do contact me!

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • Andrew Beckett
    Andrew Beckett 12 days ago in reply to Andrew Beckett

    The particular PDK in question was storing some information on the cdfgForm during the formInitProc and then needing to access it not only during callbacks (which was handled) but also during the doneProc (which was not). That together with some trickery which meant that they discarded my faked cdfgForm and created their own (which wouldn't work in all circumstances, but that's beside the point). Anyway, I've now updated the code in the article How to call CDF callbacks procedurally from SKILL to update CDF parameters? (v1.21)

    Please download, and then call using (in your code above) - note the ?setCdfgForm t that you should add:

    CCSinvokeCdfCallbacks(cellview ?callInitProc t ?setCdfgForm t ?order list( "dimensionMode" "wf" "l" "n"))

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • BS202501273649
    BS202501273649 12 days ago in reply to Andrew Beckett

    Thanks very much. Super prompt and effective support!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Reply
  • BS202501273649
    BS202501273649 12 days ago in reply to Andrew Beckett

    Thanks very much. Super prompt and effective support!

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • 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