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"为真,因此检验失败。

相关推荐
博览鸿蒙18 小时前
FPGA 开发软件学习笔记分享(内含安装与环境配置)
笔记·学习·fpga开发
希言自然也1 天前
赛灵思KU系列FPGA的ICAPE3原语和MultiBoot功能
fpga开发
Flamingˢ1 天前
FPGA实战:基于Verilog的数码管动态扫描驱动设计与仿真验证
fpga开发
GateWorld1 天前
跨时钟域同步(CDC)握手协议
fpga开发·cdc·asic·跨时钟域同步·握手协议
Flamingˢ1 天前
Verilog中reg与wire的区别:从语法到实战
学习·fpga开发·硬件工程
数字芯片实验室1 天前
边界值测试:一个”==”引发的芯片bug
fpga开发·bug
9527华安1 天前
FPGA实现Aurora8B10B视频转UVC传输,基于GTP高速收发器+FT602芯片架构,提供4套工程源码和技术支持
fpga开发·gtp·uvc·aurora8b10b·ft602
tiantianuser1 天前
RDMA设计31:RoCE v2 发送模块3
fpga开发·rdma·cmac·roce v2
海涛高软2 天前
verlog中阻塞赋值和非阻塞赋值
fpga开发
tiantianuser2 天前
RDMA设计29:RoCE v2 发送及接收模块设计2
服务器·fpga开发·rdma·fpga设计·高速传输