第二章:工艺库准备——多阈值单元库、电平转换器与隔离单元

各位同学,咱们今天聊聊多电压域设计的第一步——工艺库准备。说实话,这一步看着简单,但我在好几个项目里都吃过亏。库没准备好,后面跑仿真、做时序,全是坑。

多电压域设计,说白了就是芯片里不同模块跑不同电压。比如核心逻辑用0.8V省电,I/O接口用1.8V保证驱动能力。那问题来了——不同电压之间怎么通信?低电压模块怎么关断?这就引出了我们今天的主角:多阈值单元库、电平转换器库、隔离单元库。

多电压域工艺库准备知识体系 多阈值单元库 HVT / SVT / LVT 电平转换器库 Level Shifter 隔离单元库 Isolation Cell 特性对比 • HVT:低漏电、慢速度 • SVT:平衡型 • LVT:高速度、高漏电 关键参数 • 上升/下降沿时间 • 输入/输出电平范围 • 延迟 vs 电压曲线 控制策略 • AND/OR 隔离 • 钳位电平选择 • 使能信号连接 库文件导入 → 时序模型检查 → 物理验证 → 准备就绪

2.1 多阈值单元库:HVT / SVT / LVT

先说说多阈值单元。你想想看,芯片里有些路径对速度要求极高,有些路径则可以慢一点。如果所有单元都用高速的,漏电会大得吓人。如果全用低漏电的,性能又上不去。

所以工艺厂给了我们三种选择:

  • HVT(高阈值电压):漏电最小,速度最慢。适合非关键路径。
  • SVT(标准阈值电压):折中方案。我一般用它做默认库。
  • LVT(低阈值电压):速度最快,漏电最大。只用在时序紧张的路径上。

重要提醒:多阈值单元在同一个电压域内可以混用。比如核心域用0.8V,里面可以同时有HVT和LVT的寄存器。EDA工具会自动帮你做阈值分配。

我在一个AI芯片项目里遇到过这种情况:整个芯片漏电超标30%,查了半天发现是综合时没加HVT库,所有单元都用了SVT。后来重新综合,把非关键路径全换成HVT,漏电直接降了一半。嗯,从那以后我每次建库都会再三确认阈值配置。

2.2 电平转换器库:Level Shifter

电平转换器,说白了就是电压翻译官。0.8V域的信号要传到1.8V域,电平不匹配,逻辑会出错。电平转换器就是干这个的。

我个人习惯把电平转换器分成两类:

  1. 单向电平转换器:只能从一个方向转。比如从低到高,或者从高到低。
  2. 双向电平转换器:两个方向都能转。适合I/O这类双向信号。

库文件里一般会提供多种驱动强度的版本。比如LVL_1X、LVL_2X、LVL_4X。选型时要注意:

型号 驱动强度 适用场景 面积(μm²)
LVL_1X 1倍 短距离、低负载 12.5
LVL_2X 2倍 中等距离 18.3
LVL_4X 4倍 长距离、高负载 29.7

注意:电平转换器不能放在电压域的边界上随便插。我曾经见过一个设计,电平转换器放在了低电压域里,结果输入信号摆幅不够,输出一直出错。正确做法是:电平转换器应该放在高电压域一侧,或者用专用的电源域。

2.3 隔离单元库:Isolation Cell

隔离单元,这名字听着挺玄乎,其实作用很简单——当某个电压域关断时,防止它的输出信号变成不定态(X态),影响到其他还在工作的域。

隔离单元一般有两种实现方式:

  • AND型隔离:隔离使能为低时,输出钳位到0。
  • OR型隔离:隔离使能为高时,输出钳位到1。

选哪种?看你的设计需求。如果关断域的输出是低有效信号,用OR型更合适。如果是高有效信号,用AND型。我习惯在顶层统一用AND型,配合一个反相器,这样控制逻辑更清晰。

小技巧:隔离单元的使能信号必须来自常开域(always-on domain)。如果使能信号也随着关断域一起掉电,那隔离就失效了。这个坑我踩过,后来在写UPF时专门加了一条规则来检查。

2.4 库文件导入与检查

好了,库选好了,接下来就是导入EDA工具。以华大九天的Aether工具为例,流程大概是:

# 设置库路径
set LIB_PATH /home/design/libs

# 导入多阈值库
read_lib ${LIB_PATH}/hvt.lib
read_lib ${LIB_PATH}/svt.lib  
read_lib ${LIB_PATH}/lvt.lib

# 导入电平转换器库
read_lib ${LIB_PATH}/level_shifter.lib

# 导入隔离单元库
read_lib ${LIB_PATH}/isolation_cell.lib

# 检查库一致性
check_library -all

导入之后,一定要做检查。我一般会看这几个方面:

  1. 时序模型完整性:每个单元的setup/hold时间、延迟弧是不是都定义了。
  2. 功耗模型:内部功耗、漏电功耗数据是否合理。
  3. 物理信息:单元面积、pin位置、金属层信息是否齐全。
  4. 电压兼容性:电平转换器的输入输出电平范围是否覆盖了设计中的所有电压。

核心原则:库文件是设计的基石。库有问题,后面所有工作都是白费。我建议每次导入新库后,先跑一个简单的测试用例,验证基本功能。别等到整个芯片都做好了才发现库有问题,那代价就太大了。

最后说一句,库文件检查时,重点关注warning信息。有些warning可以忽略,但有些是致命问题。比如「missing timing arc」这种,必须解决。我习惯把warning分成三类:必须修复的、建议修复的、可以忽略的。这样效率高很多。

好了,这一章的内容就到这里。库准备好了,下一章咱们就可以开始搭多电压域的物理架构了。


公众号:蓝海资料掘金营,微信deep3321