精華區beta comm_and_RF 關於我們 聯絡資訊
※ [本文轉錄自 Electronics 看板] 作者: pow (體脂肪35%) 看板: Electronics 標題: Re: [問題] 請問關於hspice出現的錯誤 時間: Fri Mar 31 13:13:17 2006 ※ 引述《brav.bbs@bbs.badcow.com.tw (仰望天空~~(m))》之銘言: : ※ 引述《ilovecatch.bbs@ptt.cc (斷了思念)》之銘言: : : 謝謝大家幫忙 : : 但又有錯誤 : : **error** internal timestep too small in transient analysis : : 模擬時出現這個錯誤的訊息 : : 但 怎麼改指令都不能跑 : : 是電路的問題嗎 頻率2.4G的電路所以 timestep太小嗎? : : 還是?... : : 要下什麼指令嗎 : : 我下的輸入va1 a 0 pulse(0 2.2 0 0.1p 0.1p 0.015u 0.030u) : : tran 1n 5u : : 之前跑別的電路可以跑 : : 這次的電路卻沒辦法跑 : : 想請問大家該如何解決 : : 謝謝 : 有時候,會有可能這樣的,有些可能因為收斂的問題,你不妨可以從收斂的問題和 : timestep下手喔,timestep可能太小嚕,對這個電路而言。只要你確定你輸入的信號 : val寫的沒有錯誤就好了,剩下就可以慢慢解決低....^^ 解決方法:使用Spectre 還不行的話 在Spectre選Transient analysis那邊有一個Advanced設定 進去裡面有一個Gear2 選了再跑一次 再不行的話.... 再波出來討論看看 SPICE跑模擬的方法簡述如下: 1. 想像你有一個曲線f(t) 從這一個時間點 f(t0) 然後去猜f(t1)的值 假設t1-t0很小 你可以用f'(t0)或f'(t1)的斜率去投影(有點向牛頓法) 2. 投影之後得到的f*(t1)一定不是真正的f(t1) 還要再固定時間點做iteration 然後才會得到真正的f(t1) 4.可是如果f*(t1)跟f(t1)差太多了 或者沒有辦法收斂(例如你的電路剛好在那時候有一個很大的變化) 那他就會自動把time step切一半 取消一開始的投影 變成只投影到f*((t0+t1)/2) 然後再固定時間點做iteration 5.如果又不行 就再把時間點切一半 直到達到系統極限... 所以你會得到訊息說「time step太小,模擬失敗」 這跟你設定的time step應該是不一樣的東西 解決的方法第一個是改善那個投影的方法 要不然的話換個版本的SPICE也有可能會收斂得比較好 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.211.186.84
kkooff:推薦這篇 ^^ 03/31 22:27
NovemberRain:原來不收斂原因是這樣,又上了一課。多謝~ 04/01 03:49
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 70.141.220.11 > -------------------------------------------------------------------------- < 作者: ihlin () 看板: comm_and_RF 標題: [轉錄]Re: [問題] 請問關於hspice出現的錯誤 時間: Tue Apr 4 04:30:42 2006 ※ [本文轉錄自 Electronics 看板] 作者: pow (體脂肪35%) 看板: Electronics 標題: Re: [問題] 請問關於hspice出現的錯誤 時間: Sat Apr 1 06:21:24 2006 ※ 引述《chenchenkuo.bbs@bbs.badcow.com.tw (Casey)》之銘言: : ※ 引述《pow.bbs@ptt.cc (體脂肪35%)》之銘言: : : 解決方法:使用Spectre : : 還不行的話 : : 在Spectre選Transient analysis那邊有一個Advanced設定 進去裡面有一個Gear2 : : 選了再跑一次 : : 再不行的話.... : : 再波出來討論看看 : : SPICE跑模擬的方法簡述如下: : : 1. 想像你有一個曲線f(t) : : 從這一個時間點 f(t0) 然後去猜f(t1)的值 : : 假設t1-t0很小 : : 你可以用f'(t0)或f'(t1)的斜率去投影(有點向牛頓法) : : 2. 投影之後得到的f*(t1)一定不是真正的f(t1) : : 還要再固定時間點做iteration : : 然後才會得到真正的f(t1) : : 4.可是如果f*(t1)跟f(t1)差太多了 : : 或者沒有辦法收斂(例如你的電路剛好在那時候有一個很大的變化) : : 那他就會自動把time step切一半 : : 取消一開始的投影 變成只投影到f*((t0+t1)/2) : : 然後再固定時間點做iteration : : 5.如果又不行 : : 就再把時間點切一半 : : 直到達到系統極限... : : 所以你會得到訊息說「time step太小,模擬失敗」 : : 這跟你設定的time step應該是不一樣的東西 : : 解決的方法第一個是改善那個投影的方法 : : 要不然的話換個版本的SPICE也有可能會收斂得比較好 : 請問你所指的Gear2 : 主要是有什麼用途? 上文我講到用斜率f'(t0)或f'(t1)配合time step投影到下一個f(t) 其實用f'(t0)叫forward euler 用f'(t1)叫backward euler 還有一招叫trapezoidal 是用(f'(t0)+f'(t1))/2 這些都是為了一個目的-投影之後的error小一點&收斂好一點 看到這邊大家就知道了 可以找到一個general case 就是用a*f'(t0)+b*f'(t1) 不同的方法只是帶入不同的a、b 當然 要在更general的也是有 就是把過去幾步的斜率f'(t_-1)、f'(t_-2)....都記錄下來 然後再做weighting 要更複雜的也有 就是f''(tn)、f'''(tn)都拿來用 不過電路的特性是隱藏著exponential在裡面的(DIODE,TRANSISTOR) 而使用很多過去的資訊 ᆱ嵿擠衒N來的資訊有點像是polynomial 要用polynomial泰勒展開一個exponential ᆱ蚺@定會有極限 那就是SIMULATOR的誤差 然後解答您的疑問 - gear2是什麼 就是比trapezoidal更複雜一點的投影方法 查閱SpectreRF的 User Guide 「euler is backward Euler. trap is the backward Euler and trapezoidal methods. traponly is the trapezoidal rule only. gear2 is the backward Euler and second-order Gear methods. gear2only is Gear’s second-order backward difference method only.」 : Spectre的spice model是跟HSPICE一樣 : 不過我拿來跑PLL : output response有點差異耶 : 畢竟這是fast spice : 不過我比較好奇是不是在設定上可以讓他可以跟HSPICE結果更接近? : 我查過document&自己摸了很久 : 似乎找不出更好的solutions : 話說以前用Nanosim也是如此說 : 儘管精準度調很高了=.= Spectre的精準度比較高吧.... 如果你把error preset設成conservative加上gear2 only noise floor號稱有-200dMdB 應該是慶菜就八過HSPICE了吧 HSPICE是用來模擬DIGITAL CIRCUIT,有很多TRANSISTOR比較快而已 應該沒人拿來模擬ANALOG CIRCUIT的吧 光看Spectre的選項比HSPICE多幾倍就知道拉:p -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 24.211.186.84
TEMmode:原來是這麼一回事~~太強了@@ 04/01 15:12
duffrose:hspice 應該是跑analog的標準模擬器,他跑不動很多MOS的 04/03 16:21
duffrose:電路才是,作者是否筆誤呢?fast spice才能吃很多MOS來跑 04/03 16:22
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 70.141.220.11