TURBO51嵌入式微處理器功能驗(yàn)證
TURBO51的FPGA 驗(yàn)證的前提是設(shè)計(jì)已經(jīng)過(guò)了關(guān)鍵點(diǎn)的形式驗(yàn)證, 完成了塊覆蓋率為100% 的RTL仿真及代碼檢查且錯(cuò)誤已收斂完畢, 故對(duì)FPGA驗(yàn)證的首要目的是通過(guò)運(yùn)行和真實(shí)應(yīng)用環(huán)境完全相同的完整目標(biāo)應(yīng)用系統(tǒng)驗(yàn)證兩步的錯(cuò)誤估計(jì)是否正確并配合其他SOC 模塊作SOC 協(xié)同驗(yàn)證。因?yàn)閷?duì)有的仿真做起來(lái)不方便的系統(tǒng)驗(yàn)證在FPGA 平臺(tái)上很方便驗(yàn)證。在TURBO51的FPGA 驗(yàn)證中, 充分利用了FPGA 上的剩余資源, 用于實(shí)時(shí)定位與監(jiān)測(cè)TURBO51的FPGA 實(shí)現(xiàn)版每個(gè)時(shí)鐘的狀態(tài)及其運(yùn)行狀態(tài), 這其實(shí)已使原本認(rèn)為FPGA 上難于定位錯(cuò)誤的缺陷大為改觀, 在真實(shí)環(huán)境下運(yùn)行系統(tǒng)提供了非常接近RTL仿真的調(diào)試能力的觀測(cè)窗口。這里依然首先選用了指令提交地址和指令取指地址,累加器, B 寄存器, 程序狀態(tài)字PSW, 重定序緩沖狀態(tài), 例外處理標(biāo)識(shí), 寫回總線,提交總線位為主要觀察點(diǎn), 顯示每個(gè)時(shí)鐘的狀態(tài), 將它們協(xié)同SOC 其它模塊的輸出, 示波器觀測(cè)輸出波形結(jié)果一起形成FPGA 驗(yàn)證結(jié)果。TURBO51在FPGA 驗(yàn)證時(shí)工作在60MH z, 除運(yùn)行全部手工編寫的用于模擬仿真的測(cè)試程序外, 還成功連續(xù)兩百小時(shí)運(yùn)行全部現(xiàn)有量產(chǎn)的基于RTOS商用系統(tǒng)及其極限條件, 沒有發(fā)現(xiàn)嚴(yán)重錯(cuò)誤。通過(guò)對(duì)寄存器值的實(shí)時(shí)監(jiān)測(cè)發(fā)現(xiàn)十處以內(nèi)的外設(shè)非致命錯(cuò), 比如GPIO 與外設(shè)輸入輸出復(fù)用。
當(dāng)然, 每改一次RTL或監(jiān)視寄存器都需要重新進(jìn)行FPGA 燒寫文件的生成, TURBO51耗時(shí)近兩小時(shí), 故它仍然不可能取代仿真。完成FPGA 驗(yàn)證后做準(zhǔn)備流片的工廠提供的工藝標(biāo)準(zhǔn)單元庫(kù)綜合及靜態(tài)時(shí)序分析, 交出網(wǎng)表做后端布局布線, 完成后再用帶門延時(shí)的后端門級(jí)網(wǎng)表進(jìn)行門級(jí)仿真,最后編寫樣片基臺(tái)測(cè)試程序。
6 驗(yàn)證結(jié)果分析
由于最初在制定實(shí)現(xiàn)的方法和制定驗(yàn)證計(jì)劃時(shí)是同步進(jìn)行的, 致使整個(gè)設(shè)計(jì)階段的錯(cuò)誤累積。在TURBO51的設(shè)計(jì)和驗(yàn)證中, 首先用形式驗(yàn)證將最高風(fēng)險(xiǎn)的存貯訪問(wèn), 高速緩存, 分支預(yù)測(cè), 動(dòng)態(tài)執(zhí)行, 例外處理中的最高風(fēng)險(xiǎn)組合進(jìn)行完備證明,使錯(cuò)誤得以排除。在此后的驗(yàn)證中, 凡經(jīng)形式驗(yàn)證正確的部分再未出現(xiàn)過(guò)異常, 如圖1所示。
圖1 錯(cuò)誤時(shí)間累計(jì)統(tǒng)計(jì)。
這樣使得全部的高風(fēng)險(xiǎn)錯(cuò)誤在RTL仿真的中期已經(jīng)全部排除并且大多數(shù)都由手工編寫的測(cè)試激勵(lì)完成。由于8051指令集指令死角空間相對(duì)較小,手工編寫可行。其中大部分RTL 仿真發(fā)現(xiàn)的錯(cuò)是IO設(shè)備錯(cuò)誤與處理器指令執(zhí)行部分無(wú)關(guān)。如圖2所示, 錯(cuò)誤99. 7% 百分比在FPGA 驗(yàn)證前已收斂,故可認(rèn)定前面工作扎實(shí)有效。假如一個(gè)設(shè)計(jì)如果在FPGA 驗(yàn)證階段錯(cuò)誤還未能收斂完, 還能發(fā)現(xiàn)大量新增錯(cuò)誤尤其是嚴(yán)重錯(cuò)誤的話, 這說(shuō)明仿真及行為模型描述與驗(yàn)證計(jì)劃都存在嚴(yán)重問(wèn)題,應(yīng)退回去重走一遍, 否則流片風(fēng)險(xiǎn)較大。
圖2 不同驗(yàn)證階段發(fā)現(xiàn)的錯(cuò)誤分布統(tǒng)計(jì)。
7 總結(jié)和未來(lái)工作
TURBO51嵌入式微處理器使用了上述多種驗(yàn)證方法使得越嚴(yán)重的錯(cuò)誤得到了越早的收斂, 加上高的RTL代碼覆蓋率及長(zhǎng)時(shí)間在FPGA 上成功運(yùn)行了全部目標(biāo)應(yīng)用程序及所有仿真測(cè)試程序, 表明設(shè)計(jì)正確且兼容性完備, 使TURBO51嵌入式微處理器順利采用富士通微電子(日本) 90nmCMOS 工藝一次流片成功。但另一方面, 可配置約束的自動(dòng)隨機(jī)指令序列已在更復(fù)雜的處理器驗(yàn)證中越來(lái)越廣泛地采用, TURBO51的驗(yàn)證中在這一方面目前還處于初級(jí)階段, 這將是以后的主要改進(jìn)方向。
評(píng)論