SuperTest

 

C/C++コンパイラの妥当性を検証するテストスイート

Solid Sands 社の SuperTestは、コンパイラを検証するためのテストスイートです。その派生製品であるSuperGuardは、 C 標準ライブラリの認定を支援する要件ベースのテストスイートです。コンパイラは、非常に複雑なソフトウエアであり、たったひとつのエラーであっても、間違ったコードが生成されることで甚大な問題を引き起こす原因になりかねません。ISO 26262 等の機能安全規格では、ソフトウエアツールチェインの適正なレベルの信頼が要求されます。コンパイラが正しいことの証明には、C、C++言語規格への適合性、正確性、堅牢性を厳密にテストすることが必要です。

自動車機能安全カンファレンス 2023

言語仕様に基づいたテストスイートで C/C++ コンパイラを認定する
 
C/C++ コンパイラの認定は、機能安全規格 ISO 26262 の第8-11項の定義によって行うが、ツール信頼度の評価後に C、C++ 言語規格への準拠を評価することが一般的である。コンパイラは巨大で非常に複雑なソフトウエアであることに加え、オプション等のユースケースの組合せは膨大であることなど、その開発プロセスを評価して認証するのは現実的でないためだ。Solid Sands 社の SuperTest は、全バージョンの C/C++ 言語規格書の章立てに基づくテストスイートとテストドライバで、コンパイラの言語規格への適合性、正確性、堅牢性を厳密にテストし、トレーサビリティも提供する。これはプロジェクト固有のユースケースに応じたコンパイル・実行環境で検証可能であり、日本を含む世界中で使用されている。本講演ではその概要をご紹介する。

 
 

Solid Sands社 CTO Dr. Marcel Beemster

自動車機能安全カンファレンス 2022

コンパイラ認定と言語サブセットの相互補完による 安全・安心なソフトウェア

 
概要:安全・安心なソフトウェアのためには、C、C++言語が持つセキュリティや安全性の弱点をコーディング規約による言語サブセットで排除することに加えて、正しく実装されたソースコードのプログラムとしての動作がオブジェクトコードレベルで保持されることの確信を得る必要があり、コンパイラがC、C++言語規格に準じて正しく動作し、規格どおりに振る舞うオブジェクトコードを生成することの評価が求められる。機能安全システムの開発で、これらの側面がどのように協調して安全性の向上に寄与するかを説明し、また適切に考慮されることで開発時間と費用の軽減にも貢献することを紹介する。
 

 

自動車機能安全カンファレンス 2021

コンパイラの品質と機能安全 ~ユーザーがコンパイラをテストすべき理由~

 

機能安全規格では、使用するコンパイラが正しいことをツール認定により証明する必要がある。ただ、固有のユースケースで評価するべきことは、意外と認識されていない。またツール認定は、様々な検証作業を行った後に実施されることが多く、その段階でコンパイラに欠陥が見つかると、手戻りなど甚大な問題を引き起こすことになる。加えて、呼び出し規約や、最適化、標準ライブラリなど、注意深く扱うべきことも多い。本講演では、コンパイラの検証について、事例を交えて俯瞰的に紹介する。  
 
 
 
 

ユーザーがコンパイラをテストすべき理由とは?

SuperTest

 

高いレベルのコンパイラ品質

 
Solid Sands 社の SuperTestは、コンパイラ品質への信頼を得るためのコンパイラテストと検証のためのテストスイートです。業界最大クラスのコンフォーマンステストとともにテストファイルが提供され、コンパイラの開発者のみならず、コンパイラを使用する組織やその品質管理部門が、機能安全規格の要件(コンパイラの不具合が製品システムに影響しないことを確認する)を満たすことや、コンパイラによって間違ったコードが生成されることを未然に防ぐことを目的に活用しています。
 
これにはコンパイラによる解析、変換、最適化を評価する多くのテストも含まれます。また、このテスト群や特別な機能は、継続的に追加されています。フレームワークには、コンフォーマンステストと診断テストの両方が組み込まれています。診断テストは、不正なプログラムに対するコンパイラエラーを検証します。またフレームワークには、テストスイートのサブセットを選択する機能があり、以前にフェイルしたテストを再実行するなどの柔軟性を備えています。POSIXベースのユーザインターフェイスは直感的であり、あらゆるコンパイラ開発環境とシームレスに統合できるので、新しいテストの追加やクロスプラットフォームでの検証サポートをも容易に行えます。
 

  • 手書きのテストの膨大なコレクション
  • 検証を簡単にセットアップして実行するための構成可能なテストドライバー
  • HTMLやJUnitXMLを含む複数の形式で検証結果の包括的な概要を提供し、指定されたバージョンと比較した最新のコンパイラおよびライブラリーのリグレッションを即座に識別するレポートジェネレーター
 
 
 
トレーサビリティレポート例:GCC をC99でテスト

次のISO仕様をカバーしています

  • ISO/IEC 9899:1990 C90 standard
  • ISO/IEC 9899:1999 C99 standard
  • ISO/IEC 9899:2011 C11 standard
  • ISO/IEC 9899:2018 C18 standard
  • ISO/IEC TR 18037:2008 Embedded C extension
  • ISO/IEC 14882:2003 C++03
  • ISO/IEC 14882:2011 C++11
  • ISO/IEC 14882:2014 C++14
  • ISO/IEC 14882:2017 C++17
  • MISRA C:2004
  • MISRA C:2012
  • MISRA C:2012 Revision 1
 
 

Calling Convention Tester

 
関数の呼び出し規約はターゲットアーキテクチャに依存しますが、その実装はコンパイラに固有です。例えば、引数の評価順序は言語仕様で定義されていません。また通常、速度を向上させるよう最適化されており、やはり複雑であるコンパイラのレジスタ割り当てと高度に結びついています。
Calling Convention Testerは、コールする側とされる側それぞれを含む一対のファイルを自動生成して、呼び出し規約やバイナリーインターフェイスのエラーを明確にします。そして、単一コンパイラのApplication Binary Interfaceのコンプライアンスだけでなく、同じコンパイラの異なるバージョン間や、同じターゲット用の異なるコンパイラ間でも検証することができます。関数呼び出し規約のテストの実行例 LinkIcon

顧客の声「呼び出し規約に準拠することで、他のサプライヤーの製品と繋がることで問題が発生しても、お相手の問題として切り分けすることができている。各社がSuperTestを使ってくれると、もっと助かるのだが、、」

 
コンパイラが呼出し規約に正しく準拠していることを前提にしていませんか?もし「自社で使用」あるいは、「お相手が使用」するコンパイラに問題がある場合、その把握や対策にたいへんな工数を割くことになります。
予め知ることができれば、事前に対策を打ち、不用意な問題を避けることができるでしょう。
 

Depth suites

 
C言語規格では、データモデルは実装依存となっています。それゆえテストスイートは、演算処理の前提を一定の範囲内に収める必要があります。SuperTestのDepth-suitesは、特定のデータモデル用に生成されて、演算処理の境界について詳細な情報が得られます。Depth-suitesは、5つのオペランドまでの徹底した演算処理のテストを行います。既に30もの異なるDepth-suitesがSuperTestに組込まれていますが、要求に応じてカスタマイズしたものをご提供することもできます。
 

顧客の声「アーキテクチャ固有のデータ長(例えばchar もint も24ビット)に合わせて演算精度のテストができる。」

 

Tempest (TEMPlate Expander for SuperTest)

 
ランダムなテストのバリエーションを作るための、ユニークで柔軟性に富んだ、プロダクションルール駆動型のテストジェネレータです。ジェネレータースクリプトベースのプロダクションルールのセマンチックによって、振舞いが予測可能な複雑なプログラムを生成することができます。コンパイラの特定の問題に対して、そのテスト範囲を全面的なテストを生成することで拡張して、それ以上の問題が存在しないことを掘り下げて調査することができます。

SuperTest Library Suite

 

SuperTestのライブラリスイートは、C90、C99、C11、C18、C++03、C++11、C++14、C++17 をカバーします。ライブラリコードはターゲット上で実行されるため、ライブラリテストは重要であり、セーフティクリティカルなアプリケーションに対応する必要があります。最新のSuperTestアップデートでは、数学ライブラリのテストが大幅に拡張されています。 
SuperTestライブラリスイートは、単体テストとブラックボックステストに使用できます。
 

 C/C++標準ライブラリのテスト LinkIcon  「標準ライブラリ関数をテストする 」、「C/C++の実行時ライブラリ -「隠れたライブラリ」をお忘れなく」、「ライブラリコードはセーフティクリティカルアプリケーションの一部分」の3つの記事をまとめて公開しました。
 
 C/C++言語のプログラムを構成する要素には文字列処理や数学関数のようにプログラム実行時に必要となるソフトウェア部品があります。アプリケーションプログラムが安全であるためには、コンパイラが生成するオブジェクトコードの部分だけでなく、これらも検証することが必要です。実行時に必要となるこのようなソフトウェア部品は実行時ライブラリと呼ばれますが、その中で言語規格で定義されているものを標準ライブラリと呼び、プログラム開始時に必要となるスタートアップルーチンや例外処理ルーチンなどを実行時ライブラリとして区別することもあります。この記事では、標準ライブラリと実行時ライブラリに関するSuperTestでの検証について紹介しています。

SuperGuard C 標準ライブラリの認定

 
ライブラリのコードはアプリケーションとリンクしてターゲットデバイス上で実行されます。そのため、ライブラリコンポーネントに欠陥があるとアプリケーション全体の機能安全が危険にさらされるので、ソフトウェアライブラリの認定が不可欠です。ソフトウェアライブラリの使用に対して機能安全規格それぞれで独自の目標がありますが、一般的には、ライブラリの実装がその仕様に準拠していることを検証するという目標は共通です。
この課題を克服するため、Solid Sands 社はライブラリ認定ツール SuperGuard C Library Safety Qualification Suite ( SuperGuard C ライブラリ安全認定スイート) を開発しました。これは、個々のテスト結果と ISO C 言語仕様から派生する要件とを結びつける完全なトレーサビリティを備えた C 標準ライブラリに対する要件ベースのテストスイートです。
 

 

ソフトウェア開発 V 字モデルにおけるSuperGuard の役割

顧客の声「コンパイラをバージョンアップする時にSuperTestでチェックして、使ってはいけない最適化などの社内ルールを施行することで、過去のバージョンに戻さなければならないような問題が起こらなくなった。」

 

顧客の声「C99 コンパイラなのにC89のライブラリが混同されていて、sin, cosなどの数学関数で問題になるところを、事前に回避できた。」

 

顧客の声「自動運転などで画像認識等はC++のライブラリに依存することになるので、SuperTestのライブラリテスト機能にも注目している。Float16、AUTOSAR C++14 など

「Vermeer」リリース

SuperTest「Vermeer」リリースには最適化コンパイラの包括的なテスト、「ベアメタル」システムのサポート、C++ 17サポート、トレーサビリティの強化、およびマルチプロセッサWindows環境でSuperTestを実行する機能が含まれています。SuperTestはコンパイラがC/C++言語規格を満たすことをテストする中で、結果的に多くの最適化のテストをカバーしていましたが、新たに追加された最適化テストスイートで、どのようなコンパイラに対しても最大のカバレッジを達成できるようになりました。
 

Update #4 を2023年5月にリリース!

最適化やC++のテストを強化しました。
 
Vermeer Update #4リリースニュース LinkIcon

 関連記事

 「16ビット浮動小数点数のテスト 」 LinkIcon
 ADASの技術に16ビットFPフォーマットを採用することで、開発や車両のコストが下がり、その普及が加速されます。しかし安全性が第一です。
 
 「関数呼び出しのテスト 」 LinkIcon
 呼び出し規約は速度を向上させるよう最適化されており、やはり複雑であるコンパイラのレジスタ割り当てと高度に結びついています。
 
 「最適化の正しさを検証する 」 LinkIcon
 先進のコンパイラ最適化が安定していて十分テストされているものだと考えることは間違っています。
 
 「GNU-C++の -Os が壊れた日 」 LinkIcon
 例外処理や継承に関するもののいくつかが、新しいフリースタンディングの設定では突然フェイルしました。

コンパイラが効率的なソースコードを効率的なマシンコードにコンパイルすることで、アプリケーション開発において重要な役割を果たすことは周知のことですが、その役割には大きな責任があります。私たちの経験では、x86やARMなどの主要なプロセッサーアーキテクチャー用に広く使用されるCおよびC++コンパイラは、一般的に信頼性があります(完全ではありませんが...)。しかし、DSPやアプリケーション固有の8ビットマイクロコントローラなどのアプリケーション指向プロセッサ用のコンパイラはどうでしょうか?

アプリケーション指向プロセッサは、汎用的で規模の大きなものよりも、はるかにコスト効率が良く、便利でオンチップI/O機能が適切にパッケージ化されています。アプリケーション開発者は、これらのデバイス用のコンパイラが主要なデバイスと同様に信頼できることを願っていますが、残念ながらこれは必ずしもそうではないことがわかりました。

弊社(Solid Sands社)は最近、そのようなコンパイラのクオリフィケーション(適格性の評価)をお請けしました。これはよく知られているベンダーの商用コンパイラでしたが、SuperTestのような包括的なテストスイートに初めて直面したようです。すぐに2つの主要なランタイムエラーを発見しました。1つは値の伝搬で、もう1つは呼び出し規約と組み合わせたレジスタ割り当てです。この2つのエラーは数十ものテストに関わっていて、全てに実行時のエラーが発生しました。値の伝播は通常、明示的にオンにする必要がある最適化と見なされますが、このコンパイラはデフォルトでそれを適用していたことが注目すべき点です。

アプリケーションにこのように重大なエラーが潜在することがわかったことで(このコンパイラのクオリフィケーションは、顧客の機能安全プロセスの一部であった)、この製品開発プロジェクト全体のスケジュールが脅かされることにもなりました。コンパイラのクオリフィケーション中に、コンパイラ・ベンダーにエラーを報告し、修正または回避策を待ってから、コンパイラ設定の適切な変更について議論する必要があり、アプリケーション開発プロセスに支障をきたすことになりました。 

これは珍しいことではありません。昨年、パイプラインを持つターゲットプロセッサの命令スケジューリングで、エイリアス関係にあるロード命令とストア命令を誤って並べ替えたコンパイラを評価しました。スケジューラは、コンパイルされたプログラムごとに重要な役割を果たします。したがって、毎回うまく動作しなければなりません。

このような落とし穴を避けるために何ができるでしょうか?少なくともコンパイラベンダーにテスト手順を尋ねてください。彼らはSuperTestのような評判の高いテストスイートを通しているでしょうか? 
ミッションクリティカルな市場や、安全性が重要な市場でビジネスをしている場合は、使用しているコンパイラの弱点を把握しておく必要があります。エラーを修正できない場合でも、弱点を知ることで、予防的対策を講じたり、回避策を実装したり、機能安全規格で知られる「緩和」策を講じることができます。
 
また弊社ではコンパイラのクオリフィケーションサービスを提供していますが、SuperTestのライセンスを取得されることもお勧めしています。
SuperTestが有れば、必要となる全てのコンパイラの各バージョンで、様々なオプション設定の組合せで、好きなだけ評価できるので安上がりです。また開発の早い段階で評価することで問題を事前に避けることができますし、そのような経験と知識を社内で蓄積できるようになります。

C/C++コンパイラをテストして
妥当性を検証する

コンパイラは、非常に複雑なソフトウエアであり、たったひとつのエラーであっても、甚大な問題を引き起こす原因になりかねない。また、ISO 26262 等の機能安全規格では、ソフトウエアツールチェインの適正なレベルの信頼が要求される。そこで、主要コンパイラメーカのみならず、コンパイラを使用する組織が機能安全規格で求められるコンパイラツールの認定にも活用するSuperTestについて、活用事例を交えて紹介する。

ET2019名古屋、
ET2018横浜の講演資料

 

画像クリックでダウンロード

顧客事例

株式会社デンソー(最先端のオートモーティブテクノロジー、システムおよびコンポーネントのサプライヤー)は、コンパイラテストと検証用のパッケージとして、Solid Sands社のSuperTestを支持している。 
 
“新しいバージョンのコンパイラを入手するたびに、コンパイルされたコードが旧バージョンと一致することをチェックする必要があります。以前はアセンブラレベルでの手動比較や、機能テストを実施していましたが、いずれも膨大な時間と労力を必要とし、また再現性のない結果が出ることもありました。また同じことはC言語の規格やCPU種別を切り替える際にも起こり得ます。” - 株式会社デンソー 基盤ソフト技術部 谷 充弘氏
 
SuperTestは定期的にアップデートされるので、ライブラリコードを採用する際に必要となる検証にも有効である。例えばSupetTestで検出される欠陥には、数学関数のC言語規格との不一致動作や、異なるコンパイラバージョン、メーカ間でのライブラリのふるまいの違いなどがある。
 
“コンパイラに潜む問題点が、製品開発途中や製品出荷後に見つかり手戻りが発生する可能性があったことを考えると、コンパイラ入手時に検出できるSuperTestの採用は、大きな投資対効果があったと言えます。” - 株式会社デンソー基盤ソフト技術部 中里 弘樹氏
 
SuperTestに提供される相当な規模のテストスイートを自前で開発することや、様々なコンパイラの問題を検出するコードサンプルを入手することを考えると、SuperTestへの投資効果は非常に高い。大規模なテストから、欠陥の検出と特定に必要なテストを素早く効果的に選別できるし、コンパイラがC言語標準に準拠することのチェックは自動実行で1~2日で済むので、多くの工数と費用を削減できる。
 
車載システムの機能安全規格に準拠して、顧客からの高い信用を維持するには、コンパイラの品質は常に問題になる。コンパイラが十分な信頼水準であることの判断に活用できるSuperTestは、今や必須のソフトウエア開発ツールとして位置付けられる。
 

更に詳しく: デンソー事例 LinkIcon

ローム 社が新たに開発したコンパイラは、Clangフロントエンドと LLVMバックエンドに基づいており、ターゲットである組込み ソフトウェアが要求する低消費電力かつ省ROMサイズという 特性を満たす、高度な最適化機能を持っています。この開発フローには、バージョン管理にGit、プロジェクト管理と問題追跡にRedmine、定期的なソフトウェア開発タスクの自動化に Jenkins、そしてコンパイラテストと検証にはSolid Sands社 のSuperTestを活用しています。
 
Redmineに登録されたコンパイラのバグは1つずつ修正され、結果の新しいソースコードはGitに登録されます。毎日の終わりに、 JenkinsプロセスフローはGitから最新のソースコードを自 動的に抽出し、ビ ルドして 、4 つ の 異 なる最 適 化レ ベ ル で SuperTestを一晩かけて実行します。翌朝、SuperTestの 結果がチェックされ、新たに特定された欠陥は反復プロセスの 一部としてRedmineに登録されます。ローム社がSuperTest の使用を開始する前に、この開発環境の大部分がすでに整って いたため、SuperTestをツールチェーンに統合するのに1週間 もかかりませんでした。
 
ローム社のエンジニア大岡徹也氏は「SuperTestを選択し た理由はいくつかあります。一番重要だったのはSuperTestが C言語仕様をカバーし、ISO 26262準拠の実績があり、自動 テストを実行し、自動検証レポート出力機能を備えていることです。また、日本国内にSolid Sands社の代理店があることも、 重要なことでした。」と話しています。
現在、ローム社のコンパイラ開発チームは、コンパイラの開発 がほぼ完了したため、機能安全規格ISO 26262で求められる コンパイラツールの認定に必要なドキュメントの作成に取り組んでいます。 大岡氏は続けて「SuperTestを使用してから1年半の間に、 コンパイラの品質を継続的に向上させ、SuperTestの合格率 が99.9%を超えるようになりました」と話しました。 ローム社は、ツールの品質改善の継続的なプログラムの一環 として、SuperTestを引き続き使用する予定です。
 

更に詳しく: ローム社事例 LinkIcon

eSOL の eMCOS 開発チームでは現在、eSOL のオペレーティングシステムを新しくリリースするごとに SuperTest を実行し、SuperTest がカバーする多くのオペレーティングシステム API が期待どおりに機能していることを検証しています。
 
「当社では SuperTest を、機能テストスイート、カバレッジテストスイート、そしてコンプライアンステストスイートとして使用しています。お客様は、eSOL が完全にテストされ規格に準拠するオペレーティングシステムを提供することを期待しているからです」
 
「お客様やパートナー企業の中ではすでに SuperTest をよく知っており、自身で SuperTest を使用してコンプライアンス検証されていることも多いという利点もあります。SuperTest によってオペレーティングシステムとライブラリを事前にテストしたということが、お客様の信頼につながっています」と続けます。
 
SuperTest には大きな価値が二つあり、第一にテストスイートの能力そのもの、第二にそれらのテストは十分に文書化して開発されているということです。そのため当社の特定の要件を満たす新しいテストを追加することはそれほど難しくありませんでした。SuperTesstに含まれるC++ のライブラリテストがその一部となり、弊社のオペレーティングシステムに固有の側面をカバーする他のテストを追加しました」
 
「初めての SuperTest のインストールに苦労は無く、コードも分かりやすく、すぐにツールを使えるようにできました。また、Solid Sands の日本代理店を通じて受けたサポートは、質が高く、すばやい対応でした」
 
「当社は、Solid Sands を単にサプライヤーとしてだけでなく、パートナーとして見ています。SuperTest が当社の多くのお客様にも使用されることを認識しているからです」

 
更に詳しく: eSOL社事例 LinkIcon

「最新の規制、特にISO 26262のASIL(Automotive Safety Integrity Level)Dまでに準拠したコンパイラの認定を受けるために、Solid Sandsとの協業を開始しました。従来当社では、コンパイラの使用証明に基づいてツールチェーンの認定を行っていましたが、より厳しい要件を満たすためには、独立した第三者機関による専門のコンパイラ認定サービスを利用することが理想的だと判断しました」
 
「Solid Sandsは、特定のコンパイラオプションを使用することが、特定の状況下では推奨されないということを教えてくれ、それを回避するか、Solid Sandsと協力して必要な回避策を適用できるようになったケースもあります。また、潜在的な問題の回避策や特定するための検査を開発する際にも、強力な協業が行われました。その結果、関連する事例すべてを探し出す手順を迅速に開発することができました」
 
「数社を調査し、コンパイラの問題点を発見する能力が非常に高いことが証明されたので、Solid Sandsを選びました。技術報告を受けるだけでなく、コンパイラのより良い使用方法を学ぶことができ、非常に協力的な関係でした。当社はSolid Sandsに非常に満足しており、今後も彼らのサービスを利用するつもりです」
 

更に詳しく: Marelli 社事例 LinkIcon

コンパイラまたはライブラリの認定に、多くの企業がSuperTestを採用しています。そのなかでKUKA社(自動化システムの第一人者)は、プロジェクトごとで使用するC/C++コンパイラと標準ライブラリを決定するためにもSuperTestを活用しています。
 
「CPUアーキテクチャを変更すると、それをサポートする新しいコンパイラのバックエンドによっては、ソフトウェアに多くの作業が強いられることになりかねないという問題があります。SuperTestで利用可能なコンパイラを評価することで、それを支援しています」 
 
「SuperTestは、プロジェクトチームが、例えばGCCあるいはClangのいずれの使用を推奨するのかを決定するのに役立ちます。また、コンパイラを新しいバージョンに切り替えるかどうかの決定にも役立ちます。プロジェクトチームが使用したい機能を備えた新しいGCCまたはClangのバージョンがリリースされた場合、SuperTestでテストを実行して、欠点があるかどうかを確認し、新しい機能をテストできます。新しい標準ライブラリの評価に関しては、SuperTestを使用して、新しいライブラリの動作が以前に使用したライブラリと等価であるかどうかを確認できます」
 
「新しい言語規格への移行に問題があるかどうかは、SuperTestを使用して確認できます。たとえば古いバージョンの言語規格のC++コンパイラから、より多くの機能を含む新しいバージョンに移行する場合です。これにより、コンパイラが新しい言語規格にどれだけうまく対応しているかを確認し、事前に修正する必要のある問題があるかどうかを判断できます」
 
「SuperTestの統合をサポートする機能に満足しています。スクリプトを実行して、コマンドラインからすべての実行可能ファイルを呼び出すことができるからです。必要があるのはコンフィグレーションデータだけです。その結果、プロセス自体は大幅に自動化されています。手作業のほとんどは結果の分析にあります」

 
更に詳しく: KUKA社事例 LinkIcon

カリフォルニアに拠点を置くAI ビジョンの半導体企業Ambarella 社は、自動運転と自動車ビジョンシステム用のチップにディープニューラルネットワーク人工知能 (AI) を実装しています。最新のAI アルゴリズムを組み込んだ総合的なハードウェア/ソフトウェアソリューションを提供するため、同社は世界最先端のAI ソフトウェア開発者と提携しています。最近では、ドライバー監視のためのAI を搭載した目・口・頭のトラッキング技術のリーダーであるスウェーデンSmart Eye 社や、高度運転支援システムのためのインテリジェントな視覚認識ソフトウェアのリーダーであるドイツHELLA Aglaia 社と提携しています。ハードウェア/ソフトウェア統合の効率を最適化することは、このビジョンチップに搭載されているオンチッププロセッサに向けて完全に検証されたコンパイラを提供することを意味し、同時に自動車市場がもつセーフティクリティカルな性質のため、ISO 26262 などの業界標準に準拠することが求められます。主にこの理由によりAmbarella 社は、自社のコンパイラ開発ツールチェーンにSuperTest を採用することを選んだのです。
 

英国に拠点を置くSOMNIUM Technologies社は、コンパクトで、より高い性能・エネルギー効率で動作する組込みシステムを短期間で開発するためのソフトウェア開発支援ツールを提供しています。そのようなツールセットの品質を重視する企業にとって、網羅的なコンパイラテストは必須要件です。
「SOMNIUM®はFreescale社のパートナーとして、FreescaleのKinetis Design Studio (KDS) IDE製品を開発しています。その中で、コンパイラ出力の正しさを証明できたことはKDSの開発契約を獲得する上で非常に重要でした」とSOMNIUM社のCTO、Dave Edwards氏は言及しています。
SOMNIUMでは、開発の初期段階からSuperTest™を使用して、コンパイラのコード生成のバグを特定できるようにしました。
 

更に詳しく: SuperTest_SOMNIUM社事例 LinkIcon

機械知能プロセッサメーカーのGraphcore社(英国、ブリストル)は、イノベーターが次世代のAI製品を作り出す超並列計算プラットフォームを開発しています。同社は、独自の知能処理ユニットアーキテクチャをテスト・検証するため、コンパイラ開発ツールチェーンの一環としてSuperTestを使用しています。
 
徹底的なコンパイラテストが要請される理由はいくつかあります。第一は、プロプライエタリなターゲットアーキテクチャ用にコンパイラを開発している場合で、開発者コミュニティでの豊富な経験が活用できないことです。次には、そのコンパイラがアプリケーションに依存する複雑な最適化を実施しなければならない場合で、ターゲットアーキテクチャの特性や命令を最大限に利用するコードの並べ替えや変更があるということです。
 
英国に拠点を置き、人工知能(AI)アプリケーション加速のシリコンプラットフォームを開発するチップメーカーGraphcore社にとって、この状況が当てはまります。同社の超並列知能処理ユニット(IPU:Intelligence Processing Unit)は一片のシリコン上に1200を超えるプロセッサコアを統合するもので、その命令セットとメモリアーキテクチャは、エンジニアが新たな分野のAIモデルと製品を創生しつつ、今日のAIアプリケーションを加速できるように独自に設計されたものです。同社のPoplar®と呼ぶソフトウェアスタックのバックエンドは、多層からなる最適化を使用してタスク群をコアに分配し、それらが最高の速度と効率で実行されることを保証します。
 
AI応用の領域での探求と革新を促進するため、同社はアプリケーション開発者がIPUをC++レベルでプログラムできるようにする取り組みも行っており、このことが、開発者が投入するものすべてを扱える高度にロバストなコンパイラを提供することを非常に重要にしている理由です。
 
「我々は、今日存在するすべてのものとまったく異なる構造で、既存のソリューションを超えてAIの新たな応用を開拓できる新しいシリコンプラットフォームを開発しました。この新たな応用への扉を開くために我々は、ユーザーがC++のような標準のプログラミング言語を使用して自由に探査できるよう、高度にロバストなプログラミング環境を提供することに全力を尽くします。これが、我々のコンパイラをテスト・検証するためにSuperTestを選んだ理由です。」‐Graphcore社Matt Fyles副社長
 
ユーザーの信頼と利便の点から他にもGraphcoreのIPUに対するC++コンパイラが厳格なテストと検証を必要とする理由があります。
例えば、C++レベルでのプログラミングに加えて、Poplarソフトウェア開発スタックは、高度に抽象化されたディープラーニングAIフレームワークからの入力を受け付けます。これによって抽象化されたモデルとターゲットハードウェアのマシンコードとの間に層が追加されるのです。
 
「我々のソリューションの主要部はソフトウェアプラットフォームとそれがアプリケーションをIPUにマップする方法です。トップレベルにはTensorFlowやPyTorchのようなAIフレームワークがあり、それらによって基盤のハードウェアをプログラムすることなくニューラルネットワークを構築できる抽象レイヤーが提供されています。Poplarソフトウェアスタックはそれらフレームワークの出力を得、中間言語を介してIPUの個々のハードウェアコアにコンパイルします。中間言語は我々の場合C++です。アプリケーションの機能テストではユーザーは、問題を起こしているのはコンパイラではないことに全幅の信頼を置けることが必要です。」‐Matt Fyles副社長
 
「SuperTestの強みは、言語機能のカバレッジとテストできることの広さにあります。このことが、カスタムメイドのバックエンドでスクラッチからコンパイラを作る場合にSuperTestが特に有用となる点です。この能力と利用できるユーティリティ全般があるので、我々は繰り返しSuperTestを使うようになりました。SuperTestはほとんど業界標準といっていいものです。」‐Matt Fyles副社長
 
Graphcore社の知能処理ユニット(IPU)技術の詳細については、こちらをご覧ください。
 
会社概要
Graphcore社は、機械知能向けに専用に設計されたまったく新しいプロセッサである知能処理ユニット(IPU)を創り出しました。このIPU独特のアーキテクチャが意味するのは、開発者が現状の機械学習モデルを桁違いに高速に実行できるということです。さらに重要なことは、AI研究者が汎用の機械知能における次の大きなブレークスルーを実現するという、現在の技術ではできない完全に新しいタイプの仕事ができるようになることです。
 
我々のIPU技術が機械知能計算における世界標準となることを確信しています。Graphcore社IPUの性能は、すべての産業や部門にまたがって、医療技術者やロボット技術者、自立走行車などいずれに対しても変容して行くものです。

カリフォルニアに本拠を置く、運航自動化ソフトウェアの世界トップメーカーPeloton Technology社はソフトウェアシステムが安全であることの重要性を認識しています。同社の高度な車両間通信と制御技術は、2台のトラックを一定の距離約20メートルを保って隊列走行させますが、これは前方のトラックが急ブレーキを踏んだ時や、追い越し車両が割り込んだ場合でも、後方のトラックのドライバーの反応時間に頼ることなく衝突を回避します。
 
トラックの隊列走行の利点は単純で、先導車と後続車の燃料消費量が総計で7%ほど削減されます。(主に後続のトラックが受ける空気抵抗が小さくなり燃費を高められる)
これは米国のトラック輸送業界だけで年間800億ドル分以上の燃料消費に相当し、目覚ましい節約となります。ただこれが市場に受け入れられるには、「全ては安全第一」と、Peloton社のRod McLaneマーケティング副社長が指摘しています。
 
「現在我々が考えている車間距離では、前方のトラックがブレーキをかけると後方のトラックは10分の1秒以内にブレーキをかけることが必要で、これは後方トラックのドライバーが反応できるよりずっと速いものです。トラックを電子的に接続することで、短い車間距離を保ち、アクセルとブレーキを同期させることによって、燃費を向上させるばかりでなくトラック隊列走行の安全性を向上させることもできます。」‐McLane副社長 
 
Peloton社の技術は自動運転と同じものではなく、前後、双方のトラックのドライバーは完全に車両を操作する状況にあります。ドライバーによる制御に替わり、Peloton社の技術では前方トラックのエンジンECU(Electronic Control Unit:電子制御装置)とブレーキECUに接続して専用の近距離通信(DSRC)チャネルを通じ、関連するコマンドを後方トラックのエンジン、ブレーキそれぞれのECUに中継します。そして両トラックの前方監視レーダーと連携することで、要求される車間距離での自動隊列走行を可能にします。DSRCにはビデオチャネルもあり、後方のドライバーは前方のドライバーと同じものを見ることができます。また暗号化された音声チャネルもあり、双方のトラックドライバー同士で会話することができます。
 
機能安全を保証するため、Peloton社のシステムには専用のHerculesTM ARM® Cortex®-R MCUが使用され、これですべてのセーフティクリティカルな通信とコマンドをモニターします。そしてPeloton社は、このMCUの組込みコードのソフトウェア開発と実装が、国際的に認められる道路車両に対する機能安全標準(ISO 26262)を満たすことを保証するために、Solid Sands社のSuperTestコンパイラテスト・検証スイートを採用しました。 
 
「我々のシステムはトラックに既装着のクルーズコントロールと衝突回避システムと強固に統合していますので、システム全体の安全性を保証して、すべての人に安心していただくことを確かにするために、OEMのトラックサプライヤーおよびティア1の部品サプライヤーと密接に協業しています。それゆえ、セーフティクリティカルな自動車アプリケーションにおけるベストプラクティスである業界規格ISO 26262への準拠は当然のことです」‐McLane副社長
 
「ISO 26262の準拠に、SuperTestとそのqualificationスイートは、システムのコアであるHercules™ Safety MCU用の組込みコード開発に使用するGCCコンパイラの検証に大きく貢献しました」‐Peloton社のTodd Klaus主幹ソフトウェア技師
 
「主要な関心事の一つは、適切なISO言語標準に対してGCC C++11コンパイラを検証することでした。SuperTestは膨大で非常に豊富なテストスイートを提供していて、コンパイラが言語標準に合致しており、我々のC++コードがあるべき振る舞いをすることを保証してくれます。GCCは自身のテストスイートとともに提供されますが、それは車両での使用に対して決してcertificationされていませんし、すべての領域で標準に合致している保証も決してありません。SuperTestは欠点がどこか教えてくれるので、その状況を回避するためにコードレビュー標準を修正することができます。SuperTestはコンパイラを隅から隅までテストして、欠陥がどこにあるかを教えてくれるのです。」‐Klaus主幹ソフトウェア技師 
 
Klaus主幹技師にとって、SuperTestテストスイートがターゲットハードウェア上で直接実行できることも重要な点でした。
 
「コードがコンパイラのフロントエンドで正しく構文解析・意味解析されることを検証したいというだけでなく、採用するARMプロセッサ上で正しく実行されるコードがバックエンドで生成されていることを検証することも重要なのです。そのためにセーフティモニタチップを含む開発ボードに、コンパイラによって生成されたSuperTestのコードを直接展開します。これはテストにより多くの工数をかけることになりますが、ISO 26262の重要な要件の一つである全ツールが検証されているということに対する信頼が得られるので、十分に価値があるのです。」
 
会社概要
Peloton社は、ネット接続され自動化される車両技術の会社で、米国や世界での貨物輸送の安全性と効率の向上に専心しています。フォーチュン・グローバル500の10社の支援を受けているシリコンバレー拠点のPeloton社は、顧客とともにネット接続や自動化、先進のデータ解析を通して、燃料節約や衝突回避、操作上の洞察力向上を行う革新的なツールを提供しています。Peloton社の旗艦製品であるドライバー支援隊列走行システムは、対になるトラックのアクティブセーフティシステムを連携し、ドライバーのチームワークを向上させ、トラックをクラウドベースのネットワークオペレーションセンターに接続することで隊列走行を適切な道路および条件に限定するようにします。Peloton社のソリューションは、隊列の中でも外でも有効に機能するクラス最高の衝突回避システムや他の安全機能を要求しますので、それによってトラック個々の安全性も向上します。
 

最新の組込みプロセッサを採用する際に、コンパイラがISO 26262の要件を満たし、厳密に検証され品質保証できることが重要視されました。
 
「コンパイラは供給元の開発者によって検証されていましたが、コンパイルによって、製品のアプリケーションコードに実行時のエラーがもたらされないことを証明する、追加のテストが必要であると判断されました。横滑り防止装置(Electronic Stability Control = ESC)などの車載システムは、そのセーフティクリティカルな特性として、高度なリアルタイム性能が要求されますが、いくらプログラムをリアルタイム処理向けに正しく書いても、コンパイラに欠陥があれば誤ったオブジェクトを出力して、リアルタイム性能にも支障が出る可能性があるからです。
 
 最新の組み込みMPUの採用には時間的な制約があり、コンパイラの包括的なテストを、迅速に行えるツールの選択が求められました。 そこでコンパイラテストと検証の一連の機能を有するSolid Sands社のSuperTestを評価した結果、特にテストケースのカバレッジが要求を満足することを理解しました。そして、限られた期間でコンパイラの検証が求められる中、常識を破るソリューションとなりました。
 
 SuperTestの設定項目は実に直接的であり、数日で必要な機能を実行できるようになりました。また十分なドキュメントが提供されるので、Solid Sands社のサポートを殆ど必要とすることもありませんでした。また99%のテストカバレッジを数週間で満たすことができるSuperTestの実行速度は、大きな優位性のひとつであり、コスト効率が非常に高いと言えます。
 
 特定の条件下でコンパイラが誤った出力を生成してしまうのは珍しいことではなく、たいていはコンパイラ開発者によるテストが十分で無かったことがその原因です。 SuperTestを用いた広範囲にわたるテストを経て、問題となっていたコンパイラのテスト不足が事実であることが明らかになりました。SuperTestの機能志向型のテストを活用して、コンパイラの欠陥箇所を突き止め、またその正確な発生条件を特定することができました。そしてアプリケーションコードがこれらの欠陥を誘発しないことが確認されたので、コンパイラに対するSuperTestの厳密なテストは、アプリケーションコードに対するソフトウエア品質のチェックにもなりました。なぜならある種のコンパイラの欠陥はプログラミングルール違反によって表面化するものだからです。
 
 車載システムの機能安全規格に準拠して、顧客からの高い信用を維持するには、コンパイラの品質は常に問題になります。セーフティクリティカルな車載システムのアプリケーションに、最新MPUが採用に十分な信頼水準にあることの判断に活用されたSuperTestは、今や必須のソフトウエア開発ツールとして位置付けされています。」
 

“SuperTestの必要な構成はとても容易で、数日でコンパイラテストを設定して実行することができました”

“使用して直ぐに思ったのは、SuperTestのテストカバレッジが、市場で入手可能な他のコンパイラ評価ツールと比較して極めて優れて、GCC test suiteに比較しても明らかに優れていることでした。そして数年の使用経験から、それは実証されました。SuperTestは、GCC test suite では明らかにされなかったGCCの新リリースに含まれるいくつものバグ(非常に深刻なコード生成に関する問題も含む)を検出したのです”

“SuperTestによって、弊社のコンパイラの問題を、他の方法で行うことに比べて圧倒的な速さで検出することができました。ツールのライセンスとメンテナンスに掛かる費用と比較すると、コンパイラの品質を改善するために必要な工数が、倍以上節約できたことになります”

“SuperTestの主なる機能ではありませんが、コードのサイズと性能解析にも利用しました。その目的で使用することの長所は、SuperTestの検証用テストコードはコンパクトで、なぜコードのあるセクションのサイズあるいはパフォーマンスが変わったのかを、比較的直接に発見することができることです”

“テストケースは十分にドキュメント化されていて、問題個所も正確に特定されます”

“SuperTestは実に有益なツールです。詳細なレポートはコードの欠陥箇所を特定することに役立ちました。SuperTestによって実装上の欠陥、バグ、ドキュメントエラー、シミュレーションのバグを検出して、多くのリグレッションに貢献しました。これはリグレッションテストベンチとして、将来のコンパイラプロジェクトでは早期段階から使用するつもりです”

“SuperTestによって開発中に多くのエラーを検出できました。テストスイートの実行に成功することで、次にリリースされる各コンパイラバージョンの品質に十分な確信を得ることができました”

“SuperTestの実行速度が速いことは、機能以外の大きなアドバンテージになっています。数週間で99%以上のテストカバレッジを達成して、高い投資対効果を得ることができました”

“SuperTestの長所は、従来の常識を破る革新的な成果をもたらしてくれること”

お問い合わせ

購入前の製品説明・資料請求・見積依頼・デモ依頼など

 メールでお問い合わせください 
 

購入後の製品の技術サポートに関するお問い合わせ

 技術的なお問い合わせは、ヘルプデスクまでメールでお問い合わせください