Recovery and Removal Timing for Asynchronous set/reset Signals

In short words, recovery and removal timing are setup/hold constrains for set/reset pins.

Why we need recovery and removal timing model:

To make sure a register behaves correctly, deassertion (the transition to an inactive state) of an asynchronous control must not take place close to the time the clock edge occurs. If these events are close together, the state of the register is uncertain.

In short words, recovery and removal timing are setup/hold constrains for set/reset pins.

Why we need recovery and removal timing model:

To make sure a register behaves correctly, deassertion (the transition to an inactive state) of an asynchronous control must not take place close to the time the clock edge occurs. If these events are close together, the state of the register is uncertain.

The same uncertainty can occur on a register with both asynchronous set and asynchronous reset; if both are deasserted at approximately the same time, the outcome can be uncertain.

Recovery and Removal Timing

Recovery & removal timing model in .lib:

pin(CD) {
  direction : input;
  timing() {
    timing_type : recovery_rising;
    related_pin : "CLK";
    intrinsic_rise : 0.5;
  }
   timing() {
    timing_type : removal_rising;
    related_pin : "CLK";
    intrinsic_rise : 0.5;
  }
 timing() {
    timing_type : non_seq_setup_rising;
    related_pin : "SD";
    intrinsic_rise : 0.5;
  }
 timing() {
    timing_type : non_seq_hold_rising;
    related_pin : "SD";
    intrinsic_rise : 0.5;
  }
  ....
}

How to check recovery & removal timing:

set enable_recovery_removal_arcs true
report_timing
report_constraints

Leave a Reply

Your email address will not be published. Required fields are marked *