專利名稱:覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路的驗(yàn)證,特別涉及基于覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證。
背景技術(shù):
隨著集成電路設(shè)計(jì)規(guī)模的不斷增大,功能日趨復(fù)雜,驗(yàn)證逐漸成為制約集成電路設(shè)計(jì)的瓶頸之一。傳統(tǒng)的驗(yàn)證方法不僅效率低,而且驗(yàn)證結(jié)果的可靠性也不能完全得到保證,驗(yàn)證的遺漏點(diǎn)往往會(huì)成為導(dǎo)致芯片崩潰的殺手。為了解決驗(yàn)證的問(wèn)題,最近出現(xiàn)了很多新的驗(yàn)證方法學(xué),例如基于斷言的驗(yàn)證,覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證等。通過(guò)隨機(jī)激勵(lì)能夠發(fā)現(xiàn)很多設(shè)計(jì)和驗(yàn)證人員沒(méi)有預(yù)想到的角落,但是如果不對(duì)隨機(jī)激勵(lì)源加以約束往往會(huì)產(chǎn)生很多重復(fù)的激勵(lì),這些激勵(lì)不能提高驗(yàn)證的質(zhì)量,只會(huì)降低驗(yàn)證的效率,延長(zhǎng)驗(yàn)證的收斂時(shí)間。為了加速隨機(jī)驗(yàn)證的收斂,我們通常會(huì)把覆蓋率數(shù)據(jù)反饋給激勵(lì)源,激勵(lì)源根據(jù)當(dāng)前的覆蓋率情況對(duì)后續(xù)的隨機(jī)激勵(lì)加以約束,產(chǎn)生有針對(duì)性的激勵(lì),這樣就可以減少簡(jiǎn)單重復(fù)的隨機(jī)激勵(lì),加速驗(yàn)證的收斂過(guò)程。目前基于覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證都是使用單臺(tái)計(jì)算機(jī)或工作站進(jìn)行的,在項(xiàng)目進(jìn)度緊迫時(shí)不能有效加快驗(yàn)證的速度。因此需要一種能夠加速驗(yàn)證的收斂過(guò)程的基于覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的方法。
發(fā)明內(nèi)容
本發(fā)明的目的在于解決上述問(wèn)題中的一個(gè)或多個(gè)。為了達(dá)到上述目的,本發(fā)明提出一種方法,其充分利用多計(jì)算機(jī)的資源,通過(guò)共享及融合覆蓋率數(shù)據(jù)加快基于覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的收斂過(guò)程。本發(fā)明在一個(gè)方面,提出一種利用至少兩個(gè)計(jì)算單元進(jìn)行覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的方法,所述至少兩個(gè)計(jì)算單元包括第一計(jì)算單元和第二計(jì)算單元,所述第一計(jì)算單元具有第一覆蓋率數(shù)據(jù)庫(kù),所述第二計(jì)算單元具有第二覆蓋率數(shù)據(jù)庫(kù),所述第一計(jì)算單元和所述第二計(jì)算單元均可訪問(wèn)總覆蓋率數(shù)據(jù)庫(kù),所述方法包括
所述第一計(jì)算單元啟動(dòng)第一隨機(jī)驗(yàn)證,并將第一隨機(jī)驗(yàn)證產(chǎn)生的第一覆蓋率數(shù)據(jù)寫入第一覆蓋率數(shù)據(jù)庫(kù),
所述第二計(jì)算單元啟動(dòng)第二隨機(jī)驗(yàn)證,并將第二隨機(jī)驗(yàn)證產(chǎn)生的第二覆蓋率數(shù)據(jù)寫入第二覆蓋率數(shù)據(jù)庫(kù),
每隔一段時(shí)間,將第一覆蓋率數(shù)據(jù)庫(kù)的第一覆蓋率數(shù)據(jù)和第二覆蓋率數(shù)據(jù)庫(kù)的第二覆蓋率數(shù)據(jù)寫入總覆蓋率數(shù)據(jù)庫(kù),
對(duì)總覆蓋率數(shù)據(jù)庫(kù)中的第一覆蓋率數(shù)據(jù)和第二覆蓋率數(shù)據(jù)進(jìn)行融合,得到融合的覆蓋率數(shù)據(jù),
將融合的覆蓋率數(shù)據(jù)寫入第一覆蓋率數(shù)據(jù)庫(kù)和第二覆蓋率數(shù)據(jù)庫(kù)。根據(jù)本發(fā)明的另一方面,第一計(jì)算單元使用第一隨機(jī)激勵(lì)啟動(dòng)第一隨機(jī)驗(yàn)證,第二計(jì)算單元使用第二隨機(jī)激勵(lì)啟動(dòng)第二隨機(jī)驗(yàn)證,第一隨機(jī)激勵(lì)與所述第二隨機(jī)激勵(lì)不CN 同。根據(jù)本發(fā)明的另一方面,第一計(jì)算單元根據(jù)融合的覆蓋率數(shù)據(jù)調(diào)整第一隨機(jī)激勵(lì),第二計(jì)算單元根據(jù)融合的覆蓋率數(shù)據(jù)調(diào)整第二隨機(jī)激勵(lì)。根據(jù)本發(fā)明的另一方面,調(diào)整第一隨機(jī)激勵(lì)包括改變第一激勵(lì)或者調(diào)整指令的權(quán)重。根據(jù)本發(fā)明的另一方面,還包括使用第三計(jì)算單元根據(jù)融合的覆蓋率數(shù)據(jù)進(jìn)行第三隨機(jī)驗(yàn)證。本發(fā)明具有下列優(yōu)點(diǎn)
1、各計(jì)算機(jī)間通過(guò)網(wǎng)絡(luò)共享覆蓋率數(shù)據(jù),并行工作減少單個(gè)計(jì)算機(jī)性能對(duì)驗(yàn)證速度的制約,可有效加快基于覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的收斂過(guò)程。2、通過(guò)在仿真腳本中加入網(wǎng)絡(luò)傳輸命令或使用已有的網(wǎng)絡(luò)傳輸工具即可將覆蓋率數(shù)據(jù)發(fā)送到遠(yuǎn)程的覆蓋率數(shù)據(jù)庫(kù)。通常仿真工具產(chǎn)生覆蓋率數(shù)據(jù)可以通過(guò)簡(jiǎn)單的辦法進(jìn)行融合。整個(gè)控制簡(jiǎn)單,避免了實(shí)現(xiàn)的復(fù)雜性。3、可以根據(jù)計(jì)算機(jī)資源,隨時(shí)增加或減少整個(gè)驗(yàn)證網(wǎng)絡(luò)中計(jì)算機(jī)的數(shù)目,不會(huì)中斷驗(yàn)證進(jìn)程。
圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的使用多計(jì)算單元加速覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的系統(tǒng)架構(gòu)示意圖。
具體實(shí)施例方式以下結(jié)合附圖,對(duì)本發(fā)明的具體實(shí)施例進(jìn)行詳細(xì)的說(shuō)明。如圖1所示,多個(gè)計(jì)算單元,例如計(jì)算單元1、2、3和4,連接到中心計(jì)算單元5,該連接可以是無(wú)線連接或者有線連接。本發(fā)明的計(jì)算單元可以是常用的計(jì)算機(jī),但不限于此, 計(jì)算單元可以包括能夠進(jìn)行仿真的任何計(jì)算設(shè)備。各計(jì)算單元能夠分別啟動(dòng)自己的隨機(jī)仿真,為了減小各計(jì)算單元產(chǎn)生的激勵(lì)的相關(guān)性,各計(jì)算單元使用的隨機(jī)激勵(lì)或隨機(jī)種子應(yīng)有足夠差別。各計(jì)算單元有本地的覆蓋率數(shù)據(jù)庫(kù),這樣可以減少通信給仿真速度造成的影響。遠(yuǎn)程覆蓋率數(shù)據(jù)庫(kù)(即,總覆蓋率數(shù)據(jù)庫(kù))位于中心計(jì)算單元5上。總覆蓋率數(shù)據(jù)庫(kù)融合來(lái)自各計(jì)算單元的覆蓋率數(shù)據(jù)。例如,總覆蓋率數(shù)據(jù)庫(kù)利用可以利用仿真工具提供的覆蓋率融合辦法或腳本語(yǔ)言融合來(lái)自各計(jì)算單元的覆蓋率數(shù)據(jù),從而生成總覆蓋率數(shù)據(jù)??偢采w率數(shù)據(jù)庫(kù)也可以位于計(jì)算單元1-4其中之一從而不需要中心計(jì)算單元5。下面以Synopsys公司的VCS作為仿真工具示例性地說(shuō)明本發(fā)明的使用多計(jì)算單元加速覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的具體過(guò)程。需要說(shuō)明的是本發(fā)明不限于VCS,本發(fā)明提出的方法適用于所有支持覆蓋率仿真的EDA工具。首先,各計(jì)算機(jī)(仿真計(jì)算機(jī))分別啟動(dòng)自己的仿真,仿真使用設(shè)計(jì)好的側(cè)重于不同驗(yàn)證點(diǎn)的激勵(lì),例如驗(yàn)證設(shè)計(jì)中的不同模塊的激勵(lì),各指令比重不同的激勵(lì),正常模式和異常模式的激勵(lì)等。當(dāng)僅有一條隨機(jī)激勵(lì)時(shí)可以使用不同的種子作為隨機(jī)激勵(lì)的種子, 例如各計(jì)算機(jī)的MAC地址,計(jì)算機(jī)號(hào)等有區(qū)分的信息。
4
仿真時(shí)各計(jì)算機(jī)維護(hù)一套本地的覆蓋率數(shù)據(jù),覆蓋率的數(shù)據(jù)從名稱上加以區(qū)分, 各仿真計(jì)算機(jī)的本地覆蓋率數(shù)據(jù)使用-cm_name選項(xiàng)生成名稱不同的本地覆蓋率數(shù)據(jù)。每隔一段時(shí)間,各計(jì)算機(jī)使用網(wǎng)絡(luò)命令(例如Linux操作系統(tǒng)下的scp或FTP傳輸工具,例如 gftp等)將本地的覆蓋率數(shù)據(jù)拷貝到網(wǎng)絡(luò)中具有固定網(wǎng)址的中心計(jì)算機(jī)(中心計(jì)算單元), 中心計(jì)算機(jī)具有遠(yuǎn)程覆蓋率數(shù)據(jù)庫(kù)(即,總覆蓋率數(shù)據(jù)庫(kù))。也可以不需要專門的存放共享的覆蓋率數(shù)據(jù)的中心計(jì)算機(jī),使用其中一臺(tái)仿真用的計(jì)算機(jī)存儲(chǔ)總覆蓋率數(shù)據(jù)庫(kù)。作為選擇,各仿真計(jì)算機(jī)本地仿真時(shí)可以使用-O選項(xiàng)生成名稱不同的本地仿真數(shù)據(jù),然后將本地仿真數(shù)據(jù)發(fā)送到總覆蓋率數(shù)據(jù)庫(kù)??偢采w率數(shù)據(jù)庫(kù)對(duì)收集到的來(lái)自各計(jì)算機(jī)的覆蓋率數(shù)據(jù)進(jìn)行融合,總覆蓋率數(shù)據(jù)庫(kù)僅保存和更新來(lái)自各仿真計(jì)算機(jī)的不同數(shù)據(jù),使用名稱作為區(qū)分,不需要額外的融合。例如覆蓋率數(shù)據(jù)庫(kù)使用-cm_dir -cm_map -cm_name選項(xiàng)將來(lái)自各仿真計(jì)算機(jī)的數(shù)據(jù)融合成一個(gè)統(tǒng)一的覆蓋率數(shù)據(jù),減少總的覆蓋率文件的數(shù)據(jù)。每隔一段時(shí)間,當(dāng)各計(jì)算機(jī)需要根據(jù)覆蓋率情況對(duì)隨機(jī)激勵(lì)的產(chǎn)生進(jìn)行新的調(diào)整時(shí),發(fā)送命令從總覆蓋率數(shù)據(jù)庫(kù)取回融合后的覆蓋率數(shù)據(jù),并根據(jù)各計(jì)算機(jī)仿真的總覆蓋率情況對(duì)后續(xù)產(chǎn)生的隨機(jī)激勵(lì)進(jìn)行約束調(diào)整。例如,每隔一段時(shí)間或當(dāng)各計(jì)算機(jī)的覆蓋率提升較慢時(shí),各計(jì)算機(jī)使用網(wǎng)絡(luò)命令或FTP工具從遠(yuǎn)程覆蓋率數(shù)據(jù)庫(kù)拷貝出融合后的覆蓋率數(shù)據(jù)并和本地的覆蓋率數(shù)據(jù)進(jìn)行再融合,隨機(jī)激勵(lì)源根據(jù)當(dāng)前的覆蓋率情況對(duì)后續(xù)產(chǎn)生的激勵(lì)進(jìn)行調(diào)整,例如,選擇不同的激勵(lì)或者調(diào)整各指令的權(quán)重等。當(dāng)需要加快驗(yàn)證的收斂速度時(shí),可直接把新的計(jì)算機(jī)連接到驗(yàn)證網(wǎng)絡(luò)上。新計(jì)算機(jī)首先從總覆蓋率數(shù)據(jù)庫(kù)拷貝出目前已驗(yàn)證的總的覆蓋率,然后根據(jù)當(dāng)前驗(yàn)證的情況啟動(dòng)新的驗(yàn)證。另外,當(dāng)需要把其中某些計(jì)算機(jī)用于其他用途時(shí),也可在該計(jì)算機(jī)將本地覆蓋率數(shù)據(jù)拷貝到總覆蓋率數(shù)據(jù)庫(kù)后中止該計(jì)算機(jī)的仿真。實(shí)例
下面列舉具體的例子。通過(guò)以一款USB2.0 Slave控制器為例,說(shuō)明如何實(shí)現(xiàn)使用多計(jì)算機(jī)加速覆蓋率驅(qū)動(dòng)的隨機(jī)過(guò)程。對(duì)于USB2. 0 Slave控制器的驗(yàn)證至少要包括低速/全速,控制傳輸/等時(shí)傳輸/ 中斷傳輸/塊傳輸,各種類型枚舉,電氣層正常/異常,內(nèi)部緩存空/滿等情況的驗(yàn)證。這些功能點(diǎn)將通過(guò)System Verilog中的covergroup禾口 assert進(jìn)行描述,covergroup的覆蓋率會(huì)反饋到激勵(lì)源以調(diào)整各種USB包的比例以及插入異常包等以實(shí)現(xiàn)基于覆蓋率驅(qū)動(dòng)的驗(yàn)證。當(dāng)設(shè)計(jì)修改后,我們需要對(duì)設(shè)計(jì)進(jìn)行回歸驗(yàn)證,為了縮短驗(yàn)證時(shí)間,我們可能會(huì)同時(shí)啟動(dòng)多臺(tái)仿真計(jì)算機(jī)從不同方面驗(yàn)證修改后的設(shè)計(jì),例如分別驗(yàn)證各種枚舉,緩存空滿,正常異常包等。為了使驗(yàn)證人員的覆蓋率數(shù)據(jù)能夠共享,從整體上評(píng)估驗(yàn)證的進(jìn)度,我們需要融合各計(jì)算機(jī)的驗(yàn)證結(jié)果。各仿真計(jì)算機(jī)生成本地覆蓋率數(shù)據(jù)庫(kù)時(shí),使用VCS中的-ο選項(xiàng)生成不同的覆蓋率數(shù)據(jù),例如-ο simv. enum, -ο simv. buffer,-ο simv. error_ pkg等,每運(yùn)行一小時(shí),所有仿真計(jì)算機(jī)將本地覆蓋率數(shù)據(jù)拷貝到網(wǎng)絡(luò)上特定計(jì)算機(jī)(總覆蓋率數(shù)據(jù)庫(kù))的C0Verage_SUm文件夾下。當(dāng)總覆蓋率數(shù)據(jù)庫(kù)檢查到本地文件有更新時(shí),使用VCS - cm_dir simv. enum - cm_dir simv. buffer - cm_dir simv. error_pkg - cm_map sum - cm_name c0V_sum生成統(tǒng)一的覆蓋率數(shù)據(jù)C0V_sum。然后各仿真計(jì)算機(jī)從總覆蓋率數(shù)據(jù)庫(kù)拷貝回coV_Sum以替代原有的本地覆蓋率數(shù)據(jù),這樣各仿真計(jì)算機(jī)就得到了其他計(jì)算機(jī)的覆蓋率數(shù)據(jù),此時(shí)各仿真計(jì)算機(jī)可以根據(jù)總的覆蓋率情況調(diào)整激勵(lì)產(chǎn)生策略,例如緩存滿沒(méi)有發(fā)生時(shí),即可調(diào)整USB Host發(fā)包的速度,降低CPU讀取包的速度。通過(guò)四臺(tái)計(jì)算機(jī)共享覆蓋率的辦法進(jìn)行回歸驗(yàn)證可以將原本一臺(tái)計(jì)算機(jī)需要三天的驗(yàn)證時(shí)間降低到一天左右,充分利用了多計(jì)算機(jī)的資源。通過(guò)上述實(shí)施例的描述,本發(fā)明的優(yōu)點(diǎn)是明顯的。本發(fā)明可以充分利用計(jì)算機(jī)資源,通過(guò)共享覆蓋率數(shù)據(jù)庫(kù)減少單個(gè)計(jì)算機(jī)性能對(duì)驗(yàn)證的制約,加速覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的收斂速度。應(yīng)當(dāng)理解的是,上述針對(duì)具體實(shí)施方式
的描述較為具體,只是為了更好的將本發(fā)明所公開(kāi)的驗(yàn)證方法進(jìn)行闡述,并不能因此而認(rèn)為是對(duì)本發(fā)明專利保護(hù)范圍的限制,本發(fā)明的專利保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
權(quán)利要求
1.一種利用至少兩個(gè)計(jì)算單元進(jìn)行覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的方法,所述至少兩個(gè)計(jì)算單元包括第一計(jì)算單元和第二計(jì)算單元,所述第一計(jì)算單元具有第一覆蓋率數(shù)據(jù)庫(kù),所述第二計(jì)算單元具有第二覆蓋率數(shù)據(jù)庫(kù),所述方法包括所述第一計(jì)算單元啟動(dòng)第一隨機(jī)驗(yàn)證,并將第一隨機(jī)驗(yàn)證產(chǎn)生的第一覆蓋率數(shù)據(jù)寫入第一覆蓋率數(shù)據(jù)庫(kù),所述第二計(jì)算單元啟動(dòng)第二隨機(jī)驗(yàn)證,并將第二隨機(jī)驗(yàn)證產(chǎn)生的第二覆蓋率數(shù)據(jù)寫入第二覆蓋率數(shù)據(jù)庫(kù),將第一覆蓋率數(shù)據(jù)庫(kù)的第一覆蓋率數(shù)據(jù)和第二覆蓋率數(shù)據(jù)庫(kù)的第二覆蓋率數(shù)據(jù)寫入總覆蓋率數(shù)據(jù)庫(kù),對(duì)總覆蓋率數(shù)據(jù)庫(kù)中的第一覆蓋率數(shù)據(jù)和第二覆蓋率數(shù)據(jù)進(jìn)行融合,得到融合的覆蓋率數(shù)據(jù),將融合的覆蓋率數(shù)據(jù)寫入第一覆蓋率數(shù)據(jù)庫(kù)和第二覆蓋率數(shù)據(jù)庫(kù)。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述第一計(jì)算單元使用第一隨機(jī)激勵(lì)啟動(dòng)第一隨機(jī)驗(yàn)證,所述第二計(jì)算單元使用第二隨機(jī)激勵(lì)啟動(dòng)第二隨機(jī)驗(yàn)證,所述第一隨機(jī)激勵(lì)與所述第二隨機(jī)激勵(lì)不同。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述第一計(jì)算單元根據(jù)融合的覆蓋率數(shù)據(jù)調(diào)整第一隨機(jī)激勵(lì),所述第二計(jì)算單元根據(jù)融合的覆蓋率數(shù)據(jù)調(diào)整第二隨機(jī)激勵(lì)。
4.根據(jù)權(quán)利要求3所述的方法,其中調(diào)整第一隨機(jī)激勵(lì)包括改變第一激勵(lì)或者調(diào)整指令的權(quán)重。
5.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的方法,還包括使用第三計(jì)算單元根據(jù)融合的覆蓋率數(shù)據(jù)進(jìn)行第三隨機(jī)驗(yàn)證。
6.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的方法,其中總覆蓋率數(shù)據(jù)庫(kù)位于與第一和第二計(jì)算單元連接的中心計(jì)算單元。
7.根據(jù)權(quán)利要求1-4中任一項(xiàng)所述的方法,其中總覆蓋率數(shù)據(jù)庫(kù)位于第一或第二計(jì)算單元。
全文摘要
本發(fā)明提出一種利用至少兩個(gè)計(jì)算單元進(jìn)行覆蓋率驅(qū)動(dòng)的隨機(jī)驗(yàn)證的方法,所述至少兩個(gè)計(jì)算單元包括第一計(jì)算單元和第二計(jì)算單元,所述第一和第二計(jì)算單元分別具有第一和第二覆蓋率數(shù)據(jù)庫(kù),所述第一和第二計(jì)算單元均可訪問(wèn)總覆蓋率數(shù)據(jù)庫(kù),所述第一和第二計(jì)算單元分別啟動(dòng)各自的隨機(jī)驗(yàn)證,并將產(chǎn)生的覆蓋率數(shù)據(jù)寫入各自的覆蓋率數(shù)據(jù)庫(kù),然后將覆蓋率數(shù)據(jù)庫(kù)的覆蓋率數(shù)據(jù)寫入總覆蓋率數(shù)據(jù)庫(kù),并對(duì)總覆蓋率數(shù)據(jù)庫(kù)中的覆蓋率數(shù)據(jù)進(jìn)行融合,得到融合的覆蓋率數(shù)據(jù),最后將融合的覆蓋率數(shù)據(jù)寫入第一覆蓋率數(shù)據(jù)庫(kù)和第二覆蓋率數(shù)據(jù)庫(kù)。
文檔編號(hào)G06F17/50GK102542088SQ20101060722
公開(kāi)日2012年7月4日 申請(qǐng)日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者陳濤 申請(qǐng)人:北京國(guó)睿中數(shù)科技股份有限公司