1. 程式人生 > >晶片驗證全視之四: 驗證的任務和目標

晶片驗證全視之四: 驗證的任務和目標

對於一名驗證師而言,他的工作就是完成分配給他的任務,這個任務可能是模組級(module level)、子系統級(subsystem level)或者系統級(chip level)的。準確來講驗證的目標,就是“按時保質低耗”完成目標硬體設計的驗證工作,這句話實際也包含了要完成驗證目標需要考慮到的三個方面:

  • 按時:需要按照專案預先的進度來考慮驗證的時間節點(milestone)。驗證師需要在專案一開始的時候就將時間的概念記掛在心上,我們之前提到的驗證師的五種能力維度,在具體面對專案進度的時候,也需要考慮哪個維度為主,哪個維度為輔。例如針對硬體設計的驗證計劃、驗證環境的複雜度和複用性、大概需要用多少測試用例來儘快達到基本驗證工作量的80%這些都是要與專案進度一同考慮的。要知道“一個都不能少”在晶片流程中的重要性,沒有一款晶片可以因為其中一個模組的驗證延遲而有信心去流片,所以整支驗證隊伍縱向自上到下,橫向覆蓋各個功能模組的每一位驗證師都應該有這種意識,無論何時,時間總是第一位的,時間就意味著客戶的耐心和市場的視窗。

  • 保質:指的是儘可能少地將缺陷暴露在流片以後,至少要儘可能少地暴露在客戶和市場面前,因為從成本的角度來看,由於缺陷的暴露在不同階段造成的損失是指數遞增的。而且,如果晶片交付給客戶以後才被反饋出一些大的缺陷,那麼晶片設計方就會揹負很大的壓力,除了要同客戶一起進行高密度的對話、聯調以外 ,也需要晶片設計方整個產品鏈都要為這個缺陷付出更大的人力物力成本;如果晶片是在客戶一側通過卻被市場發現自身效能不如預期的話,那麼會對晶片設計公司和客戶雙方都造成消極的影響,無論是從市場反饋,還是使用者對品牌的認知度上面都是如此。

  • 低耗:低消耗有兩方面,用更短的時間、更少的人力來完成晶片設計任務,這對於晶片設計公司而言,是一筆前期看得見的可以預期可以控制的成本。同時,也有一些成本是突發的,其中一個就是缺陷的暴露問題。從下圖可以看出又缺陷造成的額外成本是怎麼在不同被暴露的階段來影響晶片專案成敗的。

可以看到的是,矽前驗證中RTL驗證發現的缺陷帶來的影響要明顯小於Gate驗證帶來的影響,因為RTL階段發現的缺陷,只需要修改RTL,而Gate驗證發現的缺陷需要同時做RTL修改和網表手動修改,更是要後端的一系列環節的重複。矽後測試中,如果發現了缺陷,那麼就需要考慮這個缺陷是否是致命性的,所謂致命性的就是它會無法使能一些重要功能,甚至本身會影響一些重要功能的失效和錯誤行為,並且沒有辦法通過軟體層面來做修復。

這樣的致命性缺陷就意味著晶片要做第二次流片,而且也要針對致命缺陷做出修復、功能驗證、後端流程,通常這樣的過程會在三個月以上。如果一個致命缺陷等到被交付給客戶以後才發現,那麼造成的損失則是雙方的,對於客戶來講,他們需要為這個致命缺陷買下產品延遲上市的單,對於晶片公司來講,恐怕這可能是最後一次雙方合作的機會了。

進一步來看,如果我們將矽前流程、矽後流程同客戶反饋聯絡在一起的話,就能夠對晶片流程有一個更清晰的認識。

從上圖我們也可以發現,一旦晶片在出片以後被檢測出的嚴重缺陷會直接導致晶片的二次流片,這對於成本控制是一種額外的損失,同時也會將時間和人力資源消耗在本可以避免的二次流片上面。所以功能驗證是唯一可以用最低成本在矽前流程就可以將上述目標三個因素“按時、保質、低耗”完成的方法。也正因為如此,對於功能驗證而言,驗證經理會通過量化圖示來衡量驗證的進度和產出,而用來衡量的兩個標準,一個是時間,一個是發現的缺陷數量

通過缺陷數量在時間線上的記錄,我們可以繪製出缺陷數量的增長曲線。一般來講,缺陷數量的增長曲線是逐漸逼近變緩慢的,作為功能驗證階段應該需要保證的就是將缺陷數量曲線的增值(至少是致命缺陷數量)保證在矽前階段,不應該讓其發生在矽後測試階段。而且針對缺陷的型別,我們一般會遵循先易後難的驗證方法,這表現在了兩個方面:

  1. 我們給出的激勵向量應該是先易後難,先從簡單的測試向量給出來測試目標設計的基本功能,這一點我們在之前的《驗證能力的五個維度》中有提到隨機約束域的寬窄設定和驗證階段之間的關係。當驗證已經將基本功能測試完畢以後,我們的測試向量再朝著更復雜的情景著手去測試其它功能。

  2. 我們發現出的缺陷也應該是先基本後高階。關於這一點有兩方面的好處,當一開始的激勵向量是基本態的時候,這有助於設計本身在基本激勵缺陷報告反饋中逐步穩定,同時也留出了一定的時間用來幫助設計師和驗證師針對設計細節交換意見,在硬體描述上面統一理解。這種緩衝會使得在其後的複雜測試中,設計師和驗證師雙方會就複雜情形中的硬體輸出結果快速達成一致,因為之前已經就設計思想和原理達成一致了。而對於驗證師自身而言,這麼做也符合驗證的曲線,也就是前期的缺陷曲線斜率較高,是因為設計本身容易被發現一些基本設計問題,而隨著驗證週期,缺陷曲線率也會慢慢變小,這說明設計自身的穩定和功能完備情況趨於最終的設計目標了。

所以對於一名驗證經理而言,如果他有習慣追蹤缺陷率曲線,那麼一般建議他可以檢查兩個地方:

  1. 缺陷率的曲線是否在收斂,或者說斜率是否在變小,這一定程度上可以說明驗證的狀態是否接近於驗證目標。

  2. 此外也需要注意整個過程中的發現的缺陷種類,應該是從基本缺陷再到高階缺陷。假如到了後期缺陷率儘管在收斂,然而卻發現了一兩個基本缺陷,那麼到了這時候就應該對整個驗證質量打一個問號了,有必要的話還需要同驗證師一起回顧驗證計劃、驗證環境和測試序列,因為越到後期越不應該出現基本缺陷的發現,否則驗證經理無法對於整個驗證任務的完成有足夠的信心。

相關推薦

晶片驗證 驗證任務目標

對於一名驗證師而言,他的工作就是完成分配給他的任務,這個任務可能是模組級(module level)、子系統級(subsystem level)或者系統級(chip level)的。準確來講驗證的目標,就是“按時保質低耗”完成目標硬體設計的驗證工作,這句話實際也包含了要完

晶片驗證 驗證能力的五個維度

可能在貫穿到整個驗證系統思想裡面,我們都會不斷重複驗證人員該具備的素質。為了可以將抽象的詞彙具象出來,我們列出了驗證人員在驗證流程中需要具備的五個技術維度。接下來讓我分別解釋這五個維度: 完備性:該維度要求驗證的充分。無論你從專案經理、系統人員、設計人員

晶片驗證一名驗證師的自我修養(上)

首先宣告一下,如果這一篇文章能夠讓你停下來5分鐘思考你哪方面還有值得提高的地方,那麼這篇文章對你來講就是值得的。 我們在這些年都能夠看到設計複雜性的不斷增長,而讓我們有能力去完成設計驗證的也正是一群緊密合作的設計師和驗證師。針對日漸複雜的設計,我們會通過不同的方

驗證的管理篇驗證的收斂

伴隨著隨機驗證的方式,遞迴(regression)驗證的方式變得更加有意義。一般來講,我們基於兩種目的來提交遞迴測試表: 由於隨機驗證環境每次模擬產生的激勵序列不同,這就使得每次模擬均會對覆蓋率產生貢獻,變得有意義。 當設計缺陷被發現以後,遞迴測試序列需要再次提交,用

【資料結構與演算法】內部排序歸併排序快速排序(含完整原始碼)

前言      之所以把歸併排序和快速排序放在一起探討,很明顯兩者有一些相似之處:這兩種排序演算法都採用了分治的思想。下面來逐個分析其實現思想。歸併排序實現思想       歸併的含義很明顯就是將兩個或者兩個以上的有序表組合成一個新的有序表。歸併排序中一般所用到的是2-路歸併

初學Python使用listtuple

list是Python 的內建資料型別,list是一種有序的集合,可以隨時新增和刪除其中的元素。 這裡主要分三部分介紹Python中的list和tuple: 1.Python中list的主要用法。 2.Python中tuple的主要用法

IPtablesNAT原理配置

NAT一般情況下分為SNAT,DNAT和PNAT 此篇主要講述的是使用iptables配置NAT,所以這3種NAT的區別和應用場景就簡單的說明一下 SNAT:源地址轉換 目標地址不變,重新改寫源地址,並在本機建立NAT表項,當資料返回時,根據NAT表將目的地址資料

晶片驗證之一功能驗證介紹

如果你在設計一款計算器,除了加減乘除的基本功能以外,在科學計算層面上,你需要注意到三角函式、取模、階乘、冪運算、開根號等等複雜運算。 如果你在設計一款處理器,你需要考慮將其拆分成為運算器(算術邏輯運算單元,ALU,Arithmetic Logic Unit)和高速緩衝儲

實驗一任務驗證碼問題

連接 num 轉換 ssa 次循環 random 空字符串 輸出 字符串 package shiyansi; import javax.swing.JOptionPane;public class RandomStr { public static void main(S

Nginx Nginx服務器的rewrite、局變量、重定向防盜鏈相關功能

war int 服務器驗證 %u 寫日誌 防盜鏈 循環 版本 算法 一:Nginx 後端服務器組的配置: 1、upstream: 用於設置後端服務器組的主要指令,upstream類似於之前的server塊或http塊,用法如下: upstreame Myserve

Sql語法高級應用使用圖實現多表聯合數據明細

sele inner receiver rod erp upn pen logistic received 之前章節我們講到:如果某個表的數據是多個表的聯合,並且存在列與列的合並組成新列,用視圖是最好的方案。 下面我分享兩個個真實的SQL語句案例 USE Wot_In

【只怕沒有幾個人能說清楚】系列碰撞信息、觸發信息的檢測

col lis 至少 one ati spa nbsp 觸發 trigge 碰撞器分為三種: static collider              靜態碰撞器 rigidbody collider            剛體碰撞器 kinematic rigidbody

《C#圖解教程》讀書筆記繼承

intern html pan 類中訪問 ted obj 小寫 his new 本篇已收錄至《C#圖解教程》讀書筆記目錄貼,點擊訪問該目錄可獲取更多內容。 一、萬物之宗:Object   (1)除了特殊的Object類,其他所有類都是派生類,即使他們沒有顯示基類定義。   

轉深入Java虛擬機 類加載機制

method jre 聲明 常量 資源 inittest java開發 啟動 由於 轉載請註明出處:http://blog.csdn.net/ns_code/article/details/17881581 類加載過程 類從被加載到虛擬機內存中開始,到卸載出內存

Linux時間子系統定時器的引擎clock_event_device

到來 開始 register 工作模式 統一 10個 net 說過 序列 早期的內核版本中,進程的調度基於一個稱之為tick的時鐘滴答,通常使用時鐘中斷來定時地產生tick信號,每次tick定時中斷都會進行進程的統計和調度,並對tick進行計數,記錄在一個jiffies變量

MongoDB初探系列MongoDB與Java共舞

ever 文件 basic query find man mongodb next() 入學 因為版本號不同,可能API也有所不同。本次學習用的是3.0版本號。 1、使用的mongodb的jdbc驅動版本號為:mongo-java-driver-3.0.0.jar

面向對象設計原則依賴倒置原則

ron 通過 發生 需要 系統 面向對象設計 啟動 模塊 == 依賴倒置原則 所謂依賴倒置原則(Dependence Inversion Principle )就是要依賴於抽象,不要依賴於具體。簡單的說就是對抽象進行編程,不要對實現進行編程,這樣就降低了客戶與實

機器學習入門機器學習的方法-神經網絡(轉載)

轉載 bsp 圖像 src nbsp 加速 數值 str 我們   轉自 飛鳥各投林   神經網絡      神經網絡(也稱之為人工神經網絡,ANN)算法是80年代機器學習界非常流行的算法,不過在90年代中途衰落。現在,攜著“深度學習”之勢,神

Django運維後臺的搭建用bootstrap模板讓運維前臺變得更漂亮

html django bootstrap 靜態資源 我對於PHP和ajax是屬於二把刀的水平,所以做網頁前端肯定是比上天還難,但是我又想把網頁做的漂亮可愛,怎麽辦呢?我就只好去download別人的模板,在這裏我使用了bootstrap框架做的模板。各位可以去https://wrapboot

Modbus庫開發筆記Modbus TCP Client開發

creat 需要 修改 status command 協議格式 sin 服務器端 這一 這一次我們封裝Modbus TCP Client應用。同樣的我們也不是做具體的應用,而是實現TCP客戶端的基本功能。我們將TCP客戶端的功能封裝為函數,以便在開發具體應用時調用。 對於T