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