SystemVerilog Assertions应用指南 Chapter 1.14蕴含操作符

 1.14蕴含操作符

        属性p7有下列特别之处
        (1)属性在每一个时钟上升沿寻找序列的有效开始。在这种情况下,它在每个时钟上升沿检查信号“a”是否为高。
        (2)如果信号“a”在给定的任何时钟上升沿不为高,检验器将产生一个错误信息。这并不是一个有效的错误信息,因为我们并不关心只检查信号“a”的电平。这个错误只表明我们在这个时钟周期没有得到检验器的有效起始点。虽然这些错误是良性的,它们会在一段时间内产生大量的错误信息,因为检查在每个时钟周期都被执行。为了避免这些错误,某种约束技术需要被定义来在检查的起始点不有效时忽略这次检查SVA提供了一项技术来实现这个目的。这项技术叫作“蕴含”(Implication)。
        蕴含等效于一个if-then结构。蕴含的左边叫作“先行算子”( antecedent),右边叫作“后续算子”( consequent)。先行算子是约束条件。当先行算子成功时,后续算子才会被计算。如果先行算子不成功,那么整个属性就默认地被认为成功。这叫作“空成功”( vacuous success)。蕴含结构只能被用在属性定义中,不能在序列中使用。蕴含可以分为两类:交叠蕴含( Overlapped implication)和非交叠蕴含(Non- overlapped implication)。

1.14.1交叠蕴含

        交叠蕴含用符号“|->”表示。如果先行算子匹配,在同一个时钟周期计算后续算子表达式。下面用一个简单的例子解释。属性p8检查信号“a”在给定的时钟上升沿是否为高电平,如果a为高,信号“b”在相同的时钟边沿也必须为高。

property p8;@(posedge clk)  a|->b;
endpropertya8 : assert property (p8);

        图1-11显示了断言a8在模拟中的响应。表1-5总结了信号“a”和信号“b”的采样值和断言的状态。表中一共显示了三种结果。当信号“a”检测为有效的高电平,而且信号“b”在同一个时钟沿也检测为高,这是一个真正的成功。若信号“a”不为高,断言默认地自动成功,则称为空成功。相应的,失败指的是信号“a”检测为高且在同一个时钟沿信号“b”未能检测为有效的高电平。

 

1.14.2非交叠蕴含

        非交叠蕴含用符号“|=>”表示。如果先行算子匹配,那么在下一个时钟周期计算后续算子表达式。后续算子表达式的计算总是有一个时钟周期的延迟。下面以属性p9举个简单的例子。该属性检查信号“a”在给定的时钟上升沿是否为高,如果为高,信号“b”必须在下一个时钟边沿为高。

property p9;@(posedge clk) a |=> b;
endpropertya9 : assert property (p9);

        图1-12显示了断言a9在模拟中的响应。表1-6总结了信号“a和信号“b”的采样值以及断言的状态。应注意的是,断言在当前时钟周期开始,在下一个时钟周期成功的情况才是真正的成功。相应的,如果属性有一个有效的开始(信号“a”为高),且信号“b”在下一个时钟周期不为高,属性失败。

1.14.3后续算子带固定延迟的蕴含

        属性p10检查如果信号“a”在给定时钟上升沿为高,在两个时钟周期后信号“b”应该为高。类似的检查在前面已经用不使用蕴含的方式介绍过了。使用蕴含使得所有误报的错误都被消除。只有属性有效开始(信号“a”为高)时,才进行后续算子的检查(信号“a”)。图1-13显示了属性p10的一个模拟的例子。表1-7总结了属性p10中信号的采样值。

property p10;@(posedge clk) a-> ## 2 b;
endpropertya10 : assert property (p10);



1.14.4使用序列作为先行算子的蕴含

        属性p10在先行算子的位置使用的是信号。先行算子同样可以使用序列的定义。在这种情况下,仅当先行算子中的序列成功时,才计算后续算子中的序列或者布尔表达式。在任何给定的时周期,序列slla检查如果信号“a”和信号“b”都为高,一个时钟周期之后信号“c”应该为高。序列s11b检查当前时钟上升沿的两个时钟周期后,信号“d”应为低。最终的属性检查如果序s11a成功,那么序列s11b被检查。如果没有监测到有效的序列slla,那么序列s11b将不被检查,属性检査得到一次空成功。

sequence s11a;@(posedge clk) (a && b )  ##1 c;
endsequencesequence s11b;@(posedge clk) ##2 !d;
endsequenceproperty p11;s11a |-> s11b;
endproperty

        图1-14显示了断言a11在模拟中的表现。标记1s和1e表明了一个成功的属性检查的起始和结束。标记2s和2e标出了一个失败的起始和结束。在时钟周期11,信号“a”和信号“b”都为高。这表明2个时钟周期以后,即时钟周期14,信号“d”应该为低。但是在例子中的波形上信号“d”为高电平,因此属性失败。

        图中所有的空成功都用简单的竖线表示标记3s和3e显示了个成功的属性检查的起始和结束。表达式“a&&b”在时钟周期17为真,在一个时钟周期后,信号“c”像预期的一样为高。因此在时钟周期18,序列s11a成功。正如被期望的那样,接着信号“d”在两个时钟周期后为低。因此,属性在时钟周期20成功。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/167342.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcode 454 四数相加II(哈希表 + getOrDefault方法用于获取Map中指定键的值,如果键不存在,则返回一个默认值)

Leetcode 454 四数相加II&#xff08;哈希表&#xff09; 解法1 HashMap getOrDefault方法 解法1 HashMap getOrDefault方法 【HashMap】 【⭐️HashMap常用操作】 创建HashMap&#xff1a;HashMap<Integer, Integer> hash new HashMap<>(); 向HashMap添加元素…

【类和对象+this引用】

文章目录 面向对象与面向过程面向对象关注的是对象&#xff0c;用类描述这个对象如何定义类如何更改类名 类的实例化this引用总结 面向对象与面向过程 面向对象就是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。 面向过程好比传统的洗衣服方式&#x…

17 Transformer 的解码器(Decoders)——我要生成一个又一个单词

Transformer 编码器 编码器在干吗&#xff1a;词向量、图片向量&#xff0c;总而言之&#xff0c;编码器就是让计算机能够更合理地&#xff08;不确定性的&#xff09;认识人类世界客观存在的一些东西 Transformer 解码器 解码器会接收编码器生成的词向量&#xff0c;然后通…

STM32,我想看单片机上的外设时钟,我怎么看?

一&#xff1a;在工程中加入rcc文件 首先需要加载我们的时钟函数的文件 stm32f10x_rcc.h 和 stm32f10x_rcc.c 文件 二&#xff1a;查看文件 在h头文件 尾部&#xff0c;有我们这个总线的函数 在函数体内&#xff0c;有我们这个宏定义的 外设时钟&#xff0c;我们拿就行了 APB2_…

App分发的策略和注意事项

当今的数字化时代中&#xff0c;移动应用程序已经成为了人们生活中不可或缺的一部分。随着智能手机的普及和移动互联网的快速发展&#xff0c;应用程序的分发方式也变得越来越多样化。 App分发是指将移动应用程序通过特定的渠道传递给终端用户的过程。在应用程序开发完成后&am…

解决matlab报错“输入参数的数目不足”

报错语句&#xff1a;tanh((peakNums-parameter)/2) 报错提示&#xff1a;输入参数的数目不足 运行环境&#xff1a;matlab2021b 分析原因&#xff1a; 当执行peakNums - parameter时&#xff0c;如果peakNums和parameter都是向量&#xff0c;那么这并不一定意味着会得到对应…

2.卷积神经网络(CNN)

一句话引入&#xff1a; 如果我们要做图像识别&#xff0c;用的是一个200x200的图片&#xff0c;那么BP神经网络的输入层就需要40000个神经元&#xff0c;因为是全连接&#xff0c;所以整个BP神经网络的参数量就是160亿个&#xff0c;显然不能这样来训练网络&#xff0c;所以我…

HBuilder插件推荐

整理一下我觉得好用的插件&#xff0c;后期可能会有更改 eslint-js eslint-plugin-vue Prettier scss/sass编译 右键复制vue页面路径&#xff0c;主要用于快速复制vue页面的路径到浏览器

订单30分钟自动关闭的五种解决方案

1 前言 在开发中&#xff0c;往往会遇到一些关于延时任务的需求。例如 生成订单30分钟未支付&#xff0c;则自动取消生成订单60秒后,给用户发短信 对上述的任务&#xff0c;我们给一个专业的名字来形容&#xff0c;那就是延时任务 。那么这里就会产生一个问题&#xff0c;这…

基于Java的汽车维修预约管理系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09; 代码参考数据库参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&am…

Java学习_day03_变量数据类型运算符

文章目录 变量定义声明赋值使用简化 数据类型基本数据类型整型浮点型布尔型字符型空型 引用数据类型数据类型转换自动类型转换强制类型转换 运算符算术运算符赋值运算符比较运算符逻辑运算符位运算符条件运算符一元运算符二元运算符三元运算符运算符优先级 变量 变量类似于数学…

云服务器搭建Hadoop分布式

文章目录 1.服务器配置2.Java环境3. 安装Hadoop4. 集群配置5. 编写集群的启动脚本 1.服务器配置 服务器主机名配置115.157.197.82s110核115.157.197.84s210核115.157.197.109s310核115.157.197.31s410核115.157.197.60gracal10核 所有的软件安装在/opt/module下&#xff0c;软…

光学知识整理-偏振光

偏振光 目录基础概念基础概念的补充平面偏振光&#xff08;线偏振光&#xff09;部分偏振光圆偏振光椭圆偏振光菲涅耳公式相位关系 反射折射所引起的偏振态的改变斯托克斯倒逆关系重要参数 目录 基础概念 光是横波&#xff1a;光是电磁波,其电场分量(电场强度)E、磁场分量(磁…

biquad滤波器的设计

1.介绍 Biquad滤波器是一种常用的数字滤波器结构&#xff0c;它使用二阶差分方程&#xff08;difference equation&#xff09;来实现滤波功能。它得名于其包含两个极点&#xff08;poles&#xff09;和一个零点&#xff08;zero&#xff09;。 双二阶滤波器(biquad)是最常用…

当我让文心一言写个代码来庆祝1024程序员节,它写的代码是……

先让它写个自我介绍吧~ 大家好&#xff0c;我是一个人工智能语言模型&#xff0c;我的中文名是文心一言&#xff0c;英文名是ERNIE Bot。我可以协助您完成范围广泛的任务并提供有关各种主题的信息&#xff0c;比如回答问题&#xff0c;提供定义和解释及建议。如果您有任何问题…

改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 | 涨点杀器

改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv5 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv5 | 头部解耦 | 将YOLOX解耦头添加到YOLOv51. 解耦头原理2. 解耦头对收敛速度的影响3. 解耦头对精度的影响4. 代码改进方式第一步第二步第三步第四步第五步本…

Kotlin笔记(六):泛型的高级特性

前面学习了Kotlin中的泛型的基本用法,跟Java中的泛型大致相同&#xff0c;Kotlin在泛型方面还提供了不少特有的功能&#xff0c;掌握了这些功能&#xff0c;你将可以更好玩转Kotlin&#xff0c;同时还能实现一些不可思议的语法特性&#xff0c;那么我们自然不能错过这部分内容了…

Wordpress - Xydown独立下载页面插件

Wordpress - Xydown独立下载页面插件&#xff1b; 1.使用ftp将demo.php和download.php上传到网站根目录&#xff08;两个文件中设计网站信息的代码可根据实际情况修改为自己的信息&#xff09; 使用ftp将demo.php和download.php上传到网站根目录&#xff08;两个文件中设计…

[ Windows ] ping IP + Port 测试 ip 和 端口是否通畅

开发过程中经常会黑窗口中手动测试一下计划请求的目标ip和端口是否通畅&#xff0c;测试方式如下&#xff1a; 一、单纯测试ip是否能够 ping 通&#xff0c;这个比较熟悉了&#xff0c;运行 cmd 打开黑窗口 输入如下指令&#xff0c;能够如下提示信息&#xff0c;表示端口是通…