DESIGN TRACK · 第 13 章

从需求到芯片架构

把一句产品想法变成可验证、可实现的硬件规格

建议用时:4-6 小时本章目标:完成一份小型芯片规格书:一个带 APB 寄存器接口、FIFO 和中断输出的流式数据处理器。后续五章都围绕它推进,最终得到可交付的版图文件。

先选对第一颗芯片

第一次独立设计不应从 CPU 或 AI 加速器开始。一个合适的练习项目应当拥有真实芯片的完整边界,但内部逻辑足够小:时钟和复位、总线从设备、配置寄存器、数据通路、状态机、存储、异常和中断。本文采用一个“可编程流式累加器”:软件通过 APB 写入控制寄存器,数据从输入握手接口进入,芯片对一批数据求和,结果从输出接口送出,并在完成或溢出时触发中断。

先固定成功标准:支持 32 位数据;批长度为 1-256;输入、输出都使用 valid/ready 握手;系统时钟目标 100 MHz;同步低有效复位;结果采用 40 位避免常见溢出;寄存器总线与数据通路处于同一时钟域。面积和功耗先记录但不做激进优化。这些句子会直接变成验证计划与时序约束。

把自然语言改写成接口契约

芯片设计中最昂贵的错误往往不是 RTL 语法错,而是两个模块对同一句话理解不同。接口规格必须回答:信号方向、位宽、采样边沿、空闲值、背压规则、复位行为和错误处理。valid/ready 的核心契约是:只有在上升沿同时看到 valid && ready 时才发生一次传输;发送方在传输前不得因为 ready 为 0 而撤回 valid;接收方施加背压时,发送方必须保持数据稳定。

// 数据输入接口
input  logic        in_valid;
output logic        in_ready;
input  logic [31:0] in_data;

// 结果输出接口
output logic        out_valid;
input  logic        out_ready;
output logic [39:0] out_sum;

再画寄存器表。建议至少定义 CONTROL(start、irq_enable)、LENGTH、STATUS(busy、done、overflow)和 RESULT。为每一位写清 RW/RO/W1C 属性、复位值以及非法写入的处理方式。寄存器表是软件、RTL 和验证三方共同使用的契约。

做预算,而不是许愿

架构阶段要建立四本账。吞吐账:若每周期接收一个 32 位样本,100 MHz 下峰值为 400 MB/s。延迟账:一批 N 个样本至少需要 N 次有效传输,再加启动与输出延迟。存储账:是否必须缓存整批数据?本项目可以边到边累加,只需累加寄存器和计数器。位宽账:256 个无符号 32 位数的最坏结果需要 40 位,因为 32 + log2(256) = 40。

功耗、面积、性能(PPA)相互牵制。并行放置多个加法器能提升吞吐,却增加面积、布线和开关功耗;降频可能放松时序,却延长任务时间。第一版应选结构最简单、最容易证明正确的架构,综合报告出来后再优化。

本章交付物

  • 一页方框图:APB 寄存器块、控制 FSM、累加数据通路、中断逻辑。
  • 端口表与寄存器表,包含复位值和每个握手周期的规则。
  • 至少 10 条可验证需求,例如“busy 时再次 start 不改变当前任务”。
  • PPA 初始目标、时钟频率、工艺库假设和明确不做的功能。
通过标准:另一个人仅凭规格就能写出兼容的测试平台;任何输入序列都能从文档判断预期输出。

工具与延伸资料

← 第 12 章:架构路线比较