IC验证面试UVM/SV51-60

51. 当你拿到一个项目(DUT待测设计)的时候,你要怎么开展验证活动?

(1)首先理解DUT的spec文档,理解待测设计

(2)做出验证计划,写出功能点,testbench的文档描述等

(3)搭建验证环境

(4)编写测试用例

(5)大规模随机,手机覆盖率

(6)写验证报告

最终保证完备性和正确性。

需要注意的时候,此类问题在面试中,是高频考点,这可以直接看出你是否真正的做过项目,尤其要针对简历中所写的项目进行此列问题的制备,包括具体项目的功能点有什么,你又是如何针对功能点编写testcase的,最终收集的代码富覆盖率和功能覆盖率是否都达到了100%,收集覆盖率的语句又是在testbench中的哪些组件中写的,等等。

52. config db的作用,以及传递时,其使用的参数含义。

config db机制主要作用就是传递参数使得TB的可配置性高,更加灵活,config db机制主要传递三种类型:

一种是interface虚拟接口,通过传递virtual interface去使得driver和monitor能够与DUT连接,并驱动接口和采集接口信号

第二种是单一变量参数,如int string enum等,这些主要就是为了配置某些循环次数,id号是多少,等等

第三种是object类,这种主要是配置当前参数较多时,我们可以将其封装成一个object类,区包含这些属性和相关的处理方法,这样传递起来就比较简单明朗,不易出错。

config db得到参数主要由四个参数组成,第一个参数必须水componment实例的指针,第二个参数是相对此实例的路径,第三个参数表示一个记号,用以说明这个值是传给目标中的哪个成员的,第四个参数是要设置的值。

config db机制作为UVM的重要机制之一,是任何项目中都会涉猎到的内容,要认真看一下你所准备的项目中,在哪里用到了config db机制,参数如何传送等等,以及如果传送如果出错后的报错机制等等,这些都是面试的重点。

53.描述uvm中的脚本,以及他们的作用。

uvm中有许多通用的代码,比如phase里面要做的事情agent等,这时候就需要节省时间节省效率,就有了脚本,一般都是用perl来写的脚本,perl在生成大量.sv文件时非常有用,uvm_tb_gen.pl是perl脚本,是用来搭建验证平台的,实际项目中,验证环境中的许多内容都是固定的,比如一些phase机制,这些反复重复的书写是徒劳的,所以一般通过脚本来生成框架,我们去根据项目的具体需求,来进行框架的搭建。另一个脚本文件叫做uvm_ral_gen.pl,该脚本也是perl脚本,首先需要在win环境下生成.csv的excel表格(里面包含所有的寄存器),然后转化为.ralf文件,然后通过reglen转换为.sv文件。makefile也是perl脚本,带来的最大的好处就是自动化编译,一旦写好只要一个make命令,整个工程完全自动编译。极大的提高了软件开发效率。面试中,经常会问有没有自己写过脚本文件,如果有的话会大大加分。

54. 什么是事务级建模(Transaction level modeling)?

事务级别建模是一种在较高抽象级别上对系统设计或模块设计进行建模的方法,抽象出所有底层实现细节。这是验证方法学中用于提高模块化和重用性的关键概念之一,即使DUT的实际接口由信号级别表示,但大多数验证任务(生成激励,功能检查,收集覆盖率数据等)都可以在事务级别上更好的完成,这有助于验证组件在项目之间重用和维护。

55. 编写testcase的基本思路和顺序是什么?

这个问题也是面试必问考题。首先是基本测试用例,该用例用来把tb.sv启动,创建TLM拓扑结构等,确保tb.env没有问题。随后是直接测试用例,验证RESET,RAL,FSM,数据读写,算法,固定值测试(0000,ffff,5555,aaaa)等。最后是随机测试用例,考虑可以随机的测试。

56.field automation机制

uvm中的filed automation实现了类中的copy compare print等基本的操作函数,在使用时,通过uvm_field_utils_begin和uvm_field_utils_end来加到自己的class中。

57. instance override和type override之间有什么区别?

顾名思义,type override适用于该组件类型所在层次结构中的所有实例,instance override仅覆盖类的特定实例,即该组件在uvm组件层次结构中的位置,由于只有uvm组件类具有层次结构,因此只有组件类能进行instance override,而sequence(TLM objects)只能进行type override

58. 总结UVM中port如何使用

UVM采用事务级传输机制进行组件间的通信,UVM的port分为port、export、imp,imp只能用作终点接口,一般在承载方写put、get和write函数,analysis port实现广播的功能。analysis port是特定类型的事务级端口有,可以连接到零个,一个或多个analysis port,具体使用时,我们以port为例,程序上实现port和export的连接分为8个步骤

首先主动方定义port接口;主动方将port接口new起来;在承载方实现put函数;在承载方定义export接口;承载方将export接口new起来;在env中实现二者的连接,注意一定是主动方连接承载方;主动方发送调用put函数发送transaction;承载方处理transaction。

59.UVM的callback机制

callback机制最大的用处就是提高验证平台的可重用性,它通过将两个项目不同地方使用callback函数,而把相同的部分写成一个完整的env,这样重用时,只需要改变相关的callback函数,env可以实现完全的重用。

60. 开放性问题 在进行验证的过程中,碰到过什么难点,重点又是什么?

刚开始的难点还是TB的搭建,想要搭建出一个可重用很高的TB,配置灵活的TB还是有一定困难的,除此之外,还有就是时序的理解,这对于driver monitor sequence和assertion的编写都至关重要,只有正确的理解时序才能编写出正确的TB,最后就是覆盖率要尽可能的高,这也是比较困难的,刚开始的case好写,很快就达到较高的覆盖率,但是那些边边角角的case需要自己去琢磨,这些难点就是重点。

  • 4
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值