セミュレーションとは、コンピュータサイエンスに関連する造語で、シミュレーションとエミュレーションを組み合わせたもので、シミュレータを通してエミュレーションを制御するプロセスを意味します。
デジタルハードウェアは、 VHDL、Verilog、System Verilogなどのハードウェア記述言語(HDL)を使用して記述されます。これらの記述は、問題固有のテストベンチとともにシミュレーションされます。ほとんどのIP設計の初期機能検証は、レジスタ転送レベル(RTL)またはゲートレベルでのシミュレーションによって行われます。イベント駆動型シミュレーション方式では、通常のコンピュータでは実装されたハードウェアを並列処理できないため、コードはCPUによって順次処理される必要があります。この順次処理方式は、特に複雑なシステムオンチップ(SoC)設計において、シミュレーション時間が長くなる原因となります。
シミュレーション後、RTL記述を最終的なハードウェア(FPGA、ASICなど)に適合するように合成する必要があります。実際のハードウェアは通常、シミュレーションモデルほど理想的ではないため、このステップには多くの不確実性が伴います。現実世界とシミュレーションとの違いこそが、ハードウェア設計においてエミュレーションが用いられる主な理由です。
一般的に、シミュレーション環境とエミュレーション環境は2つの独立したシステムです。エミュレーションは、これら2つの手法の共生関係にあります。エミュレーションでは、ハードウェア設計の一方の部分がソフトウェア(例えばテストベンチ)で順次処理され、もう一方の部分はエミュレートされます。
シミュレーションのための設計フローの例を、以下のブロック図に示します。

データベースには、設計ファイルとテストベンチファイル、およびブロックがシミュレーションされるかエミュレーションされるかに関する情報が格納されます。左側は、設計ファイルをHDLシミュレータ用にコンパイルする必要がある通常のシミュレーションパスを示しています。状態図の右側は、エミュレーションシステムのフローを処理します。FPGAの設計ファイルは、適切なターゲットテクノロジーに合成する必要があります。エミュレーションにおける重要なポイントは、エミュレーションシステムとHDLシミュレータ間の接続です。シミュレータが接続されたハードウェアを処理するには、インターフェースが必要です。