當前位置: 華文問答 > 數位

參與流片是一種怎樣的體驗?

2015-10-14數位

題主肯定是想聽業內故事,我也想聽,頭排坐等各位業內大神。

但能流片的不一定是企業,我也想給大家講一個【學術狗酸甜苦辣流片記】。挖坑保證一周內寫完,先上圖為證。

當然想聽的可以先關註我贊起來了。

----------------------(10月16日填坑正文分割線)----------------------

在趕一篇論文,原本想周末得空寫一寫。但各位贊得踴躍,評論裏討伐聲不斷,其他大牛的回答也越來越精彩,只好放下工作趕緊來填坑。

【幾個聲明】

先聲明幾件事,我在大學做科研工作,這次流片主要工作是在13年,做的是可自我修復軟硬錯誤的FPGA芯片,TSMC 65nm制程,最終結果是成功的。寫這篇回答一想記錄下這段經歷,若能對同學們有一點點價值,幸甚至哉。我們只做架構、前端設計和配套的CAD開發,後端外包給了專業的公司。由於是學生團隊,望專家輕拍多賜教。出於保密原因,本文不能涉及敏感資訊,以故事、經驗和感觸為主。

【背景】

話說我們當時在做一個為期三年的容錯性FPGA研究。這個研究方向有價值,做的人少,我們又有積累,相對容易出成果。我之前的博士,用了兩年時間提出了一種可以自我規避軟硬錯誤的FPGA架構,頂會發表了成果,然後順利畢業。歡送完師兄,才意識到可能我要為他背一個很大的鍋--流片。

13年是該計畫最後一年,按計劃要將之前的成果流片驗證,並且必須在14年四月前拿到芯片數據結束計畫。學術界,不是自己的課題,流片是出力不討好的。前期成果師兄經發表了,最終總結性成果是boss的。耗時耗力,成功了皆大歡喜,一旦搞砸還要背鍋。而且這一年也是我博士最後一年,實驗論文會議各種焦頭爛額。

但處於一個技術人員對技術的本能渴望,終於boss找我談流片計劃時,欣然接受了。失敗也沒什麽可怕的,我覺得作為一名技術人員,除了自己的無能,不應該恐懼任何事情。從四月學期伊始,帶上三個師弟和一匹白馬--不好意思沒有馬--開始了地獄般的流片之旅。

【故事正文】

所有計畫的前期都是陽光明媚,四五月我時常和師弟們在校園的樹蔭下手握可樂,一邊談風和日麗,一邊目光保護文學科的學妹們來來往往。研究室裏也歡聲笑語常在,我問學弟們Verilog寫到哪了,他們問我架構定下了嗎,我問助教什麽制程die size多大,然而大家都不知道,互道還早還早,相視一笑哈哈哈。

轉眼六月,boss已經決定將後端外包,我們大松了口氣。之前有過兩次自己layout失敗的經驗。第一次,我們畫了幾個月手動layout了自己的logic cell,包裝成cell匯入自動layout流程,結果到了deadline整體DRC也沒透過,最後只裝了幾個簡單的測試電路,但好在關鍵數據都順利測得。另一次和一家知名日企合作,使用了他們實驗性的FeRAM替代FPGA的SRAM,芯片回來,一個學生測試了半年也沒有任何反應。現在回想起那個學生的無數個日夜,在燈光下獨自一人嘗試和一塊石頭交談,依然感慨。學校裏自己手動layout,多是模擬的同學。學校和企業不同,學生來去太快,很難沈澱下layout這種要求多年經驗的手工藝。所以研究大規模數位電路的學術機構,還是要有自知之明,讓專業的人做專業的事。

然而此時卻發生了個意外,常年為日本學術界鞠躬盡瘁的老朋友富士通半導體,由於不景氣和松下半導體部門合並,我們一直使用的e-Shuttle制程不能再用了。這讓我們震驚又難過,富士通半導體一直透過VDEC,以很低的價格為學術界提供MPW流片服務。我們一度覺得那年的流片計劃要取消了。然而平時憨態可掬啥事不管的大boss罕見地展示了他的力量,火速聯系、談妥了後端設計公司,透過後端公司搞定了TSMC的合作合約。這個過程異常艱難,預算資金、跨國合作、各種合約條款保密協定、多方斡旋,說短也差不多用了兩個多月的時間。而TSMC的standard library到我們手,已經是八月。

這時重要的時間點就定下來了,研究期間限制14年三月必須拿到芯片,後端公司推薦了14年1月的TSMC流片計劃,後端要求三個月設計時間,我們必須10月初交付前端設計檔,留給我們的只有僅僅兩個月了。

好在三個學弟基礎模組的Verilog已寫好大半,兩人負責FPGA Array,一人負責Controller。只要我用TSMC的standard library重新跑一邊架構探索,再估算出預定的die size下FPGA的大小,就可以一氣呵成完成程式碼。這個過程非常順利,用我博士課題中開發的面向ASIC的FPGA IP CAD Flow,在十幾台伺服器中跑了一周Benchmark,在幾十種自制FPGA Architecture找到了效能最佳的架構和尺寸。Flow的執行和數據回收、分析全程自動化,一切按設計執行,完美,心裏給自己點了個贊。然而,我並不知道下面等待我的九月和十月將是我人生中最黑暗的兩個月。

八月末,師弟們的FPGA整體組裝已經初步完成,進入測試期。九月初我還參加了FPL2013,領域頂級會議,學術精英,在波爾圖的酒莊品著紅酒吹著牛。然而回來後各種問題在測試期爆發了,一片混沌。

下層模組的測試都還順利,但我們必須要在交付後端前,做整片cover所有功能的完整的仿真。這就需要我盡快完成CAD的最後一個功能,為這次的FPGA編寫bitstream生成器。FPGA部、I/O部,所有都是可編程的,20多萬位元,要根據LUT的邏輯和FPGA Routing的結果,自動生成,一個都不可以差。並且,我們這款FPGA有自動糾錯功能,指令模式多達十幾種,針對每個命令都要有相應的bitstream。這部份工作量正常少說也要兩三個月,但我們總共也沒那麽多時間了。

這時候還開始增加需求了!因為預計到樣片很有可能因為各種原因無法工作,為了把風險降到最低,boss要求利用多余引腳插入訊號後門。一要可以隨時檢視內部寄存器的狀態,二要可以透過多個點註入FPGA的configuration bit,保證即使一部份出了問題,依然有辦法讓剩下的部份工作。於是師弟們開始無日無夜的加電路程式碼,我無日無夜地搞這20多萬個configuration bit,仿真。

仿真是噩夢,一次快速最佳化仿真要一個小時,但只能觀測到提前指定的訊號。一次完整的慢仿真要三個多小時。軟體開發出身的我,習慣了一邊debug一邊改程式,按下run馬上就可以定位問題所在。而我們的FPGA仿真一次三小時,如果我沒算錯一天不睡覺也只有八次機會而已。所以想想開發成本是和測試周期長度成正比的,高成本的醫學生物研究一個周期幾周到幾個月,更高成本的農業更是要幾個月到幾年。面對這種困難,我采取的策略是執行前更認真地審查程式碼,盡量靠code review排除bug。出錯了也不是急於翻程式碼,而是根據現象在腦中思索產生bug的所有可能性。再就是同時跑多組測試節省時間。那時候時間比什麽都寶貴,不分晝夜每三個小時看一次仿真結果,分析,改程式,再跑。時間管理和硬體設計一樣,並列、流水線、達芬奇睡眠法。

還有一個噩夢是data sheet。因為之前忙於開發,大家並沒有準備data sheet。然而這次是外包後端,除了Verilog程式碼、約束,自然需要詳細的data sheet給人查閱。我們在九月底忙得不可開交的時候,還同時寫了大概有1000頁紙的各部份電路說明、功能說明、約束說明。

一個九月基本沒休息,好在最後大家拼命把該做的事都完成了。第一次仿真成功的時候,大家感動得不輕。一個Verilog測試電路,透過ODIN II綜合、我們修改過的ABC mapping、TV-Pack打包、VPR布局,最後用我開發的EasyRouter布線並生成bitstream,下載到自己的FPGA中成功仿真出結果。我只想謝謝開源社群,謝謝師弟們,你們的工作太了不起了。

十月,如期和後端公司派來的工程師見面了。對方相當專業、談吐幹練,在我們眼裏就像從天而降前來營救的三棲特戰隊員。當我們搬出1000多頁的說明書,他們也驚呆了說沒見過這仗勢。我猜他們心裏應該是萬馬奔騰的,你們給RTL和constrain就好了,誰要管這些。實際上專家們也有些輕敵了,他們並沒預想到layout FPGA的困難。

大家知道timing是數位設計的一切,每個時鐘的setup、hold time,關鍵path的propagation delay都要準確約束。然而FPGA在configuration之前,邏輯是不確定的,裏面大量存在的timing loop足以讓任何一個ASIC CAD工具報錯甚至crash。加之我們還要求一些主要的routing channel和logic path盡量延遲一致。這都是其他型別芯片的Layout不存在的困難。通常我們自己仿真,會先載入benchmark的bitstream,自然就不會存在timing loop了。而做後端不能只為一個benchmark做約束,不能使用這一方式。最後我和對方的工程師用了大量精力,一起編寫了幾十個場景的約束,他們只要滿足這些約束就可以。如果存在我們沒考慮到的約束而導致流片失敗,對方是不用負責任的。其實後端外包公司通常都不需要擔心負什麽責任,因為一旦失敗,大多學術機構是沒能力去追查責任在誰的。

中間還有一個插曲很驚險。後端公司起初告知我們可以使用的die size,忘了減掉I/O Pad的面積,而這些Pad幾乎占了五分之一的可用面積。當他們發現這一問題,也有點慌張了,發信件來問可不可以改設計,讓FPGA Array小一點。我們也不可能有精力重做,很堅決的否定了。後來對方還是展現了強悍的專業風範,使用了CUP(circuit under pad),在模組縫隙中手動layout等絕技,把我們的FPGA塞了進去。後端公司的工程師們給我印象非常深刻,不知道他們會不會吐槽後悔接了這個苦差,也不知道他們是不是熬了很多個日夜。專業人士就是這樣,接活,做完。看起來輕松,他們只是不會讓你看見他們的辛苦。這世界不存在舉手之勞這回事。

完全交付後端到14年三月收樣片,封裝,我們還設計了樣片和VLSI測試平台中間的一塊adapter board。我抽空完成了博士論文和答辯。和幾乎所有答主提到的一樣,緊張感肯定有的。但我看的比較開,從技術角度,我已經學到了很多。但最重要的,是我三月就能拿到學位,東窗事發可以隨時跑路。好在一切順利,我們的芯片最終正常工作。測試數據成功返回的瞬間,我是整個人癱軟在了椅子上,靈魂出竅,想起了NHK紀錄片【電子立國自述轉】中一位半導體前輩說的一段話:

「每次芯片tapeout的兩三個月,心裏是非常不安的,睡不好。隨時都在想會不會有問題,哪裏哪裏對不對。芯片回來,第一次按RESET,心裏的緊張到了極點,RESET松開,就是區別天堂和地獄的一瞬間。邏輯分析儀數位混亂,心情瞬間落入地獄,沒人願意說話。如果一切正常,人就像到了天堂,就像整個世界都在圍繞自己旋轉,就像我就是世界之王。」

(故事完)

(沒點贊的同學們可以點贊了。贊過的同學,其實我之前的回答也還蠻不錯的。)