2021秋招数字IC设计岗面试总结 字节\中兴\英伟达\兆易

1.字节跳动AI LAB ---FPGA岗

时间大概一小时10分钟

上来先自我介绍。

简历上的项目经历什么的,一点没问。

直接问基础:

FPGA的开发流程是什么?

会看时序综合报告吗?

遇到时序问题怎么解决?

讲一下建立时间和保持时间?

时序不满足,怎么办?

根据经典模型,写一下建立时间的公式?

保持时间和路径延时的公式?

建立时间和保持时间在器件级怎么理解?

什么是jitter?

什么是skew?

怎么解决上述的两个问题?

考虑上述问题,把jitter加入上述的公式?

代码考察:

前级输入6个32bit的数据、一位的valid信号,当前级在valid信号有效时采样数据,求和,输出一个32bit的和s、给上一级的ready信号、给下一级的valid信号。

现场写verilog。

上述的电路可能会出现哪些时序问题?

之所以在valid和ready信号同时有效才采样数据,不是为了跨时钟域通信,而是当前级的数据可能没处理完,所以需要等待当前级数据处理完,才能读入数据。

写一个2bit的全加器。

虽然舍弃了进位,但是32bit的加法器,中间级的进位还是存在的,因此还是有可能产生时序问题,竞争冒险。

解决办法:多级加法器,每一级加法器中间搞成流水线。

有什么想问的吗?


1.什么时候毕业?

2.可以来实习嘛?

3.用的什么FPGA?

4.竞争冒险的解决办法。

5.亚稳态的概念及解决办法。

单bit和多bit的处理办法,除了异步FIFO和握手协议、双口RAM,还了解其他的吗?

6.建立时间和保持时间的概念、由什么决定。

7.Block RAM和分布式RAM。

8.DDR、PCIE、以太网的概念。

9.FPGA布局布线和时序错误遇到过吗?怎么解决?

10.UVM

11.三分频、占空比50%的代码。

2.中兴微电子IC设计

时间大概45分钟。

对面三个面试官。

首先是自我介绍。

其次根据简历上的内容进行提问。

1.介绍这个项目的细节

数字电路部分、

软件部分、

外围的电路。

如果遇到问题,怎么排查和解决。

signaltap找不到信号节点怎么办。

2.IIC协议电路

起始信号、结束信号;主设备、从设备的通信。

3.对IC设计流程的理解

前端、后端、DRC、LVS。

4.异步信号的处理。

5.入职5年的计划。

6.意向的工作地和薪酬。

7.自己的优势和劣势是什么。

8.为什么想IC设计而不是FPGA。

9.有什么想问的吗?

10.想来中兴吗?


3.兆易创新数字IC设计面试题

自我介绍。

脚本用的什么语言。

Perl打开文件的指令是什么?

项目的介绍。

画个框图。

开始做题:

同一个时钟沿,怎么根据一个电平信号的变化,产生一个脉冲。

数字滤波:输入的信号有噪声,噪声不超过两个周期,怎么滤掉噪声。

写一个串并转换的RTL代码。

AXI和AHB的区别。

对MCU和总线了解吗?

有什么想问的吗?

4.英伟达秋招数字IC设计

秋招参加了英伟达数字IC设计的面试。

以下是面试的记录,分享给大家。

【1】一面,电话面,两个面试官,一个设计,一个验证,时长一小时左右。

英文自我介绍。

介绍一个自己的项目。

根据项目来问异步FIFO、单口RAM、仲裁的问题。

跨时钟域的方法。

握手协议需要几个cycle。

低功耗方法。

工艺制程对功耗的影响。

验证的问题。

fork_join三兄弟的区别。

验证方法学:driver\monitor\score borad\golden test.

英文问题:队列中插入数据的方法、怎么看待英伟达收购ARM。

为什么想来英伟达?

反问。

国庆节之前会出最终的结果。

【2】二面,时长两个半小时,前后来了三拨面试官。

从实习到在校项目,再到各种基础知识,包括:

低功耗方法学。

FIFO、RAM存储的设计和验证。

跨时钟域的问题。

仲裁机制。

AMBA总线协议,APB\AHB\AXI\ACE的区别和联系。

UART、IIC、SPI协议。

常用的Debug方法。

无毛刺的时钟切换电路设计。

setup, hold 时序问题的修复方法。

怎么看待英伟达收购ARM。

为什么想来英伟达。

还有哪些offer。

最后主管谈了一下待遇。


#面经##校招##芯片设计工程师##中兴##字节跳动##英伟达##兆易创新#
全部评论
楼主,英伟达给多少啊
2 回复 分享
发布于 2021-01-25 10:54
楼主最后签了哪?字节是base杭州吗
点赞 回复 分享
发布于 2021-01-21 10:12

相关推荐

 CPU、寄存器、缓存、内存概述- CPU:中央处理器,执行指令的核心组件。- 寄存器:CPU内部的临时存储空间,存放快速访问的数据。- 缓存(Cache):在寄存器和内存之间的高速存储,分为三级(L1、L2、L3),速度和价格依次降低。- 内存:主要存储程序和数据的地方。数据访问流程1. CPU首先在寄存器中查找数据。2. 如果寄存器未命中,则检查缓存。3. 如果缓存未命中,则从内存中获取数据。内存区域- 栈区:  - 存放函数参数和局部变量。  - 由编译器自动分配和释放,效率高,但内存量有限(如iOS中为2M)。- 堆区:  - 通过`new`、`malloc`等动态分配的内存。  - 需要程序员手动释放,可能导致内存泄漏。- 静态区:  - 存放全局变量和静态变量。  - 程序结束时由系统释放。- 常量区:  - 存放常量,不允许修改。  - 代码区:  - 存放函数体的二进制代码。类型说明符- 基本类型:`void`、`char`、`short`、`int`、`long`、`signed`、`unsigned`、`float`、`double`、`struct`、`enum`、`union`。- 存储类型:`extern`、`static`、`register`、`auto`、`typedef`。- 类型限制符:`const`(只读)、`volatile`。变量理解- extern:指示变量在其他文件中定义。- static:  - 限制变量作用域。  - 局部变量存入静态存储区,延长生存周期。- register:将频繁使用的变量放入寄存器以提高效率。- auto:C语言默认存储类型。- typedef:给类型或变量表达式起别名。- const:只读变量。- volatile:  - 防止编译器优化。  - 适用于中断和多线程环境。C程序内存分配- 堆、栈、静态存储区、文件分配区(常量字符串)、程序分配区(二进制代码)。 sizeof与strlen- sizeof:关键字,返回类型或数组的字节大小。- strlen:计算字符串长度,直到遇到`\0`。 函数参数传递- 值传递、引用传递、指针传递、数组地址传递。Const、指针、基本类型组合的意义- const int x:只读变量。- const char *x:指向常量的指针,指针内容可变,指向内容不可变。- char *const x:常量指针,指针内容不可变,指向内容可变。- const char *const x:指针和内容均不可变。 数组与指针- 物理地址:内存单元的真实地址。- 逻辑地址:CPU生成的地址。 Linux进程间通信- 管道(pipe)、信号量、消息队列、信号、共享内存、套接字。 strcpy与memcpy区别- strcpy:复制字符串。- memcpy:复制指定长度的内存内容。 内存泄漏与内存溢出- 内存泄漏:未释放的内存,导致可用内存减少。- 内存溢出:程序请求的内存大于可用内存。 switch的变量类型限制- 允许:整形、布尔、字符、枚举。- 不允许:字符串等非基本类型。 防止头文件重复调用- 使用#ifndef和#pragma once。 实时操作系统- 示例:FreeRTOS、Ucos。 指针数组与数组指针- 指针数组:数组元素为指针。- 数组指针:指向数组的指针。 结构体自增与双重指针自增- 自增从右向左进行。 寄存器的使用- 存储频繁调用的数据,减少内存访问。 获取全局变量与局部变量地址(gdb)- 使用backtrace或bt命令。 进程中的同步与异步- 同步:通过锁实现。- 自旋锁:忙等待,不阻塞线程。- 互斥锁:阻塞线程,等待资源释放。进程与线程的关系与区别- 进程:资源分配的基本单位,包含一个或多个线程。- 线程:进程中的执行单位,最小调度单位。树的遍历(递归与非递归)- 中序遍历:左子树 - 根节点 - 右子树,利用堆栈进行进栈和出栈操作。剩余的大佬面经总结了  链接在下边  c++/嵌入式面经专栏-牛客网 https://www.nowcoder.com/creation/manager/columnDetail/MJNwoM
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-27 09:42
算能科技 嵌入式软件 32k*16 硕士985
点赞 评论 收藏
分享
评论
4
109
分享
牛客网
牛客企业服务