-- -- -- DISCLAIMER -- -- This code is the sole property of the Institute for Technology -- Development (ITD), Jackson, Mississippi, and is distributed for -- the purpose of providing examples of VHDL models written to -- modeling standards. This code may not be used for commercial -- purposes, and may not be redistributed without permission from -- the Institute for Technology Development. ITD assumes no -- responsibility for errors, omissions, uses made, or decisions -- based on its use. No warranties, expressed or implied, are given. -- -- ------------------------------------------------------------------ -- FILE NAME: TIME_FUNC.vhd -- DESCRIPTION: Timing violation functions -- package specification library STD,STD_PACK ; use STD_PACK.BASICDEFS.all ; use STD.TEXTIO.all; package TIME_FUNC is function SETUP_CHECK ( setup : time ; -- Time since last event on signal -- be checked (signal'last_event) time_spec : time ; -- Time requirement to be met reference : string ; -- Component reference designator message : string ; -- This string appended to "setup -- violation" is displayed level : severity_level -- Enter note,warning,error ) return boolean ; -- or failure function HOLD_CHECK ( hold : time ; -- Time since last event on signal -- be checked (signal'last_event) time_spec : time ; -- Time requirement to be met reference : string ; -- Component reference designator message : string ; -- This string appended to "hold -- violation" is displayed level : severity_level -- Enter note,warning,error ) return boolean ; -- or failure function PULSE_CHECK ( pulse : time ; -- Time since last event on signal -- be checked (signal'last_event) time_spec : time ; -- Time requirement to be met reference : string ; -- Component reference designator message : string ; -- This string appended to "pulse -- width violation" is displayed level : severity_level -- Enter note,warning,error ) return boolean ; -- or failure end TIME_FUNC ; --------------------------------------------------------------------- -- DESCRIPTION: Timing violation functions -- package body --------------------------------------------------------------------- package body TIME_FUNC is function SETUP_CHECK ( setup : time ; time_spec : time ; reference : string ; message : string ; level : severity_level ) return boolean is variable timestring : LINE; begin if (time_spec - setup > 0 ns) then write (timestring,NOW); assert FALSE report "{"&reference&"}"&message&" at time "×tring.all severity level ; deallocate(timestring); return TRUE ; else return FALSE ; end if ; end SETUP_CHECK ; ------------------------------------------------------ function HOLD_CHECK ( hold : time ; time_spec : time ; reference : string ; message : string ; level : severity_level ) return boolean is variable timestring : LINE; begin if (time_spec - hold > 0 ns) then write (timestring,NOW); assert FALSE report "{"&reference&"}"&message&" at time "×tring.all severity level ; deallocate (timestring); return TRUE ; else return FALSE ; end if ; end HOLD_CHECK ; ------------------------------------------------------ function PULSE_CHECK ( pulse : time ; time_spec : time ; reference : string ; message : string ; level : severity_level ) return boolean is variable timestring : LINE; begin if ((now - pulse) < time_spec) then write (timestring,NOW); assert FALSE report "{"&reference&"}"&message&" at time "×tring.all severity level ; deallocate(timestring); return TRUE ; else return FALSE ; end if ; end PULSE_CHECK ; end TIME_FUNC ;