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