verilog 算法加速模块设计流程_如何做一名合格的数字芯片前端设计工程师?

e498ccff0a5941468a92d72bacc79561.gif

数字芯片前端设计工程师,这个名字好长啊!之所以这么长,是怕别人听了误会,不信你百度一下“前端工程师”?

我是Joey,一名小小的数字芯片前端设计工程师,很多时候不敢称呼自己是一个工程师,因为觉得自己离一名合格的工程师还差得很远。生活中经常会遇到如下的对话:

问:你是做什么工作的?

我:我是做数字芯片前端的。

问:这是做什么的?

我:这。说来话长了。

那数字芯片前端设计工程师究竟是做什么的呢?我们不妨先看看几家公司的招聘要求吧!


A公司

职位描述

1. 根据顶层架构和产品要求,对硬件模块进行设计、实现、仿真和测试;

2. 为特定模块设计时钟分配、复位序列和内部存储管理;

3. 利用行业标准系统总线将模块集成到顶层设计中;

4. 解决LINT/CDC问题;

5. 定义设计约束并实现时序收敛。

任职要求

1. 出色的Verilog开发经验;

2. 熟悉常见的系统总线(例如AMBA,Avalon等);

3. 具有高吞吐量、低延迟和并行计算的系统架构设计经验;

4. 具有常见EDA工具使用的经验;

5. 熟练使用Linux和Git开发。


B公司

职位描述

1. 完成多媒体模块从算法到结构的RTL实现;

2. 完成对多媒体硬件模块的PPA优化;

3. 参与多媒体算法的评估与优化;

4. 参与硬件模块的FPGA验证。

任职要求

1. 电子/计算机相关专业,硕士学历; 

2. 精通Verilog RTL描述语言; 

3. 熟悉数字电路设计和验证方法学; 

4. 熟悉主流视频标准; 

5. 熟悉常用图像处理算法; 

6. 熟悉AMBA总线; 

7. 对低功耗设计有一定的了解。


C公司

职位描述

1. 负责手机基带芯片的体系结构设计、总线架构设计、RTL设计与验证;

2. 参与芯片前端流程并与后端设计人员合作,保证基带芯片的顺利流片与量产;

3. 参与基带芯片FPGA原型的规划、调试、验证和芯片调试、验证。 

任职要求

1. 微电子或相关专业硕士毕业,两年或以上工作经验或相关研究生项目经验;

2. 熟悉Verilog,并有一定的实际项目经验,具有良好的代码风格;

3. 熟悉数字集成电路设计流程,包括RTL coding, Simulation, Synthesis, DFT等;

4. 能熟练使用常用EDA软件;

5. 熟悉基本Linux/Unix操作并有一定的script阅读能力;

6. 具备良好的英语听说读写能力,CET-6及以上。 

4a385efc1368bde1d570bd397ddbef6a.png

以前每每看到这样的招聘信息,自己就把它当做一个CheckList,对比自身符合几条,每次看完心就凉了,天呐,差的好远!

有一本书,名字叫《“胡”说IC——菜鸟工程师完美进阶》,作者是胡运旺。这本书对集成电路相关的工作都进行了介绍。而对于数字芯片前端设计工程师,这本书也给出了必备的知识、必备的技能和能力、必备的态度,这里贴一下。

必备的知识

c3413f6c7ae0b4adde925c803f1787a8.png

必备的技能和技巧

bedd285f6c43f2373eb3d2ee510c3cab.png

必备的态度

3fb53157f35a9548359c823731b05d21.png

看完这个以后Joey真的愣住了,怎么需要掌握这么多东西?我什么时候才能学会?有时候听某些前辈泛泛而谈,说你只要会Verilog就可以了,真的可以了吗?

6cd1e63ae0c1c9b739f44c3cca23cc8c.png

一天晚上,X公司芯片设计部门照常开例会,部门老大给大家分享了自己七年前写的一份文档,那时他刚工作没几年。尽管七年过去了,他对里面的内容还是很熟悉,文档中所讲的知识和技巧仍然很先进,大家听完分享后都觉得非常受用。

有的员工问他,当初是什么动机要写这份文档?里面涉及到的知识和技巧是如何提炼出来的?他说,当初部门业务的原因,自己经常遇到相关的问题,但网上又找不到什么成熟的资料。于是他就一边思考自己遇到的问题,一边去查相关论文,甚至去查一些不相关但神似的论文,慢慢就找到了些方法,通过部门项目的大量实践和检验,才提炼出这份文档。他说咱们做设计的,有些时候就是需要追求卓越,去死抠问题,办法总比困难多!谁说做设计的不能搞研究?谁说做设计的不能写专利?谁说做设计的不能发论文?

原来,我们真的不能被所谓的“设计工程师”限制住,任何一次死抠问题、一次苦思冥想都是与技术灵魂的深入沟通,说不定会有什么好的想法从灵魂深处蹦出来呢!

e72759b7016beb9c877811cf75ee94fd.png

Y公司的芯片架构师已经工作好多年了,这些年他从数字芯片设计一步步走到了架构师的职位。原本Joey觉得,架构师在公司就是那种运筹帷幄之中,决胜千里之外,指点江山,激扬文字,居高望远,为公司的产品把脉掌舵。但这位架构师除了做公司的产品架构之外,工作之余还帮助指导别人coding,包括设计用的Verilog,验证用的SystemVerilog,指导他们如何coding更高效,如何做到验证快速收敛,如何做DFT,等等等等。

偶然一次看到他最近做得一个PPT,上面写到了很多coding时非常细微的技巧,这些技巧他是根据芯片后端设计工具、器件工艺等总结的,并经过了很多项目的检验。

原来,架构师并不只是居高望远,还要细致入微,这年头,真的是看综合实力!

站在高处,方能看得远;

细致入微,方能看得清!

072020c0cae7ae5a30b762018a58361b.png

数字芯片前端设计工程师,我们究竟是怎样的一个存在?

我们作为数字芯片前端设计工程师,在编写一个模块前需要了解项目的需求、模块接口的定义、时序特性、是否异步、跟上下游模块的关系等等很多东西。

而在编写模块的过程中,又要考虑看代码人的感受,比如良好、高效的代码风格,清晰明确无歧义的注释等,据说芯片设计人员很讨厌的两件事,一个是讨厌别人不写注释,另一个是讨厌自己要写注释,但清晰规范的代码真的能减少被别人喷的概率。还要注意一些信号的规范化处理,所写的代码如何能够与器件工艺、设计工具很好的匹配?可测试设计怎么做?如何权衡性能、功耗和面积?这些都是需要考虑的。

编写完并经过自己初步的调试后,需要交给验证人员进行验证,这个过程可能会很长,且反反复复。验证过程中出了问题,到底是环境问题还是设计问题?如何快速定位问题?如何与验证人员高效的沟通?

而在集成电路设计的后端阶段,有些时候后端人员需要看电路实现后的功能与你所写的代码是否一致,这时就需要你作为设计人员前去配合工作,并就发现的问题及时进行反馈。有些公司对于模块综合、DFT、布局布线等工作都是要求前端和后端工作人员一块完成的。

原来我们的工作贯穿整个芯片开发流程的始终,尽管工作在具体表现形式上更多的是用Verilog设计模块,但我们绝不能仅限于此,否则就会处于被动状态,发展空间也就可想而知了。

6f5ce3dd2047d9fa9f7a19f24e638264.png

现在想想,再看看文章开头处写的那些关于数字芯片前端设计工程师职位的种种要求和技能,似乎不是空穴来风。

如何做一名合格的数字芯片前端设计工程师呢?

怀着一颗对芯片的敬畏之心,不断努力吧!大家不都在奔跑吗?

f058f609b260cd88765c45048494df1d.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值