驗證其實是一個“證偽”的過程,從流程到工具,驗證工程師的終極目的都只有一個:
發現所有BUG,或者證明沒有BUG,以保證芯片功能性能的正確性和可靠性。
驗證環節對于一顆芯片的重要性也是不言而喻的:
·從項目周期來說,功能驗證在芯片的整個設計周期中占用時間最多,大概要占到70%左右。
·從項目成本來說,驗證一顆芯片大概會占硬件開發總成本的50%。
接下來就來聊聊IC驗證的流程和工具。
理解DUT
驗證工程師需要深入理解芯片Spec,包括但并不限于:了解架構、數據流向、基本功能、接口、IP、協議、寄存器定義等。
對Spec了解越詳細,之后的驗證工作就能夠越充分。
使用工具:查看Spec使用最基礎的Office軟件即可
制定驗證計劃
對于芯片項目的Boss或者負責人來說,一份完整的驗證計劃需要包含:驗證策略方法、人力資源調配、項目進度評估、風險評估等多項內容。
對于驗證工程師來說,就應該考慮功能測試點、驗證層次、驗證方法和驗證覆蓋率等技術層面為主的內容,還需要在搭建驗證環境之前充分review驗證計劃。
制定驗證方法策略
一般會按照大的功能模塊或數據流向對DUT進行劃分,比如需要確定是在module/sub system/chip system哪個level去做驗證。
搭建驗證平臺
根據驗證方案來編寫驗證環境,一般會使用uvm平臺,python腳本輔助來搭建環境,并通過冒煙測試來確定驗證平臺是否完善。
從時間線上來說,搭建驗證平臺可以和提取驗證點并行進行。
提取測試點
測試點被驗證工程師認為是“驗證的圣經”,因為這是諸多工作開展的出發點和落腳點。一些公司會把這個步驟稱作VO(verification objective),也有的公司叫做Test Point。
驗證工程師在分解測試點時需要注意完備性、低耦合以及無歧義,然后將測試點羅列在Excel表格中。
理想情況下,驗證工程師拿到測試點list和DUT之后,就可以寫testcase進行驗證了。
另外,在環境搭建、驗證執行、用例調試、覆蓋率分析等階段也會不斷對測試點進行修正和增補。
執行驗證
根據提取出來的測試點,添加testcase在驗證平臺上去進行測試,這是一個需要反復迭代、反復優化的過程。
這個過程中會使用到vcs/xrun進行仿真、makefile編輯腳本、verdi/ncsim查看波形,并且要盡可能確保每個測試點的功能是否實現正確。
收集驗證覆蓋率
需要收集功能覆蓋率和代碼覆蓋率,增補用例,以確保覆蓋率達到100%。一般可以通過imc或Verdi來查看覆蓋率報告。
一些規模比較大的IC設計公司,會設置專門的崗位來收集驗證覆蓋率。
完成驗證報告
驗證報告通常需要包含checklist、覆蓋率分析、難點覆蓋情況等內容。
上述環節概述了驗證工程師比較主要的工作流程。
但其實驗證是貫穿著整個IC設計流程的,在芯片開發過程中只要發現問題或缺陷,就需要進行修正和改進,直到設計符合預期的要求為止。
從提取驗證點、編寫驗證方案到搭建驗證環境再到具體驗證執行環節的Debug,每一步都需要經驗的加持。
入行兩三年的工程師和十年經驗的工程師,在細節方面的把控是完全不同的。
而驗證,恰好是一個細節為王的崗位。這也就是為什么ic驗證工程師越老越吃香的原因之一。
工作特性要求驗證工程師要做的并不僅僅只是用EDA工具進行仿真驗證,而是從系統架構到應用層面對自己所負責驗證的模塊進行深入了解。
既要能夠如驗證計劃要求的那樣工作在最高層,也要能夠在最底層植入錯誤進行自我檢查。
現在每個摳細節的一小步,都是積累經驗一大步。與ICer共勉!
審核編輯:湯梓紅
-
芯片
+關注
關注
456文章
51170瀏覽量
427222 -
IC設計
+關注
關注
38文章
1302瀏覽量
104284 -
eda
+關注
關注
71文章
2787瀏覽量
173854 -
驗證
+關注
關注
0文章
61瀏覽量
15260
原文標題:ic驗證的主要工作流程和驗證工具是什么?
文章出處:【微信號:IC修真院,微信公眾號:IC修真院】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論