飛騰X100 LPDDR顆粒線序配置輔助工具


以下文章從微信公眾號(hào)“烏拉大喵喵”文章導(dǎo)入。
查看原文,可復(fù)制鏈接到瀏覽器:
https://mp.weixin.qq.com/s/QwFoBg6byoqLl-1Matp25Q

正文內(nèi)容:?? ? ??
一、
飛騰X100顯存使用LPDDR4時(shí),需要工程師在X100的固件中去配置線序交換說明,就類似下面這個(gè):
? ? ? ? ?

圖1
我們需要輸入每個(gè)slice中DQ的線序,也需要輸入slice之間的交換關(guān)系,這個(gè)工作量也不小,同時(shí)容易出現(xiàn)錯(cuò)誤,所以開發(fā)了一款輔助小工具,幫助大家快速配置此信息。(工具下載在文末)
? ? ? ? ?
二、
下面我們先簡(jiǎn)單的講述線序配置原則:
我們以X100 demo圖為例子,demo中X100的顯存是如下圖這樣接的。
左邊是X100端的解法,我們可以看到是DQ一一對(duì)應(yīng)引出的。
右邊是顯存LPDDR4這邊的接法,從DDR顆粒角度來看,以slice0為例,8bit接線并不是一一對(duì)應(yīng)的,是亂序的。
所以,我們就不去關(guān)心X100端了,我們只看右邊顆粒端的接線。

圖2
我們?nèi)〕鰜鞮PDDR顆粒端slice0的部分接線。我們可以看到,
LPDDR4的DQ0接到了X100的DQ5上,
LPDDR4的DQ1街道了X100的DQ7上,
……

圖3
那么我們從DDR顆粒角度來看,我們按照LPDDR DQ0~DQ7的順序(之所以這里是從DQ0~DQ7來梳理,是因?yàn)樵韴D從上到下是從DQ0~DQ7的,這樣符合直觀習(xí)慣),把上面的接線整理成表格:
? ? ??

但是因?yàn)樽罱K我們是要去配置X100,所以我們的角度就不能以DDR顆粒了,需要從X100的視角來看。所以我們需要把上面的表,從X100的角度,按照DQ7~DQ0的順序進(jìn)行整理(之所以這里是從DQ7~DQ0來梳理,是因?yàn)閄100的固件配置是從DQ7~DQ0來設(shè)置的):

所以我們?cè)诠碳镝槍?duì)slice0的配置,需要去按照X100 DQ7~DQ0的順序,填入對(duì)應(yīng)的LPDDR4的DQ編號(hào)。
也就是上表LPDDR4那一行,從左到右去抄一下,也就是16057423。當(dāng)然配置的時(shí)候需要補(bǔ)一個(gè)0x,即0x16057423。

圖4
那么這是人工手動(dòng)去梳理的方法,也就是人工將表1改為表2后,再去填入配置的方法。還是那句話,因?yàn)閺膱D2原理圖設(shè)計(jì)上看,我們X100那邊不需要去管,只需要看LPDDR那邊,所以直接能從表1就推導(dǎo)出配置才是我們最需要的。
? ? ? ? ?
三、
好,現(xiàn)在我們來看下這個(gè)填入數(shù)據(jù)的規(guī)律,我們拋去0x這個(gè)不管,其實(shí)我們填入0x16057423中的有效數(shù)據(jù)就是16057423(注意,這個(gè)數(shù)沒有0x了,我們需要認(rèn)為他是十進(jìn)制數(shù),可以念一下,是1千6百零五萬,7千4百二十三)。
因?yàn)樗鞘M(jìn)制,所以我們可以發(fā)現(xiàn):
16057423
=1*10000000 + 6*1000000 + 0*100000 + 5*10000 + 7*1000 + 4*100 + 2*10 + 3*1
=1*10^7?+ 6*10^6 +?0*10^5?+ 5*10^4 + 7*10^3 + 4*10^2 +?2*10^1?+ 3*10^0

那么我們發(fā)現(xiàn),我們從DDR顆粒角度來看,我們只需要按DQ0~DQ7的順序知道對(duì)應(yīng)的X100的DQ是多少就可以。之后,用DDR的DQ值*10的X100的DQ次方,之后再累加就好了。
所以就有了這么一個(gè)工具,我們把LPDDR4這部分電路的接線填入軟件,它就可以算出來需要怎么交換。

它的計(jì)算方法就如上面所說:
0*10^5 + 1*10^7 + 2*10^1 + 3*10^0 + 4*10^2 + 5*10^4 + 6*10^6 + 7*10^3
=0*10^(5%8) + 1*10^(7%8) + 2*10^(1%8) + 3*10^(0%8) + 4*10^(2%8) + 5*10^(4%8) + 6*10^(6%8) + 7*10^(3%8)
=16057423
前面補(bǔ)0x后=0x16057423
之所以這里都除8取余,是因?yàn)閟lice0是0~7的,slice1可是8~15呢,那計(jì)算的時(shí)候可不能*10的8次方或者*10的15次方吧。
? ? ? ? ?
四、
Slice的交換算法也一樣:

所以圖2硬件正確的配置為:

使用軟件計(jì)算得到的配置為:

結(jié)果一致,說明工具有效。
關(guān)鍵源碼:
==工具下載地址==
百度網(wǎng)盤鏈接:
https://pan.baidu.com/s/1mCA01ibW95-TtpVn4INFsw?pwd=a0kd

歡迎飛騰愛好者加入微信交流群。
群內(nèi)大家可以暢所欲言。
在群內(nèi)不需要表露自己的公司和身份,可以群內(nèi)交流遇到的問題,分享自己的調(diào)試心得。
希望大家共建飛騰友誼!
