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: specparamdeclaration, 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.
No comments:
Post a Comment
Please provide valuable comments and suggestions for our motivation. Feel free to write down any query if you have regarding this post.