• 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. Using expression evaluated data points as a function or...

Stats

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

Using expression evaluated data points as a function or a waveform from one test to the other in ADE assembler

sidm
sidm over 1 year ago

Hello, 

 

I have an expression in test1 which is evaluated from a "Tran" analysis to compute the frequency of an oscillator. This "tran" analysis runs 8 times as I am sweeping a variable "code" in the test1 as 0:1:7 and the oscillator frequency is computed at each code. I am using frequency(clip(VT("/osc") t1 t2)) to evaluate the frequency for a particular code value. By sweeping the code as  0:1:7 I get a plot of the frequency(clip(VT("/osc") t1 t2)) Vs code which I wish to use in the next test. 

 

I need to use this evaluated oscillator frequency Vs "code" data points into the next test using calcval or any other option. 

 

Running the tran analysis in test1 is essential to evaluate the expression as it cannot be evaluated using DC analysis . I am using IC618 ISR31 and Spectre Version 21.1.0.695.isr17 64bit.

 

Kindly suggest any possible solutions. 

 

regards 

  • Cancel
  • sidm
    sidm over 1 year ago

    Hello, 

    adding some details to query in previous message - 

    I have an expression in test1 which is evaluated from a "Tran" analysis to compute the frequency of an oscillator. I am using frequency(clip(VT("/osc") t1 t2)) to evaluate the frequency for a particular code value.

     

    Frequency = frequency(clip(VT("/osc") t1 t2))

    By sweeping the code as 0:1:7 I get a plot (screenshot below ) of the frequency(clip(VT("/osc") t1 t2)) Vs code which I wish to use in the next test. 

    I need to use this evaluated oscillator frequency Vs "code" data points into the next test using calcval or any other option. 

    regards 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to sidm

    What are you sweeping in the next test. Is it code too? If so, you should just be able to use calcVal("Frequency" "test1") (which should give a one to one correspondence of the value at the same sweep point values) . Knowing what you are trying to match up in the subsequent test is quite important to be able to give you an answer.  

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 1 year ago in reply to Andrew Beckett

    thanks a lot for the reply Andrew. Actually I am trying to find the codes in test1 which give me a particular frequency i.e. 45Mhz across different corners (kind of a frequency calibration). For example the plot I shared in previous message is at Typ corner 25degC 

    In test2 I am again running a transient simulation and wish to use the corner wise calibrated codes from test1 to re-evaluate the calibrated frequencies in test2.

    regards

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 1 year ago in reply to sidm

    Rather than me working through an example, it's simpler to point you at this: Techniques for Simulating Calibrated Circuits with Virtuoso ADE Assembler 

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 1 year ago in reply to Andrew Beckett

    thanks a lot for the reply Andrew. I had seen these and other similar articles on calcVal earlier but it seems I am unable to evaluate the calibrated codes (code_cal) correctly in test1. 

    code_cal=cross(Frequency 45000000)

    I get "eval err" when I use cross(Frequency 45000000) in test1 so it is not useful to pass code_cal to calcVal  in test2 to get the corresponding calibrated code for the standard transient simulation in test2. 

    calcVal("code_cal" "test1")

    May be my test1 sweep isn't correct enough to create Frequency as a function of the swept code 0:1:7 ??

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 1 year ago in reply to sidm

    Just to elaborate on my previous comment may be the issue is that he Frequency is a function of the code across the 8 transient simulations (000 to 111) but not for a single transient simulation hence code_cal=cross(Frequency 45000000) won't evaluate and hence cannot be used in test2 ?

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • sidm
    sidm over 1 year ago in reply to sidm

    The function seem to be evaluating fine in the calculator but not other wise - 

    regards 

    • 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