- 博客(30)
- 收藏
- 关注
原创 Effective FPV for verification 形式验证 第6章
本章中以一个简单的ALU为例,回顾了使用FPV进行bug hunting和full proof 模式的典型过程。 bug huntin是使用FPV作为其他验证方法的补充,以检测难以发现的极端情况问题。full proof FPV是尝试完全证明规格书,完全取代其他验证方法。建议新手先做design exercise,其次是bug hunting FPV,最后再做full proof FPV,层层递进。
2023-03-27 16:17:46
1242
2
原创 systemverilog断言简介 形式验证 第3章
本章节介绍了用于形式验证的sva语言,可能不够完整,但对于初学者来说,足够去了解这么写checker。
2023-03-02 10:48:21
4083
原创 Basic formal verification algorithms 形式验证基本算法 第2章
本章是介绍了formal verification的一些基本术语,一些验证过程的处理方法,以及专业术语"BDD" 和"SAT"的介绍,这在FPV中很有用。对于初学者来说非常有必要去了解,认真看完这些也是为FV打下良好的基础。
2023-02-24 16:31:57
2015
原创 Effective FPV for design exercise 形式验证 第五章
本章介绍了设置design exerciseFPV环境,并在模型上有效使用它的实际问题,通过一个交通灯的示例设计来说明这个过程。刚开始做FPV验证,最重要的是搭建验证环境,包括sva checker代码和一些约束。编写checker时,可以先关注最基本的功能,把细节的要求用assume约束成固定状态,后续再一步步完善,达到最终的需求。
2023-02-21 11:45:12
1309
原创 Formal verification (FV) 处理复杂度 形式验证 第10章
复杂性问题是FV固有的挑战,因为FV引擎必须解决的基本问题是NP完全问题。在本章探讨了一些处理复杂性的技术,并使FV工具能够在运行时或内存消耗出现初始问题的情况下取得成功。
2022-03-21 10:04:46
3084
1
原创 formal Verification 形式验证 形式验证的最大障碍:误报(false positives)的危险 第9章
本章探讨了导致FV误报的各种类型的问题:运行某种类型的FV流的情况,在项目的某个时候,当验证在逻辑上存在不合理之处时,设计被标记为“已验证”。
2022-03-14 12:02:05
3160
原创 Formal equivalence verification 形式验证之等价验证 FEV 第8章
在本章中介绍了FEV的概念,确定两个不同模型之间等价性的通用技术。这些模型可以是高级模型、RTL或网表,在本书中主要关注的是涉及RTL的案例。讨论了定义等价的方法:组合等价,模型需要在所有状态元素上匹配;序列等价,模型只需要最终生成相同的结果;以及事务等价性,即行为需要对应于某些定义明确的事务。
2022-03-09 10:06:15
5226
原创 Linux 查看文件内容,file cat more less tail head命令用法
如何查看文件的内容,cat、more和less命令可以非常方便地查看文件全部内容,而且tail和head命令还可查看文件中的一小部分内容。
2022-02-28 10:45:57
1062
原创 Linux 结构化命令 if-then 语句 if-then-else语句 嵌套if case命令
结构化命令允许改变shell脚本的正常执行流,最基本的结构化命令是if-then语句。也可以扩展if-then语句,加入一组当指定命令失败后由bash shell执行的命令,仅在测试命令返回非零退出状态码时,if-then-else语句才允许执行命令。elif等同于使用else if语句,会在测试命令失败时提供额外的检查。case命令是执行多个if-then-else命令的简便方式,参照一个值列表来检查单个变量的值。
2022-02-24 14:56:57
3700
原创 Linux 基本命令 在命令行和脚本中进行数学表达式运算 退出脚本命令
bash shell提供了多种方式在shell脚本中执行数学操作。expr命令是一种进行整数运算的简便方法。在bash shell中也可以通过将美元符号放在由方括号包围的表达式之前来执行基本的数学运算。为了执行浮点运算,需要利用bc计算器命令,将内联数据重定向到输入,然后将输出存储到用户变量中。shell中运行的每个命令都会产生一个退出状态码。退出状态码是一个0~255的整数值,表明命令是否成功执行;如果没有成功,可能的原因是什么。
2022-02-24 11:28:06
1030
原创 Linux bash 基本命令 重定向输入输出 管道连接
Linux的一些简单命令,向将命令的输出发送到一个文件,管道连接:将命令直接重定向到另一个命令。
2022-02-23 17:19:30
1519
原创 Formal property verification 形式验证 第四章
介绍了《Formal Verification An Essential Toolkit for Modern VLSI Design》第四章内容,对FPV 做了一些简单介绍,为了解更多形式属性验证,写好SVA打好基础。
2022-02-22 17:04:08
4849
1
原创 Verilog 实现占空比为3/5 2/5 1/5 50% 的五分频信号 断言SVA查看波形
用断言查看占空比为3/5 2/5 1/5 1/2 的五分频波形
2022-01-12 11:09:50
1911
原创 FormalVerification 形式验证 翻译笔记 章节介绍(1)
关于《Formal Verification An Essential Toolkit for Modern VLSI Design》全书章节的概述,可以根据这个去考虑,是全文通读,还是针对性学习。
2021-12-28 15:01:05
2757
5
原创 SVA断言翻译笔记 16.7-16.8 Sequences 语法(11)
##[*] 等价于##[0:$]##[+]等价于##[1:$]a ##N b //a为真,则过N拍b为真;(a ##1 b ##1 c) ##0 (d ##1 e ##1 f ) 等价于 a ##1 b ##1 c && d ##1 e ##1 freq ## [4:32] gnt //延迟可以是时间窗范围内任何值;req ## [4:$] gnt //使用$将时间窗扩展到无穷;a ##1 b ##1 c ##3 `true //`define true 1。
2021-12-20 15:51:52
963
1
原创 SVA断言翻译笔记 16.6Boolean expressions(10)
表达式的计算结果是布尔值,其解释方式和在过程if语句的条件下解释表达式的方式相同,如果表达式计算为x,z,0,则会解释为错误,否则为真。
2021-12-17 16:57:32
747
原创 SVA 断言翻译笔记 16.13多时钟序列语法(九)
16.13 Multiclock support(多时钟支持)1、多时钟序列 多时钟由通过使用单延迟连接运算符##1或者零延迟运算符##0连接单时钟子序列而建立,由##1指示的单个延迟被理解为,从第一个序列的端点(发生在第一个时钟的一个时钟节拍)到第二个时钟的最近的严格后续时钟节拍(第二个序列从这里开始),##0表示的零延迟被理解为从第一个序列的端点(发生在第一个时钟的一个节拍处)到第二个时钟的最近可能重叠的节拍(第二个序列从这里开始)//例1@(posedge clk0...
2021-12-13 14:03:04
1463
原创 SVA 断言翻译笔记(八)16.16Clock resolution介绍
16.16Clock resolution 有很多种方法可以指定属性里面时钟,如下所示:(1)带时钟的序列实例,如:sequence s2; @(posedge clk) a ##2 b; endsequenceproperty p2; not s2; endpropertyassert property (p2); 这是很完整的一种写法。(2)属性:property p3; @(posedge clk) not (a ##2 b); ...
2021-12-10 17:04:05
447
原创 SVA 断言翻译笔记(七) 16.15Disable iff用法
默认disable iff可以在生成块或者module,interface,program声明中声明,其在默认disable iff声明的范围(作用域)和子范围(子作用域)中,为所有并发断言提供了一种默认禁用情况。默认禁用iff可以在生成块或模块、接口或程序声明中声明。此外,默认值扩展到任何嵌套的模块、接口或程序声明,以及嵌套的生成块。但是,如果嵌套模块、接口、程序声明或生成块本身有一个默认disable iff声明,则默认disable iff用嵌套声明或生成块应用,并从外部覆盖任何默认disable
2021-12-10 11:09:24
11501
1
原创 SVA16.14并发断言翻译笔记$inferred_clock和$inferred_disable(六)
16.14.17推断值函数 下面这些详尽的时间系统函数可用于查询推断的时钟事件表达式和禁用表达式:(1)$inferred_clock 返回推断的时钟事件的表达式(2)$inferred_disable 返回推断的禁用表达式module m(logic a, b, c, d, rst1, clk1, clk2);logic rst;default clocking @(negedge clk1); endclockingdefault disa...
2021-12-09 17:32:26
405
原创 SVA16.14并发断言翻译笔记(五)
1、过程断言刷新点 如果如下情况发生,被定义的过程(进程)会到达过程断言刷新点:(1)由于到达事件控制或等待(wait)语句,而先前被暂停的进程将恢复执行。(2)由always_comb和always_latch声明的进程,由于其一个从属信号上的转换,将恢复执行。(3)进程的最外层由于disable语句被禁用。 以下示例显示了过程并发断言,如何固有地避免由于单个仿真时间步长中的过渡组合值,而导致的多个计算:assign not_a = !a;defaul...
2021-12-09 16:14:32
358
原创 SVA断言 并发断言16.14学习笔记(四)
1、限制语句在形式验证中,为了使工具收敛于属性证明或将设计初始化为特定状态,通常需要约束状态空间。为此,引入了断言语句restrict property。它与assumeproperty具有相同的语义,但又与该语句相反,restrict property语句未在仿真中验证,并且没有动作块。 该语句有如下的格式:restrict property (property_spc);没有与该语句关联的操作块。例如: 假设当控制位ct...
2021-12-08 17:29:52
1829
原创 SVA 断言16.5翻译学习笔记(三)
并发断言概述:并发断言用于描述随着时间推移的行为,不像立即断言,计算模型基于一个时钟,所以只在时钟节拍出现时计算并发断言。除了禁用情况和禁用事件,并发断言使用其表达式的采样值,并发断言在观察去被计算。1、采样 并发断言和一些其它的结构(比如在一个检查器的always_ff程序中引用的变量)会有特殊的规则用于对其表达式的值进行采样,这些结构之一的表达式的采样值被称作sampled value,在大多数实例中,表达式的采样值是其在前置区域中的值,然而这个规则有一些重要的例外。 ...
2021-12-07 14:01:58
1175
3
原创 SVA第16章Assertions16.4延时断言翻译(二)
当延时断言成功或者失败,动作块不会立即执行。相反,操作块子例程(程序)调用(或者$error,如果断言或假设失败并且不存在操作块)及其输入参数的当前值被放置在与当前执行的进程相关联的延迟断言报告队列中,这样的调用称为挂起的(待处理)断言报告(pending assertion report)。如果进程中达到延迟断言刷新点(deferred assertion flush point),则清除其延迟断言报告队列,将不执行任何挂起的断言报告。在每个仿真时...
2021-11-29 16:54:29
1479
原创 IEEE Standard for SystemVerilog Unified Hardware Design第16章Assertions16.1-16.4断言翻译(一)
1、断言的类别:并发断言(concurrent assertions)和立即断言(immediate assertions)两种。 立即断言与仿真一块使用,没有立即限制断言语句;并发断言基于时钟语义并使用表达式的采样值。一个断言能指定系统的行为,断言主要用于验证设计的行为,而且可以用于提供功能覆盖,以及标记被用于去验证却不符合假设要求的输入激励(input stimulus)。 断言显示为已声明且要被执行验证函数的断言描述,描述会是以下几种:(1)断言(assert);...
2021-11-23 14:24:58
986
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人