如何获得高QXTAL振荡器的收敛性

在本文中,我们将讨论一种大大增加收敛概率的方法,并在缩短模拟时间的同时实现这一目标。在振荡器嵌入数百个其他电路块的层次结构中,这种技术已被证明在获得收敛方面是有效的。
初始设置
重要的是设置模拟选项,以最大限度地减少 spectre 在寻找解决方案时的工作,以便当 pss 确实收敛时;它实际上收敛到一个准确的结果。有一些默认的 spectre 设置过于严格,对于大多数设计来说,这只是等待发生的意外——例如,“iabstol”。然而,对于高 q xtal 振荡器,默认的 reltol 精度是不够的。
建议的起点是:
reltol=10e-6
iabstol=10p
gmin=10p
spectre/spice 默认值通常为 1pa 的电流容错和 0.1% 的相对容差。使用标准双精度算法时,spice 只能在变量跨越不超过约 12 个数量级的范围时收敛,因此 1pa 对大多数电路来说是非常苛刻的。对于大电流,将此值增加到 100 pa 甚至 1 na 有时是个好主意。然而,为了获得可靠的相位噪声精度,0.1% 的默认 reltol 还远远不够。
一个合理的起始值是 10e-6,但对于某些电路,这需要增加到 1e-6。不准确结果的一个明显迹象是相位噪声图中存在阶跃跳跃。
pss 设置
必须设置 pss 表格,以便始终执行预反式运行“tstab”。广泛的模拟表明,对于难以收敛的振荡器,旨在提高收敛性的选项基本上总是失败。那就是永远不应该使用检测“稳态”和“计算初始条件”。
建议的起点是:
谐波数=50
精度默认值=保守
运行瞬态=yes
停止时间=如下所述
检测稳定=未启用
计算初始条件=未启用
除了简单的正弦波输出之外,shooting method 通常是任何振荡器系统的最佳方法。大多数振荡器应用都需要平方限制器,以使系统具有高度非线性。因此,50 个谐波的默认值是一个很好的起点。对于特别困难的电路,可能需要 100 个谐波。同样,如果整体相位噪声图不平滑,则表明该图很可能是错误的。保守的精度设置向 spectre 发出信号,要求实际上使 retol 的初始 10e-6 设置更加严格。
请注意,像往常一样,将振荡器节点设置为 xtal 节点。
pnoise 设置
pnoise 设置是相对标准的。为了准确起见,将默认的最大边带设置为 50。
为了减少仿真时间,但仍能获得合理的平滑图,每十倍频点 10 点的对数图通常就足够了。通常只关注相位噪声,因此请选中相应的框。
输出/绘图设置
为确保振荡器实际工作,应首先运行节奏稳定性分析。
不幸的是,在撰写本文时,cadence stability analysis 存在一个基本缺陷,即阻止使用其直接绘图功能输出环路增益裕度和环路相位裕度。(这是呃。. ahhmmm 。..。..尽管工单已提交给他们的 ahmmm 。..。..支持部门。..。..)
cadence spectre 日志将生成以下内容……
“ 警告 (spectre-16922):由于电路是正反馈系统且不稳定,因此无法获得相位裕度和增益裕度。这是因为当 loopgain 的相位过零时,loopgain 的幅度在 10.003 mhz 处大于 1。为了使电路稳定,当loopgain的相位过零时,要保证loopgain的幅度小于1。”
所以,当然,它是一个振荡器!无论如何,只要吐出结果 dah!…
所以。..。..输出表单应该使用手动脚本设置,如下所示:
循环阶段
phasedegunwrapped(getdata(“loopgain” ?result “stb”))
环路增益
db(mag(getdata(“loopgain” ?result “stb”)))
振荡频率
cross(leafvalue(phasedegunwrapped(getdata(“loopgain” ?result “stb”))) “0” 1 “either” nil nil nil)
振荡增益
值(leafvalue(db(mag(getdata(“loopgain”?result“stb”))))cross(leafvalue(phasedegunwrapped(getdata(“loopgain”?result“stb”)))“0”1“任一”无无零))
有时,根据电路的不同,相位会发生 360 度的整体偏移,因此应适当修改交叉点“0”。
xtal 模型设置
应设置 xtal 的原理图,以便原理图根据 xtal 的 c1 和 xtal 频率计算所需的 xtal 电感。
因此,电感器在其设置形式的电感字段中应具有以下设置:
1/(ppar(“c1”)*((2*3.141592654*ppar(“fs”))*(2*3.141592654*ppar(“fs”))))
组件 iclamp 是一个 verilog 电压/电流限制器,有助于收敛,因为高 q xtals 可以生成 100kv 类型的数字,因此 spice 在收敛过程中可以产生更高的电压。它有助于避免那些“最后收敛节点=123.8 mv”的错误。但是,这可能不是必需的。
它的代码是:
`包括“constants.vams”
`包括“学科.vams”
模块 vclamp_verilog(a, b);
输入a;
电气 a;
输入 b;
电气 b;
参数实 imax = 0.5 ;
参数实 vmax = 1 ;
参数实 i0 = 1e-18;
模拟开始
i(a,b) 《+imax*tanh(i0*sinh(100*tanh((40/vmax/100)*v(a,b))));
结尾
电感两端的电容是一个非常小的虚拟电容,通常为 1e-20f。作为将电感器两端的初始电压强制为 0v 的便捷方法,这是必需的。此节点电压设置是此收敛技术的一部分。
收敛法
高 q xtals 收敛的问题是 spectre 难以收敛,仅仅因为 q 高。对于相同的电路,但 q 值较低,通常问题不大。因此,该方法是求解低 q 电路并使用该结果来帮助求解全 q 值。
关键原则是低 q xtal 将比高 q xtal 更快地达到其稳态值。也就是说,如果 xtal 以 100 倍“去qed”,那么模拟的稳定速度将快 100 倍。
xtal 振荡器的 q 值由 xtal 的 c1(串联电阻)决定。然而,xtal 电感器中的稳态电流与 c1 无关。因此,低 q 电感电流可用作全 q xtal 的初始电流。
因此,该方法的原理是将电感器电流初始化为接近稳态时的电流,该电流通过首先运行低 q 版本的电路来确定。
设置模拟的一种方便方法是引入一个变量(例如 qr),它与 c1 相乘,因此首先将 qr 设置为 100 用于低 q 运行,然后设置为 1 用于完整 q 运行。例如:
示例示意图
示例波形
上图显示了低 q 和高 q 运行时 x1 处的信号电压。下图显示了低 q 和高 q 运行的电感器电流。
可以看出,从低 q 配置确定的值允许高 q 配置基本上立即启动。
这使 pss 有一个更好的起始条件,因此它更有可能收敛。在这种特殊情况下,pss tstab 时间仅设置为 1us。对于困难的情况,需要根据经验确定。
特兰
pssr
相位噪声

从数字交通发展规划纲要到智慧交通的渐变
恒温恒湿试验机的构造及故障排除法
迎广推出Diey 10代签名版机箱,搭载3AIO液冷散热器
TCL T睿柔风双温空调防护,呵护宝宝的防护小常识
HTCU12+评测 价格小贵想说爱你不容易
如何获得高QXTAL振荡器的收敛性
加州自动驾驶法案即将出炉,无方向盘和后视镜也能上路
武大靖成为竞速体验官,iQOO Neo3发布会倒计时3天
研究显示iPad充电一年费用仅1.36美元
把比亚迪汽车拆开后,工程师震惊了!
华为mate10上市在即,华为mate9降价让路与小米6一样的售价该如何选?
用于过压保护的齐纳二极管电路分享
骨传导耳机靠什么发声的?骨传导耳机值得入手吗?
设计复杂系统的定时电路
2012年大屏拼接显示市场展趋势分析
php设计模式和应用场景
如何制作2通道遥控器
涡街流量计的特点与用途
完全无人驾驶汽车为何迟迟不肯上市?
采用RAM模块与FPGA器件实现短帧数字通信系统设计