Timing Check Tasks
Timing Check Tasks
Outline
❑What are timing check tasks?
❑$random
Timing check statements
• Verilog has certain constructs to perform common
timing checks.
$setup $recovery
$hold $removal
$setuphold $recrem
$skew
$width
$timeskew
$period
$fullskew
$nochange
$setup
• $setup checks setup time violations.
• Syntax:
$setup (data_event, reference_event, limit);
specify
specparam tsetup = 7, delay = 10 ;
(data1 => q) = delay ;
$setup(din, posedge clk, tsetup);
endspecify
endmodule
$hold
• $hold checks hold time violations.
• Syntax:
$hold (reference_event, data_event, limit );
(time of data event) - (time of reference event) < limit
specify
specparam thold = 7, delay = 10 ;
(din => q) = delay ;
$hold(posedge clk, din, thold);
endspecify
endmodule
$setuphold
Syntax:
$setuphold (reference_event, data_event, setup_limit, hold_limit );
specify
specparam tsetup=6, thold = 7, delay = 10 ;
(din => q) = delay ;
$setuphold(posedge clk, din,tsetup, thold);
endspecify
endmodule
$recovery
• $recovery checks the violations for control signals
like clear, reset, set etc.
• Syntax:
$recovery(reference_event, data_event, limit);
specify
specparam trecovery = 10;
$recovery ( posedge in1, out1, trecovery);
endspecify
endmodule
rst
CLK
Syntax:
$removal (reference_event, data_event, limit);
specify
$removal (negdge clr, posedge clk, 3)
endspecify
endmodule
CLK
rst
specify
$recrem(posedge clr, posedge clk , 2,3);
endspecify
endmodule
$skew
• Skew is the time delta between the actual and
expected arrival time of a signal.
Syntax:
$skew(reference_event, data_event, limit);
CLK
CLK
$period
• It checks whether reference signal time period
less than timing check limit.
Syntax:
$period (reference_event , limit);
12 8 10 11
$width
• It checks whether reference signal has width less than
the specified timing check limit.
Syntax:
$width (reference_event, limit);
5 3 5 4
Random Number Generator
• Random numbers are used for providing random test inputs
which helps in finding hidden bugs in the design.