IC設計
IP
FPGA設計
FPGA評測
DO-254
電子電路設計與仿真
先進半導體工藝器件建模
半導體熱測試
電子散熱仿真
流體仿真
電氣平臺工程
信息化管理方案
SiP系統級封裝技術
解決方案    

要素分析方法

更新日期:2016-01-08 23:13:54  瀏覽次數:1982次  作者:admin  【打印此頁】  【關閉

1      要素分析描述

要素分析方法從定義一套可適用于硬件保障級別、硬件技術、已實現硬件細節的可視性等方面的準則開始著手。該準則被應用于驗證活動的分析,以確定是否驗證驗證覆蓋率達到了驗證計劃的完成標準。如果沒有達到,則每一個被檢查的要素應當通過一些適當的激勵及其在該測試中引起的信號可觀測響應來進行檢查。

覆蓋率的含義很廣,對不同的環境含義是不同的。從機載電子硬件設備的角度,要素分析方法主要是指功能仿真過程中使用的代碼覆蓋率技術手段。代碼覆蓋率是用于RTL代碼驗證的幾種覆蓋率指標中的一種。進行代碼覆蓋率檢查的目的是確保在驗證過程中代碼都被執行。代碼覆蓋率是可以在不改動原設計流程的情況下得到的一項指標。目前EDA廠商能完全支持這種格式的覆蓋率,而且事實上所有業界領先的仿真器都支持代碼覆蓋率,它已經是仿真器的一部分功能。設計者所要做的只是把相應選項打開并使用它,不需要做任何其他的工作,然后就可以分析結果奧。

代碼覆蓋率固然有其技術優越性,不過也存在明顯的局限性。例如即使得到了100%的代碼覆蓋率也無法保證設計的功能正確。因為達到100%的代碼覆蓋率并不能保證你已經執行了足夠多的代碼,而且它并不能表明已經充分驗證了當前設計的行為和所關心的各種極限情況肯。

代碼覆蓋率的另一個缺點是它并不能直接的映射到設計需求上,因此代碼覆蓋率無法用來辨別測試是否滿足設計需求。然而這卻是DO-254要求的工作。因此,從工程應用角度,若設計不是很復雜,并且有針對需求的好的測試流程,那么利用代碼覆蓋率是合適的。但從目前行業發展來看,如今設計的復雜性使得利用代碼覆蓋率來確保設計正確是越來越困難了??偟膩碚f,代碼覆蓋率是要素分析及驗證覆蓋率指標的第一步,而且是必須的。不過需要借助功能覆蓋率等新的覆蓋率模型或要素分析方法去回答“我是否做了足夠多的測試?”這個問題思。

據此,行業提出了一些諸如功能覆蓋率等新的更有效的方法。具體來說,功能覆蓋率在觀念上有一些轉變。功能覆蓋率試圖通過有別于代碼覆蓋率的方法來解決功能驗證復雜度的問題。它包含了一套機制來捕獲和說明所關心的設計行為,并自動測量在測試中多久捕獲一次,以及設計是否違反了相應規則。這是功能覆蓋率方法學的基本原理。要實現能夠自動統計功能覆蓋率的模型,最好要有語言和工具的支持。Verilog 語言并沒有專門用于統計功能覆蓋率的語言特性,使用它實現功能覆蓋率的統計模型并不方便。近年來新推出的符合IEEE 標準的SystemVerilog 語言中,有兩類語言特性是專門用于統計功能覆蓋率的,使用SystemVerilog 語言可以比較方便地實現功能覆蓋率的統計模型。這兩類語言的特性是指:覆蓋率組(covergroup)和覆蓋率屬性(cover property)。更多的語法細節請參考SystemVerilog 的語法手冊和相關的書籍。

構建了包括功能覆蓋率模型的測試平臺之后,設計者就可以在當前功能覆蓋率的指導下通過各種驗證手段來提高功能覆蓋率。例如,可以先用比較寬泛的隨機激勵覆蓋大多數容易覆蓋的情況,然后再分析當前的功能覆蓋率,根據它來約束隨機激勵發生器,以覆蓋一些較難覆蓋的情況,如果有些邊角情況難以用隨機激勵的方法達到,還可以編寫定向的測試激勵來達到,甚至通過形式化的方法。有了自動統計功能覆蓋率的模型,我們可以較快地得到當前的功能覆蓋率水平,相比于傳統的驗證過程,不僅僅是節約了時間,它還能讓我們根據當前的功能覆蓋率情況調整驗證策略,以最少的時間達到最高的功能覆蓋率,這才是針對覆蓋率驗證期望達到的目標。

目前,在DO-254 A/B級項目中,必須實施代碼覆蓋率的要素分析方法,可以考慮應用功能覆蓋率的分析手段。DO-254中指明需要進行覆蓋率分析,尤其是A/B級設計的組件分析,但卻沒有指明需要進行哪種覆蓋率分析。但在絕大多數情況下,需要達到語句、分支、條件和表達式的100%覆蓋。

2      代碼覆蓋率類型

2.1    語句覆蓋率

語句覆蓋率是最簡單的代碼覆蓋率方式。它檢查我們所遇到的每項可執行的語句。一個語句就是以分號結束的一行代碼。所有的語句都是賦值,調用,過程,函數等。 語句覆蓋率提供了最基礎的方法來觀察我們的設計覆蓋的好壞與否。

需要注意的是行覆蓋率是一套類似的指標。但是行覆蓋率只能告訴你每行代碼是否被執行。而一行代碼可能包含多個語句。語句覆蓋率能確保每個語句都被執行,尤其是一行代碼包含多個語句。

如下就是一段代碼范例:

always @ (x or y) begin

z = 0;

if (x == 0) z = 1;

end

1:語句覆蓋代碼范例


其中,z=0與z=1是需要進行語句覆蓋的對象,只不過,z=1需要在x==0的條件有效情況下才能被覆蓋到。因此,可見,語句覆蓋的實現有時需要依賴于其它類型的覆蓋,在上述例子中,就需要x==0條件覆蓋的實現。

2.2    分支覆蓋率

如果一個語句中包含了條件或分支,使用if或case語句,那么我們需要更高級的指標。在這些情況下,我們使用分支覆蓋率。(有時等同于判斷覆蓋率)。

除了上述例子中顯示的if分支外,下面又同時列舉了一個范例:

If語句

if (x =‘0’) then

   z <= ‘1’;

    else

   z <= ‘0’;

end if;


case語句

case x is

  when 1 | 2 =>

    z <= ‘1’;  

  when 3 =>

    z <= ‘0’;

  when others =>

    null;

end case;

2:分支覆蓋代碼范例


上述例子顯示了一個if語句和一個case語句。對于if語句,分支覆蓋率將報告條件真和條件假都執行了多少次。相同的對于case語句,分支覆蓋率將顯示各種在case里可能出現的值被執行了多少次。

在這種情況下,分支覆蓋率報告了x是1,2,3的次數。

所以說,分支覆蓋率提供了是否已經執行了設計中的所有可能分支情況的信息。

不過分支覆蓋率和語句覆蓋率并非全部,因為雖然有可能測試了相應分支,但是沒有測試所有產生這些分支的原因。因此還需要額外級別的代碼覆蓋率進行補充。

2.3    條件覆蓋率

條件覆蓋率是分支覆蓋率的一個擴展。分支覆蓋率著重于檢查所有的分支是否執行,而條件覆蓋率著重于檢查所有進入分支的條件是否都執行了。

例如,如果A或B為真則if語句為真。用VHDL代碼描述如下:

 

                        IF (a or b) THEN x := 0; else x := 1; endif;

3:條件覆蓋代碼范例


如果這一行被執行那語句覆蓋率和分支覆蓋率都會有提示。但到底是因為A為真還是B為真使得該代碼執行卻無法顯示??赡蹷一直都不為真我們也不知道。


Counts

a

b

(a or b)

Row1

5

1

-

1

Row2

0

-

1

1

Row3

8

0

0

0

unkonwn

0




1:條件覆蓋統計表


按照指標,條件覆蓋率是通過把所有執行的條件的數量從所有條件的數量中劃分出來來衡量的。通常來說,條件覆蓋率在統計時采用類似上述表1的形式進行統計,然后算出覆蓋率的具體結果。


2.4    表達式覆蓋率

表達式覆蓋率工作原理如同條件覆蓋率一樣,它計算得到各種可能結果需要的最少指令數并讓你知道你是否已經把它們全部覆蓋到了。換句話說,它將跟蹤確保表達式中每個輸入在輸入能控制輸出的情況下都出現了真和假的值。

表達式覆蓋率包括兩種,UDP(用戶定義的原語)和集中表達式覆蓋率(FEC)。集中表達式覆蓋率被認為是最好的用于偵測功能故障的代碼覆蓋率,因為它能幫你判斷邏輯故障是否能影響目標輸入。集中表達式覆蓋率基于當布爾表達式描述的事實,表達式是一定數量輸入的等式,其結合了布爾運算符(AND、NAND、OR、NOR、NOT或者EXOR)。

通過下面的例子很容易解釋。                   

OUT = A OR B;

4:表達式覆蓋代碼范例


有多少種輸入組合才能全部覆蓋到?

UPD指標主要關注真值表中每一行中唯一的輸入,如下表就只需要3種組合:


2:表達式覆蓋率UDP統計表


在UDP覆蓋率中,最后一行是被舍棄的,因為在前面的行中A和B為1都已經覆蓋到了。

但是FEC覆蓋率就有所不同。FEC確保每個輸入都能全面的控制到輸出。所以通過FEC會得到下面的表格,在FEC中,總共有4種輸入組合需要驗證:



 

3:表達式覆蓋率FEC統計表

 

2.5    有限狀態機覆蓋率

有限狀態機有其特有的代碼覆蓋率格式。當設計包含有限狀態機時,需要確保測試執行了所有狀態以及狀態的轉換。下圖4是衡量狀態機覆蓋率的方法。

圖4 有限狀態機覆蓋


在這個例子里,ctrl狀態沒有被測試到,因此無論是轉入該狀態還轉出該狀態都沒有被執行,這對于反映測試是否完全這是非常重要的。

有限狀態機覆蓋率所提供的信息是與其他覆蓋率有密切關系的。通常,確保正確的有限狀態機行為對保證一個設計的正確性是很關鍵的,這是因為,通常狀態機總是應用在關鍵的控制邏輯信號的產生行為上。不過,目前DO-254標準并未對有限狀態機覆蓋率提出具體要求,但是從驗證完備性角度考慮,設計者可以將這一統計分析方法納入至要素分析考慮的范圍之內。


2.6    翻轉覆蓋率

翻轉覆蓋率統計的對象是觸發器的每一個bit或信號的極性全部進行了0->1、1->0、Z->1、Z->0、1->Z或者0->Z的翻轉,而沒有固定在某一個狀態之上。

雖然仿真工具支持,但是翻轉覆蓋率并不是真正用來做RTL代碼分析的。它是用來在制造階段支持芯片測試儀的。芯片測試儀通過測試向量來把晶圓上的壞片挑出來。測試儀通過輸入測試向量觀測輸出來判斷芯片的好壞。通過觀測,可以發現由代碼造成的故障使得芯片固定在邏輯1或邏輯0上。

既然測試向量需要使設計里的每一處節點都翻轉,那么仿真器便開始支持這種覆蓋率以便于檢查這種類型的代碼。在仿真器中的翻轉覆蓋率允許工程師仿真所有測試向量,以判斷他們是否到達了100%的覆蓋率。

翻轉覆蓋率并不是應用在RTL設計上的。雖然可以在RTL代碼中報告翻轉覆蓋率,但為了實現全覆蓋可能需要花費很多時間去從很多錯誤信息中篩選真正能覆蓋到芯片的信息。而且如果在門級運行的話情況將更糟,它需要消耗更多的時間而且要考慮到底要檢測什么等諸多問題。

因此,目前DO-254標準并未對翻轉覆蓋率提出明確要求。

  • 奧肯思總部
  • 電話:010-68058081
  • 傳真:010-10-68058085
  • 地址:北京市朝陽區朝外西街3號兆泰國際中心C座501A?
  • 奧肯思研發與培訓中心
  • 電話:010-82346812
  • 傳真:010-82346802 ext.8002
  • 地址:北京市海淀區中關村軟件園3號樓B座二層1219室
  • 奧肯思上海分公司
  • 電話:021-54591058
  • 地址:上海市徐匯區龍華中路596號綠地中心A座501室(200032)
  • 奧肯思成都分公司
  • 電話:028-86716980
  • 傳真:028-86716983 -109
  • 地址:成都市青羊區蜀金路1號金沙萬瑞中心C座1706-1707室
               法律聲明     網站地圖     加入奧肯思     友情鏈接     幫助中心     關于奧肯思

Copyright 2014 acconsys All Rights Reserved 京ICP備12034336號-1

版權所有:奧肯思(北京)科技有限公司  技術支持:上海網站建設

辽阳体彩店能赚钱吗 山东11选5历史开奖结果 宁夏11选5投注平台 重庆幸运农场网站 上海体彩网11选5开奖 股票中的大盘什么意 秒速飞艇砍龙精准技巧 江苏十一选五中奖规则 中国体育彩票何时开奖 海燕博彩论坛 全球股票指数软件