SystemVerilog Assertions应用指南 Chapter1.30 使用“ intersect”控制序列的长度

在123节讨论的" intersec"运算符可以有效地控制序列的长度,尤其是在时序窗口未定义上界的情况。每当使用可能性( eventuality)运算符时,检验器成功所需的时钟周期数没有限制。运算符 intersect提供了一个定义可能性运算符可以使用的最小和最大时钟周期数的机制。

属性p35定义了一个序列来检验在给定时钟边沿,如果信号a"为高,那么从下一个时钟周期开始信号"b"最终将为高接着在下一个时钟周期开始信号"c"最终也会为高。这个序列每当信号"a"为高时就开始,并且可能一直到整个模拟结束时才成功。这可以使用带1[*2:5]的 intersect运算符来加以约東。这个intersect的定义检查从序列的有效开始点(信号"a"为高),到序列成功的结柬点(信号"c"为高),一共经过2~5个时钟周期。

复制代码
property p35;
	@(posedge clk)  1[*2:5] intersect
		(a ##[1:$] b ##[1:$] c) );
endproperty

a35: assert property(p35);

图1-37显示了属性p35在模拟中的响应。表1-17总结了断言a35的状态和相关信号的采样值。在一个给定的时钟边沿,如果信号"a"未被检测为高,那么这是一个失败。这种情况发生在时钟周期1,3,4,5,11和13,这些时刻没有有效开始。

检验在时钟周期2,7,8,9,10,12和14成功。可以看到序列从开始到结束至多花了5个时钟周期。检验在时钟周期6有个真正的失败。在时钟周期6检测到信号"a"为高,而且在时钟周期9信号"b"为高。但是在整个检查达到允许的最大长度,即时钟周期10,信号"c"依然未能为高,因此检验在时钟周期10失败。可以看到信号"c"在时钟周期11为高,但是这已经太晚了。

相关推荐
Soari8 小时前
Ziggo-CaaS-Switch软件配置: undefined reference to pthread_create
java·开发语言·fpga开发·tsn·zynq·交换机配置
碎碎思11 小时前
开源雷达做到20km?一个PLFM雷达项目的FPGA实现拆解
fpga开发
Saniffer_SH11 小时前
【市场洞察】一叶知秋 - 从2026年开年Quarch公司PCIe 6.0测试工具销售状况说起
服务器·人工智能·嵌入式硬件·测试工具·fpga开发·自动化·压力测试
何如呢14 小时前
FIFO的IP核学习
学习·fpga开发
我爱C编程14 小时前
【3.3】FFT变换的FPGA实现整体概述以及模块划分
fpga开发·fft·多级fft·二维分治fft
星华云14 小时前
[FPGA] Spartan6 单总线协议 (One-Wire) 读取DS18B20温度传感器
fpga开发·温度传感器·ds18b20·单总线协议·one-wire bus
s090713616 小时前
ZYNQ 软硬件协同踩坑日记:PS写BRAM后,PL端连续4个地址读出相同数据的原因与解决办法
fpga开发·zynq·硬件设计
tiger1191 天前
FPGA独立实现LLM推理方案——FlighLLM
fpga开发·llm·fpga·ai推理
fei_sun1 天前
Systemverilog和Verilog区别
fpga开发
史蒂芬_丁1 天前
TI F28P65 使用 ePWM 模块模拟 SPI 时钟的详细方法
单片机·嵌入式硬件·fpga开发