• 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. use events in spectreMDL expressions

Stats

  • Locked Locked
  • Replies 3
  • Subscribers 126
  • Views 7090
  • 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

use events in spectreMDL expressions

Zol
Zol over 2 years ago

I am exploring spectreMDL. One of the feature I would like to use at the  moment is to stop a transient simulation at a given condition. My current DUT needs to be configured, and it takes different amount of time depending on the PVT corners.  I detect the time-event when the DUT is ready with an assert. I use this assert in a paramset file. Is there a way to either reference an assert, or to define an event and use it in MDL expressions? In the example below I would like to disable the cross() function before an event. How could I do it?

alias measurement stop_after_1cycle {
  export real event
  run tran
  event = cross(sig=V(sig), dir='rise, thresh=1.25, n=2, start=@(myassert))
}
run stop_after_1cycle

  • Cancel
Parents
  • ShawnLogan
    ShawnLogan over 2 years ago

    Dear Zol,

    Zol said:
    One of the feature I would like to use at the  moment is to stop a transient simulation at a given condition. My current DUT needs to be configured, and it takes different amount of time depending on the PVT corners.  I detect the time-event when the DUT is ready with an assert. I use this assert in a paramset file. Is there a way to either reference an assert, or to define an event and use it in MDL expressions?

    I am not an MDL expert, but if I understand your need, it seems that the autostop MDL function will provide a possible solution. If you define a cross() function measurement to detect when your DUT is configured (or the falling edge of a pulse width of Tdelay after it is configured to allow for a delay time after it is configured), the simulation will stop after the cross() function is evaluated. Hence, although the configuration time is dependent on each simulation corner, each simulation corner transient simulation will only run for the time it is required to configure plus any fixed delay time,Tdelay, after you detect its configuration is completed. There is an example of the use of the autostop command in the MDL reference manual on page 44 at URL:

    https://support.cadence.com/apex/techpubDocViewerPage?xmlName=mdlref.xml&title=Spectre%20Circuit%20Simulator%20Measurement%20Description%20Language%20User%20Guide%20and%20Reference%20--%20Defining%20and%20Using%20Measurement%20Aliases%20-%20Autostop&hash=pgfId-1044794&c_version=21.1&path=mdlref/mdlref21.1/chap1.html#pgfId-1044794

    and a Troubleshooting article at URL:

    https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nVHHEA2&pageName=ArticleContent

    I hope I understood your need correctly Zol and this provides some insight.

    Shawn

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Zol
    Zol over 2 years ago in reply to ShawnLogan

    Hi Shawn,

    Thanks for the links. I am already using the autostop option and MDL to stop the simulations. I was looking for a way to define the value of the "start=" field in the above cross() function dynamically. I wish I could use an assert there for consistency, because I use this assert a paramsetfile of the tran analysis. 

    The workaround what I've found is to use another function to deliver the intended value of the start field:

    event = cross(sig=V(vcp_up), dir='rise, thresh=1.25, n=2, start=cross(sig=V(v_assert), dir='fall, thresh=0.75, start=20u)+2u )

    Regards,
    Zoltan

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to Zol

    Zoltan,

    I don't believe it is possible (as far as I know) to use an assert as an event to define a time in an MDL expression. I can see how that would be useful, but don't think it's possible at the moment (I may be mistaken, but I'm not aware of a way). I would suggest you contact customer support (create a case on the support site) to check, and also to file an enhancement if it's not available right now.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • Andrew Beckett
    Andrew Beckett over 2 years ago in reply to Zol

    Zoltan,

    I don't believe it is possible (as far as I know) to use an assert as an event to define a time in an MDL expression. I can see how that would be useful, but don't think it's possible at the moment (I may be mistaken, but I'm not aware of a way). I would suggest you contact customer support (create a case on the support site) to check, and also to file an enhancement if it's not available right now.

    Regards,

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • 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