發表文章

目前顯示的是 4月, 2021的文章

聊聊 DDR AMI

圖片
我們先看一下SerDes的發展,2007年前,晶片速率都在5Gbps以下,用IBIS或是SPICE模型就足夠表現晶片的行為,在ADS上使用Transient來模擬。直到2007年AMI這個詞首次在IBIS論壇被討論,接著很快地就訂定了基本的架構,ADS 2009也推出ChannelSim模擬引擎來支援AMI的模擬,而之後的發展大家也就都非常清楚了,ADS成為了AMI模擬的Golden Platform。 我們再來看DDR的發展,本來看起來跟SerDes是兩個平行世界,但2019 JEDEC宣布需要在DRAM端做DFE均衡之後,之後的發展可以預期應該會跟上10年前SerDes走過的路。 從SerDes(2009年)和DDR(2019年)這兩次的變革,我們可以看得很清楚近代HSD的發展邏輯。當晶片越來複雜,單純用VI VT無法描述,就需要透過AMI模型,用數學來model電路的行為。接著就會需要EDA tool提供相對應的模擬器來支援AMI的模擬。 因果關係:需要Equalizer => 產生AMI模型 => EDA Tool推出支援的simulator 在Serdes: 高速介面(PCIE2)需要考慮EQ的效應,因此IBIS協會採用AMI建模方式,接著ADS 2009推出ChannelSim。 在DDR: DDR5開始需要加入DFE,因此IBIS協會針對現有的AMI架構做出調整來支援single-end訊號,接著ADS 2019U1 推出Memory Designer來支援。 ps. 我最近很常被問,是否可以用ADS ChannelSim來跑DDR5的AMI模型,答案是不可以。DDR AMI模型基於本來的SerDes AMI新增了很多欄位,以克服 DDR5 Simulation Challenges 提到的挑戰。就算可以跑(但其實連model都吃不進來...),也會被迫要忽略 DDR5 Simulation Challenges 提到的挑戰。

DDR5 Simulation Solution

圖片
在  DDR5 Simulation Challenges  有說明模擬DDR5 AMI模型會遇到的挑戰,這篇文章會提供ADS Memory Designer的解決方案。  1. Asymmetric Rise/Fall Waveform 有別於Channel Simulator 透過GetWave()只能獲得上升信號;Memory Designer "DDR Sim"還會執行Getwave2(),來獲得下降信號。在最後把bit pattern轉換成waveform時可以正確把上升下降信號反應出來。 2. Clocking by External Signal 要解決這個挑戰,需要分兩個面向來處理:      A. AMI模型本身要支援triggered by external clock      Keysight SystemVue 可以產生透過外部clock trigger的DDR AMI模型,如下圖。 SystemVue產生AMI模型的界面支援reference external clock      B. 通道模擬引擎要支援。      Memory Designer "DDR Sim" 支援需要讀取外部clock的AMI模型。 3. DC Offset Memory Designer "DDR Sim" 會計算DC offset,並提供給RX AMI模型做波型處理。 4. Multiple Channels Work at the Same Time Memory Designer "DDR Sim" 會把所有的信號都當主信號,同時考慮其他信號對該信號的干擾來分析,例如在分析DQ0的時候,DQ1-63還有CA信號都是干擾源,以此分析出DQ0的信號品質。

DDR5 Simulation Challenges

圖片
JEDEC在DDR5中規範了DFE (Decision Feedback Equalizer)的使用,間接(我認為蠻直接的)的告訴大家,之後DDR的模型需要可以考慮EQ,當下大家都把矛頭指向在SerDes行之有年的IBIS-AMI。也因此模擬引擎就不會是單純的Transient,而是要可以解析AMI模型的通道模擬器(Channel Simulator),看起來變動很大,但對於熟悉SerDes信號模擬的工程師來說,卻是相當的熟悉。 說到這邊,很多人可能認為那就把DDR5的AMI模型丟到Channel Simulator去跑就好了,例如ADS的ChannelSim,但我可以告訴你,事情沒有這麼簡單,至少有四個問題是ChannelSim無法處理的。 1. Asymmetric Rise/Fall Waveform SerDes信號不是P-N,就是N-P,所以斜率都是一樣的,可以用一個方法來看這個現象,假設高電位是1V,低電位是0V,那上升下降的交叉點會在0.5V,但這對DDR信號不成立,DDR本身的充放電曲線就是不一樣的,因此上升下降的交叉點不一定會落在0.5V。 典型的SerDes眼睛,上升下降斜率對稱 典型的DDR眼睛,上升下降斜率不對稱 (看上下半眼睛的大小也可以看出該不對稱) 2. Clocking by External Signal SerDes是透過differential信號自帶clock,透過CDR(clock data recovery)來把正確的clock取出,因此可以在最適合的時間點做DSP的處理,這對一些timing sensitive的演算法非常重要,例如DFE。但DDR是透過另外一組信號來提供clock,例如DQS給DQ提供clock,CLK給CA提供clock。AMI model本來的機制是靠CDR把clock從differential信號擷取出來,但這不適用DDR,因此若要正確反應DDR AMI,應該要可以reference clock信號(DQS/CLK)。 3. DC Offset SerDes因為是differential信號,因此Channel Simulator不會計算DC offset,但這對DDR的設計卻是非常重要的,DC的值會直接影響到眼睛的判斷,因此處理DDR AMI模型的引擎要可以計算DC offset,否則其...