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