芯片驗(yàn)證是一項(xiàng)技術(shù)任務(wù),但也涉及一些重要的經(jīng)濟(jì)學(xué)和心理學(xué)因素。
在理想的世界里,我們希望驗(yàn)證芯片的每一種可能的排列組合。但在大多數(shù)情況下,這根本不可能。即使是一個(gè)看似簡(jiǎn)單的模塊,也可能有成百上千種可能的輸入和輸出組合,為所有這些可能性創(chuàng)建驗(yàn)證用例是不切實(shí)際的。
對(duì)一個(gè)復(fù)雜的模塊進(jìn)行全面驗(yàn)證需要花費(fèi)太長(zhǎng)的時(shí)間和太多的人力資源,在經(jīng)濟(jì)上是不可行的。
此外,軟件驗(yàn)證員需要有正確的態(tài)度,才能成功地驗(yàn)證芯片模塊。在某些情況下,驗(yàn)證人員的態(tài)度可能比實(shí)際驗(yàn)證過(guò)程本身更重要。
驗(yàn)證心理學(xué)
造成芯片遺漏bug的主要原因之一,是大多數(shù)芯片驗(yàn)證工程師一開(kāi)始就對(duì)這個(gè)術(shù)語(yǔ)(芯片驗(yàn)證)下了錯(cuò)誤的定義。他們可能會(huì)說(shuō):
''芯片驗(yàn)證是證明不存在bug的過(guò)程。''
''驗(yàn)證的目的是證明芯片能執(zhí)行其預(yù)期的功能。"
''驗(yàn)證是建立信心的過(guò)程,讓人相信芯片能做它應(yīng)該做的事情。"
這些定義都是不對(duì)的。
當(dāng)你驗(yàn)證一個(gè)芯片時(shí),你希望給它增加一些價(jià)值。通過(guò)驗(yàn)證增加價(jià)值意味著提高芯片的質(zhì)量或可靠性。提高芯片的可靠性意味著發(fā)現(xiàn)并消除bug。
因此,不要為了證明芯片沒(méi)有bug而對(duì)其進(jìn)行驗(yàn)證;相反,首先假設(shè)芯片包含錯(cuò)誤(這幾乎對(duì)任何芯片都是一個(gè)有效的假設(shè)),然后驗(yàn)證芯片,找出盡可能多的bug。
因此,更恰當(dāng)?shù)亩x是這樣的:
驗(yàn)證是以發(fā)現(xiàn)bug為目的的過(guò)程。
雖然這聽(tīng)起來(lái)像是一個(gè)微妙的語(yǔ)義游戲,但這確實(shí)有著一個(gè)重要的區(qū)別。了解芯片驗(yàn)證的真正定義會(huì)對(duì)你的工作成功與否產(chǎn)生深遠(yuǎn)的影響。
人類傾向于以目標(biāo)為導(dǎo)向,確立適當(dāng)?shù)哪繕?biāo)會(huì)產(chǎn)生重要的心理影響。
如果我們的目標(biāo)是證明芯片沒(méi)有錯(cuò)誤,那么我們就會(huì)下意識(shí)地朝著這個(gè)目標(biāo)前進(jìn);也就是說(shuō),我們傾向于選擇導(dǎo)致芯片失敗概率較低的驗(yàn)證數(shù)據(jù)。另一方面,如果我們的目標(biāo)是證明芯片有bug,那么我們的驗(yàn)證數(shù)據(jù)發(fā)現(xiàn)bug的概率會(huì)更高。與前者相比,后者能為芯片本身帶來(lái)更多價(jià)值。
“驗(yàn)證是以發(fā)現(xiàn)bug為目的的過(guò)程。”這一定義暗示驗(yàn)證是一個(gè)破壞性的,甚至是虐待狂的過(guò)程,這就解釋了為什么大多數(shù)人覺(jué)得驗(yàn)證是困難的。這可能與我們的本性相悖;
我們大多數(shù)人的人生觀都是建設(shè)性的,而不是破壞性的。大多數(shù)人傾向于制造物品,而不是將其撕碎。所以很多應(yīng)屆生更樂(lè)于從事設(shè)計(jì)開(kāi)發(fā),而不是驗(yàn)證驗(yàn)證。哈哈~
加強(qiáng)驗(yàn)證正確定義的另一種方法是分析 "成功 "和 "不成功 "這兩個(gè)詞的使用--特別是項(xiàng)目經(jīng)理在對(duì)驗(yàn)證用例的結(jié)果進(jìn)行分類時(shí)的使用。大多數(shù)項(xiàng)目經(jīng)理把沒(méi)有發(fā)現(xiàn)bug的驗(yàn)證用例稱為 "成功運(yùn)行驗(yàn)證",而發(fā)現(xiàn)新錯(cuò)誤的驗(yàn)證通常稱為 "不成功"。
這又是顛倒了。不成功 "指的是不理想或令人失望"。在我們的思維方式中,一個(gè)結(jié)構(gòu)合理、已執(zhí)行的軟件驗(yàn)證在發(fā)現(xiàn)bug時(shí)就是成功的。
當(dāng)然,同樣的驗(yàn)證, 如果最終確定不再發(fā)現(xiàn)bug,也是成功的。
唯一不成功的驗(yàn)證是沒(méi)有正確檢查芯片功能的驗(yàn)證;在大多數(shù)情況下,沒(méi)有發(fā)現(xiàn)任何bug的驗(yàn)證用例很可能被認(rèn)為是不成功的。
發(fā)現(xiàn)新bug的驗(yàn)證用例很難被認(rèn)為是不成功的,相反,它已被證明是一項(xiàng)有價(jià)值的投資。不成功的驗(yàn)證用例是指芯片產(chǎn)生了錯(cuò)誤的結(jié)果 ,但驗(yàn)證用例卻沒(méi)有發(fā)現(xiàn)。
打個(gè)比方,一個(gè)人因?yàn)樯眢w不舒服而去看醫(yī)生。如果醫(yī)生做了一些化驗(yàn),但沒(méi)有找到問(wèn)題所在,我們就不稱這些化驗(yàn)為 "成功的化驗(yàn)";這些化驗(yàn)是不成功的化驗(yàn),因?yàn)椴∪说膬糍Y產(chǎn)因昂貴的化驗(yàn)費(fèi)而減少,病人仍然生病,而且病人可能會(huì)質(zhì)疑醫(yī)生的診斷能力 。
然而,如果化驗(yàn)確定病人患有消化性潰瘍,那么化驗(yàn)就是成功的 ,因?yàn)獒t(yī)生現(xiàn)在可以開(kāi)始適當(dāng)?shù)闹委熈?。因此,醫(yī)學(xué)界似乎在正確的意義上使用這些詞語(yǔ)。
當(dāng)我們開(kāi)始驗(yàn)證程序時(shí) ,我們應(yīng)該把它看作是生病的病人。
"驗(yàn)證是證明bug不存在的過(guò)程 "等定義的第二個(gè)問(wèn)題是幾乎所有芯片,甚至是微不足道的芯片,都不可能實(shí)現(xiàn)這樣的目標(biāo)。
同樣,心理學(xué)研究告訴我們,當(dāng)人們著手完成一項(xiàng)明知不可行或不可能完成的任務(wù)時(shí),他們的表現(xiàn)就會(huì)很差。例如,如果有人要求你在 15 分鐘內(nèi)解決填字游戲,你可能在10分鐘后就不會(huì)有什么進(jìn)展,因?yàn)槿绻愫痛蠖鄶?shù)人一樣,你會(huì)認(rèn)為這項(xiàng)任務(wù)似乎是不可能完成的。然而,如果要求你在四小時(shí)內(nèi)給出解決方案,我們有理由期待在最初的十分鐘內(nèi)看到更多的進(jìn)展。
將芯片驗(yàn)證定義為發(fā)現(xiàn)芯片中bug的過(guò)程,使其成為一項(xiàng)可行的任務(wù),從而克服了這一心理問(wèn)題。
"驗(yàn)證是證明bug不存在的過(guò)程"等定義的第三個(gè)問(wèn)題是,做了應(yīng)該做的事情的芯片仍然可能包含錯(cuò)誤。也就是說(shuō),如果芯片沒(méi)有做它應(yīng)該做的事情,那么bug顯然是存在的;但如果芯片做了它不應(yīng)該做的事情,那么bug也是存在的。
總之,芯片驗(yàn)證被視為試圖找出芯片中bug的破壞性過(guò)程更為恰當(dāng)。當(dāng)然,你最終還是希望通過(guò)芯片驗(yàn)證來(lái)建立某種程度的信心,即芯片做了它應(yīng)該做的事,而沒(méi)有做它不應(yīng)該做的事。
假設(shè)有人向你聲稱"'我的芯片是完美的'"(即沒(méi)有bug)。要對(duì)這種說(shuō)法建立一定的信心,最好的辦法就是嘗試反駁它,也就是說(shuō),嘗試找出不完美的地方,而不僅僅是確認(rèn)芯片對(duì)某組輸入數(shù)據(jù)的運(yùn)行是正確的。
-
芯片
+關(guān)注
關(guān)注
455文章
50816瀏覽量
423615 -
模塊
+關(guān)注
關(guān)注
7文章
2707瀏覽量
47474 -
BUG
+關(guān)注
關(guān)注
0文章
155瀏覽量
15669
原文標(biāo)題:芯片驗(yàn)證心理學(xué)
文章出處:【微信號(hào):數(shù)字芯片實(shí)驗(yàn)室,微信公眾號(hào):數(shù)字芯片實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論