Questasim覆盖率数据分析


本文记录使用Questasim的一些coverage分析和验证管理方法。 UCDB(统一覆盖数据库) 是包含多种验证数据的格式。

覆盖率浏览编辑模式

模式分析类型使用方法
Simulation仿真交互coverage,togglevcover命令
Coverage View后处理coverage open .ucdb or vsim -viewcov .ucdb
Batch批处理vcover +commands(merge, report, stats, testnames…)
  • 指定测试名称保存覆盖率
coverage save -testname <name> <name>.ucdb

验证计划表格

  • 采用标准编辑工具编写,验证计划各部分以树形结构存储
  • 验证计划表格管理Excel插件位置:

<install_dir>/vm_src/QuestaExcelAddIn.msi

采用TCL脚本编译仿真和收集覆盖率

vsim -c -do mcdf_sim.do

# mcdf_sim.do (TCL script for a mini regression)

onbreak resume  # break或error后不中断
onerror resume

# set environment variables
setenv DUT_SRC ../mcdf/v0
setenv TB_SRC .

# clean the environment and remove trash files
set delfiles [glob work *.log *.ucdb sim.list]

file delete -force {*}$delfiles

# compile the design and dut with a filelist
vlib work
vlog -sv -cover bst -timescale=1ps/1ps -l comp.log +incdir+$env(DUT_SRC) -f complist.f

# prepare simrun folder
set timetag [clock format [clock seconds] -format "%Y%b%d-%H_%M"]
file mkdir regr_ucdb_${timetag}

# simulate with specific testname sequentially
set TestSets { {mcdf_data_consistence_basic_test 1} \
                {mcdf_full_random_test 3} \
                {mcdf_reg_read_write_test 1} \
                {mcdf_reg_stability_test 1} \ 
                {mcdf_down_stream_low_bandwidth_test 3} \
              }

foreach testset $TestSets {
  set testname [lindex $testset 0]
  set LoopNum [lindex $testset 1]
  for {set loop 0} {$loop < $LoopNum} {incr loop} {
    set seed [expr int(rand() * 100)]
    echo simulating $testname
    echo $seed +TESTNAME=$testname -l regr_ucdb_${timetag}/run_${testname}_${seed}.log
    vsim -onfinish stop -cover -cvgperinstance -cvgmergeinstances -sv_seed $seed \
         +TESTNAME=$testname -l regr_ucdb_${timetag}/run_${testname}_${seed}.log work.tb
    run -all
    coverage save regr_ucdb_${timetag}/${testname}_${seed}.ucdb
    quit -sim
  }
}

# merge the ucdb per test
vcover merge -testassociated regr_ucdb_${timetag}/regr_${timetag}.ucdb testplan.ucdb {*}[glob regr_ucdb_${timetag}/*.ucdb]

quit -f

验证计划数据追踪

View -> Verification Management -> Browser -> 双击merge好的ucdb (ucdb + testplan)

vsim -viewcov <merged.ucdb>

覆盖率结果分析

结果分析需TDB(Triage Database) 格式文件,其由UCDB、Xform(transform rule)、(LOG/WLF)文件生成。TDB文件可用于问题分析、布局排列、信息过滤、层次显示配置、排序配置等。

  • 一个预定义好的mcdf_tdbrule.xform
transform {.*(\w+) fmt_trans object at time (\d+)} -name comparing_rule {
	field time {$2}
	field severity {Info}
}

transform {.*(\d+) fmt_agt\.(\w+) monitored a packet:} -name fmt_monitor_rule {
	field time {$1}
	field severity {Info}
}

transform {# COVERAGE SUMMARY \n# total coverage: ((?:[+-])?\d+\.\d+) } -name coverage_rule {
	field severity {Info}
}

transform {.*(\d+) \[INFO] \[REPORT] : \n(.*)\n# REPORT SUMMARY\n# info count: (\d+) \n# warning count: (\d+) \n# error count: (\d+) \n# fatal count: (\d+) } -name report_rule {
	field severity {Info}
	field time {$1}
}
  • 默认UVM、断言等信息整理的xform文件位置:

<install_dir>/vm_src

  • 生成数据分析文件
triage report -name <tdb_filename>
			  -severity FEW  #只显示Fatal/Error/Warning信息

覆盖率贡献排名(rank)

Verification Browser -> Rank

vcover ranktest

验证计划报告(文本/html)

Tools -> Coverage Report -> Text/Html

vcover report -output <output_file>
vcover report -html

验证趋势分析(-trend)

Verification Management Browser -> 右键点击 .ucdb -> Trend Analysis -> View Trender

vcover merge -trend [-output] <trend_ucdb> <ucdb_inputs>
  • 4
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小破同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值