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.  
 
   
   |