新聞中心

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

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

        作者: 時(shí)間:2018-06-15 來源:網(wǎng)絡(luò) 收藏

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

        本文引用地址:http://www.104case.com/article/201806/381708.htm

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

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

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

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



          仿真器在編譯數(shù)據(jù)結(jié)構(gòu)時(shí)建立一個(gè)事件隊(duì)列;

          只有當(dāng)前時(shí)間片中所有事件都處理完成之后,時(shí)間才能向前;

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

          在同一個(gè)時(shí)間片內(nèi)發(fā)生的事件在硬件上是并行的;

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

          而基于周期的算法只會(huì)在時(shí)鐘的邊沿來計(jì)算組合邏輯的輸出結(jié)果,因此基于周期的算法速度更快,內(nèi)存的使用效率更高。同時(shí),因?yàn)榛谥芷诘乃惴ú辉试S進(jìn)行嚴(yán)格的時(shí)間約束,所以其仿真時(shí)間精度沒有基于事件的算法高(since cycle-based simulators do not allow detailed timing specificity, they are not as accurate. )。基于周期的算法的原理圖,如下圖所示:



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



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

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

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

          Modelsim、Synopsys Cobra等。

          其中Modelsim同時(shí)支持EBS和CBS。



        關(guān)鍵詞: HDL 仿真器

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 叶城县| 托里县| 西平县| 青神县| 洪江市| 湘乡市| 宣武区| 琼海市| 临海市| 都江堰市| 双江| 辽宁省| 运城市| 嘉兴市| 怀远县| 东台市| 安义县| 沛县| 黎城县| 沙田区| 隆安县| 塔河县| 富川| 建水县| 建德市| 涞源县| 五指山市| 吉林省| 乐至县| 永嘉县| 五莲县| 杭锦后旗| 正定县| 康平县| 兖州市| 娄烦县| 淮滨县| 新化县| 会理县| 韩城市| 勐海县|