SystemVerilog Assertions应用指南 Chapter 11.5SVA检验器的时序窗口
11.5SVA检验器的时序窗口
到目前为止,带延迟的例子使用的都是固定的正延迟。在下面几个例子中,我们将讨论几种不同的描述延迟的方法属性p12检查布尔表达式“a&&b”在任何给定的时钟上升沿为真。如果表达式为真,那么在接下去的1-~3周期内,信号“c”应该至少在一个时钟周期为高。SA允许使用时序窗口来匹配后续算子。时序窗口表达式左手边的值必须小于右手边的值。左手边的值可以是0。如果它是0,表示后续算子必须在先行算子成功的那个时钟边沿开始计算。
property p12;@(posedge clk) (a && b ) |-> ##[1:3] c;
endpropertya12: assert property(p12);
图1-15显示了属性p12在模拟中的响应。每声明一个时序窗口,就会在每个时钟沿上触发多个线程来检查所有可能的成功。p12实际上以下面三个线程展开。
(a && b ) |-> ##1 c 或
(a && b ) |-> ##2 c 或
(a && b ) |-> ##3 c
属性有三个机会成功。所有三个线程具有相同的起始点,但是一旦第一个成功的线程将使整个属性成功。应当注意,在任何时钟上升沿只能有一个有效的开始,但是可以有多个有效的结束。这是因为每个有效的起始可以有三个机会成功。
表1-8总结了属性计算过程中所有相关信号的采样值。在任何给定的时钟上升沿,如果信号“a”和信号“b”不全为高,那么属性得到一个空成功。另一方面,如果信号“a”和信号“b都为高,那么属性就有了一个有效的开始。如果信号“c”在之后的1~-3个时钟周期内都没被检测到高电平,属性失败。

注意,属性在时钟周期2和3都有有效的开始。这两个有效的开始同时在时钟周期4成功。时钟周期2开始的检查在两个时钟周期后检测到信号“c”为高。而时钟周期3开始的检查在一个时钟周期后检测到信号“c”为高。这两个都是有效情况,因此它们都成功了。在时钟周期12同样有一个有效的开始。属性在时钟周期13,14和15都检测信号“c”是否为高。由于信号“c”在这所有三个可能的时钟周期始终为低,检测失败。
1.15.1重叠的时序窗口
属性p13与属性p12相似。两者最大的区别是p13的后续算子在先行算子成功的同一个时钟沿开始计算。
property p13;@(posedge clk) (a && b ) -> ##[0:2] c;
endproperty a13: assert property(p13);
图1-16显示了p13在模拟中的响应。与属性p12最大的区别在于一个成功的开始发生在时钟周期12。这个成功是因为检查发生了重叠。信号“c”的值在先行算子成功的同一个时钟沿被检测为高。
1.15.2无限的时序窗口
在时序窗口的窗口上限可以用符号“$”定义,这表明时序没有上限。这叫作“可能性”( eventuality)运算符。检验器不停地检查表达式是否成功直到模拟结束。因为会对模拟的性能产生巨大的负面影响,所以这不是编写SVA的一个高效的方式。最好总是使用有限的时序窗口上限。属性p14在任何给定的时钟上升沿检查信号“a”是否为高。如果为高,那么信号“b”从下一个时钟周期往后最终将为高,而信号“c”在信号“b”为高的时钟周期开始往后最终将为高。
property p14;@(posedge clk) a |-> ##[1:$] b ##[0:$] c;
endpropertya14: assert property(p14);
图1-17显示了属性p14在模拟中的响应。表1-9总结了断言a14和相关信号的采样值。值得注意的是,真正的成功可能在任意个时钟周期后结束。如果一个有效的开始发生,而信号“b”或信号“c”在模拟结束前始终不为高,这些检查被报告为“未完成检验”( incomplete check)。因为信号“b”和信号“c”可以重叠地满足检验,整个检查有可能在一个时钟周期内结束。时钟周期17显示了这样一种情况,当信号“a”在时钟周期17被检测为高,且信号“b”和信号“c”在时钟周期18都被检测为高。

相关文章:
SystemVerilog Assertions应用指南 Chapter 11.5SVA检验器的时序窗口
11.5SVA检验器的时序窗口 到目前为止,带延迟的例子使用的都是固定的正延迟。在下面几个例子中,我们将讨论几种不同的描述延迟的方法属性p12检查布尔表达式“a&&b”在任何给定的时钟上升沿为真。如果表达式为真,那么在接下去的1-~3周期内,信号“c”应该至少在一个时钟周…...
内衣洗衣机有必要买吗?口碑好的小型洗衣机测评
在近年以来,由于人们对健康的认识和生活质量的不断改善,使得内衣洗衣机这一类的产品在近年来得到了飞速的发展,洗烘一体机、洗烘套装的价格总体下降,功能和性能都得到了改善,往往更多的用户会选择一台或者多台洗衣机来…...
Mac风扇控制电脑降温软件Macs Fan Control Pro 简体中文
Macs Fan Control Pro是一款功能强大的Mac风扇控制软件,旨在帮助用户更好地管理和控制Mac电脑的风扇速度和温度传感器。以下是该软件的主要特色介绍: 监测和调整Mac电脑的风扇速度和温度传感器,帮助用户控制设备温度,提高电脑性能…...
OPENCHAT: ADVANCING OPEN-SOURCE LANGUAGE MODELS WITH MIXED-QUALITY DATA
本文是LLM系列文章,针对《OPENCHAT: ADVANCING OPEN-SOURCE LANGUAGE MODELS WITH MIXED-QUALITY DATA》的翻译。 OPENCHAT:利用混合质量数据推进开源语言模型 摘要1 引言2 前言3 OpenChat4 实验5 分析6 相关工作7 结论与未来工作 摘要 如今࿰…...
【React】编程式路由,push 与 replace,withRouter,BrowserRouter 和 HashRouter 的区别
push 与 replace 模式 默认情况下,开启的是 push 模式,也就是说,每次点击跳转,都会向栈中压入一个新的地址,在点击返回时,可以返回到上一个打开的地址 有时候页面不需要这么繁琐的跳转,我们可以…...
测试老鸟总结,Allure测试报告-自动化测试详解,惊险避坑...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、Allure安装教程…...
大模型开发06:LangChain 概述
大模型开发06:LangChain 概述 LangChain 是一个基于语言模型开发应用程序的框架。它可以实现以下功能: 上下文感知: 将语言模型与上下文源相连接(提示词、示例、用于支撑响应的内容等)推理能力: 依赖语言模型进行推理(如何根据提供的上下文来回答问题或采取哪些行动等)La…...
unity save load系统 快速搭建
我的最终目标是快读建立一个关卡数据自动读入储存功能: 1. 每个关卡有自己的编号,如果没有自定义该关卡,则读取默认编号的初始布局,如果有自定义该关卡,则读取新定义的关卡。 2.在游戏中如果对布局做出了更改&#x…...
前端 TS 快速入门之四:函数
1. 为函数定义类型 一般使用中,我们可以不必完整写出函数类型,因为 TypeScript 会为我们自动推断出类型,需要注意的是:类型中的参数名称可以不必和值中的参数名称匹配,只要它们类型是兼容的便可。 // 书写完成函数类型…...
Linux 救援模式
Linux突然坏了 第三次坏了 第一次是找不到盘,修复好了 第二次是找不到卷,但是能启动,启动界面选择救援模式,可以正常使用 第三次,尝试修复卷,启动后,找不到文件系统了,只能从光盘…...
HOT100自查题集
前言 遗忘是人类的本能,经常自查是必不可少的。现在面试手撕已经是必备项目,手撕题目大部分来自于力扣 HOT100 以及对应方向的一些编码题。我对 HOT 100 的题目以及Java相关的一些编码题目进行了分类整理,并提供解题思路,用作复习…...
Post-Process1-水下
一、新建第三人称游戏项目,我这里选择C,你也可以选择Blueprint。 新建一个Level,命名为DemoUnderWater 保存一下,命名为DownUnderWater 添加水插件 选择Yes 勾选Show Engine Content和Show Plugin Content,在左侧可以看…...
通过pipeline配置sonar自动化实现过程解析
这篇文章主要介绍了通过pipeline配置sonar自动化实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.sonar配置webhooks, 2.url填写jenkins的地址:http://jenkinsurl/sonarqu…...
Spring framework Day 23:容器事件
前言 容器事件是 Spring Framework 中的一个重要概念,它提供了一种机制,使我们能够更好地了解和响应 Spring 容器中发生的各种事件。通过容器事件,我们可以在特定的时间点监听和处理容器中的各种状态变化、操作和事件触发,以实现…...
【Dockerfile】基于openjdk镜像添加常用命令工具
背景 官方openjdk镜像是Red Hat操作系统,可以使用microdnf命令安装 bash-4.4# cat /etc/redhat-release Red Hat Enterprise Linux release 8.5 (Ootpa)拉取openjdk镜像 docker pull openjdk:17.0.2 编写Dockerfile touch Dockerfile-openjdk-utilsFROM openjd…...
目录内图片转PDF(多图片打印助手)
最近同事经常找我帮她打印试卷,很奇葩的是,她的试卷都是*红书上下载的图片,一张张打印不好看,而且可能打印不完全,大小也不协调,所以有了这个脚本。 【需要给小孩打印图片格式的试卷时也比较实用】 -----…...
React TypeScript安装npm第三方包时,些包并不是 TypeScript 编写的
npm install types/包名称 例如:npm install types/jquery 学习链接...
Java 基础 面试 多线程
1.多线程 1.1 线程(Thread) 线程时一个程序内部的一条执行流程,java的main方法就是由一条默认的主线程执行 1.2 多线程 多线程是指从软硬件上实现的多条执行流程的技术(多条线程由CPU负责调度执行) 许多平台都离不开多…...
软考 系统架构设计师系列知识点之软件构件(1)
所属章节: 第2章. 计算机系统基础知识 第3节. 计算机软件 2.3.7 软件构件 1. 概述 构件又称为组件,是一个自包容、可复用的程序集。构建是一个程序集、或者说是一组程序的集合。这个集合可能会以各种方式体现出来,如源程序或二进制代码。这…...
RHCE8 资料整理(三)
RHCE8 资料整理 第三篇 网络相关配置第11章 网络配置11.1 网络基础知识11.2 查看网络信息11.3 图形化界面修改11.4 通过配置文件修改11.5 命令行管理11.6 主机名的设置 第12章 ssh12.1 ssh基本用法12.2 打开远程图形化界面12.3 ssh无密码登录12.4 ssh安全设置12.5 ssh限制用户1…...
React 组件渲染流程剖析
React组件渲染流程剖析:深入理解UI构建机制 在现代前端开发中,React凭借其高效的组件化开发模式成为主流框架之一。理解React组件的渲染流程,不仅能帮助开发者优化性能,还能避免常见的渲染陷阱。本文将从核心流程出发,…...
别再踩坑了!SQL Server数据类型那点事儿,看懂这篇少背三个锅型
从0构建WAV文件:读懂计算机文件的本质 虽然接触计算机有一段时间了,但是我的视野一直局限于一个较小的范围之内,往往只能看到于算法竞赛相关的内容,计算机各种文件在我看来十分复杂,认为构建他们并能达到目的是一件困难…...
软件数据可视化中的图表选择原则
在数据驱动的时代,软件数据可视化成为解读复杂信息的核心工具。选择合适的图表类型,不仅能清晰传达数据背后的故事,还能避免误导或信息冗余。面对多样化的数据场景,如何科学选择图表?以下是几个关键原则的详细解析。 …...
TJA1042T待机模式省电秘籍:独立VIO供电与VCC关闭的实测功耗对比
TJA1042T待机模式省电秘籍:独立VIO供电与VCC关闭的实测功耗对比 在电池供电的车载传感器和远程数据记录仪等场景中,每一微安的电流都关乎设备续航。TJA1042T作为NXP经典的CAN收发器,其待机模式下仅需VIO供电的特性,为超低功耗设计…...
嵌入式摇杆驱动库:ADC滤波、死区补偿与方向判定
1. 项目概述Joystick 库是一个轻量级、硬件无关的嵌入式 C 语言函数集合,专为读取模拟摇杆(Analog Joystick)输入而设计。其核心目标并非提供完整驱动框架,而是封装底层 ADC 采样、去抖动、死区补偿、坐标映射与方向判定等共性逻辑…...
将 fnOS 从 eMMC/TF 卡无损迁移至外部存储(NVMe/USB/SATA/TF)的完整方案 —— 适用于瑞芯微 RK 系列平台(含小容量盘适配)
将 fnOS 从 eMMC 无损迁移至 NVMe SSD 日常用 ARM 设备,总习惯把固件刷进 eMMC 或者 TF 卡。eMMC 读写慢,寿命有限,用久了总觉得差口气。我手头有块 NanoPC-T4,给它刷了 Arm 飞牛固件简单体验了一下,就琢磨:…...
【大模型可观测性生死线】:为什么你的Prometheus告警总在凌晨爆炸?7步阈值校准工作流曝光
第一章:大模型可观测性生死线:阈值设定的战略意义 2026奇点智能技术大会(https://ml-summit.org) 在大模型生产化落地过程中,可观测性并非仅关乎“能否看到指标”,而本质是“能否在失效前精准干预”。阈值设定正是这条生死线的锚…...
在超大数据集下 DuckDB 与 MySQL 查询速度对比迂
一、什么是urllib3? urllib3 是一个用于处理 HTTP 请求和连接池的强大、用户友好的 Python 库。 它可以帮助你: 发送各种 HTTP 请求(GET, POST, PUT, DELETE等)。 管理连接池,提高网络请求效率。 处理重试和重定向。 支…...
再次革新 .NET 的构建和发布方式(一)靡
本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...
SQL如何统计分组中占比超过一定阈值的数据_HAVING过滤聚合
WHERE在分组前过滤行,HAVING在分组后过滤组;占比类条件必须用HAVING或窗口函数实现,WHERE无法使用聚合函数。WHERE 和 HAVING 的分工必须分清WHERE 在分组前过滤行,HAVING 在分组后过滤组。想筛“某组占比 > 80%”这种条件&…...
