刚入行时我总纳闷,为什么老工程师调电路像有透视眼,随便改两个参数性能就上去了。后来才发现他们有个秘密武器——参数扫描。这就像给电路做全身CT,能一次性看清所有关键参数对电路的影响。
拿设计带偏置的放大器举例,电阻值差个5%可能让静态工作点飘出十万八千里。传统方法要手动改几十次参数重新仿真,而用Cadence的参数扫描功能,喝杯咖啡的功夫就能拿到所有组合的仿真结果。实测下来最实用的就是直流扫描和瞬态扫描这对组合拳:前者看电路"站得稳不稳"(静态工作点),后者看"跑得快不快"(动态响应)。
最近帮客户调试个音频放大器就踩过坑。明明直流工作点都正常,接上喇叭却出现爆音。后来用瞬态参数扫描才发现,某个偏置电阻在温度变化时会导致输出级出现微导通。这种问题不用扫描功能根本抓不到,毕竟谁会在-20℃到80℃之间手动跑上百次仿真呢?
先打开Cadence Virtuoso,新建一个最简单的共源放大器作为测试平台。关键是要把需要扫描的参数变成变量:
这时候电路还认不得这些变量,需要声明参数:
cadence复制PARAMETERS: R_bias=10k W=2u L=180n
我习惯把参数声明放在显眼位置,比如电源旁边。有个小技巧:选中参数框右键选择Display→Name and Value,这样仿真时就能实时监控变量值。
按ESC调出ADE L窗口,重点来了:
两种模式都要开启参数扫描:
这里有个隐藏技巧:勾选"Append waveform"能把所有扫描结果叠在同一窗口,对比起来特别方便。第一次用时我没注意这个选项,结果仿真完满屏都是独立窗口,找条关键曲线得像玩找不同。
跑完直流扫描会得到类似医院化验单的数据表。以偏置电阻扫描为例:
| R_bias(kΩ) | V_out(V) | I_drain(mA) | 状态判断 |
|---|---|---|---|
| 8.0 | 2.15 | 1.98 | 过驱动 |
| 10.0 | 1.82 | 1.65 | 正常 |
| 12.0 | 1.53 | 1.31 | 欠饱和 |
从表格能明显看出电阻值对工作点的影响趋势。但更直观的是看波形图:在Results Browser里选择V_out vs R_bias,这时候曲线斜率就是灵敏度。有次我发现某节点电压随电阻变化特别剧烈,一查果然是反馈环路设计有问题。
真正体现威力的是多变量扫描。比如同时扫MOS管的W和L:
这时候推荐用Cadence的Cross Plot功能:右键结果选Create→Cross Plot,能生成3D曲面图。我调LNA时就靠这个发现W/L比在3:1时噪声系数最低,这个黄金比例靠手动调参可能永远找不到。
直流扫描再完美,也看不出电路动态表现。有次我设计的放大器静态工作点完美,一加输入信号就振荡。后来用瞬态参数扫描才发现问题:
关键要看两个指标:
最近做的一个项目里,发现电源电压超过4.5V时建立时间会突然增加。排查发现是内部补偿电容的值没随电源调整,这个现象在单一电压仿真时根本不会出现。
进阶玩法是结合工艺角扫描:
cadence复制tempList = list( -40 27 85 )
foreach( temp tempList
alterParam("temp" temp)
runParametricAnalysis()
)
这个脚本会在不同温度下自动跑参数扫描。有次在低温下发现电路启动异常,原来是某支路电流在低温时太小导致偏置电路无法正常建立。后来加了启动电路才解决,这种问题不做全条件扫描根本发现不了。
新手常犯的错误是乱扫一通。我有次同时扫5个参数,跑了三小时得到200GB数据,结果有用的信息不到1%。现在会先用灵敏度分析筛选关键参数:
有个记忆深刻的案例:扫了三天三夜的电容值,最后发现对带宽影响最大的居然是某个不起眼的寄生电容。后来学乖了,仿真前先用寄生参数提取工具做预估。
数据量大时推荐用Ocean脚本做后处理:
skill复制results = parametricResults()
foreach( result results
riseTime = ymax(result) - ymin(result)
printf("参数组合%s的建立时间=%fn" result riseTime)
)
这个脚本能自动提取各参数组合下的关键指标。有次客户要求同时满足建立时间<10ns和过冲<5%,手动检查了上百条曲线差点眼瞎,后来写了这个脚本十分钟就找出符合要求的参数区间。
当扫描点超过50个时,建议启用多线程:
上周跑一个PVT分析(工艺/电压/温度),用上8核并行后把三天的工作量压缩到一晚上。不过要注意内存消耗,有次开太多线程导致32GB内存爆满,反而拖慢速度。
对于宽范围扫描,可以先用稀疏采样定位敏感区间:
就像显微镜先低倍后高倍调焦,这样既保证覆盖率又节省时间。调某个ADC电路时,用这个方法发现基准电压在1.15V-1.25V之间有非线性突变,手动采样很可能错过这个窄窗口。