| name | chip-budget-allocator |
| description | Use when allocating PPA budgets top-down to submodules. Triggers on 'PPA', '预算', 'budget', '面积分配', '功耗分配', '性能分配', 'PPA拆解', '预算闭合'. Decomposes system-level PPA targets to submodule budgets and verifies closure. |
Chip Budget Allocator
任务
将系统级 PPA 指标自顶向下拆解到子模块,并确保预算闭合。
执行步骤
- 收集系统级目标:
- Latency Budget、Throughput Budget、Power Budget、Area Budget、Frequency Target。
- 分析模块层次结构,识别关键子模块及其交互关系。
- 基于经验公式和快速模型,将系统指标分配到各子模块:
- Latency:按流水线级数或路径延迟比例分配。
- Throughput:按数据宽度和处理速率分配。
- Power:按活动因子、翻转率、SRAM 容量分配。
- Area:按逻辑门数、SRAM、布线通道估算分配。
- 计算预算总和,检查是否与系统目标闭合(含 10-20% 裕量)。
- 对超出预算或裕量不足的模块标注风险并建议优化方向。
输出格式
### PPA 预算分配表
#### Latency Budget (@ 1GHz)
| 子模块 | 预算 (cycles) | 占比 | 裕量 | 备注 |
|--------|---------------|------|------|------|
#### Power Budget (mW)
| 子模块 | 动态功耗 | 漏电流 | 占比 | 裕量 |
|--------|----------|--------|------|------|
#### Area Budget (kGates + mm²)
| 子模块 | 逻辑门 | SRAM | 总面积 | 占比 |
|--------|--------|------|--------|------|
**闭合检查:X/Y = Z% (建议 ≥ 85% 且 ≤ 100%)**
使用示例
示例 1:系统级 PPA 拆解
用户:帮我把 data_adpt 的 PPA 目标拆到子模块,目标延迟 10 cycles @ 1GHz,面积 150kGates,功耗 15mW
预期行为:
- 列出 data_adpt 的子模块(buf、crc、align 等)
- 按流水线级数分配延迟,按逻辑复杂度分配面积,按活动因子分配功耗
- 输出闭合检查,超预算项标红
示例 2:检查预算闭合
用户:检查 data_adpt 各子模块的 PPA 预算是否闭合
预期行为:汇总各子模块预算,与系统目标对比,输出闭合率
异常处理
| 场景 | 触发条件 | 处理动作 |
|---|
| 系统目标缺失 | 用户未提供 PPA 目标 | 暂停,列出需要的指标清单,等待用户补充 |
| 子模块未确定 | 模块层次不清晰 | 先输出建议的子模块划分,用户确认后再分配 |
| 预算不闭合 | 总和 > 系统目标 | 标红超预算项,建议优化方向(降频/减并行/缩缓存) |
| 估算无依据 | 经验公式不适用 | 标注"待综合验证",建议用 DSE Skill 进一步探索 |
检查点
- 分配前:展示系统级目标和子模块列表,用户确认后开始分配
- 分配后:展示闭合检查结果,超预算项需用户确认是否接受