Specify Block
Formal Definition
Allows a specific delay
across a module.
Simplified Syntax
specify
specparam declaration ;
path declaration ;
system timing check ;
endspecify
Description
The Specify block was designed
to define a delay across a module. It starts with specify
and ends with the endspecify keyword.
Inside the block the user can specify: specparam
declaration, path declaration or system timing check.
The
syntax of specparam declaration
is the same as that of the parameter declaration. After the specparam
keyword the user can specify any number of parameters but only constant
expressions are allowed on the right-hand sides of parameter assignments.
A comma can separate the assignments, and the last statement ends with
a semicolon. A previously declared specparameter can be used to declare
the new specparameters. Unlike parameters,
specparams cannot be overwritten, nor can they be used outside
of a specify block.
Examples
Example 1
module
...
...
specify
(In => Out) = (10);
endspecify
...
endmodule
A specify block with only
a path declaration. Delay between input In and output Out is 10 time units.
Example 2
module
...
...
specify
specparam TRise
= 10,
TFall = 15;
(In => Out) = (TRise, TFall) ;
endspecify
...
endmodule
Specparam declaration with
two parameters TRise and TFall to specify delays on rising transition
and falling transition.
Example 3
module
...
...
specify
specparam TRise
= 10,
TFall = 15;
(In => Out) = (TRise, TFall) ;
$setup(Data_in,
posedge Clock, TRise) ;
endspecify
...
endmodule
The full specify block with
specparam declaration, path declaration
and system timing check task.
Important Notes
Specify blocks
have to be inside the module declaration location.
Specparams
are not visible outside of the Specify blocks.
The
defparam keyword cannot be used to override a specparam
value.
|