一句话结论(先给)
IO 是逻辑接口概念,PAD 是物理实现单元;
IO 决定"功能",PAD 决定"能不能安全地连到芯片外面"。
1️⃣ 芯片视角的三层结构(非常重要)
┌──────────────┐
│ Core Logic │ ← RTL / SoC / IP
│ (内部逻辑) │
└──────┬───────┘
│ ← 内部信号(a / y / oe / ie)
┌──────▼───────┐
│ IO Cell │ ← IO 标准 + 驱动 + 接收
│ (IO Buffer) │
└──────┬───────┘
│ ← pad pin
┌──────▼───────┐
│ PAD │ ← 物理引脚 + ESD
│ (Bond Pad) │
└──────┬───────┘
│
Package Pin
│
PCB
2️⃣ IO 和 PAD 各自负责什么
🔹 IO(逻辑 / 电气功能)
IO 是"功能接口"
- 输入 / 输出 / 双向
- 上拉 / 下拉
- 驱动能力
- 施密特触发
- Slew rate
- 三态控制
👉 通常体现为:
a / y / oe / ie / pe / ps / ds- RTL/网表层面可见
🔹 PAD(物理 / 可靠性)
PAD 是"物理接触点"
- 焊盘尺寸
- ESD 防护
- Latch-up 防护
- 封装连接(bond / bump)
- DRC / LVS 关注点
👉 通常体现为:
pad引脚- layout 里可见
- 不关心逻辑 0/1
3️⃣ 为什么不能"没有 PAD"
如果你只留 IO buffer,不留 PAD:
❌ 没地方 bond
❌ 没 ESD
❌ LVS / DRC 不通过
❌ 芯片一上电就可能被静电打死
👉 PAD 是流片必需件
4️⃣ 为什么不能"只有 PAD"
如果你只有 PAD,不要 IO buffer:
❌ 没驱动能力
❌ 没输入门限
❌ 没三态
❌ 信号不可控
👉 PAD 只是"铜块",不懂 0 和 1
5️⃣ 实际库里为什么常常"IO + PAD 合在一个 cell"
这类 cell 本质是:
IO Buffer + PAD + ESD + 配置逻辑 的一体化实现
所以你看到:
A / Y / OE / IE→ IO 逻辑接口PAD→ 物理焊盘PE / PS→ Pull enable / selectDS0 / DS1→ Drive strengthIS / RTO / SNS→ 输入路径 / 施密特 / 终端SR→ Slew rate
👉 不是没有 PAD,而是 PAD 已经"包在 IO cell 里了"
6️⃣ IO ≠ PAD ≠ Pin(这是很多人混的点)
| 名称 | 层级 | 含义 |
|---|---|---|
| IO | 逻辑/电气 | 功能接口 |
| PAD | 物理 | 芯片上的焊盘 |
| Pin | 封装 | 芯片外部引脚 |
IO signal → PAD → Package Pin → PCB
7️⃣ SoC / FPGA 里你看到的"IO"是什么
FPGA(Vivado)
-
你约束的是 IO
-
工具自动:
- 选 IOBUF
- 选 PAD
- 插 ESD
- 做封装映射
ASIC
- 你要显式实例化 IO / PAD
- 或用 foundry 提供的 wrapper
8️⃣ 为什么 RTL 里一般看不到 PAD
-
PAD 属于 物理单元
-
RTL 只描述功能
-
PAD 在:
- netlist
- floorplan
- IO ring
阶段引入
🔟 一句话终极总结
IO 决定信号"怎么用",PAD 决定信号"能不能活着出芯片"。
在 ASIC 中二者强耦合,在 FPGA 中被工具自动隐藏。