近年、電気回路は SoC(System On Chip) 、FPGA(Field Programmable Gate Array)上にIP(Intellectual Property) と呼ばれる電子部品を組み合わせて集積して、部品点数を減らしている。
いろいろな部品が用意されているからかなり自由なカスタマイズが可能となっている。ARMなどのCPUでさえ IP の一つとして扱われる。もう、こうなるとエレキとはいえソフトウェアと同じように自由度が高くなってきた。一度作ったら変えられないハードウェアというよりはハードとソフトの中間のようなものだ。
この記事は、完成度が高いとされる IP がコンプライアンステストと呼ばれる IP単体のテストで検証が済んでいればチップ上で期待通りに動作するかといえば「そうであるとは言えない」と言っている。
【『コンプライアンステストだけでは不十分!半導体IPの検証手法』より引用】
何らかの標準規格に即した半導体IP(Intellectual Property)を開発したら、コンプライアンステストを実施することになる。それにより、そのIPが仕様どおりに機能するか否かを詳細に検査することができる。では、コンプライアンステストを実施しさえすれば、IP事業における最も重要な疑問に対する答えが得られるのだろうか。その疑問とは、「コンプライアンステストに合格すれば、そのIPが『チップ上で期待どおりに動作する』ことが保証されるのか」というものである。【引用終わり】
筆者は、長年にわたってチップ設計者にIPを提供してきた。その経験に基づいてこの疑問に答えるなら、「そうであるとは言えない」ということになる。実際、コンプライアンステストだけでは品質や性能を保証できないことを示す理由がいくつもある。
この記事はインターネットで全文公開されているので是非読んでいただきたい。
筆者は機能検証の基本的な問題やテストでは検証できない構造上のばらつきの問題などさまざまな不確定要素があるため、コンプライアンステストや相互運用性テストに合格しても、そのIPがチップ上で正しく動作することは保証できないと言っている。
コンプライアンステストでは限られた動作シナリオしかチェックされず、テストにすべての条件が含まれているわけではないとも言っている。
これは、ソフトウェアを部品化して組み合わせるときにもまったく同じことが言える。部品としてのソフトウェアは一通りのテストが実施される筈だが、それはすべてのシナリオが網羅されているとは限らない。テストカバレッジだって100%でないこともあるだろう。
だから、検証済みのソフトウェア部品を組み合わせたら、半導体IPと同じように期待通りに動かないことだってあるに違いない。シミュレーションでの結果と実際に動かしてみた結果が違うこともある。
現場の組込みソフトのインテグレータは、長年の経験からそんなことは百も承知だから、ソフトウェアを組み合わせてからが勝負だということは分かっている。分かっていないのはソフトウェアを組み上げてシステムを作り上げたことのない「部品をくっつけたら仕様通りに動くでしょ」と考える人たち、部品だけしか供給したことのない人たちだ。
しかし、ソフトウェアシステムを苦労して仕上げた経験があるエンジニアでも、ソフトウェアの複雑性が増していくと長年の勘と経験ではシステムに潜む問題を見つけられないこともある。
だからこそ、問題が起こったときはその原因を徹底的に分析して再発防止策を組織の知見として残す。これも大事な再利用資産だ。
これができるのは、システム全体を見渡せるエンジニアだけだが、システムの規模が大きくなってくると一人のエンジニアではシステム全体を見渡せなくなってくるから、システムはモデルによって可視化する必要があり、モデルレベルで安全上の問題がないかどうかを検証しないといけない。
そのとき考えるのはシステムがユーザーの本質的な要求を満たしているかどうかという視点であり、これが妥当性確認 = Validation である。
仕様を満たしているかどうかを検証する Verification と ユーザー要求を満たしているかどうかを確認する Validation を分けて考えるべきと言われる理由は、Verification は完全に実施するのは難しいため、本来の目的の妥当性を確認する Validation の視点からテストを実施することにより、ユーザーリスクを効果的に低減することができるからある。
0 件のコメント:
コメントを投稿