UVM数字验证
文章平均质量分 86
对数字验证的技术总结
验证cc
这个作者很懒,什么都没留下…
展开
-
数字验证--uvm寄存器模型常用函数介绍
DUT中寄存器的值可能是实时变更的, 寄存器模型并不能实时地知道这种变更, 因此, 寄存器模型中的寄存器的值有时与DUT中相关寄存器的值并不一致。 对于任意一个寄存器, 寄存器模型中都会有一个专门的变量用于最大可能地与DUT保持同步, 这个变量在寄存器模型中称为DUT的镜像值( mirrored value) 。寄存器模型中还有一个值叫期望值(respected value),这个值保存我们希望写入寄存器的值。比如希望向DUT某个寄存器写入'h1,用set函数设置期望值,然后用update任务(upd...原创 2021-05-28 18:24:39 · 5189 阅读 · 0 评论 -
数字验证--断言assert
断言是什么?断言是对设计违利的一种严查,能够在违例时立刻报出错误。为什么使用断言,断言的优势又有那些呢?1.断言能够缩短你的开发时间,断言的代码是比较简单的,相比systemverilog能够很好的处理信号的电平和边沿变化的检测。如systemverilog要想实现时钟上升沿时如果FRAME_也是上升沿则2个时钟后LDP_是下降沿有需要开发下图的代码,但是使用断言则非常简单,property ldpcheck; @(posedge clk) $rose(FRAME_) |->原创 2021-05-15 18:30:09 · 6354 阅读 · 3 评论 -
sequence的仲裁机制
概述sequence可通过sequencer向drive发送你的待测case,如果一个sequencer只发送一个sequence是不需要仲裁的,但在实际使用中,如果一个sequencer接收了两个sequence或者更多的时候,会怎样发送各自sequence的case呢?如果你要发送测case需要存在同步关系,要怎么来做这样的同步关系呢?这个时候就能感受到uvm的强大了,可以使用的他的仲裁机制。总结了sequence的几种仲裁关系。通过指定优先级决定仲裁 通过lock或者grap决定仲裁 通过原创 2021-04-27 17:14:54 · 1540 阅读 · 0 评论 -
数字验证测试点分解
概述测试点实际上是把设计的功能按层级分解成一个个最简单、最底层的功能点,化繁为简,方便测试用例的实现。测试点主要从功能规格(FS)与架构规格(AS)中提取。测试点分解需要保证的几点原则:完备性,即不能遗漏任何功能点,特别是异常处理,边界处理,容错处理这些往往容易被忽视; 低耦合,不同测试点之间的相关性越低越好,这也直接决定了分解粒度,并影响testcase的开发难度; 无歧义,测试点的描述要直接而明确,不同测试点之间不存在矛盾之处。 测试点分解的方法 等价类 边界值法原创 2021-04-26 21:23:19 · 5197 阅读 · 3 评论 -
uvm中virtual如何使用
概述virtual 是OOP中的一种关键字,主要体现的是多态。虚函数是指一个类中你希望重载的成员函数 ,当你用一个基类指针或引用指向一个继承类对象的时候,调用一个虚函数时, 实际调用的是继承类的版本。整理了uvm中使用virtual常用的四种情况:1.virtual interface; 2.virtual class; 3.virtual sequence和virtual sequencer;4.virtual function和virtual task.virtual interface下面原创 2021-04-13 10:26:56 · 3743 阅读 · 1 评论 -
VCS使用SDF文件进行后仿反标
概述从概念上来说,数字验证包含两方面的内容,一个是验证功能,另一个是验证时序。对应的仿真模型(不论是model,standard cell等)也不外乎这两个部分,功能部分由逻辑,udp元件或gate构成,时序部分则包括了时序反标和时序检查两小块。平时我们所说的功能验证,也就是前仿真,实现了对功能进行验证的目的,时序被默认为理想情况,不包含延迟信息。门级仿真,也称为后仿真,除了功能验证外,最主要就是用来检查时序是否满足,有没有时序违例的情形。门级仿真根据网表不同,又可以分为综合后仿真,以及pnr后转载 2021-04-06 16:07:02 · 7113 阅读 · 4 评论 -
uvm覆盖率收集常用工具
简介可通过 -cm_hier 配置文件来控制覆盖率收集范围Coverage Metrics覆盖指标:-cmvcs使用编译选项 -cm (line+cond+tgl)生成simv.vdb文件夹,仿真选项中使用-cm (line+cond+tgl),会在simv.vdb/snps/coverage/db/testdata/your_cm_name下产生覆盖率xml文件;-cm_name编译选项or仿真选项 -cm_name your_cm_name 将会生成覆盖率文件:simv.原创 2021-04-05 14:51:23 · 3120 阅读 · 0 评论 -
TLM事务级建模
概述TLM:Transaction Level Modeling(事务级建模),它是一个独立于语言的一个标准,常用于系统建模,加速软硬件协同开发。在芯片开发中,常配合system C使用来进行系统设计。最新的标准是OCSI TLM 2.0。TLM的端口整理端口的按照类型可以划分为三种:port:经常作为initiator的发起端,也凭借port,initiator才可以访问target中实现的TLM通信方法;export:作为initiator和target中间层次的端口;imp:只原创 2021-04-05 14:12:09 · 1385 阅读 · 0 评论 -
功能覆盖率
概述功能覆盖率指你对设计所实现功能特性的收集,验证的目的就是确保设计在实际环境中的行为正确。设计规范里详细说明了设备应该如何运行,而验证计划里则列出了相应的功能应该如何激励、验证和测量。功能覆盖率是和设计意图紧密相连的,有时也称为”规范覆盖率“,而代码覆盖率则是衡量设计的实现情况。覆盖率完备性如果你的功能覆盖率很高但是代码覆盖率很低,这说明你列的测试点可能不够全面,有遗漏的功能没有加入到你的测试计划中,你的测试没有很好的执行设计的所有代码,这是应该回到设计规范上,更新验证计划,然后增加更过针原创 2021-04-02 10:30:48 · 4747 阅读 · 0 评论 -
数字验证覆盖率收集
概述在进行芯片验证时,最重要的一个环节就是完成对dut的覆盖率收集工作,覆盖率主要分为下面三类:1.代码覆盖率2.功能覆盖率3.断言覆盖率如何完成覆盖率收集? 代码覆盖率:是衡量验证进展的最简易的方式。它的作用是检查代码是否冗余,设计要点是否遍历,被检测的对象是RTL代码,而代码覆盖率的检测一般由工具自动生成的。行覆盖率(Line coverage)、分支覆盖率(Branch coverage)、路径覆盖率(Path Coverage)、翻转覆盖率(Toggle coverage).原创 2021-04-01 17:55:55 · 4152 阅读 · 0 评论