シミュレーションのトラブルシューティング
概略
- シミュレーションの警告やエラーの読み解き方を学び、実行が失敗した原因を探るうえで、それらがどのような手がかりになるかを理解できます。
- 配線や接地の確認から高度な解析設定の調整まで、収束問題を解決するための段階的なチェックリストを確認できます。
- 動作点解析、DCスイープ解析、過渡解析それぞれに特化したトラブルシューティングのヒントを参考に、失敗しているシミュレーションの種類に応じて適切な対処方法を選べます。
回路のシミュレーションを実行できない場合は、問題が回路にあるのか、シミュレーションのプロセスにあるのかを特定する必要があります。このリファレンスの本セクションに記載されている情報に従い、推奨される項目を1つずつ試してください。
シミュレーション中に、エラーや警告を知らせるメッセージが表示されることがあります。これらのメッセージは、Messages パネルに一覧表示されます。
- Warning Messages – 警告メッセージは、シミュレーションを停止させるものではありません。通常は、シミュレーションを完了するためにSPICEが回路に加える必要のあった変更についての情報を示します。これには、無効なパラメーターや不足しているパラメーターなどが含まれます。
- Error Messages – エラーメッセージは、シミュレーターが解決できず、シミュレーション処理を停止させた問題についての情報を示します。エラーメッセージはシミュレーション結果を生成できなかったことを示すため、回路を解析するには、まずこれらのエラーを修正する必要があります。
シミュレーション解析の失敗に関するトラブルシューティング
すべてのシミュレーターに共通する課題の1つが収束です。convergenceという用語は、具体的に何を意味するのでしょうか。多くのシミュレーターと同様に、Altium DesignerのSPICEエンジンは、回路を表す方程式を繰り返し解く反復処理を使用して、回路の静止状態の電圧と電流を求めます。これらの電圧と電流を求められない場合(収束しない場合)、回路の解析を実行できません。
SPICEは、行列形式で表した連立一次方程式を使用して、シミュレーションの各ステップで回路の動作点(DC電圧と電流)を求めます。回路はコンダクタンスの配列に置き換えられ、それらが行列に配置されて方程式(G * V = I)を構成します。回路に非線形素子が含まれている場合、SPICEは線形方程式の反復計算を複数回行い、非線形性を考慮します。SPICEはまずノード電圧の初期推定値を設定し、回路内のコンダクタンスに基づいて分岐電流を計算します。次に、その分岐電流を使用してノード電圧を再計算し、このサイクルを繰り返します。このサイクルは、すべてのノード電圧と分岐電流が指定された許容誤差内に収まる(収束する)まで続きます。
ただし、指定された反復回数以内に電圧または電流が収束しない場合、SPICEはエラーメッセージ(singular matrix、Gmin stepping failed、source stepping failed または iteration limit reachedなど)を出力し、シミュレーションを中止します。SPICEは、各シミュレーションステップの結果を次のステップの初期推定値として使用します。過渡解析を実行している場合(時間をステップごとに進めている場合)、指定された時間ステップで解が収束しないと、SPICEは時間ステップを自動的に小さくして、このサイクルを繰り返します。時間ステップが小さくなりすぎると、SPICEはTimestep too small メッセージを表示してシミュレーションを中止します。
シミュレーションの収束に関する一般的なトラブルシューティング
シミュレーション解析が失敗する場合、最も一般的な原因は、回路が適切な動作点に収束しないことです。収束の問題を解決するには、以下の方法を使用してください。
収束のトラブルシューティング手順
- 収束の問題が発生した場合は、まず動作点解析以外のすべての解析を無効にします。
- Messages パネルで、シミュレーションに関するエラーや警告を確認します。
- 回路が正しく配線されていることを確認します。未接続のノードや接続されていない部品があってはいけません。
- 回路にグランドノードがあり、回路内のすべてのノードからこのグランドへのDC経路があることを確認します。ノードを絶縁する可能性のある部品には、トランスやコンデンサーなどがあります。電圧源はDC的に短絡、電流源はDC的に開放と見なされます。
- シミュレーションパラメーターの入力時に、数字のゼロと英字のOを取り違えていないことを確認します。
-
部品の値やシミュレーションパラメーターに、適切なSPICEの倍率接尾辞(
1e6にはMではなくMEG)が指定されていることを確認します。倍率接尾辞では大文字と小文字は区別されません。また、値と倍率接尾辞の間にスペースを入れることはできません。たとえば、1.0 uFではなく1.0uFとする必要があります。 - すべてのデバイスと電源に適切な値が設定されていることを確認します。
- すべての従属電源のゲインが正しく設定されていることを確認します。
- 直列に接続されたコンデンサーまたは電流源を一時的に取り除き、シミュレーションを再実行します。
- 並列に接続されたインダクターまたは電圧源を一時的に取り除き、シミュレーションを再実行します。
-
Advanced Analysis SettingsダイアログのAdvancedタブで、
ITL1パラメーターの値を300に増やします(このダイアログは、Simulation DashboardパネルのAnalysis Setup & Run 領域にあるSettingsをクリックすると開きます)。これにより、動作点解析が終了するまでに実行できる反復回数が増えます。 -
Advanced Analysis SettingsダイアログのAdvancedタブで、
RSHUNT1の値を設定します。この抵抗値は各回路ノードとグランドの間に追加され、「特異行列」エラーなどの問題の解決に役立ちます。原則として、RSHUNTの値には1e12などの非常に高い抵抗値を設定する必要があります。 - .NS(Nodeset)デバイスを追加して、ノード電圧を定義します。ノード電圧の初期推定値が大きく外れている場合は、Nodesetデバイスを使用して、動作点解析の予備計算で使用する開始電圧をあらかじめ定義できます。配置した各NodesetデバイスのInitial Voltageパラメーターを設定してください。Nodesetは、Simulation Generic Componentsライブラリから配置できます。
- Nodesetデバイスを使用しても収束しない場合は、.ICデバイスを配置して初期条件を定義してみてください。この場合、ノード電圧は動作点解析中に指定値に保持され、過渡解析中にその固定が解除されます。初期条件デバイスはNodesetデバイスと同じライブラリから配置でき、Initial Voltageパラメーターも同様に設定する必要があります。
- Simulation Dashboard パネルのAnalysis Setup & Run領域にあるTransient設定で、Use Initial Conditionsオプションを有効にします。このオプションは、.ICデバイス(または部品のICパラメーター)と組み合わせて機能します。このオプションを設定すると、動作点解析は実行されず、指定された電圧が過渡解析の初期条件として使用されます。
-
モデルの直列抵抗パラメーターを指定し、
GMINオプション(Advanced Analysis Settingsダイアログの Advancedタブ)の値を10倍に増やします。 -
半導体デバイス、特にダイオードの初期条件(Starting Condition)を
OFFに指定します。これにより、最初の反復計算でダイオード(または半導体デバイス)をスキップするため、数値的な収束の問題を解決し、収束性を改善できる場合があります。
DCスイープ解析のトラブルシューティング
DCスイープ解析で問題が発生した場合は、まず上記の収束のトラブルシューティング手順を試してください。それでも問題が解決しない場合は、以下を試してください。
- Simulation DashboardのAnalysis Setup & RunセクションにあるStepパラメーターの値を変更します。デバイスモデルに不連続点がある場合(たとえば、モデルの線形領域と飽和領域の間など)、ステップサイズを大きくすると、シミュレーションでその不連続点を飛び越えられることがあります。一方、ステップを小さくすると、急激な電圧遷移による不連続性をシミュレーションで細かく解析できるようになります。
- DCスイープ解析を使用しないでください。一部の問題(ヒステリシスなど)はDC解析では解決できません。このような場合は、過渡解析を使用し、該当する電源の値をランプ状に変化させる方が効果的です。
過渡解析のトラブルシューティング
過渡解析で問題が発生した場合は、まず上記の収束に関するトラブルシューティング手順を試してください。それでも問題が解決しない場合は、以下を試してください。
Advanced Analysis SettingsダイアログのAdvancedタブ(Simulation DashboardパネルのAnalysis Setup & Run 領域でSettingsをクリックしてアクセス)で、次の設定を行います。
-
RELTOLパラメーターを0.01に設定します。許容誤差をデフォルトの0.001(精度0.1%)より大きくすると、解が収束するまでに必要な反復回数が減り、シミュレーションが大幅に速く完了します。 -
ITL4パラメーターの値を100に増やします。これにより、過渡解析では各タイムステップで収束を断念するまでに、より多くの反復を実行できるようになります。この値を大きくすると、timestep too smallエラーを解消できる場合があり、収束性とシミュレーション速度の両方が向上します。 -
電流/電圧レベルが許す場合は、
ABSTOLとVNTOLの値を大きくして精度を下げます。回路によっては、1µVや1pAまでの分解能は必要ありません。ただし、回路で想定される最小の電圧または電流レベルより、少なくとも1桁小さい値まで扱えるようにしてください。 - Integration MethodをGear方式のいずれかに変更します。Gear積分法はシミュレーション時間が長くなりますが、一般に台形積分法よりも安定しています。Gear積分法は、発振する回路やフィードバック経路を持つ回路で特に有効な場合があります。
その他に試せること:
- 回路を現実に即してモデル化します。現実的な寄生成分、特に浮遊容量や接合容量を追加してください。ダイオードの周辺にRCスナバーを使用します。特にRFデバイスやパワーデバイスについては、デバイスモデルをサブ回路に置き換えてください。
- 回路内の周期パルス源の立ち上がり時間と立ち下がり時間を長くします。どれほど高性能なパルス発生器でも、瞬時に切り替わることはありません。