新聞中心

EEPW首頁 > EDA/PCB > 設計應用 > DDR4的PCB設計及仿真

DDR4的PCB設計及仿真

作者: 時間:2024-05-13 來源:頭條 收藏

相對于DDR3, 首先在外表上就有一些變化,比如將內存下部設計為中間稍微突出,邊緣變矮的形狀,在中央的高點和兩端的低點以平滑曲線過渡,這樣的設計可以保證金手指和內存插槽有足夠的接觸面從而確保內存穩(wěn)定,另外,內存的金手指設計也有明顯變化,金手指中間的防呆缺口也比DDR3更加靠近中央。當然,DDR4最重要的使命還是提高頻率和帶寬,總體來說,DDR4具有更高的性能,更好的穩(wěn)定性和更低的功耗,那么從SI的角度出發(fā),主要有下面幾點, 下面章節(jié)對主要的幾個不同點進行說明。

本文引用地址:http://2s4d.com/article/202405/458662.htm


表1 DDR3和DDR4差異

1.2
POD 和SSTL的比較

POD作為DDR4新的驅動標準,最大的區(qū)別在于接收端的終端電壓等于VDDQ,而DDR3所采用的SSTL接收端的終端電壓為VDDQ/2。這樣做可以降低寄生引腳電容和I/O終端功耗,并且即使在VDD電壓降低的情況下也能穩(wěn)定工作。其等效電路如圖1(DDR4), 圖2(DDR3)。


圖1 POD ((Pseudo Open Drain)


圖2 SSTL(Stub Series Terminated Logic)

可以看出,當DRAM在低電平的狀態(tài)時,SSTL和POD都有電流流動


圖3 DDR4


圖4 DDR3

而當DRAM為高電平的狀態(tài)時,SSTL繼續(xù)有電流流動,而POD由于兩端電壓相等,所以沒有電流流動。這也是DDR4更省電的原因


圖5 DDR4

圖6 DDR3

1.3
數(shù)據總線倒置 (DBI)

如上面描述,根據POD的特性,當數(shù)據為高電平時,沒有電流流動,所以降低DDR4功耗的一個方法就是讓高電平盡可能多,這就是DBI技術的核心。舉例來說,如果在一組8-bit的信號中,有至少5-bit是低電平的話,那么對所有的信號進行反轉,就有至少5-bit信號是高電平了。DBI信號變?yōu)榈捅硎舅行盘栆呀浄D過(DBI信號為高表示原數(shù)據沒有翻轉)。這種情況下,一組9根信號(8個DQ信號和1個DBI信號)中,至少有五個狀態(tài)為高,從而有效降低功耗。

圖7 DBI Example

1.4
ODT控制

為了提升信號質量, 從DDR2開始將DQ, DM, DQS/DQS#的Termination電阻內置到Controller和DRAM中, 稱之為ODT (On Die Termination)。Clock和ADD/CMD/CTRL信號仍需要使用外接的Termination電阻。


圖8 On Die Termination

在DRAM中,On-Die Termination的等效電阻值通過Mode Register (MR)來設置,ODT的精度通過參考電阻RZQ來控制,DDR4的ODT支持240, 120, 80, 60, 48, 40, 34 歐姆。

和DDR3不同的是,DDR4的ODT有四種模式:Data termination disable, RTT_NOM,RTT_WR, 和 RTT_PARK。Controller可以通過讀寫命令以及ODT Pin來控制RTT狀態(tài),RTT_PARK是DDR4新加入的選項,它一般用在多Rank的DDR配置中,比如一個系統(tǒng)中有Rank0, Rank1以及Rank2, 當控制器向Rank0寫數(shù)據時,Rank1和Rank2在同一時間內可以為高阻抗(Hi-Z)或比較弱的終端(240,120,80,etc.), RTT_Park就提供了一種更加靈活的終端方式,讓Rank1和Rank2不用一直是高阻模式,從而可以讓DRAM工作在更高的頻率上。

一般來說,在Controller中可以通過BIOS調整寄存器來調節(jié)ODT的值,但是部分Controller廠商并不推薦這樣做,以Intel為例,Intel給出的MRC Code中已經給出了最優(yōu)化的ODT的值,理論上用戶可以通過等方法來得到其他ODT值并在BIOS中修改,但是由此帶來的所有問題將有設計廠商來承擔。下面表格是Intel提供的優(yōu)化方案。


表2 DQ Write ODT Table for 3DPC


表3 DQ Read ODT Table for 3DPC

1.5
參考電壓Vref

眾所周知,DDR信號一般通過比較輸入信號和另外一個參考信號(Vref)來決定信號為高或者低,然而在DDR4中,一個Vref卻不見了,先來看看下面兩種設計,可以看出來,在DDR4的設計中,VREFCA和DDR3相同,使用外置的分壓電阻或者電源控制芯片來產生,然而VREFDQ在設計中卻沒有了,改為由芯片內部產生,這樣既節(jié)省了設計費用,也增加了Routing空間。

圖9 DDR3設計

圖10 DDR4設計

DRAM內部VREFDQ通過寄存器(MR6)來調節(jié),主要參數(shù)有Voltage range, step size, VREF step time, VREF full step time,如下表所示。

表4 參考電壓

每次開機的時候,DRAM Controller都會通過一系列的校準來調整DRMA端輸入數(shù)據信號的VREFDQ,優(yōu)化Timing和電壓的Margin,也就是說,VREFDQ 不僅僅取決于VDD, 而且和傳輸線特性,接收端芯片特性都會有關系,所以每次Power Up的時候,VREFDQ的值都可能會有差異。

因為Vref的不同,Vih/Vil都會有差異,可以通過調整ODT來看Vref的區(qū)別,用一個的例子來說明。對于DDR3,調整ODT波形會上下同步浮動,而調整DDR4 OOT的時候,波形只有一邊移動。


圖11 拓撲


圖12 DDR3仿真結果


圖13 DDR4仿真結果

1.6
DDR4 Layout Routing新方法

在所有的Layout走線中,DDR無需質疑是最復雜的,不僅要考慮阻抗匹配,還要考慮長度匹配,而且數(shù)量眾多的數(shù)據、地址線,不得不考慮串擾的影響。

DDR4數(shù)據速率提高以后,這些方面的影響變得更為嚴重,尤其是現(xiàn)在很多設計為了節(jié)省成本,PCB尺寸和層數(shù)都要求盡可能的變小,這樣對阻抗和串擾的要求就變的更有挑戰(zhàn)性,一般SI工程師和Layout工程師都會想各種辦法來滿足這些需求,很多時候也不得不妥協(xié)折衷,比如在做疊層設計的時候盡量讓線寬變小,在BGA Breakout區(qū)域采用更細的線,等等。但這些方法只能對設計做微小的調整,其實很難從根本上解決問題。最近Intel研究發(fā)現(xiàn)的一種新方法很有意思,可以在一定程度上很好的平衡阻抗(線寬)和串擾(線間距)。在此整理出來供大家參考。

先來看一個實際的Layout例子,兩根紅線之間的走線采用鋸齒形狀。沒錯,這就是Intel新研究出來的新方法,官方名稱為“Tabbed Routing”。


圖14 DDR4 Tabbed Routing

Tabbed Routing主要的方法是在空間比較緊張的區(qū)域(一般為BGA區(qū)域和DIMM插槽區(qū)域),減小線寬,而增加凸起的小塊(Tab),如下圖所示。


圖15 Tab routing方法

這種方法可以增加兩根線之間的互容特性而保持其電感特性幾乎不變,而增加的電容可以有效控制每一層的的阻抗,減小外層的遠端串擾。仿真結果如下圖所示。



圖16 HFSS仿真結果

由仿真結果可以看出來,該方法對阻抗和遠端串擾確實可以很好的平衡,當然,對于Tab的尺寸,需要根據實際PCB做詳細的仿真設計,Intel也提供了一些Tool可以參考。有興趣的讀者,可以參閱更多資料

2DDR4 Simulation

2.1
Pre-Simulation with HyperLynx

如果Controller和DRAM都有IBIS模型,可以用HyperLynx對DDR4進行很方便的Simulation, 仿真方法和其他DDR相同,通過Pre-Simulation, 可以對整個系統(tǒng)的拓撲以及一些細節(jié)進行確定,比如Impedance(由Stackup以及線寬和線間距來確定),ODT值的選擇,T型結構中Stub長度的控制,ADD/CMD/CTRL終端電阻的取值大小等等。

2.1.1 ADD/CMD/CTRL終端電阻取值

假設ADD電路如下,工作在2400MTs(Add/CMD為1.2Gbps),發(fā)送端為U16,采用Fly-By結構到五組DRAM芯片,每組DRAM采用T結構(實際Layout中,Top面一個DRAM芯片,Bottom面一個DRAM芯片),T型長度的Stub為77mil, 終端電阻為32歐姆,終端電壓為0.6V。


圖17 ADD仿真拓撲

由仿真結果可以看出來,T型結構兩端因為完全對稱,所以波形幾乎一樣,為了方便觀察,只看其中一個波形,離Controller由近及遠,DRAM分別為U5, U4, U3, U2, U1, 其眼圖分別如下:

可以看出來,距離Controller越近的芯片,其波形越“亂”,但是上升沿卻很快,而距離終端電阻越近的芯片,其波形越好,但是上升沿卻變慢。那么如何才能得到最優(yōu)化的波形呢,下面通過掃描終端電阻的值看看是否會提高信號質量,通過HyperLynx的Sweep功能,設置終端電阻阻值為27,33,39,45四個阻值。

圖18 Sweep設置 圖19 Sweep設置

U5(距離Controller最近)的眼圖如下,依次對應終端電阻阻值為27,33,39,45歐姆:


U4的眼圖如下,依次對應終端電阻阻值為27,33,39,45歐姆:

U3的眼圖如下,依次對應終端電阻阻值為27,33,39,45歐姆:

U2的眼圖如下,依次對應終端電阻阻值為27,33,39,45歐姆

U1的眼圖如下,依次對應終端電阻阻值為27,33,39,45歐姆

從上面的波形可以看出來,對應每一個DRAM的第三張波形都是最好的,也就是說對應39歐姆的終端電阻可以得到最優(yōu)化的波形。

2.1.2 Data信號Stub的長度

一般DDR4的設計中,Data信號都采用Pin to Pin的設計方式,但在某些設計中,由于PCB空間限制或者控制器限制,也有需要采用一拖二的設計(T型結構),在筆者所遇到的一個設計中,就遇到這種情況,綜合考慮下面兩種方案,如果采用T型拓撲結構,如圖20所示,可以最大可能的節(jié)約PCB空間,但是如果DIMM0或者DIMM1只插一根的時候,另一邊會有較長的Stub出現(xiàn),對信號質量會有影響。如果采用菊花鏈結構,如圖21所示,在只插DIMM0的情況下,同樣會有Stub影響。而且這種拓撲結構需要DIMM0和DIMM1之間的信號線之間滿足長度匹配,在DIMM0和DIMM1比較靠近的情況下,繞線會有一定難度。而如果增加DIMM0和DIMM1的距離,其Stub會變得更長,信號質量沒有辦法得到控制。從信號完整性方面考慮,兩種方案均會存在Stub的影響,但是從Layout的角度來看,方案一有一定便利性,而且其Stub可以控制在500mil以內。所以最終選擇方案一作為最終方案。當然,這種設計是以犧牲信號Margin作為代價的,信號速率會收到一定影響,在筆者的項目中,在只插一根內存的時候,信號速率最大只能跑到1866Mb/s.


圖20 DDR4 T型結構

圖21 DDR4菊花鏈結構

從仿真的角度出發(fā),這種仿真需要考慮的因素很多,控制器模型,PCB模型,Connector模型,以及最后的內存條模型,而通常情況下,Connector模型和內存條模型很難拿到,而且有時候就算拿到,也是不同類型的模型,整體Channel仿真需要更多時間和精力來完成。

如果時間有限,需要對設計做快速評估,用HyperLynx做快速仿真也是可以參考的,在下面的例子中,假設一個Conntorller需要驅動兩根DIMM或者兩顆內存顆粒,系統(tǒng)工作在2400Mb/s, TL2和TL3的長度可以用來大概評估PCB Stub長度加上Connector長度加上內存條長度。(此處只是用來做大概評估,如果時間條件運行,強烈建議拿到各個部分精確模型做比較準確的仿真)。

從這個簡單的仿真可以看出來,Stub對于信號質量的影響還是很明顯的,特別對于一根內存槽懸空的狀態(tài)下,上面的例子中,Stub達到1000 mil的時候,在只插一根內存的情況下,眼圖已經非常糟糕,所以在實際設計中,需要在設計成本和信號速率之間進行均衡,取舍。在筆者所做的設計中,因為PCB空間限制,最終選擇在單根內存的時候只跑到1866Mb/s。


圖22 數(shù)據線仿真拓撲

在Stub長度為500mil的時候,兩根內存都插和只插一根的眼圖如下:

在Stub長度為1000mil的時候,兩根內存都插和只插一根的眼圖如下:

在用Intel的芯片作為DDR Controller做設計的時候,Intel所提供的SI Model可以提供一個比較完整的仿真,Intel所提供的Simulation Deck中,包含了DDR連接器,DIMM模型,如果能找到和實際項目匹配的模型,可以替換Deck中的模型,如果找不到模型,直接用Deck中所提供的模型也是非常有參考意義的。

2.2
Intel SISTAI仿真

Intel所提供的Memory Bit Error Rate Executable (MBERE) tool集成在其Intel SISTAI(Signal Integrity Support Tools for Advanced Interfaces)網站系統(tǒng)上面,SISTAI可以進行PCIE,SATA, USB,QPI等等高速信號的仿真,DDR4仿真模塊為MBER, 其基本思想是先基于Hspice產生一個Step Response, 然后把仿真結果.TR0文件放進SISTAI系統(tǒng)進行計算,產生Worse Case的眼圖,大致仿真流程如下:

2.2.1 DDR通道建模

Intel的仿真基于10根線模型,八根DQ線加上兩根DQS線,可以用Intel提供的Causal-W Element Tool來產生W Element models, 也可以用ADS,Hspice等工具對傳輸線建模,對于Post-Layout來說,可以使用PowerSI, Siwave等軟件提取DDR通道的S參數(shù)。注意這里的DQ和DQS的順序必須和Intel提供的順序相同,如圖23所示。

圖23 DDR數(shù)據線建模

2.2.2 Hspice仿真

Intel仿真模型還是比較詳細,提供了各種模型以及各種不同情況下的Simulation Deck, 在實際仿真的時候,需要用實際設計的模型替換Deck中的參數(shù),以S參數(shù)為例,假設提取了整個DDR通道的S參數(shù),那么需要在pcakage的參數(shù)之后加入PCB通道模型,如下圖第二個紅框所示,之前的一些參數(shù),可以刪除或者加上*號來Block掉。

圖24 Intel仿真模型


圖25 Hspice編輯實例

Hspice仿真得到Step Response, 結果如下:


圖26 Hspice仿真結果

2.2.3 SISTAI仿真

得到Tr0文件后,需要把Tro放到SISTAI系統(tǒng)中進行計算,操作流程如下:

圖27 SISTAI仿真方法

點擊Success可以得到仿真結果,比較遺憾的是,SISTAI只能看到眼寬,眼高等仿真數(shù)據,并不提供眼圖的顯示。


圖28 SISTAI仿真結果

Intel的文件中也提供了Spec可以對仿真結果進行對比判斷


表5 DQ Write Eye Target Minimums


表6 DQ Read Eye Target Minimums

3DDR4 RMT Margin測試Fail問題實例

3.1
設計情況

該設計采用Intel Haswell-EP CPU作為DDR4 Controller, 采用3DPC(DIMM Per Channel)的設計,如下圖29所示。DDR4運行速率為1600Mb/s。


圖29 DDR4設計拓撲

3.2
問題描述

主板做好后,需要對DDR4信號進行測試驗證,但是對于內存條類的DDR4,測試點非常難找,測試結果也很不準確,所有選擇只測試Memory Margin。在用Intel提供的Margin測試工具RMT進行測試的時候,測試了各種不同廠商的內存條,分別有Hynix 8G, Hynix 16G, Samsung 8G, Samsung 16G, Samsung 32G, Micron 8G, Micron 16G, 其中只有Micron 8G 結果顯示RxVLow, RxVhigh的值小于14(Spec為大于等于14),其他內存條測試結果均滿足Spec要求。


表6 RMT測試結果

3.3
Memory Margin Test

上面說了RMT測試Fail,但是RMT測試是什么呢?下面對Memory的一般測試做大概介紹。眾所周知,實際PCB做好后,我們需要對其進行測試以驗證信號完整性。通常是采用示波器測試對DDR信號線在讀寫時的信號質量,但是這種測試存在很大的局限性,比如DDR信號到達每一個Component端的測點無法被點測到,測試點往往距離芯片pad還有一段距離,需要一些額外的測試設備,這樣勢必會影響準確性,另外,DDR信號讀寫分離一直都比較難處理,即使使用儀器廠商提供的專業(yè)測試軟件,也往往看不到非常準確的波形,還有測試點只位于芯片外部, Memory Controller內部對信號Timing的調整無法被測到,所以在采用示波器測試波形之外, 還非常有必要進行Memory Margin測試。

圖30 DDR4測試設備

圖31 DDR4測試眼圖

簡單的Memory Margin的測試方法是, 在Controller和DRAM都使用外部VREF供電的條件下, 調節(jié)VREF的電壓幅度, 同時運行Memory Stress Test軟件(如: Golden Memory, MSTRESS 等等), 直到出現(xiàn)測試Fail的VREF值同默認VREF值間的差值, 記為VREF Margin。調節(jié)VREF并不會影響信號傳輸?shù)牟ㄐ? 因為VREF只是芯片接收端(Controller或DRAM)判斷輸入為0或1的判斷依據。然而在DDR4時代,Vrefdq已經集成到芯片內部,我們無法對其進行調節(jié)。

這個時候一些專門的測試軟件就比較方便,比如Intel就提供了RMT和EVTS做為DDR Margin測試。


圖32 Margin測試原理

RMT(DDR Rank Margin Tool),其原理是修改設置, 讓BIOS在開機時自動運行Training程序, 同時通過Debug Port輸出Training的結果, 然后分析輸出的打印信息, 從而得到Memory Margin。所得到的結果不僅僅包含VREF Margin, 還包含Write/Read Timing Margin, ADD/CMD Timing Margin…而EVTS是對RMT的一個補充,可以進行per-bit margin測試,如果Margin不佳,左右或上下不對稱的時候,可以用EVTS 2D Margin來了解成因是否為眼圖形狀所致。

3.4
問題分析

3.4.1 Micron 8G 本體分析

因為其他內存條RMT測試都是PASS的,唯有Micron 8G的測試是Fail,第一點想到的就是DIMM本身問題,聯(lián)系Micron FAE后,Micron懷疑是測試的內存條生產日期太老,版本變更會影響測試結果,然而拿到最新的樣品后,測試結果仍然沒有任何改善。

同時,用這些樣品在Intel CRB(Custom reference board)上進行測試,卻是可以PASS的。

由此可以判斷,Micron 8G本身并不是Margin Fail的唯一因素,只能試圖增加主板PCB Margin來改善RMT結果

3.4.2 通過Simulation來分析問題

從問題的描述來看,主板+大部分內存條測試PASS, 有問題的內存條+其他主板測試PASS, 看起來是遇到了最讓人頭疼的Worst Case+Worse Case的情況,這種情況下,單純的從設計本身來看,各項設計指標都可以滿足相關文檔或者Design Guide,只能從細節(jié)入手,從一些細微的調整和優(yōu)化來提高彼此的Margin, 就這個Case來說,Micron 8G的Module已經量產,在沒有足夠的證據之前,沒有辦法要求廠商來做任何修改,而主板正在設計階段,看來只能想辦法來優(yōu)化提高主板Layout從而提高Margin了。

然而對于DDR來說,如上面所描述,各項設計指標都滿足相關設計規(guī)則,僅僅通過經驗猜測,改版,測試的方式來做,無疑毫無效率性和針對性而言,而通過仿真的方法,來做各種各樣不同Case的仿真,找到對于提高Margin比較明顯的改善點,然后修改Layout,就比較有針對性,也避免了多次改版所帶來時間和費用上的浪費。

回到設計本身,如本文3.1節(jié)所描述,本設計采用一個通道三根內存的設計(一個Controller加三個DIMM),如圖33所示,仔細分析測試結果,Marign最差的均為DIMM2(距離CPU最近的一個),做一個簡單的理論分析,不管從CPU寫數(shù)據到DIMM2或者從DIMM2讀數(shù)據到CPU,無論DIMM1和DIMM0處于何種狀態(tài),L2和L3始終存在,對于DIMM2來說,相當于有一段Stub存在,而Stub會引起信號反射,從而導致Margin減小,哇,找到Root cause了哎,原來問題這么簡單,快快改版做下一批PCB吧,可是,萬一下一批還是不行怎么辦?冷靜一下,還是先做仿真驗證一下吧。


圖33 PCB Layout

冷靜一下,再仔細分析,對比主板和Intel CRB的,果然在這邊存在差異,CRB板子L2和L3長度大概為398 mil, 而我們的主板L2和L3長度大概為462 mil, 確實有差異,既然這邊的長度有差異,從前面我們的分析來看,仿真結果也肯定會有差異,我們來仿真看看,如前面所說,Intel SISTAI只能提供仿真數(shù)據,而無法顯示波形,仿真結果整理如下圖。


表7 Write仿真結果


表8 Read 仿真結果

從仿真結果可以看出來兩點,第一,仿真數(shù)據最差的也是DIMM2,和實際測試結果吻合;第二,我們的主板仿真結果比Intel CRB的結果要差,和我們之前分析和猜測吻合。那么,縮小L2,L3的長度以后,仿真結果是不是會改善呢?由于PCB和Connector本身差異,我們的主板L2和L3最短只能縮小到410 mil左右,那么,PCB改善后的結果如何呢?仿真數(shù)據如下表??梢钥闯鰜恚瑹o論Write和Read, D2的結果都有了改善,可是為什么還是和Intel CRB差異很大呢?


表9 仿真結果對比

再來對比Layout,Trace走線已經找不出差異,之前沒有關注過的疊層(Stackup)成為最大的差異點,CRB為8層板,而我們的主板為18層板,而且我們的主板DDR走線靠近TOP層,這么大的疊層差異直接導致了PTH Via孔所造成的Stub長度不同,同樣,DIMM插槽的針腳長度差異也會造成Stub影響,CRB采用的DIMM插槽針腳長度為2.4 mm, 我們主板DIMM插槽針腳長度為3.2 mm, 沒有找到相對應的DIMM插槽模型,只能采用刪減或增加PCB疊層厚度來簡單模擬DIMM插槽針腳長度,減小主板DIMM插槽針腳長度(采用Stackup變更來簡單模擬) 到2.4 mm,仿真結果如下,已經非常接近CRB的結果了。這個仿真雖然不是非常準確,但是也是可以看出來Stub對信號質量的影響。


表10 最終仿真結果對比

按照分析結果,縮短L2,L3的長度,改為陣腳比較短的DIMM插槽(因為設計已經基本定型,只能進行小的改動,沒有辦法把DDR走線移動到靠近Bottom層的Layer),重新改版后,之前測試Fail的Margin提高了2~3 Step, 終于可以PASS了。

至此,對于此Case的分析和仿真基本結束,DIMM to DIMM之間的長度以及DIMM插槽針腳長度(以及PTH VIA Stub)所造成的Stub對于提高信號Margin有一定的貢獻,所以在針對3DPC(DIMM per Channel)的設計,在設計初期,就應該盡可能減小DIMM TO DIMM的長度,對于板厚比較大的Case,盡可能把DDR走線靠近Bottom面,以減小Stub對信號質量的影響。




關鍵詞: DDR4 PCB設計 仿真

評論


相關推薦

技術專區(qū)

關閉