SystemVerilog驗證方法學介紹_第1頁
SystemVerilog驗證方法學介紹_第2頁
SystemVerilog驗證方法學介紹_第3頁
SystemVerilog驗證方法學介紹_第4頁
SystemVerilog驗證方法學介紹_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、前言:芯片驗證中雖然傳統(tǒng)驗證方法盡力保持技術(shù)更新步伐以適應(yīng)設(shè)計尺寸以及復(fù)雜度的 增加,但驗證依然是當前 SoC 以及可重用 IP 模塊設(shè)計中面臨的最大挑戰(zhàn)。1 SystemVerilog驗證方法學介紹芯片驗證中雖然傳統(tǒng)驗證方法盡力保持技術(shù)更新步伐以適應(yīng)設(shè)計尺寸以及復(fù)雜度的增 加, 但驗證依然是當前 SoC 以及可重用 IP 模塊設(shè)計中面臨的最大挑戰(zhàn)。 解決這個問題的方 法是采用有豐富語義支持的標準語言,以及可重用,覆蓋率為驅(qū)動的驗證方法學。這是文章中的第一部分:介紹由 SystemVerilog 硬件設(shè)計驗證標準語言支持的驗證方 法學。此方法學在 VMM for SystemVerilog 一

2、書中有全面介紹。 VMM for SystemVerilog 致力于如何建立一個可升級,可預(yù)期,可重用的驗證環(huán) 境,使得用戶能充分利用斷言性,重用性,驗證平臺自動生成,覆蓋率,形式分析以及其他 先進驗證技術(shù)特點,從而幫助解決 RTL 以及系統(tǒng)級中驗證技術(shù)問題。如此一個環(huán)境能在芯 片邁出成功第一步時增加用戶驗證信心。 VMM for SystemVerilog目的是針對所有 SoC , IP 項目建立一個高效,可控驗證過程。 VMM for SystemVerilog來源于業(yè)界領(lǐng) 先的 ARM 公司, Synopsys 公司(新思科技及其客戶經(jīng)驗。1.1 驗證面臨挑戰(zhàn)隨著 SoC , IP 驗證

3、復(fù)雜度持續(xù)增加,有相應(yīng)的新驗證技術(shù)產(chǎn)生,但設(shè)計能力與驗證所 能提供信心之間鴻溝仍然巨大。多次調(diào)查顯示有一半到三分之二的 SoC 項目在第一次流片 失敗,而功能缺陷的存在是其中主要原因。這些統(tǒng)計顯示了要驗證當今設(shè)計所具有的固有難度。復(fù)雜模塊,尤其在集成到一起后, 很難在驗證中將芯片實際運用可能遇到的所有條件模擬執(zhí)行。預(yù)期到所有可能邊界條件 (corner cases,以及發(fā)現(xiàn)設(shè)計中深層次設(shè)計缺陷是驗證面臨的關(guān)鍵挑戰(zhàn)之一。非常緊 迫的是在規(guī)定項目資源以及 time-to-market 需求情況下,項目過程中花費最小代價盡可 能早發(fā)現(xiàn)設(shè)計缺陷。1.2 SystemVerilog驗證技術(shù)對用戶來說有多

4、種方法編寫驗證平臺,搭建驗證環(huán)境。通常方法包括全手工編寫代碼 進行獨立直接驗證,或生成帶約束隨機仿真激勵,能自動產(chǎn)生新測試用例先進的驗證平臺。 最有效技術(shù)包括利用功能覆蓋率統(tǒng)計更進一步加強自動驗證效率。 一些驗證技術(shù)還包括應(yīng)用 斷言檢查設(shè)計意圖,診斷設(shè)計缺陷。 VMM for SystemVerilog 覆蓋了多種驗證技術(shù),并詳細介紹如何將他們有機結(jié) 合在一起。多種先進驗證技術(shù)的有效融合能徹底改進驗證,增加驗證產(chǎn)量,加速開發(fā)進程, 盡早結(jié)束項目。相對于傳統(tǒng)方法消耗更少資源。 VMM for SystemVerilog既能提升現(xiàn)有驗證方法, 也能充分利用驗證過程自動化, 功能覆蓋, 斷言這些特點

5、建立一個全面通用驗 證環(huán)境。1.3 產(chǎn)生帶約束隨機仿真?zhèn)鹘y(tǒng)驗證依賴于直接測試 (directed tests , 此時測試平臺包含產(chǎn)生特定情節(jié)的代碼, 對設(shè)計提供激勵, 仿真結(jié)束時檢查 (手工或自測方式 結(jié)果。 直接測試平臺也可以采用有限 的隨機方式。 通常是產(chǎn)生隨機數(shù), 而不是在每個數(shù)據(jù)單元簡單寫入預(yù)先設(shè)定值。 直接測試方 法適合于小設(shè)計,但一個典型 SoC 設(shè)計需要上千個測試用例。樂觀估計用三天時間產(chǎn)生并 調(diào)試一個測試, 一個有十驗證工程師的團隊 (也是一個樂觀估計 將花費超過一年完成所有 測試。因此提升驗證產(chǎn)量的唯一方法是減少產(chǎn)生測試所消耗時間。SystemVerilog 具有豐富語言能

6、力, 能描述復(fù)雜驗證環(huán)境, 包括帶約束隨機激勵產(chǎn)生, 面向?qū)ο缶幊?功能覆蓋統(tǒng)計。這些特點使用戶開發(fā)出能自動產(chǎn)生大量驗證情節(jié)的測試平 臺。 VMM for SystemVerilog展示了如何用 SystemVerilog 語言功能構(gòu)建一個自動 化驗證平臺。 建立一個驗證環(huán)境時, 采用正確策略, 充分利用自動化特點, 產(chǎn)生一個新測試 所消耗時間將顯著減少。 應(yīng)用帶約束隨機激勵產(chǎn)生方法, 在可控制規(guī)則, 或用戶自定義約束 下以自動方式產(chǎn)生測試情節(jié)。 驗證中很重要一點在于測試平臺質(zhì)量, 這樣附加的測試可在對 一系列基本測試用例基礎(chǔ)上進行簡單調(diào)整測試參數(shù)或加入定義好的約束而產(chǎn)生。 通過這種方 法獲得

7、好處在圖 1中說明。 Figure 1 自動測試相對于直接測試有更高效率用直接測試方法,產(chǎn)生一個新測試所需要時間相對固定,因此功能驗證質(zhì)量提高與時 間基本成線型關(guān)系。 而一個帶約束隨機驗證環(huán)境, 在第一次能正常測試之前有一個前期投入 消耗。 此投入用于建立驗證環(huán)境中參數(shù)化配置能力, 以及約束測試中相關(guān)部分, 使得之后測 試更容易基于約束驅(qū)動。測試情節(jié)類型中建立隨機化,不僅僅是產(chǎn)生新數(shù)據(jù)值,更增加了測試擊中邊界條件 (corner case可能性,從而發(fā)現(xiàn)更多設(shè)計缺陷。下一部分還將討論,這樣的測試用例也 能擊中更多覆蓋點,加速驗證收斂。SystemVerilog 提供了帶約束隨機激勵測試所需要的

8、所有驗證語言結(jié)構(gòu)。 VMM for SystemVerilog 提供了如何建立一個帶約束隨機環(huán)境,如何運用面向?qū)ο缶幊碳夹g(shù)編寫 可重用驗證單元,如何在整個項目驗證,或跨項目之間重用驗證單元的整套方法。1.4 覆蓋率驅(qū)動驗證貫穿驗證過程中的覆蓋率測量數(shù)據(jù)有兩方面重要作用。一方面能明確指出設(shè)計中還沒 有被充分驗證到的部分,確定驗證過程中空洞。通過回答下一步如何去做這樣的關(guān)鍵問題, 有助于指引驗證需要努力的方向。 比如, 需要補充編寫哪些直接測試用例, 如何改變參數(shù)用 于帶約束的隨機測試。另一方面,覆蓋率測量是驗證已經(jīng)足夠充分,可進行流片的指示器。覆蓋率不僅僅簡 單提供是或否這樣結(jié)果。 覆蓋率增量提

9、升, 用于評估驗證進度, 增加開發(fā)團隊進行流片時間 點的信心。 事實上, 覆蓋率是一個非常苛刻指標, 因此大部分先進, 自動化方法都采用基于 覆蓋率驅(qū)動的驗證,覆蓋率指標的指導(dǎo)作用貫穿整個過程中每一步。覆蓋分為兩大類:代碼覆蓋和功能覆蓋。代碼覆蓋包括多種形式(行覆蓋,翻轉(zhuǎn)覆蓋, 表達覆蓋等,是一個典型自動化過程。能告訴在一個特定仿真運行中,所有 RTL 設(shè)計描 述代碼是否被執(zhí)行。 一個具有可信度驗證方法中, 代碼覆蓋是必需的, 但不是充分條件。 相 對應(yīng)的, 功能覆蓋提供一個外在度量方法, 確定設(shè)計所需要功能有多少被真正正確實現(xiàn)。 通 過運用交叉覆蓋(cross-coverage 技術(shù)測試覆蓋

10、組合情況,能更進一步提高驗證信心。 項目中,重要功能覆蓋以及交叉覆蓋點應(yīng)盡早明確,并包括在驗證計劃中。填補覆蓋測量中確定的空洞是覆蓋率驅(qū)動驗證過程中核心部分。通過定義,當 100%覆蓋率達到時,能對芯片最終 tape out提供足夠信心。 SystemVerilog 通過覆蓋特性 (property 用于低層次覆蓋點,覆蓋組(group 用于跟蹤高層次覆蓋,并支持交叉覆 蓋。 VMM for SystemVerilog 討論在驗證過程中不同階段運用不同方法提高覆蓋。圖 2帶約束的隨機驗證過程圖表,說明了更多細節(jié)。 Figure 2 自動及人工驗證技術(shù)運用在驗證不同階段此過程第一部分是建立測試平

11、臺環(huán)境。通常在驗證環(huán)境建立前不會進行芯片級或系統(tǒng) 級測試。然而在此期間,如果設(shè)計者編寫 RTL 代碼,他們可以并行進行模塊級直接測試或 形式分析。 一旦驗證環(huán)境準備就緒, 開發(fā)團隊可以開始運行帶約束的隨機測試, 產(chǎn)生第一次 覆蓋結(jié)果, 這個階段測試用例對設(shè)計覆蓋范圍明顯很寬。 隨著未覆蓋到點減少, 需要有更多 分析來填補空洞。驗證工程師注意力轉(zhuǎn)向特殊 corner-case 覆蓋點,小心改變約束條件及 參數(shù),產(chǎn)生新測試用例來擊中這些點。直接測試在覆蓋率驅(qū)動驗證環(huán)境中也具有重要角色。雖然帶約束隨機測試是主要方法, 對于填補一個特定覆蓋點來說編寫一個直接測試用例比用帶約束的隨機技術(shù)自動生成一個 測

12、試更容易。測試目標是通過多種方法使定義的覆蓋率達到 100%。設(shè)計驗證過程中, SystemVerilog 作為統(tǒng)一設(shè)計及驗證語言, 提供所有覆蓋信息支持。 VMM for SystemVerilog 扮演所有覆蓋形式執(zhí)行角色, 同時說明這些測量如何被用 于驗證過程中以度量驗證完備性,并指明下階段驗證方向。1.5 斷言驗證環(huán)境中可增加斷言來加強驗證環(huán)境能力。斷言描述了設(shè)計意圖。理想情況下,當 設(shè)計者編寫 RTL 時,用斷言來證明設(shè)計行為如何達到需求,研發(fā)人員用斷言描述設(shè)計行為 及相鄰連接模塊接口需求。 斷言能用于對設(shè)計單元低層次描述, 規(guī)范其應(yīng)該具有的行為, 也 能用于貫穿整個設(shè)計中端到端所規(guī)

13、范的信息。斷言可通過多種方法指定,包括用普通 RTL 表達式,在硬件驗證語言中專門的陳述。 SystemVerilog 中內(nèi)置有斷言結(jié)構(gòu),可以在驗證環(huán)境或 RTL 設(shè)計本身中聲明。SystemVerilog 斷言通過三個重要方面加強驗證:" 提供最初設(shè)計者功能意圖文檔。 如果設(shè)計被另一個設(shè)計者重用, 這將非常有用, 可置 于一個設(shè)計庫中供以后使用,或作為商業(yè) IP 產(chǎn)品。" 直接測試或隨機測試中,仿真器支持 SystemVerilog 斷言結(jié)構(gòu),仿真中運行斷言。 仿真中斷言增加了內(nèi)部行為可觀測性,提高調(diào)試效率。" 形式分析工具能讀 SystemVerilog 斷言

14、, 通過數(shù)學方法證明每個斷言從不告警, 或 者發(fā)現(xiàn)一個反例說明斷言如何會失敗。 這將使仿真中斷言很容易轉(zhuǎn)換到更廣泛驗證, 通過形 式分析增加 tape out的信心。通過圖 3說明,斷言對驗證過程中很多部分都有影響。斷言除了在仿真中運行或用于 形式驗證,一些形式斷言能夠被映射到硬件中,在仿真加速器, emulators ,基于 FPGA 原型,或者最終 SoC 中運行。斷言也能提供覆蓋率測量,并能與其他形式覆蓋率相結(jié)合。 Figure 3 斷言是驗證重要組成部分SystemVerilog 提供單一斷言規(guī)范機制,與多種工具工作,使斷言成為驗證方法學中 重要一部分。 VMM for SystemV

15、erilog提供了用于仿真(simulation, ,模擬 (emulation , 形式分析中斷言的編寫指導(dǎo)方法, 同時指導(dǎo)如何在多種驗證工具中最大化 利用斷言優(yōu)點。1.6 小結(jié)SystemVerilog 語言提供了建立一個成熟驗證環(huán)境所需要的所有結(jié)構(gòu)及特點。這樣的 驗證環(huán)境應(yīng)該包括帶約束的隨機激勵產(chǎn)生,覆蓋率驅(qū)動驗證,以及斷言。 VMM for SystemVerilog 描述了如何用 SystemVerilog 語言開發(fā)先進驗證環(huán)境。 同時對有經(jīng)驗驗 證工程師或那些初次接觸驗證, 而又不僅僅只準備進行直接測試的驗證工程師提供了全面編 碼及方法學指導(dǎo)。文章第二部分主要介紹使用先進驗證技術(shù)進

16、行 RTL 驗證并定義一個能在項目之間進行 驗證單元重用的分層驗證平臺結(jié)構(gòu)。2 SystemVerilog驗證方法學:RTL當前 SoC 設(shè)計及其相關(guān)可重用 IP 模塊使用中面臨的挑戰(zhàn)就是驗證。當設(shè)計在規(guī)模和 復(fù)雜度方面持續(xù)增加時,新技術(shù)的出現(xiàn)必須要采用有效驗證方法學。 SoC 要求有一個以可 重用為導(dǎo)向,覆蓋率驅(qū)動,并有豐富語義標準語言支持的驗證方法學。這是概括介紹由 SystemVerilog 硬件設(shè)計及驗證標準語言支持的驗證方法學文章中 第二部分。 此方法學在由 ARM 和 Synopsys 編寫的 Verification Methodology Manual (VMM for Sys

17、temVerilog書中做了全面介紹。 此文章概述了 VMM for SystemVerilog 書中推薦的用于建立一個可升級, 可預(yù)期, 以及可重用環(huán)境所需要的關(guān)鍵點。 要求用戶充分 利用斷言,重用性,自動測試平臺生成,覆蓋,形式分析,及其他先進驗證技術(shù)。 VMM for SystemVerilog 意圖包括兩部分。第一,教育用戶高效集成一個可重復(fù) 使用,多產(chǎn),靈活的驗證方法學。使得用戶能充分利用相同語言性能,工具性能,以及驗證 專家使用推薦的方法學。第二,使得驗證工具提供商能提供相關(guān)文檔,如 SystemVerilog 代碼事例及模版,使用戶通過最小代碼開發(fā),快捷利用好此方法學。2.1 分

18、層測試平臺結(jié)構(gòu)為了有一個通用驗證環(huán)境方便重用,充分利用擴展自動化特點,需要有分層驗證平臺 結(jié)構(gòu)。 這種方法支持項目中自頂向下和自底向上驗證, 同時使項目之間共用通用單元更加容 易。 VMM for SystemVerilog測試平臺結(jié)構(gòu)在 DUT 周圍包括五層。如圖 4所示。 Figure 4 多層測試平臺方便驗證重用分層驗證平臺是整個驗證環(huán)境核心。最底層為信號層,連接測試平臺及 RTL 設(shè)計。包括接口,時鐘, modport 結(jié)構(gòu)。命令層包含底層驅(qū)動和單元監(jiān)控,如斷言(properties 檢查設(shè)計意圖。此層提供一 個事務(wù)級接口上層,同時經(jīng)過信號層驅(qū)動物理管腳。功能層包含高層驅(qū)動及監(jiān)控單元,

19、判斷測試通過或失敗自檢查結(jié)構(gòu)。額外的檢查,比 如跨越命令層及功能層協(xié)議檢查器。情節(jié)層用產(chǎn)生器(generator 產(chǎn)生應(yīng)用于功能層事務(wù)(transactions 流或序列。 產(chǎn)生器有一套由測試層指定的包含權(quán)重,約束測試情節(jié)。帶約束隨機測試在此層引入。測試用例位于測試層。測試中用情節(jié)層定義新事務(wù)級序列,同步多事務(wù)流,通過與功 能層或命令層直接交互產(chǎn)生序列,或者直接到命令層補充定向激勵。 雖然分層測試平臺主 要用于帶約束隨機激勵產(chǎn)生,也支持人工定向測試。圖 4上部左邊部分展示了從測試到驅(qū) 動直接運行路徑, 完全繞過生成器。 這樣允許驗證工程師直接產(chǎn)生事務(wù)級而不需要設(shè)置帶約 束隨機情節(jié)。2.2 自頂

20、向下和自底向上 VMM for SystemVerilog 支持在分層方法中用自頂向下或自底向上方式建立驗證 環(huán)境。 對于自底向上方式, 設(shè)計者可以主要對信號層操作開發(fā)簡單驗證平臺。 隨著獨立模塊 連接集成到子系統(tǒng), 完成芯片甚至多芯片系統(tǒng), 驗證團隊增加更高層次的測試平臺單元完成 全部的驗證環(huán)境。對于自頂向下方式,驗證團隊用 SystemVerilog 或 SystemC 編寫事 務(wù)級模型建立完整設(shè)計, 如圖 5, 并在這些模型上運行測試。 自頂向下方式使得驗證團隊能 在開發(fā)過程中,甚至在 RTL 代碼開發(fā)前更早建立一個完整驗證環(huán)境。這個環(huán)境可作為驗證 其他驗證單元和 RTL 設(shè)計的 &qu

21、ot; 黃金參考 " 。 Figure 5 高層次測試平臺單元更早驗證事務(wù)級模型當開發(fā)人員完成 RTL 設(shè)計, 將 RTL 設(shè)計置入驗證環(huán)境代替事務(wù)級模型, 從而驗證設(shè)計 在功能方面是否與事務(wù)級模型等價。 此方法建立了一個可繼承過程, 此過程中可綜合的 RTL 代碼甚至 (如果需要 門級網(wǎng)表能代替事務(wù)級模型, 重用系統(tǒng)級環(huán)境來驗證設(shè)計本身。 同時也提供一種解決當前很重要驗證面臨挑戰(zhàn)的一種解決辦法 如同 RTL 一樣檢查事務(wù)級模 型行為。分層方法通過幾種其他途徑而方便重用。結(jié)構(gòu)方面或系統(tǒng)行為分析時移出低層次,用 事務(wù)級模型代替。 當清楚定義各層間交互時, 各層能在不同項目間重用。 最基

22、本的, 既然只 有測試層在產(chǎn)生新測試時需要調(diào)整修改,全部的測試平臺不考慮測試部分,都可重用。2.3 結(jié)果檢查雖然帶約束隨機激勵產(chǎn)生方式能快速生成很多測試情況,還需要對結(jié)果進行檢查以確 保設(shè)計對所有用例執(zhí)行結(jié)果正確。 結(jié)果檢查分為數(shù)據(jù)檢查和協(xié)議檢查。 數(shù)據(jù)檢查依賴于測試 平臺能力。需要測試平臺記錄被測試設(shè)計輸出結(jié)果順序 變化情況。對于要覆蓋所有可能的 情節(jié)來說,可變性相當重要。測試平臺中建立結(jié)果檢查功能,是產(chǎn)生測試平臺中遇到的一個難點。 SystemVerilog 本身具有的語言結(jié)構(gòu)能有助于測試平臺檢查中激勵與響應(yīng)通信執(zhí)行。 通過這種方法統(tǒng)計可能 輸出的變化,從而幫助管理預(yù)期結(jié)果。對于所有輸入數(shù)

23、據(jù)組合,響應(yīng)檢查器中包括數(shù)據(jù)覆蓋記錄,確保合適輸出組合被接收 到。 驗證工程師分析覆蓋數(shù)據(jù)并評估當前產(chǎn)生輸入激勵組合是否驗證了所有可能輸出。 協(xié)議 檢查主要在驗證中對行為監(jiān)控,以及時序關(guān)系的建立。一些高層次協(xié)議主要在 SystemVerilog 驗證結(jié)構(gòu)中進行規(guī)范定義并在驗證平臺中監(jiān)控。其他關(guān)于設(shè)計意圖方面應(yīng) 用規(guī)范協(xié)議檢查主要通過設(shè)計中及其接口定義的 SystemVerilog 斷言進行檢查。當斷言違反時,大部分驗證工程師認為報告一個直接或帶約束的隨機測試通過是不合 適的。因此, VMM for SystemVerilog討論如何訪問驗證環(huán)境中被檢查單元結(jié)果的方 法。這種方法提供了斷言與所有

24、驗證環(huán)境之間連接。2.4 覆蓋率驅(qū)動驗證執(zhí)行每一個驗證方法學在運用中至少都會包含一些覆蓋率驅(qū)動??傆幸恍┠繕吮仨氝_到, 如果一些特殊目標測試無法執(zhí)行, 要么調(diào)整測試用例, 要么產(chǎn)生新測試用例。 甚至通過觀察 波形來進行簡單手工測試。 雖然這樣測試覆蓋率記錄和分析比較盲目, 可信度不高, 但也是 基于覆蓋率驅(qū)動。 VMM for SystemVerilog 能夠讓用戶建立一個高效驗證環(huán)境,此環(huán)境主要依賴于 測試平臺自動化, 斷言和覆蓋率測量從而提高驗證生產(chǎn)力。 驗證生產(chǎn)力主要包括迅速產(chǎn)生更 多測試用例能力及避免產(chǎn)生冗余測試情況的能力。如果一個新產(chǎn)生測試用來測試以前已經(jīng)測試過的相同功能(由此會有相

25、同的功能覆蓋 率 , 那么這樣測試用例不值得加入到驗證中。 功能覆蓋率能讓用戶知道哪些功能還沒有被 執(zhí)行到,從而調(diào)整測試用例,集中精力在未覆蓋到部分。 VMM for SystemVerilog描 述如何通過功能覆蓋率更快達到驗證目標。SystemVerilog 非常適合于功能覆蓋率。功能類似于 SystemVerilog 斷言時序 (Temporal 覆蓋特性能用于抓住設(shè)計中深層次 corner-case 條件。高層次覆蓋點能通 過覆蓋組(cover groups進行定義規(guī)范。這種方法能跟蹤定義值范圍以及不同定義值之 間組合情況。 此能力尤其適合于監(jiān)控存儲器地址范圍, 數(shù)據(jù)包內(nèi)容, 以及設(shè)計

26、或驗證平臺中 其他多比特信號 VMM for SystemVerilog 描述了很多使用, 包括:temporal 覆蓋特性; 覆蓋組 (cover groups ,用交叉覆蓋指定覆蓋點,以及用傳統(tǒng)代碼覆蓋測量方法跟蹤這些點。 SystemVerilog 通過統(tǒng)一語言方法,將代碼覆蓋,功能覆蓋,斷言覆蓋用一種語言進行定 義。2.5 使用形式分析 VMM for SystemVerilog 不僅僅涉及到以仿真為基礎(chǔ)的驗證技術(shù),還包括形式分 析驗證技術(shù)。豐富的 SystemVerilog 斷言結(jié)構(gòu)能將斷言目標用于仿真,形式分析,或包括 這兩者的規(guī)范定義。 VMM for SystemVerilog

27、提供了在這些仿真或形式分析驗證中編 寫斷言的方法。形式工具能分析每個斷言,并盡力證明此斷言安全,任何測試情節(jié)下都不會發(fā)生告警。 這一步驟不需要編寫任何仿真測試用例。由于以后 RTL 設(shè)計改變而引入缺陷使證明無效, 斷言都不應(yīng)該被刪除。 被證明的斷言通常不需要進行仿真。 如果斷言失敗, 形式工具產(chǎn)生一 個反例說明斷言如何失敗。 反例展示一個設(shè)計或斷言中缺陷, 或證明輸入的約束不充分, 而 限制了合法仿真序列分析。一些形式分析也能用于統(tǒng)計直接或隨機仿真測試中無法擊中的 temporal 覆蓋點。此 形式工具首先盡力測定覆蓋目標是否曾經(jīng)達到。 如果沒有, 將指示出設(shè)計中冗余或無法達到 的邏輯, 并更

28、新覆蓋率數(shù)據(jù)庫結(jié)果。 如果能達到, 一個輸入測試用例將產(chǎn)生。 如果此測試符 合合法激勵 (因為輸入約束充分 , 則帶斷言的測試用例被執(zhí)行, 驗證設(shè)計行為同時覆蓋率 數(shù)據(jù)結(jié)果被更新。2.6 產(chǎn)生可重用驗證 IP分層驗證平臺結(jié)構(gòu)以及 VMM for SystemVerilog其他特點自然適合產(chǎn)生可重用 VIP (verification intellectual property。 VIP 包括比如事務(wù)級模塊,發(fā)生器(generators ,處理器(transactors ,檢查器(checkers ,斷言(assertions , 以及分層驗證平臺中其他部分。必須很方便用于其他不同項目中。 VM

29、M for SystemVerilog 指導(dǎo)方針是讓開發(fā)者輸出項目內(nèi)可重用或能商用的 VIP 。具有與 VMM for SystemVerilog相適應(yīng)的驗證環(huán)境 SOC 開發(fā)團隊能非常方便快 捷采用項目內(nèi)或外部 VIP ,從而在項目中節(jié)省大量時間及資源。圖 6是分層驗證平臺中如 何使用 VIP 單元。如果一個具有特殊接口驗證單元只要封裝合適,在以后有相同接口芯片 中可重用這個 VIP 。 Figure 6 具有通用接口協(xié)議驗證 IP 重用到新項目2.7 小結(jié)當與合適的方法學相結(jié)合, SystemVerilog 能提供建立高效驗證環(huán)境所需要所有結(jié)構(gòu) 和特點。這樣驗證環(huán)境包括帶約束隨機激勵產(chǎn)生,

30、覆蓋率驅(qū)動驗證,以及斷言。 VMM for SystemVerilog 書中展示了驗證方法學能最好利用語言的特點能力,增加先進芯片設(shè)計 一次流片成功機會。文章下一部分將介紹系統(tǒng)級驗證。包括 SystemVerilog 與 SystemC 交互。3 SystemVerilog驗證方法學:ESL3.1 系統(tǒng)級驗證介紹通常術(shù)語中,電子系統(tǒng)指的是一個設(shè)計總包含模塊獨立設(shè)計,模塊獨立驗證以及模塊 之間底層互聯(lián)。系統(tǒng)級驗證指的是對這些獨立模塊(block 之間是否能正確交互的驗證。 每一個模塊, 包括內(nèi)部互聯(lián)結(jié)構(gòu), 需要各自獨立驗證。 因此系統(tǒng)級驗證著眼于模塊之間結(jié)合 的功能性。一些功能完全包含在模塊中則

31、更適合于模塊級驗證。系統(tǒng)級驗證不受系統(tǒng)規(guī)模的限制,可在數(shù)萬門到上千萬門設(shè)計中進行。所有情況中需 要遵循的驗證原則是對規(guī)范功能驗證并達到指定的目標。 系統(tǒng)架構(gòu)人員針對系統(tǒng)中大量單元 建立執(zhí)行(performance ,latency ,以及廣泛目標。執(zhí)行團隊必須達到那些目標。驗證 團隊根據(jù)到達目標情況, 必須驗證執(zhí)行中涉及到的所有邊界情況, 并對無效狀態(tài)或無法達到 狀態(tài)行為進行說明。對一個系統(tǒng)設(shè)計團隊來說,最大挑戰(zhàn)不在于許多設(shè)計模塊規(guī)范定義及集成,更重要是 于對最終設(shè)計正確性所能獲取的信心度。 此篇文章描述了在系統(tǒng)級驗證中應(yīng)用方法學及驗證 任務(wù)。關(guān)注系統(tǒng)級集成驗證模塊,系統(tǒng)級架構(gòu)人員,驗證工程師

32、將對此感興趣。3.2 可擴展的驗證單元分層驗證平臺方法所產(chǎn)生的獨立處理器(transctors 能在模塊級到系統(tǒng)級環(huán)境中被 重用。從系統(tǒng)級角度考慮這些處理器,他們可能需要擴展或結(jié)合(combine 在模塊級的 能到系統(tǒng)級功能。 獨立處理器被集成到系統(tǒng)級處理器, 被稱為可擴展的驗證單元 (XVC 。XVC 提供系統(tǒng)級驗證環(huán)境中可重用,可升級,標準形式的基本單元結(jié)構(gòu)。目的是使測 試建立開銷最小化。 XVC 能用于驅(qū)動模塊互聯(lián)結(jié)構(gòu)或外部接口。也能通過監(jiān)控系統(tǒng)狀態(tài), 提供提示信息支持其他 XVC 單元。XVC 意圖是支持系統(tǒng)級集成和在統(tǒng)一方法學指引下通過直接和帶約束隨機測試進行功 能驗證。 XVC 結(jié)

33、構(gòu)對不同系統(tǒng)級設(shè)計來說是非常方便。 一個 XVC 將成熟的驗證或系統(tǒng)級功 能壓縮成標準模式。不論功能方面可能有如何大的變化, XVC 用戶在驗證平臺級別的感受 不會因此而改變。這樣有助于減少學習過程,并使系統(tǒng)級驗證平臺控制機制連續(xù)一致。一個 XVC 對驗證 IP 來說是一個容器, 分為兩個層次, 如圖 7所示。 發(fā)生器 (generator 層用戶對測試行為可擴展庫, XVC 可通過集成到驗證環(huán)境中定義好的行為接口而對此執(zhí)行。 驅(qū)動層集成了各個獨立的處理器,用于執(zhí)行連接到 DUT 接口的物理層或事務(wù)層的行為。發(fā) 生器層控制驅(qū)動層的處理器。 Figure 7 XVC結(jié)構(gòu)分為兩層:發(fā)生器和驅(qū)動器發(fā)

34、生器層的行為接口容許測試激勵一致。 XVC 發(fā)生器驗證環(huán)境接口能直接連接到一個 XVC 管理器。 一個 XVC 管理器能同時支持多個 XVC , 通過接口調(diào)度給定 XVC 各自行為執(zhí) 行。 XVC 也能傳遞數(shù)據(jù), 狀態(tài)底層的測試控制部分與相同環(huán)境中的其他 XVC 進行通信交流。經(jīng)驗表明大部分系統(tǒng)驗證執(zhí)行中,當模塊因為系統(tǒng)公共資源發(fā)生沖突時,都可觀察。 通過執(zhí)行一個單線程的測試無法有效產(chǎn)生競爭的測試情節(jié)。 類似的, 通過獨立的激勵流到互 不相關(guān)的外部接口上,也無法可靠的產(chǎn)生這種需要 的測試情節(jié)。因此驗證單元產(chǎn)生的激勵 能夠與實際需求激勵一致。當有一個以單一,中心的 XVC 管理器協(xié)同多個 XVC

35、 執(zhí)行時, 這樣的需求很容易實現(xiàn)。3.3 XVC管理器 (XVC managerXVC 管理器是一個用于高層次 XVC 之間同步而可選的驗證單元。 用戶可根據(jù)系統(tǒng)或一 個具體測試對同步或 XVC 控制機制進行定義。驗證環(huán)境中只能例化 XVC 管理器一次;當 需要運用多個管理器時則需要在另外一個層次中對他們進行協(xié)調(diào)管理。 VMM for SystemVerilog規(guī)范了一個預(yù)定義 XVC 管理器。它用純文本格式外部 配置文件描述測試情節(jié)。 這些文件重用或根據(jù)新的相關(guān)需求很方便進行調(diào)整。 這種通過簡單 文本輸入文件指導(dǎo)測試的能力方式, 能使用戶在不需要明白驗證環(huán)境細節(jié)情況下快速獲得高 效測試結(jié)果。

36、對一些重編輯(re-compilation 測試平臺單元或運行不同測試情節(jié)設(shè)計來說,用外 部文件對測試情節(jié)進行規(guī)范的方式減輕了相應(yīng)需求。 有序的規(guī)格在復(fù)雜系統(tǒng)設(shè)計中能有助于 減少測試回歸(turnaround 次數(shù)。圖 8展示了預(yù)定義的 XVC 管理器結(jié)構(gòu)。 Figure 8 XVC 管理器控制并使測試平臺中其他 XVC 協(xié)調(diào)工作測試情節(jié)的概念基于預(yù)定義 XVC 管理器功能。預(yù)定義的 XVC 管理器指導(dǎo)一個測試情 節(jié)范圍內(nèi) XVC 。一個系統(tǒng)級測試程序能包括一個或更多測試情節(jié)。測試情節(jié)用于測試一個 或多個驗證需求。一個測試程序可以由許多測試情節(jié)組成,用于完成一個 DUT 幾個測試需求。測試情節(jié)

37、 能被用于普通行為序列壓縮從而被不同測試程序重用。比如:需要許多 XVC 配置一個系統(tǒng) 的操作能夠包含在一個情節(jié)中。用于預(yù)定義 XVC 管理器的測試情節(jié)文件在測試運行前就固定了,不能進行動態(tài)調(diào)整。 一個測試程序包括測試情節(jié)描述以及關(guān)于每個情節(jié)執(zhí)行的順序信息。 情節(jié)可能在多種順序下 重復(fù)多次。測試程序中執(zhí)行的每個測試行為在執(zhí)行第一次行為前由它的目標 XVC 檢查。這 個檢查主要是防止由于情節(jié)文件中的語義或語法錯誤而在一個長時間運行后而引起仿真終 止。3.4 系統(tǒng)級驗證環(huán)境對完整驗證而言,為達到測試需求的目標,通常習慣是模塊或系統(tǒng)是建立一個定制測 試平臺。 然而除非使用一個標準方法, 模塊級測試平

38、臺單元或功能覆蓋元素在系統(tǒng)級并不能 被方便的重用。進行系統(tǒng)級驗證時一個能較好工作方法是用 transactor 代替 processor (CPU or DSP 。transactor 直接基于周期精度的機制將激勵驅(qū)動給系統(tǒng),而避免程序處理器執(zhí)行此任務(wù)的 消耗。 transactor 提供了一個易控總線主方式。這種方法也避免了一個環(huán)境中由于對條件 測試而引起錯誤的主, 從總線 agent 驗證。 比如:如果一個主 (master 或從 (slave 總 線 agent 連接有錯誤,任意一個能屏蔽連接的執(zhí)行。 transactor 更容易將系統(tǒng)設(shè)計或驗證 環(huán)境中其他事件進行同步。最后,可通過寫一

39、個 transactor ,在一定總線周期范圍內(nèi),產(chǎn) 生更廣范圍協(xié)議值和行為,因而能獲得更好功能覆蓋。另一方面, transactor 不能直接執(zhí) 行編寫的 CPU 或 DSP 嵌入式代碼。因此詳細處理器模式通常用于軟件驅(qū)動,系統(tǒng)級驗證 環(huán)境。 VMM for SystemVerilog提供用于設(shè)立執(zhí)行軟件集成和驗證軟硬件交互驗證環(huán) 境。實際上一個典型 SoC 項目有幾個不同驗證環(huán)境。對一個給定系統(tǒng)設(shè)計,功能驗證計 劃的規(guī)范與系統(tǒng)級驗證需求一致。 用多個不同驗證環(huán)境達到這些需求相對容易。 每個環(huán)境與 一系列特殊功能驗證目標相聯(lián)系, 并為有效的覆蓋這些需求而設(shè)計。 系統(tǒng)級需求的獨特正交 性(or

40、thogonality 使得用一個單一環(huán)境會不必要復(fù)雜,由于正交性,不同驗證環(huán)境實際 上可以屏蔽掉一定系統(tǒng)錯誤配置。除軟件測試環(huán)境外, VMM for SystemVerilog定義了四種類型驗證環(huán)境:" "模塊互聯(lián)底層結(jié)構(gòu)環(huán)境 " 預(yù)驗證模塊互聯(lián)底層結(jié)構(gòu)。驗證單元替換與總線接口的外 圍,主,從設(shè)備。這個環(huán)境目的是檢查數(shù)據(jù)傳輸,協(xié)議規(guī)則,總線執(zhí)行需求方面,比如時間 延遲(latency ,帶寬等功能的正確性。" "基本集成環(huán)境 " 檢查系統(tǒng)中所有 I/O口連接關(guān)系,翻轉(zhuǎn)正確性。應(yīng)用集成激勵中的 首選方法是用驗證單元代替大量系統(tǒng)單元來驅(qū)

41、動總線事務(wù)。 集成測試需要明確記錄, 確保每 個模塊被正確集成到系統(tǒng)級層次中。系統(tǒng)單元內(nèi)部功能行為不被驗證。" "低層次系統(tǒng)功能環(huán)境 " 覆蓋在用處理器(transactor 替代 CPU/DSP時不容易觀 測的功能。 這些功能可能包括控制信號監(jiān)控, 復(fù)位方式檢查, 或其他一些對 CPU/DSP來說 不容易回讀,控制的一些功能。與基本集成環(huán)境一樣,不驗證系統(tǒng)單元內(nèi)部功能行為。" "系統(tǒng)確認環(huán)境 " 確保全面執(zhí)行需求, 比如系統(tǒng)能達到時間延遲 (latency 和帶寬。 這個環(huán)境中驗證單元驅(qū)動或監(jiān)控系統(tǒng)中所有模塊外部接口。如圖 9所示,

42、只有 CPU/DSP由一個處理器(transactor 代替。這個環(huán)境中需要提取一個系統(tǒng)級模型進行高效仿真以 及一定程度精確性使測試回歸時間最小化。 Figure 9 系統(tǒng)確認環(huán)境必須高效度量系統(tǒng)執(zhí)行系統(tǒng)級驗證環(huán)境應(yīng)該重用模塊級中正確使用過的驗證單元。 VMM for SystemVerilog 中驗證方法指導(dǎo)方針使得模塊和系統(tǒng)級驗證環(huán)境架構(gòu)成為可能。所以產(chǎn) 生不同模塊級驗證單元所花費的努力在移植到系統(tǒng)級時就不會白費。驗證單元都按照指導(dǎo)方針進行構(gòu)造, 需要時將很容易在系統(tǒng)級重用。 模塊級單元在系 統(tǒng)級被重新配置, 使得他們能在系統(tǒng)級進行相關(guān)得更多操作執(zhí)行。 驗證單元重配置在模塊級 和系統(tǒng)級驗證

43、中達到不同目的。3.5 事務(wù)級模型(Transaction-level models文章中描述的系統(tǒng)級驗證方法在事務(wù)級中經(jīng)常需要承擔對 DUT 部分進行建模任務(wù)。 編寫一個完整設(shè)計事務(wù)級模型是現(xiàn)代驗證方法學一部分。 對一些情況,設(shè)計中第一個模塊 是在 RTL 級編寫,設(shè)計中事務(wù)級模塊編寫似乎是花費昂貴的行為,因此實際設(shè)計中常貶低 這種做法。但是如果 RTL 代碼不可用,編寫一個事務(wù)級模型,不僅不會增加消耗,還有利 可圖的,將節(jié)省整個項目大量時間。編寫一個合適事務(wù)級模型相對于編寫一個 RTL 模型只耗費很少一部分時間,因此讓 設(shè)計和驗證團隊并行工作。事務(wù)級模型運行速度也比 RTL 模型以數(shù)量級快

44、很多。使得驗證 環(huán)境,測試開發(fā)及調(diào)試更快。當 RTL 模型最后有效可用時(available ,驗證環(huán)境中所有單元已經(jīng)處于非常成熟 水平。 他們將立即驗證設(shè)計中各方面功能, 針對這些方面達到高功能覆蓋。 事務(wù)級模型的編 寫及仿真速度更快,因為他們不用處理 復(fù)雜物理信號及協(xié)議。他們能用更高層次事務(wù)描述 接收,執(zhí)行并相應(yīng)事務(wù)。他們不需要在事務(wù)中交換或處理物理 wire 中比特搜集序列。但是 有能力在系統(tǒng)中用一個 pin-accurate 事務(wù)級模型代替 RTL 設(shè)計模塊,使得仿真運行消耗 更少的仿真資源,仿真運行更快。設(shè)計方法學中需要或產(chǎn)生一個設(shè)計的事務(wù)級模型通常用 SystemC 作為建模語言。

45、 這 是一個非常好選擇, 沒有理由選用其他建模語言, 因為 SystemC 模型相對于執(zhí)行功能驗證, 能用于其他 contexts 中。但是對這些設(shè)計方法學而言,編寫一個事務(wù)級模型僅僅是加速驗 證環(huán)境的開發(fā),而不需要在其他 context 中重用這些模型, SystemVerilog 同樣也是一個 優(yōu)秀建模語言選擇。 SystemVerilog 提供了高層構(gòu)造的所有需求,使得事務(wù)級模型編寫更 加高效。3.6 小結(jié)當與一個合適的方法學相結(jié)合, SystemVerilog 提供了建立一個完整系統(tǒng)級 ESL 驗 證環(huán)境所需要所有 constructs 和 features 。 VMM for Sys

46、temVerilog 描述了幾種不 同形式環(huán)境,能用于驗證設(shè)計的事務(wù)級模型, RTL 設(shè)計,以及嵌入式軟件。幾乎上 100條 用于系統(tǒng)級和軟件驗證的建議和指導(dǎo)方針將作者的專家意見轉(zhuǎn)換成通往成功的具體步驟。文章最后部分將討論采用推薦的驗證方法學策略,包括 VMM for SystemVerilog中定 義的標準模塊建立,斷言庫使用。這些庫涉及到文章中討論的基本方法,包括 XVC , XVC 管理器,軟件驗證。4 SystemVerilog驗證方法學:采用 VMM4.1 采用驗證方法學先進驗證技術(shù)并非總是容易采用的;驗證團隊不能因為只要是新東西就去盲目嘗試。 事實上, 隨著設(shè)計規(guī)模及復(fù)雜度不斷增加

47、, 舊方法因不再實用而淘汰。 基于此現(xiàn)象帶約束隨 機激勵產(chǎn)生, 覆蓋率驅(qū)動驗證, 斷言, 形式分析等技術(shù)從理論上轉(zhuǎn)向?qū)嶋H應(yīng)用。 實際項目中 這些技術(shù)也成為必需。當大部分S oC 項目存在大量設(shè)計缺陷時,許多驗證團在可能出現(xiàn)問題之前就已經(jīng)清 楚認識到項目挑戰(zhàn)性以及舊驗證方法缺陷。解決方法是盡可能快采用VMM方法學。 SystemVerilog VMM驗證方法學應(yīng)運而生。通過此書可知, 在驗證中將涉及到兩種形式的驗證手段。 一是參考方法學支持普通驗 證方法學。比如:工程師在不熟悉加入斷言(assertions 概念下,能 不依賴于他們可用 的任何 assertion 語言或庫而熟悉此方法。不論用哪

48、種語言,類似采用帶約束隨機激勵生 成需要熟悉約束的角色,內(nèi)容。VMM方法學中面向?qū)ο筇攸c,對某些想用此方法學工程師來說是很大障礙。封裝, 類,繼承,擴展,以及面向?qū)ο缶幊痰闰炞C環(huán)境的考慮遠大于傳統(tǒng)驗證平臺。幸運的是,很 多工程師有諸如C+, Java 語言方面經(jīng)驗,因此對他們來說只需要將高級語言中面向?qū)?象概念應(yīng)用于驗證領(lǐng)域。另一種采用形式是用此書中對 SystemVerilog 規(guī)范技術(shù)方法。 使用書附錄中定義的 模塊庫而非常方便自動化。當然明白普通驗證概念有助于 SystemVerilog 方法學使用。同 時 SystemVerilog 庫提供的范例也能幫助用戶明白這些概念。比如:斷言檢查

49、(assertion-checker 庫;基類(base-class 庫提供了面向?qū)ο篁炞C很好范例。SystemVerilog VMM例出了四個庫,使其使用更加方便快捷。VMM標準庫,一套 SystemVerilog 驗證平臺及有用的類。VMM checker 庫,一套 SystemVerilog 斷言檢查。XVC標準庫,一套 SystemVerilog 系統(tǒng)級驗證單元及有用的類。軟件測試架構(gòu),一個用于軟件驗證的C庫。利用這些庫能夠使開發(fā)團隊快速容易建立起他們的驗證環(huán)境。從使用這些庫用戶反 饋, 在項目早期使用能至少節(jié)約幾個月時間。 而且隨著廠商提供的VMM驗證單元。 標準庫 采用使得不同用戶

50、,跨項目之間能夠建立平臺一致性。4.2 VMM提供四類庫SystemVerilog VMM定義了一個分層結(jié)構(gòu)驗證平臺, 能夠支持先進驗證及方便重 用。 驗證平臺的控制以及測試用例執(zhí)行都包括在一系列已定義好步驟中。 這些步驟受控于系 統(tǒng)虛擬函數(shù)(virtual methods。VMM標準庫定義了 vmm_env基類 (base class, 用于控制每個測試用例運行,如圖 10所示: Figure 10 vmm_env類定義一系列 virtual methods用于執(zhí)行測試用例圖 10所示過程包括產(chǎn)生測試用例配置;建立驗證平臺;復(fù)位DUT;配置DUT; 測試執(zhí)行以及最后執(zhí)行停止并輸出報告。 vm

51、m_env基類中 virtual method提供了針對 每個步驟基本結(jié)構(gòu),同時很多 methods 可根據(jù)被擴展去執(zhí)行DUT相關(guān)行為。vmm_log類提供了VMM信息(message 服務(wù)接口,這樣不論其來源,所有信 息能被有效體現(xiàn)出來。信息服務(wù)基于幾個概念來描述及控制信息:信息來源(transactor,generator,test case等信息過濾器(promote,demote,suppress 信息信息類型(failure,timing error,debug information 等信息嚴重性(fatal error,non-fatal error,warning等仿真器信息處

52、理(continue,abort,invoke debugger等vmm_data基類是驗證平臺中所有事務(wù)(transaction 描述以及數(shù)據(jù)建模的基礎(chǔ)。 這個類能夠被擴展建立適合與平臺需要的任何模型, 比如一個以太網(wǎng)MAC幀數(shù)據(jù)模型, 或 者描述一個串行總線數(shù)據(jù)包。 Transactions 建模基于 transaction 方式描述,也是從 vmm_data類中被擴展。 這樣相對于傳統(tǒng)程序調(diào)用, 更容易產(chǎn)生隨機事務(wù) (transactions 數(shù)據(jù)流。VMM 標準庫中還包括其他類:vmm_channel:提供通用事務(wù)級接口機制vmm_broadcast:復(fù)制事務(wù)到多個通道。vmm_not

53、ify:并發(fā)執(zhí)行線程同步接口vmm_xactor:作為基類服務(wù)于所有事務(wù)總之,這些類提供建立驗證環(huán)境所需模塊(block ,能滿足各種可能 DUT 驗證需 求, 并加速驗證平臺開發(fā)。 預(yù)定義基類可擴展性是面向?qū)ο蠓椒P(guān)鍵所在; 每個驗證團隊能 定制自己驗證平臺環(huán)境,同時在操作運行中不需要改變他們自己基類。 SystemVerilog 中 基類源代碼在開發(fā)自己類時是有用的, 因此 Synopsys 提供免費 license 的VMM標準庫。斷言(assertion 能更快,更多發(fā)現(xiàn) bug 在很多年前的文中就已經(jīng)提到。斷言在執(zhí) 行中能領(lǐng)會設(shè)計者意圖,在代碼設(shè)計階段隔離設(shè)計錯誤,縮短 debug

54、時間,也能通過形式 驗證分析發(fā)現(xiàn)仿真中容易被忽略的邊界(corner-case bug 。雖然有這些優(yōu)點,讓人吃 驚的是并非所有設(shè)計或驗證團隊用到斷言。出現(xiàn)這種情況是工程師不得不專門學一種語言同時還需要買昂貴工具?,F(xiàn)在 SystemVerilog 已經(jīng)提供了強有力斷言結(jié)構(gòu),能被當前主流仿真器所支持,并更易使用。 事實上, 最近調(diào)查表明由于 SystemVerilog 對斷言的支持, 斷言的使用在明顯增加。 然而, 對工程師來說很輕松使用斷言還需要時間, 同時需要讓他們知道 "what to check"也存在難 度。assertion-checker 庫即是將斷言輕松加入到

55、 RTL 設(shè)計中一個很好方法。這些檢查 器(checker 的設(shè)計與按照一些通用設(shè)計單元保持一致,比如 FIFO , stacks,arbiters,memories,state machines,handshake interface等。工程師不用考 慮使用的斷言與設(shè)計結(jié)構(gòu)是否完全保持一支, 他們只需要簡單將一個 arbiter 請求, 應(yīng)答信 號連接到一個 arbiter 檢查器或者是將 memory 地址線和控制信號連接到一個 memory 檢查器。通過調(diào)查也顯示了斷言檢查庫價值; Accellera 組織提供的開放驗證庫 OVL 已經(jīng)廣 泛采用。 SystemVerilog VMM擴展

56、了 OVL ,加入了對設(shè)計單元類型支持,包括 FIFO, 同 步, 異步 memory,stacks 。 圖 11完整的列出了 VMM 檢查庫中定義的 50個斷言檢查器。 Figure 11 VMM檢查庫擴展了 OVL 斷言內(nèi)容這些檢查器作為 SystemVerilog 模塊進行應(yīng)用, 所以按照模塊例化能放置于設(shè)計或 驗證平臺中的任何位置。 使用非常簡單, 用戶簡單連接時鐘, 復(fù)位, 被檢查信號即可。 比如:下面的檢查器例化確定了兩個信號, hot and cold,是互斥的 (不能在同一時刻有效:Assert_mutex temperature_check(reset_n,clock,hot

57、,coldSynopsys 已將 VMM 檢查庫中 SystemVerilog 的應(yīng)用贈予給 Accellera ,可以預(yù) 期將來 OVL 版本中將包含用 SystemVerilog VMM定義的全套斷言檢查庫。SystemVerilog VMM定義了可擴展的驗證單元(XVC ,從一個模塊級事務(wù)或模 塊級組合事務(wù)擴展到一個系統(tǒng)級事務(wù)。本書也規(guī)范了 XVC 標準庫,一組用于建立一個系統(tǒng) 級驗證的 XVC 類。如圖 12: Figure 12 用 XVC 標準庫和 VMM 標準庫中類建立 XVCXVC manager是一個可選驗證單元,主要用于更高層次 XVC 同步。根據(jù)系統(tǒng)或具 體測試需要,用戶

58、可自定義同步和 XVC 控制機制。 XVC 標準庫中定義了 xvc_manager基類,預(yù)定義的 XVC manager類:vmm_xvc_manager。它作為一個基類的擴展而應(yīng) 用。vmm_xvc_manager類相對 xvc_manager還提供了幾個附加元素 (elements , 包括控制行為知曉(notifications to control cations,一個預(yù)定義的命令文件結(jié)構(gòu), 一個包括行為控制,事件控制,中斷,執(zhí)行,日志的命令格式。因為這個命令文件描述測試 情節(jié),因而不需要重新編譯測試平臺或者 DUT 運行不同情節(jié)。用戶可以根據(jù)需要重用或調(diào) 整命令文件。xvc_xactor基類用于實現(xiàn) XVC-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論