從前,硬件和軟件工程師大多生活在自己的世界里。硬件團(tuán)隊(duì)設(shè)計(jì)了芯片,調(diào)試了從鑄造廠返回的第一批樣本,讓軟件團(tuán)隊(duì)測(cè)試他們的代碼。隨著虛擬平臺(tái)和其他可執(zhí)行模型變得越來(lái)越普遍,軟件團(tuán)隊(duì)可以在芯片制造之前開始,有時(shí)甚至在嵌入式開發(fā)過(guò)程的早期。日程安排有更多的重疊,但團(tuán)隊(duì)之間的互動(dòng)仍然有限。
采用嵌入式處理器的片上系統(tǒng)(SoC)設(shè)計(jì)的興起給硬件和軟件的開發(fā)方式帶來(lái)了巨大的變化。由于處理器控制著SoC的大部分功能,驗(yàn)證團(tuán)隊(duì)通常會(huì)模擬在這些處理器上運(yùn)行的代碼。由于RTL仿真速度較慢,業(yè)界已經(jīng)看到仿真和FPGA原型的使用大幅增加?,F(xiàn)代驗(yàn)證技術(shù),包括Accellera內(nèi)部正在開發(fā)的便攜式刺激標(biāo)準(zhǔn),跨越了多個(gè)驗(yàn)證平臺(tái)。
編寫驗(yàn)證期間在嵌入式處理器上運(yùn)行的代碼是一個(gè)關(guān)鍵挑戰(zhàn)。嵌入式程序員經(jīng)常加入硬件驗(yàn)證團(tuán)隊(duì)來(lái)執(zhí)行這項(xiàng)任務(wù)。這種組織變革的一個(gè)結(jié)果是嵌入式軟件和硬件團(tuán)隊(duì)之間更早、更強(qiáng)的互動(dòng)。SoC中出現(xiàn)的通用CPU、卸載引擎和其他可編程內(nèi)核越多,嵌入式軟件團(tuán)隊(duì)的參與就越多。他們與設(shè)計(jì)和驗(yàn)證工程師一起開發(fā)SoC。
嵌入式開發(fā)程序員在模擬之外仍然密切參與;他們?cè)谟布脚_(tái)或?qū)嶋H芯片上的測(cè)試通??雌饋?lái)與模擬測(cè)試平臺(tái)代碼非常不同。應(yīng)該對(duì)測(cè)試進(jìn)行調(diào)整,以利用每個(gè)平臺(tái)的獨(dú)特特征。例如,慢速模擬支持持續(xù)檢查結(jié)果的短測(cè)試,而silicon最適合長(zhǎng)測(cè)試和累積結(jié)果。這種調(diào)整可以防止代碼下載時(shí)間或結(jié)果上傳時(shí)間影響處理器的驚人速度。
當(dāng)然,最終SoC必須運(yùn)行生產(chǎn)軟件,因此通常會(huì)努力盡快運(yùn)行該軟件。這可能早在虛擬平臺(tái)和RTL仿真時(shí)就發(fā)生了,并且在仿真或FPGA原型制作期間很常見??梢浦驳募?lì)技術(shù)可以為所有的驗(yàn)證和確認(rèn)平臺(tái)生成嵌入式測(cè)試用例,并且在生產(chǎn)軟件運(yùn)行之前有效地發(fā)現(xiàn)硬件缺陷。調(diào)試失敗的測(cè)試用例比操作系統(tǒng)或應(yīng)用程序中的掛起更容易。
雖然對(duì)于許多嵌入式開發(fā)工程師來(lái)說(shuō),硬件和軟件開發(fā)可能仍然是獨(dú)立的學(xué)科,但他們的團(tuán)隊(duì)比以往任何時(shí)候都更加緊密地合作。對(duì)早期生產(chǎn)軟件驗(yàn)證的需求、面向SoC驗(yàn)證和確認(rèn)的軟件驅(qū)動(dòng)測(cè)試以及跨驗(yàn)證平臺(tái)的可移植性都在推動(dòng)同一方向的發(fā)展?,F(xiàn)有標(biāo)準(zhǔn)(如UVM)可能會(huì)有相應(yīng)的發(fā)展,新標(biāo)準(zhǔn)(包括便攜式刺激)也會(huì)有相應(yīng)的發(fā)展。