<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > HDL仿真器基于事件的仿真算法

          HDL仿真器基于事件的仿真算法

          作者: 時間:2018-06-15 來源:網絡 收藏

            目前,主要有三種實現(xiàn)算法(機制):基于時間的算法(Time-Based)、基于事件的算法(Event-Based,EBS)和基于周期的算法(Cycle-Based,CBS)

          本文引用地址:http://www.ex-cimer.com/article/201806/381708.htm

            基于時間的算法適合處理連續(xù)的時間及變量,其會在每一個時間點對所有的電路元件進行計算。但是,在大部分情況下,每一個時間點只有約2%~10%的電路處于活動(運行)狀態(tài),所以該算法效率非常低。

            基于事件的算法適合處理離散的時間、狀態(tài)和變量。該算法只有在電路狀態(tài)發(fā)生變化時才進行處理,只仿真那些可能引起電路狀態(tài)改變的元件。響應輸入引腳上的事件,并將值在電路中向前傳播。目前來說,該算法效率最高,且應用最為廣泛,大部分的商業(yè)都是基于該種算法進行開發(fā)的。用某仿真器廠家的宣傳語,就是“Evaluate When Necessary”。

            基于周期的仿真算法以時鐘周期為處理單位(與時間無關)。其旨在時鐘邊沿進行計算,不管時鐘周期內的時序,且只是用兩值邏輯(0和1)。該算法主要針對的是大規(guī)模設計(尤其是數(shù)字IC設計),且只能應用于同步電路。

            下面詳細介紹一下基于事件的仿真算法:



            仿真器在編譯數(shù)據(jù)結構時建立一個事件隊列;

            只有當前時間片中所有事件都處理完成之后,時間才能向前;

            仿真從時間0開始,而且時輪只能向前推進。只有時間0的時間處理完后才能進入下一時間片;

            在同一個時間片內發(fā)生的事件在硬件上是并行的;

            理論上時間片可以無限,但實際上受硬件(如電腦的CPU等)和軟件(如該仿真軟件是否支持多線程技術等)的限制。

            而基于周期的算法只會在時鐘的邊沿來計算組合邏輯的輸出結果,因此基于周期的算法速度更快,內存的使用效率更高。同時,因為基于周期的算法不允許進行嚴格的時間約束,所以其仿真時間精度沒有基于事件的算法高(since cycle-based simulators do not allow detailed timing specificity, they are not as accurate. )?;谥芷诘乃惴ǖ脑韴D,如下圖所示:



            基于事件的算法,基于周期的算法和傳統(tǒng)的電路仿真軟件SPICE的比較圖:



            目前基于事件的算法的仿真器(EBS Simulator)主要有:

            Modelsim、Active、NC-Verilog、Verilog-XL、VCS(Verilog)、Scirocco(V)等。

            基于周期的算法的仿真器(CBS Simulator)主要有:

            Modelsim、Synopsys Cobra等。

            其中Modelsim同時支持EBS和CBS。



          關鍵詞: HDL 仿真器

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();