TLM2.0在2009年成為OSCI標(biāo)準(zhǔn),主要用于構(gòu)造總線系統(tǒng)的SystemC模型。盡管如此,當(dāng)TLM2.0被引入到SV,它在構(gòu)造testbench這件事情上也有所建樹,為連接testbench與SystemC模型提供了便利。
本文在介紹TLM2.0時(shí)將主要覆蓋其三大特征:interface,socket和generic payload。
01
Interface
TLM2.0跟TLM-1類似,有port、export和imp這些接口概念。在傳輸類型上,可以分為阻塞和非阻塞。其中非阻塞傳輸通過包含兩個(gè)不同方向的傳輸路徑來實(shí)現(xiàn)雙向傳輸(bi-directional),這兩個(gè)傳輸路徑分別是前向傳輸路徑(forward transport path)和反向傳輸路徑(backward transport path)。這么一結(jié)合,就有了以下TLM2.0接口的九種基本類型。
接下來是傳輸函數(shù)。相比于TLM-1中傳輸函數(shù)put和get,TLM2.0使用的傳輸函數(shù)從SystemC原原本本地遷移了過來,主要由下面三種傳輸函數(shù)。這些傳輸函數(shù)的原型定義在uvm_tlm_if類中,該類也是上面九種接口類的父類的父類的父類。
結(jié)合起來看,TLM2.0接口的基本類型中,會提供對應(yīng)的傳輸函數(shù)供調(diào)用(比如:支持阻塞傳輸?shù)娜齻€(gè)接口類中,都會調(diào)用宏去實(shí)現(xiàn)傳輸函數(shù)b_transport),以及connect函數(shù)供建立連接關(guān)系(connect函數(shù)的主要目的是實(shí)現(xiàn)接口句柄的傳遞)。好在這一部分作為TLM2.0的底層實(shí)現(xiàn),用戶應(yīng)用中可以不去關(guān)心。
02
Socket
TLM2.0最主要的貢獻(xiàn)是提出了socket的概念。Socket在UVM TLM2.0中,實(shí)現(xiàn)上是對port、export和imp的又一層封裝,以提供更加統(tǒng)一和簡潔的連接。下面首先擴(kuò)展一下知識面,說說socket。
Socket,直譯過來叫“插座”,后來由于功能相似被引入到軟件領(lǐng)域,并被翻譯成了“套接字”,首先廣泛用于計(jì)算機(jī)網(wǎng)絡(luò)領(lǐng)域。Socket在計(jì)算機(jī)網(wǎng)絡(luò)模型中,作為應(yīng)用層和傳輸層之間的一個(gè)抽象層,這就意味著,socket為下游的傳輸層(TCP/IP)做了接口封裝,并為上游應(yīng)用層(用戶進(jìn)程)提供網(wǎng)絡(luò)通信服務(wù)(service)。
從整個(gè)通信鏈路角度看,socket就像是某種規(guī)格的插座,服務(wù)端和客戶端通過規(guī)格(域、套接字類型、協(xié)議)匹配的“線纜”插上兩端(通過IP地址和端口名),即可實(shí)現(xiàn)端到端的通信,通信的過程不再需要去關(guān)心中間的通信協(xié)議和實(shí)現(xiàn)細(xì)節(jié)。
當(dāng)Socket的概念被引入到TLM建模,它依然保留著它原本的特點(diǎn):端到端,協(xié)議統(tǒng)一,雙向通信。當(dāng)然,TLM Sockets也有自己的特點(diǎn),比如可用于流量控制的延時(shí)參數(shù)等等。 TLM2.0這套機(jī)制本身可以說是圍繞socket接口展開的。Socket涉及到的類有8個(gè),都是一對一對的,使用的時(shí)候非常方便和干凈。
根據(jù)阻塞性和在通信鏈路中的位置,socket類型可以按照下表分類。
其中IS-A表示面向?qū)ο蟮睦^承關(guān)系,可以理解為“它本質(zhì)是xxxx接口”;HAS-A表示對象之間的關(guān)聯(lián)關(guān)系,可以理解為“它還有一個(gè)xxxx接口”,舉個(gè)例子:用于非阻塞傳輸?shù)膇nitiator的socket(uvm_tlm_nb_initiator_socket),它本質(zhì)是一個(gè)支持前向傳輸?shù)膒ort接口,同時(shí)它還有一個(gè)支持后向傳輸?shù)膇mp接口。
03
Generic Payload
統(tǒng)一的通信事務(wù)(payload)可能是TLM2.0理想的用法,從UVM源碼中可以看到在接口和socket涉及到transaction類型的地方,都用了默認(rèn)類型uvm_tlm_generic_payload. Generic payload的基類是uvm_sequence_item,本質(zhì)上跟之前接觸到的transaction沒有什么兩樣,它可以被看做是TLM2.0為我們定義好的可以直接用于總線系統(tǒng)建模的事務(wù)模板。
因?yàn)槭敲嫦蚩偩€系統(tǒng)建模而創(chuàng)建的transaction,所以generic payload包含的域基本也都跟總線相關(guān),比如地址(m_address)、數(shù)據(jù)(data[])、讀/寫(m_command)、突發(fā)長度(m_stream_width)、字節(jié)掩碼(m_byte_enable[])、響應(yīng)類型(m_response_status)等。如果還有更多的字段,比如memory屬性、安全屬性、ID號等其他sideband信號,可以通過擴(kuò)展m_extensions數(shù)據(jù)結(jié)構(gòu)來進(jìn)行添加。
審核編輯:劉清
-
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19167 -
TLM
+關(guān)注
關(guān)注
1文章
32瀏覽量
24749 -
TCPIP協(xié)議
+關(guān)注
關(guān)注
0文章
35瀏覽量
11930
原文標(biāo)題:UVM中基于SOCKET通信的TLM2.0
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論