一、
經(jīng)典的設(shè)計(jì)與驗(yàn)證流程
可以看到設(shè)計(jì)與驗(yàn)證永遠(yuǎn)是同步節(jié)奏,即使因?yàn)橐恍┛陀^原因,導(dǎo)致驗(yàn)證稍微慢于設(shè)計(jì)節(jié)奏,最終也會(huì)回到同步的節(jié)奏上。
這樣的理想狀態(tài)就對(duì)設(shè)計(jì)工程師有一定要求,比如拿到設(shè)計(jì)需求,就然后開始概要設(shè)計(jì)文檔,其中就包括整體的模塊對(duì)外接口,關(guān)鍵時(shí)序,整體的架構(gòu)設(shè)計(jì)等。驗(yàn)證工程師拿到概要設(shè)計(jì),就可以開始進(jìn)行驗(yàn)證feature規(guī)劃。
詳細(xì)設(shè)計(jì)文檔,設(shè)計(jì)要完成整體的模塊的控制流,數(shù)據(jù)流、memory需求規(guī)格,狀態(tài)機(jī),關(guān)鍵電路,關(guān)鍵時(shí)序設(shè)計(jì)等。驗(yàn)證拿到詳細(xì)設(shè)計(jì)文檔,就可以進(jìn)行驗(yàn)證case規(guī)劃,驗(yàn)證計(jì)劃文檔編寫。
理想的狀態(tài)下設(shè)計(jì)拿著自己的詳細(xì)設(shè)計(jì)文檔就可以直接行云流水式的寫代碼。寫代碼真體力活。而這段時(shí)間驗(yàn)證就可以進(jìn)行驗(yàn)證平臺(tái)搭建和驗(yàn)證case設(shè)計(jì)。
設(shè)計(jì)代碼寫完,編譯通過,lint清除,將一些低級(jí)錯(cuò)誤扼殺在搖籃里。驗(yàn)證平臺(tái)也搭建好,設(shè)計(jì)與驗(yàn)證對(duì)接,一起調(diào)試第一條case。第一條case通過,環(huán)境OK,代碼OK。開始循序漸進(jìn)debug。
驗(yàn)證驗(yàn)出bug,提給設(shè)計(jì),設(shè)計(jì)修改,上傳版本管理庫,驗(yàn)證up,進(jìn)行回歸。完全正確,調(diào)試下一條case。
IP驗(yàn)證到一定feature成熟,釋放一個(gè)版本給鏈路驗(yàn)證同事,驗(yàn)證多個(gè)IP配合的場(chǎng)景和當(dāng)前版本成熟的feature,很少會(huì)出現(xiàn)在鏈路上驗(yàn)出IP級(jí)的bug(當(dāng)然也有)。
鏈路驗(yàn)證到一定feature成熟階段,釋放版本給系統(tǒng)驗(yàn)證同事,驗(yàn)證多個(gè)鏈路配合場(chǎng)景和當(dāng)前版本的成熟feature。系統(tǒng)驗(yàn)證成熟到一定feature。然后再上硬件加速器驗(yàn)證和FPGA原型驗(yàn)證。
整個(gè)理想的過程,一氣呵成,在系統(tǒng)驗(yàn)證和加速器/FPGA原型驗(yàn)證上,會(huì)比較順利,不會(huì)因?yàn)槟K級(jí)的bug卡住驗(yàn)證進(jìn)度,因?yàn)樵诖笙到y(tǒng)里面調(diào)試效率非常低,基本就只剩過case。
理想很豐滿,現(xiàn)實(shí)很骨感。
現(xiàn)實(shí)情況是
設(shè)計(jì)人員寫完代碼才寫文檔,導(dǎo)致驗(yàn)證遲遲沒有設(shè)計(jì)文檔,無法開始驗(yàn)證計(jì)劃和驗(yàn)證環(huán)境搭建。最終整體項(xiàng)目時(shí)間delay1-2個(gè)月。
設(shè)計(jì)人員不寫文檔,直接寫代碼,邊寫邊想,設(shè)計(jì)架構(gòu)沒有經(jīng)過評(píng)審,和上下游交互接口和時(shí)序都對(duì)不上,代碼寫完也是要修改重新寫,最終整體項(xiàng)目delay1-2個(gè)月。
項(xiàng)目delay了,設(shè)計(jì)著急了,在IP驗(yàn)證尚未完全時(shí)就開始鏈路驗(yàn)證,系統(tǒng)驗(yàn)證。出現(xiàn)問題,debug效率低下,一天發(fā)現(xiàn)一個(gè)低級(jí)錯(cuò)誤,鏈路驗(yàn)證和系統(tǒng)驗(yàn)證仿真時(shí)間長。你為什么總在加班?
設(shè)計(jì)著急了,在鏈路驗(yàn)證和系統(tǒng)驗(yàn)證尚未完全時(shí),就開始加速器/FPGA原型驗(yàn)證,編譯一個(gè)版本要一天,效率更低下。你為什么總在加班?
最終,項(xiàng)目還是delay,所有人也還是要加班完成。所以做芯片是有章法可循,業(yè)界多少年總結(jié)出來的血淚經(jīng)驗(yàn),不遵守是要吃虧的。
設(shè)計(jì)工程師與驗(yàn)證工程師是好朋友
設(shè)計(jì)工程師和驗(yàn)證工程師是永遠(yuǎn)的好朋友,你們是共同在完成一個(gè)工程,產(chǎn)品,磚。驗(yàn)證的case和驗(yàn)證完備性是要兩個(gè)人共同的努力的成果。
有一個(gè)驗(yàn)證,發(fā)現(xiàn)一個(gè)case fail了,打電話給設(shè)計(jì),case xxx fail了,看下什么原因。設(shè)計(jì)跑出來看了下,回個(gè)電話,是你平臺(tái)的原因,修改下,case pass了。設(shè)計(jì)與驗(yàn)證是好朋友。
有一個(gè)驗(yàn)證,發(fā)現(xiàn)一個(gè)case fail了,打電話給設(shè)計(jì),case跑一次賊慢 ,波形我已經(jīng)跑好了,直接在我們的共享窗口上看下吧,設(shè)計(jì)看出了問題,本地修改了下,回個(gè)電話,我上傳了,你up下再跑一下。晚上下班前回歸下case。設(shè)計(jì)與驗(yàn)證是好朋友。
又有一個(gè)驗(yàn)證,因?yàn)橐恍﹤€(gè)人原因,驗(yàn)證平臺(tái)沒有及時(shí)搭建起來,delay與設(shè)計(jì),但設(shè)計(jì)代碼已經(jīng)寫完了,沒有平臺(tái)和case驗(yàn),跑到驗(yàn)證辦公位后面,站在身后監(jiān)工,沒你平臺(tái),我可搞不了。設(shè)計(jì)與驗(yàn)證是好朋友。
還有一個(gè)驗(yàn)證,沒有發(fā)現(xiàn)任何bug,設(shè)計(jì)打電話說,我改了一行代碼,沒有任何影響,就是代碼風(fēng)格變了下,這樣寫覆蓋率更好收,占用資源更小。我要提個(gè)問題單記錄一下,這造成了我回歸的工作量。設(shè)計(jì)與驗(yàn)證是好朋友。
突然有一個(gè)設(shè)計(jì),代碼遲遲不愿意給驗(yàn)證,說我代碼bug太多了,我要自己先驗(yàn)下,驗(yàn)證沒法開展工作,然后過了一陣子,找驗(yàn)證說,我過了一百多條冒煙case。拿去給你驗(yàn)吧。驗(yàn)證:你這代碼給我都八時(shí)了,等著項(xiàng)目delay吧。設(shè)計(jì)與驗(yàn)證是好朋友。
流程死的,人是活的
并不是所有的設(shè)計(jì)都要走繁重的流程,我做了個(gè)xxx設(shè)計(jì),先進(jìn)行概要設(shè)計(jì)評(píng)審,詳細(xì)設(shè)計(jì)評(píng)審,代碼review,驗(yàn)證feature評(píng)審,驗(yàn)證計(jì)劃評(píng)審,驗(yàn)證環(huán)境搭建,最后規(guī)劃了10個(gè)case,覆蓋率達(dá)到100%。這么個(gè)破玩意兒,兩個(gè)人整兩個(gè)月的時(shí)間。
有設(shè)計(jì)說,就這,那我還不如自己驗(yàn),你給我搭個(gè)平臺(tái),我自己跑case,收覆蓋率,上FPGA原型驗(yàn)證。兩周搞定。流程是死的,人是活的。但你需要分清什么情況下怎么做才是對(duì)的。
審核編輯 :李倩
-
工程師
+關(guān)注
關(guān)注
59文章
1572瀏覽量
68655 -
架構(gòu)設(shè)計(jì)
+關(guān)注
關(guān)注
0文章
32瀏覽量
6976
原文標(biāo)題:設(shè)計(jì)工程師與驗(yàn)證工程師如何合作?
文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論