在本文中,我們將討論一種大大增加收斂概率的方法,并在縮短模擬時間的同時實現這一目標。在振蕩器嵌入數百個其他電路塊的層次結構中,這種技術已被證明在獲得收斂方面是有效的。
初始設置
重要的是設置模擬選項,以最大限度地減少 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?!?/p>
所以,當然,它是一個振蕩器!無論如何,只要吐出結果 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
相位噪聲
-
振蕩器
+關注
關注
28文章
3813瀏覽量
138881 -
相位噪聲
+關注
關注
2文章
180瀏覽量
22835
發布評論請先 登錄
相關推薦
評論