王 鋒,張栗榕,王 磊
(新華三半導體技術有限公司 西安研究所,陜西 西安 710075)
芯片復雜度在多維度提升,一方面體現在晶體管數量劇增,另一方面,芯片中復雜子系統數量增加。芯片復雜度也在改變芯片設計生態,西門子EDA 和Wilson Research 公布了2022 年一起合作的研究報告白皮書,定量分析了芯片復雜度提升所帶來的一系列設計和驗證方法學變化及新需求,它們正在驅動未來幾年芯片開發領域變革。子系統的驗證隨著復雜度和數量提升會越來越具有挑戰性;同時,多個復雜子系統并行工作時的驗證成為另一個驗證難點;還有子系統的異質性,例如高性能模擬/混合信號模塊的驗證方法不一致,也給芯片系統驗證帶來挑戰。驗證逐漸占據了整個產品開發周期很大一部分,僅功能驗證一項就需要設計團隊約70%的精力和時間。芯片驗證將成為重中之重[1]。該白皮書表示,芯片首次流片成功的比例在下降,約有32%的項目在第一次“spin”取得成功,這意味著68%的項目沒有能夠按照計劃交付。子系統和芯片系統層面驗證由于DUT(Device Under Test)規模比較大,傳統的EDA驗證方法一直受制于仿真速度等限制,導致驗證周期長,無法快速發現、迭代和收斂設計問題。如何高效保證芯片設計質量、一次流片成功,成為芯片研發領域急需解決的瓶頸。
為了提高仿真效率,一般采取的措施包括部署高性能的服務器和存儲資源,優化系統級驗證場景和用例,采用EMU 或FPGA 等硬件加速及原型驗證資源并行驗證等。這些措施在提升測試執行效率時,也大幅提高了投入成本,或者對驗證覆蓋以及測試調試的效率有影響。
本文介紹一種自研的、利用分布式驗證平臺并行計算特點來加速芯片整體仿真速度的EDA 仿真加速系統(DVA)。該系統基于UVM 組件進行擴展,底層基于原生的Linux socket 組件進行通信,設計了一套包括控制面、數據流和會話的三平面通信同步機制,充分利用分布式驗證平臺,并行部署、管理仿真任務來加速芯片整體的仿真速度。
以兩個通用以太網接口DUT 通信為例說明DVA 系統結構。DVA 驗證系統的驗證平臺(TB)劃分為兩類:Manager TB(例如圖1 上面的TB_ID:100,負責DVA 系統配置和管理)和Simulation TB(基于待測芯片邏輯分割后的各DUT 而搭建,例如圖1 下方左側和右側兩個ETH_TB,TB_ID:200 和TB_ID:300)。

圖1 DVA 驗證系統架構示意圖
上述DVA 驗證系統的兩類TB 由三類通信聯結(如圖1 中虛線箭頭所示),即控制面(圖1 中Control Plane箭頭)、數據流(圖1 中 DataStream 箭頭)和會話(圖1 中Transaction 箭頭)。控制面通信是每個Simulation TB 和Manager TB 都要維護的一個通信通道,其主要功能是消息和事件的處理(Manager TB 處理Simulation TB 發送的消息和事件)和轉發(Manager TB 將一個Simulation TB 發送的消息和事件轉發到其他目的Simulation TB);數據流通信是芯片分割后各DUT 之間的信號交互,對應各Simulation TB 之間的業務數據流傳輸;會話是將DVA 驗證系 統Driver 和Monitor 組件 的Transaction 發送到Manager TB Checker 組件的通信通道。
Manager TB 中包含的主要組件是 master_data_socket_checker_agent 和 socket_control_process。其 中master_data_socket_checker_agent 實現基于會話通信接收Simulation TB 發送的激勵和輸出會話數據并進行比對(將Driver 和Monitor 組件的Transaction 發給Manager TB 進行checker 比對),作為整個DVA 驗證系統平臺的 checker。socket_control_process 組件基于socket通 過TLV(Tag Length Value)消息和各個 Simulation TB 進行控制面通信,管理分布式Simulation TB 的仿真流程(包括消息處理和分發,事件處理和分發等)和拓撲描述文件處理等。
Simulation TB 是基于芯片DUT 邏輯分割出的多個小DUT 塊而搭建的多個驗證平臺,執行實際的業務仿真任務,同時還包括和Manager TB 間的控制平面通信(處理消息和事件等)、數據流通信(Simulation TB 間的業務數據交互)以及會話通信(將Driver 和Monitor 組件的Transaction 發給Manager TB 進行checker 比對檢查)。
以圖1 中左下方ETH_TB(TB_ID:200)為例,其中的ETH_DUT 是邏輯分割后的一個小以太網模塊DUT,左邊的TB 組件分別是socket_data_process、TXIF_DRV_AGT 和RXIF_MON_AGT。其中socket_data_process 組件實現將DVA TX 方向(本例定義從左到右的數據流方向為DVA 發送,即TX 方向)的激勵和RX 方向(本例定義從右到左的數據流方向為DVA 接收,即RX 方向)采集的Transaction 分別發送給 Manager TB。
TXIF_DRV_AGT 實現將Transaction 轉換成接口時序發給ETH_DUT 作為DVA TX 方向的激勵。RXIF_MON_AGT 采集DVA RX 方向的接口時序并將其轉換為Transaction。ETH DUT上方的socket_control_process組件實現和Manager TB 的控制面通信:一方面接收Manager TB 對 DVA 系統整體的流程控制,另一方面將當前Simulation TB 的消息和事件發送給Manager TB 進行處理。右邊的virtual_data_transfer_agent 組件實現和其他Simulation TB 間的業務通信。
DVA 驗證系統含有一個Manager TB,可分布式部署多個Simulation TB。Simulation TB 之間靈活組網,通過拓撲組網描述文件確定各Simulation TB 間的拓撲組網關系。DVA 驗證系統初始化時解析該拓撲組網描述文件,建立分布式通信組網架構TB。拓撲組網描述文件如下。
SLV_TB_NUM=2
TB_NAME_ID_MAP=MASTER_TB: 100;ETH_TB_LEFT:200;ETH_TB_RIGHT:300
COM_TB_DES=200_300_DRV,1,200,300,10900
COM_TB_DES=300_200_DRV,1,300,200,10901
COM_TB_DES=200_100_DRV,2,200,100,10902
COM_TB_DES=200_100_MON,3,200,100,10903
COM_TB_DES=300_100_DRV,2,300,100,10904
COM_TB_DES=300_100_MON,3,300,100,10905
SLV_TB_NUM 表示該DVA 驗證系統中包含兩個Simulation TB;
TB_NAME_ID_MAP=MASTER_TB: 100;ETH_TB_LEFT:200;ETH_TB_RIGHT:300 表示DVA 驗證系統中有包含一個Manager TB,ID 是100,兩個Simulation TB,ID分別是200 和300。COM_TB_DES=200_300_DRV,1,200,300,10900,表示建立的1 個socket 連接關系,連接類型是1(數據流類型),TB ID 200 Client 到TB ID 300 Server 的連接,連接的socket 端口號是10900。
以此類推,總共建立了兩個數據流類型(連接類型是1)的通信連接,兩個Transaction Driver 類型(連接類型是2)的通信連接,兩個Transaction Monitor 類型(連接類型是3)的通信連接。
控制平面的連接是默認建立的,Manager TB 是Server 端,多個Simulation TB 是Client 端。
為方便配置和管理,為該系統開發了圖形用戶界面GUI,如圖2 所示。通過該GUI 可更直觀配置DVA TB信息和TB 之間的socket 連接關系并生成對應的拓撲組網描述文件。

圖2 拓撲組網描述配置GUI
(1)控制平面傳輸格式。控制平面采用TLV 格式傳輸消息和事件:Type-Length-Value,Type 以8 位二進制表示命令類型ID,Length 以8 位二進制表示Value 的實際字節長度,支持最大256 B 的Value 字節長度,Value 表示Payload,支持變長消息。
(2)會話平面傳輸格式。Transaction 平面傳輸的是變長的報文,以8 bit 的動態數組格式承載,根據實際的Transaction 長度運行時申請動態數組的大小,在socket底層通過去粘包技術獲取單個變長的Transaction 數據。
數據流平面傳輸格式支持兩種業務數據流傳輸類型:(1)SB(Signal Based)模式,以時鐘周期粒度傳輸DUT port 的信號值;(2)TB(Transaction Based)模式,以Transaction 格式傳輸接口數據,在對端連接的DUT 進行Transaction 解析生成接口時序信號。SB 模式構建DVA系統比較簡單,但是對數據流通信能力要求高,需要做好 Cycle 級的數據流同步;TB 模式需要基于端口信號對Transaction 進行構建和解析,構建DVA 系統比較復雜,但不需要做Cycle 級的數據流同步,對數據流通信能力壓力較小。
如圖1 所示,DVA 驗證系統流程主要體現了Manager TB 和Simulation TB 之間三個通信平面建立和關閉的過程,Manager TB 和Simulation TB 之間消息和重點事件同步的流程等。通過這套三個平面的通信機制,將分布式TB 間的仿真流程和業務數據流統一控制起來,形成相互協調的分布式計算結構。
通過使用本系統,有效地解決了大芯片以及多芯片組網時EDA 仿真周期長的痛點。經實際測試,相比于傳統EDA 分立驗證平臺,整體仿真速度可以達到5~10倍以上的加速比(與芯片DUT 的邏輯劃分形態相關)。
本系統不僅可應用在單個芯片的子系統和全芯片EDA 仿真,也適用于多個芯片套片組網、多die 互聯的Chiplet 系統,以及EMU 和EDA 聯合仿真等多種驗證場景中。
EDA 驗證一般先做模塊級驗證,當模塊功能穩定后,啟動子系統和系統級驗證。子系統和系統級驗證環境需要盡可能復用BT 的組件來搭建。當采用DVA 驗證方案,只要在模塊級集成DVA 組件(如圖1 所示),就可以快速集成到DVA 驗證系統,不需要重新搭建子系統和系統級的TB,高效啟動芯片DVA 驗證。
綜上所述,DVA 驗證系統的本質是通過高效利用已有EDA 資源,部署分布式計算管理系統,以減少芯片整體仿真時間;同時保持仿真調試的便利性和完整覆蓋特點。本系統可以在原有TB 的基礎上快速構建DVA 驗證系統,有效加快仿真速度,提高驗證效率。
DVA 系統可應用于更多大規模SoC 芯片、多個芯片套片組網、多die 互聯Chiplet 等對仿真效率和驗證覆蓋要求較高的項目中。未來參照更多實際應用繼續升級迭代,例如考慮多Manager TB 場景等,為不斷提升大規模SoC、SiP 系統開發質量和效率做出更多貢獻。