3、需求分析与规格定义:从系统需求到芯片规格书(PRD)、关键性能指标(吞吐量、延迟、功耗、面积)、通信协议栈的拆解

说实话,很多团队做芯片失败,不是设计能力不行,而是第一步就走歪了。需求分析这活儿,看着像文档工作,实际上决定了芯片的生死。我见过太多项目,需求没理清楚就急着画架构图,结果流片回来发现性能差一截,或者功耗压不住,只能降频用——那叫一个难受。

今天我们就聊聊,怎么从模糊的系统需求,一步步推导出清晰的芯片规格书。说白了,就是把「客户想要什么」翻译成「芯片该怎么做」。

3.1 从系统需求到PRD:别让需求「飘」着

系统需求通常来自产品经理或者系统工程师。他们说的往往是:「我们要做一个5G小基站基带芯片,支持64个用户,峰值速率1Gbps。」听起来很明确对吧?但作为芯片架构师,你得追问三个问题:

  • 这个1Gbps是物理层速率还是应用层速率? 差一个协议栈,可能差30%的开销。
  • 64个用户是同时激活还是在线? 激活用户数直接决定处理器的并行度。
  • 功耗预算多少? 没给功耗约束的规格书,都是耍流氓。

我个人习惯,拿到系统需求后,先做一件事:画一个「需求-指标」映射表。把每一条系统需求,拆解成可量化、可验证的芯片指标。举个例子:

系统需求 芯片指标 关键约束
峰值吞吐量1Gbps 物理层处理能力≥1.2Gbps(含开销) 时钟频率、数据位宽、流水线深度
支持64用户 MAC层调度器支持64个上下文 片上SRAM容量、DMA通道数
端到端延迟<1ms 基带处理延迟<200μs 流水线级数、硬件加速器响应时间
功耗<5W 动态功耗+静态功耗<4.5W(留余量) 工艺节点、电压域划分、门控时钟

嗯,这里要注意:PRD不是需求清单,而是设计约束的集合。每一行指标,都要能追溯到某一条系统需求。我曾经在一个项目中,客户说「支持VoIP」,我们想当然地加了个语音编解码器,结果发现客户用的是第三方DSP方案——白白浪费了面积和功耗。

避坑指南: 我曾经因为没搞清楚「峰值速率」和「持续速率」的区别,把加速器的吞吐量设计得过高,导致面积超标。后来改方案,硬生生砍掉了一半的并行度。记住:峰值是瞬间的,持续才是常态

3.2 关键性能指标:吞吐量、延迟、功耗、面积的博弈

这四个指标,就像芯片设计的「四角兽」。你不可能同时做到最好,必须做取舍。我习惯用一句话概括:在给定的功耗和面积预算下,满足吞吐量和延迟要求

3.2.1 吞吐量:别只看数字,要看数据流

吞吐量不是简单的「数据量/时间」。你得考虑数据流的路径。比如一个OFDM解调器,输入是时域采样点,输出是频域符号。中间经过FFT、信道估计、均衡等多个模块。每个模块的吞吐量必须匹配,否则就会出现瓶颈。

我常用的方法是画一个数据流图,标注每个模块的处理速率。然后问自己:

  • 哪个模块是瓶颈?
  • 能不能用流水线或并行来提升?
  • 数据缓冲够不够?

举个例子,一个LTE基带接收机,采样率是30.72MHz,每个采样点16bit。那么输入数据率就是30.72M × 16bit = 491.52Mbps。但经过FFT后,数据率会变成符号率乘以子载波数乘以每个符号的比特数。你想想看,如果FFT模块的处理速度跟不上输入,就得加FIFO,但FIFO大了延迟就上去了。

3.2.2 延迟:硬实时和软实时的区别

通信芯片对延迟极其敏感。比如5G的URLLC场景,要求端到端延迟1ms。这意味着基带处理必须在几十微秒内完成。我建议把延迟拆成两部分:

  • 处理延迟:数据从进入芯片到处理完成的时间。取决于流水线深度和时钟频率。
  • 排队延迟:数据在缓冲区等待处理的时间。取决于调度策略和负载。

硬实时场景下,排队延迟必须可控。我一般会采用时间触发调度,而不是事件触发。说白了,就是给每个任务分配固定的时间片,避免任务之间互相干扰。

个人经验: 有一次做WiFi芯片,客户要求ACK响应时间小于16μs。我们一开始用软件处理,结果发现中断响应太慢。后来改成硬件加速器,直接把ACK生成逻辑做到MAC层里,延迟降到了2μs。所以,关键路径上的延迟,能用硬件就别用软件

3.2.3 功耗与面积:一对冤家

功耗和面积通常是矛盾的。你想降低功耗,就得用更小的工艺节点,但面积成本更高。你想节省面积,就得用更简单的电路,但动态功耗可能更大。

我常用的方法是:先定面积预算,再优化功耗。因为面积直接决定芯片成本,而功耗可以通过门控时钟、电压频率调节等技术来优化。具体来说:

  • 面积优化:复用硬件资源、减少冗余逻辑、用查找表代替复杂运算。
  • 功耗优化:多电压域、时钟门控、数据使能信号、低功耗状态机。

举个例子,一个FFT处理器,如果用流水线架构,面积大但吞吐量高;如果用迭代架构,面积小但延迟大。怎么选?看你的应用场景。如果是基站芯片,面积预算宽松,选流水线;如果是手机芯片,面积敏感,选迭代。

3.3 通信协议栈的拆解:从软件到硬件的映射

通信协议栈通常分为L1(物理层)、L2(MAC/RLC/PDCP)、L3(RRC/NAS)。芯片设计的关键,就是决定哪些功能用硬件实现,哪些用软件实现。我称之为「软硬件划分」

3.3.1 拆解原则:看吞吐量和实时性

我一般遵循两个原则:

  1. 高吞吐量、高实时性的功能 → 硬件。比如FFT、信道编码、调制解调、CRC校验。这些功能数据量大,处理时间要求严格,软件跑不动。
  2. 低吞吐量、控制逻辑强的功能 → 软件。比如RRC信令处理、调度算法、重传管理。这些功能逻辑复杂,但数据量小,适合用CPU跑。

你想想看,一个5G物理层,每秒要处理几百兆比特的数据。如果用CPU做FFT,就算跑2GHz,也跟不上。但用硬件加速器,一个时钟周期就能算完一个点。这就是硬件的优势。

3.3.2 拆解实例:以LTE协议栈为例

假设我们要设计一个LTE基带芯片。协议栈拆解如下:

协议层 功能模块 实现方式 理由
L1(物理层) OFDM调制/解调 硬件(FFT加速器) 高吞吐量,实时性要求高
L1 信道编码(Turbo/LDPC) 硬件(专用编码器) 计算量大,软件无法满足
L1 信道估计 硬件+软件协同 核心算法用硬件,参数配置用软件
L2(MAC) 调度器 软件(CPU) 逻辑复杂,需要灵活调整
L2 HARQ重传 硬件(状态机) 实时性要求高,需要快速响应
L2(RLC/PDCP) 分段/重组、加密 硬件加速器 数据量大,但逻辑相对固定
L3(RRC) 连接管理、移动性 软件(CPU) 控制面,数据量小

这里有个关键点:软硬件之间的接口定义。硬件加速器怎么跟CPU通信?用寄存器、DMA还是共享内存?我建议用描述符队列的方式。CPU往队列里写任务描述符,硬件自动读取并执行,完成后通过中断通知CPU。这样既高效又解耦。

核心观点: 协议栈拆解不是一次性的。随着工艺进步和算法演进,原来用软件实现的模块,可能会变成硬件;原来用硬件的,也可能因为灵活性需求改回软件。所以,保持架构的可扩展性,比什么都重要。

3.4 从PRD到架构设计:最后一步

有了PRD和协议栈拆解,下一步就是画架构图了。但我建议先做一件事:写一份「关键场景分析」文档。列出芯片可能遇到的最坏情况,比如:

  • 满用户同时调度时,MAC层的处理能力够不够?
  • 信道条件最差时,解码器的迭代次数会不会超标?
  • 温度最高时,功耗能不能压住?

这些场景分析,能帮你发现PRD中遗漏的约束。我曾经在一个项目中,客户说「支持256QAM」,但我们没考虑高阶调制对EVM的要求,结果射频前端设计不达标,最后只能降阶使用。嗯,这个教训挺深刻的。

好了,需求分析和规格定义就聊到这里。下一章我们讲架构设计,到时候会拿一个具体的通信芯片做例子,从PRD一步步推导出微架构。到时候见。