setup time:
1. set flip-flop to 0(1)
2. change data edge 0->1 (1->0) at T before clock edge
3. check flip-flop out
3.1 if D==1 (0) then T = T-dT
3.2 if D==0 (1) then T = T+dT
4. check accuracy of T, if not satisfactory go to 1
hold time:
1. set flip-flop to 0(1)
2. change data edge 1->0 (0->1) at T after clock edge
3. check flip-flop out
3.1 if D==1 (0) then T = T-dT
3.2 if D==0 (1) then T = T+dT
4. check accuracy of T, if not satisfactory go to 1
We use bisection division method for determine setup und hold time.