关于断言的部分用法

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

相关文章

python3 gunicorn配置文件的用法解读

《python3gunicorn配置文件的用法解读》:本文主要介绍python3gunicorn配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python3 gunicorn配置文件配置文件服务启动、重启、关闭启动重启关闭总结python3 gun

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

C#中DrawCurve的用法小结

《C#中DrawCurve的用法小结》本文主要介绍了C#中DrawCurve的用法小结,通常用于绘制一条平滑的曲线通过一系列给定的点,具有一定的参考价值,感兴趣的可以了解一下... 目录1. 如何使用 DrawCurve 方法(不带弯曲程度)2. 如何使用 DrawCurve 方法(带弯曲程度)3.使用Dr

C++ vector的常见用法超详细讲解

《C++vector的常见用法超详细讲解》:本文主要介绍C++vector的常见用法,包括C++中vector容器的定义、初始化方法、访问元素、常用函数及其时间复杂度,通过代码介绍的非常详细,... 目录1、vector的定义2、vector常用初始化方法1、使编程用花括号直接赋值2、使用圆括号赋值3、ve

MySQL中FIND_IN_SET函数与INSTR函数用法解析

《MySQL中FIND_IN_SET函数与INSTR函数用法解析》:本文主要介绍MySQL中FIND_IN_SET函数与INSTR函数用法解析,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一... 目录一、功能定义与语法1、FIND_IN_SET函数2、INSTR函数二、本质区别对比三、实际场景案例分

pytorch之torch.flatten()和torch.nn.Flatten()的用法

《pytorch之torch.flatten()和torch.nn.Flatten()的用法》:本文主要介绍pytorch之torch.flatten()和torch.nn.Flatten()的用... 目录torch.flatten()和torch.nn.Flatten()的用法下面举例说明总结torch

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

前端高级CSS用法示例详解

《前端高级CSS用法示例详解》在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交互和动态效果的关键技术之一,随着前端技术的不断发展,CSS的用法也日益丰富和高级,本文将深... 前端高级css用法在前端开发中,CSS(层叠样式表)不仅是用来控制网页的外观和布局,更是实现复杂交

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S