抽象化レイヤーの設計
Verilog 言語の詳細を検討する前に、チップ設計における抽象化のさまざまなレイヤーを理解することをお勧めします。
最上層は、さまざまなサブブロックを定義し、機能に基づいてグループ化するシステム レベルのアーキテクチャです。たとえば、プロセッサ クラスタには、複数のコア、キャッシュ ブロック、およびキャッシュ コヒーレンス ロジックが含まれます。これらはすべてカプセル化され、入出力信号を持つ単一のブロックとして表されます。
次のレベルでは、各サブブロックがハードウェア記述言語で記述され、個々のブロックの機能が正確に記述されます。回路図やテクノロジ ライブラリなどの下位レベルの実装の詳細は、この段階では無視されます。たとえば、コントローラ ブロックには、それぞれがその機能の小さなコンポーネントを記述する複数の Verilog ファイルが含まれることになります。
次に HDL は、フリップフロップなどのデジタル要素を特徴付けるテクノロジ ライブラリを含むゲート レベルの回路図に変換されます。たとえば、D ラッチのデジタル回路には、D 入力と E 入力のすべての組み合わせが真理値表によって与えられる出力 Q を生成するように、特定の方法で配置された NAND ゲートが含まれています。
真理値表は基本的に、すべての入力信号レベルとその結果の出力レベルの順列を示します。以下に示すのは、イネーブル ピンを備えた D ラッチの場合です。ハードウェア回路図は、ブール論理と K マップを使用して真理値表から導出することもできます。ただし、プロセッサやコントローラなどのより複雑なデジタル ブロックに対してこの方法に従うのは現実的ではありません。
NAND ゲートの実装は、CMOS トランジスタを特定の形式で接続することによって行われます。このレベルでは、トランジスタのチャネル幅、Vdd、および出力容量性負荷を駆動する能力が、設計プロセス中に考慮されます。
最後のステップは、EDA ツールを使用してこれらのトランジスタをシリコンにレイアウトし、製造できるようにすることです。このレベルでは、レイアウトが異なれば抵抗や静電容量などの物理的特性もさまざまになるため、デバイスと技術に関するある程度の知識が必要になります。
デザイン スタイル
次に、デジタル ブロックの設計には主に 2 つのスタイルがあり、トップダウンとボトムアップの方法論です。
トップダウンこのスタイルでは、最上位のブロックを最初に定義し、最上位のブロックを構築するために必要なサブモジュールを識別します。同様に、各サブブロックはさらに小さなコンポーネントに分割され、リーフ セルまたはそれ以上分割できない段階に到達するまでプロセスが続行されます。
ボトムアップこの場合、最初のタスクは、利用可能な構成要素を特定することです。次に、それらを特定の方法で組み合わせて接続し、より大きなセルを構築し、トップレベル ブロックをつなぎ合わせるために使用します。
通常、両方のフローの組み合わせが使用されます。設計者は設計のシステム レベル ビューを定義し、設計者は各機能ブロックのロジックを実装してゲートに合成します。ここまではトップダウンスタイルです。ただし、これらのゲートはボトムアップ フローに従って構築されており、最小のブロックの物理レイアウトから始めて、可能な限り最高の面積、性能、電力を実現しています。これらの標準セルにはハードウェア回路図もあり、立ち上がり時間と立ち下がり時間、電力、その他の遅延などのさまざまな情報を取得するために使用できます。これらのセルは、必要に応じて選択してインスタンス化する合成ツールで使用できるようになります。
Verilog