SV中|-> 和 |=>的区别与关系

在 SystemVerilog 断言(SVA)中,|->|=> 都是蕴含操作符 ,用于连接前提条件(antecedent)和后续条件(consequent)。它们的核心区别在于检查后续条件的起始时间点

1. 重叠蕴含 |->

  • 含义 :若前提条件在当前时钟周期成立,则在同一时钟周期开始检查后续条件。

  • 时间关系 :前提和后续的第一个时钟周期重叠

示例

复制代码
property p_overlap;
  @(posedge clk) a |-> b;
endproperty
  • a 在时钟周期 T 为真,则在同一个周期 T 检查 b 是否为真。

  • 如果后续条件是一个序列(如 ##1 c),则从周期 T 开始匹配序列:bT 周期成立,cT+1 周期成立。

2. 非重叠蕴含 |=>

  • 含义 :若前提条件在当前时钟周期成立,则从下一个时钟周期开始检查后续条件。

  • 时间关系 :前提和后续的第一个时钟周期间隔一个周期

示例

复制代码
property p_nonoverlap;
  @(posedge clk) a |=> b;
endproperty
  • a 在周期 T 为真,则在下一个周期 T+1 检查 b 是否为真。

  • 这等价于 a |-> ##1 b

3. 对比表

操作符 后续检查起始点 等价写法 典型应用场景
` ->` 同一周期 `a
` =>` 下一周期 `a

4. 举例说明

假设一个简单的协议:请求 req 拉高后,同一周期内 允许 gnt 为高(流水线响应),或者下一个周期 gnt 必须为高。

  • 使用 |-> 检查立即响应:

    复制代码
    req |-> gnt;  // gnt 必须在 req 的同一周期有效
  • 使用 |=> 检查延迟响应:

    复制代码
    req |=> gnt;  // gnt 必须在 req 的下一周期有效

5. 注意事项

  • 序列嵌套 :后续条件可以是复杂序列。|-> 序列的起点是当前周期,|=> 的起点是下一周期。

  • 多周期延迟 :若需要延迟多拍,推荐用 |-> ##n ...,更清晰。|=> 仅用于正好一拍延迟。

  • 常见错误:混淆两者会导致断言在错误的时间点检查,产生误报或漏报。

总结

  • |->:前提满足后立即检查后续(同一周期开始)。

  • |=>:前提满足后下一拍才开始检查后续。

选择哪个取决于设计时序:响应是组合逻辑路径(同拍)还是寄存输出(下一拍)。

相关推荐
坏孩子的诺亚方舟14 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
FPGA小徐14 天前
入门 CNN 结构全解析|从流程图理论到 FPGA Verilog 硬件实现(含习题带讲解)
fpga开发
FPGA小徐14 天前
FPGA 数字信号处理:并行 FIR 与串行滤波器设计原理、对比与完整 Verilog 实现
fpga开发
Saniffer_SH15 天前
【高清视频】Gen6 服务器还没到,Gen6 SSD 怎么测?Emily 现场演示三种测试环境
人工智能·驱动开发·测试工具·缓存·fpga开发·计算机外设·压力测试
zlinear数据采集卡15 天前
双核架构深度解析:ARM+FPGA如何让数据采集卡实现500Ksps高性能?
arm开发·fpga开发·架构
9527华安15 天前
FPGA实现GTH Transceivers Wizard传输2路视频,基于aurora 8b10b编解码架构,提供4套工程源码和技术支持
fpga开发·gth·aurora 8b10b·transceivers
FPGA小徐16 天前
FPGA 数字信号处理(二):并行 FIR 滤波器的 Verilog 全流程设计与实现
fpga开发
国科安芯16 天前
基于AS32S601ZIT2型抗辐照MCU的商业航天卫星姿态确定与控制系统研究
单片机·嵌入式硬件·安全·fpga开发·架构·risc-v
ALINX技术博客16 天前
【黑金云课堂】FPGA技术教程FPGA基础:I2C 总线通信技术
fpga开发·i2c
Hello-FPGA16 天前
Xilinx KU040 FPGA Camera Link 图像采集
c++·fpga开发