專利名稱:用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng)及其方法
技術(shù)領(lǐng)域:
本發(fā)明屬于集成電路設(shè)計領(lǐng)域,涉及數(shù)字集成電路領(lǐng)域,具體來說,涉及一 種用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng)及其方法。
背景技術(shù):
通信與信息處理系統(tǒng),通常是對固定幀結(jié)構(gòu)數(shù)據(jù)進行處理工作。在驗證工作
中,信道和信源的不確定性難以利用硬件描述語言進行建模;同時由于仿真器對 大量信號處理算法的仿真通常會浪費大量的計算資源,速度也不容樂觀。因此在 大多數(shù)情況下需要實際的現(xiàn)場驗證才能保證系統(tǒng)的正確性,于是通信系統(tǒng)集成電 路芯片的驗證來說,多數(shù)用現(xiàn)場可編程邏輯門陣列(Field-Programmable Gate Array,簡稱為FPGA)代替芯片仿真驗證,進行現(xiàn)場功能測試。
然而,利用FPGA進行的驗證存在以下兩方面的問題 一方面,專用集成 電路(Application Specific Integrated Circuit,簡稱為ASIC)技術(shù)正在向 片上系統(tǒng)(system on chip,簡稱為SOC)和嵌入式方向發(fā)展,設(shè)計者并不能 設(shè)計所有的內(nèi)核和模塊,而是從第三方購買已經(jīng)技術(shù)成熟的內(nèi)核,如果這些內(nèi)核 僅僅為硬核,即只包含最終的GDS2和行為級仿真模型,而非提供可以進行 FPGA驗證的軟核,則FPGA驗證工作無法進行,人為地將FPGA中的內(nèi)核替 換為ASIC設(shè)計中的某個模塊,則由替換帶來的失敗風(fēng)險將是十分巨大的;其中 GDS2電路版圖的一種文件格式是。另一方面,ASIC技術(shù)的設(shè)計周期已經(jīng)從幾 年前的以年為單位,發(fā)展到現(xiàn)在以月為單位的高速發(fā)展期。眾所周知,芯片驗證 工作在芯片設(shè)計當(dāng)中占到70%左右的工作量,那么如果能找到一種方法代替 FPGA驗證,又可以實現(xiàn)FPGA的實時驗證的仿真驗證方法,則可大大縮短ASIC
設(shè)計的周期。
對于目前的ASIC仿真驗證,存在以下幾種形式
1)硬件語言(Hardware Description Language, 簡稱為HDL)仿真 測試。僅利用HDL仿真語言,在測試平臺中產(chǎn)生大量的測試向量,對輸出數(shù)據(jù) 進行處理,然后與預(yù)存的測試結(jié)果相比較,分析錯誤。優(yōu)點是,在封閉的運行環(huán) 境中進行仿真,速度較快。缺點是,第一,不能實時設(shè)置斷點,每次改變輸入向 量,需要重新編譯;測試向量的產(chǎn)生受到限制,如果產(chǎn)生只是隨機向量,則測試向量空間往往過大,仿真時間過長,如果用于特定向量又往往會影響測試的覆蓋
率;同時,對于復(fù)雜的測試結(jié)果的判斷僅僅依靠HDL語言不能完成,需要輔助
其他計箅機語言來完成。
2) VMM測試仿真系統(tǒng)。驗證方法學(xué)(Verification Methodology Manual, 簡稱為VMM)是Synopsys公司提出的基于Systemverilog語言的驗證平臺, 該平臺提供各種類,場景和函數(shù),可以對輸入向量進行約束,對輸出向量進行自 動分析比對,同時給出統(tǒng)計結(jié)果。該仿真驗證系統(tǒng)解決了HDL仿真測試中輸入 測試向量空間過大的問題和輸出測試結(jié)果的分析,但是實時性仍顯不足,同時需 要驗證工程師掌握大量的系統(tǒng)函數(shù)及一個相對復(fù)雜的測試建模過程,而該系統(tǒng)對 于設(shè)計人員來說,無疑增加大量的工作量如何使用該VMM系統(tǒng)上。
基于以上分析,兩種方法均適用于大量測試向量的驗證工作,VMM又可以 提供約束環(huán)境來減少隨即向量的產(chǎn)生。但是兩種方法在驗證過程是一致的,均如 圖1所示驗證過程包含以下步驟
Stepl:編寫被測設(shè)計;
Step2:編寫測試向量,測試平臺;
Step3:利用仿真工具進行編譯;
Step4:仿真并驗證;
Step5:判斷響應(yīng)是否正確,如果響應(yīng)正確,則結(jié)束驗證過程; Step6:如果Step5判斷不正確,如判斷由設(shè)計本身造成的問題,則返回 Stepl j
Step7:如果Step5判斷不正確,如由測試平臺或測試向量造成的問題,由 于測試向量的編寫大多數(shù)情況下在測試平臺中,則必須返回Step2。
其中,當(dāng)響應(yīng)不正確的時候,無論是被測設(shè)計本身、測試平臺或者是測試向 量出現(xiàn)問題需要從Stepl或Step2重新執(zhí)行,而Stepl和Step2為并行執(zhí)行。 造成時間和資源上的重復(fù)和浪費。同時,在上述方法中,測試向量必須與測試平 臺一同進行編譯和仿真,而不能根據(jù)設(shè)計人員的需要實時的向仿真進程中添加測 試向量,缺乏實時性。
Perl和Tcl等腳本語言代表一種與c或JavaTM為代表的系統(tǒng)程序設(shè)計語 言完全不同的編程形式。腳本語言為"膠著"應(yīng)用程序而設(shè)計,它使用無類型方法 來實現(xiàn)高級編程和比系統(tǒng)程序設(shè)計語言更快的發(fā)展應(yīng)用。與系統(tǒng)程序設(shè)計語言相 比,不同的腳本語言為不同的工作而設(shè)計,這導(dǎo)致了語言間的根本不同。系統(tǒng)程序設(shè)計語言起源于像內(nèi)存字等最初期的計算機元素,它為建立數(shù)據(jù)結(jié)構(gòu)和算法而 創(chuàng)建。相反的,腳本語言為膠著而設(shè)計他們假設(shè)已經(jīng)存在一套強大的組件,而 它主要是把組件連在一起。系統(tǒng)程序設(shè)計語言使用強類型定義來幫助處理復(fù)雜事 務(wù),而腳本語言使用無類型定義來簡化組件間的聯(lián)系,并提供快速應(yīng)用開發(fā)。
腳本語言和系統(tǒng)程序設(shè)計語言互為補充,并且二十世紀(jì)六十年代以來的大多 數(shù)主要的計算機平臺都同時提供這兩種類型的語言。這些語言在組件框架中有著 典型的應(yīng)用組件由系統(tǒng)程序設(shè)計語言創(chuàng)建,并由腳本語言組合在一起。然而, 速度更快的機器,更好的腳本語言,圖形用戶界面和組件構(gòu)造重要性的不斷提高, 因特網(wǎng)的發(fā)展等發(fā)展趨勢大大提高了腳本語言的應(yīng)用。在今后的十年中,這種趨 勢將繼續(xù),而且越來越多的完全使用腳本語言和系統(tǒng)程序設(shè)計語言書寫的應(yīng)用程 序?qū)⒅饕脕韯?chuàng)建組件。 發(fā)明 內(nèi)容
基于現(xiàn)有技術(shù)的上述缺陷,本文提出一種適合于通信系統(tǒng)集成電路設(shè)計的實 時仿真驗證系統(tǒng)及方法,該系統(tǒng)及方法既可應(yīng)用標(biāo)準(zhǔn)串口的簡單系統(tǒng),也可應(yīng)用 于導(dǎo)航接收機的大規(guī)模復(fù)雜通信系統(tǒng)的仿真驗證。
本發(fā)明所提供的系統(tǒng)主要利用tcl語言的靈活性,建立基于lirmx系統(tǒng)的tsh 編輯器,在tsh中調(diào)用verilog仿真編譯器,C語言編輯器,以及perl語言編 輯器,將所有編輯器集成于tcl搭建的系統(tǒng)內(nèi),并由利用tcl語言建立一個內(nèi)嵌 于tsh的操作界面,供設(shè)計人員使用。其中,tel與perl語言均為一種計算機 腳本語言,tsh為linux系統(tǒng)中提供的tel語言編譯器。
本發(fā)明針對激勵和響應(yīng)均為固定幀格式的通信系統(tǒng)的仿真驗證。例如,本發(fā) 明既可應(yīng)用于標(biāo)準(zhǔn)串口及串行外設(shè)接口 (Serial Peripheral interface,簡稱為SPI) 主從設(shè)備的簡單系統(tǒng)仿真,也可應(yīng)用于數(shù)字電視調(diào)制器、導(dǎo)航接收機等大規(guī)模的 通信系統(tǒng)的仿真驗證。
按照本發(fā)明的一個方面,提供了用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證 系統(tǒng)。該系統(tǒng)包括測試模塊和驗證模塊,測試模塊用于通過調(diào)用相關(guān)任務(wù),產(chǎn) 生被測設(shè)計(Design Under Test ,簡稱為DUT)所需的特定幀格式的激勵數(shù) 據(jù)以及收集DUT產(chǎn)生的響應(yīng),驗證模塊用于產(chǎn)生測試向量和參考響應(yīng)值,并與 DUT的響應(yīng)值進行比較,得到驗證結(jié)果。
所述的測試模塊,在仿真器中運行,包含測試模塊中的命令處理模塊,由各 種任務(wù)組成,當(dāng)測試模塊收到來自驗證平臺的指令后,調(diào)用所指定的任務(wù)塊,這
8些任務(wù)包含兩個方面,一方面生成輸入激勵,或強制改變被測系統(tǒng)中寄存器的值, 另一方面是收集被測系統(tǒng)的響應(yīng),或者査詢被測系統(tǒng)中寄存器的值反饋給驗證平
臺進行處理;還包含測試模塊中的通信接口模塊,完成測試模塊與驗證模塊之間 的通信;
所述的驗證模塊,在linux tcl編譯器中運行,包含有驗證系統(tǒng)中的通信接 口,完成與測試模塊的通信,及驗證系統(tǒng)中的命令處理模塊,生成由設(shè)計人員要 求的輸入轉(zhuǎn)化為編碼信號格式,傳輸給通信接口,并將由通信接口接收到的數(shù)據(jù) 解碼為有效數(shù)據(jù),還包括斷言判決模塊,將響應(yīng)數(shù)據(jù)與參考值比較,得到驗證結(jié) 果,和報告生成模塊,用于生成由測試存檔文件,以及人機交互界面和C語言 接口;
在所述的驗證模塊與測試模塊中,其中所述測試模塊中的通信接口模塊,驗
證系統(tǒng)中的通信接口,斷言判決模塊,報告生成模塊,人機交互界面和c語言
接口不因為被測通信系統(tǒng)的不同而改變。 其中,所述的命令處理模塊,包含解碼模塊,分解數(shù)據(jù)幀中的命令字與參數(shù),
并進行循環(huán)冗余校驗碼(Cyclical Redundancy Check,簡稱為CRC)計箅, 與輸入的CRC后綴比較,驗證數(shù)據(jù)正確性,根據(jù)不同的命令字,將命令參數(shù)輸 入至不同的任務(wù);編碼模塊,將收集到系統(tǒng)響應(yīng)按照任務(wù)要求進行編碼,并計算 CRC,傳輸給通信模塊;配置模塊,按照命令字和參數(shù)值,配置為不同的激勵 模式,主要包括接收數(shù)據(jù)、發(fā)送數(shù)據(jù)、設(shè)置時鐘、設(shè)置模式等系統(tǒng)任務(wù);激勵產(chǎn) 生模塊,按照配置模塊提供的激勵模式以及接收到的命令參數(shù)生成激勵輸入給 DUT;激勵收集模塊,按照配置模塊的指示,收集相關(guān)的響應(yīng)值,輸送給編碼 模塊。
所述的驗證,莫塊與測試模塊之間的通信信號分為命令信號幀和響應(yīng)信號幀, 其中
命令信號幀由驗證模塊向測試模塊發(fā)送,其格式為命令長度,其后跟隨命 令代碼,之后發(fā)送命令參數(shù)、以CRC校驗碼結(jié)尾;
響應(yīng)信號幀由測試模塊向驗證模塊輸送,其格式為由響應(yīng)長度,之后發(fā)送 響應(yīng)數(shù)據(jù),最后以CRC校驗碼結(jié)尾。
按照本發(fā)明的另一各方面,本發(fā)明提供用于通信系統(tǒng)實時仿真驗證的方法, 該方法包括以下步驟
Stepl:向系統(tǒng)中輸入測試向量及響應(yīng)參考值。該向量及參考值可由設(shè)計人員手動輸入,或是由C程序或者tcl程序生成;
Step2:生成命令信號幀。將輸入向量按照通信接口要求的命令信號幀格式 進行編碼生成命令信號幀;
Step3:將信號幀輸送給通信接口,由通信接口輸送給linux標(biāo)準(zhǔn)輸出通道; 同時,若需要利用調(diào)用C程序計算響應(yīng)參考值,則需將信號幀送至C語言接口 ;
Step4:測試模塊接收命令信號幀;
測試模塊的通信接口通過掃描標(biāo)準(zhǔn)輸入通道接收命令信號幀; Step5:分解命令信號幀;
去掉幀頭長度部分,將命令信號幀按照命令編碼輸送給配置模塊和激勵生成 模塊;
Step6:命令處理;
在配置模塊中,根據(jù)命令編碼,調(diào)用系統(tǒng)任務(wù),處理命令信號幀中的內(nèi)容, 之后執(zhí)行根據(jù)命令內(nèi)容選擇執(zhí)行Step7, Step8或是Step9; Step7:生成激勵;
根據(jù)命令處理中得到的內(nèi)容,生成符合被測系統(tǒng)要求的輸入信號; Step8:設(shè)定被測系統(tǒng)某寄存器的值; 根據(jù)命令處理中得到的內(nèi)容,設(shè)定被測系統(tǒng)某寄存器的值; Step9:收集響應(yīng);
根據(jù)命令處理中得到的內(nèi)容,控制響應(yīng)收集模塊收集被測系統(tǒng)得響應(yīng),或者 直接提取被測系統(tǒng)中某寄存器的值; SteplO:將收集的響應(yīng)進行編碼;
將收集到響應(yīng)信號按照通信接口要求的響應(yīng)信號幀的要求進行編碼; Stepll:將響應(yīng)信號發(fā)送至驗證模塊; Step 12:接收響應(yīng)信號幀;
Stepl3:對響應(yīng)信號進行分解,去掉幀結(jié)構(gòu),該幀格式包括被測系統(tǒng)輸出 信號的幀格式和響應(yīng)信號幀格式,提取有效數(shù)據(jù),并將數(shù)據(jù)送至斷言判決模塊; Stepl4:斷言判決;
將得到的響應(yīng)與響應(yīng)參考值進行比較;
Stepl5:可選操作,根據(jù)Stepl的設(shè)置,對結(jié)果進行分類和統(tǒng)計,該步驟 用于N測試向量的使用,其中,N為自然數(shù),N^2;
Stepl6:將結(jié)果輸送至人機接口,完成本次驗證過程。本發(fā)明提供的上述方法中Step3,Step4是同時進行的,具體實施過程如下 Step3.1:打開仿真器;
Step3.2:向標(biāo)準(zhǔn)輸入通道中輸入命令信號幀,并以7n"結(jié)尾。
在Step3.1執(zhí)行的同時,Step4同時執(zhí)行
Step4.1:在測試l莫塊中打開標(biāo)準(zhǔn)輸入輸出通道;
Step4.2:掃描標(biāo)準(zhǔn)輸入通道,當(dāng)通道中不為空時,開始接收數(shù)據(jù)。
Step4.3:判斷接收到第一個字是否為偶數(shù)。若為偶數(shù),則命令信號幀幀頭
正確,繼續(xù)執(zhí)行Step4.4,否則,命令信號幀幀頭不正確,完成此次接收過程,
執(zhí)行Step4.6。
Step4.4:判斷接收到的數(shù)據(jù)是否為"/n"。若結(jié)果為"是"則證明該條命 令接收結(jié)束,執(zhí)行Step4.6。若結(jié)果為"否",則執(zhí)行Step4.5。
Step4.5:繼續(xù)接收數(shù)據(jù),并將接收到的數(shù)據(jù)返回Step4.4進行判斷。 Step4.6:接收結(jié)束,觸發(fā)事件"command in",啟動解碼模塊和配置模塊。
本發(fā)明提供的上述方法中Stepll, Stepl2同時進行,其具體實施過程為 Step 11.1:當(dāng)編碼完成后,觸發(fā)event "result out",啟動發(fā)送過程; Stepll.2:將響應(yīng)幀輸出至標(biāo)準(zhǔn)輸出通道,并以"eof"結(jié)尾。 在11.2執(zhí)行的同時,Stepl2同時在驗證模塊中執(zhí)行 Stepl2.1:,掃描標(biāo)準(zhǔn)輸出通道,當(dāng)通道中不為空時,開始接收數(shù)據(jù)。 Stepl2.2:判斷接收到的數(shù)據(jù)是否為"eof"。若結(jié)果為"是"則證明該條 命令接收結(jié)束,執(zhí)行Stepl2.4。若結(jié)果為"否",則執(zhí)行Step12.3。
Stepl2.3:繼續(xù)接收數(shù)據(jù),并將接收到的數(shù)據(jù)返回Step4.4進行判斷。 Stepl2.4:接收結(jié)束,將數(shù)據(jù)傳至命令處理模塊。
本發(fā)明所提供的驗證系統(tǒng)和方法對的驗證思想為設(shè)計人員通過輸入系統(tǒng)定 義的命令對系統(tǒng)進行操作,當(dāng)系統(tǒng)收到命令時,在驗證模塊中,系統(tǒng)對命令進行 解析,根據(jù)命令的需要,組成一個16進制格式信號幀傳輸給測試模塊。在測試 模塊中,在信號幀進行進一步解碼,編碼生成符合DUT要求的特定激勵輸入 DUT,同時收集被測系統(tǒng)的響應(yīng)值,返回到驗證模塊中,驗證模塊對返回內(nèi)容進 行解析判決,或引入斷言對返回值進行分析。
采用本發(fā)明所述的系統(tǒng)與方法的優(yōu)點在于 (1)將仿真驗證流程的各步驟彼此分開,可以選擇只執(zhí)行其中若干步驟,
11而放棄執(zhí)行重復(fù)部分,從而避免由于重復(fù)執(zhí)行仿真過程。
(2) 該發(fā)明提供一種實時操作的界面和方式,不僅提供驗證人員向量分析 的功能,同時為設(shè)計人員提供實時操作的對仿真界面,便于發(fā)現(xiàn)問題,調(diào)試被測 設(shè)計。
(3) 該驗證系統(tǒng)與方法使不同通信系統(tǒng)間具有可移植性。由于通信系統(tǒng)處 理的信號均為某種固定的幀格式信號,因為建立該驗證系統(tǒng)與方法后,設(shè)計人員 在編寫測試向量時,只需關(guān)注系統(tǒng)信號幀結(jié)構(gòu)某個部分即可,利用通信系統(tǒng)對輸 入內(nèi)容進行組幀,而不用進行信號整體進行編寫,避免產(chǎn)生大量無關(guān)的測試向量 和用于產(chǎn)生整體幀結(jié)構(gòu)的時間。同時將該驗證系統(tǒng)從一個通信系統(tǒng)的驗證轉(zhuǎn)移至 另一通信系統(tǒng)得驗證只需改變其測試系統(tǒng)的編碼格式即可,增強了系統(tǒng)的可移植 性。
圖1:為利用現(xiàn)有通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)的驗證過程流程
圖2:為利用本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)的 驗證過程流程圖3:為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)的結(jié)構(gòu)
示意圖4:為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)中測試
模塊的結(jié)構(gòu)示意圖5:為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)中測試
模塊與驗證模塊的通信數(shù)據(jù)幀結(jié)構(gòu);
圖6:為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證方法的流程
圖7:為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)與方法 中由驗證模塊到測試模塊的通信方法示意圖8:為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)與方法 中由測試模塊到驗證模塊的通信方法示意圖。
圖中 1.測試模塊 2.驗證模塊
3.測試模塊中的命令處4.測試模塊中的通信接5.驗證模塊中的命令處
1理模塊 口 理模塊
6.驗證模塊中的命令處7.斷言判決模塊 8.報告生成與分析模塊
理模塊
9.人機接口10. C語言接口11.解碼模塊
12.編碼模塊13.配置模塊14.激勵產(chǎn)生模塊
15.響應(yīng)收集模塊16.命令信號幀格式17.命令長度
18.命令代碼19.命令參數(shù)20.第一 CRC校驗碼
21.響應(yīng)信號幀格式22.響應(yīng)長度23.響應(yīng)數(shù)據(jù)
24.第二CRC校驗碼
具體實施例方式
下面結(jié)合附圖對本發(fā)明的具體實施方式
進行說明。
如圖2所示,為利用本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗 證系統(tǒng)的驗證過程流程圖。該流程圖所示的驗證過程可分為如下幾個步驟 Stepl:編寫被測設(shè)計; Step2:編寫測試平臺; Step3:利用仿真工具進行編譯; Step4:編寫測試向量; Step5:仿真并驗證;
Step6:判斷響應(yīng)是否正確,如果響應(yīng)正確,則結(jié)束驗證過程;
Step7:如果Step6判斷不正確,如判斷由設(shè)計本身或者測試平臺造成的問 題,則返回Stepl;
Step8:如果Step6判斷不正確,如測試向量造成的問題,提取錯誤的測試 向量進行修改,返回Step5。
與圖1比較,本發(fā)明所提供用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系統(tǒng)的 驗證過程首先分立測試平臺的編寫和測試向量的編寫,并調(diào)整了驗證過程中各步 驟的執(zhí)行過程,使得在測試向量的發(fā)生問題時,只須執(zhí)行到修改相應(yīng)仿真過程, 而不需重復(fù)執(zhí)行編譯過程和已經(jīng)運行正確的仿真過程,同時不需要改動測試平臺。由圖中可見,有測試向量引起問題的循環(huán)支路的路徑縮短,有效減少了仿真 驗證的時間。
如圖3所示為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系 統(tǒng)的結(jié)構(gòu)示意圖,包含測試模塊1和驗證模塊2,其中,測試模塊l,在仿真器 中運行,用于通過調(diào)用相關(guān)任務(wù),產(chǎn)生被測設(shè)計DUT所需的特定幀格式的激勵 數(shù)據(jù)以及收集DUT產(chǎn)生的響應(yīng),和驗證模塊,用于產(chǎn)生測試向量和參考響應(yīng)值, 并與DUT的響應(yīng)值進行比較。測試模塊1包含有測試模塊中的命令處理模塊3 和測試模塊中的通信接口 4,其具體功能與結(jié)構(gòu)在圖5中說明。同時,驗證模塊 2,在linuxtcl編譯器中運行,包含有驗證模塊中的通信接口 5,完成與測試才莫 塊的通信,驗證模塊中的命令處理模塊6,生成由設(shè)計人員要求的輸入轉(zhuǎn)化為編 碼信號格式,傳輸給通信接口,并將由通信接口接收到的數(shù)據(jù)解碼為有效數(shù)據(jù)傳 輸給設(shè)計人員,斷言判決模塊7,用于生成參考響應(yīng)值,報告生成與分析模塊8, 用于生成由大量測試存檔文件,人機交互界面9和C語言接口 10。
在所述的驗證模塊與測試模塊中,其中所述測試模塊中的通信接口模塊,驗 證系統(tǒng)中的通信接口,斷言判決模塊,報告生成模塊,人機交互界面和C語言 接口不因為被測通信系統(tǒng)的不同而改變。
其具體連接關(guān)系于數(shù)據(jù)處理過程描述如下
設(shè)計人員或者驗證人員將測試向量通過人機交互界面9輸入計算機,測試 向量進入驗證模塊2,在驗證模塊2中調(diào)用命令處理模塊6,將數(shù)據(jù)編碼為圖5 所示的幀格式,并輸送到通信接口5,幀數(shù)據(jù)由通信接口傳遞給測試模塊l,同 時,數(shù)據(jù)幀可由設(shè)計人員選擇通過C語言接口 IO傳遞給C程序仿真器用以生 成響應(yīng)參考值。測試模塊1中的通信接口 4掃描得到驗證模塊的幀數(shù)據(jù)后傳送 給測試模塊中的命令處理模塊3,生成符合被測通信系統(tǒng)的激勵格式傳輸給被測 系統(tǒng)進行仿真。同時,命令處理模塊3收集來自被測通信系統(tǒng)的響應(yīng),編碼后 送入通信接口 4發(fā)送給驗證模塊。驗證模塊的通信接口 5接收數(shù)據(jù)在命令處理 模塊6中剝離幀格式,提取響應(yīng)信息中的有效數(shù)據(jù)送至斷言判斷模塊,斷言模 塊7比較響應(yīng)值與響應(yīng)參考值,并將結(jié)果返回人機交互界面9。響應(yīng)參考值可由 設(shè)計人員事先設(shè)定或通過C語言接口 10,得到的C語言仿真結(jié)果。在整個仿真 過程中所產(chǎn)生的數(shù)據(jù),均由報告生成與分析模塊8所記錄,記錄文本文件并利 用perl語言對文件進行分析匯總,得到生成報告。
該驗證思想可具體描述為以下幾個部分首先,設(shè)計人員通過輸入系統(tǒng)定義的命令對系統(tǒng)進行操作,輸入相應(yīng)的測試向量。當(dāng)系統(tǒng)收到命令時,系統(tǒng)對命令 進行解析,根據(jù)命令的需要,對信號幀進行編碼生成符合被測系統(tǒng)要求的特定幀 格式的激勵輸入被測系統(tǒng),同時,收集被測系統(tǒng)的響應(yīng)值,并對信號內(nèi)容進行解 析判決,于輸入?yún)⒖贾颠M行比較判決,得到仿真驗證的結(jié)果。
本發(fā)明針對激勵和響應(yīng)均為固定幀格式的通信系統(tǒng)的仿真驗證。例如,本發(fā) 明既可應(yīng)用于標(biāo)準(zhǔn)串口及串行外設(shè)接口 SPI主從設(shè)備的簡單系統(tǒng)仿真,也可應(yīng)
用于數(shù)字電視調(diào)制器、導(dǎo)航接收機等大規(guī)模的通信系統(tǒng)的仿真驗證。
如圖4所示,為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系 統(tǒng)中測試模塊的結(jié)構(gòu)示意圖,測試模塊1包含有命令處理模塊3和通信接口 4。 其中,命令處理模塊3,由各種任務(wù)模塊組成,當(dāng)測試模塊收到來自驗證品平臺 的指令后,調(diào)用所指定的任務(wù)塊,這些任務(wù)包含兩個方面, 一方面生成輸入激勵, 或強制改變DUT中寄存器的值,另一方面是收集DUT的響應(yīng),或者查詢DUT
中寄存器的值反饋給驗證平臺進行處理。與驗證模塊的通信接口 4,完成與驗證 平臺之間的通訊。
其中,所述的命令處理模塊3,包含解碼模塊ll,分解數(shù)據(jù)幀中的命令字 與參數(shù),并進行CRC計算,與輸入的CRC后綴比較,驗證數(shù)據(jù)正確性,根據(jù) 不同的命令字,將命令參數(shù)輸入至不同的任務(wù);編碼模塊12,將收集到系統(tǒng)響 應(yīng)按照任務(wù)要求進行編碼,并計算CRC,傳輸給通信模塊;配置模塊13,按照 命令字和參數(shù)值,配置為不同的激勵模式,其由verilog任務(wù)函數(shù)完成,函數(shù)主 要包括接收數(shù)據(jù)、發(fā)送數(shù)據(jù)、設(shè)置時鐘、設(shè)置模式;激勵產(chǎn)生模塊14,按照配 置模塊提供的激勵模式以及接收到的命令參數(shù)生成激勵輸入給被測系統(tǒng);激勵收 集模塊15,按照配置模塊的指示,收集相關(guān)的響應(yīng)值,輸送給編碼模塊。
測試模塊的具體工作流程為當(dāng)通信接口 4掃描系統(tǒng)標(biāo)準(zhǔn)輸入通道有數(shù)據(jù) 時,接收數(shù)據(jù),將接收到數(shù)據(jù)送至解碼單元ll,解碼單元ll將數(shù)據(jù)進行解碼, 并進行CRC校驗,得到的數(shù)據(jù)分為命令部分及參數(shù)部分,根據(jù)命令字的不同調(diào) 用配置模塊13中的不同任務(wù),輸入激勵產(chǎn)生模塊14,產(chǎn)生符合要求的激勵, 輸入給被測系統(tǒng)。同時根據(jù)不同任務(wù)的指示,利用激勵收集模塊15采集被測系 統(tǒng)的響應(yīng)值,在編碼模塊12中按照通信接口的要求,進行編碼,同時添加CRC 校驗碼,輸送至通信接口 4。
如圖5所示,為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系 統(tǒng)中測試+莫塊與驗證模塊的通信數(shù)據(jù)幀結(jié)構(gòu)。本系統(tǒng)采用在仿真編譯器和tcl編
15譯器之間建立一個標(biāo)準(zhǔn)輸入通道、 一個標(biāo)準(zhǔn)輸出通道,來達(dá)到實時傳輸?shù)哪康摹?該通道傳輸?shù)臄?shù)據(jù)傳輸格式為8比特數(shù)據(jù)。數(shù)據(jù)傳輸過程利用以數(shù)據(jù)的長度作 為幀頭,幀體為需要傳輸?shù)臄?shù)據(jù),利用16位前向校驗碼作為結(jié)束。保證數(shù)據(jù)傳 輸?shù)恼_性,因此在命令長度必定為偶數(shù),當(dāng)為奇數(shù)時,證明數(shù)據(jù)有誤,數(shù)據(jù)無 效。系統(tǒng)中所用到的CRC16校驗碼,為CRC-CCITT-16,其生成多項式為 G (X) = x16 + xl2+ x5 +1
其具體的幀結(jié)構(gòu)為由驗證模塊向測試模塊輸送的命令信號幀16由命令長 度17開始,其后跟隨命令代碼18、之后發(fā)送命令參數(shù)19、第一CRC校驗碼 20結(jié)尾。由測試模塊向驗證模塊輸送響應(yīng)信號幀21由響應(yīng)長度22開始,之后 發(fā)送響應(yīng)數(shù)據(jù)23,最后以第二CRC校驗碼24結(jié)尾。
如圖6所示,為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證方 法的流程圖,該方法的具體步驟為
Stepl:向系統(tǒng)中輸入測試向量及響應(yīng)參考值。該向量及參考值可由設(shè)計人 員手動輸入,或是由C程序或者tcl程序生成;
Step2:生成命令信號幀。將輸入向量按照圖5要求的幀格式進行編碼生成 命令信號幀16;
Step3:發(fā)送命令信號幀。將信號幀16輸送給通信接口 5,由通信接口 5 輸送給linux標(biāo)準(zhǔn)輸出通道。同時,若需要利用調(diào)用C程序計算響應(yīng)參考值, 則需將信號幀送至C語言接口
Step4:測試模塊1接收命令信號幀16。測試模塊1的通信接口通過掃描 標(biāo)準(zhǔn)輸入通道接收命令信號幀。
Step5:分解命令信號幀。去掉幀頭長度部分,將命令信號幀按照命令編碼 輸送給配置模塊13和激勵生成模塊14。
Step6:命令處理。在配置模塊13中,根據(jù)命令編碼,調(diào)用系統(tǒng)任務(wù),處 理命令信號幀中的內(nèi)容,之后執(zhí)行根據(jù)命令內(nèi)容選擇執(zhí)行Step7, Step8或是 Step9。
Step7:生成激勵。根據(jù)命令處理中得到的內(nèi)容,生成符合被測系統(tǒng)要求的 輸入信號。
Step8:設(shè)定被測系統(tǒng)某寄存器的值。根據(jù)命令處理中得到的內(nèi)容,設(shè)定被 測系統(tǒng)某寄存器的值。
Step9:收集響應(yīng)。根據(jù)命令處理中得到的內(nèi)容,控制響應(yīng)收集模塊15收集被測系統(tǒng)得響應(yīng),或者直接提取被測系統(tǒng)中某寄存器的值。
SteplO:將收集的響應(yīng)進行編碼。將收集到響應(yīng)信號根據(jù)圖6中響應(yīng)信號
幀的要求進行編碼。
Step 11:將響應(yīng)信號發(fā)送至驗證模塊2。 Stepl2:接收響應(yīng)信號幀。
Stepl3:對響應(yīng)信號進行分解,去掉幀結(jié)構(gòu),該幀格式包括被測系統(tǒng)輸出 信號的幀格式和響應(yīng)信號幀格式,提取有效數(shù)據(jù),并將數(shù)據(jù)送至斷言判決模塊。 StepH:斷言判決;
將得到的響應(yīng)與響應(yīng)參考值進行比較;
Stepl5:可選操作,根據(jù)Stepl的設(shè)置,對結(jié)果進行分類和統(tǒng)計,該步驟 用于N測試向量的使用,其中,N為自然數(shù),N^2;
Stepl6:將結(jié)果輸送至人機接口,完成本次驗證過程。
如圖7所示,為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系 統(tǒng)與方法中由驗證模塊到測試模塊的通信方法示意圖,即圖7中Step3, Step4 是同時進行的,具體實施過程如下
Step3.1:打開仿真器;
Step3.2:向標(biāo)準(zhǔn)輸入通道中輸入命令信號幀,并以"/n"結(jié)尾。
在Step3.1執(zhí)行的同時,Step4同時執(zhí)行
Step4.1:在測試模塊中打開標(biāo)準(zhǔn)輸入輸出通道;
Step4.2:掃描標(biāo)準(zhǔn)輸入通道,當(dāng)通道中不為空時,開始接收數(shù)據(jù)。
Step4.3:判斷接收到第一個字是否為偶數(shù)。若為偶數(shù),則命令信號幀頭正
確,繼續(xù)執(zhí)行Step4.4,否貝lj,命令信號幀頭不正確,完成此次接收過程,執(zhí)行
Step4.6。
Step4.4:判斷接收到的數(shù)據(jù)是否為"/n"。若結(jié)果為"是"則證明該條命 令接收結(jié)束,執(zhí)行Step4.6。若結(jié)果為"否",則執(zhí)行Step4.5。
Step4.5:繼續(xù)接收數(shù)據(jù),并將接收到的數(shù)據(jù)返回Step4.4進行判斷。 Stepl6:接收結(jié)束,觸發(fā)事件"command in",啟動解碼模塊和配置模塊。
如圖8所示,為本發(fā)明所提供的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證系 統(tǒng)與方法中由測試模塊到驗證模塊的通信方法示意圖,即為圖8中Stepll, Stepl2同時進行,其具體實施過程為Stepll丄當(dāng)編碼完成后,觸發(fā)event "result out",啟動發(fā)送過程; Stepll.2:將響應(yīng)幀輸出至標(biāo)準(zhǔn)輸出通道,并以"eof"結(jié)尾。 在11.2執(zhí)行的同時,St印12同時在驗證模塊中執(zhí)行 Stepl2.1:,掃描標(biāo)準(zhǔn)輸出通道,當(dāng)通道中不為空時,開始接收數(shù)據(jù)。 Stepl2.2:判斷接收到的數(shù)據(jù)是否為"eof"。若結(jié)果為"是"則證明該條 命令接收結(jié)束,執(zhí)行Stepl2.4。若結(jié)果為"否",則執(zhí)行Step12.3。
Stepl2.3:繼續(xù)接收數(shù)據(jù),并將接收到的數(shù)據(jù)返回Step4.4進行判斷。 Stepl2.4:接收結(jié)束,將數(shù)據(jù)傳至命令處理模塊6。
權(quán)利要求
1、用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng),該系統(tǒng)包括測試模塊,用于通過調(diào)用相關(guān)任務(wù),產(chǎn)生被測系統(tǒng)所需的特定幀格式的激勵數(shù)據(jù)以及收集被測系統(tǒng)產(chǎn)生的響應(yīng);驗證模塊,用于產(chǎn)生測試向量和參考響應(yīng)值,并與被測系統(tǒng)的響應(yīng)值進行比較,得到驗證結(jié)果;其特征在于,所述的測試模塊,在仿真器中運行,包含測試模塊中的命令處理模塊,由各種任務(wù)組成,當(dāng)測試模塊收到來自驗證平臺的指令后,調(diào)用所指定的任務(wù)塊,這些任務(wù)包含兩個方面,一方面生成輸入激勵,或強制改變被測系統(tǒng)中寄存器的值,另一方面是收集被測系統(tǒng)的響應(yīng),或者查詢被測系統(tǒng)中寄存器的值反饋給驗證平臺進行處理;還包含測試模塊中的通信接口模塊,完成測試模塊與驗證模塊之間的通信;所述的驗證模塊,在linux tcl編譯器中運行,包含有驗證系統(tǒng)中的通信接口,完成與測試模塊的通信,及驗證系統(tǒng)中的命令處理模塊,生成由設(shè)計人員要求的輸入轉(zhuǎn)化為編碼信號格式,傳輸給通信接口,并將由通信接口接收到的數(shù)據(jù)解碼為有效數(shù)據(jù),還包括斷言判決模塊,將響應(yīng)數(shù)據(jù)與參考值比較,得到驗證結(jié)果,和報告生成模塊,用于生成由測試存檔文件,以及人機交互界面和C語言接口;在所述的驗證模塊與測試模塊中,其中所述測試模塊中的通信接口模塊,驗證系統(tǒng)中的通信接口,斷言判決模塊,報告生成模塊,人機交互界面和C語言接口不因為被測通信系統(tǒng)的不同而改變;所述的驗證模塊與測試模塊之間的通信信號分為命令信號幀和響應(yīng)信號幀。
2、根據(jù)^l利要求l所述的用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng),其特征在于,其所述的測試模塊中的命令處理模塊包括解碼模塊,分解數(shù)據(jù)幀中的命令字與參數(shù),并進行CRC計算,與輸入的CRC 后綴比較,驗證數(shù)據(jù)正確性;編碼模塊,將收集到系統(tǒng)響應(yīng)按照任務(wù)要求進行編碼,并計算CRC,傳輸 給通信模塊;配置模塊,按照命令字和參數(shù)值,配置為不同的激勵模式,其由verilog任 務(wù)函數(shù)完成,函數(shù)主要包括接收數(shù)據(jù)、發(fā)送數(shù)據(jù)、設(shè)置時鐘、設(shè)置模式;激勵產(chǎn)生模塊,按照配置模塊提供的激勵模式以及接收到的命令參數(shù)生成激勵輸入給被測系統(tǒng);激勵收集模塊,按照配置模塊的指示,收集相關(guān)的響應(yīng)值,輸送給編碼模塊。
3、 根據(jù)權(quán)利要求i所述的用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng),其特征在于,所述的命令信號幀由驗證模塊向測試模塊發(fā)送,其格式為命令長度、命令代碼、之后發(fā)送命令參數(shù)、以CRC校驗碼結(jié)尾;所述的響應(yīng)信號幀由測試模塊向驗證模塊輸送,其格式為響應(yīng)長度,之后發(fā)送響應(yīng)數(shù)據(jù),最后以CRC校驗碼結(jié)尾。
4、 根據(jù)權(quán)利要求1所述的用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng),其特征在于,所述的測試模塊與驗證模塊的通信接口直接相連,完成與驗證平臺之間的通訊。
5、 用于通信系統(tǒng)集成電路設(shè)計的仿真驗證方法,其特^E在于,該方法的具體步驟為Stepl:向系統(tǒng)中輸入測試向量及響應(yīng)參考值,該向量及參考值由設(shè)計人員手動輸入,或是由C程序或者tcl程序生成;Step2:生成命令信號幀;將輸入向量按照權(quán)利要求1中所述的命令信號幀格式進行編碼生成命令信號幀;Step3:發(fā)送命令信號幀;將信號幀輸送給通信接口,由通信接口輸送給linux標(biāo)準(zhǔn)輸出通道;同時,若需要利用調(diào)用C程序計算響應(yīng)參考值,則需將信號幀送至C語言接口 ;Step4:測試模塊接收命令信號幀;測試模塊的通信接口通過掃描標(biāo)準(zhǔn)輸入通道接收命令信號幀;Step5:分解命令信號幀;去掉幀頭長度部分,將命令信號幀按照命令編碼輸送給配置模塊和激勵生成模塊;Step6:命令處理;在配置模塊中,根據(jù)命令編碼,調(diào)用系統(tǒng)任務(wù),處理命令信號幀中的內(nèi)容,之后執(zhí)行根據(jù)命令內(nèi)容選擇執(zhí)行Step7, Step8或是Step9;Step7:生成激勵;根據(jù)命令處理中得到的內(nèi)容,生成符合被測系統(tǒng)要求的輸入信號; Step8:設(shè)定被測系統(tǒng)某寄存器的值;根據(jù)命令處理中得到的內(nèi)容,設(shè)定被測系統(tǒng)某寄存器的值; Step9:收集響應(yīng);根據(jù)命令處理中得到的內(nèi)容,控制響應(yīng)收集模塊收集被測系統(tǒng)得響應(yīng),或者 直接提取被測系統(tǒng)中某寄存器的值; SteplO:將收集的響應(yīng)進行編碼;將收集到響應(yīng)信號按照權(quán)利要求1中所述的響應(yīng)信號幀的要求進行編碼; Step 11:將響應(yīng)信號發(fā)送至驗證模塊; Step 12:接收響應(yīng)信號幀;Stepl3:對響應(yīng)信號進行分解,去掉幀結(jié)構(gòu),該幀格式包括被測系統(tǒng)輸出 信號的幀格式和響應(yīng)信號幀格式,提取有效數(shù)據(jù),并將數(shù)據(jù)送至斷言判決模塊; Stepl4:斷言判決; 將得到的響應(yīng)與響應(yīng)參考值進行比較;Stepl5:可選操作,根據(jù)Stepl的設(shè)置,對結(jié)果進行分類和統(tǒng)計,該步驟 用于N測試向量的使用,其中,N為自然數(shù),N^2;Stepl6:將結(jié)果輸送至人機接口,完成本次驗證過程。
6、根據(jù)權(quán)利要求5所述的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證方法,其特征 在于,步驟3, 4同時執(zhí)行,其中,步驟3又分為Step3.1:打開仿真器;Step3.2:向標(biāo)準(zhǔn)輸入通道中輸入命令信號幀,并以"/n"結(jié)尾;在Step3.1執(zhí)行的同時,Step4同時執(zhí)行Step4.1:在測試模塊中打開標(biāo)準(zhǔn)輸入輸出通道;Step4.2:掃描標(biāo)準(zhǔn)輸入通道,當(dāng)通道中不為空時,開始接收數(shù)據(jù);Step4.3:判斷接收到第一個字是否為偶數(shù);若為偶數(shù),則命令信號幀幀頭正確,繼續(xù)執(zhí)行Step4.4;否則,命令信號幀 幀頭不正確,完成此次接收過程,執(zhí)行Step4.6; Step4.4:判斷接收到的數(shù)據(jù)是否為"/n"; 若結(jié)果為"是",則證明該條命令接收結(jié)束,執(zhí)行Step4.6; 若結(jié)果為"否",則執(zhí)行Step4.5;Step4.5:繼續(xù)接收數(shù)據(jù),并將接收到的數(shù)據(jù)返回Step4.4進行判斷;Step4.6:接收結(jié)束,觸發(fā)事件"commandin",啟動解碼模塊和配置模塊。
7、根據(jù)權(quán)利要求5所述的用于通信系統(tǒng)集成電路設(shè)計的仿真驗證方法,其特征 在于,步驟ll, 12同時執(zhí)行,其中,步驟ll又分為Step 11.1:當(dāng)編碼完成后,觸發(fā)event "result out",啟動發(fā)送過程;Stepll.2:將響應(yīng)信號幀輸出至標(biāo)準(zhǔn)輸出通道,并以"eof"結(jié)尾;在11.2執(zhí)行的同時,Stepl2同時在驗證模塊中執(zhí)行Stepl2.1:,掃描標(biāo)準(zhǔn)輸出通道,當(dāng)通道中不為空時,開始接收數(shù)據(jù);Stepl2.2:判斷接收到的數(shù)據(jù)是否為"eof";若結(jié)果為"是",則證明該條命令接收結(jié)束,執(zhí)行Stepl2.4;若結(jié)果為"否",則執(zhí)行Stepl2.3;Stepl2.3:繼續(xù)接收數(shù)據(jù),并將接收到的數(shù)據(jù)返回Step4.4進行判斷; Stepl2.4:接收結(jié)束,將數(shù)據(jù)傳至命令處理模塊。
全文摘要
本發(fā)明提供了用于通信系統(tǒng)集成電路設(shè)計的實時仿真驗證系統(tǒng)和方法,用于通信系統(tǒng)的集成電路設(shè)計的驗證,該系統(tǒng)和方法可用于通信系統(tǒng)集成電路設(shè)計中的前端和后端實時驗證。該發(fā)明所提供的系統(tǒng)和方法包括測試模塊通過調(diào)用相關(guān)任務(wù),產(chǎn)生被測系統(tǒng)所需幀格式的激勵數(shù)據(jù)并收集被測系統(tǒng)產(chǎn)生的響應(yīng),并在驗證模塊中比較響應(yīng)值與參考值,得到驗證結(jié)論,兩模塊通過文本方式進行通信。該系統(tǒng)與方法針對有固定幀格式的通信系統(tǒng),可根據(jù)需要移植在不同的系統(tǒng)驗證中;同時,該系統(tǒng)改變了驗證的基本步驟的執(zhí)行順序,并可實時操作,減少了仿真驗證所需的時間。該系統(tǒng)既可應(yīng)用標(biāo)準(zhǔn)串口的簡單系統(tǒng),也可應(yīng)用于導(dǎo)航接收機的大規(guī)模復(fù)雜通信系統(tǒng)的仿真驗證。
文檔編號G06F17/50GK101504690SQ200910080869
公開日2009年8月12日 申請日期2009年3月26日 優(yōu)先權(quán)日2009年3月26日
發(fā)明者展 張, 帥 張, 張曉林, 蘇琳琳 申請人:北京航空航天大學(xué)