本文版权归本公众号所有。
Vmanager介绍
在最近做项目的过程中,无意之中了解到这软件,开始学习,感受到这软件的强大,并且成功将该软件,用到了我们部门的flow中。因此,准备一系列的博文,来介绍下cadence的vmanager工具。强烈建议,做数字的团队,使用这个工具,并建立相应的flow。在介绍vmanager工具之前,首先要先介绍一下功能验证方法学。
验证方法学
directed-test Drive:直接给dut施加激励,然后判断DUT输出是否正确,来验证DUT的各个功能,但是带来的问题,验证不能完备,会遗漏很多隐藏的bug。
coverage drive:基于coverage,施加激励,然后最后收集coverage,来判断功能验证是否完备,但是带来的问题是,编写coverage可能会遗漏,造成验证不能完备,并且很难去预估验证是否完成。
metric drive:是目前新提出的功能验证方法学。基于验证计划的各个feature,施加激励,最后收集各个feature的metric,反标到验证计划中,得到可视化结果,从而确定验证是否完备
Metric Drive Verification(MDV)
MDV,是一种新的功能验证方法学。核心还是基于coverage,但是将coverage和验证plan进行了结合。将验证得到的metric(本质就是覆盖率),反标到验证计划,得到可视化结果,从这可视化结果,从而确定验证到达了哪一个阶段,下一步的验证方向应该是什么,以及最终判断验证是否完备。保证了验证的快速收敛。cadence,为了实现MDV,提供了vmanager和vplan工具,并制定了一套MDV流程。
Cadence将MDV流程,分成了4部分,如下图所示:
- plan:制定验证计划,根据验证的testpoint(测试点),利用vplan工具,转化为vplan工程,供后续metric反标使用。construct:根据验证计划,编写coverage和checker。来保证,各个testpoint是否有验证到。execute:利用各个工具,如irun,PXP,formal等工具,对验证环境进行仿真。measure/analyze:coverage收集和分析,反标到vplan,确定验证是否signoff。
其中,最核心的部分,就是验证管理和数据管理。这部分,就是由cadence的vmanager工具来负责的。总之,coverage是MDV的关键,验证中,时时刻刻以coverage为中心,将coverage反标到vplan中,判断vplan中的各个测试点,是否有达到,从而指导下一步的验证方向。MDV,可以让你知道,下一步你应该怎么做,并且怎么快速的实现他(Know where you are going and get there faster)。
Vmanager任务流程
Vmanager的任务流程如下图所示:
最开始,使用vplan建立验证计划,并且建立验证环境。使用vmanager运行回归,之后分析fail的case,以及收集的metric,确定状态。根据状态判断,是否收敛,如果收敛,那么验证就结束了,可以signoff,如果验证没有收敛,那么就重新运行回归。这里,就引出了vmanager的两大功能:
- 回归管理(regression management):使用那个vmanager内部的runner,可以调用众多的工具(如IRUN,pxp,formal工具),运行回归,并且在回归运行完毕后,自动收集run的结果,并且进行整合。回归分析(regression analysis):利用vmanager,可以很便捷,可视化的分析回归结果,包括case成功失败状态,以及metric。最关键的是,可以进行vplan的反标。
下图是vmanager的工作说明:
vmanager支持运行多个验证工具,如irun,formal,PXP等,运行完毕后,将数据进行收集。在planning center,制定验证计划,关联testbench以及spec。在regression center,启动回归。在analysis center,对回归结果数据进行分析。在tracking center,对历史的结果进行分析。
Vmanager工作模式
在vmanager中,提供了2种工作模式:
- client-server模式:有一个集中的server,各个client连接这个server进行工作,server管理所有的数据。下文,均简称为CS模式。local模式:没有server,各个client在自己本地进行工作。
这里,推荐大家用CS模式,这个模式下,各个client,连接一个指定的server进行工作,得到的结果和数据,是会自动上传到这个server,并且进行集中显示,这样可以让大家都可以看到实时的状态。不再需要像之前,要大家指定一个共享目录,大家将自己跑出来的结果和数据,放到该目录下,实现共享。以下,只介绍CS工作模式,local工作模式和CS工作模式使用是一样的,只是没有server进行集中的数据显示与管理。在CS模式下,又分为了single-project和multi-project。Single-project Server上,只有1个工程,所有的client,均在这个工程下工作。
server需要2个东西:SQL DB:server所需要的数据库。profile:存放vmanager的配置文件。 Server会对应一个port,client根据server的ip以及port,就可以连接到这个server上。在下一篇中,会详细介绍如何搭建一个vmanager server。Multi-project
Server上,有多个工程。client连接server的时候,要选择将来工作的工程。
Server所需要的2个东西,和single-project,是一样的。CS模式下,可以不只有1个server,可以有多个server。各个client,可以选择server,选择project进行连接,然后工作。
在下一篇中会详细介绍,如何创建一个vmanager server。
NOTE:欢迎大家多多转发文章,这样我写文章的动力就会更足。