#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);

波形分析

周期:

你可能感兴趣的:(SVA,SVA)