利用形式驗證檢查 SoC 連通性的正確性
發布時間:2020-12-22 來源:Mark Handover;Abdelouahab Ayari 責任編輯:lina
【導讀】連通性檢查涉及驗證器件布線。它相當於問這樣一個問題:“設計元素是否被正確裝配?” 更準確地說,它是在驗證設計中的邏輯模塊之間的連接是否正確,例如:模塊 B1 上的輸出 A 是否正確連接到模塊 B2 上的輸入 A''。這常常是很困難的驗證任務。
簡介
連通性檢查涉及驗證器件布線。它相當於問這樣一個問題:“設計元素是否被正確裝配?” 更準確地說,它是在驗證設計中的邏輯模塊之間的連接是否正確,例如:模塊 B1 上的輸出 A 是否正確連接到模塊 B2 上的輸入 A''。這常常是很困難的驗證任務。設計包含數以千計的導線,這些導線的正確性可能都需要檢查,因此要檢查的連接數量是一個問題。
tiaoshitichulelingyigeciyaodedanchangchangtongyangjuyoutiaozhanxingdewenti。yuanyinshi,suirancaiyongdingxianghuoyueshusuijifangfatongguodongtaiceshijianzhaliantongxingkendingnengfaxianyixieliantongxingcuowu,danwentizhihuibiaoxianweibeicemokuaineibudegongnengxingwenti,erbuyidingnengbangzhuzhamingwentilianjie。shiyongduanyankeyizaiyuantoubuhuoshejicuowu,congerjianqingtiaoshiwenti。danshi,suoxudejianzhaliangrengrankenenglingrenchengmu。
為應對此類挑戰,形式驗證為我們提供了一種快速、xiangjinqiezhichigaoxiaotiaoshidejiejuefangan。chuantongshang,xinpianjixingshiyanzhengqueshibukexing。gaifangfatongchangyimokuaijibieweimubiao,shizhuangtaikongjiandeguimobaochizaishidangshuiping。danshi,jianyuliantongxingjianzhajinjizhongzaibuxianshang(與模塊級別的複雜度相比,布線一般是器件的簡單部分),借助一些假設,狀態空間可以減小到可管理的規模。這種簡化的性質取決於所需檢查的類型。
本文首先會概述幾種類型的連通性檢查,然後詳細介紹一種新型半自動驗證流程(包括代碼)。已有一些 Mentor Graphics 使用該流程來簡化連通性檢查。該流程基於一個腳本環境,圍繞該環境提供了充足的信息以方便用戶開始實施新的驗證方法。
點對點連通性檢查的類型
直接點對點檢查
連通性檢查的最簡單形式是點對點檢查 —— 端口 A 是否連接到端口 B?這是就同一層次結構而言的。
例如,如果一個設計有八個模塊,所有模塊都位於頂層,那麼驗證隻需要檢查這八個模塊與頂層之間的連接。
在zai這zhe種zhong情qing況kuang下xia,我wo們men隻zhi需xu把ba八ba個ge子zi模mo塊kuai進jin行xing黑hei盒he化hua處chu理li,而er不bu必bi對dui整zheng個ge器qi件jian進jin行xing建jian模mo。檢jian查zha不bu依yi賴lai於yu模mo塊kuai內nei容rong,因yin此ci無wu需xu讀du取qu這zhe些xie模mo塊kuai的de HDL。
跨層次結構的直接點對點檢查
這(zhe)在(zai)本(ben)質(zhi)上(shang)與(yu)簡(jian)單(dan)檢(jian)查(zha)方(fang)法(fa)相(xiang)似(si),不(bu)過(guo)檢(jian)查(zha)的(de)是(shi)位(wei)於(yu)一(yi)個(ge)層(ceng)次(ci)結(jie)構(gou)中(zhong)一(yi)個(ge)模(mo)塊(kuai)上(shang)的(de)端(duan)口(kou)是(shi)否(fou)在(zai)物(wu)理(li)上(shang)正(zheng)確(que)連(lian)接(jie)到(dao)位(wei)於(yu)另(ling)一(yi)層(ceng)次(ci)結(jie)構(gou)中(zhong)的(de)一(yi)個(ge)模(mo)塊(kuai),或(huo)者(zhe)位(wei)於(yu)信(xin)號(hao)源(yuan)的(de)單(dan)個(ge)端(duan)口(kou)是(shi)否(fou)連(lian)接(jie)到(dao)多(duo)個(ge)端(duan)點(dian)。
以對存儲器的寫使能為例。它可能起源於單個頂層輸入管腳,但可以連接到跨許多不同層次位置的許多存儲器實例。
現xian在zai涉she及ji層ceng次ci結jie構gou,因yin此ci無wu法fa將jiang上shang方fang的de模mo塊kuai實shi例li統tong一yi進jin行xing黑hei盒he化hua處chu理li。黑hei盒he化hua處chu理li應ying該gai在zai最zui高gao層ceng級ji上shang執zhi行xing,但dan隻zhi能neng用yong於yu那na些xie不bu在zai寫xie使shi能neng路lu徑jing上shang或huo可ke能neng影ying響xiang寫xie使shi能neng連lian通tong性xing的de邏luo輯ji路lu徑jing上shang的de模mo塊kuai。盡jin管guan更geng具ju挑tiao戰zhan性xing並bing需xu要yao一yi些xie設she計ji知zhi識shi,但dan這zhe種zhong更geng具ju選xuan擇ze性xing的de黑hei盒he方fang法fa仍reng然ran可ke以yi顯xian著zhu簡jian化hua狀zhuang態tai空kong間jian。
其他類型的檢查
驗證器件的模塊間連通性可能需要進行多種類型的檢查。到目前為止,我們僅考慮了點對點檢查,即所有條件下 A = B,層級可以相同或不同。許多連接都是這種性質的,但也可能需要其他類型的檢查。
我們來看幾個例子。
條件點對點檢查
兩點之間的連接可能取決於係統中的其他行為或另一個信號的狀態。例如,當驗證管腳多路複用時,所選的 IO 路徑將取決於控製信號的值。令情況變得複雜的是,信號的目的地可能是一個相反值,執行檢查時可能還需要考慮這一點。
有延遲的點對點
某些情況下需要點對點連接,但傳播可能要花費若幹周期,而不是立即發生。因此,這就需要完善點對點檢查。
無延遲的點對點
這類似於前麵所述的簡單點對點檢查,但有一個重大區別:用戶要求檢查明確驗證不僅 A 連接到 B,而且路徑上沒有時序邏輯。
構造檢查
鑒於需要創建大量檢查才能全麵檢查器件連通性情況,用戶如何創建所需的斷言?
一種常見方法是使用格式特別編製的電子表格,其中詳細說明了應連接的各個點、涉及的路徑延遲、反轉、條件等。然後,工具或腳本解析電子表格並將其轉換為斷言語言,例如 SystemVerilog 斷言 (SVA) 或屬性說明語言 (PSL)。圖 1 顯示了一個帶有一些連通性信息的電子表格描述範例。
連通性信息(電子表格描述)

圖 1
我們來瀏覽一下該電子表格。我們指定了兩種檢查類型:“cond” 指條件連接,“connect” 指無條件的直接連接。這將允許我們在創建檢查器期間創建不同斷言類型。“輸入1” 和 “輸入2” 字段詳細列出了設計中要進行連通性檢查的起點和終點。“條件” 列用於詳細說明需要設置什麼信號才允許點對點連接為真。“connect”檢查沒有條件,檢查將是直接、無條件的。最後,所有延遲字段都是 0,表示所有連接都沒有延遲。
一yi旦dan電dian子zi表biao格ge格ge式shi固gu定ding並bing填tian充chong內nei容rong,便bian可ke使shi用yong適shi當dang的de工gong具ju或huo腳jiao本ben來lai解jie析xi電dian子zi表biao格ge和he創chuang建jian斷duan言yan,而er斷duan言yan將jiang作zuo為wei目mu標biao送song入ru形xing式shi化hua工gong具ju。一yi種zhong方fang法fa是shi使shi用yong通tong用yong屬shu性xing模mo板ban,然ran後hou在zai單dan獨du的de檢jian查zha器qi描miao述shu中zhong添tian加jia每mei個ge屬shu性xing實shi例li的de連lian通tong性xing信xin息xi。這zhe樣yang就jiu可ke以yi將jiang其qi綁bang定ding(使用 SystemVerilog 的 bind 結構體)到設計的頂層。
圖 2 顯示了兩個通用屬性模板。

圖 2
屬性 cond_p 支持條件檢查,而 connect_p 支持直接無條件檢查。
cimobanwenjiankeyibaohanxuduoduteleixingdeliantongxingjianzha,yidanmingquebianwuxuyonghubianji。gaiwenjianbubaohanrenheshejixinxi,yineryuxiangmuwuguan,keyizhongfushiyong。
從電子表格自動創建的源就是檢查器詳細信息,其中包含模板文件中不同檢查的實例,並添加了適當的信號名稱。一個例子如圖 3 所示。

圖 3
其他注意事項
時鍾
設she計ji不bu可ke避bi免mian地di包bao含han多duo個ge時shi鍾zhong。通tong過guo形xing式shi驗yan證zheng,未wei定ding義yi的de時shi鍾zhong會hui產chan生sheng與yu這zhe些xie時shi鍾zhong明ming確que相xiang關guan的de設she計ji邏luo輯ji和he任ren何he斷duan言yan的de抽chou象xiang。來lai自zi抽chou象xiang域yu的de信xin號hao成cheng為wei形xing式shi驗yan證zheng控kong製zhi點dian,這zhe可ke能neng會hui導dao致zhi意yi外wai激ji發fa。
為了避免工具執行任何抽象,必須定義所有時鍾。但是,某些設計有很多 10s 的時鍾,所以這可能很麻煩。
連通性檢查常常不驗證時鍾邏輯,因此定義時鍾貌似是不必要的任務。然而,為檢查連通性而創建的斷言會使用時鍾。
理論上講,用戶隻需定義那些與斷言相關的時鍾,以及那些影響斷言所檢查路徑上的時序邏輯的時鍾。
不過,鑒於難以識別路徑上的時序邏輯,這可能不是一個容易執行的簡化操作。
實(shi)踐(jian)中(zhong),顯(xian)式(shi)指(zhi)定(ding)和(he)定(ding)義(yi)設(she)計(ji)中(zhong)的(de)所(suo)有(you)時(shi)鍾(zhong)可(ke)能(neng)會(hui)更(geng)容(rong)易(yi)。由(you)於(yu)連(lian)通(tong)性(xing)檢(jian)查(zha)通(tong)常(chang)不(bu)檢(jian)查(zha)設(she)計(ji)的(de)時(shi)序(xu)行(xing)為(wei),或(huo)者(zhe)至(zhi)多(duo)檢(jian)查(zha)連(lian)接(jie)是(shi)否(fou)存(cun)在(zai)延(yan)遲(chi)(或沒有延遲),因此一般可以給所有時鍾指定同一頻率。這就大大簡化了用戶為形式工具定義時鍾信息的任務。
分fen階jie段duan測ce試shi被bei測ce器qi件jian可ke能neng有you多duo種zhong工gong作zuo模mo式shi,這zhe些xie模mo式shi可ke能neng會hui影ying響xiang可ke激ji活huo的de連lian通tong性xing路lu徑jing或huo設she計ji邏luo輯ji。測ce試shi應ying確que保bao每mei種zhong有you效xiao模mo式shi都dou得de到dao測ce試shi,同tong時shi還hai要yao充chong分fen利li用yong所suo有you設she計ji最zui小xiao化hua(即黑盒化處理)的機會 —— 針對具體模式進行配置時可能會有這種機會。
yonghuhaiyingzhuyisuozhixingceshidefangmian,bingxiangyingdiduiceshijinxingfenzuyibianzhichifenjieduanfangfa,zheyangceshihuanjingdeshezhihuigengjiandan。liru,ruguocunchuqilianjieceshishuyuyizubixujinxingdeliantongxingjianzha,bingqiesuoyoucunchuqijincunzaiyushaoshujigezimokuaizhong,zechuzhexiezimokuaiwaidesuoyoushejidoukeyijinxingheihehuachuli。zhezhongtedingdezuixiaohuaduiyuliantongxingjianzhadelingyigefangmian(例如檢查 IP 接口或網橋連接)可ke能neng是shi不bu可ke行xing的de。其qi他ta測ce試shi方fang麵mian可ke能neng需xu要yao不bu同tong的de最zui小xiao化hua策ce略lve,因yin此ci可ke以yi在zai測ce試shi策ce略lve的de第di二er階jie段duan中zhong定ding義yi,並bing在zai第di三san階jie段duan和he第di四si階jie段duan中zhong進jin一yi步bu定ding義yi設she置zhi策ce略lve。
詳細信息:實施更高效流程的工具
某些 Mentor Graphics 客戶使用的方法(比如上麵的例子)一般遵循一套通用步驟:首先,聲明檢查器的一個實例。然後,在適當的字段中添加適當的信號名稱。使用 Questa Formal,此方法適用於 Verilog、VHDL、hunheyuyanshejihehunheyuyancengcijiegou。benwenshiwomennulirangqitagongchengtuanduinenggouyizuishaodegongzuoshiyongleisiyanzhengliuchengdeyibufen。zaiwomendefangfazhong,womendingyileliantongxingguifandianzibiaogedegeshi,bingqiebianxieleyigejiaobenlaichuangjianSVA 或 PSL 檢查器。我們還創建了一組屬性模板,以便支持多種類型的連通性檢查。該半自動化流程的詳細信息(包括代碼)說明如下。
為了能夠更好地部署這種連通性檢查方法,我們基於腳本的新環境允許自動創建各種所需文件。我們開發了一個 Perl 腳本 GenConn.pl,利用它來解析連通性信息的文本文件,創建 SVA 或 PSL 檢查器,還可以創建 Questa Formal 的 makefile。為此需要定義連通性數據的格式,然後作為製表符分隔值 (TSV) 或逗號分隔值 (CSV) 的文件提供給腳本。
利用形式驗證檢查 SoC 連通性的正確性
目前,腳本可以支持和創建七種類型的連通性檢查:
■ 點對點,有或無延遲
■ 條件點對點,有或無延遲
■ 互斥信號
■ 接高電平的信號
■ 接低電平的信號
要創建這些類型的檢查器,用戶需要填充連通性規範文件。該文件的格式詳見圖 4。
連通性規範

圖 4
“檢查器關鍵字” 表示用戶希望推斷的檢查類型,“信號 ...” 和 “條件信號” 條目是指向要檢查連通性的設計信號或端口的層次路徑。“延遲值” 是時序延遲周期數,須為整數。
例如,假設我們要檢查信號 top.en 到 top.u1.u2.enable 的連通性,並且該路徑上應有兩個周期的時序延遲。
圖 5 顯示了規範文件中該條目的樣子。請注意,對於互斥檢查器,雖然表中顯示了四個連接,但實際上可以指定任意數量的連接。
圖 5
除連通性信息外,規範文件還應包括被測設計的名稱、時鍾的名稱以及檢查器將使用的複位。無論高電平有效還是低電平有效,都需要提供複位感測。這些信息應按照如下格式指定:
■ Design <DUT 名稱>
■ Clock <檢查器時鍾名稱>
■ Reset <檢查器複位名稱>
■ Reset_sense <低或高>
連通性規範文件需要以 TSV 或 CSV 格式傳遞給腳本。完整 TSV 格式連通性規範文件的例子如圖 6 所示。

圖 6
一旦以正確格式描述了完整的連通性規範,便可將其傳遞給腳本以創建檢查器。
該腳本可以接受多個參數,如圖 7 所示。

圖 7
默認情況下,預期輸入格式為 TSV,檢查器輸出文件(名為 “checkers.sv”)將采用 SVA 格式。不過,用戶可以通過指定適當的選項來更改默認行為。
腳本會自動創建輸出連通性規範文件。它是 TSV 或 CSV 規範輸入的副本,但每個條目都包括所創建檢查器的名稱。該文件的默認名稱為 checker_conn_spec,可使用 -s 開關予以覆蓋;擴展名為 .tsv 或 .csv,具體取決於輸入文件的格式。
輸出文件 checkers.sv 包含用於構建檢查器的所有必要信息。為了簡化使用,先前說明的 “屬性模板” 已經固定,並由腳本自動創建。檢查器模板本身、檢查器實例化和綁定信息都包含在一個檢查器文件中。圖 8(注意下一頁仍有代碼)顯示了 SVA 風格 checkers.sv 文件輸出的例子。


圖 8
選擇生成的 makefile 允許用戶編譯所創建的 SVA 或 PSL 檢查器文件以用於 Questa Formal,然後運行形式
分析。
該 makefile 名為 Makefile _ ConnCheck。它有三個條目:
■ compile _ checkers:編譯 SVA 或 PSL
■ compile _ formal _ model:運行 CSL 流程以構建形式模型
■ run _ formal:運行 Questa Formal “證明” 流程
還有一個 run_all 條目,它允許依次執行所有三個步驟。為了運行 makefile 中的所有步驟,用戶需要執行:
make –f Makefile _ ConnCheck run _ all
運行形式編譯和證明步驟的結果分別放在目錄 “results/csl” 和 “results/prove” 中。
Makefile _ ConnCheck 文件具有成功編譯和運行 Questa Formal 所需的基本條目,但它更多地是作為模板提供,用戶在使用之前很可能需要進行編輯。
例如,makefile 沒有引用形式驗證的控製文件(用於定義時鍾、設置約束等),因此可能需要創建和指定該文件。
還有一個附加腳本 GenDoc.pl。此腳本的作用是將形式結果注釋到 checker _ conn _ spec 文件上,該文件是自動生成並加注了檢查器名稱的連通性規範。GenDoc 腳本應在獲得形式 “證明” 結果後運行。
該腳本可以接受多個參數,如圖 9 所示。

圖 9
默認輸入和輸出文件名為:
■ 連通性規範輸入文件名:checker _ conn _ spec.tsv
■ 連通性規範輸出文件:conn _ spec _ results(後綴取決於輸入文件格式)
■ 證明報告文件名:results/prove/0in _ prove.rpt
所有這些默認值都可以使用適當的開關予以覆蓋。
在 “證明” 形式運行之後,生成的輸出文件會詳細說明每個連通性規範條目以及檢查器名稱和狀態,如圖 10
所示。

圖 10
下一頁上的圖 11 給出了可用於運行完整連通性檢查流程的命令示例,圖 12 顯示了整個流程。

圖 11

圖 12
其他應用
連通性檢查在許多應用中都很有價值。下麵介紹幾個例子。
焊盤環檢查
複雜器件具有多種配置,SoC 中的 IO bukebimiandihuishejifuzadeduolufuyonghanpan。bixuyanzhengsuoyoupeizhixiadehanpanhuan,jianzhameizhongmoshixiashifoudoucunzaizhengquelianjie。liyongxingshijishujianzhazhezhongliantongxinghuiqiongjinsuoyoukenengxing,faxianjiduanqingkuangbingdailaizidonghuagongneng,erfangzhenjishuchangchangwufazuodaozheyidian。
存儲器 BIST 檢查
設計常常會包含由內建自測試 (BIST) 邏輯測試的存儲器,其中 BIST 邏輯是在 RTL 階段插入。可能是許多存儲器(常常位於不同層級)連接到單個主 BIST 控製器。
來自 BIST 控製器的控製信號連接到各種存儲器或存儲器控製器,這些連接可以是共用的。例如,來自 BIST控製器的 write _ enable 可以連接到許多存儲器上的 write _ enable 管腳。
形式連通性檢查是一種有效替代方法,用戶無需編寫動態測試來檢查存儲器 BIST 連接並在每次更改 RTL時重新運行測試。
此外,形式檢查還能確保這些存儲器/MBIST 連接上沒有放置時序邏輯,這常常是一個設計要求。
JTAG 檢查
與 MBIST 檢查類似,設計人員可以在設計中添加 JTAG 電路,這常常也在 RTL 階段進行。JTAG 的潛在用途包括:創建對設計的測試訪問,啟動全掃描檢查,或控製 MBIST 電路。
JTAG 邏輯具有固定的規範和多種標準工作模式。連通性檢查可用來確保所有正確的設計元素(例如 MBIST控製器)都連接到預期的 JTAG 控製寄存器。
在某些 JTAG 模mo式shi下xia,邊bian界jie掃sao描miao寄ji存cun器qi形xing成cheng一yi條tiao長chang鏈lian。該gai鏈lian的de長chang度du由you設she計ji團tuan隊dui確que定ding。在zai連lian通tong性xing規gui範fan中zhong將jiang長chang度du指zhi定ding為wei延yan遲chi周zhou期qi數shu,連lian通tong性xing檢jian查zha便bian可ke確que保bao在zai特te定ding模mo式shi下xia該gai鏈lian的de長chang度du是shi正zheng確que的de。
結語
本文提供的信息當然是很粗略的。詳細記錄哪怕是最基本的 SoC 驗(yan)證(zheng)流(liu)程(cheng),也(ye)很(hen)容(rong)易(yi)寫(xie)上(shang)數(shu)十(shi)頁(ye)甚(shen)至(zhi)更(geng)多(duo)。然(ran)而(er),盡(jin)管(guan)簡(jian)短(duan),但(dan)應(ying)該(gai)還(hai)是(shi)有(you)充(chong)足(zu)的(de)材(cai)料(liao)來(lai)供(gong)用(yong)戶(hu)開(kai)始(shi)製(zhi)定(ding)流(liu)程(cheng),以(yi)實(shi)現(xian)更(geng)有(you)效(xiao)的(de)連(lian)通(tong)性(xing)檢(jian)查(zha)。
免責聲明:本文為轉載文章,轉載此文目的在於傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請電話或者郵箱聯係小編進行侵刪。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 貿澤EIT係列新一期,探索AI如何重塑日常科技與用戶體驗
- 算力爆發遇上電源革新,大聯大世平集團攜手晶豐明源線上研討會解鎖應用落地
- 創新不止,創芯不已:第六屆ICDIA創芯展8月南京盛大啟幕!
- AI時代,為什麼存儲基礎設施的可靠性決定數據中心的經濟效益
- 矽典微ONELAB開發係列:為毫米波算法開發者打造的全棧工具鏈
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
微波功率管
微波開關
微波連接器
微波器件
微波三極管
微波振蕩器
微電機
微調電容
微動開關
微蜂窩
位置傳感器
溫度保險絲
溫度傳感器
溫控開關
溫控可控矽
聞泰
穩壓電源
穩壓二極管
穩壓管
無焊端子
無線充電
無線監控
無源濾波器
五金工具
物聯網
顯示模塊
顯微鏡結構
線圈
線繞電位器
線繞電阻



