jackzhang的个人空间 https://blog.eetop.cn/jack1 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

验证输出:关键文档——验证报告示例

热度 20已有 1944 次阅读| 2022-3-6 21:32 |系统分类:芯片设计

芯片就业培训课程推荐

更新至70课时!已进入实训阶段!畅销就业培训课《芯片验证从入门到精通》,2期优惠仅最后10个名额


来源:芯播客   

作者:Jacky于兆杰,畅销就业培训课《芯片验证从入门到精通主讲老师

芯片的验证工作,很大程度上是个编码的活儿,不管是UVM的编码,还是SV的验证平台,抑或是Verilog HDL的验证平台。一直讲,覆盖率驱动验证,衡量验证的完备性,还是要看覆盖率,但我们也一直强调要有文档,那验证应该输出什么文档呢?验证计划,验证策略,验证报告,以及中间的一些验证方法技巧,都可以作为验证的归档文件,或者叫输出文件。下面给大家分享一个验证报告的样例:


验证的范围


SPT 模块:按照接口时序要求,完成接收包处理,错包丢弃、统计,以及包转发。

主要验证接收来自 PKT 模块发送的数据包,比对校验位,过滤错误数据包,将正确数据包写入 SRAM 中缓存,一定时间后从 SRAM 中读出数据包发送给 PKT 模块。同时向 CPU 上报各类数据包统计。


1、根据头域(Header)指示,开始一包的接收;

2、净荷内容进行字节序的转换,高位字节放低位,低位字节放高位;

3、对小于等于4个字节的“毛刺包”直接丢弃,不统计:

4、对接收包进行头域(Header)的检查,头域不正确的包直接丢弃;

5、净荷长度超短(小于40字节)时,直接丢弃;

6、净荷长度超长(大于600双字节)时,直接丢弃;

7、对接收包进行尾域(Tailer)检查,若校验错误,则直接丢弃;

8、完全正确的包按照输出包格式输出;

9、对以上除毛刺包外的包均分类统计,并CPU可查询。



验证环境说明


2.1 dut代码版本信息

图片

2.2 验证平台说明

PP 的验证环境是用于运行芯片顶层功能验证的各个组件(component)的集合。它主要包含以下几个部分:被测设计(DUT)、cpu 子环境(mpi agent)、 PTU/PRU 子环境(spt agent)、参考模块(RM)、 检查器(checker)、脚本(makefile)。

 

(1)验证环境架构

图片

PP 验证环境是一个层次化的验证环境,其中测试向量 TestCase(tc_sanity)是平台的最高层次,每条 TestCase(tc_sanity)都用于测试芯片的一个或多个功能。架构如下;

 

(2)目录结构

rtl

cpu_if.v


crg.v


DTP.v


spt.v


test_core.v


tb

env

dtp_checker.sv

dtp_env.sv

dtp_rm.sv

mpi_agent

mpi_adapter.sv

mpi_agent.sv

mpi_driver_notdone.sv

mpi_driver.sv

mpi_interface.sv

mpi_sequencer.sv

mpi_sequence.sv

mpi_xaction.sv

reg

ral_block_blk_dt003.sv

spt_agent

spt_agent.sv

spt_driver.sv

spt_interface.sv

spt_packet.sv

spt_rx_monitor.sv

spt_sequencer.sv

spt_sequence.sv

spt_tx_monitor.sv

tc

tc_base.sv

tc_reg_sanity.sv

tc_sanity.sv

th

harness.sv

 

(3)主要文件说明

spt_agent.sv:例化并连接 driver、 monitor、 sequencer 。

spt_driver.sv:将数据包发送出去的组件。

spt_rx_monitor.sv:监测 spt 接收端口,采样端口上的数据。

spt_sequence.sv:定义数据包的发送个数。

spt_packet.sv:定义数据包的格式,对 packet 长度, header 和 tailer 进行约束。

tc:存放测试用例的路径。

th:存放顶层 harness.sv,主要用来例化 DUT,产生 CK 信号,和 rst 信号。

env:存放验证环境。

dtp_env.sv:整个环境的顶层,连接环境中的各个组件。

dtp_rm.sv:DUT 的参考模型,模拟 DUT 的功能。

dtp_checker.sv:将 DUT 的输出和 rm 的输出做比较。


覆盖率分析


3.1 功能覆盖率分析

通过tc_sanity.sv中的uvm_config_db #()::set() 向spt_sequence.sv传递不同的参数,配置不同的seq_item_max_num、err_type(0:normal;1:tail_err;2:head_err;3:head_err&tail_err;)和payload_mode(0:glitch;1:short;2:normal;3:long;)数据包参数, 实现向DUT发送不同的数据包类型,检测DUT对不同包处理的功能。

3.2 代码覆盖率分析

图片

配置不同的数据包参数,编译运行不同的test_case进行仿真,累积收集代码覆盖率文件harness.simv.vdb,由dve -covdir *.vdb &查看代码覆盖率,如下图SPT模块line_coverage=99.06%,toggle_coverage=52.56%, branch_coverage=78.50%。


 图片

由于环境仅测试SPT包处理功能,并未加入SRAM和对DUT内部寄存器施加激励,以及DUT内部定义的一些信号并未使用,使得toggle_coverage和 branch_coverage偏低



质量活动结论


4.1 warning自检

4.1.1 编译warning

(1)Warning-[DEBUG_DEP] Option will bedeprecated

  Theoption '-debug_all' will be deprecated in a future release.  Please use

 '-debug_acc+all+dmptf -debug_region+cell+encrypt' instead.

(2) Warning-[SIMRES_TMS] Option -timescaleignored

 Option -sim_res is specified. Option -timescale is ignored.

(3) Warning-[TMPO] Too many parameteroverrides

../spt_agent/spt_agent.sv, 5

  Theextra parameter overrides will be ignored.

 Source info: seqr

(4) Warning-[CM-HIER-FNF] File not found

  Thefile 'cm.cfg' (given by '-cm_hier' option) does not exist.

  Theoption will be ignored. Please make sure that the file exists.

(5) Warning-[SIOB] Select index out ofbounds

../../rtl/cpu_if.v, 159

"cpuif_data[23:0]"

  Theselect index is out of declared bounds : [15:0].

  Inmodule instance : cpu_if_0

  Inmodule : cpu_if.

(6) Warning-[SIOB] Select index out ofbounds

../../rtl/cpu_if.v, 165

"cpuif_data[23:0]"

  Theselect index is out of declared bounds : [15:0].

  Inmodule instance : cpu_if_0

  Inmodule : cpu_if.

Warning (1)按提示修改后不会出现,还有部分Warning是trl中cpu_if.v数据位宽不匹配导致,暂不做修改。


4.1.2 仿真warning

         未出现Warning

4.2 force自检

4.2.1环境force自检

        

图片


对信号值为XX的信号,或正常情况下不可能执行的条件分支,在环境中force 使其满足判断条件,使rtl条件的每个分支能够执行,查看结果是否符合预期。


对cpu_if内的信号尝试进行环境force自检,使rtl中的分支语句执行,结合Verdi,检查结果,符合预期。          

4.2.2用例force自检

4.3 Corner case识别

Bug收敛趋势


图片


性能和延时评估

6.1 性能评估

图片

6.2延时测量结果


验证总结

7.1 未解决bug列表

         无

7.2 ECO bug列表

         无

7.3 bug发现活动分布

1. cpu_if.v中数据位宽不匹配

2. SPT 数据包处理

7.4 bug类型分布

1.语法逻辑错误

2.Spec理解偏差

3.算法错误

4.时钟域处理

7.5 验证效率

10.13-10.19

7.6 验证局限

(1)仅针对SPT模块包处理完成验证。

(2)未能实现功能覆盖率模型,仅通过配置不同参数实现对DUT不同功能的覆盖。


验证结论


针对PP芯片中SPT模块完成此次验证,代码覆盖率,line_coverage=99.06%,toggle_coverage=52.56%,branch_coverage=78.50%。后续可继续完善环境、加入SRAM、寄存器模型,完成DUT的2 种工作模式、CPU_IF 模块、TEST CORE 模块的验证。

芯片就业培训课程推荐

更新至70课时!已进入实训阶段!畅销就业培训课《芯片验证从入门到精通》,2期优惠仅最后10个名额


10

点赞

刚表态过的朋友 (10 人)

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 8

    关注
  • 133

    粉丝
  • 562

    好友
  • 228

    获赞
  • 200

    评论
  • 49226

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-16 16:23 , Processed in 0.015783 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部