2017-07-17 103 views
0

我期待爲SPI和UART總線設計總線功能模型。首先,我想了解一下我對公共汽車功能模型的看法是否正確。總線功能模型(系統Verilog)

它應該模擬總線事務,而不用擔心底層的實現細節。

例如, 如果我要爲SPI總線構建BFM,則設計應該能夠模擬SPI上的事務,充當基於某種協議的主節點,例如從文件讀取指令,然後顯示它們在相應的模擬器上,

例如,將數據字節0c發送到從地址0f的通用數據傳輸指令(如send_write(0x0c,0x0f))應該將片選線驅動爲低電平並相應地發送數據位基於SPI模式的時鐘邊沿,是我對BFM在這種情況下的正確理解嗎?

現在我不明白這是什麼,它有什麼用? 在DUT和Te​​stBench之間放置BFM的位置,以及它如何幫助系統設計人員。

我也想知道是否有已經建成並測試任何參考BFMS可用來研究,

我會很感激,如果有人可以幫助我用一個例子,最好是在系統的Verilog。

+0

的一個很好的例子是任何行爲的交易精確的模型提供RTL刺激作爲intrpreting其輸入,用Verilog或C++或任何的結果。 https://en.wikipedia.org/wiki/Bus_Functional_Model。你可以谷歌的。 – Serge

回答

1

所以不得不調研了很多關於這個,所以我想我會回答,但這裏的是什麼主意,

模擬總線的交易,就像讀了總線功能模型(BFM)的思考和WRITE,減少了對同一時間進行時序分析的測試平臺的開銷。對BFM有更多的解釋,BFM通常通過使數據更專注於減少測試平臺的工作。

好吧,這是一個高層次的答案,讓我們深入一點,BFM的

覺得作爲測試平臺塊內,它位於整個塊,當測試臺需要執行的任務例如,他想寫一個特定的地址,它要求BFM在該地址寫入BFM,這是一個黑盒子,用於測試臺,同時負責處理時間。它可以由可以由測試臺加載的文件驅動,也可以由測試臺用於執行事務的一堆任務來驅動。

被測設計(DUT)對BFM交易的響應是測試人員對設計感興趣的。有人可能會爭辯說,BFM可能會根據DUT而改變,這就是每個人所說的更好的BFM的區別。

如果BFM可以有一個可以加載的配置向量,以根據DUT規範進行初始化和行爲,那麼它可以幫助測試其他設計。

此外,BFM可以定義爲抽象的虛擬函數(在SV中),它可以基於DUT進一步具體實現。

virtual class apb_bfm; 
pure virtual task writeData(int unsigned addr, int unsigned data); 
pure virtual task readData (int unsigned addr, output int unsigned data); 
pure virtual task initializeSignals(); 
endclass 

上面BFM抽象是對於APB萬事達,即確實提到的,每個這些的低級別的細節必須由接口被封裝並以具有時鐘的健全性以及計時塊的任務抽象接口類型。我在本節中引用了一本書,它精美地描述瞭如何構建測試平臺和設計事務級模型(TLM)。閱讀這篇文章將使你很好地理解如何設計一個。

另外這paper關於抽象BFMs提供了一個好的想法,如何BFM應該建模爲一個好的設計。 APB示例源自此。

以下關於如何將BFM放置在測試框架中的圖像是我可以從Bergeron的書中收集的。

An implementation of how a BFM could sit in between the test-bench and the Design Under Test

希望那會是什麼BFMS有一個基本的瞭解。當然,寫一篇文章並開始工作很困難,但是這些基礎知識可以讓你對它有一個高層次的瞭解。

參考書籍: Bergeron,J.(n.d.)。在System Verilog中編寫TestBenches。斯普林格。

0

BFM是一個具有雙重角色的VIP。它可以充當驅動程序或監視器/接收器。在驅動程序角色中,它使用接口句柄打包事務並使其在信號級別驅動,否則DUT無法接受事務(它僅具有信號接口)。作爲接收方,它將通過接口句柄傳輸的信號解包到事務處理中,並將其發送到Scoreboard/Checker。在某些情況下,它也可以充當協議檢查器。

你可以在我的經驗BFM得到BFM使用這裏 http://www.testbench.in/SL_00_INDEX.html