来源:EETOP Blog 作者:John_Zhang
链接:https://blog.eetop.cn/1603034
最近有机会和多个不同工程师交谈,整理了一些访谈记录进行汇总,帮助新手朋友理解在芯片设计过程中工程师们的工作内容和工作流程,不准确之处还望理解。
众所周知,芯片设计是目前世界上最复杂的工程项目之一,每个环节都会影响刀芯片的成功与否,从最初的需求分析到最终的产品实现,整个设计流程需要各类工程师紧密合作,每个工程师都承担着至关重要的角色和责任。不同的工程师在不同阶段完成特定任务,并在整个设计过程中相互配合,确保芯片能够满足性能、功耗、质量等多方面的要求。接下来我们逐一了解不同工程师的工作职责内容。
依次出场的是:
1. 产品经理(Product Manager)(老板的代言人)
主要的工作内容:
• 需求收集与分析:产品经理负责与客户、市场团队和技术团队沟通,收集并分析市场需求,了解潜在客户的痛点和需求。
• 功能规格定义:基于市场需求,撰写芯片的功能规格文档,明确芯片应实现的功能、性能要求和技术指标。
• 产品路线图制定:制定芯片的开发和发布计划,包括时间表、关键里程碑和资源需求。
• 跨团队协调:协调产品开发过程中不同团队的工作,确保设计、开发和生产等环节能够顺利进行。
• 客户沟通与支持:与客户保持密切沟通,确保产品满足客户期望,解决客户在使用过程中遇到的问题。
2. 应用工程师(Application Engineer)(哄客户爸爸的)
主要的工作内容:
• 应用需求分析:深入理解客户的实际应用需求,并将其转化为具体的芯片功能需求。
• 应用支持:提供技术支持,帮助客户理解如何使用芯片,解答技术问题,提供使用指南。
• 参考设计与示例代码:为客户提供芯片的参考设计、开发板和示例代码,以便客户快速上手。
• 技术交流与培训:与客户进行技术交流,分享应用场景中的最佳实践,组织培训活动,帮助客户更好地利用芯片。
• 反馈收集与改进建议:收集客户的使用反馈,分析问题并向产品经理和设计团队提供改进建议。
3. 系统架构师(System Architect) (大佬出场,都懂的!!)
工作内容:
• 系统级架构设计:基于需求分析,设计芯片的系统架构,决定处理器、内存、接口、总线等模块的功能和相互关系。
• 模块划分与接口定义:将复杂的芯片功能分解成多个模块,定义模块间的通信接口、数据流和控制流。
• 性能与功耗平衡:根据设计需求,平衡性能、功耗、面积(PPA)等方面的需求,确保芯片在满足功能的同时,具备高效能和低功耗特性。
• 技术选型:选择适合的处理器架构、总线协议、内存架构等,确保芯片架构能支持未来的技术演进和应用场景。
• 架构文档编写与沟通:编写架构设计文档,详细描述架构方案,并与各个工程团队(如硬件、验证、制造等)进行沟通,确保架构设计的可实现性。
4. 数字设计工程师(Digital Design Engineer)(工程队)
工作内容:
• RTL设计:编写寄存器传输级(RTL)代码,描述芯片的各个功能模块,如算术逻辑单元(ALU)、寄存器堆、状态机等。
• 模块设计与优化:根据系统架构师提供的规格文档,设计和优化每个模块的功能和性能,确保其符合设计目标。
• 时序设计:在RTL中嵌入时序约束,确保数据在时钟周期内正确传输,避免时序违例。
• 模块级仿真与调试:使用仿真工具对各个模块进行功能验证,排查设计错误,确保模块按预期工作。
• 与其他团队配合:与验证工程师、时序工程师等密切合作,进行交叉验证,确保设计的功能和时序要求得到满足。
5. 验证工程师(Verification Engineer)(找茬专业户)
工作内容:
• 测试用例设计:根据设计规格和功能要求,编写验证计划和测试用例,覆盖芯片设计的所有功能和边界情况。
• 仿真与验证:使用仿真工具(如ModelSim、VCS等)对设计进行功能验证,检查RTL代码是否按预期工作。
• 验证平台开发:搭建验证平台,使用高级验证方法(如UVM、Systemverilog)来进行模块和系统级验证。
• 故障定位与修复:当发现设计错误时,快速定位问题并与设计工程师沟通,修改设计以消除错误。
• 形式验证:在某些项目中,使用形式验证工具进行无错误证明,确保设计没有潜在的逻辑错误。
6. 硬件验证工程师(Hardware Validation Engineer) (曲线救国,侧面验证)
工作内容:
• 硬件平台搭建:将设计加载到开发板或原型板上,进行实际的硬件验证。
• 性能与稳定性测试:进行性能测试(如时钟频率、数据吞吐量等)和稳定性测试,确保芯片在真实环境中能够可靠运行。
• 硬件调试:通过示波器、逻辑分析仪等工具,调试硬件问题,找出设计中的缺陷并反馈给设计团队。
• 芯片性能调优:对芯片的工作环境、功耗、温度等进行调优,确保其在各种实际条件下的表现达到预期。
• 与验证工程师配合:与验证工程师合作,确认硬件平台的测试用例是否覆盖芯片的所有功能,确保验证结果准确。
7. DFT工程师(Design for Test Engineer)(可有可无,偶尔重要)
工作内容:
• 可测试性设计:为芯片设计添加测试访问机制(如扫描链、内建自测试(BIST)),以便生产过程中进行故障检测。
• 测试模式设计:设计测试模式和测试架构,确保芯片可以有效地进行功能和性能测试。
• 测试访问协议设计:定义芯片内部的测试访问协议和接口,确保芯片在生产测试过程中可以快速、准确地验证功能。
• 测试与调试支持:在芯片制造和量产过程中,提供测试支持,分析测试结果,协助调试和修复问题。
8. 物理设计工程师(Physical Design Engineer) (施工 苦力)
工作内容:
• 芯片版图设计:根据逻辑设计(RTL)生成芯片的物理布局,包括晶体管、门电路、布线等。
• 布局与布线(Place and Route):进行芯片的布局与布线,确保所有元件和信号线都被正确安排,避免碰撞或交叉。
• 时序优化:进行时钟树合成(CTS)和时序优化,确保时序要求得到满足,避免时序违例。
• 功耗与面积优化:优化芯片的功耗和面积,确保芯片在满足性能需求的同时,功耗和芯片面积控制在合理范围内。
• 设计规则检查(DRC)与布局与布线验证(LVS):进行设计规则检查,确保版图符合制造商的设计规范,并进行LVS验证,确保布局与原始设计一致。
• 时序分析:使用静态时序分析(STA)工具,分析芯片的时序,确保数据在时钟周期内正确传输,避免时序违例。
• 时序优化:识别潜在的时序问题,并与设计团队合作优化时序,确保芯片能够在指定时钟频率下稳定工作。
• 时钟树合成(CTS):设计和优化时钟树,确保时钟信号能够均匀地分布到芯片的各个部分,避免时钟偏差。
• 时序收敛与验证:在物理设计完成后,对芯片的时序进行最终验证,确保其满足时钟和数据路径的要求。
9. 制造工程师(Manufacturing Engineer) (监察生产)
工作内容:
• 生产工艺管理:管理芯片的制造过程,确保每个生产环节(如光刻、蚀刻、离子注入等)符合标准。
• 生产线支持:协助生产线进行优化,解决生产过程中遇到的问题,确保芯片按时生产并达到质量标准。
• 与设计团队合作:与设计团队密切合作,确保设计可制造,并根据设计图纸提供生产过程中的技术支持。
• 生产质量控制:在生产过程中进行质量控制,确保每一颗芯片符合质量标准,并通过质量检测。
10. 量产测试工程师 (TEST Engineer) (找一找啊 ,找一找,找到一颗好芯片)
工作内容:
• 测试计划和策略制定:测试工程师需要与设计团队紧密合作,了解芯片的设计要求,制定详细的测试计划和测试策略。
• 故障分析和定位:如果芯片在测试中失败,测试工程师需要进行详细的故障分析,定位问题所在。
• 测试报告和文档编写:测试工程师需要记录所有测试的结果,生成详细的测试报告,提供给设计团队和管理层。
• 硅验证:在芯片制造完成后,测试工程师需要进行硅验证,确保实际的硬件与设计一致
11. 质量保证工程师(Quality Assurance Engineer)(质检)
工作内容:
• 质量管理:制定和执行质量管理流程,确保芯片在生产过程中的每个阶段都符合质量标准。
• 功能与性能测试:对芯片进行全面的功能、性能、稳定性等多方面的测试,确保其达到设计要求。
• 缺陷追踪与整改:跟踪并记录测试中的缺陷,提出改进建议并协调工程师进行修复,确保最终产品的质量。
• 与制造工程师合作:与制造团队紧密合作,确保芯片在生产过程中不出现质量问题。
芯片设计是一个高度复杂的过程,涉及多个专业领域和技术环节。以上简单描述,希望对你粗略的了解各个工种有一定的帮助。才疏学浅,勿喷勿念,笑笑就好。。
作者更多精彩日志截屏:
欢迎大家访问作者博客
觉得有帮助可以关注并点赞支持作者
(第一次注册需要在电脑端进行)
https://blog.eetop.cn/1603034点击阅读原文访问作者博客