1. SCE-MI協(xié)議簡介
SCE-MI(Standard Co-Emulation API: Modeling Interface)是一種標準化的協(xié)同仿真建模接口協(xié)議,旨在為SoC設計驗證提供高效的硬件仿真與軟件模型協(xié)同工作環(huán)境。該協(xié)議基于SystemVerilog DPI接口擴展而來,通過多通道通信機制支持非時序軟件模型與RTL或門級硬件模型的無縫連接,特別優(yōu)化了硬件仿真器和快速原型驗證環(huán)境下的性能表現(xiàn)。SCE-MI采用消息/事務導向的通信方式而非事件驅(qū)動,有效避免了傳統(tǒng)接口在高速仿真環(huán)境中的通信瓶頸,同時支持事務級模型在仿真和仿真環(huán)境間的雙向遷移,為EDA行業(yè)提供了統(tǒng)一的驗證接口標準,解決了不同廠商API不兼容導致的驗證工具互操作性問題。
SCE-MI標準直接支持三種主要使用模型(圖4.1),用于連接HDL編寫的模型與工作站上運行的模型。每種使用模型都通過相應的接口實現(xiàn):第一種是基于消息傳遞的宏接口,第二種是基于SystemVerilog DPI的新型函數(shù)接口,第三種是新型管道接口。這三種接口構(gòu)成獨立的使用模型,只要接口實現(xiàn)支持對應規(guī)范,采用任一接口的模型都能與對端通信。

圖4.2展示了SCE-MI如何將非時序軟件模型與結(jié)構(gòu)化硬件事務器和DUT模型互連的高層視圖。

SCE-MI為每個通道在仿真器和工作站之間提供傳輸基礎設施,將仿真器中的事務器模型與工作站上的C(非時序或RTL)模型互連。"仿真器"一詞可與任何能夠執(zhí)行RTL或門級模型的仿真器互換使用,包括軟件HDL仿真器。
這些互連以消息通道的形式提供,運行在SCE-MI基礎設施的軟件端和硬件端之間。每個消息通道有兩個端點:軟件端的稱為消息端口代理,是提供通道API訪問的C++對象或C函數(shù);硬件端的稱為消息端口,實例化在事務器內(nèi)部并連接到事務器中的其他組件。每個消息通道相對于硬件端是輸入或輸出通道。
消息通道不是硬件信號意義上的單向或雙向總線,而更像是使用消息傳遞協(xié)議的網(wǎng)絡套接字。事務器的作用是作為抽象墊片,將從軟件端輸入通道到達的消息分解為可以時鐘驅(qū)動到DUT的周期精確事件序列。對于另一個方向的流,事務器將從DUT來的事件序列重新組合成消息,通過輸出通道發(fā)送到軟件端。
此外,SCE-MI基礎設施在基于宏的使用模型中提供時鐘(和復位)生成以及與事務器的共享時鐘控制握手信號。這使得事務器在執(zhí)行消息組合和分解操作時可以"凍結(jié)"受控時間。
2.基于宏的消息傳遞接口(Macro-based Message Passing Interface)
基于宏的消息傳遞接口運行時環(huán)境由一組接口組件組成,這些組件位于接口的硬件側(cè)和軟件側(cè),每個組件提供不同級別的功能。
硬件側(cè)接口組件:
SCE-MI硬件側(cè)呈現(xiàn)的接口組件由一小部分宏組成,這些宏提供事務器和SCE-MI基礎設施之間的連接點。這些緊湊定義且易于使用的宏向事務器和DUT完整呈現(xiàn)了接口的所有必要方面。這些宏簡單地表示為空的SystemVerilog或VHDL模型,具有明確定義的端口和參數(shù)接口。這類似于定義API調(diào)用函數(shù)原型而不顯示其實現(xiàn)的軟件API規(guī)范。
簡而言之,四個宏向事務器和DUT呈現(xiàn)以下接口:
消息輸入端口接口、消息輸出端口接口、受控時鐘和受控復位生成器接口、非受控時鐘、非受控復位和時鐘控制邏輯接口
軟件側(cè)接口組件:
SCE-MI基礎設施向軟件側(cè)呈現(xiàn)的接口由一組C++對象和方法組成,提供以下功能:
版本發(fā)現(xiàn)、參數(shù)訪問、初始化和關閉、消息輸入和輸出端口代理綁定和回調(diào)注冊、與硬件側(cè)的會合操作、基礎設施服務循環(huán)輪詢函數(shù)、消息輸入發(fā)送函數(shù)、消息輸出接收回調(diào)分派、消息輸入就緒回調(diào)分派、錯誤處理。
除了C++面向?qū)ο蟮慕涌谕?,還為純C應用程序提供了一組C API函數(shù)。
3. 基于函數(shù)的接口(Function-based interface)
SCE-MI的基于函數(shù)接口設計以無預定義API為核心思想,允許用戶直接在一種語言中定義函數(shù)并在另一種語言中調(diào)用,形成跨語言事務通道。這種設計充分利用SystemVerilog DPI(IEEE 1800)的標準化特性,將函數(shù)調(diào)用本身作為最小事務單元,其輸入/輸出參數(shù)自然構(gòu)成事務的數(shù)據(jù)成員,避免了傳統(tǒng)消息傳遞中繁瑣的位切片操作。在數(shù)據(jù)類型映射上,SystemVerilog的固定寬度類型(如int=32位)與C的兼容類型(如int32_t)直接對應,而位向量通過svBitVecVal實現(xiàn)映射,但需注意ANSI C整數(shù)寬度的靈活性可能要求用戶處理數(shù)據(jù)掩碼和填充問題。
上下文處理是跨語言調(diào)用的關鍵技術(shù)挑戰(zhàn)。由于C函數(shù)缺乏面向?qū)ο蟮纳舷挛模ㄈ鏑++的this指針),SCE-MI通過作用域綁定機制解決:在初始化階段,使用svPutUserData將HDL模塊實例的作用域(通過svGetScopeFromName獲?。┡c用戶數(shù)據(jù)(如C++對象指針)關聯(lián);在函數(shù)調(diào)用時,通過svGetScope動態(tài)獲取調(diào)用者作用域,再以svGetUserData提取關聯(lián)對象,確保事務在正確的上下文中執(zhí)行。這一機制在SystemVerilog HVL與HDL的交互中尤為重要,其三層架構(gòu)(HVL→C層→HDL)通過自動生成的C層代碼實現(xiàn)無縫橋接。
SV-Connect架構(gòu)專門針對SystemVerilog HVL與HDL的集成設計。EDA工具利用VPI解析HVL側(cè)的DPI函數(shù)聲明,自動生成精簡的C中間層:
入站調(diào)用(HVL→HDL)時,C層傳遞HDL實例的作用域句柄chandle,使HVL側(cè)能精確定位目標事務器;
出站調(diào)用(HDL→HVL)時,C層通過svGetScope()捕獲HDL調(diào)用者作用域,切換至HVL包作用域后調(diào)用目標函數(shù)。HVL側(cè)通過靜態(tài)作用域映射表(如static ProxyClass proxyMap[chandle])將作用域與代理對象綁定,實現(xiàn)事務的定向分發(fā)。
基于函數(shù)接口的核心優(yōu)勢在于其標準化和零時間事務特性:基于成熟的SystemVerilog DPI標準,函數(shù)調(diào)用不消耗仿真時間,規(guī)避了時鐘同步問題,同時無縫集成SystemC/UVM等驗證方法學。典型應用包括事務級驗證(連接非時序測試平臺與RTL DUT)、IP復用(事務器實現(xiàn)者預封裝函數(shù)接口)以及混合仿真環(huán)境移植,為復雜SoC驗證提供高效、可移植的解決方案。
4.基于管道的接口(Pipe-based interface)
SCE-MI管道接口(Pipe-based Interface)是針對流式數(shù)據(jù)傳輸和可變長消息設計的核心通信機制,其設計融合了UNIX流式處理與套接字通信的精髓。管道作為單向事務通道,支持兩種數(shù)據(jù)可見性模式:延遲可見性模式下,生產(chǎn)者寫入的數(shù)據(jù)需等待管道填滿或顯式刷新(flush)后才對消費者可見,適用于批量傳輸優(yōu)化;即時可見性模式則確保數(shù)據(jù)寫入后立即可見,消費者下次獲得執(zhí)行控制權(quán)即可訪問,適用于實時交互場景。管道在語義上兼具UNIX文件流的緩沖傳輸與刷新機制、UNIX命名管道的唯一標識性(通過HDL層級路徑綁定),以及套接字式單向消息傳遞的簡潔性,但規(guī)避了復雜綁定流程。
與傳統(tǒng)TLM FIFO相比,管道具備顯著差異:FIFO需用戶預設固定緩沖深度并依賴自動同步機制,而管道由實現(xiàn)定義動態(tài)緩沖深度(支持運行時優(yōu)化),用戶通過顯式flush控制同步點,且僅支持阻塞操作以保證確定性。這種設計使管道天然適配流式數(shù)據(jù)與可變長消息場景,例如支持數(shù)據(jù)整形機制——漏斗模式允許生產(chǎn)者寬位寬發(fā)送(如整幀100字節(jié))、消費者窄位寬處理(逐字節(jié)接收),實現(xiàn)高效批量傳輸;噴嘴模式則支持生產(chǎn)者窄位寬發(fā)送(逐字節(jié))、消費者寬位寬接收(整幀處理),滿足隨機訪問需求。配合EOM(消息結(jié)束)標記,生產(chǎn)者可通過eom=1標識消息邊界,基礎設施確??缥粚掁D(zhuǎn)換時EOM僅出現(xiàn)在末位元素(如噴嘴模式中消費者讀取整幀時置位),解決了可變長消息的邊界同步問題。
針對RTL驗證的時序挑戰(zhàn),管道引入時鐘綁定機制:傳統(tǒng)管道在狀態(tài)機中可能因異步喚醒引發(fā)時序失配,而時鐘管道(如scemi_input_pipe #(..., .IS_CLOCKED_INTF=1) input_pipe(clock);)通過綁定時鐘信號,使receive/send操作嚴格同步于時鐘邊沿。如圖4.11/4.12所示,該機制可直接集成到RTL狀態(tài)機,避免非阻塞輪詢(try_receive)的復雜性,確保周期精確的事務處理。例如在以太網(wǎng)幀傳輸中,C端可逐字節(jié)發(fā)送可變長幀(eom標記幀尾),HDL端通過時鐘管道整幀接收并處理,實現(xiàn)軟件模型(非時序)與RTL模型(周期精確)的無縫橋接。
實現(xiàn)層面,管道采用分層架構(gòu):用戶層提供阻塞式send/receive等易用接口,基礎設施層則提供線程中立的回調(diào)函數(shù),支持適配SystemC等多線程環(huán)境。其參考實現(xiàn)可基于DPI函數(shù)構(gòu)建,確保跨平臺一致性;優(yōu)化實現(xiàn)則允許廠商針對硬件加速器深度定制批處理與并發(fā)傳輸。需注意的是,基礎設施不防范應用層死鎖(如HDL等待空管道但C端未發(fā)送數(shù)據(jù)),且所有實現(xiàn)必須嚴格遵循標準語義以保證行為確定性。典型應用包括流式數(shù)據(jù)傳輸(如文件流注入)和混合抽象層橋接,通過動態(tài)緩沖深度優(yōu)化流式場景,顯式指定深度滿足FIFO需求,成為復雜SoC驗證中連接事務級測試平臺與RTL DUT的核心基礎設施。
原文鏈接:
https://community.sslcode.com.cn/6881a30fa6db534ba2bb6c9f.html
-
接口
+關注
關注
33文章
9453瀏覽量
156296 -
仿真
+關注
關注
54文章
4416瀏覽量
137766 -
函數(shù)
+關注
關注
3文章
4408瀏覽量
66961 -
模型
+關注
關注
1文章
3656瀏覽量
51798
原文標題:SCE-MI協(xié)議簡介
文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄

SCE-MI協(xié)議簡介
評論