DDR驗(yàn)證是任何SoC中最關(guān)鍵和最復(fù)雜的任務(wù)之一,因?yàn)樗婕拔挥贒UT內(nèi)部的控制器和位于DUT外部的外部DDR存儲(chǔ)器。 DDR系統(tǒng)由控制器,I/O,封裝,插座,電源,時(shí)鐘和外部存儲(chǔ)器組成,它們共同工作。在數(shù)字驗(yàn)證中,并非所有這些組件都進(jìn)入圖像,而主要是控制器,PHY,I/O和存儲(chǔ)器。驗(yàn)證變得更加復(fù)雜,因?yàn)樗薪M件的影響都無(wú)法在數(shù)字仿真中模仿,但門級(jí)仿真(GLS)為我們提供了良好的基礎(chǔ)設(shè)施來(lái)報(bào)告可能困擾控制器-PHY-I/O路徑的設(shè)計(jì)問(wèn)題從時(shí)間的角度來(lái)看。
在GLS中驗(yàn)證DDR時(shí)會(huì)遇到許多與時(shí)序相關(guān)的問(wèn)題,導(dǎo)致驗(yàn)證和STA(靜態(tài)時(shí)序分析)團(tuán)隊(duì)之間的大量迭代。擁有干凈的調(diào)試GLS環(huán)境可以讓您對(duì)RTL(寄存器傳輸級(jí)別)運(yùn)行的DDR協(xié)議的STA視角充滿信心,并且可以提供關(guān)注數(shù)字和時(shí)序方面的良好信心。由于RTL的時(shí)序可見(jiàn)性,本文整理了DDR的GLS(門級(jí)仿真)驗(yàn)證中通常報(bào)告的廣泛?jiǎn)栴},并通過(guò)大量示例強(qiáng)調(diào)了在GLS環(huán)境中快速有效地關(guān)閉DDR的重要調(diào)試標(biāo)準(zhǔn)。
RTL環(huán)境沒(méi)有任何時(shí)序感知,因此設(shè)計(jì)中沒(méi)有慣性/傳播延遲,但是當(dāng)我們移動(dòng)時(shí)進(jìn)入GLS設(shè)置后,這些進(jìn)入了畫(huà)面并且必須得到有效處理,以便模仿實(shí)際的硅行為,同時(shí)不會(huì)使事情過(guò)于悲觀。在邏輯單元的輸入處,持續(xù)時(shí)間小于慣性延遲的脈沖將不能在該邏輯單元的輸出處引起任何轉(zhuǎn)變,邏輯門表現(xiàn)出的這種現(xiàn)象稱為慣性延遲傳播。工業(yè)標(biāo)準(zhǔn)GLS仿真工具通常將傳播延遲視為該邏輯門的慣性延遲。仿真工具采用的這種建模是對(duì)實(shí)際硅行為的相當(dāng)好的抽象,事實(shí)上,它很好地模擬了通過(guò)單級(jí)邏輯門的信號(hào)傳播。但是在IO等復(fù)雜門的情況下,這種行為是不可取的,其本質(zhì)上是多級(jí)的,并且一旦信號(hào)使其經(jīng)過(guò)第一級(jí),就保證它將成功地傳播通過(guò)IO單元。由于仿真工具不了解邏輯單元的這種內(nèi)部結(jié)構(gòu),因此即使對(duì)于多級(jí)IO,它也會(huì)抑制脈沖,如圖1所示。
圖1:默認(rèn)的GLS仿真行為是抑制所有小于門延遲的轉(zhuǎn)換
現(xiàn)在要解決這個(gè)問(wèn)題,有兩種解決方案可能。
第一種解決方案是手動(dòng)更新SDF并將延遲更新為更小的值。這種方法適用于正確傳播信號(hào),但這種方法不正確,因?yàn)樾碌难舆t不代表實(shí)際的延遲,可能會(huì)抑制其他潛在的功能問(wèn)題。
行業(yè)標(biāo)準(zhǔn)的GLS模擬器確實(shí)有能力/開(kāi)關(guān)可以允許/禁止通過(guò)細(xì)胞的一定寬度的脈沖。例如“拒絕&錯(cuò)誤設(shè)置“使用時(shí)將傳播寬度大于'錯(cuò)誤設(shè)置'的所有信號(hào)。雖然它會(huì)傳播信號(hào)的未知值,寬度介于'reject&錯(cuò)誤設(shè)置'它將完全消除寬度小于'拒絕設(shè)置'的信號(hào)。一個(gè)例子如下表所示。
Pulse_e& ; pulse_r | 行為 |
pulse_e/100& pulse_r/100 | 拒絕所有小于傳播延遲100%的脈沖 |
pulse_/0& pulse_r/0 | 傳遞大于0%傳播延遲的所有脈沖 |
pulse_e/50& pulse_r/50 | 傳遞大于傳播延遲50%的所有脈沖。 |
表1:Pulse_e/Pulse_r行為
基于時(shí)序小組完成的平衡的時(shí)鐘選擇
在RTL設(shè)置中,由給定源驅(qū)動(dòng)的時(shí)鐘到達(dá)同一節(jié)點(diǎn)的所有節(jié)點(diǎn)瞬間但是當(dāng)我們轉(zhuǎn)向GLS設(shè)置時(shí),時(shí)鐘偏移進(jìn)入圖像并因此可能產(chǎn)生定時(shí)問(wèn)題,其中從相同源導(dǎo)出的兩個(gè)時(shí)鐘路徑可能具有偏斜,使得DDR數(shù)據(jù)/時(shí)鐘路徑不能平衡所有可能的組合。輸入時(shí)鐘是DDR設(shè)計(jì)中最重要的參數(shù),因?yàn)樗衅渌盘?hào)都是根據(jù)輸入時(shí)鐘周期和占空比得出的??赡艽嬖诙鄠€(gè)時(shí)鐘源可用作控制器輸入時(shí)鐘的情況。通常,來(lái)自任何一個(gè)時(shí)鐘源的路徑是平衡的,建議用于DDR輸入時(shí)鐘。 DDR_CLK,DDR_DQS等信號(hào)有嚴(yán)格的要求傳播到外部DDR存儲(chǔ)器的占空比,高時(shí)間,低時(shí)間等,這些都需要滿足DDR的正確操作。寫(xiě)入側(cè)的大多數(shù)與占空比要求相關(guān)的故障可能是由于DDR控制器輸入上的時(shí)鐘占空比不正確。必須正確地確保我們使用滿足時(shí)序的正確時(shí)鐘源,以避免不必要的調(diào)試。下面提到了相同的例子,其中存儲(chǔ)器輸入端的DQS占空比數(shù)據(jù)已經(jīng)被選為DDR控制器時(shí)鐘的2個(gè)不同時(shí)鐘源捕獲。
DDR_CLK頻率:400MHz(~2.5ns)
55%的2.524 ns = 1.388200ns |
2.524 ns的45%= 1.13580ns |
路徑不同層次結(jié)構(gòu)的脈沖寬度(Clk源1) | 高脈沖 | 低脈沖 |
PLL輸出 | H:1291ps | L:1233ps |
在Cross-Bar輸入 | H:1270ps | L:1254ps |
在交叉條輸出 | H:1241ps | L:1283ps |
在控制器輸入 | H:1227ps | L:1297ps |
在DQS pad輸入 | H:1334ps | L:1190ps |
在DQS墊 | H:1377ps | L:1147ps |
路徑不同層次的脈沖寬度(Clk源2) | 高脈沖 | 低脈沖 |
PLL輸出 | H:1294ps | L:1230ps |
在Cross-Bar輸入 | H:1210ps | L:1314ps |
在橫桿輸出 | H:1181ps | L:1343ps |
在控制器輸入 | H:1167ps | L:1357ps |
在DQS pad輸入 | H:1394ps | L:1130ps |
在DQS墊 | H:1437ps | L:1087ps |
表2:不同層次結(jié)構(gòu)的時(shí)鐘占空比在系統(tǒng)中
在焊盤上用于轉(zhuǎn)儲(chǔ)SDF的負(fù)載
I/O在定時(shí)感知GLS DDR驗(yàn)證方面發(fā)揮著至關(guān)重要的作用。滿足焊盤輸入的時(shí)序,并且從焊盤的自由文件中提供的信息中轉(zhuǎn)儲(chǔ)I/O延遲。有時(shí),從控制器到焊盤輸入的路徑被正確地滿足并平衡,但仍然可以看到故障。這可能是由于I/O引入的錯(cuò)誤延遲,這些延遲位于主機(jī)控制器和外部DDR存儲(chǔ)器之間的路徑中。延遲實(shí)際上取決于施加到襯墊的負(fù)載。因此,在生成SDF時(shí),需要注意必須應(yīng)用將在船上使用的正確和實(shí)際負(fù)載。如果不這樣做,將導(dǎo)致在SDF中產(chǎn)生非常悲觀的定時(shí)電弧,當(dāng)在GLS仿真中反標(biāo)注時(shí)會(huì)產(chǎn)生虛假故障。這些問(wèn)題很難調(diào)試,需要付出很多努力。
加載(以pf為單位) | 轉(zhuǎn)換時(shí)間(ns) | 計(jì)時(shí)?。╪s) | |
悲觀負(fù)載 | 35 | 2 | 2.8 |
實(shí)際負(fù)載 | 12 | 0.6 | 1.2 |
表3:悲觀負(fù)載v/s實(shí)際負(fù)載
輸出緩沖器使能(OBE)時(shí)序要求
大多數(shù)DDR控制器設(shè)計(jì)都是為了驅(qū)動(dòng)OBE(輸出緩沖器使能) DQ(數(shù)據(jù))和DQS(Strobe)焊盤本身可以用于寫(xiě)入/讀取相同的焊盤。由于各種原因,OBE時(shí)序通常在路徑計(jì)時(shí)時(shí)被忽略,但在DDR的情況下這樣做會(huì)導(dǎo)致災(zāi)難性的結(jié)果。例如,在DDR協(xié)議的讀/寫(xiě)期間,在READ/WRITE命令之后和DQS的第一個(gè)上升沿之前的DQS上的LOW狀態(tài)被稱為讀/寫(xiě)前同步碼;同樣在最后一個(gè)數(shù)據(jù)輸入之后DQS上的LOW狀態(tài)元素稱為讀/寫(xiě)后同步碼。前導(dǎo)碼部分為接收設(shè)備提供定時(shí)窗口,以便在選通信號(hào)上存在已知/有效電平時(shí)啟用其數(shù)據(jù)捕獲電路,從而避免對(duì)捕獲電路的錯(cuò)誤觸發(fā)。 UIT。在前同步碼之后,選通脈沖將在數(shù)據(jù)突發(fā)的持續(xù)時(shí)間內(nèi)以與時(shí)鐘信號(hào)相同的頻率切換。在寫(xiě)入期間對(duì)于該最小前導(dǎo)碼寬度存在一定的時(shí)序要求,例如DDR2為0.35Ck,DDR3為0.9Ck,應(yīng)該滿足。類似地,對(duì)寫(xiě)后同步時(shí)序有要求。對(duì)于DDR2,這是0.4Ck-0.6Ck,對(duì)于DDR3,最小為0.3CK。如果DDR GLS遇到最常見(jiàn)的問(wèn)題,則違反這些參數(shù)。
圖2:DDR前導(dǎo)碼和后同步碼
DDR焊盤的壓擺率設(shè)置:
焊盤的特點(diǎn)是不同的壓擺率決定了每單位時(shí)間輸出電壓的變化率。這些設(shè)置對(duì)RTL仿真沒(méi)有任何影響,因?yàn)闆](méi)有延遲,但在GLS仿真中,延遲進(jìn)入畫(huà)面,進(jìn)行適當(dāng)?shù)脑O(shè)置以避免任何不必要的調(diào)試變得至關(guān)重要。系統(tǒng)中不同焊盤的時(shí)序通常以最大轉(zhuǎn)換速率滿足,但可以根據(jù)各種參數(shù)而不同。一個(gè)這樣的例子是,對(duì)于像DDR這樣的協(xié)議的最大壓擺率,可以看到反射和干擾的問(wèn)題。對(duì)于此參數(shù)的不同設(shè)置,打擊墊延遲變化太大。這些是根據(jù)最終將在驗(yàn)證板和測(cè)試儀上使用的負(fù)載和電阻值決定的。我們必須確保使用正確的打擊墊設(shè)置運(yùn)行我們的模擬,以便在預(yù)期結(jié)果和觀察結(jié)果之間沒(méi)有間隙。
下表包含推薦的SRE設(shè)置的數(shù)據(jù),用于不同的接口之一SoC的。
Interface | SRE設(shè)置 |
DDR | 10 |
SDR | 10 |
QuadSPI | 11 |
ENET | 11 |
MLB50 | 11 |
SPI | 00 |
表4:SoC不同接口的推薦壓擺率設(shè)置
字符I/O中的問(wèn)題:
這方面只是在GLS中而不是在RTL中可見(jiàn)的,如果從開(kāi)始確??梢源_保我們可以最小化迭代調(diào)試和反饋驗(yàn)證和STA。為了給出背景,每個(gè)單元都有上升弧和下降弧所提到的延遲。任何單元的延遲都直接來(lái)自自由文件,其中包含PVT延遲的信息。電池的這些上升和下降時(shí)間可以彼此不同。但是像DDR這樣的協(xié)議對(duì)占空比,高時(shí)間,低時(shí)間等有嚴(yán)格的要求,這些都需要滿足協(xié)議的正確操作。在設(shè)計(jì)中,通常使用對(duì)稱緩沖器和單元,其具有幾乎相同的上升和下降時(shí)間,使得諸如CLK,DQS等的關(guān)鍵信號(hào)的路徑是平衡的。但有可能I/O的上升和下降時(shí)間之間存在巨大差異,因?yàn)楸碚鲉?wèn)題會(huì)導(dǎo)致占空比失真,從而導(dǎo)致內(nèi)存端的違規(guī)。
圖3:上升 - 下降延遲弧的差異導(dǎo)致違反占空比要求
SDF延遲舍入是高速GLS驗(yàn)證的殺手
測(cè)試平臺(tái)具有定義事件粒度的時(shí)間表模擬設(shè)計(jì)。在時(shí)間刻度語(yǔ)句中,第一個(gè)值是時(shí)間單位,第二個(gè)值是模擬的精度。對(duì)于高速電路,應(yīng)該非常仔細(xì)地定義時(shí)標(biāo)精度。通常,時(shí)間刻度在測(cè)試平臺(tái)中定義為1ns/10ps,這意味著所有延遲將四舍五入到最接近的10ps。但是在DDR這樣的高速協(xié)議中,時(shí)序非常關(guān)鍵,邊距可以非常小(以皮秒為單位)。例如,如果數(shù)據(jù)路徑中有10個(gè)緩沖區(qū),每個(gè)緩沖區(qū)的延遲為26ps,如果時(shí)間刻度為1ns/10ps,則所有這些延遲將四舍五入為30ps,因此將在GLS中引入40ps的不準(zhǔn)確度。這將導(dǎo)致GLS中的錯(cuò)誤時(shí)序違規(guī)。必須更新模擬環(huán)境以具有適當(dāng)?shù)臅r(shí)間尺度以迎合這些問(wèn)題。
應(yīng)解決內(nèi)存錯(cuò)誤
通常,不同供應(yīng)商提供的模型可用于模擬。這些模型可以是Verilog模型或Denali模型。這些模型由Micron,Spansion,Macronix等內(nèi)存供應(yīng)商提供。出于模擬目的,Denali模型應(yīng)該是首選,因?yàn)檫@些模型對(duì)所有時(shí)序參數(shù)和協(xié)議進(jìn)行了非常嚴(yán)格的檢查,并且還包括CK/DQS/DQ之間的抖動(dòng)和偏斜因此非常接近將在板上使用的實(shí)際存儲(chǔ)器。如果在存儲(chǔ)器接口違反任何時(shí)序規(guī)范,則模型會(huì)標(biāo)記錯(cuò)誤。在RTL仿真中,沒(méi)有延遲,如果正確配置了時(shí)序參數(shù),則通常不會(huì)遇到這些錯(cuò)誤。但是在圖像延遲的GLS模擬中,可能會(huì)發(fā)生一些參數(shù)被違反并且會(huì)拋出錯(cuò)誤。應(yīng)仔細(xì)審查這些錯(cuò)誤,并且必須予以解決。通常在寫(xiě)入周期期間遇到問(wèn)題,此時(shí)信號(hào)由控制器發(fā)出并到達(dá)存儲(chǔ)器。在讀取周期期間,信號(hào)由模型本身生成并到達(dá)控制器。為Denali存儲(chǔ)器提供了許多開(kāi)關(guān),它們控制各種參數(shù),例如允許的差分偏移,將存儲(chǔ)器初始化為某個(gè)值,禁止從存儲(chǔ)器發(fā)送錯(cuò)誤消息。應(yīng)該注意不要傳遞這樣的開(kāi)關(guān),這可能會(huì)掩蓋任何錯(cuò)誤。
-
DDR
+關(guān)注
關(guān)注
11文章
706瀏覽量
65175 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21629 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27701 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
42947
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論