• 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. assert results

Stats

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

assert results

jshafer
jshafer over 15 years ago

How can I get the Spectre assert results using SKILL? I want to be able to set some asserts, run corners using the corners tool, and get back a list of violations at each corner. I can see SOME of the results using the results browser, but it doesn't tell me which device instance is in violation. The ADE window does using Results|Violations Display. So there must be some way to get this data. If I open the tranViolations.violations file in the PSF directory using a hex editor, I can see instance names in there. So the data is stored, but getting at it is the mystery here.

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 15 years ago

    You can use these commands to get info about the assertions themselves:

    selectResult('asserts)
    outputs() => names of all the asserts
    assInfo=getData("/peakFail") ; peakFail is the name of one of my asserts
    ocnPrint(assInfo)  ; shows the info associated with that assertion - for example:

     ocnPrint(a)
    
    signal            getData("/peakFail" ?resultsDir "simulation/ampTest/spectre/schematic/psf" ?result "asserts-info.assert")
    
    dev               I7.Q0
    duration          0
    expr
    info              no
    level             warning
    max               4.5
    message
    min               0
    mod
    modelparam
    name              peakFail
    param             vce
    primitive
    sub
    values
    
    

    I could then get individual parameters by doing:

    pv("/peakFail" "max") => "4.5"

    For the violations, you can use:

    selectResult("tranViolations-violations")
    outputs() => list of violation names (these are of the form assertion.instance.violationN).
    viol=getData("peakFail.I7.Q0.violation1")
    viol->??  ; lists all the property name/value pairs . e.g. startStep, endStep, duration
    pv("peakFail.I7.Q0.violation" "startStep") => 1.981172e-07
    ; or
    viol->startStep  ; gives the same thing

    If you want to find the instance name from the violation, you can use:

    drlGetProperty(viol "instance") => ("I7.Q0") 

    The other properties you can get with drlGetProperty on a violation are "assert", "instance", "model", "expression", "severity", "status".

    Note that drlGetProperty is not documented or public - you should probably log a service request with Cadence Support to request that this (or an equivalent function) is made public.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • jshafer
    jshafer over 15 years ago

    Thanks, Andrew. I had figured everything out except the drlGetProperty() function. I'll ask them to make it public.

    • 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