Core Concepts
HIVE は、シミュレーションベースの検証の拡張性とフォーマル検証の完全性を効果的に組み合わせる。提案アプローチは、フォーマルモデル生成や手動ヒント抽出を必要とせずに、実際のファームウェアとハードウェアの実装に適用できる。
Abstract
HIVE は、シミュレーションベースの検証とフォーマル検証の両方の長所を活用する。ハードウェアとファームウェアの複雑な相互作用を検証するために、以下の手順を提案する:
検証シナリオの特定と関連するテストケースの作成
ハードウェアとファームウェアを組み合わせたシステムモデルの自動生成
静的解析と動的解析を使ったプルーフサポートアーティファクトの抽出
自動ヒント生成 - 具体化、弱体化、過剰近似、抽象化
シナリオベースの分解を利用したサブプロブレムの検証
HIVE は、モジュールレベルの境界とテストシナリオに基づいて検証問題を分解する。各サブプロブレムについて、実装が仕様を満たすことを確認する。さらに、ヒントを使ってサブプロブレムの状態空間を簡略化する。
実験評価では、RISC-V ベースのシステムで、HIVE のシナリオベースの分解と自動ヒント抽出により、検証が高スケーラブルになることを示している。また、HIVE は実際のファームウェア-ハードウェアの実装における複雑なバグを特定できる。
Stats
64ビットアドダーを検証するには、2^128個のテストベクトルが必要
実世界のデザインを全ての入力ベクトルでシミュレーションするのは不可能
Quotes
"フォーマル検証は入力空間の複雑さの影響を受けないが、大規模で複雑なシステムでは状態空間の爆発につながる可能性がある。"
"手動のヒント生成は時間がかかり、エラーが発生しやすく、正しくない証明や不正確な結果につながる可能性がある。"