需求对齐
主要是项目的芯片架构师在与产品线的产品经理以及算法、软件等需求侧进行需求敲定后,向大家解释和说明芯片的feature和规格,也就是PRD文档(Product Requirements Document)。
PRD文档是用于详细描述产品或项目所需功能、特性、性能以及其他相关需求的文档。在软硬件开发、产品设计等领域,PRD通常被用来确保开发团队、设计团队以及其他相关方在同一个页面上,从而在开发过程中避免混淆和误解。
在PRD文档上,罗列了芯片整体的很多信息,比方说:
| 背景 | 介绍芯片项目的背景、目标,以及说明下应用场景(比如用在云边端哪一个领域) |
| 功能需求 | 详细描述芯片需要支持的各种功能和特性,包括但不限于时钟频率、指令级、通信协议、IP集成及其他大类功能点 |
| 性能要求 | 阐明芯片的性能指标,例如吞吐量、处理带宽、计算能力、片间通讯延迟,以及数据阻塞突发抖动等多种场景下的性能指标 |
| 电源功耗 | 说明芯片的电源需求和预期的功耗水平,以确保在实际应用中能够满足电源供应和计算功耗,以及节能要求 |
| 存储规格 | 明确cache、sram和DDR等片内片上缓存的大小与带宽 |
| 功能安全 | 描述芯片在硬件层面上的安全性能和保护措施,在特殊应用场景下尤为重要(如车载芯片) |
| 制造封装 | 说明芯片的制造工艺及工艺厂商,描述芯片封装的类型、大小和引脚配置等信息 |
| 测试安排 | 说明对芯片的测试计划,包括集成测试、性能测试、功耗测试、可靠性测试等 |
| 交付节点 | 提供芯片开发和生产的时间表,包括各个阶段节点和预计的交付日期 |
交付组长根据芯片PRD拆分出的系统功能点和系统模块划分,根据系统的交付安排和模块分工,排一份自己的进度计划表
| 编号 | 事项 | 计划时间 | 起始时间 | 结束时间 | 状态 | 依赖项 |
| TR3准备阶段 | ||||||
| TR3阶段 | ||||||
| PN85节点 | ||||||
| PN95节点 | ||||||
| PN100节点 |
"Technical Review"(技术审查)是项目管理中常用的一种方法,用于评估项目中的技术方案、设计、开发等方面的进展和质量。一般来说,技术审查通常包括以下几个常见的节点:
TR1:需求分析与产品等级规格评审,也包括初始设计评审,主要关注项目的初步设计方案,确保设计方向符合项目目标和需求;
TR2:总体架构与设计框架的技术评审,同时也会关注项目的详细设计,验证设计是否满足需求、是否可实施;
TR3:详细设计评审,包括各部分的方案文档、架构文档、互连接口、软硬件交付文档等各类交付文档评审,并评估设计的可靠性和可维护性;
TR4:开发进展的审查,确保开发过程能够满足整体交付节奏,代码质量遵循规范,满足性能要求;
TR5:集成和测试审查,评估项目的集成进展和测试策略,验证不同系统之间的协同工作和整体性能;
TR6:系统验收审查,用于评估整个项目是否满足最终用户需求和预期目标;
在TR3节点完成主要的方案和架构文档(由架构师输出)评审后,设计要根据方案架构文档完成模块的设计文档,并根据设计文档进行RTL编码;验证同样根据方案架构文档输出验证方案文档和测试点文档,并进行验证环境搭建;后续可以通过PN85/95/100节点进行项目开发验收;
PN85节点验收标准:
设计——代码开发完成整体的85%,主体功能基本开发完成,能够支撑验证sanity测试与顶层的代码集成;
验证——测试点评审通过,验证环境组件与主体搭建完成,完成sanity通包;
PN95节点验收标准:
设计——代码开发完成整体的95%,主体功能全部完成,主要异常场景和例外场景开发完成,剩余极少数corner场景如动态复位、带流改配、中断恢复未开发;
验证——环境开发完成,主功能与主要异常场景验证充分,随机用例与定向用例配置合理,每日回归稳定进行,plan coverage达到90%以上;
PN100节点验收标准:
设计——代码全部开发完成,时序优化基本完成,面积、功耗与布局绕线等通过验收(可能留有一定的优化空间),代码覆盖率达到95%以上;
验证——全部用例规划完成,定向测试、动态测试、性能测试等基本完成,plan coverage达到100%,function coverage达到95%以上;
PN100之后是质量活动的时间,质量活动之后才是项目间歇期
芯片开发spec的三级文档体系:
FS - Functional Specification(功能规格):"FS" 表示功能规格,它是芯片设计和开发的早期阶段的一个文档。功能规格详细描述了芯片的功能、性能和特性,以及各个模块之间的交互。该文档通常由系统工程师编写,用于明确芯片需要实现的功能,为后续的设计和开发工作提供指导。功能规格可以作为开发过程中的基础,帮助确保设计和开发团队在同一页面上。
AS - Architecture Specification(架构规格):"AS" 表示架构规格,它是在功能规格之后,芯片设计进一步细化的一个文档。架构规格描述了芯片的整体架构、模块划分、接口定义等。在架构规格中,可能会包括每个模块的功能描述、接口定义、数据通路等详细信息。架构规格通常由架构师或设计团队编写,为设计和开发提供了更具体的指导。
DS - Design Specification(设计规格):"DS" 表示设计规格,它是在架构规格之后,进一步细化和准备进入实际设计和开发的文档。设计规格包含了硬件模块的详细设计信息,包括电路图、时序要求、数据通路、控制逻辑等。设计规格可以由硬件工程师或设计团队编写,为实际的电路设计和开发提供指导。
“对外交付的,项目经理、客户和产品线伙伴需要了解的信息就写在FS上,咱这FS一般由架构师来完成。”
“内部交付的,架构师、设计、验证和交付伙伴需要了解的信息就写在AS上,咱这AS也是由架构师完成,当然也可以由设计完成。”
“不交付的,设计自己看帮助自己梳理代码,以及对代码进行解释的信息就写在DS上,这个文档必然是设计来完成。”
交付AS文档、寄存器文档、接口文档和自己看的DS文档
组织AS文档的串讲——记遗留问题
RTL集成进环境后,就可以开始冒烟测试(sanity case)了。
冒烟测试是在芯片设计完成后的早期阶段进行的测试,旨在尽早发现设计中的明显错误或问题。冒烟测试的主要目标是确认芯片的基本功能是否能够正确启动并运行,而不需要详尽地验证所有功能和特性。这样可以节省时间和资源,尽早发现设计中的显著问题。
在漫长的debug阶段,验证小伙伴在sanity pass之后根据测试点补充更多的随机测试用例,也发现了越来越多的bug。你一遍遍的拉分支改代码跑用例合代码,终于熬到了RTL基本稳定下来。小伙伴一看,“终于攒了足够的用例,可以起回归啦!”听到这你大为不解“起回归是什么?”
“回归测试就是将已经通过的用例添加到回归列表中,然后通过归回配置脚本对所有添加的用例进行自动执行配置的次数,简单的理解就是批量跑用例。一次回归可以跑成百上千条用例,将之前完成的测试在短时间内重复运行检查,扩大场景覆盖避免新修改的代码引入未知的bug,也可以集中收集覆盖率真实的反映出验证进度。而且因为回归是工具自动定时运行的,把跑回归的时间设定在每天午夜12点,能够达到人下班机器不下班连轴转的效果,代码收敛速度嘎嘎的提升!”
之后是代码优化中的重中之重——时序优化。严格来说,时序优化不应被归入代码优化环节,而应该是bug修改更为准确,因为时序没有达标的RTL是无法进行后续布局布线生成网表以及流片生产加工的。而相较其他,时序优化又是最为考验设计经验与能力的环节,着实令你叫苦不迭。
BES小伙伴帮助大家通过工具完成了模块的预综合,提醒你们根据结果进行时序优化。果然这是谁都逃不掉的一步,怀着侥幸心理你打开了报告期待着最差路径是一个正数,结果映入眼帘的的数字:-1.883!1GHz时钟频率的芯片,满打满算只有800ps时序空间供逻辑来辗转腾挪,然后你这最差路径违规了1883ps!
找时序路径的源头找重点,一点点分析时序可优化点,逻辑前提、增加流水、简化计算,修完一条之后再瞄准下一条周而复始循环往复。
日复一日流水不息,终于来到了PN100的节点,系统RTL进行交付了!
上一颗芯片回片后的导入工作
在芯片制造完成后,将其从制造工厂送回设计单位进行测试和验证的过程,也称为回片阶段的导入工作,导入会跑通和验证芯片各项功能指标,为大规模生产商用提供指导。
在芯片回片阶段,导入工作主要包括以下内容:1.芯片测试和验证设备的准备:在设计单位内准备好用于测试和验证芯片的设备,包括测试台、测试仪器以及相关的接口和软件。
2.测试程序的开发:设计测试程序和测试算法,以确保能够充分覆盖芯片的所有功能,并检测潜在的缺陷或故障。
3.测试载板设计:设计用于插入芯片并连接到测试设备的测试载板,确保良好的接触和稳定的信号传输。
4.功能测试:对芯片进行各种功能测试,以确保它能够按照设计规格正常工作。
5.故障分析和修复:如果在测试过程中发现芯片存在故障或缺陷,需要进行深入的故障分析,并采取相应措施修复。
“写代码写不到60岁呀,那我一个设计工程师未来方向是什么呢?”
“这个问题我也思考过,也和很多同学探讨过,给你说说我的见解。在我看来,设计工程师未来有4个发展的防线:技术专家、架构师、项目经理、市场专家。”
“第一条路线是技术专家,或者称之为资深设计工程师,就像你现在的进阶版。技术专家需要具备深厚的专业知识、卓越的问题解决能力、更多对制程和工艺的了解、时序面积功耗优化能力、扎实的编程和脚本技能以及很高的责任心和自我驱动力。当把一个模块系统甚至整个soc交给你来完成的时候,大家都会非常的相信你的交付速度和代码质量。资深设计工程师可以说是一个团队不可获取的宝贵资源。”
“第二条路线是芯片架构师。架构师负责制定和设计芯片整体架构,这就需要你具备深厚的专业知识,对所在方向有极高的理解;系统级思维,能够划分协调各个模块和IP功能;性能和面积功耗平衡思想,在不同设计指标之间进行权衡;市场和产品意识,能够设计出符合市场定位的芯片产品;风险评估和解决能力,能够识别潜在的技术和设计风险,并提出相应的解决方案。”
“第三条路线是项目经理,或者说交付组长。项目经理显然已经走向管理路线,需要有很强的项目管理能力、团队领导和协作能力、沟通与协调能力、决策能力、风险管理与解决能力、时间管理能力以及应变和抗压能力,当然也需要有技术背景,具备芯片设计和制造领域的技术知识,能够理解和评估技术方案的可行性和优劣势。也需要随时保持对行业动态的关注,不断提升自己的综合素质。”
“第四条路线是市场专家,这条路距离研发就更远一些了。想成为市场专家你需要着重培养自己的市场分析和市场调研能力,能够对芯片市场进行深入分析,包括市场规模、增长趋势、竞争格局等,为产品定位和推广提供数据支持,也要去了解客户需求、竞争对手、市场痛点等信息,为产品开发和营销策略提供依据。当然有时也要花费心思去维护客户市场、进行品牌建设、参与产品定位与定价。你的芯片设计背景会在这个过程中为你提供很大的帮助与优势。”