第一章:驗(yàn)證導(dǎo)論

作為一名驗(yàn)證工程師,你應(yīng)該盡可能細(xì)致深入地去檢驗(yàn)設(shè)計(jì),并提取出所有可能的漏洞夸浅。在流片之前每發(fā)現(xiàn)一個(gè)漏洞就意味著最終到顧客手里就會少一個(gè)漏洞冤荆。接下來我將更新一個(gè)系列的文章來講述SystemVerilog這門驗(yàn)證語言踊沸,希望能夠?qū)W有所長歇终。本章內(nèi)容就做一個(gè)大體的介紹,有很多東西也許解析不到位逼龟,希望以后能修改補(bǔ)充评凝。

在熟悉Verilog語言的基礎(chǔ)上,我希望能夠?qū)W習(xí)System Verilog硬件驗(yàn)證語言(Hardware Verification Language腺律,HVL)奕短。相比于硬件描述語言(HDL),HVL具有以下典型的性質(zhì):

  • 受約束的隨機(jī)激勵(lì)生成匀钧。
  • 功能覆蓋率翎碑。
  • 更高層次的結(jié)構(gòu),尤其是面向?qū)ο蟮木幊獭?/li>
  • 多線程及線程之間的通信之斯。
  • 支持HDL數(shù)據(jù)類型日杈。
  • 集成了事件仿真器,便于對設(shè)計(jì)施加控制佑刷。
    除此之外达椰,還有很多特性,這些特質(zhì)保證了我們能夠運(yùn)用HVL來創(chuàng)建高度抽象的測試平臺项乒。

1.1 驗(yàn)證流程

什么是驗(yàn)證呢?作為一名驗(yàn)證工程師梁沧,你的目的就是確保該設(shè)備能夠成功地完成預(yù)定的任務(wù)檀何,換句話說,該設(shè)計(jì)是對規(guī)范的一種準(zhǔn)確表達(dá)廷支。
驗(yàn)證的流程并行于設(shè)計(jì)流程频鉴。一名驗(yàn)證工程師,你必須閱讀硬件規(guī)范并擬定驗(yàn)證計(jì)劃恋拍,創(chuàng)建測試來檢查RTL代碼是否準(zhǔn)確地實(shí)現(xiàn)了所有的特性垛孔。

1.1.1 不同層次上的測試

設(shè)計(jì)上的漏洞會在不同層次上產(chǎn)生漏洞,下面從底層開始對設(shè)計(jì)中的漏洞進(jìn)行下面幾種分類施敢。

  • 代碼塊層次周荐,在module創(chuàng)建的代碼塊。
  • 代碼塊的邊界僵娃,不同的設(shè)計(jì)者會對同一個(gè)規(guī)范有不同的理解概作,這樣會造成硬件邏輯上的爭議。
  • 為了仿真一個(gè)代碼塊默怨,你需要?jiǎng)?chuàng)建測試集來模擬周圍代碼塊產(chǎn)生激勵(lì)讯榕,這樣低層次的仿真運(yùn)行起來會很快,但是產(chǎn)生激勵(lì)的方式會很繁瑣。將多個(gè)代碼塊集成到一起愚屁,在待測設(shè)計(jì)的最高層次上济竹,整個(gè)系統(tǒng)都會被測試,代碼塊之間相互激勵(lì)霎槐,運(yùn)行起來速度會更慢一些送浊,但是仿真過程就會簡單很多。你的測試應(yīng)該盡可能讓所有的代碼塊并發(fā)活動栽燕。所有的輸入輸出端口都被激活罕袋,處理器正在處理數(shù)據(jù),而高速緩存也在載入數(shù)據(jù)碍岔。這樣的話浴讯,數(shù)據(jù)分配和時(shí)序上的漏洞肯定會出現(xiàn)。
  • 錯(cuò)誤注入和處理蔼啦,一旦驗(yàn)證了待測設(shè)計(jì)能夠執(zhí)行所有預(yù)期的功能以后榆纽,你還需要看一下當(dāng)出現(xiàn)錯(cuò)誤時(shí),待測設(shè)計(jì)會怎樣操作捏肢。
    我們永遠(yuǎn)也無法證明沒有任何漏洞留下奈籽,所以需要不停地嘗試新的驗(yàn)證策略。
1.1.2 驗(yàn)證計(jì)劃

驗(yàn)證計(jì)劃主要包括以下幾種方法:定向測試鸵赫、隨機(jī)測試衣屏、斷言、軟硬件協(xié)同驗(yàn)證辩棒、硬件仿真狼忱、形式驗(yàn)證,以及對驗(yàn)證IP的使用等等一睁。

1.2 基本測試平臺的功能

測試平臺的用途在于確定待測設(shè)計(jì)的正確性钻弄。包含下列步驟:
(1) 產(chǎn)生激勵(lì)。
(2) 把激勵(lì)施加到DUT上者吁。
(3) 捕捉響應(yīng)窘俺。
(4) 檢驗(yàn)正確性。
(5) 對照整個(gè)驗(yàn)證目標(biāo)測算進(jìn)展情況复凳。

1.3 定向測試

所謂定向測試就是針對待測設(shè)計(jì)制訂具體的激勵(lì)向量瘤泪,然后使用這些向量對待測設(shè)計(jì)進(jìn)行仿真。仿真結(jié)束后育八,手工查看一下結(jié)果文件和波形確保設(shè)計(jì)的行為和預(yù)期一致均芽。如果測試結(jié)果正確,你就可以繼續(xù)下一個(gè)測試单鹿。如果給予你足夠的時(shí)間和人力掀宋,定向測試可以完成驗(yàn)證計(jì)劃百分之百覆蓋率所需要的全部測試。

1.4 方法學(xué)基礎(chǔ)

方法學(xué)的原則如下:
(1)受約束的隨機(jī)激勵(lì)。
定向測試可以找出設(shè)計(jì)中預(yù)期的漏洞劲妙,隨機(jī)激勵(lì)能夠找出預(yù)料不到的漏洞湃鹊。在復(fù)雜的設(shè)計(jì)中,隨機(jī)激勵(lì)十分關(guān)鍵镣奋。
(2)功能覆蓋率币呵。
當(dāng)使用隨機(jī)激勵(lì)時(shí),需要用功能覆蓋率來評估驗(yàn)證的進(jìn)展情況侨颈。使用自動生成的激勵(lì)余赢,就需要一種能夠自動預(yù)測結(jié)果的方式---通常是記分板或參考模型。建立包括自預(yù)測在內(nèi)的測試平臺基礎(chǔ)設(shè)施是一件工作量很大的事情哈垢。
(3)使用事務(wù)處理器的分層測試平臺妻柒。
分層的測試平臺能夠把問題分解為容易處理的小塊,這樣有助于控制復(fù)雜度耘分。
(4)對所有測試通用的測試平臺举塔。
建立一個(gè)測試平臺所需要的基礎(chǔ)設(shè)施,它們能在所有測試中通用并且不需要經(jīng)常性修改求泰。你只需要在某些地方放置“鉤子”央渣,以便測試能夠在這些地方執(zhí)行調(diào)整激勵(lì)或注入錯(cuò)誤這樣特定的操作。
(5)獨(dú)立于測試平臺之外的個(gè)性化測試代碼渴频。
針對單一測試的個(gè)性化代碼必須與測試平臺分開芽丹,這樣可以避免增加基礎(chǔ)設(shè)施的復(fù)雜度。
總之卜朗,建立這種風(fēng)格的測試平臺所需的時(shí)間要比傳統(tǒng)的定向測試平臺多得多---尤其是自檢部分志衍。結(jié)果是可能需要很長的準(zhǔn)備時(shí)間才能進(jìn)行第一次可運(yùn)行的測試。每個(gè)隨機(jī)測試都可以公用測試平臺聊替。受約束的隨機(jī)測試平臺找起來漏洞會比很多定向測試快很多。
隨著漏洞出現(xiàn)率的下降培廓,你應(yīng)該創(chuàng)建新的隨機(jī)約束去探索新的區(qū)域惹悄。最后的幾個(gè)漏洞可能只能通過定向測試來發(fā)現(xiàn),但是絕大部分的漏洞都應(yīng)該會在隨機(jī)測試中出現(xiàn)肩钠。

1.5 受約束的隨機(jī)激勵(lì)

我們希望仿真器能夠產(chǎn)生隨機(jī)激勵(lì)泣港,但同時(shí)又不希望激勵(lì)時(shí)完全隨機(jī)的。SystemVerilog語言可以描述激勵(lì)的格式价匠,然后讓仿真器產(chǎn)生滿足約束的數(shù)值当纱。這些數(shù)值會被發(fā)送到設(shè)計(jì)中去,同時(shí)也會被發(fā)送到一個(gè)負(fù)責(zé)預(yù)測仿真結(jié)果的高層模塊中去踩窖。設(shè)計(jì)的實(shí)際輸出最終需要和預(yù)測輸出做對比坡氯。下圖為達(dá)到完全覆蓋的技術(shù)路線。


覆蓋率收斂.png

其中,最少的代碼修改一般包括:使用新的約束和把錯(cuò)誤或延時(shí)加入到待測設(shè)計(jì)中箫柳。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末手形,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子悯恍,更是在濱河造成了極大的恐慌库糠,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涮毫,死亡現(xiàn)場離奇詭異瞬欧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)罢防,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進(jìn)店門艘虎,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人篙梢,你說我怎么就攤上這事顷帖。” “怎么了渤滞?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵贬墩,是天一觀的道長。 經(jīng)常有香客問我妄呕,道長陶舞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任绪励,我火速辦了婚禮肿孵,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘疏魏。我一直安慰自己停做,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布大莫。 她就那樣靜靜地躺著蛉腌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪只厘。 梳的紋絲不亂的頭發(fā)上烙丛,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機(jī)與錄音羔味,去河邊找鬼河咽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赋元,可吹牛的內(nèi)容都是我干的忘蟹。 我是一名探鬼主播飒房,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼寒瓦!你這毒婦竟也來了情屹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤杂腰,失蹤者是張志新(化名)和其女友劉穎垃你,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喂很,經(jīng)...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惜颇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了少辣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凌摄。...
    茶點(diǎn)故事閱讀 38,163評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖漓帅,靈堂內(nèi)的尸體忽然破棺而出锨亏,到底是詐尸還是另有隱情,我是刑警寧澤忙干,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布器予,位于F島的核電站,受9級特大地震影響捐迫,放射性物質(zhì)發(fā)生泄漏乾翔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一施戴、第九天 我趴在偏房一處隱蔽的房頂上張望反浓。 院中可真熱鬧,春花似錦赞哗、人聲如沸雷则。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽月劈。三九已至,卻和暖如春涂乌,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背英岭。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工湾盒, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诅妹。 一個(gè)月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓罚勾,卻偏偏與公主長得像毅人,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子尖殃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評論 2 344

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,527評論 25 707
  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,188評論 2 126
  • 不要因?yàn)閯e人未來的生活可能會光鮮亮麗就否定自己通過努力獲得的一切丈莺。
    Dove不是德芙閱讀 160評論 2 2
  • 不知不覺間缔俄,新年又到了眼前,長大之后會發(fā)現(xiàn)器躏,時(shí)間都去哪兒了俐载,一年和一年的間隔越來越小,小時(shí)候盼望著新年登失,春節(jié)是一個(gè)...
    奶酪沒有醬閱讀 346評論 0 1
  • 最近關(guān)于林丹出軌以及和謝杏芳的感情狀態(tài)充斥著各大媒體頭條遏佣,炒作得沸沸揚(yáng)揚(yáng),連倍受關(guān)注的微信公眾號們也以此為...
    陌上花開001閱讀 182評論 0 0