一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法
【專利摘要】本發(fā)明提供一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,對(duì)CPU在測(cè)試中準(zhǔn)備運(yùn)行的c程序代碼進(jìn)行編譯,產(chǎn)生匯編程序,然后在每個(gè)涉及地址操作的指令后加一條log打印指令,對(duì)rtl設(shè)計(jì)進(jìn)行rtl仿真,產(chǎn)生地址操作log文件,讀取地址操作log文件和所有的可訪問模塊地址區(qū)間信息,把有進(jìn)行地址操作的地址進(jìn)行匯總,網(wǎng)表映射分析單元讀取讀取模塊的網(wǎng)表設(shè)計(jì)和模塊對(duì)應(yīng)的svf文件,分析每個(gè)邏輯節(jié)點(diǎn)的映射關(guān)系,再將rtl的波形節(jié)點(diǎn)映射為網(wǎng)表的節(jié)點(diǎn),推算出網(wǎng)表中新增的standard_cell單元的邏輯值,將rtl仿真波形映射為網(wǎng)表波形;最后進(jìn)行功耗分析得到指定模塊的功耗數(shù)據(jù)。從而極大的提高了芯片的仿真速度。
【專利說(shuō)明】
一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及一種S0C芯片仿真技術(shù),特別涉及一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法。 【背景技術(shù)】
[0002]隨著S0C芯片規(guī)模的快速增加,對(duì)S0C進(jìn)行驗(yàn)證的仿真工作量也是迅速的增加。特別是芯片整體的網(wǎng)表驗(yàn)證階段,由于所有的仿真行為都加入了時(shí)序信息,服務(wù)器的運(yùn)算量非常巨大,一條驗(yàn)證激勵(lì)的仿真時(shí)間經(jīng)常都需要一個(gè)星期左右的運(yùn)行時(shí)間,而一個(gè)芯片的驗(yàn)證通常需要成百上千的驗(yàn)證激勵(lì).由于驗(yàn)證仿真的時(shí)間過長(zhǎng),給整個(gè)芯片的研發(fā)時(shí)間提出了極大的挑戰(zhàn)。所以如何降低大型S0C的仿真時(shí)間是非常有意義的工作,而目前沒有較好的辦法解決這一難題。
【發(fā)明內(nèi)容】
[0003]本發(fā)明要解決的技術(shù)問題,在于提供一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,通過仿真程序配置和電路設(shè)計(jì)修改配合的方式,極大的提高了芯片的仿真速度。
[0004]本發(fā)明是這樣實(shí)現(xiàn)的:一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,仿真前先對(duì)rtl設(shè)計(jì)按照模塊分別進(jìn)行rtl綜合,產(chǎn)生所有的可訪問模塊的網(wǎng)表和所有的可訪問模塊的svf文件, 則所述芯片網(wǎng)表仿真方法包括:
[0005]步驟1、通過一測(cè)試激勵(lì)c代碼文件來(lái)存儲(chǔ)S0C芯片中的CPU在測(cè)試中準(zhǔn)備運(yùn)行的所有c程序代碼;
[0006]步驟2、通過程序編譯器讀取所述測(cè)試激勵(lì)c代碼文件中的c程序代碼進(jìn)行編譯,產(chǎn)生匯編程序;
[0007]步驟3、通過程序分析修改單元讀取所述匯編程序和所有的可訪問模塊地址區(qū)間信息,收集所有匯編代碼中的地址操作相關(guān)代碼,把有進(jìn)行地址操作的地址進(jìn)行匯總,然后在每個(gè)涉及地址操作的指令后加一條log打印指令,以將每個(gè)涉及地址操作的指令涉及的地址變量或者常量打印出來(lái);
[0008]步驟4、在rtl仿真平臺(tái)上使用修改后的匯編代碼對(duì)rtl設(shè)計(jì)進(jìn)行rtl仿真,產(chǎn)生地址操作log文件;
[0009]步驟5、涉及IP分析修改單元讀取地址操作log文件和所有的可訪問模塊地址區(qū)間信息,收集所有地址操作log文件中的地址值,把有進(jìn)行地址操作的地址進(jìn)行匯總;
[0010]再根據(jù)所有的可訪問模塊地址區(qū)間進(jìn)行比較,看有哪一些模塊沒有任何的地址操作,然后把涉及地址操作的模塊編號(hào)發(fā)送到網(wǎng)表映射分析單元;
[0011]步驟6、網(wǎng)表映射分析單元收到涉及地址操作的模塊編號(hào)后,到模塊網(wǎng)表庫(kù)中讀取模塊的網(wǎng)表設(shè)計(jì)和模塊對(duì)應(yīng)的svf?文件,分析每個(gè)邏輯節(jié)點(diǎn)的映射關(guān)系,然后再讀取rtl仿真的波形文件;
[0012]再將rtl的波形節(jié)點(diǎn)映射為網(wǎng)表的節(jié)點(diǎn),然后通過兩個(gè)對(duì)應(yīng)映射點(diǎn)的仿真波形值, 推算出網(wǎng)表中新增的s tandar d_c e 11單元的邏輯值,由此將r 11仿真波形映射為網(wǎng)表波形,然后將網(wǎng)表波形送往power分析工具;[0〇13]步驟7 4〇¥61'分析工具在口1';[1116_1:;[1116上進(jìn)行功耗分析得到指定模塊的功耗數(shù)據(jù)。 此處的prime_time是Synopsys公司的靜態(tài)時(shí)序分析軟件,常被用來(lái)分析大規(guī)模數(shù)字ASIC, 作為專門的靜態(tài)時(shí)序分析工具,prime_time可以為一個(gè)設(shè)計(jì)提供的時(shí)序分析和設(shè)計(jì)檢查, 以及電路功耗分析。
[0014]進(jìn)一步的,所述步驟3的具體過程是:使用vi程序打開匯編代碼,然后使用perl的正則表達(dá)式找出匯編代碼中所有涉及地址操作的匯編指令的位置,然后在每個(gè)地址操作指令后面增加一個(gè)log打印指令,該指令不影響仿真電路行為,只是將地址指令中操作的地址變量或者常量打印到一個(gè)log文件。此處的Perl是一種功能豐富的計(jì)算機(jī)程序語(yǔ)言。
[0015]進(jìn)一步的,所述步驟5中根據(jù)所有的可訪問模塊地址區(qū)間進(jìn)行比較,看有哪一些模塊沒有任何的地址操作,然后把涉及地址操作的模塊編號(hào)發(fā)送到網(wǎng)表映射分析單元的具體過程是:[〇〇16]使用vi程序打開匯編代碼,然后使用perl的正則表達(dá)式找出操作地址從屬于哪個(gè)模塊的地址區(qū)間,然將對(duì)應(yīng)模塊的ID編號(hào)記錄下來(lái)送往網(wǎng)表映射分析單元。
[0017]進(jìn)一步的,所述步驟4中所述rtl仿真平臺(tái)在進(jìn)行仿真前的工作流程包括:
[0018]Sl、cpu在BOOT復(fù)位后進(jìn)入復(fù)位跳轉(zhuǎn)處理,會(huì)將獲取指令地址跳轉(zhuǎn)到指定的boot程序存放地址,也就是測(cè)試激勵(lì)c代碼文件的程序?qū)?yīng)的存放地址;[〇〇19] S2、從boot地址完成指令讀取后,開始執(zhí)行指令,第一條指令內(nèi)容為讀取當(dāng)前運(yùn)行 CPU的ID號(hào),如果ID不為零則運(yùn)行WFI指令;
[0020]S3、完成ID判斷后,將系統(tǒng)從boot起來(lái)時(shí)使用的晶振電路產(chǎn)生的低速時(shí)鐘切換為 PLL輸出的高速時(shí)鐘,使仿真時(shí)間大幅縮短;
[0021]S4、完成上面的操作后,指令跳往主仿真程序的存放地址開始執(zhí)行仿真激勵(lì)。
[0022]本發(fā)明具有如下優(yōu)點(diǎn):本發(fā)明通過仿真程序配置和電路設(shè)計(jì)修改配合的方法,極大的提高了芯片的仿真速度,可以有效減少芯片的驗(yàn)證仿真時(shí)間,從而減少整個(gè)芯片的研發(fā)時(shí)間,并且一開始就讓系統(tǒng)進(jìn)入高速模式,把多核中的其他核很快進(jìn)入休眠,減少無(wú)效訪問;能自動(dòng)判斷使用的電路部分,自動(dòng)使用空殼代碼,設(shè)置復(fù)位寄存器路徑,減少系統(tǒng)復(fù)位時(shí)間長(zhǎng)度;還能使用r 11綜合時(shí)產(chǎn)生的s v f文件,直接做r 11到網(wǎng)表的映射分析,推算出網(wǎng)表波形做功耗分析,省掉了網(wǎng)表仿真這個(gè)環(huán)節(jié),大幅節(jié)省了時(shí)間,從而極大地提高了芯片功耗評(píng)估的效率。【附圖說(shuō)明】
[0023]下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的說(shuō)明。[〇〇24]圖1為本發(fā)明方法執(zhí)行流程圖。[〇〇25]圖2為本發(fā)明rtl仿真平臺(tái)的在進(jìn)入仿真程序前的工作流程圖?!揪唧w實(shí)施方式】
[0026]如圖1所示,本發(fā)明的芯片功耗評(píng)估平臺(tái)的評(píng)估方法,該芯片功耗評(píng)估平臺(tái)由圖1 中的各模塊組成,所述評(píng)估方法需在仿真前先對(duì)rtl設(shè)計(jì)按照模塊分別進(jìn)行rtl綜合,綜合工具為Design compiler,綜合后產(chǎn)生所有的可訪問模塊的網(wǎng)表和所有的可訪問模塊的svf文件,其中,SVf文件是用于描述rtl綜合轉(zhuǎn)化為網(wǎng)表過程中的映射關(guān)系的文件,記錄了綜合工具對(duì)rtl到網(wǎng)表的轉(zhuǎn)化和優(yōu)化過程,可以用這個(gè)文件進(jìn)行rtl設(shè)計(jì)和網(wǎng)表設(shè)計(jì)中對(duì)應(yīng)點(diǎn)的映射分析。[〇〇27]則所述評(píng)估方法包括:[〇〇28]步驟1、通過一測(cè)試激勵(lì)c代碼文件來(lái)存儲(chǔ)S0C芯片中的CPU在測(cè)試中準(zhǔn)備運(yùn)行的所有c程序代碼;
[0029]步驟2、通過程序編譯器讀取所述測(cè)試激勵(lì)c代碼文件中的c程序代碼進(jìn)行編譯,產(chǎn)生匯編程序;
[0030]步驟3、通過程序分析修改單元讀取所述匯編程序和所有的可訪問模塊(指所有 S0C中的所有的可訪問模塊,比如顯示控制模塊、I2S模塊、UART模塊等,但不包括芯片功耗評(píng)估平臺(tái)本身的模塊)地址區(qū)間信息,收集所有匯編代碼中的地址操作相關(guān)代碼,把有進(jìn)行地址操作的地址進(jìn)行匯總,然后在每個(gè)涉及地址操作的指令后加一條log打印指令,以將每個(gè)涉及地址操作的指令涉及的地址變量或者常量打印出來(lái);
[0031]具體過程是:使用Vi程序打開匯編代碼,然后使用perl的正則表達(dá)式找出匯編代碼中的LRD、STR、M0V等所有涉及地址操作的匯編指令的位置,然后在每個(gè)地址操作指令后面增加一個(gè)log打印指令,該指令不影響仿真電路行為,只是將地址指令中操作的地址變量或者常量打印到一個(gè)地址操作log文件,其作用是在仿真過程中可以將地址指令中操作的地址變量或者常量的值打印到地址操作log文件中。
[0032]步驟4、在rtl仿真平臺(tái)上使用修改后(此處的修改是指在地址操作指令后增加打印指令的匯編代碼)的匯編代碼對(duì)rtl設(shè)計(jì)進(jìn)行rtl仿真,產(chǎn)生地址操作log文件;
[0033]步驟5、涉及IP分析修改單元讀取地址操作log文件和所有的可訪問模塊地址區(qū)間信息,收集所有地址操作log文件中的地址值,把有進(jìn)行地址操作的地址進(jìn)行匯總;
[0034]再根據(jù)所有的可訪問模塊地址區(qū)間進(jìn)行比較,看有哪一些模塊沒有任何的地址操作,然后把涉及地址操作的模塊編號(hào)發(fā)送到網(wǎng)表映射分析單元;具體過程是:使用vi程序打開匯編代碼,然后使用perl的正則表達(dá)式找出操作地址從屬于哪個(gè)模塊的地址區(qū)間,然將對(duì)應(yīng)模塊的ID編號(hào)記錄下來(lái)送往網(wǎng)表組合單元。
[0035]步驟6、網(wǎng)表映射分析單元收到涉及地址操作的模塊編號(hào)后,到模塊網(wǎng)表庫(kù)中讀取模塊的網(wǎng)表設(shè)計(jì)和模塊對(duì)應(yīng)的svf?文件,分析每個(gè)邏輯節(jié)點(diǎn)的映射關(guān)系,然后再讀取rtl仿真的波形文件;
[0036]再將rtl的波形節(jié)點(diǎn)映射為網(wǎng)表的節(jié)點(diǎn),然后通過兩個(gè)對(duì)應(yīng)映射點(diǎn)的仿真波形值, 推算出網(wǎng)表中新增的s tandar d_c e 11單元的邏輯值,由此將r 11仿真波形映射為網(wǎng)表波形, 然后將網(wǎng)表波形送往power分析工具;關(guān)于推算,需要說(shuō)明的是:[0〇37] 本發(fā)明的rtl就是Register Transfer Level,為寄存器轉(zhuǎn)換級(jí)電路,所以經(jīng)過綜合后所有的網(wǎng)表寄存器和rtl代碼中的寄存器的位置和名稱都是可以直接一一對(duì)應(yīng)的,兩者不同的是寄存器中間的電路,在rtl中是抽象的邏輯描述,在網(wǎng)表中是具體的基本單元電路;svf中記錄了工具對(duì)抽象邏輯轉(zhuǎn)化為具體基本單元的對(duì)應(yīng)信息,所以在波形中獲取到所有寄存器的仿真值和抽象邏輯信號(hào)仿真值后,可以通過svf?找到rtl抽象邏輯信號(hào)對(duì)應(yīng)的基本單元電路,再加上本身就一一對(duì)應(yīng)的寄存器電路,可以直接推算出所有基本單元電路的仿真值,從而得到網(wǎng)表的仿真波形。[0〇38]步驟74〇¥61'分析工具在口1';[1116_1:;[1116上進(jìn)行功耗分析得到指定模塊的功耗數(shù)據(jù)。
[0039]再如圖2所示,為本發(fā)明rtl仿真平臺(tái)的在進(jìn)入仿真程序前的工作流程圖,即執(zhí)行所述測(cè)試激勵(lì)c代碼文件中的程序的流程,該流程包括下述過程:
[0040]Sl、cpu在BOOT復(fù)位后進(jìn)入復(fù)位跳轉(zhuǎn)處理,會(huì)將取指令地址跳轉(zhuǎn)到指定的boot程序存放地址,也就是測(cè)試激勵(lì)C代碼文件的程序(由于測(cè)試激勵(lì)C代碼文件是用來(lái)存儲(chǔ)S0C芯片中的CPU在測(cè)試中準(zhǔn)備運(yùn)行的所有c程序代碼,因此實(shí)質(zhì)上是可執(zhí)行程序)對(duì)應(yīng)的存放地址; [0041 ] S2、從boot地址完成指令讀取后,開始執(zhí)行指令,第一條指令內(nèi)容為讀取當(dāng)前運(yùn)行 CHJ的ID號(hào),如果ID不為零則運(yùn)行WFI指令(即讓當(dāng)前CPU進(jìn)行WFI睡眠狀態(tài),不再運(yùn)行后續(xù)程序,從而節(jié)省了大量的仿真行為);[〇〇42] 在多核CPU系統(tǒng)中,每個(gè)CPU都有一個(gè)ID,比如4核cpu系統(tǒng)中,主cpu的ID為0,另外3 個(gè)CPU的ID分別為1、2、3,每個(gè)CPU運(yùn)行讀取ID的指令都會(huì)讀取出自己的ID號(hào);[〇〇43]S3、完成ID判斷后,將系統(tǒng)從boot起來(lái)時(shí)使用的晶振電路產(chǎn)生的低速時(shí)鐘切換為PLL輸出的高速時(shí)鐘,使仿真時(shí)間大幅縮短;
[0044]S4、完成上面的操作后,指令跳往仿真程序的存放地址開始執(zhí)行仿真激勵(lì)。
[0045]以上的步驟在仿真啟動(dòng)后以最快速度關(guān)閉了不相關(guān)的CPU,并將仿真的速率提尚, 從而節(jié)省了大量的仿真任務(wù)量和仿真速度。
[0046]雖然以上描述了本發(fā)明的【具體實(shí)施方式】,但是熟悉本技術(shù)領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,我們所描述的具體的實(shí)施例只是說(shuō)明性的,而不是用于對(duì)本發(fā)明的范圍的限定,熟悉本領(lǐng)域的技術(shù)人員在依照本發(fā)明的精神所作的等效的修飾以及變化,都應(yīng)當(dāng)涵蓋在本發(fā)明的權(quán)利要求所保護(hù)的范圍內(nèi)。
【主權(quán)項(xiàng)】
1.一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,其特征在于:先對(duì)rtl設(shè)計(jì)按照模塊分別進(jìn)行 rt 1綜合,產(chǎn)生所有的可訪問模塊的網(wǎng)表和所有的可訪問模塊的svf文件,則所述評(píng)估方法 包括:步驟1、通過一測(cè)試激勵(lì)c代碼文件來(lái)存儲(chǔ)SOC芯片中的CPU在測(cè)試中準(zhǔn)備運(yùn)行的所有c 程序代碼;步驟2、通過程序編譯器讀取所述測(cè)試激勵(lì)c代碼文件中的c程序代碼進(jìn)行編譯,產(chǎn)生匯 編程序;步驟3、通過程序分析修改單元讀取所述匯編程序和所有的可訪問模塊地址區(qū)間信息, 收集所有匯編代碼中的地址操作相關(guān)代碼,把有進(jìn)行地址操作的地址進(jìn)行匯總,然后在每 個(gè)涉及地址操作的指令后加一條log打印指令,以將每個(gè)涉及地址操作的指令涉及的地址 變量或者常量打印出來(lái);步驟4、在rtl仿真平臺(tái)上使用修改后的匯編代碼對(duì)rtl設(shè)計(jì)進(jìn)行rtl仿真,產(chǎn)生地址操 作log文件;步驟5、涉及IP分析修改單元讀取地址操作log文件和所有的可訪問模塊地址區(qū)間信 息,收集所有地址操作log文件中的地址值,把有進(jìn)行地址操作的地址進(jìn)行匯總;再根據(jù)所有的可訪問模塊地址區(qū)間進(jìn)行比較,看有哪一些模塊沒有任何的地址操作, 然后把涉及地址操作的模塊編號(hào)發(fā)送到網(wǎng)表映射分析單元;步驟6、網(wǎng)表映射分析單元收到涉及地址操作的模塊編號(hào)后,到模塊網(wǎng)表庫(kù)中讀取模塊 的網(wǎng)表設(shè)計(jì)和模塊對(duì)應(yīng)的svf?文件,分析每個(gè)邏輯節(jié)點(diǎn)的映射關(guān)系,然后再讀取rtl仿真的 波形文件;再將rtl的波形節(jié)點(diǎn)映射為網(wǎng)表的節(jié)點(diǎn),然后通過兩個(gè)對(duì)應(yīng)映射點(diǎn)的仿真波形值,推算 出網(wǎng)表中新增的s tandar d_ce 11單元的邏輯值,由此將r 11仿真波形映射為網(wǎng)表波形,然后 將網(wǎng)表波形送往power分析工具;步驟7、?0¥61'分析工具在?1';[1]16_1:;[1]16上進(jìn)行功耗分析得到指定模塊的功耗數(shù)據(jù)。2.根據(jù)權(quán)利要求1所述的一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,其特征在于:所述步驟3 的具體過程是:使用vi程序打開匯編代碼,然后使用perl的正則表達(dá)式找出匯編代碼中所 有涉及地址操作的匯編指令的位置,然后在每個(gè)地址操作指令后面增加一個(gè)log打印指令, 該指令不影響仿真電路行為,只是將地址指令中操作的地址變量或者常量打印到一個(gè)log 文件。3.根據(jù)權(quán)利要求1所述的一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,其特征在于:所述步驟5 中根據(jù)所有的可訪問模塊地址區(qū)間進(jìn)行比較,看有哪一些模塊沒有任何的地址操作,然后 把涉及地址操作的模塊編號(hào)發(fā)送到網(wǎng)表映射分析單元的具體過程是:使用vi程序打開匯編代碼,然后使用perl的正則表達(dá)式找出操作地址從屬于哪個(gè)模塊 的地址區(qū)間,然將對(duì)應(yīng)模塊的ID編號(hào)記錄下來(lái)送往網(wǎng)表映射分析單元。4.根據(jù)權(quán)利要求1所述的一種芯片功耗評(píng)估平臺(tái)的評(píng)估方法,其特征在于:所述步驟4 中所述rt 1仿真平臺(tái)在進(jìn)行仿真前的工作流程包括:S1、cpu在BOOT復(fù)位后進(jìn)入復(fù)位跳轉(zhuǎn)處理,會(huì)將獲取指令地址跳轉(zhuǎn)到指定的boot程序存 放地址,也就是測(cè)試激勵(lì)c代碼文件的程序?qū)?yīng)的存放地址;S2、從boot地址完成指令讀取后,開始執(zhí)行指令,第一條指令內(nèi)容為讀取當(dāng)前運(yùn)行CPU的ID號(hào),如果ID不為零則運(yùn)行WFI指令;S3、完成ID判斷后,將系統(tǒng)從boot起來(lái)時(shí)使用的晶振電路產(chǎn)生的低速時(shí)鐘切換為PLL輸 出的高速時(shí)鐘,使仿真時(shí)間大幅縮短;S4、完成上面的操作后,指令跳往仿真程序的存放地址開始執(zhí)行仿真激勵(lì)。
【文檔編號(hào)】G06F17/50GK105975664SQ201610274550
【公開日】2016年9月28日
【申請(qǐng)日】2016年4月28日
【發(fā)明人】廖裕民, 嚴(yán)云峰
【申請(qǐng)人】福州瑞芯微電子股份有限公司