vmanager操作指引

1. Vmanager版本

Incisive15.2版本及以下版本。因为15.2以上的版本里没有vmanager的license.

2. 运行Vmanager步骤

2.1. source .cshrc

Cd ../sim_core_v3.1, 然后source .cshrc

.cshrc里主要是安装incisive15.2,并定义session存放地址(vmanager数据库地址)。

2.2. 编写vsif文件

Cd run_dir然后手动编写vsif文件(也可以用generate_vmgr_vsif.sh脚本生成vsif文件)

vsif(verification session input format file),是vmanager启动一个session,必备的一个文件,该文件,指定了待运行的test。vmanager工具,会从该文件中,提取出test以及test的run命令,使用自带的runner去运行这些test的run命令,并且收集run的结果,最后集中显示。

2.2.1. Vsif命令解释

vsif文件中,定义了如下的三个大的字段:

session:对此次session的相关设置

group:对group的相关设置,一个session可以包括多个group,每个group可以包括多个test

test:对test的相关设置

vmanager操作指引

vsif文件示例

Drm: lsf //bsub的方式运行tc

Drm: parallel local //本地并行方式运行tc. 此外还有选项serial local等可选项。

Max_runs_in_parallel: 20 //20个tc并行运行

Output_mode : terminal or log_only. //vmanager的运行log在terminal上显示或只输出到log file.

Scan_script: //每个test运行结束后,会调用vm_scan_default.pl命令对log文件进行搜索,得到error或warning报告。Error和warning的格式由.flt文件规定。Vmanager内建了很多flt, 例如ius_hdl.flt, uvm.flt, modisim.flt等。用户也可以自定义flt。如果仿真工具也是cadence的,那么vmanager会自动使用合适的flt文件。

Count: //每个test重复运行的次数。

Sv_seed: //随机种子.

此外还可以定义其他script, 例如想编译和运行分开,则可以用pre_group_script或pre_session_script来编译,用run_script来运行(也可以编译运行都用run_script来跑)。

vmanager runner的执行过程,如下:

vmanager操作指引

Vmanager执行过程

2.2.2. 内建变量

内建变量可以给run_script等的脚本里使用,例如:

run_script:"xx/makefile $BRUN_SV_SEED $BRUN_GUI_MODE”;

其中BRUN_SV_SEED是由sv_seed命令生成的随机数。

其中BRUN_GUI_MODE由gui_mode命令生成的变量,在run_script的makefile脚本里可以根据这个变量来决定要不要打开GUI来运行。

更多内建变量见下表:

vmanager操作指引

内建变量表

2.3. 创建server并启动vmanager

运行脚本./ my_run_vmgr.sh

My_run_vmagr.sh如图,它先创建并启动server -> 启动vmanager完成仿真 -> 关闭server:

vmanager操作指引

My_run_vmagr.sh示例

注:如果没有line 5,则运行没结束就stop server了,因此加上了line 5来打开gui。

Start_server.csh如下图:

vmanager操作指引

Start_server.csh示例

Stop_server.sh如下图:

vmanager操作指引

Stop_server.sh示例

2.3.1. Vmanager界面

Vmanager启动后界面如下,主要分3大块:

在regression center,启动回归

在analysis center,对回归结果数据进行分析

在tracking center,对历史的结果进行分析

如果在gui里启动新的session仿真,则点击”launch”, 选择.vsif文件即可。

vmanager操作指引

Vmanager界面

2.3.2. Vmanager文件结构

Vmanager运行完成后生成的文件结构如下:

vmanager操作指引

Vmanager文件结构

顶层TOP-dir:是在vsif中,指定的session的顶层目录

chain_N:此次session,生成文件指定的位置,默认是chain_0,可以在启动vsif文件时,指定已存在的session,那么新的session产生的文件,就会生成在chain_N+1 目录下。这就是绑定作用(chain)。

group_N: 每个group的目录

run_N: 每个test的目录

2.4. 分析test运行情况

如果要分析,则双击要分析的session, 会自动跳转到Analysis center,界面如下:

vmanager操作指引

Analysis center界面

2.4.1. Sort test

加filter来筛选出all failed tests.

vmanager操作指引

sort test按钮

2.4.2. rerun test

如果要重新跑某个test,可以选中1个或多个tests -> 右键“rerun test”.

如果要重新跑all failure tests, 菜单栏中选择Rerun all failures.

还可以Rerun all runs.

vmanager操作指引

rerun test按钮

2.4.3. Open log

如果想查看仿真log以便查询error的具体原因,在Analysis center选中test -> 双击 ->弹出页面中选中local_log.log (或testname.log).

弹出页面中选中error信号会自动定位到log里的error行。

2.4.4. Open waveform

在Analysis center选中test ->右键 -> show waveform.

2.5. 分析覆盖率

Regression中选中session -> 右键”analyze Metrics” -> 在工具栏里选择”All_Metrics”,出现如下界面 -> 选中具体模块和具体覆盖率选项,右键”Block analysis”,然后就可以看到具体哪些code没有覆盖到。

vmanager操作指引

覆盖率分析界面

Note: 用Vmanager分析覆盖率不需要启动额外的工具,但需要在编译和运行测例的命令里开启覆盖率选项。例如:irun [-coverage <coverage_types> | -covfile <coverage_ configuration_file>] [-covdut <DUT_module>] [-covoverwrite] [-covworkdir <workdir>] [-covdesign <design>] [-covtest <test>]。

2.5.1. Rank runs 与correlate runs

Rank runs根据一定的规则对tests进行排序。

例如根据dut_hdl模块的覆盖率的贡献来对tests进行排序。

Alaysis center里选中dut_hdl模块的覆盖率报告-> 选中要排序的覆盖率,如expression ->右键Rank Runs.

步骤如下左图;结果如下右图。

vmanager操作指引

Rank Runs按钮

vmanager操作指引

Rank Runs结果

Correlate runs只显示tests本身的覆盖率数据,可选根据Overall Average Grade或Overall Covered。根据Expression的Overall Average Grade的结果如下图。

vmanager操作指引

Correlate runs结果

注:如果有几千个tests,rank需要很多运算量来计算,可以在view -> configuration -> rank -> DRM中选择parallel rank方式来加快速度。

2.5.2. Refining Metrics Data

The process of excluding certain undersired instances or items from coverage analysis is called refinement. 即排除不需要分析的模块或覆盖率项目。

重要选项:

l Exclude :To exclude the selected item and its children

l Exclude Local:To exclude only top-level instances

l Exclude Smart:To exclude such that any entity connected to the excluded entity will

be excluded implicitly.

l Save Refine /Read Refine : 保存refine配置/ load refine 配置

2.5.3. Covager_merge log

Xx/session_xx/chain_xx/vmgr_merge_logs/pid_2989/merge_0.log里报告了覆盖率的merge情况,这个比较重要,例如以下log报告了由于不同的测例用了不同的mw_DUT_top模块,因此它们的block覆盖率没有融合。

vmanager: *W,WEMBL2: Block coverage of source instance 'mw_DUT_top' not merged with block coverage of target instance 'mw_DUT_top' - Mismatch in source code.

3. 记录code版本的建议

因为session目录里只记录了启动vmanager的时间,没有记录对应的是哪个版本的code。

解决方法1:选中session -> 右键菜单里“Edit each”-> comment里写上对应code版本。下次可以打开session的attributes查看详情。

解决方法2,生成session的报告:

Regression center里选中session ->工具栏里选择”Reports” -> 保存在当前启动vmanager的那个目录里

4. Vmanager的用户手册

/data/edatools/cadence/INCISIVE152/doc/vManager_ug/ vManager_ug.pdf