集積回路設計
集積回路設計(しゅうせきかいろせっけい)の記事では、集積回路の設計について解説する。主な領域を占める電子工学の他、半導体物性等から論理設計など応用分野に応じた各種の知識と技術も必要である。集積回路そのものについては集積回路の記事を参照のこと。
集積回路設計は、主にシリコンを使った半導体上に、トランジスタ、抵抗器、キャパシタといった部品を配置し、それらを金属の配線で接続する。シリコン基板は電導性があるため、個々の部品の絶縁を確保する方法(いわゆる素子分離)が必要とされる。集積回路の素子は一般の部品より非常に小さいため、トランジスタの電力消費、配線抵抗、配線における電流密度といったことに注意を払う必要がある。金属配線におけるエレクトロマイグレーションや極小素子の放電による破損なども考慮される。回路の物理配置も重要であり、性能やノイズの影響、発熱分布、ピン配置といったことと密接に関連する。
一般的な集積回路設計工程は以下のような段階で進められる。
DFT(Design For Test)とATPG(Automatic Test Pattern Generation)
DFM(Design for manufacturability)
調整(必要ならば)
大まかに言えば、ディジタル集積回路の設計は以下の3つの工程に分けられる。
仕様設計: ユーザー機能仕様を作成する工程。コンピュータ・プログラムによるシミュレーションやエミュレーション等を併用することもある。
論理設計: レジスタ転送レベル、あるいはもう少し抽象的なビヘイビアレベル、あるいはもう少し具体的なゲートレベルで、論理回路としての設計を行う。
物理設計: 論理ゲートのライブラリを使ってチップデザインを生成する。どのゲートを使うか、それらをどう配置し、どう配線するかが決定される。
論理設計が、正しく機能するかどうかの鍵である。第三工程の物理設計は(間違いがなければ)機能に影響を与えることはないが、性能やコストに影響する。
またコンピュータ(プロセッサ)のように複雑なものもある。CPU設計の記事を参照のこと。
仕様には「MP3フォーマットにエンコードする」とか「IEEE浮動小数点演算を実装」などと簡単に書かれているかもしれない。これらの簡単な記述の背後には数百ページにおよぶ仕様が存在し、数千行のコンピュータコードが存在する。従って、RTLであらゆる場合を想定して正しく機能するよう記述するのは非常に困難である。これに対して様々な技法が用いられている。それらは完全ではないが有効である。論理シミュレーション、形式手法、ハードウェアエミュレーションなどがある。またVerilog HDLのように、ビット幅が違っていてもエラーではないなどといった言語では、記述側で制限を追加するなどしてlint的なチェックを行うという方法もある。市販されているガイドライン本としては「RTL設計スタイルガイド」(Verilog HDL編、VHDL編)がある。
ちょっとした間違いでもチップは使い物にならないことがある。Pentium FDIV バグ はごく稀なケースで除算結果を間違うというものであったが、発売後数ヶ月間まで誰もこれに気づかなかった。インテルはチップを無償交換することになったが、これに4億7500万ドルかかったという。
以下に物理設計の主な工程を列挙する。これら工程は必ずしも上から下に一本道になっているわけではなく、様々な要求や目標を満たすまで繰り返される部分も多々ある。
配置計画: 大まかなダイ上の配置を決め、入出力ピンの配置を決定する。
論理合成: RTLから論理ゲートレベルの回路を生成する。
配置: 論理ゲートがダイ上で重ならないように配置する。
論理/配置の改善: 性能および電力消費が最適となるよう修正する。
クロック供給の設計: 回路全体に遅延なくクロック信号が届くよう設計する。
配線: 素子間の配線を追加する。
配線後の最適化:  性能、ノイズ、歩留まりといった観点で問題があれば修正する。
DFM: 製造工程で問題が発生しにくいように(必要ならば)設計を修正する。また、製造側の設定したデザインルールを守るよう修正を加える。
最終チェック: 間違いがあると後戻りにコストがかかるため、この段階で詳細なチェックを行う。形式等価判定やデザインルールチェックといった手法が採用されている。
テープアウトとマスク生成: 設計データからフォトマスクが生成される。
以前は、アナログICは人間が手で計算して設計していた。オペアンプなどの基本的な回路がアナログICとして実装されるが、せいぜい10個のトランジスタを集積している程度であった。試行錯誤と余裕を持った設計(素子の配置)をすることでアナログICが製造可能となっていた。既存の設計を流用することで、より複雑なICが構築されていった。1970年代にコンピュータのコストが低くなると、回路設計のシミュレーションソフトウェアが書かれるようになり、人間が計算するよりも正確で実用的な手段となっていった。集積回路のシミュレーションが可能な、よく知られており広く使われている電子回路シミュレータはSPICE(Simulation Program with Integrated Circuits Emphasis)である。コンピュータによる回路シミュレーションツールが複雑なIC設計を可能にし、アナログASICの設計も実現されるようになった。また、製造前に間違いを検出することも容易になった。また、手で設計していた頃には困難だった洗練されたデバイスモデルや回路解析が可能となり、モンテカルロ法による解析などが実用化された。温度による特性変化や半導体プロセスによる特性変化のシミュレーションも容易となった。以上のように、コンピュータによる回路シミュレーションによってアナログ集積回路設計は格段の進歩を遂げた。
アナログIC設計で重要な問題として、IC上の個々の素子の特性にかなりばらつきがあることが挙げられる。個別部品で回路を組むときには、部品の特性を測定して選別することができるが、集積回路上の素子については制御できない。例えば、あるIC抵抗器の抵抗値は ±20% のばらつきがあり、バイポーラトランジスタのβ値は 20 から 100 までのばらつきを示す。同じ設計であってもウェハーが異なれば特性が変わるし、同じウェハーから切り出したICでも、不純物の拡散にばらつきがあるため、特性が違う。このばらつきの原因は、半導体製造工程に制御不能な無作為の分散があるためである。製造時のちょっとしたタイミングの変化でも、特性が変化する。
このようなばらつきの影響を減らす設計手法として以下のものがある。
抵抗の絶対値ではなく、抵抗の比率を中心として設計する。
部品配置を幾何学的にすることで分散の影響を減らす。
部品を大きくすることで確率的な影響を小さくする。
大きな部品を小さな部分に分け、それらを配線して同等な機能を持たせる。これにより全体としてばらつきの影響が相殺される。
密接に関連する素子をコモンセントロイド型の配置にすることでばらつきを相殺する(例えば、オペアンプでのトランジスタの差動ペアなど)。
一般にアナログICの特性の絶対値はそれほど重視されない。ただし、このようなばらつき問題に対応するため、アナログIC設計と通常の基板レベルの設計では手法がかなり異なる。
主なEDAツールは、回路シミュレーション、論理合成、配置と配線、デザインルールチェックといった工程向けに存在する。EDAツールベンダーとしては、ケイデンス・デザイン・システムズ、シノプシス、メンター・グラフィックス、マグマ・デザイン・オートメーションがある。