石雪梅 劉敦偉 顧 穎 李盛杰
(航天科工防御技術研究試驗中心 北京 100854)
由于半導體工藝技術發(fā)展及存儲系統(tǒng)多方面的需要,存儲器件日益向著高速、高集成度及多品種方向發(fā)展。存儲器的應用深度和廣度也正以前所未有的速度增長,成為信息時代不可或缺的重要組成部分。相應地,確定其性能及質量好壞的測試及研究工作日益被重視。
存儲器是在特定條件下用來存儲數字信息的芯片,必須經過必要的測試以保證其功能正確。DDR(Double Data Rate)DRAM,具有速度塊、容量大、集成度高等優(yōu)點,在電子產品中廣泛應用,國內外有很多研究團隊都在做相關方面的研究[1~2]。本文旨在通過研究DDR工作的關鍵過程,基于ATE設計測試向量,實現DDR器件的功能測試。
DDR SDRAM中文名為“雙倍數據流SDRAM”。DDR SDRAM在原有的SDRAM的基礎上改進而來。也正因為如此,DDR能夠憑借著轉產成本優(yōu)勢來打敗昔日的對手RDRAM,成為當今的主流。圖1為一張DDR正規(guī)的時序圖。
圖1 DDR讀操作時序圖
從中可以發(fā)現它多了兩個信號:CLK#與DQS,CLK#與CLK時鐘相位相反,形成差分時鐘信號。而數據的傳輸在CLK與CLK#的交叉點進行,可見在CLK的上升與下降沿(此時正好是CLK#的上升沿)都有數據被觸發(fā),從而實現DDR。在此,我們可以說通過差分信號達到了DDR的目的,甚至講CLK#幫助了第二個數據的觸發(fā),但這只是對表面現象的簡單描述,從嚴格的定義上講并不能這么說。之所以能實現DDR,還要從其內部的改進說起。
以MT46V32M16為例,存儲單元的容量是芯片位寬的一倍,在讀取時,L-Bank在內部時鐘信號的觸發(fā)下一次傳送32bit的數據給讀取鎖存器,再分成兩路16bit數據傳給復用器,由后者將它們合并為一路16bit數據流,然后由發(fā)送器在DQS的控制下在外部時鐘上升與下降沿分兩次傳輸16bit的數據給北橋(或DDR控制器)。這樣,如果時鐘頻率為100MHz,那么在I/O端口處,由于是上下沿觸發(fā),那么就是傳輸頻率就是200MHz。
差分時鐘是DDR的一個必要設計,但CK#的作用,并不能理解為第二個觸發(fā)時鐘,而是起到觸發(fā)時鐘校準的作用。由于數據是在CK的上下沿觸發(fā),造成傳輸周期縮短了一半,因此必須要保證傳輸周期的穩(wěn)定以確保數據的正確傳輸,這就要求CK的上下沿間距要有精確的控制。但因為溫度、電阻性能的改變等原因,CK上下沿間距可能發(fā)生變化,此時與其反相的CK#就起到糾正的作用(CK上升快下降慢,CK#則是上升慢下降快),與CK反相的CK#保證了觸發(fā)時機的準確性。
圖2 CK與CK#時序圖
DQS是DDR SDRAM中的重要功能,它的功能主要用來在一個時鐘周期內準確的區(qū)分出每個傳輸周期,并便于接收方準確接收數據。每一顆芯片都有一個DQS信號線,它是雙向的,在寫入時它用來傳送由北橋(或DDR控制器)發(fā)來的DQS信號,讀取時,則由芯片生成DQS向北橋(DDR控制器)發(fā)送。完全可以說,它就是數據的同步信號。
圖3 DQS時序圖
在讀取時,DQS與數據信號同時生成(也是在CK與CK#的交叉點)。而DDR內存中的CL也就是從CAS發(fā)出到DQS生成的間隔,數據真正出現在數據I/O總線上相對于DQS觸發(fā)的時間間隔被稱為tAC。
在上面的DQS寫入時序圖中,可以發(fā)現寫入延遲已經不是0了,在發(fā)出寫入命令后,DQS與寫入數據要等一段時間才會送達。這個周期被稱為DQS相對于寫入命令的延遲時間(tDQSS,WRITE Command to the first corresponding rising edge of DQS)。
這樣的延遲設計原因也在于同步,一個時鐘周期兩次傳送,需要很高的控制精度,它必須要等接收方做好充分的準備才行。tDQSS是DDR內存寫入操作的一個重要參數,太短的話恐怕接受有誤,太長則會造成總線空閑。tDQSS最短不能小于0.75個時鐘周期,最長不能超過1.25個時鐘周期。正常情況下,tDQSS是一個時鐘周期,但寫入時接受方的時鐘只用來控制命令信號的同步,而數據的接受則完全依靠DQS進行同步,所以DQS與時鐘不同步也無所謂。
在DDR SDRAM中,突發(fā)長度只有2、4、8三種選擇,沒有了隨機存取的操作(突發(fā)長度為1)和全頁式突發(fā)。因為L-Bank一次就存取兩倍于芯片位寬的數據,所以芯片至少也要進行兩次傳輸才可以,否則內部多出來的數據沒有辦法處理。
但是,突發(fā)長度的定義也與SDRAM的不一樣了,它不再指所連續(xù)尋址的存儲單元數量,而是指連續(xù)的傳輸周期數,每次是一個芯片位寬的數據。也就是說,在存儲單元cell=32的情況下,對SDR來說,BL=2,則每次存取兩個cell,對DDR來說,每次存取一個cell。
DDR并不像SRAM,可以在一個周期內完成一個訪問,DDR的訪問過程分做幾個指令,而且通常要3~7個左右的周期才能完成,我們需要執(zhí)行一連串的動作才能開始讀寫:
1)初始化RAM內的寄存器和存儲單元。
2)SDRAM Controller接收到 Data,分析 Address,用高位的 Address(Row address)進行 Active的動作。
3)SDRAM Controller用低位 Address(Column address)進行 WRITE或 READ。 SDRAM 根據Row address和Column address完成讀寫操作。
由于SDRAM的電氣特性,每隔一段時間存儲單元的信息會衰減到無法辨認,所以一段時間之內,要執(zhí)行Refresh的動作,以確保信息的正確性,而執(zhí)行這個動作是依靠Self refresh和Auto refresh兩個Command來完成的。
圖4 初始化流程圖[4]
在DDR內部有一個邏輯控制單元,并且由模式寄存器為其提供控制參數。因此,每次上電時(開機時)DDR都要先對這個控制邏輯核心進行初始化。有關預充電和刷新的含義不再贅述,關鍵的階段就在于模式寄存器(MR,Mode Register)及擴展模式寄存器(EMR,Extended Mode Register)的設置,寄存器的信息由地址線來提供。
在本文中,通過ATE測試系統(tǒng)編輯了測試向量如下。
圖5 初始化的測試向量[5]
所有要保持的時間都通過NOP指令的循環(huán)來代替,所以在設計當中要充分考慮測試周期,如周期為10ns,tRP在器件手冊中要求至少15ns,那在向量編輯中要至少等待2個周期,若考慮到程序調試中開始要降頻測試,這里的等待周期數量要適當增加。
在器件手冊中關于MR的設置要求如圖6所示,對應上圖向量中的第7、21行,第7行主要是設置突發(fā)長度BL=2,數據延時CL=2.5,同時復位DLL,第21行指令可選,為了程序運行的穩(wěn)定,本文又在此對MR進行了設置,只有A8=0,即不再需要復位操作。
圖6 MR設置[5]
在進行初始化之后,就可以對被測器件進行寫、讀的操作了,具體BL和CL的長度,依據MR中的設置及詳細時序圖要求即可,之后我們對向量設計中幾個需要重點關注的過程進行分析總結。
由于SDRAM的尋址具體獨占性,所以在進行完讀寫操作后,如果要對同一L-Bank的另一行進行尋址,就要將原來有效(工作)的行關閉,重新發(fā)送行/列地址。L-Bank關閉現有工作行,準備打開新行的操作就是預充電(Precharge)。預充電可以通過命令控制,也可以通過輔助設定讓芯片在每次讀寫操作之后自動進行預充電。
實際上,預充電是一種對工作行中所有存儲體進行數據重寫,并對行地址進行復位,以準備新行的工作?,F在我們看看讀寫操作時的命令時序圖,從中可以發(fā)現地址線A10控制著是否進行在讀寫之后當前L-Bank自動進行預充電。而在單獨的預充電命令中,A10則控制著是對指定的L-Bank還是所有的L-Bank(當有多個L-Bank處于有效/活動狀態(tài)時)進行預充電,前者(對指定的L-Bank)需要提供L-Bank的地址,后者(對所有的L-Bank)只需將A10信號置于高電平。在發(fā)出預充電命令之后,要經過一段時間才能允許發(fā)送RAS行有效命令打開新的工作行,這個間隔被稱為tRP(Precharge command Period,預充電有效周期)。和tRCD、CL一樣,tRP的單位也是時鐘周期數,具體值視時鐘頻率而定。
圖 7 讀時序圖[5~6]
自動預充電時的開始時間與此圖一樣,只是沒有了單獨的預充電命令,并在發(fā)出讀取命令時,A10地址線要設為高電平(允許自動預充電)??梢娍刂坪妙A充電啟動時間很重要,它可以在讀取操作結束后立刻進入新行的尋址[7],保證運行效率。
之所以稱為DRAM,就是因為它要不斷進行刷新(Refresh)才能保留住數據,因此它是DRAM最重要的操作。
目前公認的標準是,存儲體中電容的數據有效保存期上限是64ms(毫秒,1/1000秒),也就是說每一行刷新的循環(huán)周期是64ms。這樣刷新速度就是:行數量/64ms。我們在看內存規(guī)格時,經常會看到4096 Refresh Cycles/64ms或8192 Refresh Cycles/64ms的標識,這里的4096與8192就代表這個芯片中每個L-Bank的行數。刷新命令一次對一行有效,發(fā)送間隔也是隨總行數而變化,4096行時為15.625μs(微秒,1/1000毫秒),8192行時就為7.8125μs。
刷新操作分為兩種:自動刷新(Auto Refresh,AR)與自刷新(Self Refresh,SR)。不論是何種刷新方式,都不需要外部提供行地址信息,因為這是一個內部的自動操作[8]。對于AR,SDRAM內部有一個行地址生成器(也稱刷新計數器)用來自動的依次生成行地址。由于刷新是針對一行中的所有存儲體進行,所以無需列尋址,或者說CAS在RAS之前有效。所以,AR又稱CBR(CAS Before RAS,列提前于行定位)式刷新。由于刷新涉及到所有L-Bank,因此在刷新過程中,所有L-Bank都停止工作,而每次刷新所占用的時間為9個時鐘周期(PC133標準),之后就可進入正常的工作狀態(tài),也就是說在這9個時鐘期間內,所有工作指令只能等待而無法執(zhí)行。64ms之后則再次對同一行進行刷新,如此周而復始進行循環(huán)刷新。顯然,刷新操作肯定會對SDRAM的性能造成影響,但這是沒辦法的事情,也是DRAM相對于SRAM(靜態(tài)內存,無需刷新仍能保留數據)取得成本優(yōu)勢的同時所付出的代價[9~15]。
在DDR器件測試開發(fā)中,需要著重關注的主要為以上幾方面,本文根據以上時序圖,基于ATE設計了存儲單元全覆蓋測試向量,工作時鐘頻率100MHz,數據傳輸速率200Mbps,能夠在電源拉偏的情況下穩(wěn)定運行,固化了部分功能的測試向量,極大地提高此類器件的開發(fā)效率。