在 SystemVerilog 断言(SVA, SystemVerilog Assertions)中,ended
是一个用于 序列(sequence) 的关键字,它表示某个序列(sequence)在特定时间点已经成功匹配(即“结束”)。
ended
主要用于 同步不同序列的时间关系,尤其是在多序列组合或属性(property)中需要对齐时序的场景。
1. 基本定义
-
sequence.ended
:
表示指定的序列(sequence
)在当前时间点已经完成匹配。-
如果序列在当前时间点之前(即过去的时钟周期)完成匹配,则
sequence.ended
为真。 -
与
sequence.triggered
不同,ended
仅关注序列是否在当前时间点结束,而非整个仿真历史。
-
2. 关键特性
-
时间对齐:
ended
用于确保两个序列的结束时间对齐。例如,序列 A 的结束时间必须与序列 B 的结束时间一致。 -
同步检查:
在多序列组合中,ended
可以同步不同序列的完成时间点,常用于协议握手或状态机跳转的验证。 -
基于时钟边沿:
ended
的值在每个时钟边沿重新计算,与断言所在的时钟域同步。
3. 基础示例:握手协议同步
场景描述
-
设计规则:当请求信号
req
拉高后,应答信号ack
必须在req
结束的同一时间点拉高。