為提高帶寬,很多類型的 Memory 都采用了 Double Data Rate(DDR)interface,它對在內(nèi)存控制器(memory controller)設(shè)計(jì)過程中的時序收斂和后仿真提出了挑戰(zhàn)。
1 引言
Double Data Rate (DDR) 接口在 ASIC 領(lǐng)域應(yīng)用得很廣,尤其在 Memory 領(lǐng)域,從 DDR SDRAM 誕生后 Memory 經(jīng)歷了 DDR2,DDR3 乃至現(xiàn)在主流的 DDR4,它們在數(shù)據(jù)接口上都使用的 Double Data Rate(DDR)interface[1-4]。DDR interface 是一種源同步接口,時鐘(DQS)和數(shù)據(jù)(DQ)都由發(fā)送方提供。讀操作時 Memory 提供時鐘和讀數(shù)據(jù),Memory 僅在有數(shù)據(jù)的時間段內(nèi)驅(qū)動時鐘(DQS),時鐘和數(shù)據(jù)是沿對齊(edge alignment),內(nèi)存控制器(Memory controller)使用收到的時鐘(DQS)的上下沿采樣數(shù)據(jù)。寫操作時內(nèi)存控制器提供時鐘和寫數(shù)據(jù)且僅在有數(shù)據(jù)的時間段內(nèi)驅(qū)動時鐘(DQS),時鐘和數(shù)據(jù)是中間對齊(center alignment),內(nèi)存(Memory)也使用時鐘的上下沿采樣數(shù)據(jù)。基于這樣的協(xié)議,通常讀操作時內(nèi)存控制器使用延長線延遲輸入的 DQS, 以滿足足夠的建立保持時間采樣讀數(shù)據(jù)。而寫操作時,內(nèi)存控制器需要將輸出的 DQS 做一定延遲以使內(nèi)存有足夠的建立保持時間采樣寫數(shù)據(jù)。因?yàn)槭菚r鐘上下沿都需要采樣數(shù)據(jù),隨著 Memory 時鐘頻率的加快,對時序收斂和后仿真都提出了挑戰(zhàn)。
本文介紹了一種通過靜態(tài)時序分析工具進(jìn)行時序檢查及指導(dǎo)后仿真工作的方法。
2 DDR Memory 讀接口
根據(jù) JEDEC Spec,DDR Memory 讀的時序如圖 1。
DQS 上升沿的參數(shù):① tDQSQ 是最晚有效數(shù)據(jù)的翻轉(zhuǎn),它反映著 DQ 的偏移(Skew)。② tDH是最早無效數(shù)據(jù)的開始,它反映著 DQ 的有效寬度。
DQS 下降沿的參數(shù):① tDQSQ 是最晚有效數(shù)據(jù)的翻轉(zhuǎn),它反映著 DQ 的偏移(Skew)。② tDH 是最早無效數(shù)據(jù)的開始,它反映著DQ的有效寬度。
讀操作時 Memory 提供時鐘和讀數(shù)據(jù),Memory僅在有數(shù)據(jù)的時間段內(nèi)驅(qū)動時鐘(DQS),時鐘和數(shù)據(jù)是沿對齊,內(nèi)存控制器(Memory controller)使用收到的時鐘(DQS)的上下沿采樣數(shù)據(jù)。鑒于DDR Memory 這個特性(上下沿都會發(fā)送數(shù)據(jù)),內(nèi)存控制器一般會使用延長線去延遲輸入的 DQS 然后再去采樣數(shù)據(jù)的電路,其結(jié)構(gòu)可如圖 2。
根據(jù)電路結(jié)構(gòu),它的時序約束可以如下設(shè)置(以 DDR3-1600 為例)。
使用 create_clock 和 create_generated_clock 定義了 Memory 產(chǎn)生的 dqs 經(jīng)過延遲線延遲后到達(dá) i_rdata_r/f 的 clock。
因?yàn)?Memory 既在上升沿發(fā)送數(shù)據(jù)又在下降沿發(fā)送數(shù)據(jù),所以需要使用下面兩條命令來約束輸入數(shù)據(jù)的建立時間(setup time)的要求。
根據(jù)時序要求還需要設(shè)置輸入數(shù)據(jù)的保持時間(hold time)的要求如下。
“set_multicycle_path 0”反映著圖 2 電路的工作機(jī)制,i_data_r/f 的采樣時鐘是經(jīng)過 delay chain 延遲后的 clock,理論上的建立時間不是通常時序電路中的一個周期,所以設(shè)為 multicycle_path=0。
根據(jù)上面的時序約束可以在靜態(tài)時序工具中得到如下的時序報告。pd 到 i_rdata_r 的建立時間(setup time) 報告如下。
從上面報告看到輸入數(shù)據(jù)被發(fā)送的時間從 0 ns 開始計(jì)算,而被采樣的時間也為 0 ns 開始計(jì)算,這恰好是符合 i_rdata_r 采樣的時鐘是來自延遲后的 DQS 的上升沿,隨著延遲線延遲的增大,i_rdata_r 的建立時間的余量會越來越大。
pd 到 i_rdata_r 的保持時間(hold time)的報告如下。
從上面報告看到新數(shù)據(jù)被發(fā)送的時間從 0.62 ns 開始計(jì)算并且上一筆數(shù)據(jù)被采樣的時間也從 0 ns 開始計(jì)算,這也符合電路工作實(shí)際情況。延遲線延遲最小時 i_rdata_r 的保持時間的余量最大,隨著延遲線延遲的增大,保持時間的余量會越來越小(表 1)。
上面的時序報告描述了 i_rdata_r 的時序情況,i_data_f 的時序報告類似,只是 launch/capture 的時間不同而已,在此不再贅述。
根據(jù)上面的分析說明時序報告符合電路工作預(yù)期,所以時序約束是正確的。但在實(shí)際時序收斂時還不能像一般芯片內(nèi)部的數(shù)字電路那樣簡單地根據(jù)設(shè)定的時鐘和 IO 約束進(jìn)行時序收斂,理由如下。
圖 3 是芯片內(nèi)部一般數(shù)字電路的基本結(jié)構(gòu),它的時序關(guān)系如圖 4 所示。
flop1/CP 在 edge 2 發(fā)送新的數(shù)據(jù),flop2 會在 edge3 采樣這筆數(shù)據(jù),這是它們之間的建立時間(setup time)的檢查。同樣 flop1/CP 的 edge 4 也可能發(fā)送新的數(shù)據(jù),這些數(shù)據(jù)不能被 flop2/CP 的 edge4 采樣到,這個時序檢查就是保持時間(hold time)的檢查?;谶@樣工作模式和靜態(tài)時序檢查方法,EDA 工具能夠比較容易根據(jù)時鐘頻率的要求和電路自身的快慢自動地滿足上述電路的時序要求。例如當(dāng)建立時間不滿足時 EDA 工具可以通過縮短flop1/Q->flop2/D 路徑的延遲或者利用 flop1/CP 和flop2/CP的skew 做到,但這些都不太適合 DDR Memory interface。因?yàn)閳D 2 中 i_rdata_r/f 的時鐘是經(jīng)過延遲線的,而這個延遲可能需要根據(jù)外接 Memory 的不同、工作頻率的不同甚至工作電壓及溫度的不同進(jìn)行調(diào)節(jié)以滿足 i_rdata_r/i_rdata_f 數(shù)據(jù)端的建立保持時間的要求,這樣才能夠正確接收數(shù)據(jù)。因此在時序收斂過程中時無法按照確定的延遲線延遲進(jìn)行時序收斂,如果固定延遲進(jìn)行時序收斂有可能會導(dǎo)致延遲線可用工作范圍變小。事實(shí)上,圖 2 電路的時序收斂通常做法就是使 pd 到 i_rdata_r/f/D 的延遲和 dqs 到 i_rdata_r/CP 和 i_rdata_f/CP 的延遲盡量相等,這樣才能保證將來做延遲線調(diào)節(jié)時有足夠的調(diào)節(jié)范圍,但這樣做法可能導(dǎo)致在自動布局布線完成后 i_rdata_r或i_rdata_f 的數(shù)據(jù)端的建立/保持時間不是一直能夠得到滿足的,從而導(dǎo)致在后仿真時有可能遇到時序違例,造成后仿真失敗,這種情況在 DDR Memory interface 是多 bit 時,由于不同 bit 之間的延遲偏差會更嚴(yán)重,給后仿真帶來困難,因?yàn)榉抡婀こ處熜枰业揭粋€合理的延遲線設(shè)置同時滿足不同 bit 和上下沿的建立保持時間的要求。而且,它隨著 DDR 速度的增加還會惡化。事實(shí)上基于前面的時序約束,通過腳本改變延長線的延遲設(shè)置然后做時序分析,可以很方便地利用靜態(tài)時序工具獲得后仿真時所需的延遲線的設(shè)置以滿足所有 bits 及上下沿的時序要求。這樣的方法也可以幫助我們分析讀路徑中實(shí)際可用的延遲線工作范圍,從而指導(dǎo)時序收斂過程。如當(dāng)自動布局布線工具 APR 時由于某種原因?qū)е?dqs 到 i_rdata_r/CP 或 _rdata_f/CP 的延遲比 pd 到 i_rdata_r/D 或 i_rdata_f/D 的延遲偏大時,這會導(dǎo)致延遲線可調(diào)范圍變小。設(shè)計(jì)者可以使用上述方法發(fā)現(xiàn)這樣的問題。
通過靜態(tài)時序工具可以得到上述方法的結(jié)果(表 1),它反映了隨著延遲線的調(diào)整 i_rdata_r/f 的建立保持時間滿足的情況,正值表示相應(yīng)的時序是滿足的,負(fù)值說明相應(yīng)的時序是不滿足的。可用的延遲線的設(shè)置是 i_rdata_r和i_rdata_f 的建立(setup)和保持(hold)時間都是正值。比較后得到 step=1~7 都是可以使用的延遲線設(shè)置,它們的中點(diǎn)大約為 step=4,這個值可以用來做 post-SDF 仿真。
因此上文中的 DDR Memory interface 的時序設(shè)置及后續(xù)時序檢查方法可以很好地檢查 DDR 讀接口的時序滿足情況并可以很方便地找到可用的后仿真設(shè)置,極大地提高了工作效率。
3 DDR Memory 寫接口
類似 DDR Memory 讀接口,JEDEC Spec 的 DDR Memory 寫時序如圖 5 所示。① tDQSH:Write DQS 高電平的寬度;② tDQSL:Write DQS 低電平的寬度;③ tDS:寫數(shù)據(jù)的建立時間;④ tDH:寫數(shù)據(jù)的保持時間。
寫操作時內(nèi)存控制器提供時鐘和寫數(shù)據(jù)且僅在有數(shù)據(jù)的時間段內(nèi)驅(qū)動時鐘(DQS),時鐘和數(shù)據(jù)在內(nèi)存的輸入需要滿足中間對齊(center alignment),這樣內(nèi)存端(Memory)就可以使用時鐘(DQS)的上下沿采樣數(shù)據(jù)。圖 6 寫電路工作時序如圖 7 所示,i_wdata_r/f 的數(shù)據(jù)經(jīng)過 MUX 選擇后就會變成一個上下沿都翻轉(zhuǎn)的數(shù)據(jù),而 dqs 經(jīng)過延遲線后可以和寫數(shù)據(jù)達(dá)到中間對齊(center alignment), 從而滿足 DDR Memory 對寫數(shù)據(jù)的建立保持時間的要求。
根據(jù)圖 5、圖 6、圖 7 寫電路的時序約束可以添加圖 7 中寫數(shù)據(jù)和 DQS 間關(guān)系。對應(yīng)在靜態(tài)時序工具中可以得到時序報告。
綜上,基于前述的 DDR Memory 寫路徑時序約束的靜態(tài)時序報告和電路預(yù)期的工作模式是一致的,但和讀電路類似,為了保證 write DQS 有足夠的可調(diào)范圍,寫電路時序收斂時一般也只是盡量將數(shù)據(jù)和時鐘的 path 做 balance, 而不能基于某個延遲線的設(shè)置或某個頻率做簡單地修 timing 的工作,并且 Memory不同工作頻率下對于輸入數(shù)據(jù)的建立保持時間的要求也不同,也不易按照一個固定的標(biāo)準(zhǔn)做時序收斂。這樣有可能導(dǎo)致像讀電路一樣后仿真時需要調(diào)節(jié)寫時鐘延遲線的設(shè)置以滿足寫數(shù)據(jù)的建立/保持時間的要求。同樣在多 Memory bit 的設(shè)計(jì)情況時這樣工作也會隨著頻率的提高越來越不易,因此類似讀操作時的做法,這項(xiàng)工作也可以通過腳本改變延遲線的設(shè)置,在靜態(tài)時序工具里完成。
4 結(jié)語
本文介紹靜態(tài)時序工具在 DDR Memory interface 的時序分析,以及其在后仿真中的應(yīng)用。從實(shí)踐角度彌補(bǔ)了 DDR Memory interface 時序收斂目標(biāo)和后仿真目標(biāo)之間的差異,可以在滿足時序收斂目標(biāo)的前提的情況下給設(shè)計(jì)者提供一種快速找到合適的后仿真設(shè)置的方法。
-
仿真
+關(guān)注
關(guān)注
50文章
4023瀏覽量
133338 -
時序
+關(guān)注
關(guān)注
5文章
384瀏覽量
37249
原文標(biāo)題:靜態(tài)時序工具在 DDR Memory 接口時序收斂和后仿真中的應(yīng)用
文章出處:【微信號:appic-cn,微信公眾號:集成電路應(yīng)用雜志】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論