• 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 Design
  3. Virtuoso - How to Setup up rules check to give error during...

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 125
  • Views 2129
  • 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

Virtuoso - How to Setup up rules check to give error during netlist out in case of missing CDF param

roopakvasa
roopakvasa over 5 years ago

Hello All,

In Virtuoso schematic how do I  setup up "rules check" to give error during netlist out in case of missing CDF param ?

ICADV12.3-64B

Thanks.

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

    What do you mean by "missing CDF param"? I don't understand the requirement...

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • roopakvasa
    roopakvasa over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    In above snapshot we define NUM_BL param which is used as we decend inside to compute some equations.

    But if we have defined these parameter in netlist and simulate, equations inside the hierarchy can not computed and we get error as below:

    Error found by spectre in `L12G_P080_SEGIO_Q24_M8_S2_CP':`XSEGIOX2.XSEGIO1', in `L12G_P080_SEGIOX2_Q49_M8_S2_CTP':`XSEGIOX2', during hierarchy flattening.
        ERROR (SFE-1997): "netlist.sp" 2193: XSEGIOX2.XSEGIO1.XT0: parameter `l': Cannot run the simulation because an unknown parameter `NUM_BL' has been specified in expression `(NUM_BL-20)*BC_HEIGHT'. Correct the expression and rerun the simulation.

    So I want to avoid such case in a way like netlist out should fail if parameters are not defined.

    Thanks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • roopakvasa
    roopakvasa over 5 years ago in reply to Andrew Beckett

    Hi Andrew,

    In above snapshot we define NUM_BL param which is used as we decend inside to compute some equations.

    But if we have defined these parameter in netlist and simulate, equations inside the hierarchy can not computed and we get error as below:

    Error found by spectre in `L12G_P080_SEGIO_Q24_M8_S2_CP':`XSEGIOX2.XSEGIO1', in `L12G_P080_SEGIOX2_Q49_M8_S2_CTP':`XSEGIOX2', during hierarchy flattening.
        ERROR (SFE-1997): "netlist.sp" 2193: XSEGIOX2.XSEGIO1.XT0: parameter `l': Cannot run the simulation because an unknown parameter `NUM_BL' has been specified in expression `(NUM_BL-20)*BC_HEIGHT'. Correct the expression and rerun the simulation.

    So I want to avoid such case in a way like netlist out should fail if parameters are not defined.

    Thanks.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
  • Andrew Beckett
    Andrew Beckett over 5 years ago in reply to roopakvasa

    You could use this code to detect this and error out during netlisting:

    /* abErrorOnMissingParameter.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Dec 18, 2019 
    Modified   
    By         
    
    Example of checking for missing parameters used in expressions.
    For example, if you use pPar("someName") in an expression, but then
    "someName" is not defined in the CDF - this will lead to a simulation
    error normally. With this code, it will error at netlisting time instead.
    
    The code as provided will not error out of the CDF parameter has been
    defined, just not assigned a default value. In that case, if the
    user still doesn't specify a value on the instance of the cell, it would
    still fail with a simulator error - the problem is that otherwise you
    have to detect all sorts of other special cases which would be rather
    hard.
    
    To register the checker, use:
    
    abRegisterMissingParamSpectreFormatter()
    
    Note for ADE XL, Explorer and Assembler, the code must be loaded and the
    registration function called within the .cdsinit (not just the CIW)
    
    ***************************************************
    
    SCCS Info: @(#) abErrorOnMissingParameter.il 12/18/19.13:11:20 1.1
    
    */
    
    ; force the right contexts to get loaded, so that the spectreFormatter class
    ; exists
    asiGetTool('spectre)
    unless(isContextLoaded("spectreinl")
        loadContext(prependInstallPath("etc/context/spectreinl.cxt"))
    )
    
    ;------------------------------------------------------------------------
    ; Define a new formatter class, based on the standard spectre formatter
    ;------------------------------------------------------------------------
    defclass(abMissingParamSpectreFormatter (spectreFormatter)
     ()
    )
    
    /*************************************************************************
    *                                                                        *
    * nlPrintSubcktParameters((formatter abMissingParamSpectreFormatter) cv) *
    *                                                                        *
    *        Method for printing subckt parameters which checks that         *
    *      there is a value found for the parameter, and then calls the      *
    *                      standard method after that.                       *
    *                                                                        *
    *************************************************************************/
    
    defmethod(nlPrintSubcktParameters 
            ((formatter abMissingParamSpectreFormatter) cv)
        let((plist netlister cdf paramName)
            netlister=nlGetNetlister(formatter)
            cdf=nlGetCdf(cv)
            plist=nlGetParamList(cv)
            foreach(param plist
                paramName=car(param)
                ;------------------------------------------------------------
                ; the second part of the condition below allows CDF parameters
                ; which are defined, but have no default value. If you want
                ; to error out on this condition too, remove the || and end
                ; of the condition expression (leaving just cadr(param))
                ;------------------------------------------------------------
                unless(cadr(param) || (cdf && cdfFindParamByName(cdf paramName))
                    nlError(netlister 
                        sprintf(nil "Undefined parameter %s in cell %s"
                            paramName
                            nlGetCellName(cv)
                        )
                    )
                )
            )
            when(nextMethodp()
                callNextMethod()
            )
        )
    )
    
    /***************************************************************
    *                                                              *
    *          abRegisterMissingParamSpectreFormatter ()           *
    *                                                              *
    *   Register that this checker formatter is used instead of    *
    *                       spectreFormatter                       *
    *                                                              *
    ***************************************************************/
    
    defun(abRegisterMissingParamSpectreFormatter ()
        let((tool)
            tool=asiGetTool('spectre)
            asiSetNetlistFormatterClass(tool 'abMissingParamSpectreFormatter)
        ) ; let
    ) 
    

    • 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