Closed PaulWang0513 closed 2 years ago
目前把main branch裡的m_axi版優化完了 主要的進步在m_axi port widening 和解決pipeline 的ii violation 目前的架構大概是這樣:
目前latency 922 -> 138 FF 2099 -> 4955 LUT 4456 -> 8878 BRAM 4 -> 0 DSP 25 -> 50
port widening的部分是讓2筆共64bit的資料可以1cycle讀進來,但是輸出的m_axi bus我一直弄不出burst access 和 port widening,所以目前是比較大的bottleneck (streaming 加油?)
在vitis的solution settings -> config interface -> 有個alignment要調成64 bits (8 byte) 才會成功進行port widening。
latency的進步主要是改善ii violation。fc1 / fc2 / maxpool loop之前都沒辦法合出ii=1 (有些的ii是70多...),我看了一下是因為我們的buffer acc / fc2_acc之類的memory port數量太小,所以我把它array partition。acc原本有分成前面接輸入,後面拿來接fc1結果;我把它拆成兩個array in_acc / acc 分開做partition。試很久之後把ii violation解掉了,資源使用也沒有增加太多。
Simulation / co-simulation都有過,但還沒在pynq上測試。
main_v2.cpp v2的部分我沒有試,因為現在bottleneck主要在io上,我覺得進步空間應該還好?有空的人可以試試v2
Learn how the PL access the PS DRAM. Analyze the time cost compared to computing in the iris model. Maybe change to a better data transfer method if needed.