前言
在仿真過程中,由于仿真模型的不連續性,或者模型沒有適當地表征/參數化,或者當求解器無法求解控制模型行為的方程時,可能就會出現仿真的收斂問題。
當然,收斂問題沒有唯一的解決方案,因此應仔細研究每個設計行為,并應為該設計確定適當的解決方案。
解決仿真的收斂問題,要避免對仿真設置進行隨機更改,也要注意避免更改原始設計拓撲。因此可以:
1、使用系統方法。在解決收斂問題時記錄好更改。
2、在開始調查問題之前,嘗試用最新的Saber 版本中運行設計。
3、對問題進行初步調查并確定攻擊點。
4、仔細研讀系統給出的錯誤信息,并參考產品幫助文檔判斷癥結所在。
5、有效地利用調試工具。
6、確保校準分析。
初步調查
可能會出現收斂問題原因很多。因此了解調試過程的起點很重要。初步調查有助于啟動調試。有時通過遵循初步調查中提到的糾正措施來解決收斂問題。
初步調查步驟如下。
1、在SaberRD中打開設計時,您是否看到有關缺少符號的任何消息?
識別設計中缺少的符號、連接或節點。在 SaberRD 中打開設計時,Netlister 會彈出一條關于缺少符號的消息(如果有),如下所示:
這可能是由于模型更新、庫重構或復制設計文件夾時的人為錯誤造成的。在這種情況下,請確保模型模板 ( .sin) 和符號 ( .ai_sym) 在工作目錄或自定義庫或 SaberRD 庫中可用。
2、檢查是否有任何浮動引腳
浮動引腳是未連接到設計中的任何組件或節點的節點。它們在網表中也被稱為“freenet”。此外,某些節點可能會因人為錯誤而斷開連接。如果存在收斂問題,建議檢查這些浮動引腳并確保它們被故意遺漏。在大型設計中,很難識別freenet,您可以在Netlist 中搜索關鍵字“freenet”,并確保有意將它們排除在外,以避免對收斂造成任何影響。
3、檢查任何具有挑戰性的電路
確保設計不存在如下所示的任何電路條件。設置電感直流阻抗和電容的絕緣阻抗,使設計更加真實。避免電容器和電感器的初始條件沖突,如下所示,并為隔離電路提供適當的參考。下面給出了具有挑戰性的電路的示例。
- 無法解決的配置 違反能量守恒定律的電路條件。
- **人為錯誤 **對于理想的并聯電容器和串聯的理想電感器,初始條件應該相同。初始條件的錯誤使用會導致數值振蕩。
- **隔離地 ** 如果有變壓器之類的電氣隔離,則應提供適當的接地參考。
- 同步數字事件 兩個數字事件之間應該有有限的延遲。
4、刪除臨時文件并創建新的網表文件。
SaberRD 在工作目錄(保存設計文件的位置)中寫出許多與 Netlister 和 Simulator 相關的支持文件。這些文件具有*.ai_tdb、 .ai_ns、 .ai_str、 .ai_grm、 .ai_out、 .ai_compiled、work.ai_vfs、 .ai_vhddsn、*.ai_vhdgrm 等擴展名,并包括等網表文件。sin和.vhd。由于不受支持的 GUI 操作、版本更改或數據損壞,這些支持文件可能會損壞。建議在清除這些支持文件后重新網表設計。
注意:不要刪除擴展名為*.ai_sch、 .ai_dsn、 .ai_sym、 .sin(僅適用于模型)的文件和來自模型架構工具的文件(如 .ai_dp、 .ai_mosfet、 .ai_mct、 . ai_igbt1、 .ai_ams、 .ai_scan、 .ai_tlu等)。在刪除任何這些文件之前進行備份是個不錯的習慣。
5、設計之前是否進行過仿真? 如果是這樣,那么發生了什么變化并導致了錯誤?
如果收斂問題剛好在一些設計修改之后發生,那么這個問題可能是在修改過程中引起的。了解修改的效果以及修改是否是收斂錯誤的原因。如果修改是將設計的一小部分集成到更大的設計中,請確保小部分經過驗證并且電路行為符合預期。此外,確保在集成后,設計行為符合預期,并且電路遵循基爾霍夫電壓和電流定律。
6、直流工作點或瞬態分析時是否顯示收斂錯誤?
當出現收斂問題時,仿真器會顯示錯誤消息。錯誤消息包含指向提供有關錯誤信息的產品幫助文檔的鏈接。錯誤中的消息可能是調試的起點。有關產品幫助文檔的更多詳細信息,將在以下部分中詳細說明,遵循錯誤消息。
有關錯誤及其發生的知識有助于確定調試過程的起點。有關錯誤發生的信息至關重要,因為它有助于追蹤設計中的任何事件或切換,并從那時起繼續調查。對于 DC 工作點,可以使用調試、holdnodes、SDB 命令等仿真器選項進行調試。對于瞬態分析,可以利用監控進度和 ASP(仿真解決方案點)代碼進行調試。這也將在本文后面詳細介紹。
按照錯誤信息判斷
當出現收斂問題時,SaberRD 會顯示錯誤消息,幫助調試問題并解決問題。收斂問題期間的一些常見錯誤消息如下所示:
在 SaberRD 中,當顯示錯誤消息時,該工具會指出問題中最可能的部分。受影響的組件/節點將以紅色突出顯示。當鼠標懸停在突出顯示的部分時,緊湊的錯誤消息顯示如下。
腳本窗口中的錯誤消息將包含一個鏈接,您可以單擊該鏈接并重定向到產品幫助文檔。SaberRD 產品幫助文檔簡要說明了錯誤以及解決這些錯誤的技巧。可以使用產品幫助文檔中的鏈接訪問每條錯誤消息的詳細信息。產品幫助文檔的快照如下所示。
使用調試工具
SaberRD 提供調試工具,用于監控仿真器性能和診斷收斂問題的可能原因??捎玫牟煌{試工具包括調試選項、Holdnodes、SDB 命令和監控進度。
調試選項
調試選項僅在直流工作點分析中可用,可以通過高級仿真設置訪問。調試選項是一個切換開關,當設置為“Yes”時,仿真器轉錄窗口將顯示仿真器變量,如行列式符號、函數值、變量的相對變化、牛頓步長限制和超出區域的變量數,如下所示。
如上圖,當找到解決方案時:
- 雅可比行列式的符號通常保持相同的符號 (+)
- 函數值(通常)首先增加,然后減少(通常是非單調的)直到接近零
- 變量的相對變化趨近于小值
- 牛頓步長變量在迭代結束時為零
- 沒有發現區域外的變量,或者只是偶爾發現一些變量
但是當沒有找到解決方案時,仿真器將顯示如下信息:
觀察到行列式的不同符號。
- 可以看到非常高的功能值
- 變量的相對變化值高
- 可以看到更多的牛頓步長變量
- 發現某些變量超出區域
仔細研究仿真器參數的變化有助于確定收斂問題的原因和解決方案。例如,讓我們看一個隨附的案例研究。
在下面給出的仿真器報告截圖中,可以看出,
- 行列式變化廣泛
- 函數值和相對變化過,然后急劇增加到NaN,
- 大量變量受牛頓步長限制
- 突然變量超出區域
這種行為的原因可能是由于牛頓步長限制不足。要了解有關牛頓步長限制的更多信息,請參閱產品幫助文檔(The Designer’s Guide to Analog & Mixed-Signal Modeling> Simulator Convergence>NumericalOscillation and Divergence)。在這種情況下,推薦的解決方案是增加牛頓階躍密度。將操作點高級仿真設置中的 Newton Step Density 從 3(默認)增加到 5,可以看到仿真收斂并找到了解決方案。
保持節點
對于具有多個穩定工作點(例如鎖存器、觸發器和計數器)的系統,無偏直流工作點分析可能會在工作點之間“卡住”,而不是找到一個。另一方面,根據設計,DC 分析可能可以輕松找到工作點,但它找到的可能不是您最感興趣的。使用Holdnodes,可以將指定節點保持在指定值,而運行工作點分析。Holdnodes 可用于將系統偏向特定的解決方案。要將節點保持在特定值,請輸入節點名稱及其路徑和值,以空格分隔,如下所示。
語法->::.:
**釋放保持節點 **
此選項指定是否應分兩步找到解決方案,首先保留節點,然后釋放。設置為 Yes 時,操作點分析分兩步運行。在第一步中,節點保持在指定的值,然后在第二步中,節點被釋放并使用第一步的結果作為輸入。當設置為 No 時,不使用 Holdnodes 的操作點分析(第二步)不會在使用 Holdnodes 的分析之后運行。您還可以同時持有多個節點。每個節點及其各自的值應由空格分隔,如下面的界面所示。
注意:不支持信號名稱中的通配符。您必須指定要保持的信號名稱。
在上面的例子中,模型 boostavg 的頂級節點“v_battery”和內部節點“il”分別保持在值 1 和 0。當釋放保持節點處于活動狀態時,這些節點保持在指定的值,然后運行操作點分析,然后釋放它們并使用在第一部分中獲得的值作為初始點運行操作點的第二部分。
-
電容器
+關注
關注
64文章
6228瀏覽量
99816 -
電感器
+關注
關注
20文章
2333瀏覽量
70580 -
仿真器
+關注
關注
14文章
1018瀏覽量
83796 -
隔離電路
+關注
關注
8文章
66瀏覽量
37128 -
變壓器
+關注
關注
0文章
1145瀏覽量
4010
發布評論請先 登錄
相關推薦
評論