TW201546638A - 用於ic設計協定的自動化功能覆蓋生成和管理的系統和方法 - Google Patents

用於ic設計協定的自動化功能覆蓋生成和管理的系統和方法 Download PDF

Info

Publication number
TW201546638A
TW201546638A TW104108422A TW104108422A TW201546638A TW 201546638 A TW201546638 A TW 201546638A TW 104108422 A TW104108422 A TW 104108422A TW 104108422 A TW104108422 A TW 104108422A TW 201546638 A TW201546638 A TW 201546638A
Authority
TW
Taiwan
Prior art keywords
coverage
design
protocol
rtl
overlay
Prior art date
Application number
TW104108422A
Other languages
English (en)
Other versions
TWI627547B (zh
Inventor
Shahid Ikram
Isam Akkawi
John Perveiler
David Asher
James Ellis
Original Assignee
Cavium Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Cavium Inc filed Critical Cavium Inc
Publication of TW201546638A publication Critical patent/TW201546638A/zh
Application granted granted Critical
Publication of TWI627547B publication Critical patent/TWI627547B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3308Design verification, e.g. functional simulation or model checking using simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • G06F30/3323Design verification, e.g. functional simulation or model checking using formal methods, e.g. equivalence checking or property checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/267Reconfiguring circuits for testing, e.g. LSSD, partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/273Tester hardware, i.e. output processing circuits
    • G06F11/2733Test interface between tester and unit under test
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

提出一種新的方案,該方案涉及支援用於IC設計協議的自動功能覆蓋生成與管理的系統和方法。所提出的方案利用IC設計協定的基於表格的高級(例如,事務級)規範,其中,狀態表格可讀且易於管理(例如,以ASCII格式),以便自動生成用於IC設計協議的功能覆蓋,包括但不限於:覆蓋點、協定轉移、和/或事務覆蓋。自動生成的功能覆蓋然後在覆蓋生成與管理過程期間經由形式驗證而被驗證並在寄存器傳輸級(RTL)被模擬。然後來自形式驗證和模擬運行的覆蓋資料被分析並被用於在基於覆蓋的閉環IC設計過程中引導和修改IC設計協議。

Description

用於IC設計協定的自動化功能覆蓋生成和管理的系統和方法
本文揭示之本發明係關於一種用於IC設計協定的自動化功能覆蓋生成和管理的系統和方法。
以隨機模擬為基礎的驗證是諸如片上系統(SOC)和/或專用積體電路(ASIC)晶片的驗證之類的積體電路(IC)設計驗證的主要手段。此類驗證的品質和完整性的關鍵指標是覆蓋度量,其可被分類為兩個主要類別:代碼覆蓋和功能覆蓋。代碼覆蓋開發寄存器傳輸級(RTL)設計的結構以自動生成IC設計的覆蓋點,並且因此確保IC設計的實現的所有部分都被隨機的刺激所執行或訪問。雖然有些RTL模擬器廠商提供內置的代碼覆蓋以及狀態機覆蓋生成工具,但是此類自動生成的覆蓋資訊不足以表示IC設計的所有功能都被執行。因此,IC設計者和驗證者幾乎總是不得不在它們的覆蓋度量的防護(armor)中添加功能覆蓋。
功能覆蓋捕獲IC設計的功能,並通過集中設計特徵代替IC設計的實現(這是代碼覆蓋的情況)來提供隨機模擬品質的正交視圖。目前,IC設計的(一個或多個)功能覆蓋模型的建立主要是人工過程,其中, 驗證者與IC設計者一起研究IC設計和工作的高級英語規範以識別重要的設計特徵。這些設計特徵然後被翻譯成覆蓋屬性、覆蓋點、和/或交叉覆蓋等,從而創建所謂的覆蓋監控器,它可以與IC設計並行地運行以在IC設計上模擬運行期間監控關鍵設計特徵的覆蓋。覆蓋分析過程然後處理由這些覆蓋監控器產生的資料以估計通過隨機模擬所實現的覆蓋。
重要設計特徵的人工識別和覆蓋監控器的創建經常面臨各種問題,包括但不限於:過時的IC設計規範,設計特徵的人工翻譯中的錯誤,以及特別是在巨大的協議覆蓋空間中的大量覆蓋點的管理。對於非限制性的示例,任何工業強度SOC協議可具有數以千計的法律定義的序列,還有更多的非法序列,這導致用於編碼功能覆蓋的兩種不希望策略:對於數千合法事務序列的每一個,人工地生成覆蓋點,或者交叉覆蓋所有狀態變數並人工地排除大量非法序列。這些策略對於不斷發展的協議和實施而言都運行得不好,而且幾乎總是導致丟失的情況。因此,需要一種改進的系統和方法,以生成用於IC設計協定的功能設計覆蓋。
相關技術的前述示例以及與此相關的限制旨在說明性的而非排他性的。在閱讀說明書以及研究附圖之後,相關技術的其它限制將變得顯而易見。
本發明的示例實施例提供了一種支援用於積體電路(IC)設計協定的自動功能覆蓋生成和管理的系統,包括:運行在主機上的規範生成引擎,所述規範生成引擎在操作中被配置來基於來自所述IC設計協定的架構師的輸入,自動地生成用於所述IC設計協議的功能覆蓋的一個或多個 規範;運行在主機上的覆蓋驗證引擎,所述覆蓋驗證引擎在操作中被配置來在形式驗證(FV)級驗證用於所述功能覆蓋的所述規範並且生成關於可達狀態的覆蓋資料;運行在主機上的覆蓋資料收集引擎,所述覆蓋資料收集引擎在操作中被配置來在寄存器-傳輸級(RTL)實施所述IC設計協議的模擬並且收集所到達的覆蓋點的覆蓋資料;運行在主機上的覆蓋資料分析引擎,所述覆蓋資料分析引擎在操作中被配置來分別基於在所述形式驗證級以及在所述RTL收集的所述覆蓋資料來分析並驗證所述IC設計協議的所述功能覆蓋的完整性。
在進一步的實施例提供了一種支援用於積體電路(IC)設計協定的自動功能覆蓋生成與管理的電腦實施的方法,包括:基於來自所述IC設計協定的架構師的輸入,自動地生成用於所述IC設計協議的功能覆蓋的一個或多個規範;在形式驗證(FV)級驗證用於所述功能覆蓋的所述規範並且生成關於可達狀態的覆蓋資料;在寄存器-傳輸級(RTL)實施所述IC設計協議的模擬並且收集所到達的覆蓋點的覆蓋資料;分別基於在所述形式驗證級以及在所述RTL收集的所述覆蓋資料來分析並驗證所述IC設計協議的所述功能覆蓋的完整性。
在更進一步的實施例提供了一種具有存儲在其上的軟體指令的非瞬態存儲介質,所述軟體指令在被執行時使得系統:基於來自IC設計協議的架構師的輸入,自動地生成用於所述IC設計協議的功能覆蓋的一個或多個規範;在形式驗證級驗證用於所述功能覆蓋的所述規範並且生成關於可達狀態的覆蓋資料;在寄存器-傳輸級(RTL)實施所述IC設計協議的模擬並且收集所到達的覆蓋點的覆蓋資料;分別基於在所述形式驗證級 以及在所述RTL收集的所述覆蓋資料來分析並驗證所述IC設計協議的所述功能覆蓋的完整性。
102‧‧‧規範生成引擎
104‧‧‧覆蓋驗證引擎
106‧‧‧覆蓋資料收集引擎
108‧‧‧覆蓋資料分析引擎
202-208‧‧‧方塊
與附圖一起閱讀時,從隨後詳細說明中將最佳地理解本發明的諸多方面。應當指出:按照工業上的標準實踐,各個特徵未按比例繪製。實際上,為了討論清楚起見,各個特徵的維度可以任意增加或減少。
第一圖示出了支援用於IC設計協定的自動功能覆蓋生成與管理的系統圖的示例。
第二圖描述了支援用於IC設計協定的自動功能覆蓋生成與管理的處理示例的流程圖。
第三圖描述了經由OCI連接而連接在一起的作為單個邏輯多核處理器的四個SOC的示例。
第四A圖與第四B圖分別繪出了由IC設計協議提供的本地(home)和遠端表格的示例。
第五A圖繪出了在OCI下的樣本本地事務的表格示例,並且第五B圖繪出了捕獲第五A圖中示出的OCI事務的一個可能SVA序列的示例。
第六圖繪出了用於本地表格協定的覆蓋監控器的實現示例。
以下公開內容提供許多不同實施例或示例,用於實施主題的不同特徵。在下面繪出組件和佈置的特定示例以簡化本公開內容。當然,這些僅僅是示例並且不旨在限制。此外,本公開內容可以在各個示例中重 複參考標號和/或字母。此類重複是為了簡潔和清楚的目的,其本身不指示所討論的各個實施例和/或配置之間的關係。
提出了一種新的方法,其預期了支援用於IC設計協定的自動功能覆蓋生成與管理的系統和方法。所提出的方法利用了IC設計協定的基於表格的高級(例如,事務級)規範,其中,狀態表格可讀且易於管理(例如,以ASCII格式),以便自動生成用於IC設計協議的功能覆蓋,其包括但不限於:覆蓋點、協定轉移、和/或事務覆蓋。自動生成的功能覆蓋然後在覆蓋生成與管理過程期間經由形式驗證而被驗證並在寄存器傳輸級(RTL)被模擬。然後來自形式驗證和模擬運行的覆蓋資料被分析並被用於在基於覆蓋的閉環IC設計過程中引導和修改IC設計協議。
所提出的方法通過分析來合併並驗證IC設計中的IC設計協議變化,其然後變成具有很少干預的立刻回歸的一部分,從而IC設計者和驗證者可以專注於在架構級和RTL處在IC設計中的覆蓋漏洞和錯誤,而不是擔心在架構級對於驗證給協議帶來變化。通過快速收斂於IC設計中唯一真正的失敗/失誤並且去除任何虛假錯誤/失敗/失誤,所提出的方法實現快速設計驗證閉合。此外,所提議的方法有助於產生更有趣的功能覆蓋情況(例如跨越本地和遠端有限狀態機(FSM)二者的事件交叉覆蓋、所有合法轉移的轉移覆蓋、以及所有合法事務的事務覆蓋)作為合法轉移的序列。通過機器自動地生成覆蓋點和/或絡,所提出的方法降低了人為差錯,顯著降低了編碼所需的時間,並且能夠迅速地將變化併入到IC設計協議中,從而實現在記錄時間中的流片(tape-out)。
正如下文所提及的,IC設計協定(或者簡稱為協定)繪出了 IC設計在各個級別的細節。具體地,協議描述了在IC設計專案中的各種元件、這些元件之間的關係、連接以及交互、這些元件與IC晶片之外的外部元件之間的介面。在一些實施例中,正如下面所討論的那樣,協議包括在架構級用於協議的形式驗證的一個或多個狀態表格或模型和/或在微架構(形式驗證)級或RTL用於協議的實現的合成包。
第一圖示出了支援用於IC設計協定的自動功能覆蓋生成與管理的系統圖的示例。雖然該圖把組件繪出為在功能上是分開的,但是這樣的描繪僅用於說明性目的。易見的是,在圖中描繪的元件可以任意地組合或劃分成單獨的軟體、固件和/或硬體元件。此外,還易見的是,這樣的組件,不管它們是如何組合或劃分,都可以在同一主機或多個主機上執行,並且其中所述多個主機可以通過一個或多個網路連接。
在第一圖的示例中,系統100至少包括規範生成引擎102、覆蓋驗證引擎104、覆蓋資料收集引擎106和覆蓋資料分析引擎108。正如在此所使用的,術語“引擎”是指軟體、固件、硬體或用以實現目的其他元件。引擎通常將包括計算單元/裝置/主機和存儲在存儲單元例如非易失性記憶體(也稱為次要存放裝置)中用於實施一個或多個過程的軟體指令。當軟體指令被執行時,該軟體指令的至少一個子集由計算單元載入記憶體(也稱為主記憶體)中,計算單元變成用於實施所述過程的專用用途。該過程還可以是至少部分地體現在向其中載入和/或執行電腦程式代碼的計算單元中,使得計算單元變成用於實施所述過程的專用計算單元。當在通用計算單元上來實現時,電腦程式程式碼片段對計算單元進行配置,以創建專用邏輯電路。可選地,該過程可以至少部分地體現在用於執行所述過程的專 用積體電路形式的數位訊號處理器中。
在第一圖的示例中,每個引擎可在一個或多個主機設備(主機)上運行。在此,主機可以是計算設備、通信設備、存放裝置、或者能夠運行軟體元件的任何電子設備。對於非限制性示例,計算設備可以是但不限於膝上型電腦、桌上型電腦、平板PC、或者伺服器機器。存儲裝置可以是但不限於硬碟驅動器、快閃記憶體驅動器、或者任何可擕式存儲裝置。通信設備可以是但不限於行動電話。
在第一圖的示例中,規範生成引擎(或規範生成器)102被配置來接受來自IC設計協議架構師的輸入,並在ASCII格式的狀態表格中自動地生成用於IC設計功能覆蓋的一個或多個規範。這些基於表格的規範可用於各種目的,包括但不限於:形式驗證、RTL模擬、以及用於覆蓋管理的覆蓋絡(coverage collaterals)。雖然基於表格的規範已經存在了很長一段時間,並且在IC設計過程的各個階段已被使用,但是它們通常被編寫用於與想到的一個信號目標/任務一起被使用的目的,並且它們通常包含大量隱藏的狀態資訊,比如轉移狀態,這需要IC設計團隊架構師、實施者和驗證者之間充滿信心(leap of faith)。相對來說,通過規範生成引擎102生成的基於表格的規範不具有任何隱藏的狀態或假設、冗餘、或者死端(dead-end),並且它們在IC設計流程的所有階段能夠被所有有關各方理解、消費、以及管理,並且是可讀的。
在一些實施例中,規範生成引擎102通過首先選擇如下專案中的一個或多個來生成用於規範的狀態表格:
‧IC設計協定中能夠引起狀態之間的轉移的所有命令,其中此類命令 可以是但不限於命令、回應、探測等。
‧狀態表格,其最初被填充為所有都是“空閒”狀態。
‧轉移表格,涵蓋所有有效轉移“命令”和當前“狀態”組合,以及導致的下一個“狀態”。
規範生成引擎102然後反覆運算遍歷所有命令和狀態表格,以產生下一個/新的“狀態”或序列。如果新的“狀態”尚未在狀態表格中,則規範生成引擎102將“狀態”添加到狀態表格。在一些實施例中,規範生成引擎102將命令遞迴地應用到在處理期間生成的所有新的“狀態”。生成的表格應包括多個狀態序列,其中在每個序列中的狀態可以從相同序列中的之前狀態經由一個或多個命令而被到達。在一些實施例中,當生成整個狀態表格時,規範生成引擎102生成並輸出各種格式的基於表的狀態規範。對於非限制性示例,如下所述,規範可以是在架構級被覆蓋驗證引擎104使用於協定的形式驗證的模型的形式,和/或可以是包括由在RTL處的覆蓋資料收集引擎106用於模擬的狀態轉移的諸如系統Verilog(SV)包之類的可合成包的形式。
在第一圖的示例中,覆蓋驗證引擎104被配置來驗證:由規範生成引擎102所生成的規範的狀態表格中的所有狀態、轉移以及序列均可達,例如,在狀態表格中的每個序列中的狀態可以從相同序列中的一個先前狀態經由一個或多個轉移命令來到達。在一些實施例中,覆蓋驗證引擎104根據也是由規範生成引擎102生成的形式驗證(FV)模型來執行驗證過程,其中,FV模型是形式可驗證檔集,其作為IC設計協定中的節點(晶片)的儀器、一個或多個角色/服務表格、範本的組合物而被生成。
在一些實施例中,覆蓋驗證引擎104被配置來進一步採用在由規範生成引擎102自動生成的系統Verilog斷言(SVA)規範中指定的覆蓋屬性作為其除了FV模型之外的另一輸入。這裡,SVA是IEEE標準和語言,其用以聲明的方式描述所述IC設計協定的屬性並且有能力被使用在形式驗證以及基於模擬的環境中使用。作為它的輸出,覆蓋驗證引擎104生成用於IC設計協定的狀態可達清單,描述在基於表格的規範中針對IC設計的功能覆蓋而言什麼狀態子集在架構級別是可達的。在針對功能覆蓋的規範中任何不可達狀態必須要由IC設計協議的架構師進行驗證,因為它是IC設計協定中的潛在錯誤或者被規範生成引擎102缺失,從而未能識別的所有狀態序列以生成用於IC設計的完整功能覆蓋。
在第一圖的示例中,覆蓋資料收集引擎106被配置來在RTL處實施IC設計協議的模擬,並且收集達到的覆蓋點的組合/清單作為它的輸出,所述覆蓋點是在模擬期間達到的抽樣點。在此,由規範生成引擎102針對IC設計協定中數以千計合法定義的和/或非法的序列的每一個而自動生成覆蓋點,其中,覆蓋點被用來建模IC設計協定中的狀態覆蓋、轉移覆蓋、事務/序列覆蓋以及交叉覆蓋中的一個或多個。在一些實施例中,覆蓋點由規範生成引擎102經由參考模型(基於例如系統Verilog覆蓋群組)來建模和提供。由於RTL是IC設計的實際實現,所以這些覆蓋點將針對IC設計的完整性和正確性而被完全地覆蓋。這些自動生成的覆蓋點共用與自動生成的FV模型相同的益處,因為它們降低了人為錯誤,從而大大減少編碼所需的時間,並且能夠在IC設計流程的各個階段將任何更改迅速地併入和傳播到協議。這樣自動生成覆蓋點消除了對於人工生成覆蓋點以及人工排除非法序 列的需要。此外,自動生成的覆蓋點有助於生成更有趣的功能覆蓋點,其包括但不限於:跨越本地和遠端節點的事件交叉覆蓋,所有合法轉移的轉移覆蓋,以及作為狀態之間的轉移序列的所有合法事務的事務覆蓋。
在一些實施例中,覆蓋資料收集引擎106進一步採用帶注解的SV包作為它的輸入,其注解有由規範生成引擎102從規範表格自動生成的覆蓋屬性,並且被用來在模擬期間將RTL覆蓋資料沖刷到文字檔。在這裡,SV包包括用於晶片的RTL實現的狀態轉移,其在參考規範中使用相同的基礎協議表示用於形式驗證,以進一步減少在RTL實現期間引入新錯誤的機率。SV包在架構級捕獲在參考規範中的每個高級別元件中的門和電晶體之中的行為、功能、以及交互。從晶片設計的RTL實現可以通過覆蓋資料收集引擎106從SV包直接合成的意義上來說,SV包是可合成的(相對而言,對於非限制性示例,基於類的規範或模型首先必須作為電腦程式被運行)。
在一些實施例中,覆蓋資料分析引擎108被配置來基於分別由覆蓋驗證引擎104在形式驗證級以及由覆蓋資料收集引擎106在RTL模擬處生成的覆蓋資料來分析IC設計協定的覆蓋。這樣的分析有助於IC設計協議的功能覆蓋的驗證過程的收斂。具體而言,覆蓋資料分析引擎108比較在形式驗證級和RTL模擬處收集的覆蓋資料並且基於如下四種狀況相應地採取行動:
‧如果事務在形式驗證和RTL模擬級均是可達的,則覆蓋資料分析引擎108確認由規範生成引擎生成的功能覆蓋正確。
‧如果事務在FV模型下在形式驗證級可達但在RTL模擬級不可達,則它代表在所生成的覆蓋點中的孔或者在IC設計協議的RTL實現處的錯誤。在 這種情形下,覆蓋資料分析引擎108被配置來生成用於跟蹤問題的引導,並向覆蓋資料收集引擎106提供該引導以用於修改在RTL處的模擬。
‧如果事務在FV模型下在形式驗證級不可達但在RTL模擬級可達,則那代表在形式驗證級處在FV模型中或者在IC設計協定的RTL實現中的錯誤。在這種情形下,覆蓋資料分析引擎108被配置來生成引導並向覆蓋驗證引擎104提供該引導以修改用於形式驗證的模擬。
‧如果事務在形式驗證級和RTL模擬級均不可達,那麼它是IC設計的功能覆蓋的規範中的錯誤。在這種情形下,覆蓋資料分析引擎108被配置來向規範生成引擎102提供回饋/引導以修改規範。
在一些實施例中,作為覆蓋分析中的前提,覆蓋資料分析引擎108需要收集在形式驗證級和RTL處收集所有覆蓋資料以包括某種類型的回注(back-annotation),以顯示所收集的覆蓋資料屬於同一源(即,同一IC設計的功能覆蓋)。因為覆蓋驗證引擎104和覆蓋資料收集引擎106均基於由規範生成引擎102生成的功能覆蓋的相同規範來生成它們的覆蓋資料,所以根據如上所述的方法滿足此前提。
第二圖繪出了支援用於IC設計協定的自動功能覆蓋生成與管理的處理示例的流程圖。雖然此圖為了說明的目的繪出了特定順序的功能步驟,但是該過程不限於任何特定順序或佈局的步驟。相關技術領域的技術人員將理解,在此圖中描繪的各種步驟可以以各種方式被省略、重新佈置、合併和/或適配。
在第二圖的示例中,流程圖200開始於方塊202,在那裡,基於來自積體電路(IC)設計協定的架構師的輸入自動地生成用於積體電路 (IC)設計協議的功能覆蓋的一個或多個規範。流程圖200繼續到方塊204,在那裡,在形式驗證(FV)級驗證用於功能覆蓋的規範並且生成關於可達狀態的覆蓋資料。流程圖200繼續到方塊206,在那裡,在RTL處實施IC設計協議的模擬並且收集被到達的覆蓋點的覆蓋資料。流程圖200在方塊208結束,在那裡,分別基於在形式驗證級以及在RTL收集的覆蓋資料來分析並驗證IC設計協議的功能覆蓋的完整性。
作為非限制性示例,上述自動功能覆蓋生成與管理過程可以被應用到多晶片互連協定如OCTEON一致互連(OCI),該協定是基於目錄的快取記憶體一致性協定的變型。第三圖繪出了經由之間的OCI連接而連接在一起作為單個邏輯多核處理器的四個OCTEON III SOC(插槽0,...,插槽3)的示例。此類基於OCI的架構實現了跨越內核、記憶體、網路、I/O、以及設計的輔助處理器的一致性,並且消除了設計中不必要的記憶體副本。
在一些實施例中,快取記憶體一致性協議下的頂級SOC的每個位址被映射到唯一插槽,如第三圖中所示,其代表地址的本地節點。由於在多個節點之間共用位址空間,每個代表一個晶片(例如,SOC),所以任何節點可以請求來自位址空間中的任何資料的資料或所有權。如果資料落入請求者自己的域,這將是一個本地請求,否則這將是一個遠端請求。如果一個本地節點需要目前由遠端節點保持的資料,則它會向遠端節點發出轉發請求。在服務方面,快取記憶體一致性協定提供多個服務,一些由遠端節點提供,一些由本地節點提供。
在一些實施例中,根據諸如OCI之類的快取記憶體一致性協定由規範生成引擎102生成的規範中的每個表格包含一行內容,該行內容針 對有效狀態與輸入的每個組合,提供下一狀態應該是什麼以及向每個節點發出的協議命令是什麼(也被稱為輸出)。對於通過第四圖中的示例所描繪的本地表格,在該行中的每個狀態包括“Cmd”,它代表被處理的請求,節點的快取記憶體目錄的狀態(H為本地),以及在協定目錄中的其他節點(N1,N2,N3)的每一個的狀態。在第四B圖中的示例中描繪的遠端表格具有相似的當前/下一狀態,但是只有一個目錄狀態“St”,這是它的快取記憶體目錄的狀態。在這裡,輸出包括向本地節點發送的命令(請求或回應)以及針對還可能向其他遠端節點發送的可能回應的列。
在一些實施例中,除了用於合法狀態和單步轉移的覆蓋點之外,規範生成引擎102被配置來生成用於所有合法序列/轉移的覆蓋點。IC設計協定可以包括穩定狀態以及暫時狀態,其中,穩定狀態不具有處理中的任何未決命令,而暫時狀態具有未決命令。穩定狀態集合代表表格中事務的可能的開始和結束狀態。暫時狀態代表事務的中間狀態。事務通常包括開始穩定狀態和結束穩定狀態以及在中間有一些可能的暫時狀態。事務可以沒有暫時狀態,例如在位址的緩存命中的情況下。
從演算法上講,規範生成引擎102被配置來捕獲從“Cmd”經過“無”導向到“無”的所有路徑,如第四A圖和第四B圖中所示,即,從請求到達(或變成活躍)到其存在/退休。儘管在沒有任何環路的有向圖中找到兩個節點之間的所有路徑是一個NP完全問題,但是規範生成引擎102採用基於獨立命令群組的協議圖,並且可以被劃分成更小的圖,從而顯著地減少構造這些路徑的總時間。第五A圖繪出了在OCI下的樣本本地事務的表格示例,其具有帶有一個中間轉移的從“無”到“無”的“Cmd”。在 初始狀態下,遠端節點N1具有針對給定位址的獨佔(E)狀態。在本地處的內核請求共用這個資料(OCI_LD)。協定將轉發請求(FWDH)向遠端節點N1發送。然而,在同一時刻,遠端節點處於驅逐此位址的過程中。因此,遠端節點用“我對於這個位址無效”(REM_INV)消息來應答。由於OCI是亂序協議,REM_INV可能在犧牲品資料(VDATA)到達本地之前到達本地。同時,REM_INV會把NI狀態置於此資料的本地目錄中的暫時狀態(S->I)中。這兩個消息可以以相反的順序被接收,但是,那將是另一個事務。
雖然從IC設計協定生成的合法事務的總數可以是數以千計,但是已經觀察到,大多數事務共用相似的序列範本。因此,規範生成引擎102被配置來從事務表格中識別所有的唯一序列,並為這些唯一序列的每一個創建參數化SVA序列。然後針對原始協定表格中所繪出的所有情況將參數化SVA序列產生實體。第五B圖繪出了捕獲第五A圖中示出的OCI事務的一個可能SVA序列的示例。在這裡,通用範本觀察四個狀態並且跟蹤三個狀態:1)針對OCI處的地址的未決命令;2)在本地節點處的位址的狀態;和3)在本地處記錄的遠端節點的狀態。它還觀察給定位址的輸入和輸出通道。如第五B圖的示例所示,SVA序列homeTrans_111捕獲從本地內核請求所得的任何協定序列,同時資料在遠端節點N1處是獨佔(E)的。規範生成引擎102被配置來識別這些序列中的兩種類型的狀態:等候狀態和轉移狀態。等候狀態建模針對要發生的事情的任意等待,而轉移狀態代表在一個時鐘週期內應該發生的協定表格行轉移。操作符“[*1:$]”讓覆蓋監控元件(或覆蓋監控器)停留在等候狀態--只要下一個狀態轉移尚未合格。
一旦轉移發生,覆蓋監控器需要一個週期轉移到下一個等候狀態。最後, cover_homeTrans_OCI_LD創建覆蓋監控器的實例,其在觀察來自本地內核的OCI_LD請求後,開始跟隨序列homt_trans_111。
在一些實施例中,覆蓋驗證引擎104針對本地節點和遠端節點處所有可能的事務生成覆蓋監控器,並相對於FV模型來運行它們。覆蓋監控器的總數可以非常大以用於形式驗證,但每個覆蓋監控器被證明是個體可達的。在具有形式驗證而不存在狀態空間爆炸的情況下,此觀察為覆蓋驗證引擎104提供足夠的並行以運行大多數覆蓋監控器,從而確定所有覆蓋監控器它們是否可達與否。
在一些實施例中,覆蓋資料收集引擎106使用系統Verilog覆蓋群組構造來捕獲諸如覆蓋群組、覆蓋點以及交叉覆蓋之類的覆蓋資訊,以便如上所述針對使用在模擬環境中的參考模型建模覆蓋監控器。在這裡,系統Verilog提供構造以將轉移建模為覆蓋箱(bin)。狀態轉移可以被建模為A=>B,在此A和B可以是級聯在一起的信號束。而且,還有可用於連續的(A[*5]=>B)以及非連續的(A[=5]=>B)轉移的操作符。這些構造和操作符提供了足夠的語言支援,以將使用在形式模型中的SVA屬性克隆為參考模型中定義的覆蓋群組內的覆蓋箱。第六圖繪出了用於本地表格協定的覆蓋監控器的實現示例。覆蓋監控器被定義為系統Verilog覆蓋群組構造,並且是定義驗證環境中的位址協議行為的類的一部分。Request_type覆蓋點用於將對協議的各個內核請求進行歸組。轉移被建模為代表協定狀態的信號聚集。實際的轉移是自動生成的(檔“HOME_TRANS_COV.SV”)。有數以千計的這些轉移並且用於運行示例情況的樣本示出在第四圖的底部,其中SDELAY是系統參數,其定義覆蓋監控器在一個狀態中可以等待的 任意時間長度並且其取決於實現。一旦被創建,覆蓋箱HomeTrans_OCI_LD_1將為一個位址觸發。如果遠端節點在此位址上具有獨佔狀態,並且從本地的內核發出OCI_LD,則它將觀測為遠端節點所發出的轉發消息,然後等待響應出現。此行為與第五A圖中的序列以及第五B圖中的cover_homeTrans_OCI_LD_1基本上相同。
上面所討論的SVA和系統Verilog覆蓋群組構造繪出了在抽象級的覆蓋模型。由於IC設計協議的RTL實現有更多的細節,因此它必須在深度上被覆蓋,因為這是最重要的事情。如上所提及,規範生成引擎102從規範的表格中自動地生成SV包,並且以注解增強所述包,使得每個表格轉移具有唯一識別標籤。在每個RTL模擬期間,覆蓋資料收集引擎106為每個執行的轉移將唯一識別標籤推入特殊設備緩衝器(其中,這些緩衝區未被合成化)。當協定週期完成時,覆蓋資料收集引擎106將其所對應的序列記錄為已發生。在每次模擬結束時,覆蓋資料收集引擎106將這些序列計數轉儲成文字檔。在一些實施例中,覆蓋資料收集引擎106基於文字檔運行腳本,著眼於轉移標籤和它們的序列,將其與從IC設計協議所生成(並在參考模型和FV模型覆蓋生成中使用的)序列表格進行比較,並累積覆蓋資料。腳本的輸出提供了運行中的覆蓋的序列上的持續更新。此外,那些僅僅因為刺激的限制而不可能的序列被過濾,以使覆蓋資料收集引擎106可以確定模擬的真實範圍。
正如對於電腦領域的本領域技術人員而言將是易見的,一個實施例可以使用傳統通用或根據本公開內容的教導程式設計的專用數位電腦或微處理器(一個或多個)來實現。正如對於軟體領域的本領域技術人 員而言將是易見的,適當的軟體編碼可以容易地由本領域程式師基於本公開內容來準備。正如對於本領域技術人員而言將是易見的,本發明也可以通過積體電路的準備或通過互連常規元件電路的適當網路來實現。
一個實施例包括電腦程式產品,它是一種機器可讀介質(媒介),其具有存儲在其上/中的指令,其可用於程式設計一個或多個主機以執行本文中所呈現的任何特徵。機器可讀介質可以包括但不限於:一種或多種類型的盤,包括軟碟、光碟、DVD、CD-ROM、微驅動器、以及磁光碟、ROM、RAM、EPROM、EEPROM、DRAM、VRAM、快閃記憶體設備、磁或光卡、奈米系統(包括分子記憶體IC)、或適合於存儲指令和/或資料的任何類型的媒體或裝置。存儲在電腦可讀介質(媒介)中的任一項,本發明包括軟體,用於控制通用/專用電腦或微處理器二者的硬體,以及用於利用本發明結果使電腦或微處理器能夠與人類觀察者或其他機構進行交互。這樣的軟體可以包括但不限於:裝置驅動程式、作業系統、執行環境/容器和應用。
為了說明和描述的目的,已經提供了所要求保護主題的各個實施例的前述描述。它並非意在窮舉或將所要求的主題限制為所公開的精確形式。許多修改和變化對於本領域技術人員而言將是顯而易見。特別地,當概念“元件”被使用在上述的系統和方法的實施例中時,易見的是:這樣的概念可以與等效的概念互換使用,如類、方法、類型、介面、模組、物件模型、以及其它合適的概念。選擇並描述實施例以便最好地描述本發明及其實際應用,由此使得相關技術領域其它技術人員能夠理解所要求保護的主題,各種實施例的原理、各個實施例、以及適合於預期的特定用途 的各種修改。
202-208‧‧‧方塊

Claims (22)

  1. 一種支援用於積體電路(IC)設計協定的自動功能覆蓋生成和管理的系統,包括:運行在主機上的規範生成引擎,所述規範生成引擎在操作中被配置來基於來自所述IC設計協定的架構師的輸入,自動地生成用於所述IC設計協議的功能覆蓋的一個或多個規範;運行在主機上的覆蓋驗證引擎,所述覆蓋驗證引擎在操作中被配置來在形式驗證(FV)級驗證用於所述功能覆蓋的所述規範並且生成關於可達狀態的覆蓋資料;運行在主機上的覆蓋資料收集引擎,所述覆蓋資料收集引擎在操作中被配置來在寄存器-傳輸級(RTL)實施所述IC設計協議的模擬並且收集所到達的覆蓋點的覆蓋資料;運行在主機上的覆蓋資料分析引擎,所述覆蓋資料分析引擎在操作中被配置來分別基於在所述形式驗證級以及在所述RTL收集的所述覆蓋資料來分析並驗證所述IC設計協議的所述功能覆蓋的完整性。
  2. 根據申請專利範圍第1項所述的系統,其中:所述IC設計協定是基於目錄的快取記憶體一致性協定,所述基於目錄的快取記憶體一致性協定經由多個片上系統(SOC)之間的連接來將所述SOC連接為單一多核處理器。
  3. 根據申請專利範圍第1項所述的系統,其中:所述規範中的每一個規範包括一個或多個狀態表格,所述狀態表格包括與所述IC設計協議的實現相關聯的、在IC設計處理的各個階段中 將被共用的資訊。
  4. 根據申請專利範圍第3項所述的系統,其中:所述狀態表格中的每一個狀態表格是可解析ASCII格式,而不具有任何隱藏狀態、假設、冗餘或死端。
  5. 根據申請專利範圍第1項所述的系統,其中:所述規範生成引擎被配置來自動地生成用於所述IC設計協議的形式驗證的FV模型,其中,所述FV模型包括形式可驗證檔集,所述形式可驗證檔集作為一個或多個角色/服務表格、範本以及所述IC設計協定中的晶片的儀器的組合物而被生成。
  6. 根據申請專利範圍第1項所述的系統,其中:所述規範生成引擎被配置為自動指定在系統Verilog斷言(SVA)規範中的所述IC設計協定的覆蓋屬性,所述覆蓋屬性以聲明方式描述所述IC設計協定的屬性並且有能力在形式驗證以及模擬兩者中被使用。
  7. 根據申請專利範圍第1項所述的系統,其中:所述規範生成引擎被配置來自動地生成用於所述IC設計協議中的合法定義的和/或非法的序列的收集點,其中,所述覆蓋點被用來建模用於所述IC設計協定的狀態覆蓋、轉移覆蓋、事務/序列覆蓋以及交叉覆蓋中的一個或多個。
  8. 根據申請專利範圍第1項所述的系統,其中:所述規範生成引擎被配置來自動地生成帶注解的可合成包,所述帶注解的可合成包注解有來自用於所述IC設計協議的RTL實現的所述規範的覆蓋屬性。
  9. 根據申請專利範圍第1項所述的系統,其中:所述覆蓋資料分析引擎被配置來比較在所述形式驗證級和所述RTL模擬處收集的所述覆蓋資料,並提供引導以修改在所述RTL處的所述模擬。
  10. 根據申請專利範圍第1項所述的系統,其中:所述覆蓋資料分析引擎被配置來比較在所述形式驗證級和所述RTL模擬處收集的所述覆蓋資料,並提供回饋以修改用於形式驗證的FV模型。
  11. 根據申請專利範圍第1項所述的系統,包括:所述覆蓋資料分析引擎被配置來比較在所述形式驗證級和所述RTL模擬處收集的所述覆蓋資料,並提供回饋以修改用於所述IC設計協議的所述功能覆蓋的所述規範。
  12. 一種支援用於積體電路(IC)設計協定的自動功能覆蓋生成與管理的電腦實施的方法,包括:基於來自所述IC設計協定的架構師的輸入,自動地生成用於所述IC設計協議的功能覆蓋的一個或多個規範;在形式驗證(FV)級驗證用於所述功能覆蓋的所述規範並且生成關於可達狀態的覆蓋資料;在寄存器-傳輸級(RTL)實施所述IC設計協議的模擬並且收集所到達的覆蓋點的覆蓋資料;分別基於在所述形式驗證級以及在所述RTL收集的所述覆蓋資料來分析並驗證所述IC設計協議的所述功能覆蓋的完整性。
  13. 根據申請專利範圍第12項所述的方法,進一步包括:將所述IC設計協定實施為基於目錄的快取記憶體一致性協定,所述基於目錄的快取記憶體一致性協定經由多個片上系統(SOC)之間的連接來將所述SOC連接為單一多核處理器。
  14. 根據申請專利範圍第12項所述的方法,進一步包括:將一個或多個狀態表格包括在所述規範的每一個規範中,其中所述表格中的每一個表格包括與所述IC設計協議的實現相關聯的、在IC設計處理的各個階段中將被共用的資訊。
  15. 根據申請專利範圍第12項所述的方法,其中:自動地生成用於所述IC設計協議的形式驗證的FV模型,其中,所述FV模型包括形式可驗證檔集,所述形式可驗證檔集作為一個或多個角色/服務表格、範本以及所述IC設計協定中的晶片的儀器的組合物而被生成。
  16. 根據申請專利範圍第12項所述的方法,進一步包括:自動地指定在系統Verilog斷言(SVA)規範中的所述IC設計協定的覆蓋屬性,所述覆蓋屬性以聲明方式描述所述IC設計協定的屬性並且有能力在形式驗證以及模擬兩者中被使用。
  17. 根據申請專利範圍第12項所述的方法,進一步包括:自動地生成用於所述IC設計協議中的合法定義的和/或非法的序列的收集點,其中所述覆蓋點被用來建模用於所述IC設計協定的狀態覆蓋、轉移覆蓋、事務/序列覆蓋以及交叉覆蓋中的一個或多個。
  18. 根據申請專利範圍第12項所述的方法,進一步包括:自動地生成帶注解的可合成包,所述帶注解的可合成包注解有來自用 於所述IC設計協議的RTL實現的所述規範的覆蓋屬性。
  19. 根據申請專利範圍第12項所述的方法,進一步包括:比較在所述形式驗證級和所述RTL模擬處收集的所述覆蓋資料,並提供引導以修改在所述RTL處的模擬。
  20. 根據申請專利範圍第12項所述的方法,進一步包括:比較在所述形式驗證級和所述RTL模擬處收集的所述覆蓋資料,並提供回饋以修改用於形式驗證的FV模型。
  21. 根據申請專利範圍第12項所述的方法,進一步包括:比較在所述形式驗證級和所述RTL模擬處收集的所述覆蓋資料,並提供回饋以修改用於所述IC設計協議的所述功能覆蓋的所述規範。
  22. 一種具有存儲在其上的軟體指令的非瞬態存儲介質,所述軟體指令在被執行時使得系統:基於來自IC設計協議的架構師的輸入,自動地生成用於所述IC設計協議的功能覆蓋的一個或多個規範;在形式驗證級驗證用於所述功能覆蓋的所述規範並且生成關於可達狀態的覆蓋資料;在寄存器-傳輸級(RTL)實施所述IC設計協議的模擬並且收集所到達的覆蓋點的覆蓋資料;分別基於在所述形式驗證級以及在所述RTL收集的所述覆蓋資料來分析並驗證所述IC設計協議的所述功能覆蓋的完整性。
TW104108422A 2014-04-22 2015-03-17 用於ic設計協定的自動化功能覆蓋生成和管理的系統和方法 TWI627547B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201461982695P 2014-04-22 2014-04-22
US61/982,695 2014-04-22
US14/288,121 US9355206B2 (en) 2014-01-09 2014-05-27 System and method for automated functional coverage generation and management for IC design protocols
US14/288,121 2014-05-27

Publications (2)

Publication Number Publication Date
TW201546638A true TW201546638A (zh) 2015-12-16
TWI627547B TWI627547B (zh) 2018-06-21

Family

ID=54322219

Family Applications (1)

Application Number Title Priority Date Filing Date
TW104108422A TWI627547B (zh) 2014-04-22 2015-03-17 用於ic設計協定的自動化功能覆蓋生成和管理的系統和方法

Country Status (2)

Country Link
US (1) US9355206B2 (zh)
TW (1) TWI627547B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132960A (zh) * 2017-06-09 2018-06-08 上海倚韦电子科技有限公司 集成电路设计资料库管理系统

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703909B2 (en) * 2014-12-16 2017-07-11 International Business Machines Corporation Verification environments utilizing hardware description languages
US10002218B2 (en) * 2015-03-12 2018-06-19 Cavium, Inc. Verification of a multichip coherence protocol
US10275245B2 (en) * 2016-03-04 2019-04-30 Montana Systems Inc. Event-driven design simulation
KR102545171B1 (ko) 2016-10-12 2023-06-19 삼성전자주식회사 컴퓨팅 시스템 및 컴퓨팅 시스템에서 회로 설계에 대한 검증을 수행하는 방법
DE102017004348A1 (de) * 2017-05-08 2018-11-08 Gerhard Schilling Verfahren zur Computer gestützten, automatisierten Überprüfung von Software-Anforderungen
US10657307B1 (en) * 2017-06-29 2020-05-19 Synopsys, Inc. Using runtime information from solvers to measure quality of formal verification
US10521547B2 (en) * 2017-10-20 2019-12-31 Mentor Graphics Corporation Covergroup network analysis
US10572115B2 (en) * 2018-01-31 2020-02-25 Mellanox Technologies Ltd. Systems and methods for tracking progress of design of a semiconductor device
US10839132B2 (en) 2019-02-19 2020-11-17 International Business Machines Corporation Automatic cover point generation based on register transfer level analysis
US11269644B1 (en) 2019-07-29 2022-03-08 Marvell Asia Pte, Ltd. System and method for implementing strong load ordering in a processor using a circular ordering ring
US10970442B1 (en) * 2019-10-24 2021-04-06 SK Hynix Inc. Method of debugging hardware and firmware of data storage
US11055458B1 (en) * 2020-06-11 2021-07-06 Xilinx, Inc. Functional coverage of designs using transition bins and cross coverage
CN113158607B (zh) * 2021-04-20 2023-09-29 四川微巨芯科技有限公司 SystemVerilog覆盖集生成方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6975976B1 (en) * 2000-03-20 2005-12-13 Nec Corporation Property specific testbench generation framework for circuit design validation by guided simulation
US7320090B2 (en) * 2004-06-09 2008-01-15 International Business Machines Corporation Methods, systems, and media for generating a regression suite database

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108132960A (zh) * 2017-06-09 2018-06-08 上海倚韦电子科技有限公司 集成电路设计资料库管理系统

Also Published As

Publication number Publication date
TWI627547B (zh) 2018-06-21
US9355206B2 (en) 2016-05-31
US20150302133A1 (en) 2015-10-22

Similar Documents

Publication Publication Date Title
TWI627547B (zh) 用於ic設計協定的自動化功能覆蓋生成和管理的系統和方法
US9589089B2 (en) Automating system on a chip customized design integration, specification, and verification through a single, integrated service
US10002218B2 (en) Verification of a multichip coherence protocol
US9990458B2 (en) Generic design rule checking (DRC) test case extraction
US9058463B1 (en) Systems and methods for specifying. modeling, implementing and verifying IC design protocols
JP6387182B2 (ja) 情報処理方法、装置及びコンピュータ記憶媒体
US8875064B2 (en) Automated design rule checking (DRC) test case generation
TWI266216B (en) Design verification using formal techniques
US10009216B2 (en) Repeat execution of root cause analysis logic through run-time discovered topology pattern maps
CN113255258B (zh) 逻辑综合方法、装置、电子设备及存储介质
US8762907B2 (en) Hierarchical equivalence checking and efficient handling of equivalence checks when engineering change orders are in an unsharable register transfer level
US20150234978A1 (en) Cell Internal Defect Diagnosis
US11675009B2 (en) Converting formal verification testbench drivers with nondeterministic inputs to simulation monitors
KR101334806B1 (ko) 테스트 케이스 자동 생성 시스템에서 테스트 케이스를 구성하는 입력값의 집합을 자동으로 산출하는 방법
US9218273B2 (en) Automatic generation of a resource reconfiguring test
US11132286B1 (en) Dynamic reordering of test case execution
US10885243B1 (en) Logic partition reporting for integrated circuit design
Bawadekji et al. TLM protocol compliance checking at the electronic system level
JP6146224B2 (ja) 判定方法、判定プログラム、および判定装置
US9710581B1 (en) VIP assisted method and apparatus to enable SOC integration and software development
TWI499787B (zh) 多重故障診斷方法和機器可讀媒體
US11442839B2 (en) Runtime metrics based test ordering
Jain et al. Unified and Modular Modeling and Functional Verification Framework of Real‐Time Image Signal Processors
CN112632886A (zh) 检查总线验证的方法与装置以及电子设备和存储介质
JP2014149700A (ja) シミュレーション装置およびシミュレーション方法