上文從 DV 在老板層和員工層兩方面做出了分析。躍躍欲動的準(zhǔn) DVer 又需要經(jīng)過哪些歷練呢?小白有何快速入門手冊?在自動化征程上的硅農(nóng)有著什么樣的碼農(nóng)之路呢?DV 的八邊形法則是啥?DV 又是什么四不像呢?且聽此文介紹。
模擬混合信號設(shè)計驗證?嘿,不就是一個跑仿真的嘛?剛畢業(yè)的小孩兒就可以做:搭 Test Bench,跑仿真,看結(jié)果??墒钦娴穆涞綄嵉?,剛畢業(yè)的小孩兒準(zhǔn)備了什么才能跑起仿真來?具體每步怎么做?小白怎么入手?如果一開始就是大量的英文幫助文檔,這是多么地打擊一個初學(xué)者的熱情哈?嘿嘿,這是有解決辦法的。有一本很好的入門書,浙江大學(xué)何樂年老師、王憶大牛編著的《模擬集成電路設(shè)計與仿真》(此處必須的廣告植入哦!)。里面有最基本的模擬電路概念,例如放大器,數(shù)模轉(zhuǎn)換等;更是有模擬集成電路的仿真技術(shù),例如怎么跑瞬態(tài)、怎么看增益 / 相位裕度,怎么看待噪聲等。如果能把這本書好好研究一遍,恭喜你,已經(jīng)真的進到 DV 的門檻里面來了。
好了,終于一個仿真搞定了,接下來卻發(fā)現(xiàn)是大量的工藝電壓溫度(PVT)組合仿真;大量的大量的仿真。提交仿真,等待仿真,后處理結(jié)果。一些工作看著簡單,但是誰知道提交上去的仿真,會不會 netlist 生不成啊,會不會中途仿真空間滿了呢,又有的時候會不會仿真莫名其妙地就 Crash 了呢。好不容易有了大量仿真的結(jié)果,看那么多的波形,那么多的數(shù)據(jù),一個個點開來又是超級的多。人肉工作最是累累累!這時候,你就會開始想著怎么偷懶了,如何在知道有大量仿真的情況下高效的工作呢,怎么能省事呢。恭喜你,因為你馬上就進入了學(xué)習(xí) Code 的階段。
然而代碼的世界,是一個侯門一入深似海的世界。
首先你發(fā)現(xiàn)用實際的電路仿真來建立 TB,建立 Checker,有點太慢了。于是你開始把一部分電路做成模型;開始的時候是在電路里用元器件做模型;后來寫上代碼的你喜歡用 Verilog/VerilogA/VerilogAMS 寫;開始時候模型寫的很簡單,后來發(fā)現(xiàn)關(guān)心的東西多的時候,可以寫的很復(fù)雜;漸漸的你喜歡上了 Wreal,搞得和實際的差不多。抑或你研究透了 table model 啥的,搞得更高大上一些。但是可能做的模型太復(fù)雜了,速度其實并沒有優(yōu)化多少,你又回過頭來開始選擇合適的模型:開始不成熟時候用簡單的就行;愈發(fā)準(zhǔn)確時候就用復(fù)雜的?!暗边@個詞語,你越發(fā)的知道其中的道理。
再后來,你已經(jīng)在大量的仿真工作中,逐漸有點不喜歡一個一個點擊的 ADE 了;于是你開始試圖放棄 GUI 環(huán)境,通過代碼來解決問題了;于是你開始向 EDA 跟班學(xué)習(xí)了。什么 Shell 啊,Skill 啊,以及里面的 Ocean 啥的,開始進入你的世界,脫離了經(jīng)常在服務(wù)器負(fù)荷比較重的時候、點擊啥就發(fā)白、響應(yīng)半天的 GUI 界面;突然之間你會有一種飛起來的感覺;通過兩只手敲擊代碼就能跑起來仿真,你會想著再也去繁瑣的界面點點點了;當(dāng)然了,事實證明后面還是有些陌生的工作得跑回去用通俗易懂的 GUI 界面。
由于知道有大量的仿真會等著自己來完成;你更注重于 Stim 和 Checker 的設(shè)計了。能 Calculator 提取出來的后處理數(shù)據(jù)固然不錯,但是能夠和芯片不停交互的 Checker 更是讓人喜歡;抓數(shù)據(jù),設(shè)置 Limit 范圍;這樣子大量仿真之后立馬知道結(jié)果,多好啊。另外,為了大量仿真能夠快速完成,你在盡可能的數(shù)字化,模擬信號數(shù)字化;Checker 數(shù)字化;等等,極盡全力就是為了加速。
通過 Checker,制造了大量的仿真數(shù)據(jù)。Perl 就欣然跑上舞臺了。大量的文本處理,從來就離不開 Perl。想什么東西能夠自動化生成,想什么結(jié)果能夠規(guī)范的處理好,就來學(xué)習(xí) Perl 吧。再后來,發(fā)現(xiàn) Python 也不錯,語法清晰簡單,讀起來不能說是朗朗上口、卻也意思明了、一點就通;維護起來也更容易一些;所以一些人就放棄了有時候會感覺上有點復(fù)雜的 Perl,開始了追逐 Python 的道路。當(dāng)然了,有了數(shù)據(jù),Excel 也扮演了很重要的角色,VB/VBA 也開始進入大家的眼球。就是為了方便,大家紛紛在尋找著各種途徑。
數(shù)字化程度越高,你也慢慢關(guān)心起來數(shù)字驗證了。UVM,Coverage,Assert 等觀念也開始進入視線。而 System Verilog 作為一個基礎(chǔ)的語言工具,你又得學(xué)起來了;什么 Class,什么 Random,有些東西本來 Verilog 要半天才能搞定;System Verilog 幾句話就行了。當(dāng)然了,喜歡高級語言是沒有盡頭的,因為 SystemVerilog 上面還有 System C,C;等等等等;一個好好的硅農(nóng),正在像碼農(nóng)的方向飛速奔跑著。
來來來,看看這個示意圖吧:簡筆畫本身依然是網(wǎng)絡(luò)上摘錄的,我這里就是負(fù)責(zé)它的組合拼湊,來賦予它思想和內(nèi)涵的。
長途的碼農(nóng)道路奔跑的差不多的時候,終于整個 Flow 看起來已經(jīng)建立的不錯了。結(jié)果打開大量的仿真結(jié)果一看,竟然好多都沒有跑完,仿真不收斂了;又或者是一些仿真結(jié)果,怎么看著都覺得不對勁。你又開始拿起來仿真器的原理和設(shè)置來研究了。牛頓迭代,仿真精度設(shè)置,Connection Rule,gmin 等亂七八糟的參數(shù),讓你開始眼花繚亂,原來里面的學(xué)問這么多;你開始下手來調(diào)試一些參數(shù),摸索著會有什么樣的變化。
發(fā)現(xiàn)點電路的 Bug,自然是 DV 的任務(wù)了。你以前是芯片當(dāng)做黑盒子測試;慢慢地隨著 Checker 的交互設(shè)計,你也加入了一些內(nèi)部信號,使得一旦發(fā)現(xiàn)芯片有問題、咱就不玩了、就停掉仿真就可以了,不再繼續(xù)跑了。再高的境界就是如果發(fā)現(xiàn)了 Bug,自己也深入里頭去 Debug。這個時候發(fā)現(xiàn) Design 的知識又很重要了,又回過頭來開始和 Design 蹲班看電路。
隨著芯片規(guī)模的增大,隨著更多的人加入 DV 的工作;你發(fā)現(xiàn)你可以開始只負(fù)責(zé) DV 的大環(huán)境平臺。不再寫具體的 TB,因為有人可以做更具體的工作了。然而,千萬不要以為這樣子就輕松了,因為 DV 的大環(huán)境事兒更多:不收斂了,有人來找你;模型有問題了,有人來找你;Golden 的 Task 在具體 TB 應(yīng)用時候有問題了,又有人來找你。你也在揣摩著怎么在一代、二代、三代、n 代產(chǎn)品中,Reuse 的越來越高。至于什么“第一代叫王菲,第二代叫汪小菲”之類的信號變異等,我們大平臺把 Alias 做好了,你愛叫啥名字就叫啥名字吧;內(nèi)核保持不變就行了;沒事別再為這些事情費腦子了。
經(jīng)歷過了撰寫維護 DV 的大環(huán)境平臺,你更是在逐步地累積經(jīng)驗和教訓(xùn)。慢慢的你會發(fā)現(xiàn)其實更具有挑戰(zhàn)的事情,竟然是寫 DV Plan。怎么寫 DV plan,如何設(shè)置優(yōu)先級,明白哪些必須要測試,哪些可以放后面。這些最根本的就是客戶的需求,你需要和 System 好好溝通,挖掘出來客戶到底喜歡啥。針對哪些客戶有哪些不同的側(cè)重點;客戶到底希望什么時候拿到芯片,有哪些是他們的底線、肯定得滿足等。抑或是 DV 的 Task 具體由哪些人做更好。哪些人擅長于這部分的測試,而另外一些人可能更有其他優(yōu)勢??傊?,項目的 Schedule 一如既往的緊之又緊,如何在有限的時間、有限的人力、有限的機器下面,發(fā)揮出來最大的價值,拉住客戶,贏得市場,又成為了需要精細(xì)思考、謹(jǐn)慎布置的事情。
終于的,你也總結(jié)了一個 DV 的八邊形法則:仿真速度(Sim Speed),仿真精度(Sim Accuracy),仿真空間(Sim Space);自動化程度(AutoMatic),長短期效率(Efficiency),復(fù)用程度(Reusable) ,優(yōu)先程度(Priority)和覆蓋率(Coverage)。各方利益相互沖突,分分秒秒相互撕扯,心里經(jīng)常有無數(shù)不停打架的小人人,在叮叮咚咚地亂說話;而流片之前更是不斷地有萬千的馬飛過!參見我畫的圖:這次終于不用用網(wǎng)絡(luò)圖片了;這些個拔河的小朋友們咱們還是可以純手工鼓搗出來的!
總之,要成為一個模擬混合信號設(shè)計驗證(DV)工程師,其實也很容易;要做好一個 DV,其實也不容易。等這些整的差不多明白的時候,你發(fā)現(xiàn)你已經(jīng)和 Analog Design 有很大一部分交集了,又和 EDA 似乎有著千絲萬縷的聯(lián)系,然而也略知了一些 Digital DV 的套路;在寫 DV Plan、設(shè)置優(yōu)先級之類的時候,你也學(xué)習(xí)到了 System 的精髓。你終于發(fā)現(xiàn)自己開始四不像了,恭喜你,這就是 Analog/Mix-signal DV 的樣子;這就是 DV 的“鬼知道經(jīng)歷了什么”:就讓咱們借助于運動員小盆友的萌照來娛樂一把吧!
與非網(wǎng)原創(chuàng)內(nèi)容,不經(jīng)允許,不得轉(zhuǎn)載!
系列匯總:
之一:談模擬混合信號設(shè)計驗證?先從這個職位說起吧!