【SVA断言_2023.01.24】

2024-01-26 22:04
文章标签 24 断言 sva 2023.01

本文主要是介绍【SVA断言_2023.01.24】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在RTL设计中,仿真时查看异常情况,异常出现时,断言会报警,断言占整个设计的比例应不少于30%

assertion作用:

  • 检查特定条件或事件序列的出现情况
  • 提供功能覆盖
断言失败的严重程度:$fatal(中止仿真)>$error>$warning(仍然仿真)>$info

assertion的种类

立即断言

检查当前仿真时间的条件,检查某一个时间点,采样变化后的值
需放在过程块中,相当于if else

断言名:assert (判断条件)(执行语句;)
(else 执行语句;)

在这里插入图片描述
simv -gui
在这里插入图片描述
绿色上箭头成功,红色下箭头失败

并发断言

连续运行的模块,为整个仿真过程检查信号→需指定一个采样时钟,采样变化前的值
可放在过程块,module,interface,program中
与立即断言的区别:property关键字

断言名:assert property(判断条件)(执行语句;)
(else 执行语句;)

在这里插入图片描述
在这里插入图片描述

assertion的层次结构

SVA中可存在内建的单元,包括:

  • 布尔表达式
  • Sequence序列
  • Property属性

sequence特性

  • 可带参数
  • 可在property中调用
  • 可使用局部变量
  • 可定义时钟周期

带参数的sequence

sequence name_sequence(a,b);
@(posedge clk) a&&b;
……
endsequence
check:assert property (name_sequence(a,b))

带时序关系的sequence

#2;//两个时间单位
a ##2 b;//两个时间周期

property属性

比sequence更高一层的单元,可在property中使用蕴含操作符
a|->b 同时检查
a|=>b 延迟一个时钟周期检查
property需用cover/assert/assume等关键字进行实例化,而sequence直接调用即可

assertion的触发判断

$rose(a);//信号上升,包括x→1,z→1
$fell(a);//信号下降
$stable(a);//两个周期内的信号值是否变化
$changed(a);

在这里插入图片描述在这里插入图片描述

总线的断言函数

$onehot(BUS) //BUS中有且仅有1 bit是高,其他是低。
$onehot0(BUS) //BUS中有不超过1 bit是高,也允许全0。
$isunknown(BUS) //BUS中存在高阻态或未知态。
$countones(BUS) == n //BUS中有且仅有n bits是高,其他是低。
$past(signal, cycle_num, 1) //(信号,n个周期前,信号的值)

这篇关于【SVA断言_2023.01.24】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/648188

相关文章

Science|癌症中三级淋巴结构的免疫调节作用与治疗潜力|顶刊精析·24-09-08

小罗碎碎念 Science文献精析 今天精析的这一篇综述,于2022-01-07发表于Science,主要讨论了癌症中的三级淋巴结构(Tertiary Lymphoid Structures, TLS)及其在肿瘤免疫反应中的作用。 作者类型作者姓名单位名称(中文)通讯作者介绍第一作者Ton N. Schumacher荷兰癌症研究所通讯作者之一通讯作者Daniela S. Thomm

关于断言的部分用法

1、带变量的断言  systemVerilog assertion 中variable delay的使用,##[variable],带变量的延时(可变延时)_assertion中的延时-CSDN博客 2、until 的使用 systemVerilog assertion 中until的使用_verilog until-CSDN博客 3、throughout的使用   常用于断言和假设中的

C/C++ 中的assert()宏 断言机制

ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。   原型定义: #include <assert.h> void assert( int expre

SIGMOD-24概览Part7: Industry Session (Graph Data Management)

👇BG3: A Cost Effective and I/O Efficient Graph Database in ByteDance 🏛机构:字节 ➡️领域: Information systems → Data management systemsStorage management 📚摘要:介绍了字节新提出的ByteGraph 3.0(BG3)模型,用来处理大规模图结构数据 背景

【A题成品论文已出】24数学建模国赛A题成品论文(附参考代码)免费分享

A 题  “板凳龙”  闹元宵 摘要 “板凳龙”是一种传统的民俗文化活动,通常由许多板凳连接成龙的形状进行表演。本文基于螺旋线和板凳龙的运动特性,建立数学模型来分析舞龙队在不同情况下的运动轨迹、调头路径和速度优化等问题。问题主要涉及板凳龙的行进路径、碰撞避免、调头空间的设计,以及如何优化龙头的速度,以确保龙身与龙尾的行进安全。 针对问题一,舞龙队由223节板凳组成,龙头前把手的速度为1

【Git 学习笔记_24】Git 使用冷门操作技巧(四)——更多实用 git 别名设置、交互式新增提交

文章目录 11.8 更多别名设置别名1:只查看当前分支(git b)别名2:以图表形式显示自定义格式的 git 日志(git graph)别名3:查看由于合并分支导致的冲突后仍有冲突的、待合并的文件列表(git unmerged)别名4:查看 git 状态(git st)别名5:查看 git 简要状态(git s)别名6:查看最新版本的统计信息(git l1)别名7:查看最近 5 个版本的提

python+selenium2学习笔记unittest-03断言

断言的方法网上归纳的很多主要有以下这些 断言语法解释assertEqual(a, b) 判断a==bassertNotEqual(a, b)判断a!=bassertTrue(x)bool(x) is TrueassertFalse(x)bool(x) is FalseassertIs(a, b)a is bassertIsNot(a, b) a is not bassertIsNone(x) x

Leetcode面试经典题-24.两两交换链表中的节点

解法都在代码里,不懂就留言或者私信 这里先写一个递归的解,如果后面有时间,我再写个迭代的 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val =

图形API学习工程(24):D3D11读取非DDS格式的CubeMap

工程GIT地址:https://gitee.com/yaksue/yaksue-graphics 目标 在《图形API学习工程(21):使用CubeMap纹理》中,由于DirectX读取CubeMap的教程范例都是DDS格式的纹理,因此我也首先实现了DDS的版本,期望之后做处理。 上一篇使D3D12可以用非DDS格式的CubeMap了,本篇目标将是D3D11。 分析当前的流程 当前使用D

数字人直播防封技巧升级!头部源码厂商如何实现7*24小时无间断直播?

当前,许多用户在使用数字人直播的过程中都遇到了直播间违规和账号被封两大问题,并因此蒙受了一定的损失。在此背景下,不少有计划引入数字人直播的企业和搭建数字人直播系统的创业者也开始有了犹豫。为了让大家能够更放心地入局,本期,我们将通过分析这两大问题出现的原因,来整理数字人直播防封教程,希望能对大家有所帮助。 一、数字人直播是否会导致直播间违规和封号问题? 需要明确的一点是,当前,虽然许多人在进