数字IC验证基础
文章平均质量分 91
记录数字IC验证基础,system verilog 和 UVM学习记录以及验证平台开发心得
不吃葱的酸菜鱼
数字IC前端/机器学习算法
展开
-
UVM基础-Sequence、Sequencer(二)
在上篇博客中,讲了sequencer和driver之间传递sequence item的握手过程,也讲了sequence和item之间的关系,下面我们来讲讲sequence和sequencer之间的关系,以及当多个sequence挂载到sequencer时冲裁这么处理。原创 2022-11-12 16:55:45 · 1780 阅读 · 0 评论 -
UVM基础-Sequence、Sequencer(一)
对于IC验证的新晋工程师进入到一个公司,大概率不会让你上来就写验证环境,以及验证环境的修改。但是会让你一上来就写一些sequence,以及一些test。因此,sequence这一部分是很重要的。原创 2022-11-09 19:33:51 · 2390 阅读 · 0 评论 -
config_db机制详解
说到底,config_db机制其实就是为了传输“东西”而生的,这个“东西”既可以是一个uvm_object继承而来的类,譬如interface和transaction,又可以是一个bit或者整型int等基础变量。举个例子,我们要用uvm_config_db传输一个int类型的变量var,传递值为var=100,传递到driver中,而driver被封装成agt里,agt又被封装到env下。那么就可以改变函数的位置,在env中,把函数改写到后面的任何一个phase都是可以的。这是没有发信但是收信了的情况。原创 2022-10-21 11:13:20 · 2436 阅读 · 0 评论 -
UVM基础-TLM通信机制(二)
与TLM 1.0相比,TLM 2.0提供更加强大的传输特性,主要包括:① 双向的阻塞或者非阻塞接口;(TLM 1.0也有) ② 时间标记;(从一个组件到另一个组件到底花了多长数据传输)③ 统一的数据包。通过这些特性,TLM 2.0使得接口之间的通信趋于标准化,更容易为系统构建抽象模型。在定义TLM 2.0的过程中,仍然有initiator和target的概念,也有port、export以及imp端口类型。对于port类型,它是用来发起请求并调用target一端的传输方法;export用来传导这一需求;原创 2022-10-25 11:15:59 · 1698 阅读 · 1 评论 -
UVM基础-TLM通信机制(一)
芯片验证是在,通过验证语言和方法学例如来构建验证平台。该平台的特点是验证环境整体基于,组件之间的通信,而在driver与硬件接口之间需要将TLM抽象事务降解到基于时钟的信号级别。原创 2022-10-19 12:24:12 · 2385 阅读 · 1 评论 -
UVM基础-组件(driver、monitor、agent...)
这里extern 声明了一个task,会发现这个task没有endtask配对,这是因为这里不是对task的功能进行描述,而是利用extern做一个声明,告诉大家我已经定义一个task,名叫run_phase,占一个坑,然后在外部定义具体功能。如果没有extern,那么就要在声明的同时,下面接着定义task的功能,然后再endtask;这两种定义task的方法均可以,没有任何区别,就是coding风格不一样而已;那么什么时候使用extern,什么时候不使用呢?原创 2022-10-12 14:54:43 · 3020 阅读 · 0 评论 -
UVM基础-factory机制、phase机制
UVM在推出后得到了御三家Sysnopsys、Mentor和Cadence的支持,UVM几乎完全集成了OVM,在这基础上又采纳了Sysnopsys在VMM中的寄存器解决方案RAL。可以说UVM继承了VMM和OVM的优点又克服了各自的缺点,是验证方法学的发展方向。对于UVM,一个验证工程师应该学会:①如何使用UVM搭建验证平台,包括如何使用。原创 2022-10-12 14:40:34 · 2538 阅读 · 0 评论 -
验证基础-类型转换、虚方法、回调函数、对象拷贝
这是因为如果virtual是声明在类集成关系的中间层,那么只有从该中间类层到其子类的调用链中会遵循动态查找,而最底层到该中间类的方法调用仍然会遵循静态查找。如果子类和父类中的方法,同名不同参,那么它们之间就没有继承的关系,更没有虚方法的关系。原创 2022-10-10 09:15:00 · 488 阅读 · 0 评论 -
验证基础-验证量化及覆盖率
覆盖率是衡量设计完备性的一个指标。覆盖率工具会在仿真过程中收集信息,然后进行后续处理并且得到覆盖率报告,然后通过报告找出覆盖之外的区域,接着修改现有测试或者创建新的测试来填补这些盲区。每一次的随机测试我们都会得到对应的测试结果,最后我们再把这些测试结果合并,就能得到最终的覆盖率报告了。原创 2022-10-09 10:45:00 · 1281 阅读 · 0 评论 -
验证基础-随机约束与随机控制
随着芯片体积增大、复杂度提高,定向测试已经无法满足验证的需求,随机测试的比例逐渐升高。定向测试能找到你认为可能存在的缺陷,而随机测试可以找到你想都没想到的缺陷。随机测试的环境要求比定向测试复杂,它除了需要,还需要和,上百次的仿真不需要人为参与,它可以减少相当的代码,产生的激励也较定向测试。随机的约束不但可以,还可以指定各个数值的。1.器件配置:配置寄存器的值和系统信号。2.环境配置:随机化验证环境,例如合理的时钟和外部反馈信号。3.原始输入数据:例如数据包的长度、带宽,数据间的顺序。原创 2022-10-08 16:25:23 · 1124 阅读 · 0 评论 -
System verilog基础-面向对象编程
verilog的module+method的方式与SV的class定义有本质上的区别,即面向对象编程的三要素:封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)。这一篇章讲解SV中最重要的一个类型-类,所以篇幅会很长。类的定义核心即是属性声明(property declaration)和方法定义(method definition),所以类是数据和方法的自洽体,即可以保存数据也可以处理数据。这是与struct结构体在数据保存方面的重要区别,原创 2022-10-09 08:00:00 · 841 阅读 · 0 评论 -
验证基础-验证方法
UVM(Universal Verification Methodology)的验证方法学通过吸取eRM,AVM,OVM,VVM等之前不同的方法学的优点,集众家之所长。所有的验证方法学服务目的都在于提供一些可以重用的类来减轻在项目之间水平复用和垂直复用的工作量。就验证语言System verilog而言,它的面向对象、随机约束、线程通信管理等核心特性,同时这些特性也为建立一个验证环境提供了足够多的便利。UVM面向所有数字设计,涵盖了从模块级到芯片级,ASIC到FPGA,以及控制逻辑、数据通路到。原创 2022-10-08 11:34:07 · 2223 阅读 · 0 评论 -
验证通识——验证计划及管理
是衡量激励生成种类和功能点验证的量化指标。无论通过何种验证方法,我们都需要采用覆盖率来确保给出了足够多的激励类型,并且设计的边界和内部穷举了可能的状态。覆盖率可以分为。除了给出合法的激励之外,也需要考虑给出一些,来测试设计的和。在验证过程中,我们需要不断地更新验证进度,从。我们通过收集以下信息来评估验证计划的实施进度:※ 回归测试通过率(regression pass rate),一份回归测试表是。回归测试表的主要功能是用来,。原创 2022-10-08 10:21:44 · 462 阅读 · 0 评论 -
System verilog基础-子程序和测试平台
接口可以用作设计,也可以用作验证,在验证环境中,接口可以使得连接变得简洁而不易出错。interface和module的使用性质很像,它可以定义端口,也可以定义双相信号;它可以使用initial和always,也可以定义function和task。使用了interface之后,结构图变成:可以看到,使用interface之后,整个测试框图简洁了很多。接口将有关信号封装在同一个接口中,对于设计和验证环境都便于维护和使用。如果你需要添加新的信号,只需要在接口中定义这个信号即可。由于接口既可以在。原创 2022-10-08 10:03:48 · 955 阅读 · 0 评论 -
System verilog基础-数据类型总结
typedef语句可以用来创建新的类型,可以把parameter和typedef语句放到一个程序包(package)里,以使它们能被整个设计和测试平台所共用,用户自定义的最有用的类型是双状态的32比特的无符号整数,在测试平台中,很多数值都是正整数,例如字段长度或事务次数,所以把对uint的定义放到通用定义程序包中,这样就可以在仿真程序的任何地方使用它。由于结构体struct 只是一个数据的集合,所以它是可综合的。如果想在设计代码中对一个复杂的数据类型进行建模,例如像素,可以把它放到struct里。原创 2022-10-08 09:50:25 · 4194 阅读 · 0 评论