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的花路13 小时前
基于脚本的ModelSim自动化仿真(Xilinx FPGA篇)
fpga开发·xilinx·自动化脚本·modelsim仿真
汽车仪器仪表相关领域1 天前
Kvaser Hybrid Pro 2xCAN/LIN 双通道可编程CAN/LIN通讯接口:一机双模可编程,汽车车身混合总线测试专用设备
人工智能·功能测试·安全·fpga开发·汽车·压力测试
szxinmai主板定制专家1 天前
电力设备RK3568/RK3576+FPGA,多系统混合部署Linux+RTOS RT-THREAD,强实时性
linux·运维·服务器·人工智能·嵌入式硬件·fpga开发
ALINX技术博客2 天前
【黑金云课堂】FPGA技术教程Vitis开发:PS端DP接口解析
fpga开发·fpga
FakeOccupational2 天前
fpga系列 HDL:跨时钟域同步 shift register同步(CDC)毛刺滤除&解码前去抖动滤波模块
fpga开发
小眼睛FPGA2 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程6-基于UDP 的以太网传输实验例程
fpga开发
高速上的乌龟2 天前
Lattice LFCPNX-100 HSB+Fpga开发详解: MAC+PCS以太网SFP光口传输
单片机·嵌入式硬件·fpga开发
ALINX技术博客2 天前
【黑金云课堂】FPGA技术教程Linux开发:电压温度检测/USB/eMMC
linux·fpga开发
小眼睛FPGA2 天前
【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程3-基于紫光FPGA 的UART 串口通信
fpga开发
liuluyang5302 天前
SV 时钟移位示例代码解析
fpga开发·sv