基础知识
概念原理理解
- 阻塞赋值和非阻塞赋值
- 时序逻辑和组合逻辑;
- 锁存器的结构及DFF的结构;
- 建立保持时间及建立保持时间的计算;
- 流片前和流片后的时序违例解决方法;
- 跨时钟及其解决方法(单bit、多bit、打拍、握手等在什么场合需要);
- 异步fifo,空满判断;
- 亚稳态的成因,危害,解决方法;
- 低功耗常见设计方法,动态/静态功耗计算和分析,门控时钟、电源门控等;
- 竞争和冒险的区别、成因、危害、处理方法;
- 毛刺的成因、危害、处理方法;
- 时序约束的意义和做法;(时钟约束,IO约束,例外约束等);
- 时序路径
- ASIC设计和FPGA设计的flow;
- 高阻态的意义和用法;
- Verilog 延时模型;
- AHB、APB、AXI等总线;
- SPI、UART、I2C、USB等外设;
- 同步复位、异步复位及优缺点,有复位和无复位的综合实现区别;
- 格雷码
- 断言SVA
- 同步复位、异步释放
- 如何考虑PPA
- 计算机体系结构常识:Cache、MMU,TLB,中断,DMA,大小端,流水线,超标量,超流水,超长指令字,数据冒险,控制冒险,分支预测,乱序执行,LRU等。(进程/线程调度,CPU调度,内存调度,总线分配);
手撕代码
懂原理,会手撕,并且根据题目要求写出不同变种的代码,比如怎么写资源占用最少等;
- 异步fifo;
- 同步fifo;
- 格雷码及格雷码和二进制的互相转换;
- 除法器;
- 超前进位加法器;
- 边沿检测,输入消抖,毛刺消除;
- 异步复位同步释放;
- 三种计数器。二进制,移位,移位 反向;
- 无毛刺时钟切换;
- 串并转换;
- 线性反馈移位寄存器;
- 握手实现CDC;
- 脚本编写(perl、python等);
- 奇偶校验
- 其他简单功能的HDL实现及状态转换图:序列检测,回文序列检测,奇、偶、分频,自动售货机等;
题目部分
- 最大项,最小项,组合逻辑变换为与非/或非形式,卡诺图化简;
- 常用元件的门电路实现。(非,与非,或非,锁存器(两种),DFF);
- MOS管实现门电路;
- MUX或者MUX Inverter实现异或,或者其他简单逻辑功能;
- 门电路实现逻辑表达式;
- 门电路真值表;
- 门电路实现同步时序逻辑; 1.状态转换图或者状态转换表。 2.状态化简。 3.状态分配。 4.卡诺图化简求出状态方程,驱动方程,和输出方程,自启动修改。 5.画出逻辑图。例如售货机的门电路D触发器实现。
- 门电路实现波形:常见的计数器,线性反馈移位等等;
- 门电路实现Verilog代码;
- Verilog常用语法:例如两操作数运算符和一操作数运算符;task和function区别;时钟激励的写法;可综合/不可综合语句;操作数有X和Z时的返回值;
- FIFO深度计算,一般是背靠背;
其他问题
偶尔被问到,挺有启发意义。
- if、case、三目运算符的区别;(其实现在工具综合出来区别不大);
- 超高速(Gbps)CDC时格雷码的不可靠问题;
- 串扰;
- ESD;
- 闩锁效应;
- 上拉下拉电阻;
- 线与,OC,OD门;
- 施密特触发器;
- CMOS与TTL电平,相互驱动关系;
- Cordic算法;
- FPGA的基本资源与内部构造,对于FDCE,LDCE的实现;
- FPGA的时钟资源及构造;
- 同步时钟和异步时钟。时钟相移之后还是同步的吗?倍频或者分频呢?
- PLL MMCM。他们的输入输出,使用的注意点等等;
- 计算机网络常识。NAT,地址映射,TCP/IP 4层网络模型;
- PMOS管和NMOS管的结构以及区别,增强型和耗尽型;采用不同的MOS管实现电路的速度区别;电子导电比空穴能力强;
- IC设计常用术语;
- Verilog二维数组初始化。常用于FIFO设计;
- 2态数据类型与4态数据类型对仿真速度的影响;
- 综合中input 、output delay如何设置;
- 术语的解释,比如MMU(Memory Manage Unit)等;
如果有时间,还可以学一些后端
以及测试
、验证
的知识,SV
,脚本
等等。因为很多公司笔试题都会考一些测试的知识点,断言
,覆盖率
,SV语法
等等。
还有外企一般考察范围都很广,设计,验证,后端,模拟都会涉及。
另外,企业的笔试面试内容和本身企业主业关系也很大,
做存储的就会问Flash
或者RAM
的知识,
做芯片的就会问CPU体系结构
,
做FPGA偏爱用FPGA做项目的,
做GPU的会问计算机图形学
的东西,图像处理的会问例如图像噪声一类的。
选择
对于企业选择来说,现在校招行情基本都是要求硕士以上,较多企业会有学历限制(如211/985)。
其中对于岗位选择来说,数字前端设计
的竞争最大,因为HDL代码相对门槛最低,而且设计的岗位数量相比验证和后端是最少的。数字验证
竞争其次,因为学校一般不会教UVM。然后是FPGA开发
,最后是模拟/射频
,这个的门槛最高,没项目根本没法自学入行,而FPGA是因为岗位相对少,投的人也不多,再加上大家一股脑往数字设计挤。
另外就是后端
,DFT
,这些竞争也是小于设计和验证的。同样也是学校不教,起步都是一样的,就拼自学能力和学校牌子了,而且薪资和设计验证没什么差别。
最后,即使在今年这个行情之下,我还是认为除了少部分背景很好的同学以外,CS都是更好的选择,特别是专业非微电子、电子、通信方向的。