关于断言的部分用法

2024-09-08 10:12
文章标签 用法 部分 断言

本文主要是介绍关于断言的部分用法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、带变量的断言 

systemVerilog assertion 中variable delay的使用,##[variable],带变量的延时(可变延时)_assertion中的延时-CSDN博客

2、until 的使用

systemVerilog assertion 中until的使用_verilog until-CSDN博客

3、throughout的使用
 

常用于断言和假设中的时间约束。它的主要作用是检查在一段时间内一个信号是否一直保持特定的状态。

assert property (@(posedge clk) (A throughout B ##[3] C));

这表示 A 必须在 B 持续有效的时间内为真,并且在 B 有效后的 3 个时钟周期内 C 也必须为真。

4、利用generate同时产生多个断言

module test_assertions (input logic clk,  // 时钟信号input logic rst_n,  // 复位信号,低电平有效input wire [10:0] A,  // 信号 A,11 位宽input wire [10:0] B   // 信号 B,11 位宽
);// 定义一个名为 'test_assert' 的属性,用于验证两个信号之间的关系property test_assert(signal_a, signal_b);@(posedge clk);  // 在时钟上升沿触发disable iff(rst_n === 1'b0)  // 当 rst_n 低电平时,禁用该属性$rose(signal_a) |-> ##4 signal_b;  // 如果 signal_a 上升沿触发,则 4 个时钟周期后 signal_b 应为高电平endproperty// 使用 generate 块生成断言测试genvar i;  // 定义生成变量 igenerate// 对 A 和 B 的每一位信号生成相应的断言for (i = 0; i <= 10; i++) begin: ASSERT_TEST// 对 A[i] 和 B[i] 应用 test_assert 属性test_assert_a: assert property(test_assert(A[i], B[i]));endendgenerateendmodule
  • 模块接口信号

    • clk 是时钟信号,驱动断言的触发。
    • rst_n 是复位信号,低电平时禁用断言。
    • AB 是 11 位宽的信号,表示要进行验证的信号集。
  • property

    • @(posedge clk):确保断言在时钟上升沿时触发。
    • disable iff(rst_n === 1'b0):当 rst_n 低电平(复位有效)时,禁用断言。
    • $rose(signal_a) |-> ##4 signal_b:当 signal_a 在时钟边沿上升时,4 个时钟周期之后 signal_b 应为高电平。
  • generate

    • 通过 genvar ifor 循环,分别对信号 AB 的每个位进行断言验证。
    • assert property(test_assert(A[i], B[i]))AB 的每个位执行断言检查。

5、default disable iff 的用法

default disable iff 语句可以用来为整个模块或块设置默认的禁用条件,适用于模块中的所有断言。这就意味着你可以在模块的某个部分统一设置 disable iff,而不必在每个断言中重复使用。

这篇关于关于断言的部分用法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

全面解析Golang 中的 Gorilla CORS 中间件正确用法

《全面解析Golang中的GorillaCORS中间件正确用法》Golang中使用gorilla/mux路由器配合rs/cors中间件库可以优雅地解决这个问题,然而,很多人刚开始使用时会遇到配... 目录如何让 golang 中的 Gorilla CORS 中间件正确工作一、基础依赖二、错误用法(很多人一开

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

Java Spring的依赖注入理解及@Autowired用法示例详解

《JavaSpring的依赖注入理解及@Autowired用法示例详解》文章介绍了Spring依赖注入(DI)的概念、三种实现方式(构造器、Setter、字段注入),区分了@Autowired(注入... 目录一、什么是依赖注入(DI)?1. 定义2. 举个例子二、依赖注入的几种方式1. 构造器注入(Con

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文