模擬過程是基於事件(Event)的,時間只前進,不後退。 前進的尺度與模擬時間解析度和時間單位有關。
執行過程分三個階段:
- 目標描述
- 模組實例和連接模組的通道的初始化
- 設定trace時間單位和模擬分辨率
- sc_clock 的初始化
- sc_time 類型資料的初始化
- 初始化
- 整個 SystemC 模擬的執行過程由 SystemC 調度器(Scheduler)控制,初始化是其執行的第一步
- SystemC 核心語言函式庫定義了三種process:
- SC_METHOD
- SC_THREAD
- SC_CTHREAD
- 在初始化階段,預設情況下每一個程序都被執行一次,THREAD 程序執行到第一個 wait() 語句
- 透過 don't_initialize() 函數可以關閉對進程的初始化
- 在初始化階段,進程的初始化順序是不確定的;但不同次執行中進程的初始化順序是確定的。 因此用不同編譯器可能產生不同的運行結果。
- 模擬
- 從第一次遇到 sc_start() 開始到預先設定的模擬時間結束或遇到 sc_stop()
- 預先設定的仿真時間由 sc_start() 決定,如:


如果缺省的時間單位為 ns 且程式碼中沒有使用 sc_stop(),則模擬進行 500ns
如果 sc_start() 的參數為空,則模擬會進行到遇到 sc_stop()
沒有留言:
張貼留言