#SVA语法滴水穿石# (007)关于 $past 的用法
今天,我们要学习比较重要的一个关键字。$past 的用法,今天系统学习。
1. $past
函数的核心作用
$past
用于 获取某个信号在过去指定时钟周期前的值,通常用于检查历史状态是否符合预期。
其语法如下:
$past(signal, [num_cycles], [gating_condition], [clock], [reset]);
-
必选参数:
-
signal
:需要检查的历史信号或表达式。 -
num_cycles
:回溯的时钟周期数(默认为 1)。
-
-
可选参数:
-
gating_condition
(门控条件):仅当条件为真时,才记录历史值。 -
clock
:指定时钟(默认为断言所在时钟域)。 -
reset
:复位信号(复位时忽略历史值)。
-
2. 基本用法示例
场景 1:检查信号过去的值
设计规则:当 valid
为高时,当前数据 data
必须等于 2 个周期前的 data
。
property check_data_stable;
@(posedge clk)
valid |-> (data == $past(data, 2)); // 检查当前 data 是否等于 2 周期前的值
endproperty
assert property (check_data_stable);
波形分析:
周期: