[color=rgba(0, 0, 0, 0.75)] 原文链接:https://zhuanlan.zhihu.com/p/345234382
[color=rgba(0, 0, 0, 0.75)]大家好,我是一哥,从本章开始,我将带领大家,正式进入uvm的学习,首先来了解一下uvm的基本概念,本节主要讲述两个内容,芯片验证以及验证计划。
[color=rgba(0, 0, 0, 0.75)]首先来看看芯片验证在芯片设计当中的地位。芯片验证是在一个芯片设计的过程当中,验证各个转化阶段是否正确的执行的过程,一个芯片的设计涉及到多个阶段的转化。
[color=rgba(0, 0, 0, 0.75)]首先,分析市场需求,这决定了芯片的用途以及芯片的功能,然后从市场需求到高层算法,算法的目的是建立芯片的功能模型,然后从高层算法到芯片的架构,从芯片的架构到具体rtl代码的实现,对rtl代码进行综合就得到了门级网表,经过后端的布局部线之后,生成了gds ll,最后就可以进行流片测试了。
[color=rgba(0, 0, 0, 0.75)]
[color=rgba(0, 0, 0, 0.75)]由于不同阶段的产品的表现形式不同。因此,验证它们是否按照正确的形式执行就十分重要,如果没有正确的执行,那么最终的芯片将无法达到最初的要求。
[color=rgba(0, 0, 0, 0.75)]不同阶段的需要不同的验证方法,比如:在算法级,可以使用c,c++或者是matlab对算法进行建模,验证算法的可行性,再比如:对rtl进行功能验证来检查rtl是否满足我们的要求等。
[color=rgba(0, 0, 0, 0.75)]我们现在将要学习的就是针对rtl的功能验证,当然,其他的阶段也有其对应的验证方式,我这里主要针对的是rtl功能的验证。
[color=rgba(0, 0, 0, 0.75)]通常情况下,在进行验证工作之前,需要先写一份详细的验证计划书,这个验证计划书是验证工作服务的,它想指导你后续的验证工作。同时也可以在验证的最后,作为你验证工作结果评判的标准。
[color=rgba(0, 0, 0, 0.75)]在验证计划书当中,你需要明确你的验证目标是什么?
[color=rgba(0, 0, 0, 0.75)]一般是对功能覆盖率和结构覆盖率的统计,你需要具体指出他们要覆盖的每一个点,以及最终覆盖率要达到什么样的要求。覆盖率也是衡量工作进度的标准,说明验证的层次,验证对象是模块级的还是芯片级的?又或者是系统级的?
[color=rgba(0, 0, 0, 0.75)]
[color=rgba(0, 0, 0, 0.75)]模块级一般是指一个较小的具有独立功能的设计模块,比如alu。将多个模块集成到一起就构成了一个芯片,比如cpu。将多个芯片集成到一起,使它们一起协同的工作就构成了整个系统。一般来说,验证是从低层验证到高层验证。在向高一级验证推进之前,要保证低级验证完全结束。
[color=rgba(0, 0, 0, 0.75)]接下来,明确你的验证策略
[color=rgba(0, 0, 0, 0.75)]其中包含了验证形式,也就是你验证对象的类型,那么验证对象是白盒的还是灰盒的?又或者是完全不清楚结构的黑盒?
[color=rgba(0, 0, 0, 0.75)]
[color=rgba(0, 0, 0, 0.75)]白盒指的是验证对象的内部结构是完全可见的,我们可以清楚的看到设计的详细内容,白盒验证的好处是我们可以了解设计者的意图,并且验证可以达到设计上的每一点,但这需要花费更长的时间。
[color=rgba(0, 0, 0, 0.75)]灰盒指的是验证对象的内部结构,只有一部分是可见的,黑盒验证则内部完全不可见,我们只能看到设计的输入接口和输出接口,对黑盒验证,我们只能通过了解其设计文档来了解它的功能。
[color=rgba(0, 0, 0, 0.75)]验证就存在着数据比较。通常的做法是使用高级语言为被测设计建立一个参考模型,这个参考模型将模拟被测设计的行为,并给出相应的结果,将这个理想的结果与设计的输出相比对,以此来判断设计的功能是否是正确,决定使用什么样的方式来建立参考模型,一般使用c,c++或者matlab来建立,当然了,也可以通过hdl语言来建模。
[color=rgba(0, 0, 0, 0.75)]一个好的验证平台可以使验证工作变得清晰有条理,我们要在验证计划当中明确要搭建什么样的验证平台,目前主流的验证平台有基于verilog的印证平台,基于systemverilog的验证平台,以及适用uvm方法学建立的验证平台,据uvm验证方法学的验证平台是当今普遍使用的验证平台。
[color=rgba(0, 0, 0, 0.75)]下一篇将持续介绍如何搭建uvm测试平台,以及如何使用uvm测试平台。
[color=rgba(0, 0, 0, 0.75)]本章内容就介绍到这里!!!
[color=rgba(0, 0, 0, 0.75)]未完(待更)…
|