需求分析与规格定义:客户需求收集、芯片功能规格文档(FS)编写、性能指标定义

说实话,芯片开发最怕什么?不是设计难,不是验证慢,而是——你辛辛苦苦做出来的东西,客户说「这不是我要的」。我见过太多团队,一上来就闷头写RTL,结果到集成阶段才发现需求理解偏了。嗯,今天我们就聊聊怎么把需求这关把死。

客户需求收集:别让「我以为」害了项目

客户说「我要一个高性能网络芯片」,你千万别信。这话太虚了。我个人的习惯是,拿到需求先做三件事:

  • 场景还原:客户到底在什么场景下用?是数据中心内部互联,还是边缘计算?
  • 痛点挖掘:他现在用谁家的芯片?哪里不爽?是延迟高,还是功耗大?
  • 量化追问:把「快一点」变成「延迟低于5微秒」,把「省电」变成「典型功耗不超过25W」
我的小技巧:每次客户沟通完,我会当天发一份会议纪要,把双方确认的需求点逐条列出来。别拖,拖一天可能就变味了。

我在项目中遇到过最坑的事:客户口头说「支持PCIe Gen5就行」,结果验收时他说「我默认你们会支持CXL」。你看,一个没说,一个没问,后面改设计改到吐血。

芯片功能规格文档(FS)编写:把需求变成「铁律」

FS文档,说白了就是芯片的「宪法」。所有设计、验证、测试都得按它来。怎么写?我总结了一个套路:

  1. 功能列表:每个模块支持什么功能,不支持什么,写清楚。比如「支持256位AES加密,不支持SM4」。
  2. 接口定义:管脚、协议、时序,一个不能少。我习惯用表格列出来。
  3. 边界条件:温度范围、电压范围、时钟频率范围。这些最容易漏。
  4. 异常处理:出错了怎么办?重试?报错?还是静默丢弃?

举个例子,我之前做的一个交换芯片FS,光接口定义就写了30页。你想想看,如果这里含糊了,后面验证怎么搞?

核心原则:FS文档里每一条描述,都必须能「被验证」。不能验证的需求,等于没写。

性能指标定义:用数字说话

性能指标这块,最容易出现「拍脑袋」。我见过有人写「吞吐量大于100Gbps」,结果没说是线速还是非线速,没说是64字节小包还是1518字节大包。这差远了。

我个人习惯,性能指标要分三层:

指标类型 示例 注意点
吞吐量 线速转发,64字节包不低于148.8Mpps 必须注明包长和测试条件
延迟 存储转发模式下,延迟不超过10μs 区分最小/典型/最大延迟
功耗 典型场景功耗不超过15W 注明是芯片级还是系统级
可靠性 MTBF不低于100万小时 需要参考行业标准
避坑提醒:我曾经在一个项目里,客户说「延迟要低」,我们做到了5μs,结果客户验收时测的是「从网口到网口」的延迟,而我们测的是「芯片内部」的延迟。差了整整一个PHY的延迟。所以,指标定义一定要说清楚「从哪到哪」。

知识体系总览

下面这张图,是我自己梳理的需求分析与规格定义的核心流程。你把它打印出来贴在工位上,每次做新项目前过一遍,能省不少返工的功夫。

需求分析与规格定义核心流程 客户需求收集 场景还原 · 痛点挖掘 · 量化追问 需求分析 可行性评估 · 优先级排序 · 冲突消解 FS文档编写 功能列表 · 接口定义 · 边界条件 性能指标定义 吞吐量 · 延迟 · 功耗 · 可靠性 评审与确认 内部评审 · 客户确认 · 基线冻结 需求变更管理 变更申请 · 影响分析 · 版本控制 迭代反馈 关键产出物 客户需求文档(CRD) → 功能规格文档(FS) → 性能指标矩阵 → 评审纪要 → 基线版本 所有文档必须纳入版本管理,变更需走正式流程

文档模板与检查清单

最后,分享一个我常用的FS文档检查清单。每次写完FS,对着过一遍,能发现不少问题:

  • 每个功能是否有明确的「支持/不支持」描述?
  • 接口时序图是否完整?有没有遗漏的管脚?
  • 性能指标是否量化?测试条件是否明确?
  • 异常场景是否覆盖?比如丢包、超时、校验错误?
  • 功耗是否有典型值和最大值?
  • 兼容性要求是否写清楚?比如向下兼容PCIe Gen4?
我的习惯:FS文档写完后,我会找验证团队的人先看一遍。他们最擅长挑毛病——「这个功能没法验证」「这个条件写得太模糊」。别怕被怼,现在发现问题比流片后发现问题强一万倍。

嗯,需求分析和规格定义这块,说白了就是「把话说清楚」。客户说不清楚,你帮他说清楚;你自己说不清楚,那就别指望后面能做好。我见过太多项目,前面省了三天写FS,后面花了三个月改Bug。这笔账,你算得过来。


专注资料整理