Forum Discussion

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

Understanding Recovery and Removal in TimeQuest

I think a number of users don't fully understand Recovery and Removal analysis, so I put this together. I think it's important to not only understand what analysis TimeQuest id doing, but to make sure your design's asynchronous resets correlate with that analysis. Hopefull this is of some help...

15 Replies

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

    Hi,

    So how do we get rid of this altera jtag (USB Blaster) problem? I am using NEEK, Quartus II 10.0sp1 Web Version and was trying to do NiosII Hardware Development Tutorial.

    this is the .sdc# Update -period with clock period (in nanoseconds) of the clock driving the fpga

    create_clock -name sopc_clk -period 20 [get_ports PLD_CLOCKINPUT]

    # Setting LED outputs as false path, since no timing requirement

    set_false_path -from * -to [get_ports LEDG

    [*]]

    # Constraining JTAG interface# TCK port

    create_clock -name altera_reserved_tck -period 100 [get_ports altera_reserved_tck]# from altera knowledge support# create_clock -period "100.000 ns" -name {altera_reserved_tck} {altera_reserved_tck}# Clock constraints# create_clock -name "MCLOCK" -period 20ns [get_ports {altera_reserved_tck}] -waveform {0.000ns 10.000ns}# Automatically calculate clock uncertainty to jitter and other effects.# derive_clock_uncertainty

    # cut all paths to and from tck

    set_clock_groups -exclusive -group [get_clocks altera_reserved_tck]# constrain the TDI port

    set_input_delay -clock altera_reserved_tck 20 [get_ports altera_reserved_tdi]# constrain the TMS port

    set_input_delay -clock altera_reserved_tck 20 [get_ports altera_reserved_tms]# constrain the TDO port

    set_output_delay -clock altera_reserved_tck 20 [get_ports altera_reserved_tdo]
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Sorry for reviving the old thread but I have some questions after going through the useful document. When we talk about recovery violation, are we talking about when reset is asserted (i.e, ensuring all dest registers get reseted together) or when the reset is de-asserted (i.e, all the dest registers get out of reset)?

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

    I've only seen people care about the reset de-assertion, but if your source is synchronous for both and you meet timing, then both work. Often designers create an asynchronous assert/synchronous de-assert circuit, which will then only be synchronous on the de-assertion. I talk about this in the TimeQuest User Guide on alterawiki.com

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

    Thanks Rysc.

    If I have a synchronous reset signal with high fanout that is failing timing, will changing this to asynchronous reset help in timing closure?
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    it might or might not. If it does then it is due to sheer probabilty of fitting. In both cases there is path to be respected. In fact with asynchronous ports being used I expect less logic be used and this becomes substantial for high fanout reset.

    May be better you approach reset with less fanout or replicate it manually. The notion of reseting every register is old fashoined and you better not apply reset when not needed for example data paths that can have any value at reset release need not have reset. If you do remove reset then don't just comment it out from top of process as this will lead to latches. Instead remove it and rewrite a process without reset.