with one click
architecture-design
芯片架构设计技能 - 从需求定义到模块划分,完整指导芯片架构开发
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
芯片架构设计技能 - 从需求定义到模块划分,完整指导芯片架构开发
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
物理设计全流程技能 - 从floorplan到GDSII,完整数字芯片物理设计指导
EDA工具脚本开发技能 - TCL/Python/Makefile 自动化流程最佳实践
功能安全分析技能 - FMEDA 分析、安全机制设计、ISO 26262 符合
静态时序分析技能 - 时序诊断、收敛优化、签收标准
UVM 验证方法论技能 - 从验证计划到功能覆盖率,完整 UVM 验证平台开发
功耗分析和优化技能 - 功耗计算、IR降分析、电迁移分析、低功耗优化
| name | architecture-design |
| description | 芯片架构设计技能 - 从需求定义到模块划分,完整指导芯片架构开发 |
| description.zh | 芯片架构设计技能 - 从需求定义到模块划分,完整指导芯片架构开发 |
| origin | ICER |
| categories | architecture |
当用户需要进行芯片架构设计时,启用此技能。此技能提供芯片架构设计的完整指导,从需求定义到模块划分,遵循工业界最佳实践。
| 参数 | 典型值 | 说明 |
|---|---|---|
| 模块大小 | 10k-100k 门 | 单个模块大小 |
| 层次深度 | 3-4 层 | 模块层次深度 |
| 时钟域数量 | 3-10 个 | 时钟域数量 |
| 复位域数量 | 2-5 个 | 复位域数量 |
| 电源域数量 | 2-4 个 | 电源域数量 |
| 面积余量 | 10-15% | 预留面积余量 |
| 功耗余量 | 15-20% | 预留功耗余量 |
| 设计目标 | 面积优化 | 性能优化 | 功耗优化 |
|---|---|---|---|
| 逻辑设计 | 资源共享 | 流水线 | 门控时钟 |
| 存储器 | 单端口 | 多端口 | 低漏电 |
| 总线 | 窄总线 | 宽总线 | 按需唤醒 |
| 时钟 | 少时钟域 | 多时钟域 | 时钟门控 |
| IP 类型 | 评估周期 | 授权费用 | 集成周期 |
|---|---|---|---|
| CPU | 1-2 月 | $50k-500k | 2-4 月 |
| DDR 控制器 | 1 月 | $20k-100k | 1-2 月 |
| PCIe 控制器 | 1 月 | $20k-100k | 1-2 月 |
| USB 控制器 | 2 周 | $10k-50k | 2-4 周 |
| 以太网 MAC | 2 周 | $10k-50k | 2-4 周 |
| PLL | 2 周 | $5k-20k | 1-2 周 |
诊断步骤:
1. 分析性能瓶颈
2. 检查总线带宽
3. 检查存储器延迟
4. 检查流水线深度
判断标准:
| 性能差距 | 判断 | 行动 |
|---|---|---|
| < 10% | 可接受 | 微调优化 |
| 10-30% | 需优化 | 流水线/并行 |
| > 30% | 架构问题 | 重新设计 |
根本原因定位:
| 根本原因 | 诊断特征 | 解决方案 |
|---|---|---|
| 总线带宽不足 | 总线利用率 > 80% | 增加总线宽度/增加总线 |
| 存储器延迟大 | 命中率低 | 增加缓存/预取 |
| 流水线浅 | 关键路径长 | 增加流水级 |
| 模块串行执行 | 利用率低 | 并行化设计 |
诊断步骤:
1. 分析面积分布
2. 识别面积大户
3. 检查是否有优化空间
4. 检查是否有冗余功能
根本原因定位:
| 根本原因 | 诊断特征 | 解决方案 |
|---|---|---|
| 存储器过大 | 存储器占比 > 50% | 压缩算法/减少容量 |
| 逻辑冗余 | 有未使用功能 | 删除冗余功能 |
| IP 选择不当 | IP 面积大 | 更换 IP |
| 设计过度 | 安全裕度过大 | 减少冗余 |
诊断步骤:
1. 分析功耗分布
2. 识别功耗大户
3. 检查时钟门控率
4. 检查电源域划分
根本原因定位:
| 根本原因 | 诊断特征 | 解决方案 |
|---|---|---|
| 时钟门控率低 | < 70% | 增加门控条件 |
| 电源域过少 | 无可关断域 | 增加电源域 |
| 漏电功耗高 | 静态功耗占比高 | 降低电压/使用低漏电库 |
| 活动因子高 | 动态功耗高 | 优化算法/减少翻转 |
在开始设计之前,必须收集并明确所有需求。
做什么: 从产品经理/系统工程师获取完整功能需求列表。
怎么做:
输出: 功能需求列表表格
| 功能 ID | 功能名称 | 描述 | 优先级 | 来源 |
|---|---|---|---|---|
| F001 | PCIe Gen4 x4 | 支持 PCIe Gen4 x4,带宽 64Gbps | P0 | 产品需求 |
| F002 | DDR4 控制器 | 支持 DDR4-3200,最大 16GB | P0 | 产品需求 |
| F003 | 安全启动 | 支持 secure boot | P1 | 安全需求 |
做什么: 明确性能指标,这些直接影响架构决策。
怎么做:
输出: 性能需求表格
| 指标 | 数值 | 来源 |
|---|---|---|
| 目标频率 | 500MHz | 系统需求 |
| PCIe 峰值带宽 | 64 Gbps | 产品需求 |
| DDR 延迟 | < 100ns (平均) | 系统需求 |
| 功耗 | < 5W | 产品需求 |
做什么: 明确面积和功耗限制,这些是架构的硬约束。
怎么做:
输出: PPA 预算分配表
| 子系统 | 面积预算 (mm²) | 动态功耗 (mW) | 静态功耗 (mW) |
|---|---|---|---|
| CPU | 2.0 | 500 | 50 |
| DDR 控制器 | 1.5 | 300 | 30 |
| PCIe | 1.0 | 200 | 20 |
| 其他 | 0.5 | 100 | 10 |
| 总计 | 5.0 | 1100 | 110 |
做什么: 明确所有片外接口和片上总线接口。
怎么做:
输出: 接口需求列表
| 接口名称 | 类型 | 协议 | 宽度 | 频率 |
|---|---|---|---|---|
| PCIe | 片外 | PCIe Gen4 | x4 | 250MHz |
| DDR | 片外 | DDR4-3200 | 64-bit | 400MHz |
| AXI 主 | 片上 | AXI4 | 128-bit | 500MHz |
| AXI 从 | 片上 | AXI4-Lite | 32-bit | 500MHz |
做什么: 明确功能安全等级和 DFT 需求。
怎么做:
输出: 安全和测试需求
| 需求类型 | 要求 | 来源 |
|---|---|---|
| 功能安全 | ASIL-B | ISO 26262 |
| DFT 覆盖率 | > 98% | 公司标准 |
| 测试时间 | < 1s | 量产需求 |
做什么: 识别需要外购或复用的 IP 模块。
怎么做:
输出: IP 需求列表
| 模块 | 来源选项 | 推荐来源 | 理由 |
|---|---|---|---|
| CPU | 外购/自研 | 外购 ARM/RISC-V | 开发周期短 |
| DDR 控制器 | 外购 | Synopsys/Cadence | 协议复杂 |
| PCIe 控制器 | 外购 | Synopsys | 协议复杂 |
| UART | 复用/自研 | 复用 | 已有成熟设计 |
| 特殊加速器 | 自研 | 自研 | 无合适 IP |
做什么: 需求文档评审,所有相关方签字确认。
怎么做:
检查清单:
需求明确后,首先定义顶层接口。
做什么: 确定芯片与外部世界的所有接口。
怎么做:
输出: 顶层接口列表
芯片顶层接口:
├── 电源接口
│ ├── VDD (数字核心电源) × 20
│ ├── VDDIO (IO电源) × 10
│ ├── VSS (地) × 30
│ └── VDDA (模拟电源) × 5
├── 时钟接口
│ ├── CLK_REF (参考时钟输入)
│ └── CLK_OUT (时钟输出,可选)
├── 复位接口
│ └── RST_N (复位输入)
├── 功能接口
│ ├── PCIe (x4, 差分)
│ ├── DDR (64-bit + ECC)
│ ├── UART (调试)
│ └── JTAG (测试)
└── GPIO
└── GPIO[15:0] (通用IO)
做什么: 确定内部模块之间的通信协议。
怎么做:
总线协议选择参考:
| 协议 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|
| AXI4 | 高带宽存储器映射 | 乱序、QoS、区域保护 | 协议复杂、面积大 |
| AXI4-Lite | 寄存器配置 | 简单、轻量 | 低带宽 |
| AXI4-Stream | 数据流 | 适合视频/网络 | 不支持随机访问 |
| AHB | 中带宽系统 | 简单 | 不支持乱序 |
| APB | 低带宽外设 | 非常简单 | 低带宽 |
输出: 总线拓扑图
┌─────────────┐
│ CPU │
└──────┬──────┘
│ AXI4 主
┌──────┴──────┐
│ AXI 互联 │
└──────┬──────┘
┌───────────────┼───────────────┐
│ │ │
┌─────┴─────┐ ┌─────┴─────┐ ┌─────┴─────┐
│ DDR 控制器 │ │ PCIe 控制器│ │ 外设桥 │
│ (AXI 从) │ │ (AXI 从) │ │ (AXI 从) │
└───────────┘ └───────────┘ └─────┬─────┘
│ APB
┌──────┴──────┐
│ UART/SPI... │
└─────────────┘
做什么: 确定时钟源和复位策略。
怎么做:
输出: 时钟复位规划表
| 时钟名称 | 频率 | 来源 | 用途 |
|---|---|---|---|
| clk_sys | 500MHz | 内部 PLL | 系统主时钟 |
| clk_ddr | 400MHz | 内部 PLL | DDR 控制器 |
| clk_pcie | 250MHz | 内部 PLL | PCIe 控制器 |
| clk_ref | 25MHz | 外部晶振 | 参考时钟 |
| 复位名称 | 来源 | 复位域 |
|---|---|---|
| rst_n | 外部引脚 | 全局复位 |
| por_n | 上电检测 | 上电复位 |
| wdt_rst | 看门狗 | 安全复位 |
做什么: 确定电源域划分和电压。
怎么做:
输出: 电源域规划图
电源域规划:
├── VDD_ALWAYS (1.0V, 始终上电)
│ ├── CPU
│ ├── 中断控制器
│ └── 电源管理模块
├── VDD_CORE (1.0V, 可关断)
│ ├── DDR 控制器
│ ├── PCIe 控制器
│ └── 其他功能模块
└── VDD_IO (3.3V, 始终上电)
└── 所有 IO
检查清单:
顶层接口定义完成后,进行模块划分。
做什么: 把系统分解成子系统,子系统分解成模块,模块分解成单元。
怎么做:
分解原则:
| 原则 | 说明 | 检查方法 |
|---|---|---|
| 单一职责 | 每个模块只做一件事 | 能用一句话描述模块功能 |
| 松耦合 | 模块间依赖最少 | 接口数量少 |
| 高内聚 | 模块内部紧密关联 | 修改只影响一个模块 |
| 大小适中 | 每个模块 < 100k 门 | 门级估算 |
输出: 模块层次树
SoC 顶层
├── CPU 子系统
│ ├── CPU 核心 (RISC-V)
│ ├── 指令缓存
│ ├── 数据缓存
│ └── 中断控制器
├── 存储子系统
│ ├── DDR 控制器
│ ├── SRAM 控制器
│ └── DMA 引擎
├── 外设子系统
│ ├── UART 控制器
│ ├── SPI 控制器
│ ├── I2C 控制器
│ └── GPIO 控制器
├── 高速接口子系统
│ ├── PCIe 控制器
│ │ ├── PCIe PHY
│ │ ├── PCIe MAC
│ │ └── NVMe 协议层
│ └── 以太网控制器
└── 系统控制子系统
├── 时钟管理
├── 复位管理
├── 电源管理
└── JTAG TAP
做什么: 为每个模块编写功能描述。
怎么做:
输出: 模块功能描述模板
## 模块名称:DDR 控制器
### 功能描述
DDR 控制器负责管理 DDR4 存储器的读写访问,提供给 CPU 和 DMA 引擎统一的存储器访问接口。
### 主要特性
- 支持 DDR4-3200
- 支持 64-bit 数据宽度 + 8-bit ECC
- 支持突发长度 8
- 支持读写优先级可配置
- 支持低功耗模式
### 输入接口
| 接口名 | 类型 | 宽度 | 描述 |
|--------|------|------|------|
| clk | 时钟 | 1 | 控制器时钟 |
| rst_n | 复位 | 1 | 异步复位 |
| axi_aw* | AXI4 | - | AXI 写地址通道 |
| axi_w* | AXI4 | - | AXI 写数据通道 |
| axi_ar* | AXI4 | - | AXI 读地址通道 |
### 输出接口
| 接口名 | 类型 | 宽度 | 描述 |
|--------|------|------|------|
| axi_b* | AXI4 | - | AXI 写响应通道 |
| axi_r* | AXI4 | - | AXI 读数据通道 |
| ddr_* | DDR4 | - | DDR 物理接口 |
做什么: 定义模块之间的通信接口。
怎么做:
接口设计原则:
| 原则 | 说明 |
|---|---|
| 使用标准协议 | 优先使用 AXI/APB/AHB 等标准协议 |
| 握手机制 | 必须有 valid/ready 握手 |
| 错误处理 | 定义错误响应机制 |
| 文档化 | 每个接口都有详细文档 |
✅ 好的接口设计:ready/valid 双向握手
// 发送方接口
output logic o_valid, // 数据有效
output logic [31:0] o_data, // 数据
input logic i_ready, // 接收方可以接收
// 接收方接口
input logic i_valid, // 数据有效
input logic [31:0] i_data, // 数据
output logic o_ready, // 可以接收数据
❌ 不好的接口设计:
做什么: 把总面积预算分配到每个模块。
怎么做:
输出: 面积预算表
| 模块 | 面积预算 (mm²) | 估算依据 | 风险 |
|---|---|---|---|
| CPU 核心 | 0.8 | 参考设计 | 低 |
| DDR 控制器 | 0.5 | 类似项目 | 低 |
| PCIe 控制器 | 0.4 | 类似项目 | 低 |
| ... | ... | ... | ... |
| 总计 | 4.5 | ||
| 余量 | 0.5 | 10% | |
| 总计+余量 | 5.0 |
检查清单:
对于需要外购的 IP,进行选型评估。
做什么: 评估候选 IP 供应商。
评估维度:
| 维度 | 权重 | 评估内容 |
|---|---|---|
| 技术成熟度 | 30% | IP 是否经过量产验证 |
| 技术支持 | 20% | 技术支持响应速度和质量 |
| 文档质量 | 15% | 文档是否完整清晰 |
| 授权费用 | 15% | 是否在预算内 |
| 版税 | 10% | 版税是否可接受 |
| 交付周期 | 10% | 是否满足项目时间 |
供应商评估表:
| 供应商 | 技术成熟度 | 技术支持 | 文档质量 | 授权费用 | 版税 | 交付周期 | 总分 |
|---|---|---|---|---|---|---|---|
| 供应商A | 9/10 | 8/10 | 9/10 | 7/10 | 8/10 | 9/10 | 8.3 |
| 供应商B | 8/10 | 9/10 | 8/10 | 8/10 | 7/10 | 8/10 | 8.1 |
| 供应商C | 7/10 | 7/10 | 7/10 | 9/10 | 9/10 | 7/10 | 7.6 |
做什么: 评估 IP 的技术指标。
评估内容:
| 评估项 | 说明 | 方法 |
|---|---|---|
| 功能完整性 | 是否满足所有功能需求 | 功能检查表 |
| 性能指标 | 是否满足性能要求 | 数据手册分析 |
| 面积 | 是否在面积预算内 | 参考设计面积 |
| 功耗 | 是否在功耗预算内 | 参考设计功耗 |
| 工艺兼容 | 是否支持目标工艺 | IP 工艺支持列表 |
| 总线接口 | 是否支持目标总线协议 | 接口检查 |
技术评估表:
| 评估项 | 需求 | IP A | IP B | IP C |
|---|---|---|---|---|
| 功能完整性 | 100% | 95% | 100% | 90% |
| 频率 | 500MHz | 600MHz | 500MHz | 450MHz |
| 面积 | < 1mm² | 0.8mm² | 1.2mm² | 0.9mm² |
| 功耗 | < 100mW | 80mW | 120mW | 90mW |
| 工艺支持 | 28nm | 支持 | 支持 | 不支持 |
| 总线接口 | AXI4 | 支持 | 支持 | 支持 |
做什么: 评估 IP 集成的复杂度。
评估内容:
| 评估项 | 说明 |
|---|---|
| 接口复杂度 | IP 接口是否标准,是否需要适配 |
| 配置复杂度 | IP 配置参数是否合理 |
| 验证复杂度 | IP 是否提供验证组件 |
| 文档完整度 | 集成指南是否详细 |
| 集成周期 | 预估集成时间 |
集成风险评估:
| 风险 | 概率 | 影响 | 缓解措施 |
|---|---|---|---|
| 接口不匹配 | 中 | 高 | 提前确认接口协议 |
| 配置错误 | 高 | 中 | 详细阅读文档 |
| 验证困难 | 中 | 高 | 购买 VIP |
| 性能不达标 | 低 | 高 | 预留性能余量 |
做什么: 根据评估结果选择 IP。
决策流程:
1. 排除不满足基本需求的 IP
2. 对剩余 IP 进行综合评分
3. 考虑风险因素
4. 选择综合评分最高的 IP
5. 记录决策理由
IP 选型决策记录:
## IP 选型决策记录
### 决策 ID: IP-001
### 决策内容: 选择供应商 A 的 DDR 控制器 IP
### 候选 IP:
- IP A: 供应商 A DDR4 控制器
- IP B: 供应商 B DDR4 控制器
- IP C: 供应商 C DDR4 控制器
### 评估结果:
| 维度 | IP A | IP B | IP C |
|------|------|------|------|
| 技术成熟度 | 9 | 8 | 7 |
| 性能 | 8 | 7 | 6 |
| 面积 | 8 | 6 | 8 |
| 功耗 | 9 | 7 | 8 |
| 授权费用 | 7 | 8 | 9 |
| 集成复杂度 | 8 | 8 | 7 |
| **总分** | **8.2** | **7.3** | **7.5** |
### 选择理由:
IP A 在技术成熟度和功耗方面最优,虽然授权费用略高,但整体风险最低。
### 决策人: XXX
### 决策日期: 2024-01-15
IP 选型检查清单:
模块划分完成后,进行时钟域规划。
做什么: 确定需要多少个时钟域。
怎么做:
时钟域划分原则:
| 原则 | 说明 |
|---|---|
| 频率不同 | 不同频率必须不同时钟域 |
| 来源不同 | 不同来源时钟必须不同时钟域 |
| 关断需求 | 需要独立关断的模块单独时钟域 |
| 数量适中 | 时钟域不要太多,增加复杂度 |
做什么: 确定时钟域之间的同步/异步关系。
怎么做:
输出: 时钟域关系图
时钟域规划:
clk_sys (500MHz) clk_ddr (400MHz) clk_pcie (250MHz)
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│ CPU │───异步FIFO───│ DDR │───异步FIFO──│ PCIe │
│ 缓存 │ │ 控制器 │ │ 控制器 │
│ 外设 │ │ │ │ │
└─────────┘ └─────────┘ └─────────┘
│ │ │
└──────────────同步────────┴───────────异步─────────┘
做什么: 为每个跨时钟域信号确定同步方法。
怎么做:
| 数据类型 | 同步方法 | 适用场景 |
|---|---|---|
| 单比特控制信号 | 两级同步器 | 慢时钟域到快时钟域 |
| 单比特脉冲 | 脉冲展宽 + 两级同步 | 快时钟域到慢时钟域 |
| 多比特数据 | 异步 FIFO | 数据总线 |
| 多比特控制 | 握手协议 | 请求/响应信号 |
输出: 跨时钟域信号列表
| 信号名 | 源时钟域 | 目标时钟域 | 同步方法 | 负责模块 |
|---|---|---|---|---|
| cpu_req | clk_sys | clk_ddr | 异步FIFO | DDR控制器 |
| ddr_ack | clk_ddr | clk_sys | 异步FIFO | DDR控制器 |
| pcie_irq | clk_pcie | clk_sys | 两级同步 | PCIe控制器 |
做什么: 确定哪些模块需要时钟门控。
怎么做:
输出: 时钟门控规划表
| 模块 | 是否门控 | 门控条件 | 预计功耗节省 |
|---|---|---|---|
| CPU | 否 | - | - |
| DDR 控制器 | 是 | 空闲 100ns | 20% |
| PCIe 控制器 | 是 | 无连接 | 30% |
| UART | 是 | 空闲 | 5% |
检查清单:
时钟域规划完成后,进行复位域规划。
做什么: 确定整个项目使用同步复位还是异步复位。
同步复位 vs 异步复位:
| 特性 | 同步复位 | 异步复位 |
|---|---|---|
| 复位时机 | 需要时钟 | 不需要时钟 |
| STA 影响 | 友好 | 需要特殊处理 |
| 面积 | 略大 | 略小 |
| 毛刺 | 无 | 复位释放可能有毛刺 |
项目级规则:
⚠️ 整个项目保持一致!要么全同步复位,要么全异步复位,不要混合。
选择建议:
做什么: 确定哪些模块需要独立复位。
怎么做:
输出: 复位域规划图
复位域规划:
全局复位 (rst_n)
│
├── 复位域 0: 核心逻辑
│ ├── CPU
│ ├── 缓存
│ └── 总线互联
│
├── 复位域 1: 外设
│ ├── UART
│ ├── SPI
│ └── GPIO
│
└── 复位域 2: 高速接口(独立复位)
├── DDR 控制器
└── PCIe 控制器
安全复位 (wdt_rst)
│
└── 复位域 3: 安全模块
├── 看门狗
└── 错误监控
做什么: 确定复位释放顺序。
怎么做:
复位序列示例:
上电序列:
1. 上电复位 (por_n) 有效
2. 等待电源稳定
3. 等待时钟稳定
4. 释放核心复位域
5. 等待 100us
6. 释放外设备位域
7. 等待 100us
8. 释放高速接口复位域
9. 开始正常工作
如果使用异步复位,必须同步释放:
// 异步复位,同步释放电路
module reset_sync (
input wire i_clk, // 时钟
input wire i_async_rst_n,// 异步复位输入
output logic o_sync_rst_n // 同步后的复位输出
);
(* async_reg = "true" *) logic r_rst1;
(* async_reg = "true" *) logic r_rst2;
always_ff @(posedge i_clk or negedge i_async_rst_n) begin
if (!i_async_rst_n) begin
r_rst1 <= 1'b0;
r_rst2 <= 1'b0;
end else begin
r_rst1 <= 1'b1;
r_rst2 <= r_rst1;
end
end
assign o_sync_rst_n = r_rst2;
endmodule
检查清单:
做什么: 为每个模块估算存储器容量。
怎么做:
存储器容量计算公式:
FIFO 深度 = 速率差 × 突发长度 × 安全系数(1.5~2)
缓存容量 = 带宽要求 × 延迟容忍时间
缓冲容量 = 最大突发长度 × 数据宽度
输出: 存储器需求表
| 模块 | 存储器名称 | 宽度 | 深度 | 类型 | ECC |
|---|---|---|---|---|---|
| CPU | 指令缓存 | 256-bit | 512 | SRAM | 否 |
| CPU | 数据缓存 | 256-bit | 512 | SRAM | 否 |
| DDR控制器 | 写缓冲 | 64-bit | 32 | FIFO | 否 |
| PCIe | 收发缓冲 | 128-bit | 64 | FIFO | 是 |
做什么: 为每个存储器选择合适的类型。
存储器类型选择:
| 类型 | 特点 | 适用场景 |
|---|---|---|
| 单端口 SRAM | 面积最小 | 只读或只写 |
| 伪双端口 SRAM | 可同时读写 | 大多数场景 |
| 真双端口 SRAM | 可同时读写同地址 | 面积大,特殊需求 |
| 单端口 ROM | 只读 | 启动代码、常数表 |
| 寄存器堆 | 最灵活,容量小 | 小容量存储 |
做什么: 确定存储器在芯片中的物理位置。
怎么做:
检查清单:
做什么: 确定哪些模块可以独立关断电源。
怎么做:
电源域划分原则:
| 原则 | 说明 |
|---|---|
| 始终上电 | 安全模块、电源管理、唤醒逻辑 |
| 可关断 | 大功耗模块、不常用模块 |
| 独立电压 | 不同性能需求的模块 |
做什么: 规划电源分布网络。
怎么做:
电源网络检查:
做什么: 在不同电压域和可关断域之间插入特殊单元。
| 场景 | 需要的单元 |
|---|---|
| 高电压域 → 低电压域 | 电平转换器 |
| 低电压域 → 高电压域 | 电平转换器 |
| 可关断域 → 始终上电域 | 隔离单元 |
| 始终上电域 → 可关断域 | 保持寄存器 |
检查清单:
做什么: 确定扫描链数量和长度。
怎么做:
做什么: 为每个存储器规划 BIST。
怎么做:
做什么: 规划 JTAG TAP 控制器。
怎么做:
检查清单:
做什么: 提出多个架构候选方案。
怎么做:
做什么: 对每个候选方案进行评估。
评估维度:
| 维度 | 评估方法 | 权重 |
|---|---|---|
| 可验证性 | 是否容易搭建验证环境 | 15% |
| 可实现性 | 是否满足 PPA 预算 | 25% |
| 可调试性 | 是否有足够观测点 | 10% |
| 可扩展性 | 是否方便未来扩展 | 10% |
| 功耗 | 是否满足功耗预算 | 15% |
| 面积 | 是否满足面积预算 | 15% |
| 时序 | 能否达到目标频率 | 10% |
做什么: 根据评估结果选择最终方案。
怎么做:
输出: 架构决策记录
## 架构决策记录
### 决策 ID: ARCH-001
### 决策内容: 选择方案 A 作为最终架构
### 候选方案:
- 方案 A: 集中式总线架构
- 方案 B: 分布式网状架构
- 方案 C: 混合架构
### 评估结果:
| 维度 | 方案A | 方案B | 方案C |
|------|-------|-------|-------|
| 可验证性 | 4 | 3 | 3 |
| 可实现性 | 5 | 3 | 4 |
| 可调试性 | 4 | 4 | 3 |
| 可扩展性 | 3 | 5 | 4 |
| 功耗 | 4 | 3 | 3 |
| 面积 | 5 | 3 | 4 |
| 时序 | 4 | 4 | 4 |
| **总分** | **4.2** | **3.5** | **3.6** |
### 选择理由:
方案 A 在可实现性和面积方面最优,虽然可扩展性略逊于方案 B,但满足当前需求且风险最低。
### 决策人: XXX
### 决策日期: 2024-01-15
架构设计完成后,必须输出完整的架构文档。
内容:
内容(每个模块):
内容:
内容:
内容:
架构设计交付前必须完成:
❌ 过度设计:现在就添加十年后才需要的功能 ❌ 设计不足:没有考虑未来扩展,一年后就要重构 ❌ 模糊接口:接口定义不清晰,集成时才发现问题 ❌ 忽略验证:架构不容易验证,后期验证找不到 bug ❌ 忽略后端:架构布局完全不考虑后端实现 ❌ 不记录决策:做了决策但不记录理由,后面忘记为什么这么做
rtl-designer 代理实现 RTLverification-engineer 代理开发验证平台functional-safety-engineer 代理进行安全分析