SystemVerilog Assertions应用指南 Chapter1.32 嵌套的蕴含

SVA允许使用嵌套的蕴含。当我们有多个门限条件指向一个最终的后续算子时,这种构造十分有用。

属性 p_nest检验如果信号"a"有一个下降沿,则是一个有效开始,接着在一个周期后,信号"b","c"和"d"应该为低电平有效信号以保持这个有效开始。如果第二个条件匹配,那么在6到10个周期内期望"free"为真。注意,当且仅当信号"b","c"和"d"都匹配时,在后续状况( consequent condition)"fre"才会被检验是否为真。

复制代码
`define free (a && b && c && d)

property p_nest;
	@(posedge clk) $fell(a) |-> 
		##1 (!b && !c && !d ) |-> ##[6:10] `free;
endproperty

a_nest :assert property(p_nest);

同一个属性可以被重写成不使用嵌套蕴含的方式,如下所示。

复制代码
property p_nest1;
	@(posedge clk) $fell(a) ##1 (!b && !c && !d)
		|-> ##[6:10] `free;
endproperty

a_nest1 :assert property(p_nest1);

注意:使用嵌套蕴含的属性 p nest中没有"else"情况,因此属性很容易就能重写成如 p_nesti所示的形式。

图1-39显示了断言 a nest在模拟中的表现。标记1显示了检验器的第一次成功。当检测到信号"a"的下降沿时,出现一个有效开始。一个时钟周期后,信号"b"、"c"和"d"如预期地被检测为低。因此检验保持有效,后续算子被检验。在6个时钟周期后,检测到状况"free"为真,因此检验成功。

第二个标记指出了下一个有效开始,在此检测到信号"a"的下降沿个周期后,检测到信号"c"和"b"为低,但是信号"b"不为低。因此检验没能保持有效,得到一个空成功。

第三个标记也标出了一个有效开始,在此检测到信号"a"的下降沿。一个周期后,如期望的检测到信号"b","c"和"d"为低,因此检验保持有效,后续算子被检验。在6~10个时钟周期内,没有检验到状况"free"为真,因此检验失败。

相关推荐
FPGA小c鸡21 小时前
异步FIFO设计与验证完全指南:从格雷码到CDC同步的深度解析(附SystemVerilog实战代码)
fpga开发
春风细雨无声1 天前
基于FPGA实现PAL视频接口(附代码)
图像处理·fpga开发·视频
国科安芯1 天前
多相交错并联系统的时钟同步精度与输入纹波抵消效应研究
网络·单片机·嵌入式硬件·fpga开发·性能优化
科恒盛远2 天前
KH919-基于FPGA实现的线性调频卡
fpga开发
FPGA小c鸡3 天前
PCIe接口详解:从协议原理到FPGA实现的完整指南
fpga开发
良许Linux3 天前
FPGA原理和应用
stm32·单片机·fpga开发·程序员·嵌入式·编程
Hello.Reader3 天前
Flink External Resource Framework让作业“原生”申请 GPU/FPGA 等外部资源
大数据·fpga开发·flink
嵌入式-老费3 天前
Linux Camera驱动开发(fpga vs soc)
驱动开发·fpga开发
太空1号4 天前
SystemVerilog小白入门3,UVM的uvm_object初体验
fpga开发
FakeOccupational4 天前
【电路笔记 元器件】存储设备:RAM 静态随机存取存储器(SRAM)芯片+异步 SRAM 的特性+异步 SRAM读写测试(HDL)
笔记·fpga开发