新聞中心

        EEPW首頁 > 模擬技術 > 設計應用 > Verilog HDL阻塞屬性探究及其應用

        Verilog HDL阻塞屬性探究及其應用

        作者: 時間:2011-09-02 來源:網絡 收藏

        中,有兩種過程賦值方式,即阻塞賦值(blocking)和非阻塞賦值(nonblocking)。阻塞賦值執行時,RHS(right hand statement)估值與更新LHS(left hand statement)值一次執行完成,計算完畢,立即更新。在執行時阻塞同塊中的其他語句的執行。阻塞式(blocking)的操作符為 “ = ”。它的執行很像傳統程序設計語言。非阻塞賦值RHS估值與更新LHS值分兩步執行。在單位仿真周期開始時RHS估值,在同一單位仿真周期末更新LHS值,不阻塞同塊中其他語句的執行。非阻塞式(non-blocking)的操作符為 “ = ”,它的執行更像并行電路,使描述電路更自然。阻塞賦值與非阻塞賦值是 程序設計的難點,它們既有共同點,也有差異,深入剖析其異同,對于硬件程序的開發具有重大意義。

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

          1 事件處理機制

          層積事件列(The Stratified Event Queue)是一個事件管理概念模型,而非硬件邏輯。模型內事件的具體實現與EDA軟件生產商的算法策略有關。在IEEE-2001中,Verilog把事件分為5個不同部分,按照時間順序如圖1所示。

          

          觸發的任何事件可以加入到這5個事件列中的任何事件列中,但只能從活躍事件列中移出。即上面的5個事件列中的事件最后都將被激活而放入活躍事件列中。層積事件列是層次模型,層積事件列的執行順序是按優先級排列的。任何EDA軟件都只能執行活躍事件。其他事件列都按優先級級別依次激活本列事件以供執行。

          1.1 活躍事件列

          由圖1可見,大部分事件都被放入活躍事件列。活躍事件列里包括非阻塞賦值RHS估值。但是,非阻塞賦值的更新不是在活躍事件列,它被列成獨立的非阻塞更新事件列。活躍事件列是仿真的執行源,從一開始執行活躍事件列到活躍事件列執行完畢稱為一個仿真周期。活躍事件列中的事件可以觸發活躍或非活躍等其他事件。當活躍事件列中的所有事件執行完后,EDA軟件會按優先級依次觸發其余事件列以供仿真執行。但在當前活躍事件列中的事件執行順序是不確定的。

          1.2 非活躍事件列

          發生在當前仿真時間里并且在活躍事件列執行完后執行的事件列,即非活躍事件列執行優先級僅次于活躍事件列。如帶PLI例程的回調過程(tf_synchronize()、vpi_register_cb(cb_readwrite))。非活躍事件列中的事件亦可以觸發其他事件。如果觸發了優先級更高的活躍事件,非活躍事件列中的其余事件執行后移。

          1.3 非阻塞賦值更新事件列

          活躍事件列中的每個非阻塞賦值RHS估值,都會觸發一個與之對應的非阻塞賦值更新事件,這些事件被放在非阻塞賦值更新事件列中,執行優先級次于活躍與非活躍事件列。非阻塞賦值更新事件亦可以觸發其他事件。若在非阻塞賦值更新事件列中,存在多個對同一變量的先后賦值,只有最后一個有效,其余值將被覆蓋。

          1.4 監控事件列

          監控事件列被放在非阻塞賦值更新事件列后。由此可見,用監控事件列中的監控命令監控得到的值都是賦值后的值,活躍事件列$display系統命令則可以查看非阻塞更新前的值。

          1.5 未來事件列

          在執行事件時,如果事件含有延時,為不阻礙仿真的繼續執行,該事件將被掛起而放入未來事件列。未來事件包含未來非活躍事件和未來非阻塞賦值更新事件。

          理解阻塞與非阻塞賦值就需要深入理解層積事件列,層積事件列反應了Verilog事件處理機制。

         


        上一頁 1 2 下一頁

        關鍵詞: Verilog HDL 阻塞屬性

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 济阳县| 册亨县| 凤城市| 都江堰市| 安岳县| 锡林浩特市| 桑日县| 奉化市| 仁怀市| 五大连池市| 沾益县| 古交市| 唐海县| 柏乡县| 宁蒗| 阜平县| 长治市| 斗六市| 长阳| 千阳县| 博白县| 滁州市| 祁连县| 井研县| 凤台县| 咸阳市| 广水市| 阿尔山市| 峨眉山市| 福清市| 洛隆县| 辽源市| 漯河市| 淳化县| 本溪| 抚顺县| 巴林右旗| 南召县| 博兴县| 贡觉县| 绥德县|