使用Altium Designer進(jìn)行DDR2的PCB設(shè)計(jì)
本文首先列出了DDR2布線(xiàn)中面臨的困難,接著系統(tǒng)的講述了DDR2電路板設(shè)計(jì)的具體方法,最后給出個(gè)人對(duì)本次電路設(shè)計(jì)的一些思考。本次設(shè)計(jì)中CPU的封裝為BGA844-SOC-Y,DDR2的封裝為FBGA84,DDR2的控制總線(xiàn)采用星形連接,使用的PCB軟件為AltiumDesigner10,參考設(shè)計(jì)教程為《Altium Designer DDR2設(shè)計(jì)教學(xué)視頻》[1]!
1. DDR2布線(xiàn)中面臨的困難
1.1 DDR與CPU之間的布局[1]
(1)DDR2:內(nèi)存與CPU的邊緣間距建議5~8mm;
(2)DDR3:排阻自身長(zhǎng)度為2mm,排阻與CPU邊緣間距建議3mm,排阻與內(nèi)存邊緣間距建議3mm。
1.2 如何設(shè)置Width(信號(hào)線(xiàn)寬)和Clearance(安全間距)?
在封裝BGA844-SOC-Y中,焊盤(pán)的直徑為18.9mil,焊盤(pán)間距為39.37mil,兩個(gè)焊盤(pán)之間的間隔為20.47mil,要想從BGA中引出所有的信號(hào)線(xiàn),必須合理的設(shè)置Width和Clearance等規(guī)則。
圖1 BGA844-SOC-Y焊盤(pán)間距
在《DDR布線(xiàn)規(guī)則與過(guò)程》[2]一文中,交代了線(xiàn)寬與線(xiàn)距的設(shè)置規(guī)則:
(1)DDR的供電線(xiàn)線(xiàn)寬建議8mil以上,信號(hào)線(xiàn)默認(rèn)線(xiàn)寬為5mil;
(2)線(xiàn)與線(xiàn)間距建議采用2W原則為8mil,線(xiàn)與其它sub-class的間距為5mil;
(3)CPU與DDR的區(qū)域規(guī)則:走線(xiàn)線(xiàn)寬為5mil,允許最小間距為3.3mil;
在博通BCM53344開(kāi)發(fā)板中,CPU采用1006-pin FCBGA封裝,DDR3采用FBGA封裝,在BGA的區(qū)域內(nèi),線(xiàn)間距設(shè)為3.098mil,如圖2所示,線(xiàn)寬設(shè)為3.902mil,如圖3所示。
圖2 線(xiàn)距規(guī)則
圖3 線(xiàn)寬規(guī)則
1.3 網(wǎng)絡(luò)分類(lèi)與差分線(xiàn)的設(shè)置
在《DDR2信號(hào)分類(lèi)及等長(zhǎng)設(shè)計(jì)》[3]一文中,DDR2可以分為以下三類(lèi):
(1)差分時(shí)鐘信號(hào):CLK_N,CLK_P;
(2)數(shù)據(jù)線(xiàn)DQ0~DQ15,數(shù)據(jù)掩碼信號(hào)DQM0,DQM1,數(shù)據(jù)選通信號(hào)DQS*_N,DQS*_P;
(3)地址線(xiàn)/控制線(xiàn):除數(shù)據(jù),時(shí)鐘外的其他信號(hào),如A0~A12,WE,CS,BA0~2,CKE等;
可以設(shè)置為以下幾個(gè)class規(guī)則:
(1)DATA_L_BUS:Q0~DQ7,DQM0,DQS0_N,DQS0_P;
(2)DATA_H_BUS:Q8~DQ15,DQM1,DQS1_N,DQS1_P;
(3)ADDR_BUS:除數(shù)據(jù)線(xiàn)外的其他信號(hào);
(4)CLK_DIFF: CLK_N,CLK_P;
1.4 如何確定小T點(diǎn)與大T點(diǎn)的位置?
如圖4所示,小T點(diǎn)對(duì)應(yīng)于DDR2焊盤(pán)扇出后的過(guò)孔C與D,C與D點(diǎn)扇出的走線(xiàn)方式必須保持一致。大T點(diǎn)對(duì)應(yīng)于地址/命令總線(xiàn)的分支點(diǎn)過(guò)孔B,在DDR做等長(zhǎng)布線(xiàn)時(shí),地址/命令總線(xiàn)Net-Class(網(wǎng)絡(luò)類(lèi))每條網(wǎng)絡(luò)滿(mǎn)足:
(1)AB+BC=AB+BD;
(2)每條網(wǎng)絡(luò)的總長(zhǎng)度(AB+BC+BD)均相等。
為了降低DDR等長(zhǎng)布線(xiàn)的難度,通常將大T點(diǎn)設(shè)在C與D的對(duì)稱(chēng)軸上,假如大T點(diǎn)沒(méi)有落在C與D的中軸線(xiàn)上,該怎么辦?
在《用Altium Designer實(shí)現(xiàn)DDR2的等長(zhǎng)布線(xiàn)》[4]和《Altium Designer 中 DDRII SDRAM 的等長(zhǎng)布線(xiàn)》[5]中給出了解決辦法,文中使用了AD里面的From-To Editor 網(wǎng)絡(luò)編輯器,將同一個(gè)網(wǎng)絡(luò)在T點(diǎn)處劃分為3個(gè)部分,然后通過(guò)設(shè)置焊盤(pán)到焊盤(pán)之間的等長(zhǎng)來(lái)實(shí)現(xiàn)DDR的等長(zhǎng)布線(xiàn),有興趣的讀者可以查看原文!
圖4 選取大T點(diǎn)
1.5 BGA自動(dòng)扇出與手動(dòng)優(yōu)化
在使用AD10給BGA自動(dòng)扇出時(shí),需要注意一下幾點(diǎn):
(1)在執(zhí)行自動(dòng)扇出前,BGA上的所有焊盤(pán)均不能連線(xiàn),否則自動(dòng)扇出無(wú)法完成!
(2)FBGA84封裝的DDR2在進(jìn)行自動(dòng)扇出時(shí),扇出的效果非常差,必須使用手工扇出。
對(duì)CPU和DDR2進(jìn)行自動(dòng)扇出,可分別得到圖5和圖6所示所示結(jié)果。
圖5 CPU自動(dòng)扇出
圖6 DDR2自動(dòng)扇出效果
1.6 如何控制等長(zhǎng)誤差
在《DDR2信號(hào)分類(lèi)及等長(zhǎng)設(shè)計(jì)》[3]一文中,等長(zhǎng)誤差如下設(shè)置:
(1)所有信號(hào)線(xiàn)參考差分時(shí)鐘的長(zhǎng)度作等長(zhǎng);
(2)DATA_L_BUS共11根走在同層,與差分時(shí)鐘的長(zhǎng)度誤差25mil;
(3)DATA_H_BUS共11根走在同層,與差分時(shí)鐘的長(zhǎng)度誤差25mil;
(4)ADDR_BUS:與差分時(shí)鐘的長(zhǎng)度誤差200~300mil;
在視頻《Altium Designer DDR2設(shè)計(jì)教學(xué)視頻》中,作者給出了如下的等長(zhǎng)誤差,記地址/控制網(wǎng)絡(luò)類(lèi)(包括差分時(shí)鐘)的等長(zhǎng)目標(biāo)為L(zhǎng)1,數(shù)據(jù)網(wǎng)絡(luò)類(lèi)等長(zhǎng)目標(biāo)為L(zhǎng)2,則:
(1)在地址/控制網(wǎng)絡(luò)類(lèi)中,差分時(shí)鐘長(zhǎng)度設(shè)為L(zhǎng)1,其它等長(zhǎng)誤差控制在L1±200mil之內(nèi);
(2)數(shù)據(jù)網(wǎng)絡(luò)類(lèi)等長(zhǎng)誤差控制在L2±25mil之內(nèi),同一組之間作等長(zhǎng)即可;
(3)L1與L2滿(mǎn)足:0<L1-L2<1000mil!
2. DDR2等長(zhǎng)布線(xiàn)
2.1 區(qū)域規(guī)則ROOM講解
如何放置ROOM?
執(zhí)行Design→Rooms→Place Rectangular Room,給CPU和DDR2添加ROOM,添加后將ROOM名稱(chēng)分別修改為“CPU_ROOM”、“DDR2_ROOM”,如圖7所示。
圖7 添加ROOM
2.2 區(qū)域規(guī)則設(shè)置
(1)如何設(shè)置規(guī)則?
執(zhí)行Design→Rules...即可進(jìn)入規(guī)則編輯菜單。
(2)如何定義ROOM內(nèi)的規(guī)則?
進(jìn)入規(guī)則編輯器后,首先點(diǎn)擊需要編輯的規(guī)則并右擊新建“new rule...”,接著先點(diǎn)擊新鍵的規(guī)則,然后在“Where The First Object Matches”一欄選擇“Advanced(Query)”,在“Full Query”一欄填入“withinroom('name_ROOM')”,最后Apply并單擊OK即可!
上面的name_ROOM為ROOM的名稱(chēng),輸入語(yǔ)法時(shí)請(qǐng)切換為英文輸入法,如果需要同時(shí)給多個(gè)ROOM定義規(guī)則,其語(yǔ)法為:withinroom('name_ROOM')&withinroom('name1_ROOM')&withinroom('name2_ROOM')
(3)如何給PCB定義規(guī)則?
為了引出BGA內(nèi)部走線(xiàn),規(guī)則中的Clearance和Width進(jìn)行如下設(shè)置:
Clearance設(shè)置方案(優(yōu)先級(jí)從下到上依次遞增):
Clearance_CPU : 4 mil withinroom('CPU_ROOM')
Clearance_DDR2 : 4.4 mil withinroom('DDR2_ROOM')
Clearance : 5 mil
Width(最小 / 推薦 / 最大)設(shè)置方案(優(yōu)先級(jí)從下到上依次遞增):
Width_PWR : 12 / 12 / 120 mil
Width_CPU : 4 / 4 / 4 mil withinroom('CPU_ROOM')
Width_DDR2 : 4.4 / 4.4 / 4.4 mil withinroom('DDR2_ROOM')
Width : 5 / 5 / 5 mil
說(shuō)明:Width_PWR為電源網(wǎng)絡(luò)的線(xiàn)寬規(guī)則!
2.3 過(guò)孔、網(wǎng)絡(luò)CLASS及差分線(xiàn)的設(shè)置
(1)如何給PCB定義Via(過(guò)孔)的規(guī)則?
Via(內(nèi)徑 / 外徑)設(shè)置方案(優(yōu)先級(jí)從下到上依次遞增):
RoutingVias_DDR2 : 8 / 16 mil withinroom('DDR2_ROOM')
RoutingVias : 10 / 22 mil
(2)如何設(shè)置網(wǎng)絡(luò)Class
DDR2的所有網(wǎng)絡(luò),可以分為以下3類(lèi):
電源地信號(hào),數(shù)據(jù)信號(hào),時(shí)鐘、地址、控制類(lèi)信號(hào)。
執(zhí)行Design→ Classes...,調(diào)出類(lèi)設(shè)置界面,按下方的規(guī)則對(duì)網(wǎng)絡(luò)進(jìn)行分類(lèi):
POWER_CLASS:GND、VREF、VCC1V8、VTT。
DATA_CLASS:
Data0-7:DRAM0_D0~7、DRAM0_DM0、DRAM0_DQS0_N、DRAM0_DQS0_P;
Data8-15:DRAM0_D8~15、DRAM0_DM1、DRAM0_DQS1_N、DRAM0_DQS1_P;
Data16-23:DRAM0_D16~23、DRAM0_DM2、DRAM0_DQS2_N、DRAM0_DQS2_P;
Data24-31:DRAM0_D24~31、DRAM0_DM3、DRAM0_DQS3_N、DRAM0_DQS3_P;
ADD_CLASS:DRAM0_A0~13、DRAM0_BA0~2、DRAM0_CAS#、DRAM0_CLKE、DRAM0_CLK_N、DRAM0_CLK_P、DRAM0_CS#、DRAM0_ODT、DRAM0_RAS#、DRAM0_WE#
網(wǎng)絡(luò)歸類(lèi)后效果如圖8所示。
圖8 網(wǎng)絡(luò)分類(lèi)
(3)如何設(shè)置差分線(xiàn)?
在軟件左側(cè)欄中,選擇“Differential Pairs Editor”項(xiàng)目,將DDR2的時(shí)鐘和DQS信號(hào)歸為差分對(duì),如圖1.10所示:
差分對(duì)DRAM0_DQS0:DRAM0_DQS0_N、DRAM0_DQS0_P;
差分對(duì)DRAM0_DQS1:DRAM0_DQS1_N、DRAM0_DQS1_P;
差分對(duì)DRAM0_DQS2:DRAM0_DQS2_N、DRAM0_DQS2_P;
差分對(duì)DRAM0_DQS3:DRAM0_DQS3_N、DRAM0_DQS3_P;
差分對(duì)DRAM0_CLK:DRAM0_CLK_N、DRAM0_CLK_P。
圖9 添加差分對(duì)
2.4 小T點(diǎn)設(shè)置
DDR2手動(dòng)扇出效果圖如圖10所示,封裝中心處的過(guò)孔對(duì)應(yīng)為小T點(diǎn),兩個(gè)小T點(diǎn)的中點(diǎn)對(duì)應(yīng)大T點(diǎn)所在的位置。
完成小T點(diǎn)的設(shè)置主要分為以下幾步:
1. 對(duì)左側(cè)的DDR2進(jìn)行手動(dòng)扇出;
2. 全選DDR2扇出的走線(xiàn)和過(guò)孔,對(duì)已選對(duì)象進(jìn)行復(fù)制并以左上第一個(gè)焊盤(pán)作為參考點(diǎn);
3. 將所選對(duì)象復(fù)制到右側(cè)DDR2上,十字光標(biāo)對(duì)準(zhǔn)左上第一個(gè)焊盤(pán)!
以上操作也可稱(chēng)作走線(xiàn)與過(guò)孔的復(fù)用!
圖10 小T點(diǎn)設(shè)置
圖10 小T點(diǎn)設(shè)置
2.5 大T點(diǎn)設(shè)置
將圖10的小T點(diǎn)依次連接,并在兩個(gè)小T點(diǎn)的中心打上過(guò)孔(即大T點(diǎn)),完成后效果如圖11所示。
在連線(xiàn)時(shí)請(qǐng)注意以下細(xì)節(jié):
1. 大T點(diǎn)的位置是允許一定的誤差的,不需要絕對(duì)的中心!
2. 繞線(xiàn)時(shí)需要優(yōu)化電源過(guò)孔的布局;
3. 小T點(diǎn)(過(guò)孔)之間的水平與垂直間距需要保持在30mil以上!
4. 大T點(diǎn)與小T點(diǎn)放置完后,請(qǐng)進(jìn)行上鎖設(shè)置,防止誤刪!
圖11 大T點(diǎn)設(shè)置
2.6 CPU自動(dòng)扇出
執(zhí)行Auto Route→Fanout→Component,點(diǎn)擊CPU封裝即可完成CPU的自動(dòng)扇出,扇出效果如圖12所示。由于規(guī)則的設(shè)置,電源類(lèi)管腳扇出線(xiàn)寬為12mil,信號(hào)管腳扇出線(xiàn)寬為4mil,下圖中打白色圓圈的管腳為無(wú)網(wǎng)絡(luò)的焊盤(pán)。
圖12 CPU扇出
2.7 數(shù)據(jù)互聯(lián)
數(shù)據(jù)類(lèi)總線(xiàn)分為兩部分互連,一部分走頂層,另一部分走L3層!
如圖13所示,為數(shù)據(jù)網(wǎng)絡(luò)類(lèi)DATA0-[D8-15]和DATA0-[D24-31]在頂層的連線(xiàn)效果圖。
圖13 頂層DDR數(shù)據(jù)線(xiàn)互連
如圖14所示,為數(shù)據(jù)網(wǎng)絡(luò)類(lèi)DATA0-[D0-7]和DATA0-[D16-23]在L3層的連線(xiàn)效果圖。
圖14 L3層DDR數(shù)據(jù)線(xiàn)互連
2.8 地址線(xiàn)T點(diǎn)互連
地址與控制類(lèi)總線(xiàn)分為兩部分互連,一部分走頂層如圖15所示,另一部分走底層如圖16所示。
圖15 頂層控制、地址類(lèi)總線(xiàn)連接
圖16 底層控制、地址類(lèi)總線(xiàn)連接
2.9 尋找等長(zhǎng)目標(biāo)
如圖16所示,為地址類(lèi)網(wǎng)絡(luò)長(zhǎng)度分布,根據(jù)網(wǎng)絡(luò)長(zhǎng)度分布,選擇3000mil作為地址類(lèi)網(wǎng)絡(luò)的等長(zhǎng)目標(biāo),等長(zhǎng)誤差控制在±200mil以?xún)?nèi)。
根據(jù)作者描述,地址類(lèi)與數(shù)據(jù)類(lèi)網(wǎng)絡(luò)長(zhǎng)度差應(yīng)小于1000mil,所以將數(shù)據(jù)類(lèi)網(wǎng)絡(luò)等長(zhǎng)目標(biāo)控制在2000mil,數(shù)據(jù)類(lèi)網(wǎng)絡(luò)之間的等長(zhǎng)誤差控制在±25mil以?xún)?nèi)。
2.10 走等長(zhǎng)線(xiàn)
1. 如何走等長(zhǎng)線(xiàn)?
(1)普通信號(hào)線(xiàn),按快捷鍵T+R,差分線(xiàn)按T+I,進(jìn)入等長(zhǎng)布線(xiàn)狀態(tài);
(2)等長(zhǎng)布線(xiàn)時(shí),W鍵上方的1、2、3、4依次對(duì)應(yīng)拐角弧度減小、拐角弧度增大、蛇形線(xiàn)間距減小、蛇形線(xiàn)間距增大等功能!
2 地址類(lèi)等長(zhǎng)
頂層:
圖17 頂層地址網(wǎng)絡(luò)等長(zhǎng)
底層:
圖18 底層地址網(wǎng)絡(luò)等長(zhǎng)
3. 數(shù)據(jù)類(lèi)等長(zhǎng)
頂層
圖19 頂層數(shù)據(jù)網(wǎng)絡(luò)等長(zhǎng)
底層
圖20 L3層數(shù)據(jù)網(wǎng)絡(luò)等長(zhǎng)
2.11 等長(zhǎng)輸出
在Nets查看欄中,復(fù)制需要等長(zhǎng)網(wǎng)絡(luò)的名稱(chēng)和長(zhǎng)度等屬性,粘貼到Excel中并加以整理,即完成了DDR2等長(zhǎng)信息的輸出!
3. 個(gè)人思考
1、為何同一根信號(hào)線(xiàn)在不同區(qū)域(CPU_ROOM、DDR2_ROOM、其它)的線(xiàn)寬會(huì)不一樣?
(1)在其它區(qū)域(DDR與CPU的中間區(qū)域)走5mil的線(xiàn),是通過(guò)阻抗匹配計(jì)算出來(lái)的結(jié)果;
(2)在CPU_ROOM內(nèi)走4mil的線(xiàn)是為了使信號(hào)線(xiàn)從BGA內(nèi)部扇出,那么信號(hào)線(xiàn)在其它區(qū)域?yàn)槭裁床挥?mil的線(xiàn)呢,這里可能是考慮了成本的原因(線(xiàn)寬越小成本越高)。在不影響DDR2性能同時(shí)又要使信號(hào)線(xiàn)成功扇出的情況下,必須使信號(hào)線(xiàn)擁有多重線(xiàn)寬規(guī)則(個(gè)人猜測(cè),沒(méi)有證實(shí)過(guò))!
2、如何最大化利用好布線(xiàn)空間,同時(shí)減小信號(hào)線(xiàn)間的串?dāng)_?
如何最大化利用好布線(xiàn)空間:
地址總線(xiàn)的布線(xiàn)空間最緊張,需要優(yōu)先布局,相鄰信號(hào)線(xiàn)走蛇形線(xiàn)的區(qū)域應(yīng)錯(cuò)開(kāi),走完所有的地址類(lèi)信號(hào)線(xiàn)再走數(shù)據(jù)類(lèi)信號(hào)線(xiàn)!
減小信號(hào)線(xiàn)間的串?dāng)_,可通過(guò)增加信號(hào)線(xiàn)之間的安全間距來(lái)實(shí)現(xiàn),具體方法有:
(1)可以先改變?nèi)值腸learance規(guī)則(優(yōu)先級(jí)設(shè)為最高),比如設(shè)為10mil,如果出現(xiàn)報(bào)錯(cuò)提示可暫時(shí)忽略,走完等長(zhǎng)線(xiàn)后再改回原有規(guī)則!
(2)在走線(xiàn)的側(cè)邊直接畫(huà)出一條無(wú)網(wǎng)絡(luò)的銅線(xiàn),走完信號(hào)后再刪除該銅線(xiàn)!
(3)修改等長(zhǎng)控制參數(shù)中的振幅。
3、相同模塊之間的復(fù)用
在第2.4小節(jié)中,將左側(cè)DDR2的扇出銅線(xiàn)和過(guò)孔進(jìn)行復(fù)用,可以明顯縮短其它DDR2所需的扇出時(shí)間!
尾巴:本文是我首次接觸高速電路設(shè)計(jì)的一次嘗試,通過(guò)文章的形式記錄下學(xué)習(xí)的點(diǎn)滴。本次設(shè)計(jì)并不是一個(gè)完整的工程,在DDR2濾波電容
的放置與優(yōu)化、DDR2信號(hào)完整性仿真、以及PCB阻抗匹配的計(jì)算等方面均未涉及,由于個(gè)人能力有限,文章難免有錯(cuò)誤,希望大家能夠給出
寶貴的建議!
參考:
[1] 《Altium Designer DDR2設(shè)計(jì)教學(xué)視頻》
[2] DDR布線(xiàn)規(guī)則與過(guò)程,
[3] DDR2信號(hào)分類(lèi)及等長(zhǎng)設(shè)計(jì),
[4] 用Altium Designer實(shí)現(xiàn)DDR2的等長(zhǎng)布線(xiàn),https://wenku.baidu.com/view/a1334bfcad51f01dc281f17e.html
[5] Altium Designer 中 DDRII SDRAM 的等長(zhǎng)布線(xiàn),https://wenku.baidu.com/view/424dd712ccbff121dc368324.html?re=view
編輯:hfy
-
cpu
+關(guān)注
關(guān)注
68文章
10989瀏覽量
214800 -
altium
+關(guān)注
關(guān)注
47文章
956瀏覽量
119306 -
DDR2
+關(guān)注
關(guān)注
1文章
102瀏覽量
41814 -
PCB設(shè)計(jì)
+關(guān)注
關(guān)注
394文章
4739瀏覽量
88066 -
華秋DFM
+關(guān)注
關(guān)注
20文章
3497瀏覽量
5076
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
DDR布線(xiàn)在PCB設(shè)計(jì)應(yīng)用,你怎么看?

【PCB設(shè)計(jì)干貨】DDR電路的PCB布局布線(xiàn)要求

DDR2布線(xiàn)經(jīng)驗(yàn)總結(jié)
【漢普觀點(diǎn)】PCB設(shè)計(jì)面臨的挑戰(zhàn)
淺談PCB布線(xiàn)設(shè)計(jì)中DDR2的重要性
DDR2的PCB設(shè)計(jì)如何實(shí)現(xiàn)?
什么是DDR2 SDRAM
DDR2,DDR2是什么意思
MPC8379E與DDR2之間的PCB布線(xiàn)及仿真設(shè)計(jì)

DDR2的PCB設(shè)計(jì)問(wèn)題解決

如何實(shí)現(xiàn)TMS320DM644x數(shù)字媒體系統(tǒng)芯片DMSo實(shí)施DDR2PCB布局

如何實(shí)現(xiàn)在TMS320DM357數(shù)字媒體系統(tǒng)芯片DMS實(shí)施DDR2PCB布局

如何進(jìn)行DDR2高速PCB設(shè)計(jì)和信號(hào)完整性分析的詳細(xì)資料分析

DDR布線(xiàn)在PCB設(shè)計(jì)中的應(yīng)用解析
在DSP上實(shí)現(xiàn)DDR2 PCB布局布線(xiàn)

評(píng)論