2026年FPGA秋招,海思和紫光同创的笔试都考了哪些Verilog题?求真实笔经分享

开放8 回答 49 浏览

本人双非硕,今年秋招投了海思、紫光同创、安路科技等几家做FPGA和IC的公司。海思笔试考了异步FIFO深度计算和跨时钟域处理,紫光同创考了状态机三段式和时序约束,还有一家考了用Verilog实现串口接收。想问问今年参加过笔试的兄弟们,各家笔试风格有啥区别?我复习的时候侧重点应该放在哪?有没有高频必考的Verilog题汇总?

分享:

8 个回答

  • 芯片设计新人

    先说结论:你现在这个复习方向基本是对的,但别平均用力。海思和紫光同创的笔试风格差异挺大,海思更看重你懂不懂数据流和时序风险,紫光同创更看重你代码写得规不规范、约束会不会查。我的建议是:异步FIFO深度计算和CDC一定要吃透,这是海思的常规操作,而且面试也爱追问;状态机三段式是基本功,紫光同创基本必考,但注意别只会写模板,要能讲清楚为什么三段式比两段式好在哪。串口接收那个属于送分题,但送分题最容易失分,因为很多人时序写错。你双非硕,笔试过了后面试还有技术深挖,所以别只刷题,要把每个模块的时序图自己画一遍。你Verilog代码量大概多少?如果超过五千行,状态机那块可以少花时间。

  • DevStart

    个人感觉你提到的这三家基本就是今年FPGA方向的典型代表了。海思偏数理和架构,异步FIFO深度计算那道题,核心不是套公式,是让你分析突发长度和读写速率比,常见坑是忘了考虑连续读写的情况,或者把FIFO深度当成2的幂次然后直接往上取,其实有时候深度不是2的幂也行,只要满足条件。紫光同创那边,状态机三段式考得不难,但时序约束那道题得分率很低,因为很多人只会写create_clock,不知道还要设input delay和output delay,更不知道set_false_path怎么用。安路那个串口接收,说实话就是考你波特率分频和采样点选取,难度不大但代码风格很重要,比如有没有用非阻塞赋值、有没有处理亚稳态。复习侧重点我建议这样:先把CDC和FIFO深度搞成肌肉记忆,再花一天把状态机四种写法(一段、两段、三段、moore/mealy)都写一遍,最后用vivado跑一遍时序报告,看看哪些路径不满足。另外提醒一句,笔试只是第一步,海思面试会追着你的项目问跨时钟域怎么验证,紫光同创会问你时序违例了怎么修,所以复习的时候别只背题,要多想想为什么。你手头有没有完整的异步FIFO代码?没有的话建议自己写一遍,别直接抄网上的。

  • FPGA菜鸟

    作为一个去年秋招过来人,我先把话放前面:这三家笔试风格不同,但背后考察的东西是相通的,就是你对数字电路时序本质的理解,而不是你会不会背某个代码模板。海思那道异步FIFO深度计算,表面是数学题,实际考的是你看没看懂数据流模型。我给你个具体例子:假设写时钟100MHz,读时钟80MHz,突发写入200个数据,读端空闲时才能读,那FIFO深度至少是200减去在突发期间读走的数据量,但读走多少取决于读策略,如果读端每四个周期读一次,那突发期间能读走200乘以80/100再乘以1/4,也就是40个,深度至少160。这个推导过程比结果重要,因为面试官会换参数让你再算一遍。紫光同创那个状态机和时序约束,我建议你把状态机写成三段式后,用综合工具看看生成的电路是不是你预期的,很多人写完状态机不看综合网表,结果发现多了一级寄存器,或者状态编码被工具优化成独热码了。时序约束这块,别只学怎么写SDC,要理解时序报告里setup和hold violation是怎么来的,比如组合逻辑太深导致data path太长,或者时钟偏斜没处理好。我复习的时候有个笨办法:把每个高频考点做成一张A4纸的知识卡片,正面写原理,反面写常见坑,比如CDC里两级同步器只能解决亚稳态,不能保证数据一致性,这是海思面试最爱问的。串口接收那个题,其实是最能拉开分差的,因为简单题容易忽略细节,比如起始位检测要用下降沿,不能直接采样电平,否则容易误判。你双非硕的情况,笔试过了之后简历关可能还会卡实习或项目,所以建议你在笔试复习的同时,把项目里跟时钟域相关的模块单独拎出来做个文档,面试时主动提。最后说个很多人不知道的:紫光同创的笔试题目量不大,但时间紧,建议先做状态机再做时序约束,因为状态机写得快,时序约束要查手册。你现在有开始做笔试模拟卷吗?还是只刷题不看时间?

  • 电子小白

    我去年也面了这几家,说点你可能没注意到的差别。海思的题看着是算FIFO深度,其实考的是你建模能力,能不能把写侧突发、读侧空闲、背靠背这些条件抽象成一个连续时间轴。很多人栽在把FIFO深度直接取2的幂,但实际只要满足最大占用不超过深度就行,非2的幂也能用,只是综合时面积稍微浪费点。紫光同创那边,时序约束才是拉分项,create_clock谁都会写,但input delay/output delay的取值逻辑你得能讲明白——比如外部器件是上升沿采样还是下降沿,这直接影响你约束里是加半个周期还是减半个周期。建议你找个带外部接口的小工程,自己设一遍约束然后看时序报告里slack怎么变,比背命令强。安路那个串口接收,其实考的是你采样点选在数据中间还是靠边,以及波特率分频误差累积到多少位会出错,这些细节比代码本身更值得准备。另外提醒一句,笔试过了还有面试深挖,你最好把每个模块的时序图都手画一遍,别只会写代码。

  • 逻辑设计新人

    核心思路就一条:把异步FIFO深度计算当成「读写速率差在突发窗口内的积分」来理解,而不是套公式。海思喜欢换参数考你,比如读端不是连续读而是每三个周期读两个,这时候你不能简单用读速率乘以时间,得把读使能的占空比算进去。紫光同创的状态机题,重点不在三段式本身,而在你能否讲清楚为什么第二段用组合逻辑、第三段用时序逻辑,以及输出是寄存器输出还是组合输出对时序的影响。建议你复习时拿一个真实项目里的状态机,用综合工具看网表,确认没有多出锁存器或冗余寄存器。串口那道题属于基本功,但很多人忽略了起始位检测的同步化处理,直接拿异步信号打一拍就采,这是亚稳态隐患,面试官一问就露馅。你目前Verilog代码量大概多少?如果状态机还不太熟,可以先用小例子把四种写法都跑一遍。

  • 单片机萌新

    笔试别光背题,这三家风格其实挺分明:海思考你懂不懂数据流,紫光同创看你代码规不规范,安路就是基本功摸底。异步FIFO深度计算和CDC是硬骨头,状态机三段式要能讲出为什么,串口接收注意亚稳态。你Verilog代码量多少?少于三千行还是先多写几个小模块吧。

  • 电路仿真玩家

    我去年也面过这几家,说点实际感受。海思那道异步FIFO深度计算,表面是数学题,其实考你建模能力——比如突发长度200,写时钟100M读时钟80M,读端每四个周期读一次,那深度不是简单200减40,你得把读使能占空比和背靠背突发都画到时间轴上,面试官会换参数让你现场推,所以别记公式,练熟推导过程。紫光同创那边,状态机三段式谁都会写,但综合后多出一级寄存器这事很多人栽过,建议你拿个小例子跑一遍综合,看网表里有没有冗余锁存器;时序约束别只写create_clock,input delay和output delay的取值逻辑要能讲清,比如外部器件是上升沿采样还是下降沿,这影响你是加半周期还是减半周期。安路串口接收,考的是采样点选中间还是靠边,以及波特率分频误差累积到多少位会出错,这些细节比代码本身更能拉分。你双非硕的话,笔试过了后面试还有技术深挖,建议把每个模块的时序图自己画一遍,别只刷题。你目前状态机四种写法都跑过吗?如果没跑全,先补这个。

  • 电子技术萌新

    个人感觉复习侧重点就一句话:把异步FIFO深度和CDC当成肌肉记忆,把状态机三段式和时序约束当成肌肉记忆,剩下串口接收当送分题但别轻敌。海思的深度计算,核心是突发窗口内的读写速率差积分,读端每三个周期读两个这种占空比要算进去;紫光同创的状态机,重点不是代码模板,是你能否讲清楚第二段为什么用组合逻辑、第三段为什么用时序逻辑,以及输出是寄存器输出还是组合输出对时序的影响。建议你拿一个真实项目里的状态机,用综合工具看网表,确认没有多出锁存器。时序约束那边,input delay/output delay的取值逻辑比命令本身重要,找个带外部接口的小工程自己设一遍,看slack怎么变。你Verilog代码量多少?如果超五千行,状态机可以少花时间,把精力放在CDC和约束上。

登录后可在本页底部提交回答

提问者

FPGA学号2查看主页
浏览「其他」

描述场景与已尝试方案,更容易获得有效解答

相关问题

同分类

提问建议

  • 标题写清核心疑问,避免「求助」「请问」等空泛用语
  • 正文补充环境、版本、报错信息或截图
  • 先搜索本站是否已有相近问题,减少重复提问
  • 若与课程相关,请标明课时或章节便于讲师定位