#SVA语法滴水穿石# (004)关于 ended 和 triggered 用法

在 SystemVerilog 断言(SVA, SystemVerilog Assertions)中,ended 是一个用于 序列(sequence) 的关键字,它表示某个序列(sequence)在特定时间点已经成功匹配(即“结束”)。

ended 主要用于 同步不同序列的时间关系,尤其是在多序列组合或属性(property)中需要对齐时序的场景。

1. 基本定义

  • sequence.ended
    表示指定的序列(sequence在当前时间点已经完成匹配。

    • 如果序列在当前时间点之前(即过去的时钟周期)完成匹配,则 sequence.ended 为真。

    • 与 sequence.triggered 不同,ended 仅关注序列是否在当前时间点结束,而非整个仿真历史。

2. 关键特性

  1. 时间对齐
    ended 用于确保两个序列的结束时间对齐。例如,序列 A 的结束时间必须与序列 B 的结束时间一致。

  2. 同步检查
    在多序列组合中,ended 可以同步不同序列的完成时间点,常用于协议握手或状态机跳转的验证。

  3. 基于时钟边沿
    ended 的值在每个时钟边沿重新计算,与断言所在的时钟域同步。

3. 基础示例:握手协议同步

场景描述
  • 设计规则:当请求信号 req 拉高后,应答信号 ack 必须在 req 结束的同一时间点拉高。

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