電子システムレベル(ESL)設計および検証は、より高い抽象レベルの懸念事項に焦点を当てた電子設計手法です。電子システムレベルまたはESL設計という用語は、EDA業界分析会社であるGartner Dataquestによって2001年2月1日に初めて定義されました。 [ 1 ] ESL設計および検証[ 2 ]では、「システムの理解を深め、費用対効果の高い方法で機能の実装が成功する確率を高めるために、適切な抽象化を利用すること」と定義されています。
基本的な前提は、 C、C++などの低レベル言語、またはグラフィカルな「モデルベース」設計ツールを使用して、システム全体の動作をモデル化することです。SysMLのような汎用システム設計言語や、SMDLやSSDLのような組み込みシステム設計に特化した言語など、より高い抽象度でモデルを作成できる新しい言語が登場しています。システムの迅速かつ構築時に正しい実装は、高レベル合成や組み込みソフトウェアツールなどのEDAツールを使用して自動化できますが、現在ではその多くが手動で行われています。ESLは、抽象モデリング言語としてSystemCを使用することによっても実現できます。
ESLは、世界有数のシステムオンチップ(SoC)設計企業の多くで確立されたアプローチであり、システム設計でますます使用されています。[ 3 ] 「実装とのリンクがない」アルゴリズムモデリング手法として始まったESLは、組み込みシステムの設計、検証、デバッグから、カスタムSoC、システムオンFPGA 、システムオンボード、およびマルチボードシステム全体のハードウェアおよびソフトウェア実装までを可能にする補完的な手法のセットへと進化しています。
設計と検証は、この方法論における2つの異なる分野です。2つの要素を分離しておくことを推奨する実践もあれば、設計と検証のより緊密な統合を提唱する実践もあります。[ 4 ]
ESLであろうと他のシステムであろうと、設計とは「電子製品のハードウェア部分とソフトウェア部分の同時設計」を指す。[ 5 ]
ESL設計には様々な種類のEDAツールが使用されます。その主要コンポーネントは仮想プラットフォームであり、これは基本的にシミュレータです。仮想プラットフォームは、トランザクションレベルモデリング(TLM)を最も一般的にサポートしています。TLMでは、あるコンポーネントが別のコンポーネントに対して行う操作は、各コンポーネントをモデル化するオブジェクト間の単純なメソッド呼び出しによってモデル化されます。この抽象化により、サイクル精度モデリングに比べて大幅な高速化が実現します。なぜなら、実システムにおける数千ものネットレベルイベントを、ポインタを渡すだけで表現できるからです。例えば、イーサネットパケットが受信されたことをモデル化するために、SystemCがよく使用されます。
他のツールは、他の抽象度レベルでモデル化されたコンポーネントとのインポート、エクスポート、または相互通信をサポートしています。たとえば、RTLコンポーネントはVtoC [ 6 ]またはVerilatorを使用してSystemCモデルに変換できます。また、高位合成を使用して、コンポーネントのCモデルをRTL実装に変換することもできます。
ESL の設計と検証では、検証テストを使用してシステムまたはデバイスの設計の完全性を証明する。多数の検証技術が適用される可能性があり、これらのテスト方法は通常、テスト対象のシステムまたはデバイスにより適するように変更またはカスタマイズされる。一般的な ESL 検証方法には、以下が含まれるが、これらに限定されない。[ 7 ]
検証は多くの場合、システム/デバイス設計者によって行われますが、多くの場合、追加の独立した検証が必要となります。
ESL の設計と検証にはいくつかの批判が提起されている。これには、C ベースの言語に重点を置きすぎていることや、並列処理を表現するのが難しいことなどが含まれる。[ 8 ]また、ESL の設計と検証は検証と妥当性確認のサブセットであると主張することもできる。