概述UVM中analysis?port
[導(dǎo)讀]如果testbench中monitor的數(shù)據(jù)有多個分析用途(例如存在多個RM),我們最好在不同的組件中獨立地進(jìn)行處理。這就導(dǎo)致了一對多的port連接(廣播,也可以稱之為觀察者OOP設(shè)計模式)。信息源執(zhí)行單個寫操作向所有觀察者廣播數(shù)據(jù)。所有其他UVM?TLM?ports?和expo...
如果testbench中monitor的數(shù)據(jù)有多個分析用途(例如存在多個RM),我們最好在不同的組件中獨立地進(jìn)行處理。這就導(dǎo)致了一對多的port連接(廣播,也可以稱之為觀察者OOP設(shè)計模式)。信息源執(zhí)行單個寫操作向所有觀察者廣播數(shù)據(jù)。
所有其他UVM?TLM?ports?和exports,如blocking put ports和blocking put exports都是點對點通信。
UVM?Analysis port的另一個要求是“不要干擾DUT”,這意味著廣播的行為必須是一個非阻塞性的操作。Analysis?exports中的write()需要實現(xiàn)為function而不是task。UVM提供了三個對象來滿足觀察者模式的要求:analysis portsanalysis exportsanalysis fifos?Analysis ports、analysis exports和analysis fifos遵循標(biāo)準(zhǔn)UVM TLM通信。analysis port需要通過connect()方法連接到一個analysis export,這個analysis export提供write()方法當(dāng)代碼調(diào)用analysis port上的write()函數(shù)時,該端口將使用其內(nèi)部列表,通過調(diào)用所有exports端口上的write()來進(jìn)行廣播。?如果沒有export port被連接到Analysis port,然后當(dāng)調(diào)用write() 函數(shù)時,不執(zhí)行任何操作。與其他TLM?exports一樣,analysis export有兩種類型:hierarchical export或"imp" export,它們都可以連接到一個port。一個“imp”?export 被放置在一個component 以實現(xiàn)write()函數(shù)。
所有其他UVM?TLM?ports?和exports,如blocking put ports和blocking put exports都是點對點通信。
UVM?Analysis port的另一個要求是“不要干擾DUT”,這意味著廣播的行為必須是一個非阻塞性的操作。Analysis?exports中的write()需要實現(xiàn)為function而不是task。UVM提供了三個對象來滿足觀察者模式的要求:analysis portsanalysis exportsanalysis fifos?Analysis ports、analysis exports和analysis fifos遵循標(biāo)準(zhǔn)UVM TLM通信。analysis port需要通過connect()方法連接到一個analysis export,這個analysis export提供write()方法當(dāng)代碼調(diào)用analysis port上的write()函數(shù)時,該端口將使用其內(nèi)部列表,通過調(diào)用所有exports端口上的write()來進(jìn)行廣播。?如果沒有export port被連接到Analysis port,然后當(dāng)調(diào)用write() 函數(shù)時,不執(zhí)行任何操作。與其他TLM?exports一樣,analysis export有兩種類型:hierarchical export或"imp" export,它們都可以連接到一個port。一個“imp”?export 被放置在一個component 以實現(xiàn)write()函數(shù)。





