需求分析与规格定义:客户需求收集、芯片功能规格文档(FS)编写、性能指标定义
说实话,芯片开发最怕什么?不是设计难,不是验证慢,而是——你辛辛苦苦做出来的东西,客户说「这不是我要的」。我见过太多团队,一上来就闷头写RTL,结果到集成阶段才发现需求理解偏了。嗯,今天我们就聊聊怎么把需求这关把死。
客户需求收集:别让「我以为」害了项目
客户说「我要一个高性能网络芯片」,你千万别信。这话太虚了。我个人的习惯是,拿到需求先做三件事:
- 场景还原:客户到底在什么场景下用?是数据中心内部互联,还是边缘计算?
- 痛点挖掘:他现在用谁家的芯片?哪里不爽?是延迟高,还是功耗大?
- 量化追问:把「快一点」变成「延迟低于5微秒」,把「省电」变成「典型功耗不超过25W」
我的小技巧:每次客户沟通完,我会当天发一份会议纪要,把双方确认的需求点逐条列出来。别拖,拖一天可能就变味了。
我在项目中遇到过最坑的事:客户口头说「支持PCIe Gen5就行」,结果验收时他说「我默认你们会支持CXL」。你看,一个没说,一个没问,后面改设计改到吐血。
芯片功能规格文档(FS)编写:把需求变成「铁律」
FS文档,说白了就是芯片的「宪法」。所有设计、验证、测试都得按它来。怎么写?我总结了一个套路:
- 功能列表:每个模块支持什么功能,不支持什么,写清楚。比如「支持256位AES加密,不支持SM4」。
- 接口定义:管脚、协议、时序,一个不能少。我习惯用表格列出来。
- 边界条件:温度范围、电压范围、时钟频率范围。这些最容易漏。
- 异常处理:出错了怎么办?重试?报错?还是静默丢弃?
举个例子,我之前做的一个交换芯片FS,光接口定义就写了30页。你想想看,如果这里含糊了,后面验证怎么搞?
核心原则:FS文档里每一条描述,都必须能「被验证」。不能验证的需求,等于没写。
性能指标定义:用数字说话
性能指标这块,最容易出现「拍脑袋」。我见过有人写「吞吐量大于100Gbps」,结果没说是线速还是非线速,没说是64字节小包还是1518字节大包。这差远了。
我个人习惯,性能指标要分三层:
| 指标类型 | 示例 | 注意点 |
|---|---|---|
| 吞吐量 | 线速转发,64字节包不低于148.8Mpps | 必须注明包长和测试条件 |
| 延迟 | 存储转发模式下,延迟不超过10μs | 区分最小/典型/最大延迟 |
| 功耗 | 典型场景功耗不超过15W | 注明是芯片级还是系统级 |
| 可靠性 | MTBF不低于100万小时 | 需要参考行业标准 |
避坑提醒:我曾经在一个项目里,客户说「延迟要低」,我们做到了5μs,结果客户验收时测的是「从网口到网口」的延迟,而我们测的是「芯片内部」的延迟。差了整整一个PHY的延迟。所以,指标定义一定要说清楚「从哪到哪」。
知识体系总览
下面这张图,是我自己梳理的需求分析与规格定义的核心流程。你把它打印出来贴在工位上,每次做新项目前过一遍,能省不少返工的功夫。
文档模板与检查清单
最后,分享一个我常用的FS文档检查清单。每次写完FS,对着过一遍,能发现不少问题:
- 每个功能是否有明确的「支持/不支持」描述?
- 接口时序图是否完整?有没有遗漏的管脚?
- 性能指标是否量化?测试条件是否明确?
- 异常场景是否覆盖?比如丢包、超时、校验错误?
- 功耗是否有典型值和最大值?
- 兼容性要求是否写清楚?比如向下兼容PCIe Gen4?
我的习惯:FS文档写完后,我会找验证团队的人先看一遍。他们最擅长挑毛病——「这个功能没法验证」「这个条件写得太模糊」。别怕被怼,现在发现问题比流片后发现问题强一万倍。
嗯,需求分析和规格定义这块,说白了就是「把话说清楚」。客户说不清楚,你帮他说清楚;你自己说不清楚,那就别指望后面能做好。我见过太多项目,前面省了三天写FS,后面花了三个月改Bug。这笔账,你算得过来。