• 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. Collecting data from the 'tran' analysis for specific t...

Stats

  • Locked Locked
  • Replies 1
  • Subscribers 143
  • Views 7054
  • 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

Collecting data from the 'tran' analysis for specific time

aarthymani
aarthymani over 12 years ago

Hi, 

I am interested in collecting the data from the spectre 'tran' analysis for a particular instant of time, the variable I am interested in plotting is from the behavioural model(verilog-a) and it is for a array of instance. I tried 'value' function from the calculator, it works only on a single Instance/Curve and not for the whole family of curves. I find it very difficult when my  number of instances/Curve goes high. 

Am I wrong anywhere?

Can someone help

Thanks in Advance!

Aarthy  

I am sorry about posting in this forum! I am not able to delete the post or move it to "Custom IC Design" 

 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 12 years ago

    Aarthy,

    No problem with being on this forum. Anyway, the value() function will cope with a family - it produces a waveform of the results versus the swept variable.

    You can't do it on multiple instances though, because these are separate waveforms. Potentially you could group them, using a calculator function such as this, but not sure if that's really your main problem here.

    /* abGroup.il
    
    Author     A.D.Beckett
    Group      Custom IC (UK), Cadence Design Systems Ltd.
    Language   SKILL
    Date       Feb 13, 2008 
    Modified   
    By         
    
    Calculator function to group waveforms into a family so
    that they can be conveniently processed together.
    
    Can be registered as a special function in the calculator
    by using:
    
    abRegGroupSpecialFunction()
    
    Also, can directly call abGroup(v("1") v("2") v("3")...) to
    create the family.
    
    If used as a special function, you need to ensure there is one
    waveform in the buffer, and the remainder of entries on the 
    stack, and you get prompted for the number of expressions to
    make a group (aka family) from.
    
    ***************************************************
    
    SCCS Info: @(#) abGroup.il 02/13/08.14:03:12 1.1
    
    */
    
    /***************************************************************
    *                                                              *
    *                     (abCreateGroupForm)                      *
    *                                                              *
    *           Create the form for the special function           *
    *                                                              *
    ***************************************************************/
    (procedure (abCreateGroupForm)
      (let (nitems)
           (setq nitems (ahiCreateIntField
                        ?name 'nitems
                        ?prompt "Number of Expressions"
                        ?value 1
                        ))
           (calCreateSpecialFunctionsForm
            'abGroupForm
            (list (list nitems 0:0 200:20 160)
                  ))
           ))
    
    /***************************************************************
    *                                                              *
    *                  (abGroupSpecialFunctionCB)                  *
    *                                                              *
    *          Callback for the abGroup special function           *
    *                                                              *
    ***************************************************************/
    (procedure (abGroupSpecialFunctionCB)
      (calCreateSpecialFunction
       ?formSym 'abGroupForm
       ?formInitProc 'abCreateGroupForm
       ?formTitle "Group Expressions"
       ?formCallback 
       "(abGroupCalSpecialFunctionInput)"
       ))
    
    /*************************************************************************
    *                                                                        *
    *                    (abGroupCalSpecialFunctionInput)                    *
    *                                                                        *
    *   Create the expression from the form. This has to build an argument   *
    * with a list of STACK symbols - one less than the number of expressions *
    *         asked for, since one is coming from the input buffer.          *
    *                                                                        *
    *************************************************************************/
    (procedure (abGroupCalSpecialFunctionInput)
      (let (form nitems stackargs)
        (setq form (hiGetCurrentForm))
        (setq nitems (getq (getq form nitems) value))
        ;--------------------------------------------------------------------
        ; Need one less than nitems because the top entry on stack
        ; is always included
        ;--------------------------------------------------------------------
        (for i 2 nitems
             (setq stackargs (cons 'STACK stackargs)))
        (calSpecialFunctionInput 
          'abGroup 
          stackargs
          )
        )
      )
    
    /***************************************************************
    *                                                              *
    *                 (abRegGroupSpecialFunction)                  *
    *                                                              *
    *  Register the abGroup special function with the calculator   *
    *                                                              *
    ***************************************************************/
    (procedure (abRegGroupSpecialFunction)
      (calRegisterSpecialFunction
       (list "abGroup..." 'abGroupSpecialFunctionCB))
      t
      )
    
    /*************************************************************************
    *                                                                        *
    *              (abGroup @key (name 'index) @rest waveforms)              *
    *                                                                        *
    * The function that does the work. Takes a variable number of arguments, *
    *  each of which is a waveform to add to the family. The sweep variable  *
    *   for the family is specified by the ?name arg if desired, otherwise   *
    *                         it defaults to 'index.                         *
    *                                                                        *
    *************************************************************************/
    (procedure (abGroup @key (name 'index) @rest waveforms)
      (let (family (count 1))
        (setq family (famCreateFamily name 'double))
        (foreach wave waveforms
                 (famAddValue family (postincrement count) wave)
                 )
        family
        )
      ) ; procedure

     

    Regards,

    Andrew.

     

    • 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