1. 程式人生 > >晶片設計(IC)中的驗證

晶片設計(IC)中的驗證

通俗的講,晶片設計的驗證(Verification)就是驗證所設計的邏輯程式碼是否符合預期的要求,是否符合原來定義好的規範(如對於一個H264解碼晶片,就是驗證其是否實現了H264 標準中的某部分規範,不一定是全部,因為H264分為很多profile,可能所要求的僅僅是實現某些profile)。

在現在的積體電路的驗證中,主要有兩種方法,一種是隨機驗證,另外一種是形式驗證(Formal Verification)。隨機驗證就是通過大量的隨機向量來驗證測試是否符合要求(通常是將硬體的結果和軟體的結果進行比較,或者通過斷言比較)。形式驗證的主要思想是通過使用形式證明的方式來驗證一個設計的功能是否正確。形式驗證可以分為三大類:等價性檢查(Equivalence Checking)、模型檢查(Model Checking)和定理證明(Theory Prover) 。

隨著晶片規模的增大,晶片設計中驗證需要的時間越來越長,佔整個設計週期的比例越來越大。為了提高驗證速度,出現個各種自動化的驗證語言(如SystemVerilog等)和驗證工具(這些驗證工具大部分都支援隨機驗證)和各種驗證方法學,如OVM和VMM。

VMM和OVM都是基於SV(SystemVerilog)的硬體驗證的方法學,從本質上來講,VMM和OVM的方法學是一致的,目的都是實現可重用性(reusable)以提高驗證的效率。

VMM是由ARM和Synopsys提出的,OVM則是由Mentor和Candence共同提出的。因此使用Synopsys VCS進行模擬也就選擇了VMM的驗證方法,支援OVM的模擬工具自然就是Mentor和Candence的工具了。

VMM和OVM都是基於SystemVerilog(SV)的驗證方法,而SV相對於傳統的HDL語言來說,其最大的好處就是引入了面向物件程式設計的概念(Object Oriented Programming,OOP),OOP的概念基本上是可以跟{封裝(Encapsulation)+繼承(Inheritance)+多型(Polymorphism)}相等同的,至於封裝、繼承和多型,如果學過C++的人自然會明白。引入了OOP之後,SV便可以在更高的抽象層次進行模擬和驗證。

在2010年,貌似又出現了一個新的驗證方法,叫Universal Verification Methodology(UVM),UVM號稱集成了兩個驗證方法的優點,具體可以看

http://www.uvmworld.org/overview.php

以上幾種驗證方法學的基本結構都差不多,可重用的實現的手段都是通過VIP(verification IP)實現的。這些VIP都是EDA工具提供或者單獨購買的,通常是一些常見的協議或者標準的IP,如AXI匯流排IP,USB協議IP。這樣的話,倘若設計一個使用了AXI匯流排作為輸入輸出介面的部件,通過驗證工具檢測待測設計AXI總線上的輸入輸出,並且和SystemVerilog描述的斷言進行比較(只需描述裡面出AXI匯流排介面外的行為,不用自己用SystemVerilog描述複雜AXI的行為,直接使用VIP就可以,節省了大量時間)。

並且這些驗證方法學和EDA工具現在都提供了對覆蓋率的支援,其基本的驗證結構如下(其中灰色部分就是驗證方法學所提供的支援):

相關推薦

晶片設計(IC)驗證

通俗的講,晶片設計的驗證(Verification)就是驗證所設計的邏輯程式碼是否符合預期的要求,是否符合原來定義好的規範(如對於一個H264解碼晶片,就是驗證其是否實現了H264 標準中的某部分規範,不一定是全部,因為H264分為很多profile,可能所要求的僅僅是

國內IC晶片設計公司排行榜出來了,你們怎麼看?

國內IC晶片設計產業在眾多新型應用場景帶動下,疊加國產替代晶片需求,加之在晶元製造廠的產能供應將在2019年釋放給予IC晶片設計企業的產能更多的保障,終於在2018年中國IC設計產業的總營收將超過280億美元,增速將超過25%。 主要來自於兩個方面的的貢獻: 一是眾多新型應用場景帶動IC設計

java軟件設計模式——單例設計模式的【餓漢式】與 【懶漢式】示例

nal pre turn new對象 構造方法 sta 餓漢式 () urn 以下為單例設計模式中的兩種經典模式的代碼示意: 1 單例設計模式(spring框架IOC,默認創建的對象都是單例的): 2 餓漢式: 3 public class Sing

在am定義消息集束,並在CO驗證之後拋出異常。

void 按鈕 span lua throws ansi log oaf ext.get 需求:在頁面上點某個按鈕的時候,需要收集所有異常並拋出。 -------------------------------------------方式1:參考 EBS OAF開發中的錯誤

Android驗證輸入是否為漢字及手機號,郵箱驗證,IP地址可用port號驗證

bili repl ips gettext content 驗證 arr mat 數據 1,驗證是否為漢字 // 驗證昵稱 private boolean verifyNickname() { String nickname = edt_use

php驗證碼不顯示問題

註釋 沒有 語法 clean ade com 需要 提示 發現 一、首先你要確定你的gd開啟和你的服務器沒有問題    二、當你驗證碼不顯示時你就直接去請求你的圖片的URL   語法錯誤:         邏輯錯誤:   此時,如果出現語法錯誤,頁面會有相應的提示。  

23種設計模式的叠代器模式

pos over arr imp @override 一個 next() int position 叠代器模式:提供一種方法順序訪問一個聚合對象中的各個對象。 那麽如何提供一個方法順序呢? public interface Iterator<T>{   publ

23種設計模式的訪問者模式

功能需求 封裝 改變 擴展 數據結構 模式 困難 操作 如果 訪問者模式:對於一組對象,在不改變數據結構的前提下,增加作用於這些結構元素新的功能。 適用於數據結構相對穩定,它把數據結構和作用於其上的操作解耦,使得操作集合可以相對自由地演化。 優點: 符合單一職責原則 擴展性

23種設計模式的原型模式

1-1 ... 實例代碼 sets each png 為什麽 .get protect 原型模式:通過復制現有實例來創建新的實例,無須知道相應類的信息。 個人見解:在大量循環時,需要初始化對象,用 原型模式能節省大量的初始化所花費的時間,值得一談的是淺復制和深復制 淺復制:

網頁設計排版哪些元素最重要?

有一些網頁設計新手會認為,在設計網頁的時候最重要的應該是如何添加一些具有吸引力的內容,所以他們只把大量的精力放在內容的設計上。在我看來,內容質量的好壞確實是能夠決定你瀏覽量多少的關鍵因素,但事實上,頁面的排版也是一門非常大的學問。俗話說“紅花還需綠葉襯”,其實我覺得兩者之間沒有輕重之分,是相得益彰的關系

div驗證密碼

pass span iss ace inpu 再次 style clas left <div class="text-group" style="float:left; margin: 15px;width: 100%;"> <label class

JSP頁面驗證碼的調用方法

gettime down text date pos 瀏覽器 獲取 var 生成 步驟:1、首先是要生成驗證碼2、對驗證碼類進行調用:主要 實現的是 將驗證碼圖片 輸出到response.getOutputStream()這個輸出流中調用時,可以在頁面調用,也可以在ser

2018年交互設計旅程的7個設計趨勢

原型設計 交互設計 界面設計 設計師 AR 以下內容由Mockplus團隊翻譯整理,僅供學習交流,Mockplus是更快更簡單的原型設計工具。 不可否認,2017年用戶體驗是件大事情,從產品界面到消費內容,各種各樣的數字平臺都在討論用戶體驗。在過去的一年中,

交易驗證方法(加密策略)

其中 一個 nbsp 驗證 -- 成交 方案 bsp 均值 加密策略: 1、交易中是否 允許可自動轉賬 情形上而定,不建議自動轉,方案一:鎖死某個賬戶的轉出地址,在驗證完真實信息後——系統提供轉出地址(地址為3-5),不通的加密驗證地址正確後,隨機發送到其中的一個地

Python設計模式單例模式的實現及在Tornado的應用

實例 類變量 attribute rap all wrap 線程 ++ 出現 單例模式的實現方式 將類實例綁定到類變量上 class Singleton(object): _instance = None def new(cls, *args): if not isinst

laravel5.4驗證與錯誤提示設定

1.對於互動提交資料,驗證如: #驗證 $this->validate(\request(),[ 'title' => 'required|string|min:3|max:20', 'content' => 'requ

設計模式的黃金搭檔(一對活寶):命令模式+觀察者模式

現有場景描述:現在無論是系統自帶的鍵盤還是第三方的鍵盤一般都自帶撤銷和恢復功能,你知道它們是用的什麼模式實現的嗎?它們用的是==命令模式+觀察者模式==,你答對了嗎?簡單科普一下啥是==Command模式==? Command模式:- 模式型別:行為類模式- 定義:將一個操作、一個方法呼叫、一個命令封裝成一個

【Java-POJO-設計模式】JavaEE的POJO與設計模式多型繼承的衝突

最近看《重構》談到利用OO的多型來優化 if else 和 switch 分支語句,但是我發現OO語法中的多型在使用框架的JavaEE中是無法實踐的。對此,我感到十分的疑惑,加之之前專案中有個“狀態模式”類的模組被頻繁改動的需求折磨要死,又去看了《設計模式》。《設計模式》中也是強調,使

設計模式的七個原則

描述的字句少,但不妨礙把問題給說明白了,專案當中經常遇到這些情況。 1、單一職責原則 一個類,只有一個引起它變化的原因。應該只有一個職責。每一個職責都是變化的一個軸線,如果一個類有一個以上的職責,這些職責就耦合在了一起。這會導致脆弱的設計。當一個職責發生變化時,可能會影響其它的職責。另外

微控制器晶片設計晶片新材料推動電動車快充加速發展

微控制器晶片設計界的大佬們,現在的微控制器晶片的新材料—SIC碳化矽。本文就是要講一講這個新材料對推動整個電動車的優勢。現在所有的駕駛情況條件下,電動車皆可與機遇內燃機車輛媲美,現在電動車的遠端駕駛能力大大提高,已經超越了目前達到的200至300英里。現在的市場是由於鋰電池價格下降,各地區的