verilog $setup, $hold, $width

Learning stuff 2013. 1. 29. 20:21

Timing check

- $setup, $hold, $width : 가장 일반적이고 많이 사용하는 timing checking system task

- 언제나 secify block 안에서만 사용 가능하다.

 

● $setup and $hold checks

- setup, hold : 순차 회로에서 clock의 전후로 data의 최소 유효 시간을 의미한다.

 

◆ $setup task

Usage : $setup(data_event, reference_event, limit)

-data_event : monitor 하는 신호

-reference_event : data_event 의 기준이 되는 신호

-limit : setup time 필요한 최소 시간

ex) (T reference_event - T data_event) < limit 이면 오류를 보고

즉 data 신호가 늦게 setup 하면 detect!!!!!!!

 

ex) specify

$setup(data, posedge, 3);

endspecify

 

 

 

◆ $hold task

Usage : $hold(reference_event, data_event, limit)

reference_event    :    data_event의 기준이 되는 신호

data_event           :    monitor 하는 신호

limit                    :  holding time

ex) (T data_event - T reference_event) < limit 이면 오류를 보고

즉 data 신호가 reference 신호를 시작으로 얼마만큼 지속(hold) 시키지 못하면 detect!!

 

specify

$hold(posedge clk, data, 5)

endspecify

 

◆ $width check

- 펄스의 폭을 check할때 사용하는것

Usage : $width(reference_event, limit);

reference_event  :  edge-triggered event

limit                   : 펄스 width 의 최소 시간

-data_event 가 없는 이유는 처음 오는 edge_trigger 다음에 오는 반대 edge_trigger가 data_event 가 되기 떄문이다.

 

 

'Learning stuff' 카테고리의 다른 글

SRAM timing diagram  (0) 2013.01.30
SIMD  (0) 2013.01.29
Cache Optimization  (0) 2013.01.25
matlab index  (0) 2012.12.12
matlab_classdef  (0) 2012.12.12