第六段 analysis port的分析

2021-10-10 22:23:51 字數 1937 閱讀 5540

1)基礎用法:首先它是乙個port,那麼它肯定有對應export,我們在sequencer中定義乙個analysis_port,在接收端定義乙個tlm_fifo,然後在agent中將需要通訊的兩個component連線,在需要傳送的時候,加入port.write(trans),然後通過get函式獲取傳遞來的資料。

2)專案公升級用法:唯一的區別是加入了p_sequencer的使用,呼叫對應的sequencr。

3)底層原理分析:

analysis_port(analysis_export)沒有阻塞和非阻塞的概念。它是乙個廣播,不等與它相連的其他埠的響應。

analysis_port(analysis_export)必須連的imp是analysis_imp. analysis_imp所在的component必須定義個write的function --------- 注意:是function

從原理上看,analysis_port的作用是做廣播(即port與imp相連,一對多),如下圖所示:

在uvm裡面做廣播,首先我們需要造乙個喇叭,也就是create乙個analysis_port。然後要找來聽眾,也就是建立subscriber。

把聽眾的位置記錄在乙個小本本上,也就是在env裡面執行analysis_base庫的connect函式。

讓聽眾接受到廣播之後做出反應。這裡面又分兩步走,一是通過小本本來找聽眾的具體位置,這是要呼叫analysis_port中的write函式。二是找到聽眾後,讓聽眾做該做的事,即在subscriber中具體實現write函式。

analysis_port是uvm_port_base的子類,分析uvm_port_base裡面的connect函式。這裡面用到了乙個m_provided_by,它是uvm_port_base的宣告變數陣列,整個結合在一起看:jb_agent.jb_ap.connect(jb_sb.jb_analysis_export);

這句話做的事情就是,在agent的analysis_port裡搞了乙個陣列,把jelly_bean_sb_subscriber 裡面的jb_analysis_export存在這個陣列裡面。通俗地總結一下:connect這個函式所做的事情是把觀眾的位置記載乙個**上,但僅僅把位置記錄在**上不代表著內容廣播出去了,實質上通過位置**來找到觀眾並且把內容廣播出去是在analysis_port的write函式裡面實現的,下面分析一下write。

uvm_analysis_port裡頭只有乙個write函式,也就是我們呼叫的那個,進入write原始碼看:這裡面的get_if函式就是用來實現「順著位置**找觀眾的」,為了完成這個目的所使用的函式在uvm_port_base,在深入到這裡面,用到乙個m_imp_list,這就很熟悉了,和seq_item_port很類似了,它也在uvm_port_base裡面,是乙個系統自動呼叫的函式。

父類宣告了一堆tlm的虛函式,也就是個空殼,那麼這個write函式是在uvm_analysis_imp中實現,也就是subscriber,這裡的analysis_export就跟我們connect函式連線的analysis_export對應上了。

此外還有analysis_port與analysis_imp的連線,就用put,try_put,can_put,get,try_get,can_get等函式,這裡不過多介紹。

軟體測試六段

能根據測試用例的描述步驟來執行測試用例,能對照用例的預期結果發現產品的問題,能夠清晰準確地將問題記錄下來後反饋給開發,開發能夠讀懂問題描述的含義。對產品需求有一定的了解,能夠根據產品需求分析 設計產品的測試用例,發現問題後能夠進行初步定為。對產品需求和實現都有較為深入的理解,設計用例時會注意用例的有...

天地飛9設定Pixhawk PX4六段開關

分享乙個天地飛9遙控器設定pixhawk px4六段開關的方法。由於博主是美國手 左手油門 這裡三段開關為b,兩段開關為c,控制通道5輸出6種模式。正反設定 起落架 逆 輔助1 正 舵角設定 起落架 52.1 68.5 輔助微調設定 起落架 900 輔助通道設定 通道5 b 正 高階設定 可程式設計...

衝刺第六階段

所遇麻煩 新手總是會不停碰壁,這兩天就是在bug中摸滾打爬。不過靠著谷歌必應,算是一步一步解決了。在這兩天開發中遇到了如下幾個bug 1.hibernate4與spring3的jar包的衝突 2.hibernate延遲載入的錯誤 failed to lazily initialize a colle...