GAIO CLUB

2022年08月08日

仮想検証についての解説

技術情報
大規模化が進む自動車のソフトウエア開発では、開発の効率化、品質の確保が課題となります。そうした課題に対しソフトウエアの検証では、計算機シミュレーション(以降、シミュレーション)が可能なECUのモデルを使い、シミュレーション内でECUの振る舞いを模擬し検証を行う、仮想検証と呼ばれる検証方法が用いられています。

仮想検証は、開発の早い段階で設計の完成度を高め、開発の手戻り削減による開発期間の短期間化や開発コストの低減化に繋がる開発方法として、自動車の開発現場で広く普及しています。

本ページでは、「仮想検証」とは何か、仮想検証を実施するメリット、仮想検証の事例等について説明します。また、仮想検証に用いられるツールとして「QEMU」と呼ばれるツールについて、その特徴やメリットを説明します。

仮想検証とは

自動車開発で用いる仮想検証とは、シミュレーションを使い、開発を対象の自動車や自動車を構成する部品、あるいは、自動車を利用する環境などの振る舞いを模擬し、検証を行う検証方法です。

自動車開発の中で、特に、ソフトウエアを使い機能を実現する、電子制御ユニット(ECU)の仮想検証では、ECUの実機に代わりシミュレーションが可能なECUのモデルを使い、ECUの振る舞いをシミュレーション内で模擬することで、その機能を検証します。

ECU開発では、ECUの機能を効率よく開発し実装するため、一般に、機能レベルから、ソフトウエアのソースコード・レベル、ソフトウエアのオブジェクトコード・レベルのECU実装に至る複数の設計段階に分け、実装する機能の抽象度を詳細化しながら開発を行います。

仮想検証では、それぞれの設計段階の抽象度で開発されたモデルを使い、各設計段階で実装されたECUの機能やソフトウエアについて検証を行います。
仮想検証とは

仮想検証を使ったソフトウエアの検証

ソフトウエアのソースコード・レベルの検証では、検証対象のソフトウエアに対し、検証を行う通常PC内で実行可能なオブジェクトコードが用いられ、主に実装されたソフトウエアについての機能的な振る舞いが検証されます。

オブジェクトコード・レベルのソフトウエアの仮想検証では、ソフトウエアについて、開発対象のECUで用いられるマイクロコントローラで実行可能なオブジェクトコードを使い、検証が行われます。開発対象のECUのマイクロコントローラで実行可能なオブジェクトコードを使い検証することで、より実ECUでの実行に使い状態での検証を行うことができます。

一方、オブジェクトコードの実行では、シミュレーションによりマイクロコントローラの振る舞いを模擬し、オブジェクトコード内の実行を行います。そのため仮想検証で利用するツールでは、効率の良い(高速な)モデルやオブジェクトコードの実行が求められます。

検証対象のソフトウエアによる、ECUやマイクロコントローラ内のI/O機能などの周辺機能の利用に対し、仮想検証で用いるECUモデルでも、当該周辺機能を模擬することが必要となります。周辺機能の振る舞いを正確に模擬する場合、シミュレーションの時間を要し、検証に要する時間の長期化にも繋がります。
オブジェクトコードの仮想検証の中で、効率的な仮想検証を行うため、検証の目的を分け、適切な機能を備えたECUのモデルやツールの利用が求められます。

仮想検証のメリット

仮想検証のメリットとして、開発期間の短期間化や開発コストの低減化、開発場所の制約が無いことが挙げられます。例えば、以下のケースが考えられます。

開発期間の短期間化、開発コストの低減化

・実機の完成前に検証を実施
ECUの実機の完成前に、ECU内で実行するソフトウエアのテストを行い、開発の手戻を削減に繋げます。

・故障時の検証
ECUの故障時の振る舞いの検証に対し仮想検証を用いることで、ECU内の断線やショート、部品内の故障等について、実機に比べ容易に発生することができます。
注)故障等の発生に対応するツールの利用が必要です。

・再現性の確保
実機のような物理的な構成要素がないため、検証での再現性の確保が容易となり、再現のための手間を削減します。

・並行した検証の実施
仮想検証に必要な計算機リソースとソフトウエアを確保することで、複数の検証を並列に実行することが可能であり、検証に要する時間の削減に繋げます。

開発場所の制約

クラウドを含め計算機があれば何処でも検証が可能となります。また、実機を置くスペース、実機の設置場所などの考慮が不要となります。

QEMUとは?

計算機の振る舞いを模擬(エミュレーション)する機能を備えたツールです。

CPUの命令レベルでCPUの振る舞いをエミュレーションする命令セットシミュレータを備え、計算機の振る舞いをエミュレーション模擬します。
CPUの命令レベルでエミュレーションすることで、ソフトウエアのオブジェクトコードの実行が可能です。対応するCPUとして、ARM、RISC-V、x86等の複数のCPUの命令セットアーキテクチャに対応しています。

高速な実行

オブジェクトコードでのエミュレーションでは、実機での実行に対し実行時間を要し、特に大規模なソフトウエアの仮想検証での利用の妨げとなる場合があります。QEMUでは、実行時間を考慮しない機能的な振る舞いのエミュレーションを行うなどにより、高速な実行を実現しています。特に、実行時間を要する大規模なソフトウエアの機能的な検証での利用に適しています。

オープンソース

QEMUを使用するメリット

QEMUを使用するメリットとして以下が挙げられます。

・開発するECUのマイクロコントローラに対応したソフトウエアのオブジェクトコード・レベルでの検証が可能です。
・高速な実行により、検証に要する時間を削減。またOSを含めた大規模な検証など実行時間を要する検証の時間を短縮できます。

仮想検証の事例

仮想検証を使った事例について紹介します。

① 単体のECUを使ったアプリケーションの検証

単体のECUを使ったアプリケーションの検証

② 制御対象と連携したECUで実行するアプリケーションの検証

制御対象と連携したECUで実行するアプリケーションの検証

③ ADAS※等、大規模なアプリケーションの検証

※ Advanced Driver Assistance System
ADAS等大規模なアプリケーションの検証
注)上記の事例は仮想検証を使った事例です。QEMUの適用は、今後、実現予定です。

筆者紹介

吉松 則文

ガイオ・テクノロジー株式会社

技術1部 機動運用4グループ

人気のコラム

最新のコラム