Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
17 years ago

MAX_DELAY Keyword in TimeQuest

I am trying to constrain an Asynchronous Reset input port which goes to the Asynchronous reset of a few registers.

The TimeQuest help states the following relating to the Maximum Delay Keyword.

"important: These settings apply only to classic timing analysis. For more information about TimeQuest timing analysis options, see about timequest timing analysis (http://www.alteraforum.com/forum/analyze.chm::/sta/sta_about_sta.htm)."

Can anyone tell me how I apply a maximum propagation time to an asynchronous input port which goes to the asynchronous resets of internal registers?

3 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    If it is truly an asynchronous reset, then why would you try and constrain the delay from the input port to the register(s)? Normally this would be cut with a set_false_path constraint. If you can relate it to the latch clock of the register somehow, e.g. with a virtual launch clock, then you can use a set_max_delay constraint to constrain it (but then it wouldn't be a truly asynchronous reset). In the next Quartus II release, 8.1, there is a new set_net_delay command that should do what you want to do if you can wait until then.

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    I worte a document about this:

    http://www.alteraforum.com/forum/showthread.php?t=2158&highlight=recovery+removal

    TimeQuest automatically constrains this(assuming you haven't cut paths between the clock domains of the source and destination), but it is reported as recovery and removal.

    It concerns me that the reset only feeds "a few registers". As you can see from the document, the asynchronous port is designed for reset entire clock domains, and I would strongly recommend using it as logic, i.e. if you're resetting a counter or something, then do it synchronously. There are two major reasons:

    1) Timing analysis probably won't be what you want, since different designers want something do this. When you're resetting small chunks of logic as part of your design, do you need that reset to reach the next stage of registers within a clock cycle? Technically you might, or else they could go metastable. If so, then you're analyzing the registers in two different ways, as a synchronous element(normal clocking operation) and as a combinatorial element(signals come through the asynch reset to the next destination registers). It generally doesn't make sense.

    2) You can't do much logic on the reset anyway. If it's anything besides a single net, then you could have glitches that reset the logic. For example, if it's an AND gate, and one input is driving high, and you synchronously turn that off while turning the other signal on, you could get a glitch and reset the logic.
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    --- Quote Start ---

    The TimeQuest help states the following relating to the Maximum Delay Keyword.

    "important: These settings apply only to classic timing analysis.

    --- Quote End ---

    It sounds like you tried to use the "Maximum Delay" assignment in the Assignment Editor. Timing assignments in the Assignment Editor apply only to the Classic Timing Analyzer. jimbo and Rysc are talking about things you need to do in an .sdc file for TimeQuest.