IC前端面试总结(已拿NVIDIA和字节跳动ASIC芯片实习Offer)

面试基本信息

准备暑期实习之前看了看要准备的东西在这里记录一下,大多数是网上搜集的资料。

首先是中英文的自我介绍(毕竟还是想去外企的,都准备一下)

手撕题目

  • 状态机
  • 奇偶分频
  • python和C的基本逻辑运算
  • Tcl基本命令
  • 先看书,了解,带着问题去实现项目,uvm实战看一遍。

前端验证

时序设计的本质就是满足每一个触发器的建立/保持时间。

  • SystemVerilog总结

SystemVerilog:由Verilog发展而来的硬体描述硬件验证统一语言,前一部分基本上是2005年版Verilog的扩展,而后一部分功能验证特性则是一门面向对象程序设计语言。面向对象特性很好地弥补了传统Verilog在芯片验证领域的缺陷,改善了代码可重用性,同时可以让验证工程师在比寄存器传输级更高的抽象级别,以事务而非单个信号作为监测对象,这些都大大提高了验证平台搭建的效率。[1]

  • 逻辑型变量 logic 可以代替reg和wire,如果某个变量有多个驱动源,那只能使用wire定义。

  • 多维压缩数组

  • 枚举型变量,使用一系列有实际字面意义的名称来代表若干变量:过去用parameter来描述有限状态机。在SystemVerilog中,使用枚举更加方便。

  • 新增数据类型(byte 8位)、(shortint 16位)、(int 32位)、(longint 64位)、(bit,1位)

  • 结构体和联合体

  • 条件、选择语句的唯一性和优先性(unique,priority)

  • 过程代码(组合逻辑:always_comb、时序逻辑:always_ff、锁存器:always_latch),防止综合处不符合预期的硬件模型。

  • 接口,引入interface,减少大量需要声明的端口名称。

  • 专门针对验证的特性:新的数据类型(string),提供了动态数组、关联数组和队列(queues)。

  • 含约束的随机化:可以对定义在类或者其他语句块中的整数型变量进行随机化。

  • 断言:由sequences,properties组成。自动检查定义的属性是否得到满足,如果违背则会给出警告。

  • 功能覆盖:在硬件验证中,功能覆盖是指验证过程中对人工定义信号事件的数据采样和收集过程。功能覆盖率在某种程度上反映了被测设计在所给输入激励下,其内部功能正确与否被检测到的百分比。功能覆盖率越高,一般代表测试越完备。

除了上述特性,SystermVerilog还在以下方面对传统Verilog进行了增强:

  • 过程赋值操作符(包括阻塞和非阻塞)能够直接对数组进行操作

  • 端口(输入、输出、双向)可以支持更多的数据类型,包括结构体、枚举、实数等

  • For循环内部可以自动定义变量,并为它添加了continuebreak功能

  • 在原有的while循环基础上添加了do-while循环

  • 可以使用关键字const来声明常量

  • 可以对整个数组进行初始化

  • 预处理器的字符串宏的功能得到增强

  • 除了原有的并发过程语句块fork/join结构,还提供join_nonejoin_any两种代码块结尾方式

  • 任务的端口能够被声明为引用类型(ref),这使得任务能够直接获取任务参数自身(引用传递),而不是一个临时复制的数值(值传递)。因此,对输入方向的形式参数的操作会直接改变对应的实际参数。

  • 函数能够被声明为空类型void,即不返回任何数值

  • 参数(parameters)可以被声明为任何类型,包括用户使用typedef定义的新类型

  • 提供SystemVerilog DPI(即SystemVerilog直接编程接口)来连接以C语言、C++编写的模块

  • UVM

    UVM验证方法学是基于systemverilog语言形成的一个高效的验证方法。它的主要特点是提高了代码的复用性,使得验证人员能通过代码移植复用修改快速搭建验证平台,从而将主要精力放在具体测试用例的编写上。另一方面,UVM封装了很多好用的方法,这使得验证人员不必过多关注底层实现,而且减少了验证平台的调试时间。

    验证用于找出DUT(device under test)中的bug,这个过程通常是把DUT放入一个验证平台中来实现的。一个验证平台要实现如下基本功能:

    • 验证平台要模拟DUT的各种真实使用情况,这意味着要给DUT施加各种激励,有正常的激励,也有异常的激励;有这种模式的激励,也有那种模式的激励。激励的功能是由driver来实现的。
    • 验证平台要能够根据DUT的输出来判断DUT的行为是否与预期相符合,完成这个功能的是记分板(scoreboard,也被称为checker,本书统一以scoreboard来称呼)。既然是判断,那么牵扯到两个方面:一是判断什么,需要把什么拿来判断,这里很明显是DUT的输出;二是判断的标准是什么。
    • 验证平台要收集DUT的输出并把它们传递给scoreboard,完成这个功能的是monitor
    • 验证平台要能够给出预期结果。在记分板中提到了判断的标准,判断的标准通常就是预期。假设DUT是一个加法器,那么当在它的加数和被加数中分别输入1,即输入1+1时,期望DUT输出2。当DUT在计算1+1的结果时,验证平台也必须相应完成同样的过程,也计算一次1+1。在验证平台中,完成这个过程的是参考模型(reference model)。

    一个简单的验证平台框图如图2-1所示。在UVM

  • 5
    点赞
  • 121
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值