如何在開發(fā)IP的同時(shí)去鞏固集成和復(fù)用覆蓋率?IP的某些功能和性能是可以配置的,需要考慮的是IP被各種合理配置后的工作是否都能夠正常,將功能覆蓋率先整理為層次化的抽象功能覆蓋率模型,稱之為cover model。
這是一篇關(guān)于IP開發(fā)時(shí)如何考慮復(fù)用覆蓋率的論文。就硬件設(shè)計(jì)IP而言,我們無非是在實(shí)現(xiàn)IP,或者集成IP。就目前情形來看,IP的實(shí)現(xiàn)越來越多被集中在大型公司。一方面是由于他們有更多的經(jīng)驗(yàn)來保證可配置化的IP可以滿足各種用戶需求,另外一方面是由于他們的客戶基礎(chǔ)深厚,同時(shí)高質(zhì)量的IP研發(fā)成本和大量的silicon-proven可以形成良好的業(yè)務(wù)發(fā)展。目前多數(shù)公司在重要IP上面都會采用商業(yè)IP,這來自于多方面的考慮。作為Verifier可能會有更多的機(jī)會去一家SoC公司,從事于定制模塊、核心知識模塊或者IP模塊的驗(yàn)證。SoC中至少有三分之一以上的工作都屬于IP模塊的集成驗(yàn)證,SoC verifier看待IP更多的角度是從集成驗(yàn)證出發(fā)的。
這次摘錄的這篇論文的視角則是從IP開發(fā)的角度出發(fā)的。正好借這個(gè)機(jī)會,小編可以有空梳理一下IP在設(shè)計(jì)和驗(yàn)證兩方面開發(fā)的流程。由于文章中以PCIe為例,我接下來關(guān)于IP開發(fā)流程和集成驗(yàn)證流程的敘述也以PCIe為例吧。
對于一個(gè)成熟的PCIe IP而言,一家商業(yè)IP公司可能出售它的硬件設(shè)計(jì)IP,也可能出售它的驗(yàn)證IP,或者兩者都出售。例如Synopsys就同時(shí)出售它的設(shè)計(jì)IP和驗(yàn)證IP,也就是說這家大型的IP百貨公司在出售給你設(shè)計(jì)方案的同時(shí),還會建議你購買他家的驗(yàn)證方案。無論是設(shè)計(jì)還是驗(yàn)證,你都首先需要一個(gè)PCIe功能模式的配置。這個(gè)配置是結(jié)合SoC的架構(gòu)來制定的,從前期架構(gòu)研究中會選擇合適的功能、性能以及功耗等參數(shù)。Designer和verifier將都使用這個(gè)配置文件來生成定制化的設(shè)計(jì)IP或者驗(yàn)證IP。那么可以將配對的設(shè)計(jì)IP和驗(yàn)證IP進(jìn)行測試環(huán)境搭建,繼而進(jìn)行IP級或者SoC級的驗(yàn)證工作。但是在驗(yàn)證的過程中,我們?nèi)绾瓮瓿稍贗P級和SoC級的驗(yàn)證量化呢?這肯定離不開覆蓋率,尤其是功能覆蓋率。但是往往功能覆蓋率不會伴隨著設(shè)計(jì)IP或者驗(yàn)證IP一并生成,這是為什么?其實(shí)還是跟高度可配置化的IP本身有關(guān)。在這篇論文中就PCIe設(shè)計(jì)IP為例,講述了針對可配置化IP定義功能覆蓋率的困難之處。
由于IP的某些功能和性能是可以配置的,比如有一些功能可能在配置之后就會被禁止(靜態(tài)的),也有一些功能可能通過仿真時(shí)的寄存器配置被禁止(動態(tài)的),那么這些不同的配置就對定義一種通用的功能覆蓋率模型提出了挑戰(zhàn)。從文章來看,PCIe IP的開發(fā)者在驗(yàn)證時(shí)已經(jīng)很苦惱,因?yàn)樗麄兠媾R的挑戰(zhàn)要遠(yuǎn)大于SoC verifier,前者需要考慮所有的配置可能,而后者只需要選擇有限的配置進(jìn)行集成驗(yàn)證?;蛘哌@樣說,前者需要考慮的是IP被各種合理配置后的工作是否都能夠正常,而后者需要考慮的是IP在被SoC集成后是否能夠良好地融入系統(tǒng)。
IP集成的一個(gè)問題是,IP提供者不知道IP在被各種客戶集成時(shí),集成方式是否正確;而IP使用者也幾乎對于生成的IP其自身的可靠性、在IP系統(tǒng)級和SoC級的測試覆蓋情況抱有模糊的認(rèn)識。擋在雙方中間的障礙來自于他們?nèi)鄙僖粋€(gè)清晰的數(shù)據(jù)來表明對方的測試完成狀況。從這篇文章來看,如果IP提供商可以在生成定制IP的同時(shí)也能夠生成定制的功能覆蓋率,那么這樣的一份覆蓋率無論對于IP開發(fā)者在驗(yàn)證IP自身,或者是IP集成者在驗(yàn)證IP的集成時(shí),都將產(chǎn)生指導(dǎo)性的幫助。
那么是否存在這樣一份伴隨著IP配置文件而可以定制生成的功能覆蓋率呢?這篇文章給出了一種解決方案。從這篇文章最后的結(jié)論部分來看,可配置化的功能覆蓋率將伴對應(yīng)著每一種配置化的IP,而在測試這么多的IP配置時(shí),開發(fā)者可以利用這些功能覆蓋率來衡量IP的驗(yàn)證完備情況。如果這樣一份功能覆蓋率也能夠伴隨著IP一同交給SoC集成方,在IP集成時(shí)就可以綜合IP級和SoC級的驗(yàn)證情況來收集反饋在這份功能覆蓋率模型上。這樣如果IP提供方和集成方都基于同一個(gè)功能覆蓋率模型進(jìn)行交流,那么也將更容易一起回顧IP的功能測試和集成情況。
接下來小編概括這篇論文是如何實(shí)現(xiàn)高度可配置化IP的功能覆蓋率定制情況的。
將功能覆蓋率先整理為層次化的抽象功能覆蓋率模型,稱之為cover model。
抽象覆蓋率模型由多個(gè)block model構(gòu)成,這些block model所代表的某一項(xiàng)重要的功能最終合并起來,就可以構(gòu)成整體的功能情況,即cover model。
對于block model各自的樹狀結(jié)構(gòu),其每一個(gè)樹狀末端構(gòu)成了一個(gè)覆蓋變量,cover variable。但是這些覆蓋變量并不指向具體的信號,而仍然從抽象上來描述它所要測試的功能、關(guān)系的值域。
利用cover variable,可以將它們放置,或者交叉生成新的覆蓋率,稱之為cover group。
這些樹狀的覆蓋率模型包含的底層cover variable和cover group被收入到Excel表格中。伴隨它們的,還有配置化變量。配置化變量之所以重要是因?yàn)椴煌脑O(shè)定可能決定了某些cover variable的值域范圍,或者是否存在某些cover variable。
層次化放置的Excel表格被Perl腳本讀取,并且產(chǎn)生了層次化的SystemVerilog covergroup。這些covergroup也伴隨著block model,與各個(gè)功能一一對應(yīng),構(gòu)成了層次關(guān)系,最終作為一個(gè)定制化產(chǎn)生的cover model。
這篇論文同我現(xiàn)在做的一些在SoC級定義功能覆蓋率的方式不謀而合。首先功能覆蓋率在沉淀之前,需要有抽象的功能定義,那么不同的功能將可以作為獨(dú)立的block model。復(fù)雜的功能可以進(jìn)一步拆解為child block model,最終拆解到不能拆分為之,那么不能拆分的點(diǎn)就是cover variable。也許有的公司習(xí)慣于將功能測試點(diǎn)以平鋪的方式(plain text)展開,這對應(yīng)的也將是平鋪的SV cover group定義;如果你定義的功能點(diǎn)是抽絲剝繭,從Excel表格開始就得到了腳本處理的保障,那么你可以一開始將設(shè)計(jì)拆分為幾大功能,接下來利用層次化方法定義子一級的block model。
樹狀的覆蓋率模型與平鋪的覆蓋率模型相比有什么優(yōu)勢呢?它容易做測試回顧(review)和覆蓋率分析,而對于這篇論文中的IP驗(yàn)證,樹狀結(jié)構(gòu)也有利于一些變量的層次化傳遞和腳本的針對性處理。從復(fù)用角度來看,如果實(shí)現(xiàn)了Excel到SV cover group的腳本化流程,那么樹狀結(jié)構(gòu)的功能點(diǎn)拆分也有利于日后的維護(hù),例如從樹狀結(jié)構(gòu)中刪除某一個(gè)節(jié)點(diǎn)及其以下的所有子節(jié)點(diǎn)(即刪除某一項(xiàng)功能),又例如將IP級的覆蓋率樹狀結(jié)構(gòu)嫁接到SoC系統(tǒng)的覆蓋率樹狀結(jié)構(gòu)中,使其成為其中的某一個(gè)節(jié)點(diǎn),都是可行的方法。
結(jié)語
Excel到SV cover group的自動化是一個(gè)合適的方向,但在實(shí)現(xiàn)過程中,還需要理清,如何將抽象的功能點(diǎn)測試具象到各個(gè)cover group。比如功能點(diǎn)測試之間可能具有包含的關(guān)系,比如某些功能點(diǎn)測試可能仍然過于抽象需要進(jìn)一步細(xì)分,這篇論文利用腳本結(jié)合Excel中的IP配置變量來生成了層次化的功能覆蓋率模型,是一個(gè)不錯(cuò)的嘗試。這個(gè)覆蓋率如果可以從IP級貫穿到SoC級,那么將能夠更好地衡量IP集成測試的情況。
-
IP開發(fā)
+關(guān)注
關(guān)注
0文章
1瀏覽量
7615 -
pcle
+關(guān)注
關(guān)注
0文章
29瀏覽量
5792
發(fā)布評論請先 登錄
相關(guān)推薦
怎么提高非隨機(jī)圖形設(shè)計(jì)的故障覆蓋率?
嵌入式仿真平臺SkyEye的覆蓋率分析相關(guān)資料下載
重點(diǎn)厘清覆蓋率相關(guān)的概念以及在芯片開發(fā)流程中跟覆蓋率相關(guān)的事項(xiàng)
Systemverilog覆蓋率的合并和計(jì)算方式
針對功能覆蓋率的驗(yàn)證過程
Verilog代碼覆蓋率檢查
嵌入式代碼覆蓋率統(tǒng)計(jì)方法和經(jīng)驗(yàn)
![嵌入式代碼<b class='flag-5'>覆蓋率</b>統(tǒng)計(jì)方法和經(jīng)驗(yàn)](https://file.elecfans.com/web1/M00/D8/D3/o4YBAF_1YqiAZu9UAAAxHZKXLMg754.png)
統(tǒng)計(jì)嵌入式代碼覆蓋率的方法和經(jīng)驗(yàn)
![統(tǒng)計(jì)嵌入式代碼<b class='flag-5'>覆蓋率</b>的方法和經(jīng)驗(yàn)](https://file.elecfans.com/web1/M00/E7/B9/pIYBAGBhb12AYhw9AAAxHZKXLMg997.png)
怎么才能寫出高覆蓋率的Verilog代碼?
高覆蓋率的Verilog代碼的編寫技巧
SystemVerilog的覆蓋率建模方式
代碼覆蓋率記錄
![代碼<b class='flag-5'>覆蓋率</b>記錄](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論