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





