デジタル回路
1980年代、一部の研究者はFIFO式同期論理を使うことでほとんどの同期式レジスタ転送機械を非同期設計に変換できることを発見した。この場合デジタル機械はデータフローの集合と見なせる。フローの各ステップにおいて、非同期の「同期回路」はその出力が妥当なものかどうかを判断でき、次のステップに対して「データを使ってよい」という信号を出すことができる。したがって、相対的に単純なステップ間の同期回路だけを設置すればよい。
コンピュータは最も汎用的なレジスタ転送論理機械である。コンピュータの制御装置は一般にマイクロシーケンサ上でマイクロプログラムを動作させるよう設計されている。マイクロプログラムは自動ピアノの巻紙に似ている。マイクロプログラムの「ワード」またはテーブルのエントリは、コンピュータを制御する全てのビットの状態を指揮する。マイクロシーケンサはカウントし、そのカウントが次のマイクロプログラムを格納したメモリ位置や組合わせ回路を指定する。マイクロプログラムの個々のビットは演算論理装置やメモリや他のコンピュータの部分を制御し、それにはマイクロシーケンサ自身も含まれる。
このようにして、コンピュータを制御するという複雑な設計をもっと単純な論理回路の集合体のプログラミングという比較的単純な作業に還元することができる。
開発コストを低減するため、大規模な論理機械の設計の大部分は自動化されてきた。そのためのコンピュータソフトウェアをEDAツールと呼ぶ。
EDAは多くの場合単純な真理値表のような記述を最適化でき、必要な出力を行う論理ゲート数を縮小したシステムかより小さな参照テーブルを自動的に生成する。そのようなソフトウェアとして最も一般的な例がエスプレッソ・ヒュースリティック・ロジック・ミニママイザーである。
大規模なシステムを最適化する最も実用的アルゴリズムは、代数的操作か二分決定図を使い、遺伝的アルゴリズムや焼きなまし法を実験的に使った例もある。
コストのかかる開発プロセスを自動化するため、一部のEDAは有限オートマトンの振る舞いを記述した状態表を入力とし、その状態機械の組合わせ回路の真理値表(機能表)を自動生成する。状態表は各状態を並べたテキストの断片であり、さらに状態遷移の条件や出力信号などが書かれている。コンピュータで生成された状態機械の機能表は、Minilogなどのロジック最小化ソフトウェアで最適化するのが一般的である。
実際には大規模な回路を部分ごとに設計し、ツールフローを使ってそれらを結合するのが一般的である。ツールフローは一般にスクリプトであり、設計ツールを正しい順序で呼び出すことができる。マイクロプロセッサなどの大規模なシステムのツールフローは数千におよぶコマンド列であり、多数の技術者の作業を連結する役目を果たす。
デジタル回路を設計する会社は、ツールフローを書いてデバッグすることが仕事となっている。ツールフローは最終的に詳細なコンピュータファイルまたはファイル群を出力し、そこには回路を物理的にどのように構築するかが記されている。多くの場合、集積回路やプリント基板上でトランジスタや配線をどう配置するかが描かれている。
ツールフローの一部は、所定の入力に対するシミュレーション結果を確認することで「デバッグ」される。テストツールはコンピュータファイルに入力と出力を与え、シミュレート動作と期待される動作の間の不一致を強調する。
入力データが正しいと信用されたとしても、設計自体の正しさも検証が必要である。一部のツールフローはまず設計を生成することで設計を検証し、次にツールフローのための互換入力データを生成するためにその設計を走査する。走査によって生成されたデータと入力データが一致すれば、ツールフローがエラーを指摘することはない。
機能検証データを一般に「テストベクタ」と呼ぶ。機能テストベクタは新たに構築した論理回路を正しくテストするために工場などで保存され使われる。しかし、機能テストパターンは一般的な製造工程での障害を検出しない。製造工程用のテストはATPG(自動テストパターン・ジェネレーション)と呼ばれるソフトウェアツールで設計されることが多い。設計自体もテスト可能なようになされ(次節参照)、網羅率が100%に近くなる。
設計が完了し、検証され、テスト可能になったら、さらに製造可能なように処理が必要とされることが多い。最近の集積回路は光の波長よりも構造が細かい。露光マスクの解像度とコントラストを強化するため、干渉縞パターンをマスクに追加するソフトウェアも存在する。
論理回路のテストにはいくつかの理由がある。開発したばかりの回路は、設計の意図通りかどうかを検証し、機能やタイミングの要求仕様を満たしているかを確認する意味でテストを必要とする。大量生産に移行した場合も製造工程で問題が生じていないことを確認するためにテストが必須である。
大規模なデジタル回路は天文学的な数の状態をとりうる。1つの状態の確認に1μ秒しかかからないとしても、工場で全ての状態をテストすることは明らかに現実的ではない。しかし、大規模な回路はもっと小さなデジタル回路の集合体として設計されるのが一般的である。時間を節約するため、「テスト容易化設計」と称してテスト用の回路を組み込んでおき、部分ごとに単独でテストできるようにすることができる。
よく使われるテスト技法として「スキャン設計」がある。外部試験装置から一連のビットをシフトレジスタを通して逐次入力してテストする方式である。シリアルスキャンには1本か2本の線しか使わず、普段使用しないテスト用回路の大きさとコストをなるべく抑えるよう設計されている。
基板のテスト環境も含め、JTAGというバウンダリスキャンテストの規格が定められている。
他に、回路の一部をテストサイクル状態に移行させるテストモードを提供する方式もある。テストサイクルは通常大きめの独立した部分を対象とする。
デジタル論理回路の実用性を決定するいくつかの数値がある。技術者らはファン・アウト、高速性、低コスト、信頼性という4点の組み合わせが理想的なデバイスを探究してきた。
論理ゲートは大量に使うため、そのコストは極めて重要である。1930年代、初期のデジタル回路は電話用リレーを使っていた。それは、リレーが安価で比較的信頼性が高かったためである。その後も技術者らは要求を満足しつつ、、その時代で入手できる最も安価なスイッチデバイスを常に採用してきた。
集積回路には幸運な偶然があった。当初、集積回路は低コストだから使われたわけではなく、軽さを重視して採用され、アポロ誘導コンピュータでの慣性航法装置の制御が可能となった。初期の集積回路の論理ゲートのコストは50ドルほどだった(1960年当時の価格であり、技術者の年報が1万ドルほどだった)。その後の集積回路の改良には常にコスト低減が伴っている。
集積回路が発展してくると、チップの絶対数削減もコスト低減の一面を表すようになった。設計の目標には単に回路を単純化することだけでなく、部品点数を減らすことも含まれるようになった。その結果、デジタル回路はやや複雑化することもあったが、部品点数を減らすことで基板を小さくでき、消費電力も低減できるという効果があった。
例えば、一部のロジックファミリではNANDゲートが最も基本的な論理ゲートとなっている。他の論理演算は全てNANDゲートで実装できる。回路で既にNANDゲートを1つ使っているとしたとき、一般に1つのチップにNANDゲートは4つ集積されているので、残りのNANDゲートを例えばANDゲート(NANDゲート2個で構成可能)として利用することができる。こうすると、異なる種類の論理ゲートを集積したチップを使う必要がなくなる。
論理ゲートの信頼性は平均故障間隔 (MTBF) で表される。デジタル機器は数百万の論理ゲートを使うことも多い。また、デジタル機器もコスト低減が重要な目標であることが多い。そのため冗長性は考慮されず、1つの論理ゲートの故障で機器全体が動かなくなることが多い。
論理ゲート(またはスイッチ)のMTBFが数百時間を越えたころ、デジタル機器が実用的になってきた。当時のデジタル機械の多くは複雑で、十分試行された修理手順を持っていたが、真空管が焼き切れたりリレーに蛾が挟まったりすると何時間も停止した。現代の半導体集積回路の論理ゲートのMTBFは820億時間(8.2×1010)以上だが、あまりにも多数の論理ゲートを使っているためそれだけのMTBFが必要となっている。
ファン・アウトは論理ゲートの1つの出力に接続して電流駆動能力の範囲内で制御できる入力の数である。ファン・アウトは少なくとも5以上でないと実用的でない。CMOSの論理ゲートではファン・アウトは最低でも50弱ぐらいである。
スイッチング速度はインバータ(NOTゲート)が1秒間に出力を反転させられる回数で表される。高速であればより短時間により多くの処理が可能となる。初期のデジタル回路は50Hzで動作できるようになったころに人間が機械式計算機を操作するよりも高速となり、実用的となった。最近では5GHz(5×109Hz)でスイッチングできるのが当たり前となり、実験室レベルでは1THz(1×1012Hz)以上も可能となっている。
デジタル回路はリレーを使ったものから始まった。リレーは比較的安価で安定動作したが、低速だった。それでも時折故障が起きていた。ファン・アウト数は約10で、コイルの抵抗値に制限されており、高い電圧を印加すると接点で火花が散るという問題が生じた。
次に真空管が使われるようになった。非常に高速だが、発熱量が大きく、フィラメントが焼き切れやすく信頼性は高くなかった。ファン・アウト数は一般に5から7で、発熱に制限された。1950年代にはケイ素のような高温で揮発する性質のある元素を除去したフィラメントを使ったコンピュータ専用の真空管が作られ、数十万時間動作した。
最初の半導体ロジックファミリは抵抗・トランジスタ・ロジック(RTL) である。真空管よりも数千倍信頼性が高く、発熱量も少なく、消費電力も小さかったが、ファンイン数は3と非常に少なかった。ダイオード・トランジスタ・ロジック(DTL)はファン・アウトを約7まで改良し、消費電力をさらに低減させた。ファン・アウト数を増加させるため、NPNのDTLとPNPのDTLを交互に相互接続し、それぞれに電源を用意する方式も考案された。
トランジスタ・トランジスタ・ロジック(TTL)はそれまでのロジックファミリからの大幅な改良をもたらした。ファン・アウト数は初期のデバイスで10まで増加し、後の改良版では20まで安定動作した。また高速であり、20ナノ秒未満のスイッチング時間を達成している。TTLは今も一部用途で使われている。
エミッタ結合論理(ECL)は非常に高速だが、消費電力が大きい。一時期は高性能コンピュータによく使われた(ILLIAC IV など)。
現在最も多く使われているのはCMOSである。高速で小さく、消費電力も低い。ファン・アウトは40以上が可能だが、たくさん接続しすぎると性能が低下する。
半導体を使ったトランジスタをベースとするデジタル回路以外に、最近では次のようなものが研究開発されている。
超伝導の発見により、ジョセフソン効果を使ったRSFQ (Rapid single flux quantum) 回路技術が開発されている。
非線形な光学部品を使った光コンピューティングの研究が進んでいる。