2014年7月28日 星期一

堆疊IC的IC design flow分享

在半導體領域中,目前還滿熱門的話題就是堆疊IC(3D IC),堆疊IC的主要技術有封裝以及TSV兩種方面。技術瓶頸突破主要是在封裝廠以及晶圓廠。做為一個數位工程師,他能做得是什麼?
不管是堆疊封裝還是TSV,在技術上,數位工程師都是無法著墨。雖然無法做為一個主要角色,但做為一個輔助角色而言,數位工程師是絕對能幫得上忙的。
堆疊IC是一個新的方法、新的觀念。目前已知可以堆疊的介面選擇有很多,例如:DDR3, LPDDR2,PHY的介面等等,堆疊的方法也有很多,例如:利用 TSV技術找到新的堆疊面,或是兩個IC面對面的堆疊等等。依目前現況,堆疊的測試沒有統一的方法或是標準。目前已經有人在努力制定標準或是概念,相信在不久的將來,或許會有一個新的協定發展出來,而人們可以經過這個協定測試各種不同堆疊方式做出來的IC

在做堆疊IC之前,首先我們要先有一些通俗的概念,然後我們再去探討問題是什麼?再過來才去找可能的答案有哪些?
堆疊IC的通俗概念。

1. 堆疊IC前,要先找到一顆好的IC來堆疊。
2. 堆疊IC的堆疊介面一定要符合要求,才能拿來堆疊。
3. 堆疊IC封裝後,要能確認裏面的IC都是好的,尤其是堆疊的介面。

以上兩點,相信大家應該都能清楚明白。

針對以上想法,整理應該做的測試項有哪些?

4. 在堆疊前,測試IC的電路是否完整的?
        基本的function都要能運行,速率也要能達到要求。就目前單顆IC測試方法而言,相信已經有很多成熟的方法可以確保這件事情。
5. 在堆疊前,IC的堆疊介面速率是否符合要求?

        如果堆疊介面速率需要在1GHz下運行,在堆疊前,首先要確認IC的堆疊介面是否可以1GHz下運行,如果不行,就不能拿來堆疊。不然,花了一大筆錢,做出一堆不符合要求的堆疊晶片,不就白費功夫。

有些人堆疊IC不做TSV,有些人要做。如果你有做TSV的話,在做完TSV後,還是要再次確認IC的狀態。

6. TSV後,測試IC的電路是否完整的?
7. TSV後,IC的堆疊介面速率是否符合要求?
8. 新做的TSV介面是否有導通?

之後我們開始做堆疊,然後封裝。封裝後,我們要確認以下的項目,才能確保晶片的品質。

9. 堆疊後,確認每個IC的內部電路是否完整的?
10. 堆疊後,確認堆疊介面的資料傳輸是否正確?確保堆疊的正確性!

不曉得大家是否有注意到,1~34~56~89~10的測試觀念都很雷同?測試觀念其實只分成兩個觀念: 

1. 不管是堆疊前還是堆疊後,單顆IC都要能運行無誤。
2. 不管是堆疊前還是堆疊後,堆疊介面的運作,都要能在目標速率下,運行無誤。

第一個觀念,相信大家都已經是耳熟能詳。單顆IC的測試有很多,挑幾個來做即可。第二個觀念,相信大家總有一天可以找解決的方式。此時,我想強調的重點是:你是一個數位工程師。在設計電路時,IC design流程是你一定要遵循,且你的設計電路也一定要在這裏被qualify。在IC design 流程中,你要用什麼方法驗證兩顆IC的堆疊介面?在傳統的認知裏,IC design流程是單顆IC的設計流程,怎麼做才能做到兩個IC同時被qualify

在分享經驗以前,我先把當時的已知條件先列出來。
1. 需要一個可以在IO上做loopbackIO cell.

2. IO cellLIB必須是完整的,包含loopback pathtiming分析。
3. 需要堆疊介面的RC timing值,因為做simulationsynthesis會用到。

4. 兩個堆疊IC都是新設計的IC

在堆疊介面上,使用可以loopbackIO cell,設計一個測試電路,在IO input上和output上各放置一個DFF. IO cell視為一個combination的電路。所以不管是堆疊前,還是堆疊後,其實都是DFF.DFF.timing分析。因此,在堆疊前,可以利用測試電路知道,資料經由IO cell後,是否還是正確?timing是否符合要求?如果都是正確的,我們即可以拿來做為一個堆疊的IC準備。





在這裏要注意的是,測試電路的DFF是在IO cellinput方向和output方向,所以在正常的電路設計裏,也要用到這兩個DFF,如果才能確保測試電路出來所做出來的測試結果,在正常路徑下,也能運行無誤。
所以在simulation階段,我們可以模擬堆疊前和堆疊後的結果。Test wrap也可以在FPGA階段時驗證。
synthesis階段,我們可以先單獨synthesize IC_AIC_B,然後再建立一個大的block,把IC_AIC_B放入,檢查剛剛synthesisIC_AnetlistIC_Bnetlist是否有符合timing?

如果有堆疊介面的RC timingLIB,我們也可以把它加上去,再次檢查timing

prime time時,除了要驗證單獨的IC_AIC_Btiming外,還要做block_Ctiming analysis

simulation驗證->timing分析-> post-simulation,每個步驟都有完整的驗證。所以,我們可以知道,在堆疊前,通過測試電路的IC,就一定可以拿做堆疊。堆疊後,通過測試電路的IC,就一定可以確保堆疊介面的資料傳輸可以運行。

是否還需要多做其他的debug pin,來監測或是了解堆疊運行的情況,這就要視情況而定,沒有固定的答案。