當前,OSCI TLM1.0抽象模型在工業界的SoC電子系統級設計中已得到廣泛應用,如早期的軟硬件集成、系統性能分析、結構設計、功能驗證等。但隨著抽象層次的提高,采用TLM1.0標準進行建模的事務級模型缺乏實用性,并且仿真速度無法達到要求。
其目標是規范化TLM事務級模型建模標準,提出統一的API及數據結構,提高不同用戶編寫的TLM模型之間的互操作性。TLM2.0標準的體系結構如圖4-28所示。
圖4-28 TLM 2.0標準的體系結構
TLM 2.0支持在發起者(主設備)和接收者(從設備)之間傳遞事務。主設備能夠發起事務,即創建一個新的事務對象,并通過調用TLM2.0核心接口定義的方法進行傳遞。主設備與從設備之間可以直接相連,也可以通過互連單元(總線、片上網絡等)進行相連。
互連單元是一個模塊,它可以訪問事務,但不是事務的發起者或接收者,而只是為發起者和接收者之間提供互連。事務對象所經由的互連單元、事務對象的發起者和接收者之間構成了事務對象所經過的路徑。如圖4-29所示,前向路徑是主設備到從設備,或者互連單元的鏈路,或者鏈路級聯。
事務通過主設備調用的方法直接返回,或者從設備通過另外的方法調用返回事務稱為反向路徑。為了支持前向、反向路徑,模塊間的每一個鏈接都需要一個端口稱為主設備套接字或從設備套接字。
圖4-29 TLM 2.0通信中的前向和反向路徑
為了增強互操作性,TLM2.0中發起事務的主設備和接收事務并作出響應的從設備必須遵循一定的接口標準,稱為事務處理核心接口,包括阻塞傳輸接口、非阻塞傳輸接口、直接存儲接口(DMI,Memory
Interface)和調試傳輸接口(Debug Transport Interface)。
其中,阻塞和非阻塞傳輸接口是主設備、從設備之間進行事務處理的基本接口。兩者均支持時序標注(Timing annotation)和時間解耦(Temporal decoupling)。但阻塞傳輸接口沒有階段(Phase)參數,事務僅有開始和結束兩個定時點,一個調用請求發出后,直到請求被處理完成該調用才返回。
而非阻塞傳輸接口在事務的整個生命周期內支持多階段,即允許模型描述事務處理過程中的多個階段細節(包括TLM 2.0已經與定義的階段UNINITIALIZED_PHASE、BEGIN_REQ、END_REQ、BEGIN_RESP、END_RESP和用戶可擴展階段DECLARE_EXTENDED_PHASE),每一個階段都有一個明確的定時點,調用請求可以不必等待事務處理完成即可返回。直接存儲接口(DMI)允許主設備使用指針直接訪問從設備所在的存儲區域,而不需要使用如前所述的阻塞或非阻塞傳輸接口進行訪問。
DMI避免了對阻塞和非阻塞傳輸接口函數的多次調用,能夠顯著提高模型仿真速度。調試傳輸接口為主設備提供了一個對從設備進行讀寫的方法,可以使主設備在仿真過程中對存儲器、寄存器的內容進行掃描,可用于實現指令集仿真器ISS的單步、斷點等調試功能。
總線是當前電子系統不同模塊間進行交互的基本通道接口,對于總線的事務級建模至關重要。通常,事務級建模采用C++的類對事務進行描述,然而對于不同總線,總線讀寫事務類定義不同。
對于同一總線,不同設計者所編寫的總線事務類也可能不同。這就導致了不同的TLM模型之間互操作性差,不利于系統集成。TLM2.0標準針對總線建模提出了通用Payload類,用于提高總線模型的互操作性。
通用Payload類提供了定義總線模型所需的基本屬性(如地址、數據、字節使能、單字傳輸、突發傳輸、響應等),可方便、快捷地對當前已有的多數總線進行建模。同時,通用Payload還提供了擴展機制,以滿足某些總線標準的特定需求。
為了進一步增強不同事務級模型之間的互操作性,TLM2.0標準對采用SystemC/C++進行高抽象層次建模的編碼風格進行了規范,提出了松散時序(Loosely-timed)和近似時序(Approximately-timed)的編碼風格(注意:編碼風格只是規定了編程語言的規范形式,并不是指某一抽象層次或API)。
松散時序的編碼風格主要使用阻塞傳送接口,使用此種編碼風格的模型對應了兩個時間點,即事務處理的開始點和結束點。松散時序的編碼風格支持如上提到的“時間解耦”,即模型的某部分功能可以在當前仿真時間之前運行,直到一個需要與其他部分進行同步的同步點。時間解耦能夠有效地提高仿真速度,但降低了仿真精度。
松散時序編碼風格非常適用于構建對硬件細節要求不多的嵌入式軟件驗證虛擬平臺,如嵌入式操作系統等。近似時序編碼風格主要通過非阻塞傳送接口進行支持,主要用于體系結構的設計空間探測和性能分析。
在非阻塞傳輸接口中,一個事務往往被精確地劃分為多個執行階段,由不同的定時點進行分割,這些定時點包括請求的開始與結束、應答的開始與結束。為了提高仿真的精度,近似時序編碼風格一般不使用時間解耦。
在實際應用中,松散時序編碼風格和近似時序編碼風格可以根據需要同時使用。此外,TLM2.0標準不提供對于無時序(Untimed)編碼風格的支持,但無時序模型可以由TLM1.0標準提供支持(注意:無時序模型并不是指沒有任何時序信息,而是僅包含有限時序信息的模型,在TLM 2.0標準中通常被歸為松散時序的編碼風格)。
同樣,TLM 2.0也不提供對于周期精確(Cycle-accurate)編碼風格的支持,設計者可借助SystemC和TLM1.0完成周期精確模型的建模。但OSCI將在未來的工作中對近似時序編碼風格進行擴展提出規范化的周期精確的編碼風格。各種編碼風格的應用場合如表4-3所示。
表4-3 OSCI TLM標準不同編碼風格的應用
與TLM 1.0相比,TLM 2.0的改進如下。
? ① TLM 1.0沒有標準的事務處理類,每一個應用根據需要創建專門的事務處理類,因此不同的模型之間的互操作性很差。TLM2.0中針對這一問題,增加了通用Payload類。
? ② TLM 1.0不支持時序標注,因此不同的模型之間缺乏標準的交換時序信息的方法。TLM1.0中一般通過調用wait函數實現延遲,仿真速度較慢。TLM 2.0中通過在阻塞和非阻塞傳輸接口中增加了時序標注,提高了仿真速度。
? ③ TLM 1.0要求通過值或常量引用來交換所有的事務處理對象和數據,影響了仿真速度。TLM2.0針對這一問題,在傳輸接口中允許擴展事務處理對象的生命周期到不同的傳輸調用中。
-
soc
+關注
關注
38文章
4161瀏覽量
218164 -
ESL
+關注
關注
1文章
74瀏覽量
21344 -
模型
+關注
關注
1文章
3226瀏覽量
48807 -
TLM
+關注
關注
1文章
32瀏覽量
24749
發布評論請先 登錄
相關推薦
評論