本文重點

硬體樣品還要三個月才到,整合測試卻不能等——這是每個 ECU 專案都遇過的死結。本文完整說明虛擬 ECU(Virtual ECU/vECU):它是什麼、L1 到 L4 分級怎麼選、Vector 工具鏈(vVIRTUALtarget、CANoe4SW、開源 SIL Kit)怎麼組、在 CI 上大規模並行測試的做法,以及 vECU 驗得到與驗不到的誠實邊界。

虛擬 ECU 與 SIL 測試:不等硬體樣品就能做整合測試|樣品延三個月,驗證不用跟著延

在 YouTube 觀看 ↗

「硬體樣品下季才到,但軟體整合測試現在就得開始。」——這句話幾乎出現在每一個 ECU 開發專案裡。等 A-Sample 到位才開始測,發現的每一個整合問題都擠在專案最後、改動成本最高的階段。虛擬 ECU(Virtual ECU,簡稱 vECU)就是為了打開這個死結而生的技術:把 ECU 軟體搬到 PC 上跑,讓測試從「等硬體」變成「隨時可跑、大量並行」。

虛擬 ECU (vECU) 驗證技術:本文章節結構

什麼是虛擬 ECU(Virtual ECU/vECU)?

虛擬 ECU 是將 ECU 的應用軟體(Application Software)與基礎軟體(Basic Software, BSW)編譯為可在 PC(Windows/Linux)上執行的模擬單元。它脫離了對特定微控制器(MCU)硬體的依賴,讓軟體整合與測試可以在硬體到位之前開始——這就是 Shift-Left(左移)測試策略的核心手段,也是軟體定義汽車(SDV)開發流程的基礎建設之一。

一句話定位:vECU 是 SIL(軟體在環)測試的被測物。SIL 是測試方法,vECU 是讓這個方法有東西可測的技術。

vECU 的分級:包多少真實軟體,決定驗得到什麼

vECU 不是一種東西,而是一個光譜。依包含的軟體層級,業界常分為:

包了什麼能驗什麼
L1(應用層級)應用層程式碼,介面用替身控制邏輯、演算法行為
L2(模擬中間件級)加入 RTE、通訊棧等部分 BSWSWC 間互動、排程語意
L3(生產級中間件級)接近量產的完整軟體堆疊,僅底層驅動抽換BSW 組態、診斷、網路管理等整合行為
L4(二進位級)量產二進位檔在目標指令集模擬器上原封執行編譯器效應、組譯層行為

選級是成本與擬真度的取捨:層級越高越接近真實 ECU,但建置越複雜、執行越慢。各級的詳細用途與選型陷阱,請看專文《虛擬 ECU 分幾級?從應用層模擬到指令集模擬的取捨》

為什麼要導入 vECU:三個實際效益

  • 平行開發:軟體團隊不必等硬體樣品(A-Sample/B-Sample)即可開始整合測試,整合問題提早數個月浮現。
  • 大規模並行:在建置伺服器或雲端可同時執行大量 vECU 實例做迴歸測試;原生編譯層級(L1–L3)還能跑得比實時快,一夜掃完幾百次開機情境——這是實體台架做不到的並行度。
  • 除錯與重現:用 PC 上成熟的除錯工具(Visual Studio、GDB)直接下斷點看內部狀態;虛擬環境天生可重現,同一個種子重跑一次,問題就在那裡。

Vector 工具鏈怎麼組

vVIRTUALtarget SE:從 AUTOSAR 組態生成 vECU

vVIRTUALtarget SE 是專為 AUTOSAR Classic 軟體系統設計的持續整合工具,可將 AUTOSAR(MICROSAR)組態虛擬化為 vECU 並整合進 CANoe。依原廠說明:

  • 實際生成的等級是 L1 與 L3(不是每一級都由這個工具產生):
    • L1(軟體組件系統測試):整合模擬的 BSW 模組,支援 NVM 儲存模擬與使用者自訂變數,可透過 RTE 的開放埠驗證軟體組件之間的互動。
    • L3(ECU 軟體系統測試):複用 MICROSAR 協定堆疊的虛擬組態工程,在 PC 上提早配置與驗證;透過 MCAL 與內部埠模擬硬體抽象層,可在 CANoe 中執行,並支援與真實 ECU 耦合的真實/虛擬混合驗證
  • 內建 VttMake 命令列元件,可在 Windows 或 Linux 執行;vECU 可用 Visual Studio、MinGW-w64 或 Clang 編譯。
  • 對應 ASPICE 的 SWE.5(軟體整合)與 SWE.6(軟體層級驗證)——流程評鑑時,同一套虛擬化投資能同時滿足兩個流程領域的證據要求。

早期版本的 vVIRTUALtarget 曾有 Pro/Basic 之分,實際可取得的版本與授權組合請洽歐特莫夫確認。

CANoe4SW 與 CANoe4SW SE:把 SIL 搬上伺服器

CANoe4SW 專門用於軟體系統測試;伺服器版 CANoe4SW SECANoe SE 構成 DevOps 的 SIL 測試平台:可在 Windows/Linux 伺服器與雲端叢集執行、支援 Docker 容器化、可同時啟動多個實例;系統狀態可用命令列與 REST API 監控,並透過 YAML 組態配合 Jenkins 執行自動化測試。生成的虛擬軟體系統還能搭配標定或診斷工具,實現虛擬標定與虛擬診斷

開源的 SIL Kit:讓不同來源的 vECU 同台

SIL Kit 是 Vector 開源的整合中介,可在 Linux 與其他 UNIX 衍生系統執行,用來連接虛擬 ECU、測試工具、軟體應用、場景與感測器模擬。它提供發布/訂閱模式與 RPC,支援虛擬的 CAN、LIN、FlexRay 與 Ethernet 通訊;可透過 FMI 把 FMU 當節點一起執行,並具備虛擬時間同步、健康監測與分散式日誌——讓「不同工具生成的 vECU」在同一個模擬系統裡共存,從單一 SWC 一路到整車的數位孿生整合測試。

生態系一覽:其他常見平台

  • Synopsys Silver:支援從簡單 C 程式碼到完整二進位的 vECU 開發,強項是高速模擬與 MATLAB/Simulink 整合。
  • dSPACE VEOS:PC 端模擬平台,與 dSPACE 的 HIL 工具鏈高度一致,測試案例便於在虛擬與實體環境間轉移。
  • QEMU/SystemC:開源生態——QEMU 模擬特定 MCU 架構執行底層驅動測試,SystemC 建立硬體周邊的行為模型。

典型整合流程(以 Vector 工具鏈為例)

  1. 生成 vECU:用 DaVinci Configurator Classic 配置 BSW,透過 vVIRTUALtarget 產出執行檔。
  2. 建構虛擬匯流排:在 CANoe 中設定虛擬的 CAN/Ethernet 網路,缺席節點以殘餘匯流排模擬補齊。
  3. 執行測試:把 vECU 掛上 CANoe 節點,執行 CAPL 腳本或 vTESTstudio 測試案例——同一套測試資產之後可直接沿用到 HIL。
  4. 故障注入:模擬通訊中斷、訊號遺失等場景,驗證錯誤處理機制。

vECU 驗不了什麼(誠實邊界)

精確時序(WCET、中斷延遲)、真實電氣(短路、位準異常)、硬體周邊的真實行為——這些是 HIL 測試的地盤。正確的分工是接力:邏輯與整合問題在 vECU 上大量並行地抓,時序與電氣問題留給稀缺的 HIL 台架,兩邊共用同一套測試案例,左移才不會變成重工。

常見問題釐清

虛擬 ECU(vECU)是什麼?

虛擬 ECU 是把 ECU 的應用軟體與基礎軟體編譯成可在 PC 上執行的模擬單元,脫離對特定微控制器硬體的依賴,讓整合測試在硬體到位前就能開始,並可在伺服器上大規模並行執行——是左移(Shift-Left)測試策略的核心手段。

vECU、SIL、HIL 三者是什麼關係?

SIL(軟體在環)與 HIL(硬體在環)是測試方法,vECU 是 SIL 的被測物。SIL 階段用 vECU 在純虛擬環境驗證邏輯與整合,HIL 階段接上真實 ECU 驗證時序與電氣。用 CANoe+vTESTstudio 這類工具鏈時,兩個階段可以共用同一套測試案例,不必重寫。

vECU 可以完全取代 HIL 測試嗎?

不能。vECU 驗不到精確時序(WCET、中斷延遲)、真實電氣特性與硬體周邊的真實行為,這些仍需要 HIL 台架。vECU 的價值是把邏輯與整合問題在便宜、可大量並行的虛擬環境先抓掉,讓昂貴的 HIL 台架專注在非它不可的題目上。

導入 vECU 需要什麼前置條件?

三件事:一是軟體架構的可虛擬化程度(AUTOSAR 專案因分層清楚最容易切入);二是選對層級——先想清楚要驗什麼,再決定 L1 到 L4 包多少;三是 CI 基礎建設——vECU 的最大價值在於接進建置伺服器自動化執行,環境與組態要跟軟體版本一起進版控。

下一步

把測試往前搬:從 vECU 層級選擇到 CI 自動化

從 vECU 生成、層級選型、CANoe 整合到 CI 大規模並行,歐特莫夫(Vector Informatik 合作夥伴)協助你把左移策略落成每天在跑的自動化測試,而不是簡報上的一頁。