我大概訂了系統所要用的Protocol,基本上我只是遵循TLM2中所定義的Base Protocol來實作系統的Protocol,另外我使用AT的Coding Style來實作這個Bus。
而TLM的Base Protocol的在AT中的實作方法有分許多種,如backward path、return path、timing annotation等。我所用的是如下圖所示的timing annotation:
在timing annotation中,initiator(target)會透過nb_transport_fw(nb_transport_bw)傳給target(initiator)一個事先定義好的delay,告訴target(initiator)在經過delay後某個phase才開始。
所以由上圖可看到一開始initiator傳了10ns到target,接著target會將收到的payload放到一個payload event queue中,經過10ns才會開始處理這次的傳輸(即Begin_Req開始)。而下面的End_Req也是一樣。
系統架構:
整個系統流程大概如下:
- initiator設定好payload的參數,並且設定phase為Begin_Req和決定delay後利用nb_transport_fw送至bus。
- bus根據payload中的addr將payload送到對應的target
- target收到payload後,等待delay的時間後,設定phase為End_Req和設定delay,再使用nb_transport_bw將回應送至bus
- bus再將回應送到對應的initiator
- initiator收到回應,等待delay時間後,完成此次的Request
- 當target完成payload所指示的指令後,開始Begin_Resp的phase,整個流程基本上與Req相似,只有傳輸的方向相反而已
基本上我會照這個來implment整個系統。
----------------------------------------------------------------------------------
03/17
補上Coware上關於Bus的分析工具:
Bus Contention Statistics & Bus Contention Trace
Connection Bus Utilization & Master Wait Total & Master Wait Trace
Transation Counts & Transation Duration
Connection Bus Wait & Transation Throughputs & Transation Trace
接著關於今天提出了問題:
- 關於Delay Time,由於沒有Spec之類的東西,所以我就自己定Delay time的大小
- 然後關於Bus的Implementation,有些錯誤的地方,如queue payload會將它更正
4 則留言:
請問品皓與Buffett那端的介面開始做了嗎?
這個經驗可以傳承給敬倫嗎?
可以請Buffett加一個他原本用硬體做的DCT嗎? 假如不難的話. 這樣就是異質的multicore DCT implementation.
我們要開始來討論visulaized的問題, 你可以先舉一下CoWare裡的功能嗎?
"東西還在的話",就沒有問題
我比較想做的是component怎麼對bus產生影響的, 因為每筆transaction的起原者是component, 而非bus.
上面Coware提供的, 我們應該很容易在Gary自己實做的SimpleBus上顯示. 我希望可以多顯示component個別對bus的動作, 以及components相互間的動作timing, 此外就是對這些traffic做一些基本的統計分析.
另外請ruru來開一串講Coware裡的AMBA2.
最近因為Multiple 8051平台的關係,Gary採用了TLM技術,但是當學弟在Trace你的code的時候,有許多不清楚的地方,我只知道TLM的運作,對於如何使用TLM2.0 Lib是無法答覆的。
我想請你做兩件事,
1. 做一份TLM2.0的教學投影片以及Word,從TLM的解釋到Lib怎麼用。
2. 解釋擬為多核8051的TLM是怎麼做的以及程式該怎麼看。
既然要找你這麼不容易,那就請你留下文件可能是比較好的方法。
張貼留言