Saturday, August 20, 2016

setup time and hold time


  • setup time is the minimum amount of time input (D) must be stable before the clock edge.
  • hold time is the minimum amount of time input (D) must be stable after the clock edge.




Both setup and hold time for a flip-flop is specified in the library.

1.1 setup time

  • data should be stable before the clock edge
  • setup time is the amount of time the synchronous input (D) must show up, and be stable before the capturing edge of clock.
  • this is so that the data can be stored successfully in the storage device.
  • setup violation can be fixed by either slowing down the clock (increase the period ) or by decreasing the delay of the data path logic.


setup information .lib :
timing () {

                related_pin        : "CK";

                timing_type        : setup_rising;

                fall_constraint(Setup_3_3) {

                     index_1 ("0.000932129,0.0331496,0.146240");

                     index_2 ("0.000932129,0.0331496,0.146240");

                     values ("0.035190,0.035919,0.049386", \

                             "0.047993,0.048403,0.061538", \

                             "0.082503,0.082207,0.094815");

                }


1.2 Hold Time

  • data should be stable after the clock edge
  • hold time is the amount of time the synchronous input (D) stays long enough after the capturing edge of clock so that the data can be stored successfully in the storage device.
  • hold violation can be fixed by increasing the delay of the data path or by decreasing the clock uncertainty (skew) if specified in the design.

Hold Information .lib:
timing () {

              related_pin      : "CK";

              timing_type      : hold_rising;

              fall_constraint(Hold_3_3) {

                   index_1 ("0.000932129,0.0331496,0.146240");

                   index_2 ("0.000932129,0.0331496,0.146240");

                   values ("-0.013960,-0.014316,-0.023648", \

                           "-0.016951,-0.015219,-0.034272", \

                           "0.108006,0.110026,0.090834");

              }

1 comment:

  1. what is setup_rising and hold_rising, setup_fall and hold_fall

    ReplyDelete