断言语句的语法形式如下;
assert 条件表达式 [report 输出信息字符串]
[severity 严重级别];
如果缺省report子句,则输出信息"assertion violation."
如果缺省severity,则默认严重级别为Note。
严重级别是预定义枚举类型
type Severity _Level is (Note, Warning, Error, Failure);
其意义为:1.当不满足条件时输出指定信息和错误级别;
2.当严重级别是而Failure时,模拟过程停止。有的系统Error表示电路严重错误,而Failure往往表示执行过程遇到无法继续执行的严重问题,必须停止模拟过程的情况。
用途:
1. 添加限制条件。
(例:检测时间特性是否满足要求)。
2. 输出状态信息或出错报告。
3. 添加调试断点。
例:
assert not (S= '1' and R = '1') --正常情况下应为真
report "Both S and R are High." --当(S= '1' and
R = '1')成立时输出该信息。
severity Error; --严重级别为Error (电路设计错误)
assert Enable /= 'X' -- 检测信号值是否出现X,
report "Unkown value on Enable"
-- 若出现X则给出警告信息,供设计者分析
severity Warning;
VHDL-93规定:如果需要在执行到程序的某一点无条件输出信息,则可以采取省略形式:
Report 输出信息字符串 [severity 严重级别];
它相当于assert语句中的条件为False。
例:
report "Entering process P";
-- with default severity NOTE.
report "Setup or Hold violation; outputs driven to X"
severity Warning;
-- severity is specified
|