Analysis port
每個(gè)組件通過其TLM接口與系統(tǒng)中的其他組件進(jìn)行通信,用于給DUT發(fā)送激勵(lì)或者對(duì)DUT的行為進(jìn)行響應(yīng)。
然而,在任何絕大多數(shù)復(fù)雜的驗(yàn)證環(huán)境中,特別是隨機(jī)驗(yàn)證環(huán)境中,需要將收集到的transaction發(fā)送給環(huán)境的其他部分,以便進(jìn)行端到端檢查(scoreboard)或收集接口覆蓋率。
這兩種類型的TLM通信的區(qū)別在于,put/get ports通常需要一個(gè)相應(yīng)的export來提供實(shí)現(xiàn)。對(duì)于analysis port來說,一個(gè)monitor能夠產(chǎn)生一個(gè)transaction而不用關(guān)心連接了哪些組件。各個(gè)不同的analysis components連接到monitoranalysis_port,以不同的方式處理transaction。
類比于,互聯(lián)網(wǎng)上看到同一個(gè)新聞,不同的人會(huì)產(chǎn)生不同的反應(yīng),有的人興高采烈,有的人捶胸頓足。這就是訂閱者模式。
uvm_analysis_port
uvm_analysis_port是一個(gè)特別的TLM port,其接口包含一個(gè)函數(shù) write()。
uvm_analysis_port包含一個(gè)連接到它的analysis_exports列表。當(dāng)組件調(diào)用analysis_port.write()時(shí),analysis_port會(huì)遍歷該列表并調(diào)用每個(gè)analysis_export的write()方法。如果沒有任何連接,write()的調(diào)用就直接返回。因此,一個(gè)uvm_analysis_port可以連接到0個(gè)、1個(gè)或者多個(gè)analysis_exports,但analysis_port.write()操作并不取決于連接的analysis_exports數(shù)量。
因?yàn)閣rite()是一個(gè)void function,所以write()將總是在同一個(gè)delta cycle內(nèi)完成,無論連接了多少個(gè)組件。
在上一層環(huán)境中,analysis port被連接到相應(yīng)組件的analysis export,如coverage collectors和scoreboards等等。
Analysis Exports
與其他TLM連接一樣,連接到analysis port的每個(gè)組件都要通過analysis_export提供write()的實(shí)現(xiàn)。
uvm_subscriber基礎(chǔ)驗(yàn)證組件可以用來簡(jiǎn)化這個(gè)操作 ,所以一個(gè)典型的 analysis component會(huì)擴(kuò)展自u(píng)vm_subscriber:
與上面描述的put()和get()一樣,analysis port和analysis_export之間的TLM連接,需要允許analysis_export提供write()的實(shí)現(xiàn)。如果多個(gè)analysis_export被連接到一個(gè)analysisport,該端口將依次調(diào)用每個(gè)analysis_export的write()方法。
所有write()的實(shí)現(xiàn)都必須是function,analysisport的write()function會(huì)立即完成,不管連接到多少個(gè)analysis_export。
當(dāng)多個(gè)uvm_subscriber連接到一個(gè)analysisport時(shí),每個(gè)uvm_subscriber都被傳遞同一個(gè)transaction對(duì)象的指針,即write()調(diào)用的參數(shù)。每個(gè)write()的實(shí)現(xiàn)都必須copy這個(gè)transaction對(duì)象,然后對(duì)copy的對(duì)象進(jìn)行操作,以避免破壞傳遞相同指針的其他transaction對(duì)象內(nèi)容。
UVM還包括一個(gè)Analysis_fifo,它是一個(gè)包括analysis_export 的uvm_tlm_fifo,以允許blocking components訪問analysisport傳遞的transaction對(duì)象。
analysis_fifo是unbounded的,所以monitor的write()可以保證立即完成,然后,analysis組件可以隨意從analysis_fifo中獲取transaction。
-
UVM
+關(guān)注
關(guān)注
0文章
182瀏覽量
19208 -
TLM
+關(guān)注
關(guān)注
1文章
32瀏覽量
24772 -
Analysis
+關(guān)注
關(guān)注
0文章
17瀏覽量
10257
原文標(biāo)題:UVM中的Analysis port
文章出處:【微信號(hào):芯片驗(yàn)證工程師,微信公眾號(hào):芯片驗(yàn)證工程師】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論