<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 互連技術(shù) > 正文

利用形式驗證檢查 SoC 連通性的正確性

發(fā)布時(shí)間:2020-12-22 來(lái)源:Mark Handover;Abdelouahab Ayari 責任編輯:lina

【導讀】連通性檢查涉及驗證器件布線(xiàn)。它相當于問(wèn)這樣一個(gè)問(wèn)題:“設計元素是否被正確裝配?” 更準確地說(shuō),它是在驗證設計中的邏輯模塊之間的連接是否正確,例如:模塊 B1 上的輸出 A 是否正確連接到模塊 B2 上的輸入 A''。這常常是很困難的驗證任務(wù)。

簡(jiǎn)介
連通性檢查涉及驗證器件布線(xiàn)。它相當于問(wèn)這樣一個(gè)問(wèn)題:“設計元素是否被正確裝配?” 更準確地說(shuō),它是在驗證設計中的邏輯模塊之間的連接是否正確,例如:模塊 B1 上的輸出 A 是否正確連接到模塊 B2 上的輸入 A''。這常常是很困難的驗證任務(wù)。設計包含數以千計的導線(xiàn),這些導線(xiàn)的正確性可能都需要檢查,因此要檢查的連接數量是一個(gè)問(wèn)題。
 
調試提出了另一個(gè)次要的但常常同樣具有挑戰性的問(wèn)題。原因是,雖然采用定向或約束隨機方法通過(guò)動(dòng)態(tài)測試檢查連通性肯定能發(fā)現一些連通性錯誤,但問(wèn)題只會(huì )表現為被測模塊內部的功能性問(wèn)題,而不一定能幫助查明問(wèn)題連接。使用斷言可以在源頭捕獲設計錯誤,從而減輕調試問(wèn)題。但是,所需的檢查量仍然可能令人瞠目。
 
為應對此類(lèi)挑戰,形式驗證為我們提供了一種快速、詳盡且支持高效調試的解決方案。傳統上,芯片級形式驗證確實(shí)不可行。該方法通常以模塊級別為目標,使狀態(tài)空間的規模保持在適當水平。但是,鑒于連通性檢查僅集中在布線(xiàn)上(與模塊級別的復雜度相比,布線(xiàn)一般是器件的簡(jiǎn)單部分),借助一些假設,狀態(tài)空間可以減小到可管理的規模。這種簡(jiǎn)化的性質(zhì)取決于所需檢查的類(lèi)型。
 
本文首先會(huì )概述幾種類(lèi)型的連通性檢查,然后詳細介紹一種新型半自動(dòng)驗證流程(包括代碼)。已有一些 Mentor Graphics 使用該流程來(lái)簡(jiǎn)化連通性檢查。該流程基于一個(gè)腳本環(huán)境,圍繞該環(huán)境提供了充足的信息以方便用戶(hù)開(kāi)始實(shí)施新的驗證方法。
 
點(diǎn)對點(diǎn)連通性檢查的類(lèi)型
直接點(diǎn)對點(diǎn)檢查
連通性檢查的最簡(jiǎn)單形式是點(diǎn)對點(diǎn)檢查 —— 端口 A 是否連接到端口 B?這是就同一層次結構而言的。
 
例如,如果一個(gè)設計有八個(gè)模塊,所有模塊都位于頂層,那么驗證只需要檢查這八個(gè)模塊與頂層之間的連接。
 
在這種情況下,我們只需把八個(gè)子模塊進(jìn)行黑盒化處理,而不必對整個(gè)器件進(jìn)行建模。檢查不依賴(lài)于模塊內容,因此無(wú)需讀取這些模塊的 HDL。
 
跨層次結構的直接點(diǎn)對點(diǎn)檢查
這在本質(zhì)上與簡(jiǎn)單檢查方法相似,不過(guò)檢查的是位于一個(gè)層次結構中一個(gè)模塊上的端口是否在物理上正確連接到位于另一層次結構中的一個(gè)模塊,或者位于信號源的單個(gè)端口是否連接到多個(gè)端點(diǎn)。
 
以對存儲器的寫(xiě)使能為例。它可能起源于單個(gè)頂層輸入管腳,但可以連接到跨許多不同層次位置的許多存儲器實(shí)例。
 
現在涉及層次結構,因此無(wú)法將上方的模塊實(shí)例統一進(jìn)行黑盒化處理。黑盒化處理應該在最高層級上執行,但只能用于那些不在寫(xiě)使能路徑上或可能影響寫(xiě)使能連通性的邏輯路徑上的模塊。盡管更具挑戰性并需要一些設計知識,但這種更具選擇性的黑盒方法仍然可以顯著(zhù)簡(jiǎn)化狀態(tài)空間。
 
 
其他類(lèi)型的檢查
驗證器件的模塊間連通性可能需要進(jìn)行多種類(lèi)型的檢查。到目前為止,我們僅考慮了點(diǎn)對點(diǎn)檢查,即所有條件下 A = B,層級可以相同或不同。許多連接都是這種性質(zhì)的,但也可能需要其他類(lèi)型的檢查。
 
我們來(lái)看幾個(gè)例子。
 
條件點(diǎn)對點(diǎn)檢查
兩點(diǎn)之間的連接可能取決于系統中的其他行為或另一個(gè)信號的狀態(tài)。例如,當驗證管腳多路復用時(shí),所選的 IO 路徑將取決于控制信號的值。令情況變得復雜的是,信號的目的地可能是一個(gè)相反值,執行檢查時(shí)可能還需要考慮這一點(diǎn)。
 
有延遲的點(diǎn)對點(diǎn)
某些情況下需要點(diǎn)對點(diǎn)連接,但傳播可能要花費若干周期,而不是立即發(fā)生。因此,這就需要完善點(diǎn)對點(diǎn)檢查。
 
無(wú)延遲的點(diǎn)對點(diǎn)
這類(lèi)似于前面所述的簡(jiǎn)單點(diǎn)對點(diǎn)檢查,但有一個(gè)重大區別:用戶(hù)要求檢查明確驗證不僅 A 連接到 B,而且路徑上沒(méi)有時(shí)序邏輯。
 
構造檢查
鑒于需要創(chuàng )建大量檢查才能全面檢查器件連通性情況,用戶(hù)如何創(chuàng )建所需的斷言?
 
一種常見(jiàn)方法是使用格式特別編制的電子表格,其中詳細說(shuō)明了應連接的各個(gè)點(diǎn)、涉及的路徑延遲、反轉、條件等。然后,工具或腳本解析電子表格并將其轉換為斷言語(yǔ)言,例如 SystemVerilog 斷言 (SVA) 或屬性說(shuō)明語(yǔ)言 (PSL)。圖 1 顯示了一個(gè)帶有一些連通性信息的電子表格描述范例。
 
連通性信息(電子表格描述)
 
 
利用形式驗證檢查 SoC 連通性的正確性
圖 1
 
我們來(lái)瀏覽一下該電子表格。我們指定了兩種檢查類(lèi)型:“cond” 指條件連接,“connect” 指無(wú)條件的直接連接。這將允許我們在創(chuàng )建檢查器期間創(chuàng )建不同斷言類(lèi)型。“輸入1” 和 “輸入2” 字段詳細列出了設計中要進(jìn)行連通性檢查的起點(diǎn)和終點(diǎn)。“條件” 列用于詳細說(shuō)明需要設置什么信號才允許點(diǎn)對點(diǎn)連接為真。“connect”檢查沒(méi)有條件,檢查將是直接、無(wú)條件的。最后,所有延遲字段都是 0,表示所有連接都沒(méi)有延遲。
 
一旦電子表格格式固定并填充內容,便可使用適當的工具或腳本來(lái)解析電子表格和創(chuàng )建斷言,而斷言將作為目標送入形式化工具。一種方法是使用通用屬性模板,然后在單獨的檢查器描述中添加每個(gè)屬性實(shí)例的連通性信息。這樣就可以將其綁定(使用 SystemVerilog 的 bind 結構體)到設計的頂層。
 
圖 2 顯示了兩個(gè)通用屬性模板。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 2
 
屬性 cond_p 支持條件檢查,而 connect_p 支持直接無(wú)條件檢查。
 
此模板文件可以包含許多獨特類(lèi)型的連通性檢查,一旦明確便無(wú)需用戶(hù)編輯。該文件不包含任何設計信息,因而與項目無(wú)關(guān),可以重復使用。
 
從電子表格自動(dòng)創(chuàng )建的源就是檢查器詳細信息,其中包含模板文件中不同檢查的實(shí)例,并添加了適當的信號名稱(chēng)。一個(gè)例子如圖 3 所示。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 3
 
其他注意事項
時(shí)鐘
設計不可避免地包含多個(gè)時(shí)鐘。通過(guò)形式驗證,未定義的時(shí)鐘會(huì )產(chǎn)生與這些時(shí)鐘明確相關(guān)的設計邏輯和任何斷言的抽象。來(lái)自抽象域的信號成為形式驗證控制點(diǎn),這可能會(huì )導致意外激發(fā)。
 
為了避免工具執行任何抽象,必須定義所有時(shí)鐘。但是,某些設計有很多 10s 的時(shí)鐘,所以這可能很麻煩。
 
連通性檢查常常不驗證時(shí)鐘邏輯,因此定義時(shí)鐘貌似是不必要的任務(wù)。然而,為檢查連通性而創(chuàng )建的斷言會(huì )使用時(shí)鐘。
 
理論上講,用戶(hù)只需定義那些與斷言相關(guān)的時(shí)鐘,以及那些影響斷言所檢查路徑上的時(shí)序邏輯的時(shí)鐘。
 
不過(guò),鑒于難以識別路徑上的時(shí)序邏輯,這可能不是一個(gè)容易執行的簡(jiǎn)化操作。
 
實(shí)踐中,顯式指定和定義設計中的所有時(shí)鐘可能會(huì )更容易。由于連通性檢查通常不檢查設計的時(shí)序行為,或者至多檢查連接是否存在延遲(或沒(méi)有延遲),因此一般可以給所有時(shí)鐘指定同一頻率。這就大大簡(jiǎn)化了用戶(hù)為形式工具定義時(shí)鐘信息的任務(wù)。
 
分階段測試被測器件可能有多種工作模式,這些模式可能會(huì )影響可激活的連通性路徑或設計邏輯。測試應確保每種有效模式都得到測試,同時(shí)還要充分利用所有設計最小化(即黑盒化處理)的機會(huì ) —— 針對具體模式進(jìn)行配置時(shí)可能會(huì )有這種機會(huì )。
 
用戶(hù)還應注意所執行測試的方面,并相應地對測試進(jìn)行分組以便支持分階段方法,這樣測試環(huán)境的設置會(huì )更簡(jiǎn)單。例如,如果存儲器連接測試屬于一組必須進(jìn)行的連通性檢查,并且所有存儲器僅存在于少數幾個(gè)子模塊中,則除這些子模塊外的所有設計都可以進(jìn)行黑盒化處理。這種特定的最小化對于連通性檢查的另一個(gè)方面(例如檢查 IP 接口或網(wǎng)橋連接)可能是不可行的。其他測試方面可能需要不同的最小化策略,因此可以在測試策略的第二階段中定義,并在第三階段和第四階段中進(jìn)一步定義設置策略。
 
詳細信息:實(shí)施更高效流程的工具
某些 Mentor Graphics 客戶(hù)使用的方法(比如上面的例子)一般遵循一套通用步驟:首先,聲明檢查器的一個(gè)實(shí)例。然后,在適當的字段中添加適當的信號名稱(chēng)。使用 Questa Formal,此方法適用于 Verilog、VHDL、混合語(yǔ)言設計和混合語(yǔ)言層次結構。本文是我們努力讓其他工程團隊能夠以最少的工作使用類(lèi)似驗證流程的一部分。在我們的方法中,我們定義了連通性規范電子表格的格式,并且編寫(xiě)了一個(gè)腳本來(lái)創(chuàng )建SVA 或 PSL 檢查器。我們還創(chuàng )建了一組屬性模板,以便支持多種類(lèi)型的連通性檢查。該半自動(dòng)化流程的詳細信息(包括代碼)說(shuō)明如下。
 
為了能夠更好地部署這種連通性檢查方法,我們基于腳本的新環(huán)境允許自動(dòng)創(chuàng )建各種所需文件。我們開(kāi)發(fā)了一個(gè) Perl 腳本 GenConn.pl,利用它來(lái)解析連通性信息的文本文件,創(chuàng )建 SVA 或 PSL 檢查器,還可以創(chuàng )建 Questa Formal 的 makefile。為此需要定義連通性數據的格式,然后作為制表符分隔值 (TSV) 或逗號分隔值 (CSV) 的文件提供給腳本。
 
利用形式驗證檢查 SoC 連通性的正確性
目前,腳本可以支持和創(chuàng )建七種類(lèi)型的連通性檢查:
■ 點(diǎn)對點(diǎn),有或無(wú)延遲
■ 條件點(diǎn)對點(diǎn),有或無(wú)延遲
■ 互斥信號
■ 接高電平的信號
■ 接低電平的信號
 
要創(chuàng )建這些類(lèi)型的檢查器,用戶(hù)需要填充連通性規范文件。該文件的格式詳見(jiàn)圖 4。
 
連通性規范
 
利用形式驗證檢查 SoC 連通性的正確性
圖 4
 
“檢查器關(guān)鍵字” 表示用戶(hù)希望推斷的檢查類(lèi)型,“信號 ...” 和 “條件信號” 條目是指向要檢查連通性的設計信號或端口的層次路徑。“延遲值” 是時(shí)序延遲周期數,須為整數。
 
例如,假設我們要檢查信號 top.en 到 top.u1.u2.enable 的連通性,并且該路徑上應有兩個(gè)周期的時(shí)序延遲。
 
圖 5 顯示了規范文件中該條目的樣子。請注意,對于互斥檢查器,雖然表中顯示了四個(gè)連接,但實(shí)際上可以指定任意數量的連接。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 5
 
除連通性信息外,規范文件還應包括被測設計的名稱(chēng)、時(shí)鐘的名稱(chēng)以及檢查器將使用的復位。無(wú)論高電平有效還是低電平有效,都需要提供復位感測。這些信息應按照如下格式指定:
■ Design <DUT 名稱(chēng)>
■ Clock <檢查器時(shí)鐘名稱(chēng)>
■ Reset <檢查器復位名稱(chēng)>
■ Reset_sense <低或高>
 
連通性規范文件需要以 TSV 或 CSV 格式傳遞給腳本。完整 TSV 格式連通性規范文件的例子如圖 6 所示。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 6
 
一旦以正確格式描述了完整的連通性規范,便可將其傳遞給腳本以創(chuàng )建檢查器。
 
該腳本可以接受多個(gè)參數,如圖 7 所示。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 7
 
默認情況下,預期輸入格式為 TSV,檢查器輸出文件(名為 “checkers.sv”)將采用 SVA 格式。不過(guò),用戶(hù)可以通過(guò)指定適當的選項來(lái)更改默認行為。
 
腳本會(huì )自動(dòng)創(chuàng )建輸出連通性規范文件。它是 TSV 或 CSV 規范輸入的副本,但每個(gè)條目都包括所創(chuàng )建檢查器的名稱(chēng)。該文件的默認名稱(chēng)為 checker_conn_spec,可使用 -s 開(kāi)關(guān)予以覆蓋;擴展名為 .tsv 或 .csv,具體取決于輸入文件的格式。
 
輸出文件 checkers.sv 包含用于構建檢查器的所有必要信息。為了簡(jiǎn)化使用,先前說(shuō)明的 “屬性模板” 已經(jīng)固定,并由腳本自動(dòng)創(chuàng )建。檢查器模板本身、檢查器實(shí)例化和綁定信息都包含在一個(gè)檢查器文件中。圖 8(注意下一頁(yè)仍有代碼)顯示了 SVA 風(fēng)格 checkers.sv 文件輸出的例子。
 
利用形式驗證檢查 SoC 連通性的正確性
利用形式驗證檢查 SoC 連通性的正確性
圖 8
 
選擇生成的 makefile 允許用戶(hù)編譯所創(chuàng )建的 SVA 或 PSL 檢查器文件以用于 Questa Formal,然后運行形式
分析。
 
該 makefile 名為 Makefile _ ConnCheck。它有三個(gè)條目:
■ compile _ checkers:編譯 SVA 或 PSL
■ compile _ formal _ model:運行 CSL 流程以構建形式模型
■ run _ formal:運行 Questa Formal “證明” 流程
 
還有一個(gè) run_all 條目,它允許依次執行所有三個(gè)步驟。為了運行 makefile 中的所有步驟,用戶(hù)需要執行:
 
make –f Makefile _ ConnCheck run _ all
 
運行形式編譯和證明步驟的結果分別放在目錄 “results/csl” 和 “results/prove” 中。
 
Makefile _ ConnCheck 文件具有成功編譯和運行 Questa Formal 所需的基本條目,但它更多地是作為模板提供,用戶(hù)在使用之前很可能需要進(jìn)行編輯。
例如,makefile 沒(méi)有引用形式驗證的控制文件(用于定義時(shí)鐘、設置約束等),因此可能需要創(chuàng )建和指定該文件。
 
還有一個(gè)附加腳本 GenDoc.pl。此腳本的作用是將形式結果注釋到 checker _ conn _ spec 文件上,該文件是自動(dòng)生成并加注了檢查器名稱(chēng)的連通性規范。GenDoc 腳本應在獲得形式 “證明” 結果后運行。
該腳本可以接受多個(gè)參數,如圖 9 所示。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 9
 
默認輸入和輸出文件名為:
■ 連通性規范輸入文件名:checker _ conn _ spec.tsv
■ 連通性規范輸出文件:conn _ spec _ results(后綴取決于輸入文件格式)
■ 證明報告文件名:results/prove/0in _ prove.rpt
 
所有這些默認值都可以使用適當的開(kāi)關(guān)予以覆蓋。
 
在 “證明” 形式運行之后,生成的輸出文件會(huì )詳細說(shuō)明每個(gè)連通性規范條目以及檢查器名稱(chēng)和狀態(tài),如圖 10
所示。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 10
 
下一頁(yè)上的圖 11 給出了可用于運行完整連通性檢查流程的命令示例,圖 12 顯示了整個(gè)流程。
 
利用形式驗證檢查 SoC 連通性的正確性
圖 11
 
利用形式驗證檢查 SoC 連通性的正確性
圖 12
 
其他應用
連通性檢查在許多應用中都很有價(jià)值。下面介紹幾個(gè)例子。
 
焊盤(pán)環(huán)檢查
復雜器件具有多種配置,SoC 中的 IO 不可避免地會(huì )涉及復雜的多路復用焊盤(pán)。必須驗證所有配置下的焊盤(pán)環(huán),檢查每種模式下是否都存在正確連接。利用形式技術(shù)檢查這種連通性會(huì )窮盡所有可能性,發(fā)現極端情況并帶來(lái)自動(dòng)化功能,而仿真技術(shù)常常無(wú)法做到這一點(diǎn)。
 
存儲器 BIST 檢查
設計常常會(huì )包含由內建自測試 (BIST) 邏輯測試的存儲器,其中 BIST 邏輯是在 RTL 階段插入??赡苁窃S多存儲器(常常位于不同層級)連接到單個(gè)主 BIST 控制器。
 
來(lái)自 BIST 控制器的控制信號連接到各種存儲器或存儲器控制器,這些連接可以是共用的。例如,來(lái)自 BIST控制器的 write _ enable 可以連接到許多存儲器上的 write _ enable 管腳。
 
形式連通性檢查是一種有效替代方法,用戶(hù)無(wú)需編寫(xiě)動(dòng)態(tài)測試來(lái)檢查存儲器 BIST 連接并在每次更改 RTL時(shí)重新運行測試。
 
此外,形式檢查還能確保這些存儲器/MBIST 連接上沒(méi)有放置時(shí)序邏輯,這常常是一個(gè)設計要求。
 
JTAG 檢查
與 MBIST 檢查類(lèi)似,設計人員可以在設計中添加 JTAG 電路,這常常也在 RTL 階段進(jìn)行。JTAG 的潛在用途包括:創(chuàng )建對設計的測試訪(fǎng)問(wèn),啟動(dòng)全掃描檢查,或控制 MBIST 電路。
 
JTAG 邏輯具有固定的規范和多種標準工作模式。連通性檢查可用來(lái)確保所有正確的設計元素(例如 MBIST控制器)都連接到預期的 JTAG 控制寄存器。
在某些 JTAG 模式下,邊界掃描寄存器形成一條長(cháng)鏈。該鏈的長(cháng)度由設計團隊確定。在連通性規范中將長(cháng)度指定為延遲周期數,連通性檢查便可確保在特定模式下該鏈的長(cháng)度是正確的。
 
結語(yǔ)
本文提供的信息當然是很粗略的。詳細記錄哪怕是最基本的 SoC 驗證流程,也很容易寫(xiě)上數十頁(yè)甚至更多。然而,盡管簡(jiǎn)短,但應該還是有充足的材料來(lái)供用戶(hù)開(kāi)始制定流程,以實(shí)現更有效的連通性檢查。
 
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請電話(huà)或者郵箱聯(lián)系小編進(jìn)行侵刪。
 
 
推薦閱讀:
有極性和無(wú)極性電容爆炸原因
為何大多數eTruck會(huì )選擇隔夜充電?
Teledyne e2v 的數據轉換器可直接訪(fǎng)問(wèn) Ka 波段,并突破數字信號處理的極限
如何選擇單相橋式整流濾波電路中的電容電阻?
如何解決 LED 行業(yè)基波功率因數測試難點(diǎn)
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>