验证典型问题

问题一:数字IC验证流程是什么?

1、阅读设计Specification
   清楚需要验证的东西
2、编写验证工作的指导性文件 --  验证计划(重点)
   提取验证功能点,明确接口文件,明确DUT接口信号,TB的结构,检查点,功能覆盖率,测试用例规划,验证工作结束的标准。
3、搭建TB(重点)
   依据验证计划搭建TB,Debug,调通第一个demo testcase
4、编写测试用例(重点)
   依据验证计划编写测试用例。主要的验证阶段,验证RTL每个功能点。TB/RTL  Debug
5、起Regression
   周期性的起Regression(回归测试)。为随机测试案例提供不同的seed。
6、分析代码/功能覆盖率
   分析覆盖率,新增测试用例
7、测试报告
   覆盖率报告,测试用例结果(pass/fail),覆盖率结果。

问题二:uvm的phase是如何自动运行起来的?

从build_phase到最后的finial_phase,自动运行会经过一下几个主要步骤:
1、再tb_top.sv中的某个地方调用run_test(),这个函数再uvm_root.sv中,是整个tb树形结构的根节点,整个函数主要干三件事:
    (1) 通过factory模式create你自己希望运行的testcase instance,不管你的testcase叫什么,最后uvm都会给他重命名为”uvm_test_top“
    (2) 调用uvm_phase的一个函数,叫做m_uvm_phase()。
    (3) 等待m_uvm_phase()函数调用结束,kill所有和此函数有关的进程,如果允许则调用$finish结束仿真进程,退出仿真器。
2、m_uvm_phase()主要工作:
    (1) 创建uvm默认的所有phase,即build_phase ... finial_phase等,并将其组织成实际的有向图结构;实现这一步主要靠调用uvm_domain class中的get_common_domian().
    (2) 开始运行(1)中创建组织好的phase,当然如果有用户自定义的phase,也会在规定的时间点运行起来;实现这一步主要是靠调用对应的phase的execute_phase()函数和一个无线循环的监控进程。
3、uvm_domian中的get_common_domain()主要干三件事:
    (1) 创建phase有向图结果的第一部分,即build->connent->end_of_elab
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值