專利名稱:對寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字視頻處理的芯片設(shè)計技術(shù)領(lǐng)域,尤其涉及一種基于功能覆蓋率驅(qū)動的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法,應(yīng)用于數(shù)字高清電視、 機(jī)頂盒以及視頻監(jiān)控等進(jìn)行視頻處理的芯片設(shè)計。
背景技術(shù):
數(shù)字圖像和視頻處理技術(shù)在諸多領(lǐng)域應(yīng)用廣泛,如數(shù)字電視、視頻監(jiān)控、醫(yī)療成像、エ業(yè)檢測和消費(fèi)電子產(chǎn)品等。目前處理算法通常是由軟件來完成的,隨著深亞微米エ藝和大規(guī)模集成電路技術(shù)的發(fā)展,多媒體實(shí)時硬件處理成為ー個新的發(fā)展趨勢。隨著嵌入式系統(tǒng)的高速發(fā)展,嵌入式系統(tǒng)芯片(SoC)視頻芯片應(yīng)用范圍越來越廣泛,然而在芯片規(guī)模變得越來越大、功能變得越來越復(fù)雜、SoC的IP復(fù)用等新情況的出現(xiàn)使功能驗(yàn)證這一工作變得更重要、更艱巨。在現(xiàn)代集成電路(IC)設(shè)計中,大約有50% 70% 的設(shè)計周期被用在了功能驗(yàn)證上,而且隨著SoC規(guī)模的不斷擴(kuò)大,其比例還會不斷増加。如果在行為和功能調(diào)試時忽視這個過程,就很難在后面的物理設(shè)計階段發(fā)現(xiàn)邏輯性錯誤,而只能在流片之后才會被測試出來,這就導(dǎo)致了設(shè)計的高成本以及會耽擱芯片的最終上市時間(Time-to-Market)。從成本和上市時間的角度來考慮,通過功能驗(yàn)證發(fā)現(xiàn)邏輯性錯誤,將會極大地降低整個設(shè)計的成本。功能驗(yàn)證就是要確保硬件設(shè)計功能的正確性。本發(fā)明涉及的硬件設(shè)計是寄存器傳輸級(Register Transfer Level,簡稱RTL)的硬件設(shè)計,所以僅涉及對于RTL硬件設(shè)計的驗(yàn)證。簡而言之,就是核實(shí)經(jīng)過人工翻譯或工具翻譯后的設(shè)計屬性與翻譯前的設(shè)計屬性是否一致。它主要驗(yàn)證硬件的硬件描述語言(HDL)描述是否符合設(shè)計的功能描述?,F(xiàn)階段在業(yè)界廣泛應(yīng)用的功能驗(yàn)證方法主要有形式化驗(yàn)證、基于仿真的動態(tài)驗(yàn)證(Dynamic Verification)、FPGA驗(yàn)證和軟硬件協(xié)同驗(yàn)證。形式化驗(yàn)證方法使用數(shù)學(xué)方法形式化地證明設(shè)計實(shí)現(xiàn)是否部分或者全部滿足系統(tǒng)規(guī)范所描述的要求,它是ー種靜態(tài)的功能驗(yàn)證方法學(xué),因此也可以把形式驗(yàn)證定義為是一種檢查所實(shí)現(xiàn)的設(shè)計是否滿足設(shè)計規(guī)格定義的某些屬性/持征的過程,由于形式驗(yàn)證存在狀態(tài)空間爆炸性增長的可能,形式驗(yàn)證只適合模塊級或中小系統(tǒng)級的驗(yàn)證。當(dāng)系統(tǒng)復(fù)雜度超出狀態(tài)空間捜索的半徑所能覆蓋的范圍,形式驗(yàn)證方法已無法完成驗(yàn)證任務(wù)。鑒于形式驗(yàn)證的局限性,因此對于規(guī)模較大設(shè)計的驗(yàn)證,仿真驗(yàn)證仍然是目前主要的驗(yàn)證方法。仿真驗(yàn)證方法是集成電路設(shè)計中必不可少的ー環(huán),在整個驗(yàn)證過程中占統(tǒng)治地位?;诜抡娴尿?yàn)證出發(fā)點(diǎn)是設(shè)計需求,根據(jù)設(shè)計需求分析出需要測試的功能,包括模塊子功能和系統(tǒng)功能,確定驗(yàn)證計劃,開發(fā)驗(yàn)證向量,建立測試用例,測試用例描述了在實(shí)際的情況下,芯片接收到的外部信號激勵,以及應(yīng)該產(chǎn)生的響應(yīng)。將待測的RTL硬件設(shè)計和仿真環(huán)境放在仿真器上仿真,檢查RTL硬件設(shè)計在各種實(shí)際激勵下的反應(yīng),檢查RTL硬件設(shè)計的功能是否正確,即是否與黃金C語言模型(Golden C Model) 一致,并得出覆蓋率。如果 RTL硬件設(shè)計的功能不正確,說明設(shè)計存在錯誤,查找原因修正錯誤再次進(jìn)行仿真,如果覆蓋率不滿足要求,說明驗(yàn)證不充分設(shè)計可能存在潛在錯誤,完善驗(yàn)證向量繼續(xù)進(jìn)行驗(yàn)證,直到RTL硬件設(shè)計功能與Golden C Model—致和覆蓋率達(dá)到吋,邏輯功能驗(yàn)證結(jié)束。從以上的分析可以看出,邏輯功能驗(yàn)證的主要精力花在激勵的生成、功能調(diào)試和覆蓋率的分析上。當(dāng)芯片的規(guī)模和功能越來越復(fù)雜時,輸入激勵的可能空間是巨大的,而且對ー個輸入激勵,完成同樣的視頻算法,硬件仿真的時間遠(yuǎn)比軟件仿真所需的時間長,窮盡仿真所有的輸入組合變得不可行。所以只能選取輸入空間中選擇部分有效的子集作為輸入激勵進(jìn)行驗(yàn)證。目前,在對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證吋,主要采用直接驗(yàn)證的方法,手動選取測試序列作為輸入激勵進(jìn)行測試。這種直接驗(yàn)證的方法的效率嚴(yán)重依賴于驗(yàn)證者的經(jīng)驗(yàn),選取的測試序列可能包含了大量對功能覆蓋率提高沒有貢獻(xiàn)的序列,花費(fèi)了大量的測試運(yùn)行時間,但卻未得到高的覆蓋率。所以,如何自動選取測試序列,并用盡量少的測試序列達(dá)到高的覆蓋率,從而加快驗(yàn)證的效率,提高驗(yàn)證的正確性,是業(yè)界人員不得不面對的ー個重要問題。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題有鑒于此,本發(fā)明的主要目的在于提供一種基于功能覆蓋率驅(qū)動的對視頻算法的寄存器傳輸級實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法,以解決采用直接驗(yàn)證的方法對視頻算法的寄存器傳輸級設(shè)計進(jìn)行驗(yàn)證吋,需要花費(fèi)大量測試時間,卻不能得到高的功能覆蓋率的問題,提高對視頻算法寄存器傳輸級設(shè)計進(jìn)行驗(yàn)證的效率和正確性。(ニ)技術(shù)方案為達(dá)到上述目的,本發(fā)明提供了ー種對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng),該系統(tǒng)包括測試視頻序列庫,用于存儲對視頻算法的RTL硬件設(shè)計進(jìn)行驗(yàn)證所需要的測試序列;測試向量生成器,用于從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,并生成測試向量,再將該測試向量輸出給黃金C語言模型(Golden C Model)和待驗(yàn)證的RTL硬件模型;Golden C Model和待驗(yàn)證的RTL硬件模型,用于在接收到測試向量后分別產(chǎn)生輸出,并將各自的輸出均輸出給文件比較器;文件比較器,用于比較Golden C Model的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則驗(yàn)證失敗。為達(dá)到上述目的,本發(fā)明還提供了ー種對視頻算法的寄存器傳輸級實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,該方法包括測試向量生成器從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,生成測試向量,并將該測試向量輸出給Golden C Model和待驗(yàn)證的RTL硬件模型; Golden C Model和待驗(yàn)證的RTL硬件模型接收到測試向量后,分別產(chǎn)生輸出,并將各自的輸出輸出給文件比較器;文件比較器比較Golden C Model的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則驗(yàn)證失敗。(三)有益效果從上述技術(shù)方案可以看出,本發(fā)明具有以下有益效果1、本發(fā)明提供的基于功能覆蓋率驅(qū)動的對視頻算法的寄存器傳輸級實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法,通過在Golden C Model上添加功能覆蓋率檢查代碼,生成測試序列自動選擇程序,能夠根據(jù)功能覆蓋率自動挑選測試序列,并和算法參數(shù)一起組成測試向量,使算法功能覆蓋率達(dá)到100%,因此解決了采用直接驗(yàn)證的方法對視頻算法的寄存器傳輸級設(shè)計進(jìn)行驗(yàn)證吋,需要花費(fèi)大量測試時間,卻不能得到高的功能覆蓋率的問題,提高了對視頻算法寄存器傳輸級設(shè)計進(jìn)行驗(yàn)證的效率和正確性。2、本發(fā)明提供的基于功能覆蓋率驅(qū)動的對視頻算法的寄存器傳輸級實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法,將待驗(yàn)證的功能點(diǎn)列表分為算法功能點(diǎn)和硬件功能點(diǎn),在Golden C Model上進(jìn)行算法功能點(diǎn)的測試場景構(gòu)建;因?yàn)镚olden C Model的運(yùn)行時間遠(yuǎn)比RTL仿真的時間快,所以能夠快速找到測試序列和參數(shù)組合構(gòu)成測試場景;構(gòu)建好滿足算法功能覆蓋率目標(biāo)的測試場景后,就可以并行運(yùn)行多個RTL仿真,從而大大提高驗(yàn)證的效率。
圖1是本發(fā)明提供的基于功能覆蓋率驅(qū)動的對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)的示意圖;圖2是對應(yīng)于圖1所示系統(tǒng)對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法流程圖;圖3為依照本發(fā)明實(shí)施例測試向量生成器生成測試向量的方法流程圖;圖4為依照本發(fā)明實(shí)施例在測試向量生成器生成測試向量后對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法流程圖。
具體實(shí)施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實(shí)施例,并參照附圖,對本發(fā)明進(jìn)ー步詳細(xì)說明。通常,基于功能覆蓋率驅(qū)動的對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證方法流程為 構(gòu)建測試場景,產(chǎn)生輸入激勵ヰRTL仿真ヰ覆蓋率分析,若覆蓋率未達(dá)到目標(biāo),則要順序重復(fù)上述步驟。當(dāng)硬件規(guī)模越來越大時,RTL仿真需要花費(fèi)大量時間,這樣完成一次迭代需要大量時間,要達(dá)到覆蓋率目標(biāo),需要多次迭代,所以總體驗(yàn)證時間巨大。本發(fā)明針對視頻算法的RTL硬件實(shí)現(xiàn)的特點(diǎn),提出了一種基于功能覆蓋率驅(qū)動的對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法,該方法將待驗(yàn)證的功能點(diǎn)列表分為算法功能點(diǎn)和硬件功能點(diǎn),其中算法功能點(diǎn)即視頻算法應(yīng)該滿足的功能特性,RTL硬件實(shí)現(xiàn)后,必須檢查視頻算法應(yīng)該滿足的功能特性是否被正確實(shí)現(xiàn);硬件功能點(diǎn)為硬件上的時序要求等;然后在Golden C Model上進(jìn)行算法功能點(diǎn)的測試場景構(gòu)建;因?yàn)镚olden C Model 的運(yùn)行時間遠(yuǎn)比RTL仿真的時間快,所以能夠快速找到測試序列和參數(shù)組合構(gòu)成測試場景;構(gòu)建好滿足算法功能覆蓋率目標(biāo)的測試場景后,就可以并行運(yùn)行多個RTL仿真,從而大大提高驗(yàn)證的效率。如圖1所示,圖1是依照本發(fā)明實(shí)施例基于功能覆蓋率驅(qū)動的對視頻算法的RTL 硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)的示意圖,該系統(tǒng)包括測試視頻序列庫、測試向量生成器、Golden C Model、待驗(yàn)證的RTL硬件模型和文件比較器。其中,測試視頻序列庫用于存儲對視頻算法的RTL硬件設(shè)計進(jìn)行驗(yàn)證所需要的測試序列。測試向量生成器用于從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,并生成測試向量,再將該測試向量輸出給Golden C Model和待驗(yàn)證的RTL硬件模型。GoldenC Model是用C語言編寫的實(shí)現(xiàn)一定視頻處理功能的模塊,待驗(yàn)證的RTL硬件模型是用硬件描述語言編寫的,實(shí)現(xiàn)與Golden C Model相同的視頻處理功能的模塊,是功能驗(yàn)證的對象。Golden C Model和待驗(yàn)證的RTL硬件模型接收到測試向量后,會分別產(chǎn)生輸出,并將各自的輸出輸出給文件比較器。文件比較器比較Golden C Model的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則待驗(yàn)證的RTL硬件模型中存在Bug,需要對待驗(yàn)證的RTL硬件模型進(jìn)行調(diào)試。其中測試向量生成器包含有一個測試序列自動選擇程序,該測試序列自動選擇程序在Golden C Model上添加了功能覆蓋檢查和覆蓋率評估代碼,具有自動挑選測試序列的功能。圖2是對應(yīng)于圖1所示系統(tǒng)對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法流程圖,該方法包括以下步驟步驟201 測試向量生成器從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,生成測試向量,并將該測試向量輸出給Golden C Model和待驗(yàn)證的RTL硬件模型;步驟202 =Golden C Model和待驗(yàn)證的RTL硬件模型接收到測試向量后,會分別產(chǎn)生輸出,并將各自的輸出均輸出給文件比較器;步驟203 文件比較器比較Golden C Model的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則待驗(yàn)證的RTL硬件模型中存在Bug,需要對待驗(yàn)證的RTL硬件模型進(jìn)行調(diào)試,返回執(zhí)行步驟201。基于圖2所示的對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法流程圖,圖3示出了依照本發(fā)明實(shí)施例測試向量生成器生成測試向量的方法流程圖,該方法包括以下步驟步驟1 在算法設(shè)計人員指導(dǎo)下確定待驗(yàn)證的算法功能點(diǎn)列表和測試視頻序列庫;步驟2 在Golden C Model上加入功能覆蓋檢查點(diǎn)和功能覆蓋檢查代碼,以及覆蓋率評估代碼,生成測試序列自動選擇程序;步驟3 在最佳聯(lián)合覆蓋率列表上,將所有算法功能點(diǎn)的屬性設(shè)為“未覆蓋”;步驟4 設(shè)定算法參數(shù),第一次運(yùn)行時設(shè)為默認(rèn);步驟5 運(yùn)行測試序列自動選擇程序,該自動選擇程序的步驟是1)遍歷測試視頻序列庫的所有測試序列,計算每個測試序列與已經(jīng)選出的測試序列集合的聯(lián)合覆蓋率,挑選聯(lián)合覆蓋率最高的測試序列進(jìn)入測試序列集合;2)將最佳聯(lián)合覆蓋率列表更新為本次遍歷聯(lián)合覆蓋率最高的測試序列所對應(yīng)的聯(lián)合覆蓋率列表;3)檢查功能覆蓋率,如果功能覆蓋率超過門限或迭代次數(shù)超過門限,則退出,否則返回步驟2。運(yùn)行一次步驟2到步驟4為一次迭代。其中,計算每個測試序列與已經(jīng)選出的測試序列集合的聯(lián)合覆蓋率,是在已產(chǎn)生的測試序列集合對應(yīng)的最佳聯(lián)合覆蓋率列表基礎(chǔ)上,將該測試序列新覆蓋的功能點(diǎn)屬性改為“已覆蓋”,再計算覆蓋率。步驟6 檢查算法功能覆蓋率,如未達(dá)到100%,則分析功能覆蓋率報告,根據(jù)不同情況采取如下措施1)重新返回步驟4,修改算法參數(shù);
2)向測試視頻序列庫中添加新的測試序列,返回步驟5 ;3)產(chǎn)生具有特定特征的測試序列,加入測試視頻序列庫,返回步驟5 ;步驟7 將挑選出的測試序列集合以及對應(yīng)的算法參數(shù)配置構(gòu)成測試向量。基于Golden C Model來產(chǎn)生測試向量的原因是,Golden C Model是RTL硬件設(shè)計的對比方,RTL硬件設(shè)計的目標(biāo)就是實(shí)現(xiàn)Golden C Model的功能,而且因?yàn)镚olden C Model是用C程序編寫,所以其運(yùn)行的速度遠(yuǎn)比硬件RTL仿真的速度快,基于Golden C Model能快速地找到合適的測試向量。在算法設(shè)計人員指導(dǎo)下確定待驗(yàn)證的算法功能點(diǎn)列表和測試視頻序列庫,這一點(diǎn)具有特別重要的意義。因?yàn)橥ǔG闆r下,視頻算法開發(fā)和硬件實(shí)現(xiàn)的任務(wù)由不同的部門來擔(dān)當(dāng)。如果一個RTL設(shè)計人員不了解視頻算法,僅以代碼覆蓋率為衡量目標(biāo)進(jìn)行驗(yàn)證,不僅效率不高,而且難以保證驗(yàn)證的質(zhì)量。因?yàn)榇a覆蓋率只是表示對RTL源代碼的執(zhí)行情況,和源代碼所描述的功能沒有關(guān)系,因而具有很大的局限性。比如一個狀態(tài)機(jī)的狀態(tài)如果每個狀態(tài)都覆蓋到,可是并不能表示狀態(tài)之間相互轉(zhuǎn)換的過程也被遍歷到。功能覆蓋率是用戶定義的在驗(yàn)證過程中某種功能的運(yùn)行程度,經(jīng)驗(yàn)表明,功能覆蓋率與出錯(bug)之間有緊密聯(lián)系。但代碼覆蓋率可以作為功能覆蓋率的補(bǔ)充,如果功能覆蓋率高而代碼覆蓋率低,有可能已有的待驗(yàn)證的功能點(diǎn)還不完全,此時需添加新的功能點(diǎn)。通常,視頻算法開發(fā)人員對算法有著比RTL設(shè)計人員更深入和更準(zhǔn)確的理解,所以在算法設(shè)計人員指導(dǎo)下確定待驗(yàn)證的算法功能點(diǎn)列表和測試視頻序列庫有著事半功倍的效果。在Golden C Model上加入功能覆蓋檢查點(diǎn)和功能覆蓋檢查代碼,以及覆蓋率評估代碼,可以生成測試序列自動選擇程序。關(guān)于如何實(shí)現(xiàn)測試序列自動選擇程序可以用典型的視頻處理算法運(yùn)動估計來舉例。假設(shè)待驗(yàn)證運(yùn)動估計的功能點(diǎn)有Case 1 當(dāng)輸入視頻發(fā)生場景切換時,運(yùn)動估計的相應(yīng)的處理是否和Golden C當(dāng)輸入視頻中含有大量紋理區(qū)域時,運(yùn)動估計相應(yīng)的處理是否和Golden當(dāng)輸入視頻中含有透明菜單時,運(yùn)動估計相應(yīng)的處理是否和Golden C
Model 一致;Case 2C Model 一致;Case 4Model 一致;Case 5 當(dāng)輸入視頻中含有超過運(yùn)動搜索范圍的運(yùn)動時,運(yùn)動估計相應(yīng)的處理是否和 Golden C Model 一致;那么,在Golden C Model 中添加數(shù)據(jù)結(jié)構(gòu) iTestCaseList數(shù)據(jù)結(jié)構(gòu)TestCaseList的元素和其代表的意義為isSeneChangeCovered 場景切換被覆蓋了嗎?isPatternCovered 周期性紋理區(qū)被覆蓋了嗎?isOSDCovered 透明菜單的場景被覆蓋了嗎?isBigMotionCovered 大運(yùn)動的場景被覆蓋了嗎?Coverage 覆蓋率TestCaseList所有元素的初始值為FALSE,即“未覆蓋”。然后在CModel上相應(yīng)的位置添加覆蓋檢查的代碼。比如在運(yùn)動估計中的代碼中有周期性紋理區(qū)檢測的標(biāo)志,isPattern.
則可以通過該標(biāo)志來檢查是否被周期性紋理區(qū)這個場景是否被覆蓋。如下所示If(isPattern = TRUE)thenisPatternCoved = TRUE ;在一個序列運(yùn)行結(jié)束后,可以檢查數(shù)據(jù)結(jié)構(gòu)TestCaseList各元素的屬性并得出覆蓋率并將該覆蓋率付給元素Coverage。遍歷一次測試序列庫,即運(yùn)行測試序列庫中的所有序列,能從中找出覆蓋率最高的序列,并將此序列放入測試序列集合。然后將本次遍歷中得到的覆蓋率及覆蓋列表作為初始值,進(jìn)行第二次的測試序列庫的遍歷,第二次遍歷挑選出的序列并非自身覆蓋率最高的序列,以第一次遍歷中得到的最佳覆蓋列表為初始值,在上面進(jìn)行覆蓋率計算,能計算出和已經(jīng)挑選出的序列組成的聯(lián)合覆蓋率最高的序列。第二次遍歷后再進(jìn)行第三次遍歷,直至聯(lián)合覆蓋率的大小超出設(shè)定的門限或者遍歷的次數(shù)超出設(shè)定的門限為止。如果聯(lián)合覆蓋率未達(dá)到100%,則分析功能覆蓋率報告,則可根據(jù)不同情況采取如下措施1)修改算法參數(shù),重新再進(jìn)行測試序列的選擇;2)向測試序列庫中添加新的視頻測試序列;3)產(chǎn)生具有特定特征的視頻測試序列,加入測試序列庫;如果僅使用一套算法參數(shù)運(yùn)行測試序列庫,很難使功能覆蓋率達(dá)到100%。比如對于運(yùn)動估計的功能點(diǎn)列表中isBigMotionCovered這個特征,采用如下方法進(jìn)行覆蓋判斷If(mvx > SEARCHRANGE_H)and(mvy > SEARCHRANGE_V)thenisBigMotionCovered = TRUE ;end.Mvx為運(yùn)動向量的水平分量。Mvy為運(yùn)動向量的垂直分量。SEARCHRANGE_H為水平搜索范圍參數(shù),SEARCHRANGE_V為垂直搜索范圍參數(shù),如果水平搜索范圍參數(shù)和垂直搜索范圍參數(shù)過大,則該條件不容易被滿足。如果將這兩個參數(shù)設(shè)定比較小的值,則很多測試序列都可以滿足這個要求。如果修改算法參數(shù)也無法使功能覆蓋率達(dá)到100%,則應(yīng)分析覆蓋率報告,添加新的視頻測試序列或者用隨機(jī)生成和指定特征生成的方法產(chǎn)生新的測試序列加入測試序列庫。這樣,可以將測試序列和算法參數(shù)組成測試向量。在測試向量生成器生成測試向量后,運(yùn)行RTL驗(yàn)證,圖4為依照本發(fā)明實(shí)施例在測試向量生成器生成測試向量后對視頻算法的RTL硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法流程圖,該方法包括以下步驟步驟10 將測試向量生成器生成的測試向量輸出給Golden C Model和待驗(yàn)證的RTL硬件模型,運(yùn)行Golden C Model仿真和RTL硬件模型仿真;Golden C Model和待驗(yàn)證的RTL硬件模型接收到測試向量后,分別產(chǎn)生輸出,并將各自的輸出均輸出給文件比較器;步驟20 文件比較器比較Golden C Model的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如不一致,則待驗(yàn)證的RTL硬件模型中存在Bug,需要修改代碼,返回步驟10,進(jìn)行功能調(diào)試;步驟30 檢查所有的測試向量是否都已經(jīng)過測試,如否,返回步驟10,繼續(xù)進(jìn)行功能調(diào)試;當(dāng)所有的測試向量都已運(yùn)行并且得到與Golden C Model相同的輸出,則算法功能驗(yàn)證結(jié)束;步驟40 制定待驗(yàn)證的硬件功能點(diǎn)列表;硬件功能點(diǎn)為除算法功能點(diǎn)之外的待驗(yàn)證的功能點(diǎn)。一般和時序有關(guān)。比如對于運(yùn)動估計這個視頻算法的RTL硬件實(shí)現(xiàn),可以制定如下的硬件功能點(diǎn)Case 1 不同幀率下運(yùn)動估計是否正確;Case2 相同幀率下時序信號發(fā)生變化時運(yùn)動估計的結(jié)果是否正確;步驟50 構(gòu)建硬件功能點(diǎn)測試場景;針對硬件功能點(diǎn)Case 1,修改運(yùn)動估計RTL硬件設(shè)計內(nèi)部的時序產(chǎn)生器參數(shù),產(chǎn)生不同幀率的時序;針對硬件功能點(diǎn)Case 2,修改運(yùn)動估計RTL硬件設(shè)計內(nèi)部的時序產(chǎn)生器參數(shù),產(chǎn)生相同幀率,但不同的行列消隱區(qū)長度,來產(chǎn)生不同的時序信號;步驟60 運(yùn)行RTL仿真;對于硬件功能點(diǎn)Case 1,構(gòu)建的測試場景為修改運(yùn)動估計RTL硬件設(shè)計內(nèi)部的時序產(chǎn)生器參數(shù),產(chǎn)生不同幀率的時序;所以修改時序產(chǎn)生器參數(shù)后,運(yùn)行修改參數(shù)后的RTL仿真,就能得到該測試場景下的輸出;步驟70 檢查功能覆蓋率,如硬件功能點(diǎn)未被覆蓋,返回步驟30,添加硬件功能測試場景,進(jìn)行RTL硬件模型驗(yàn)證;如果硬件功能點(diǎn)被覆蓋,則驗(yàn)證結(jié)束。上述驗(yàn)證方法能提高視頻算法RTL硬件實(shí)現(xiàn)的驗(yàn)證效率和正確性。因?yàn)镽TL驗(yàn)證的功能點(diǎn)分為算法功能點(diǎn)和硬件功能點(diǎn)。算法功能的驗(yàn)證通常占了整個驗(yàn)證的大部分時間。通過本發(fā)明的測試向量生成器可以生成使功能覆蓋率達(dá)到100%的測試向量。在RTL仿真中,一次RTL仿真需要大量的時間,仿真后發(fā)現(xiàn)Bug,修改再進(jìn)行仿真。要達(dá)到零Bug和100%功能覆蓋率,需要多次迭代。一個具有高功能覆蓋率的測試向量,能夠在一次仿真中發(fā)現(xiàn)盡可能多的Bug,從而大大減少迭代次數(shù)。除了算法功能點(diǎn)之外,RTL驗(yàn)證還需要對硬件時序等硬件功能點(diǎn)進(jìn)行驗(yàn)證,對于此類功能點(diǎn),采用直接驗(yàn)證的方法,即構(gòu)建測試場景,進(jìn)行RTL仿真,檢查功能點(diǎn)覆蓋率,如覆蓋率未達(dá)到要求,則構(gòu)建新的測試場景,重復(fù)上述步驟,直至功能點(diǎn)被完全覆蓋為止。以上所述的具體實(shí)施例,對本發(fā)明的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明的具體實(shí)施例而已,并不用于限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.ー種對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng),其特征在干,該系統(tǒng)包括測試視頻序列庫,用于存儲對視頻算法的寄存器傳輸級RTL硬件設(shè)計進(jìn)行驗(yàn)證所需要的測試序列;測試向量生成器,用于從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,井生成測試向量,再將該測試向量輸出給黃金C語言模型和待驗(yàn)證的RTL硬件模型;黃金C語言模型和待驗(yàn)證的RTL硬件模型,用于在接收到測試向量后分別產(chǎn)生輸出,并將各自的輸出均輸出給文件比較器;文件比較器,用于比較黃金C語言模型的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則驗(yàn)證失敗。
2.根據(jù)權(quán)利要求1所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng),其特征在于,所述黃金C語言模型是用C語言編寫的實(shí)現(xiàn)一定視頻處理功能的模塊。
3.根據(jù)權(quán)利要求2所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng),其特征在于,所述待驗(yàn)證的RTL硬件模型是用硬件描述語言編寫的,實(shí)現(xiàn)與黃金C語言模型相同的視頻處理功能的模塊,是功能驗(yàn)證的對象。
4.根據(jù)權(quán)利要求1所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng),其特征在干,所述測試向量生成器包含有一個測試序列自動選擇程序,該測試序列自動選擇程序在黃金C語言模型上添加了功能覆蓋檢查和覆蓋率評估代碼,具有自動挑選測試序列的功能。
5.根據(jù)權(quán)利要求1所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng),其特征在于,所述文件比較器在驗(yàn)證失敗后,還用于確定待驗(yàn)證的RTL硬件模型中存在Bug,對待驗(yàn)證的RTL硬件模型進(jìn)行調(diào)試。
6.ー種對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在于,該方法包括測試向量生成器從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,生成測試向量,并將該測試向量輸出給黃金C語言模型和待驗(yàn)證的RTL硬件模型;黃金C語言模型和待驗(yàn)證的RTL硬件模型接收到測試向量后,分別產(chǎn)生輸出,并將各自的輸出均輸出給文件比較器;文件比較器比較黃金C語言模型的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則驗(yàn)證失敗。
7.根據(jù)權(quán)利要求6所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,所述測試向量生成器包含有一個測試序列自動選擇程序,該測試序列自動選擇程序在黃金C語言模型上添加了功能覆蓋檢查和覆蓋率評估代碼,具有自動挑選測試序列的功能。
8.根據(jù)權(quán)利要求7所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,所述測試向量生成器從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列生成測試向量的步驟包括步驟1 確定待驗(yàn)證的算法功能點(diǎn)列表和測試視頻序列庫;步驟2 在黃金C語言模型上加入功能覆蓋檢查點(diǎn)和功能覆蓋檢查代碼,以及覆蓋率評估代碼,生成測試序列自動選擇程序;步驟3 在最佳聯(lián)合覆蓋率列表上,將所有算法功能點(diǎn)的屬性設(shè)為“未覆蓋”; 步驟4 設(shè)定算法參數(shù),第一次運(yùn)行時設(shè)為默認(rèn);步驟5 運(yùn)行測試序列自動選擇程序,更新最佳聯(lián)合覆蓋率列表,檢查功能覆蓋率; 步驟6 檢查算法功能覆蓋率;步驟7 將挑選出的測試序列集合以及對應(yīng)的算法參數(shù)配置構(gòu)成測試向量。
9.根據(jù)權(quán)利要求8所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在于,步驟5中所述更新最佳聯(lián)合覆蓋率列表及檢查功能覆蓋率,包括遍歷測試視頻序列庫的所有測試序列,計算每個測試序列與已經(jīng)選出的測試序列集合的聯(lián)合覆蓋率,挑選聯(lián)合覆蓋率最高的測試序列進(jìn)入測試序列集合;將最佳聯(lián)合覆蓋率列表更新為本次遍歷聯(lián)合覆蓋率最高的測試序列所對應(yīng)的聯(lián)合覆蓋率列表;檢查功能覆蓋率,如果功能覆蓋率超過門限或迭代次數(shù)超過門限,則退出,否則返回步驟2,運(yùn)行一次步驟2到步驟4為一次迭代。
10.根據(jù)權(quán)利要求9所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,所述計算每個測試序列與已經(jīng)選出的測試序列集合的聯(lián)合覆蓋率,是在已產(chǎn)生的測試序列集合對應(yīng)的最佳聯(lián)合覆蓋率列表基礎(chǔ)上,將該測試序列新覆蓋的功能點(diǎn)屬性改為“已覆蓋”,再計算覆蓋率。
11.根據(jù)權(quán)利要求8所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,步驟6中所述檢查算法功能覆蓋率,如未達(dá)到100%,則分析功能覆蓋率報告,根據(jù)不同情況采取如下措施1)重新返回步驟4,修改算法參數(shù);2)向測試視頻序列庫中添加新的測試序列,返回步驟5;3)產(chǎn)生具有特定特征的測試序列,加入測試視頻序列庫,返回步驟5。
12.根據(jù)權(quán)利要求6所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在于,該方法在驗(yàn)證失敗后,還包括文件比較器確定待驗(yàn)證的RTL硬件模型中存在Bug,對待驗(yàn)證的RTL硬件模型進(jìn)行調(diào)試。
13.根據(jù)權(quán)利要求12所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,該方法在對待驗(yàn)證的RTL硬件模型進(jìn)行調(diào)試后,還包括步驟30 檢查所有的測試向量是否都已經(jīng)過測試,當(dāng)所有的測試向量都已經(jīng)過測試并得到與黃金C語言模型相同的輸出,則算法功能驗(yàn)證結(jié)束; 步驟40 制定待驗(yàn)證的硬件功能點(diǎn)列表; 步驟50 構(gòu)建硬件功能點(diǎn)測試場景; 步驟60 運(yùn)行RTL硬件仿真;步驟70 檢查功能覆蓋率,如硬件功能點(diǎn)未被覆蓋,返回步驟30,添加硬件功能測試場景,進(jìn)行RTL硬件模型驗(yàn)證;如果硬件功能點(diǎn)被覆蓋,則驗(yàn)證結(jié)束。
14.根據(jù)權(quán)利要求13所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,步驟40中所述制定待驗(yàn)證的硬件功能點(diǎn)列表包括Case 1 不同幀率下運(yùn)動估計是否正確;Case2 相同幀率下時序信號發(fā)生變化時運(yùn)動估計的結(jié)果是否正確。
15.根據(jù)權(quán)利要求14所述的對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的方法,其特征在干,步驟50中所述構(gòu)建硬件功能點(diǎn)測試場景,包括針對硬件功能點(diǎn)Case 1,修改運(yùn)動估計RTL硬件設(shè)計內(nèi)部的時序產(chǎn)生器參數(shù),產(chǎn)生不同幀率的時序;針對硬件功能點(diǎn)Case 2,修改運(yùn)動估計RTL硬件設(shè)計內(nèi)部的時序產(chǎn)生器參數(shù),產(chǎn)生相同幀率,但不同的行列消隱區(qū)長度,來產(chǎn)生不同的時序信號。
全文摘要
本發(fā)明公開了一種對視頻算法的寄存器傳輸級硬件實(shí)現(xiàn)進(jìn)行驗(yàn)證的系統(tǒng)及方法,該系統(tǒng)包括測試視頻序列庫,用于存儲對視頻算法的RTL硬件設(shè)計進(jìn)行驗(yàn)證所需要的測試序列;測試向量生成器,用于從測試視頻序列庫中根據(jù)算法功能覆蓋率選取測試序列,并生成測試向量,再將該測試向量輸出給黃金C語言模型和待驗(yàn)證的RTL硬件模型;黃金C語言模型和待驗(yàn)證的RTL硬件模型,用于在接收到測試向量后分別產(chǎn)生輸出,并將各自的輸出均輸出給文件比較器;文件比較器,用于比較黃金C語言模型的輸出與待驗(yàn)證的RTL硬件模型的輸出是否一致,如果一致,則驗(yàn)證通過,如果不一致,則驗(yàn)證失敗。利用本發(fā)明,提高了對視頻算法的RTL硬件設(shè)計進(jìn)行驗(yàn)證的效率和正確性。
文檔編號G06F11/26GK102567165SQ201110448460
公開日2012年7月11日 申請日期2011年12月29日 優(yōu)先權(quán)日2011年12月29日
發(fā)明者倪素萍, 張森, 杜學(xué)亮, 林嘯, 蒿杰, 郭若杉 申請人:中國科學(xué)院自動化研究所