本帖最后由 david_reg 于 2021-6-24 09:45 编辑
或许可以这样试试
1. 在一个corner下扫描所有trim code,计算每一个code下Vout与校正目标值Vout_targ之间的绝对误差,即Verr(code)=abs(Vout(code)-Vout_targ),
然后用min函数得到该Corder下最佳trim code的误差,即
Verr_min = min(Verr(code))
再用xmin函数找到最小trim误差对应的code值, 即 Code_opt=xmin(Verr(code))
2. 做corner仿真,得到所有corner下的Verr_min(corner)及对应的Code_opt(corner), 然后找出其中最worst的err,即
Verr_min_worstcase = max(Verr_min(corner))
再找出最大和最小的最佳code_opt,即
code_opt_max = max(code_opt(corner))
code_opt_min = min(code_opt(corner))
确认code_opt_max,min值离trim code设计范围的最大最小值还有多少余量;
这样可以评估出没有mismatch时最坏情况下trim设计是否满足精度要求;
3. 在第2步的Verr_min_worstcase, code_opt_max, code_opt_min分别对应的worst corner下,加入mismatch做MC分析,可以得到Verr_min_worstcase,code_opt_max ,code_opt_min 在失配下是否依然满足需求。
方法2 : a) 在一个corner下扫描所有trim code, 计算最大step及trim范围 trim_step(i) = vout(i+1)-vout(i) trim_step_max = max(trim_step(i)) vout_max = max(vout(i)) vout_min = min(vout(i)) b) 仿真所有corner, 找到trim_step_max, vout_max, vout_min分别对应的worst corner ; trim_step_max_worst = max(trim_step_max(corner)) vout_max_worst = min(vout_max(corner)) vout_min_wrost = max(vout_min(corner)) c) 在上一步的worst corner下加入mismatch, 仿真trim_step_max, vout_max, vout_min的3-sigma variation, 确认 trim_step_max + variation @worst_corner vout_max - variation @worst_corner vout_min + variation @worst_corner 都满足Spec.
|