本發(fā)明涉及一種基于UVM平臺的PCIE回環(huán)自檢測的方法,具體涉及UVM驗(yàn)證平臺以及PCIE橋的主從塊的連接問題。
背景技術(shù):
現(xiàn)有PCIE的總線接口(AXI)橋沒有涉及到其中主(master)模塊和從(slave)模塊相連接的問題?,F(xiàn)有的PCIE也沒有涉及到使用UVM驗(yàn)證平臺來驗(yàn)證PCIE模塊。
應(yīng)用層對PCIE發(fā)送數(shù)據(jù)的時候是通過AXI橋的slave模塊來完成的。使用驅(qū)動器來模擬應(yīng)用層,發(fā)送存儲器寫請求相關(guān)的信號,例如寫地址,寫數(shù)據(jù)等等,發(fā)送到AXI橋的slave模塊,然后slave模塊再發(fā)送到PCIE中的XADM模塊進(jìn)行組包,通過PCIE的發(fā)送端發(fā)送出去。最后,在out_agent中的monitor對mac層的輸出端口進(jìn)行監(jiān)測,當(dāng)監(jiān)測到從應(yīng)用層發(fā)過來的存儲器寫請求包時,monitor組件通過對該包進(jìn)行解析,解析出我們需要的數(shù)據(jù)位,地址位等等,然后通過這些信號,將寫數(shù)據(jù)存放到monitor中的存儲器中。同時,monitor會通知driver發(fā)送一個相關(guān)的完成報文到mac層的輸入端。最后通過slave模塊發(fā)送給應(yīng)用層,通過監(jiān)測器來進(jìn)行監(jiān)測收集。
當(dāng)應(yīng)用層發(fā)送存儲器讀請求包的時候,同樣的,driver2會模擬應(yīng)用層,發(fā)送存儲器讀請求相關(guān)的信號,例如讀地址,數(shù)據(jù)包類型,讀標(biāo)志等等信號,然后經(jīng)過PCIE進(jìn)行組包,再發(fā)送出去,當(dāng)out_agent中的monitor監(jiān)測接收到該包的時候,對其進(jìn)行解析,發(fā)現(xiàn)該包是一個讀請求包,那么,monitor會將解析出來的讀信息(例如讀地址等)發(fā)送到MEM中讀取數(shù)據(jù),并將讀出來的數(shù)據(jù)通知給driver,然后driver組合一個帶數(shù)據(jù)的完成包發(fā)送到mac層的輸入端。最后通過slave模塊發(fā)送給應(yīng)用層,通過monitor2來進(jìn)行監(jiān)測收集?,F(xiàn)有的技術(shù)方案需要多個激勵產(chǎn)生器,需要多個數(shù)據(jù)監(jiān)測器,組件要求多,并且利用率較低,并不是發(fā)每種TLP包都會用到各個組件。相應(yīng)的,在許多的testcase中,有的組件是不工作的。并且,對驗(yàn)證平臺的要求極高,各個組件的聯(lián)系比較多,很容易在平臺中產(chǎn)生bug。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服上述不足,提供一種基于UVM平臺的PCIE回環(huán)自檢測的方法,減少了UVM平臺中的組件,提高UVM平臺各組件的利用率,降低平臺bug的產(chǎn)生。本發(fā)明的目的是這樣實(shí)現(xiàn)的:一種基于UVM平臺的PCIE回環(huán)自檢測的方法,通過信號匹配模塊將AXI橋的master和slave模塊連接起來,來實(shí)現(xiàn)master和slave的自檢測,將master發(fā)送給應(yīng)用層的讀寫請求包以及完成包,作為應(yīng)用層發(fā)送給slave模塊的讀寫請求包以及完成包。
其進(jìn)一步的技術(shù)方案具體步驟如下:
1)在對于一個存儲器寫TLP包,通過將transaction產(chǎn)生的數(shù)據(jù)包發(fā)送到sequencer中,然后driver從sequencer中獲得數(shù)據(jù)包并發(fā)送給連接mac層接收端的interface,完成對mac層接收端的寫存儲器包的輸入;
2)該包會經(jīng)過數(shù)據(jù)鏈路層的LCRC檢測,事物層的ECRC檢測,以及事物層的畸形包檢測等。如果包的格式、內(nèi)容等是正確的,則該包會順利的通過PCIE的三層,進(jìn)入到AXI橋的master模塊;
3)經(jīng)過上述master模塊以后,最后將地址信號、數(shù)據(jù)信號、標(biāo)志信號幾種信號發(fā)送給AXI橋的slave模塊;
4)上述slave模塊對信號進(jìn)行組合以后,發(fā)送給PCIE中的發(fā)送器模塊,信號在發(fā)送器模塊中進(jìn)行組合,組合成TLP包的格式發(fā)送給PCIE事物層的發(fā)送端并進(jìn)行添加ECRC,然后在數(shù)據(jù)鏈路層添加LCRC,最后通過mac層發(fā)送出去;
5)在mac層的輸出端,有一個out_agent組件,out_agent組件中的monitor組件用來監(jiān)測收集mac層的輸出端,并具有解析TLP包的功能。當(dāng)解析到該TLP包為存儲器寫TLP包以后,它會將寫地址與寫數(shù)據(jù)解析出來,然后將寫地址與寫數(shù)據(jù)存放到本地的存儲器中。與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:
本發(fā)明通過在AXI橋的master模塊和slave模塊之間添加一個信號匹配模塊,將master模塊和slave模塊連接起來,省去了PCIE需應(yīng)用層的連接來進(jìn)行檢測的問題;大大減少了UVM平臺中的組件,僅需要一個monitor和兩個driver就完成了數(shù)據(jù)的發(fā)送與監(jiān)測,大大減少了工作量,和UVM平臺各組件的利用率;減少了interface的定義,僅在PCIE的mac層的發(fā)送與輸出端定義一個interface,而在PCIE于應(yīng)用層連接的那一端則不需要重新定義interface。
具體實(shí)施方式
本發(fā)明涉及一種基于UVM平臺的PCIE回環(huán)自檢測的方法,所述方法通過將總線接口(AXI)橋的主(master)和從(slave)模塊連接起來,來實(shí)現(xiàn)master和slave的自檢測,將master發(fā)送給應(yīng)用層的讀寫請求包以及完成包,作為應(yīng)用層發(fā)送給slave模塊的讀寫請求包以及完成包。
當(dāng)我們向PCIE的mac層接收端發(fā)送一個讀存儲器TLP包的時候,讀地址應(yīng)該與之前寫tlp包的寫地址一致,這樣才可以進(jìn)行讀操作,否則,讀出的數(shù)據(jù)可能是存儲器中的初始值。同樣的,該TLP包會經(jīng)過PCIE的接收端,進(jìn)行各種數(shù)據(jù)包格式以及內(nèi)容的檢測以后發(fā)送到接收處理模塊(RADM),RADM模塊經(jīng)過判斷數(shù)據(jù)包的類型再送入到AXI橋的master模塊,然后master模塊將這些信號發(fā)送到信號匹配模塊signal_match_mstr,該模塊對各個信號重新進(jìn)行調(diào)整,調(diào)整為可以被AXI橋的slave模塊接收的信號,然后將這些信號發(fā)送給AXI橋的slave模塊。slave模塊將信號發(fā)送給XADM模塊,經(jīng)過XADM模塊的組包操作,進(jìn)入到PCIE的發(fā)送端,經(jīng)過發(fā)送端的ECRC和LCRC的添加,最終由mac層的輸出端輸出到interface中。同時out_agent中的monitor會對interface中的輸出包進(jìn)行監(jiān)測收集,收集完一個整TLP包以后,會對該TLP包進(jìn)行解析,可以解析出該包的類型,地址以及數(shù)據(jù)(如果帶數(shù)據(jù))。當(dāng)發(fā)現(xiàn)該包是一個存儲器讀請求包,那么就會根據(jù)地址來讀取本地的存儲器的數(shù)據(jù),然后將該地址和讀出的數(shù)據(jù)組合成一個transaction發(fā)送到另一個單獨(dú)的in_agent1中的driver中。其中,out_agent和in_agent1之間是通過UVM平臺中定義的端口相連接的,而out_agent中的port是和其中的monitor的port直接相連,in_agent1中的port是和其中的driver的port直接相連,這樣就達(dá)到的out_agent中的monitor和in_agent中的driver相連的目的。當(dāng)in_agent1中的driver接收到out_agent中的monitor發(fā)送過來的帶有地址和數(shù)據(jù)的數(shù)據(jù)包以后,會對該數(shù)據(jù)包把地址和數(shù)據(jù)解析出來,然后將地址和數(shù)據(jù)組合成完成包,包中的其他內(nèi)容由自己定義,尤其是表示cpl包的類型的比特位。將cpl包組合完成以后,再通過in_agent1中的driver發(fā)送到PCIE的接收端的mac層,該完成包再經(jīng)過PCIE的接收端的mac層、數(shù)據(jù)鏈路層(主要對LCRC進(jìn)行檢測)、事物層(主要ECRC檢測以及畸形包檢測)以后,發(fā)送到RADM,RADM檢測到該包的數(shù)據(jù)類型為存儲器讀的完成包,則會發(fā)送到AXI橋的slave模塊,該模塊將包解析以后再把解析后的信號發(fā)送到信號匹配模塊(signal_match_slv)。各個信號經(jīng)過信號匹配以后,會被匹配模塊發(fā)送到AXI橋的master模塊。而此時,AXI橋的master模塊會認(rèn)為是應(yīng)用層發(fā)送過來的模塊,并不會報錯。然后master模塊將信號發(fā)送到PCIE發(fā)送端的XADM模塊進(jìn)行組包,最后又PCIE發(fā)送端mac層的輸出端輸出。而此時,連接mac層輸出端的out_agent又回監(jiān)測收集到該包,發(fā)現(xiàn)該包是一個存儲器讀的完成包,然后,將該包進(jìn)行解析,解析出地址與數(shù)據(jù)以后,與本地的相應(yīng)的地址所對應(yīng)的數(shù)據(jù)進(jìn)行對比,檢查該完成包在PCIE中流動的過程中有沒有出現(xiàn)錯誤。