Alliance の Scalable CMOS Library によるチップ試作の研究 東海大学 工学部 通信工学科 石黒 健史 指導教員 清水尚彦 助教授 2003 年 3 月 29 日 3 目次 第 1 章 概要 5 第 2 章 本ドキュメントに関して 7 7 7 2.1 2.2 ドキュメントについて . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ドキュメントの表記 第 3 章 関連用語 3.1 3.2 3.3 3.4 . . . . 9 9 9 10 11 Alliance HP の解説 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alliance のダウンロード,インストール . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Alliance のディレクトリ構成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 13 14 14 . プログラム . 拡張子 . . . . s2r 関連 . . . 組織,団体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 4 章 Alliance Ver.4.0.6 の Download,Install 4.1 4.2 4.3 第 5 章 Alliance4.0.6 のチュートリアル . . . . . . 17 17 18 18 21 22 22 23 6.1 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 27 6.2 6.3 仮想配置の関連マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graal の使用方法 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 28 6.4 6.5 .ap ファイルのトレース . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 宣言の種類 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 31 6.5.1 V : Version . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 6.5.2 6.5.3 H : Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A : Abutment Box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 32 6.5.4 6.5.5 S : Segment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C : Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 40 6.5.6 6.5.7 I : Instance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . R : Reference . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 49 6.5.8 V: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Graal の使用方法 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 53 6.6.1 53 5.1 5.2 5.3 5.4 5.5 5.6 5.7 環境変数の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . VHDL のソースコードを記述 SCMAP . . . . . . . . . . . . SCR . . . . . . . . . . . . . . Graal . . . . . . . . . . . . . s2r . . . . . . . . . . . . . . . Dreal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 6 章 仮想配置 6.6 Graal を使用したレイアウト描画 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 6.6.2 6.6.3 6.6.4 レイアウトの修正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . デザインルールチェック . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ショートカットコマンド . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 7 章 実配置 7.1 7.2 7.3 7.4 7.5 7.6 Magic,Alliance 共通のフォーマット形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7.2.1 記号の説明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 55 55 55 Magic を使用した場合の CIF の扱いについて . . . . . 7.3.1 Magic での CIF ファイルの入出力 . . . . . . . 7.3.2 Magic での CIF(マスクレイヤ)の出力 . . . 7.3.3 Magic を使用した場合の CIF の階層のまとめ 7.3.4 ラベル . . . . . . . . . . . . . . . . . . . . . . 7.3.5 設定の変更 . . . . . . . . . . . . . . . . . . . Alliance を使用した場合の CIF の扱いについて . . . 7.4.1 Alliance での拡張された宣言 . . . . . . . . . . 7.4.2 実例 . . . . . . . . . . . . . . . . . . . . . . . Magic,Alliance でのトレース . . . . . . . . . . . . . 7.5.1 Magic でのトレース . . . . . . . . . . . . . . 7.5.2 Alliance でのトレース . . . . . . . . . . . . . 仮想配置と実配置のまとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 61 63 67 67 68 70 70 72 76 76 77 80 . . . . . . . . . . . 81 81 81 81 83 83 84 92 92 94 94 95 概要 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い 8.1 8.2 8.3 8.4 8.5 Version5 . . . . . . . . . . . . . . . . . . . . . . . . 8.1.1 概要 . . . . . . . . . . . . . . . . . . . . . . 8.1.2 ダウンロード,インストール,ファイル構成 8.1.3 チュートリアル . . . . . . . . . . . . . . . . 8.1.4 主なツールの解説 . . . . . . . . . . . . . . . sxlib . . . . . . . . . . . . . . . . . . . . . . . . . . Graal 上でデザインルールチェックをしたい場合 . . 回路面積の計算 . . . . . . . . . . . . . . . . . . . . s2r . . . . . . . . . . . . . . . . . . . . . . . . . . . 8.5.1 環境変数の設定 . . . . . . . . . . . . . . . . 8.5.2 実行時のオプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 9 章 テクノロジーファイル 9.1 9.2 97 関連マニュアル . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . デザインルールの選択と Magic の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.2.1 9.2.2 9.2.3 9.2.4 9.3 54 54 54 デザインルールの選択 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Magic 側の設定 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Magic 標準のテクノロジーファイル(scmos.tech27)と SCN4ME SUBM.20.TSMC.tech27 の違い MOSIS HP の Table 4: SCMOS Layer Map について . . . . . . . . . . . . . . . . . . . . . . . . テクノロジーファイルの記述方法及び値の設定 . . . . . . . . . . . . . 9.3.1 書式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9.3.2 LAMBDA,PHYSICAL GRID . . . . . . . . . . . . . . . . . 9.3.3 MBK TO RDS SEGMENT,MBK TO RDS CONNECTOR 9.3.4 9.3.5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 97 97 98 98 99 100 100 100 101 Reference,Contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 CIF LAYER,GDS LAYER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 5 9.3.6 9.3.7 9.3.8 S2R POST TREAT,S2R OVERSIZE DENOTCH S2R BLOC RING WIDTH,S2R MINIMUM LAYER WIDTH . . . . . . . . . . . . . . . . . . 115 LYNX GRAPH,LYNX CAPA,LYNX RESISTOR,LYNX TRANSISTOR, LYNX DIFFUSION,LYNX BULK IMPLICIT . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 MBK TO RDS BIGVIA HOLE,MBK TO RDS BIGVIA METAL, MBK TO RDS TURNVIA(Ver.5 専用) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 第 10 章 エラーの修正 10.1 テストデータの作成(半加算機) . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2 修正 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.1 読み込み時のエラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.2 ポリシリコンが短すぎるてエラーが出る問題 . . . . . . . . . . . . . . . . . 10.2.3 Transistor の Active に合わせて Diffution の長さも調整する . . . . . . . . 10.2.4 Well の併合エラー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.2.5 配線の Wire 設定での隙間がエラーになる問題(Polisilicon,Alu1,Alu2) 10.3 Magic でデザインルールをチェックする場合の注意点 . . . . . . . . . . . . . . . . 10.3.1 Via が表示されない . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10.3.2 コンタクトと VIA が接触している場合 . . . . . . . . . . . . . . . . . . . . 10.4 Sub-Micron ルールを適用しない場合はどうなるか . . . . . . . . . . . . . . . . . . 10.4.1 Via と Polysilicon が重なる . . . . . . . . . . . . . . . . . . . . . . . . . . 10.4.2 Stacked Via が適用されない . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 第 11 章 修正結果 11.1 11.2 11.3 11.4 11.5 11.6 11.7 . . . . . . . . . . . . . . . . 149 149 160 165 166 166 . . . . . . . . . . . . . . . . . . . . . . . . 167 170 170 170 170 170 修正結果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 層配線(SCN5M SUBM)にしたい場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Ver.4 用に変更したい場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 不明瞭な点及び,今後の課題など . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Druc の文法について . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について . . . . . . . . . . . . . テクノロジーファイルの作成手順まとめ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.7.1 MOSIS の HP で使用するデザインルール(オプション)を選択する. . . . . . . . . . . 11.7.2 選択したデザインルールに対応した Magic のテクノロジーファイルをダウンロードする. 11.7.3 MOSIS ルールを確認しながら Magic で各レイヤの最小幅の cif ファイルを出力する. . . 11.7.4 出力した cif ファイルを再び Magic で開き,MOSIS ルールと照合する. . . . . . . . . . 121 122 125 125 129 134 136 140 142 142 146 147 147 147 11.7.5 適用すべき最小幅がわかったら,Alliance のテクノロジーファイル(.rds)ファイルに記述する. 171 11.7.6 最小幅を設定したら sxlib を Graal,Dreal,Magic で表示させながらエラーが出ている箇所を確認 し,修正する. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 11.7.7 不明瞭なレイヤ,パラメータもチェックし,調整を行う . . . . . . . . . . . . . . . . . . . . . . . 171 11.7.8 テクノロジーファイルが完成したら実際に VHDL ソースファイルからコンパイルを行い,最後ま で合成してエラーが無いか確認する.又,過渡解析などを行い,実際に動作するか確認する. . . 171 第 12 章 参考文献 173 第 13 章 謝辞 175 7 第 1 章 概要 現在日本及びアメリカでは LSI チップの試作を行うためには Cacence 社及び Synopsys 社製の CAD ツールを使用するこ とが多いのですが,その際には多額のライセンス料金を支払わねばなりません.又,ライセンスが切れた場合には使用 ができなくなります.本研究は,オープンソースの Alliance Cad System を使用して,チップの試作を試みようと言う ものです. Alliance は,パリのピエール・アンド・マリーキュリー大学の MASI 研究室で開発された,オープンソースの VLSI CAD System で,VHDL から論理合成及び,パターンレイアウト生成を自動で行うことができます.しかしながら,Alliance は欧州の CMP,Euro Practice でチップを試作することを前提に作られているので,今の時点では,我々がチップを試 作することはできません. 本研究は,Alliance のシステムを利用し,仮想配置から実配置への変換を行う s2r というプログラムに読み込ませるテ クノロジーファイルを MOSIS のデザインルールに合わせて記述することで,MOSIS 及び東京大学の VDEC でチップを 試作するための VLSI CAD ツールをフリーで提供しようというものです. 研究では主に Alliance CAD System のうちの物理レイヤについて検証しました.デザインルールチェックには,MOSIS のデザインルールに対応している Magic を使用しました. このドキュメントでは,Alliance のダウンロード,インストール方法を解説した後,Alliance を使用して VHDL から パターンレイアウト生成までの流れをチュートリアル形式で解説します.その後,s2r の入力ファイルと出力ファイルの フォーマットを実例と共に解説してから s2r に読み込ませるためのテクノロジーファイルの記述方法を解説します.最後 に,Magic で読み込ませた際にエラーが出る箇所の修正を行います.尚,研究で使用していたヴァージョンは 4.0.6 です が,Ver.5.0 についても多少分かってきたので,平行して解説して行きます. 本来ならばテクノロジーファイルの周辺の話のみにすれば良かったのですが,現在 Alliance の Ver.4,Ver.5 に関して はドキュメントが man ページと簡単なチュートリアル位しか無い状態であり,細かい点に関しては手探りで進めて来ま した.よって,その過程で分かったことについても纏めてあります.本家 HP を補完するための資料として活用して下 さい. 現在の完成状況ですが,MOSIS ルールが扱えるファウンダリである TSMC 用に SCN4ME SUBM,SCN5M SUBM を Ver.4,Ver.5 でエラー無く合成できるようになりました.これで,コアレベルではほぼ完成し,今後チップレベルで の研究となります.と言っても,チップレベルでは,付属のツールの使用方法がわかれば解決するでしょう.実際にシス テムを利用したチップの試作及び,未設定のいくつかのパラメータについては今後の課題とします. 9 第 2 章 本ドキュメントに関して 2.1 ドキュメントについて このドキュメントは,これまで調べてわかったことについて纏めまたものです.簡単なチュートリアルや使用するファ イルのフォーマットについて解説しながら,最終的に Alliance のテクノロジーファイルの記述及び使用ができるように なることを目標に作成しました.一部重複していたり,曖昧な点も多々あるかと思いますが,ご了承下さい. 又,Ver.4 をベースにドキュメントを作成していたので,Ver.5 に関しては中途半端な内容になっていることも重ねて ご了承下さい. • ソースコードなどは,読みやすさを重視し,一部変えてある部分があります. • 左に行数が書いてある場合がありますが,説明のために使用したもので,実際には表示されません. • 見やすいように各セル内で行の順序を一部入れ替えてあることがあります. • ソースコードの右にコメントを多数入れましたが,こちらも実際には表示されません. • ドキュメントに載っていない宣言が現れた場合は,“第 12 章 参考文献” を参考にして下さい. 2.2 ドキュメントの表記 .∼ “.∼” のように,. の次に英数字が続いている場合は,ファイルの拡張子を意味しています.例えば “.ap”,“.cif” の ようになります.隠しファイルではありません. $ man ($ man ∼)のように書いてある場合は man ページを参照することを意味しています.例えば, ($ man s2r) なら,s2r の man ページを参照するという意味です. ALLAINCE TOP Alliance のルートディレクトリを Alliance Top とします. 11 第 3 章 関連用語 頻繁に使用する用語を掲載します. 3.1 組織,団体 Alliance パリのピエール・アンド・マリーキュリー大学の MASI 研究室で開発された,オープンソースの VLSI CAD System で,VHDL から論理合成及び,パターンレイアウト生成を自動で生成できます.本研究で使用する CAD Tool で す.Alliance を直訳すると,“協力,協調” という意味です.Alliance そのものは組織ではありませんが,便宜的に載せ ました. Cadence LSI Cad を制作している会社です. Synopsys LSI Cad を制作している会社です. MOSIS MOSIS は米国の政府系機関および研究機関に向けた VLSI 回路開発のための安価なチップ試作のサービスです. Magic は MOSIS のデザインルールを採用していて,Alliance から出力した CIF ファイルを Magic に読み込ませるこ とで,デザインルールチェッカとしての役割を果たすことができます. 詳しいことは MOSIS の HP1 及び,MOSIS のデザインルールの HP2 をご覧下さい TSMC MOSIS のチップベンダです.今回は TSMC 用のテクノロジーファイルを作成しました. VDEC 東京大学にあるチップ試作団体です.最終的には Alliance を使用して VDEC でチップ試作ができるようにし ます. 3.2 プログラム Alliance のツール asimut (Ver.4,5)“ASIMUT” は,“A SIMUlatin Tool for hardware descriptions” の略で,VHDL の動作をシミュ レーションするためのツールです($ man asimut).本研究ではハードウェア記述言語を使用することが目的では無い ので,割愛します. scmap (Ver.4)“SCMAP” は,“MAPping Standard Cells” の略で,VHDL のソースコードを解析し,必要なセルラ イブラリを割り当てて,ネットリストを出力します($ man scmap).入力ファイルは(.vbe),出力ファイルは(.vst) となります. scr (Ver.4)“SCR” は,“Standard Cell Router” の略で,SCMAP で決定したセルライブラリを元に,仮想配置ファ イルに変換して配線を行うプログラムです($ man scr).入力ファイルは(.vst),出力ファイルは(.ap)となります. 1 http://www.mosis.org/ 2 http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html 12 第3章 関連用語 graal (Ver.4,5)“GRAAL” は,“GRAphic LAyout editor” の略で,仮想配置である.ap ファイルをグラフィカルに表 示するためのプログラムです($ man graal).本来は scr の出力ファイルを表示しますが,Graal でレイアウトを記述す ることも可能です..ap ファイルは s2r の入力ファイルになります.第 6 章で,詳しく解説します. s2r (Ver.4,5)“S2R” は,“Symbolic to Real layout converter” の略で,仮想配置である.ap ファイルを実配置である.cif ファイルに変換します($ man s2r).この変換の際に使用するデザインルールが記述されたテクノロジーファイルを作 成することが,本研究の目的となります.詳しくは第 8 章以降で解説します. dreal (Ver.4,5)“DREAL” は,“Design REAL layout” の略で,実配置である.cif ファイルをグラフィカルに表示す るためのプログラムです($ man dreal).s2r の出力ファイルを表示しますが,Dreal でレイアウトを記述することも可 能です.第 7 章で詳しく解説します. lynx (Ver.4)“LYNX” は,“Hierarchical netlist extractor” です($ man lynx).ap ファイル,cif ファイルからネッ トリストである.vst ファイルを出力します. druc (Ver.4,5)“druc” は,“Design RUle Checker” の略です.テクノロジーファイル(.rds)にデザインルールを記 述しておき,仮想配置(.ap)ファイルのデザインルールをチェックします($ man druc).druc は単体で使用するか, Graal を実行中に呼び出して使用します. BooG (Ver.5)“BooG” は,Binding and Optimizing On Gates の略です($ man boog).Ver.5 になって,SCMAP が BooG に代わりました. OCP (Ver.5)“OCP” は,Standard Cell Placer の略?です($ man ocp).Ver.5 になって,SCR(配置配線ツール) が OCP(配置ツール)と OCR(配線ツール)に分かれ,現在では OCR が NERO に代わりました. OCR (Ver.5)“OCR” は,an Over-the-Cell-Router の略です($ man ocp).Ver.5 で scr の代わりに使用される配線 ツールですが,現在では OCR が NERO に代わりました. NERO (Ver.5)“NERO” は,NEgotiating ROuter の略です($ man nero).Ver.5 で scr の代わりに使用される配 線ツールです. COUGAR (Ver.5)“COUGAR” は,Hierarchical netlist extractor です($ man cougar).Ver.4 までは lynx と言 うプログラムでしたが,有名なテキストブラウザと名前同じだったので変更されたものです. それ以外のプログラム magic LSI レイアウト記述用の CAD ツールです.magic は MOSIS に対応しているので,Magic で CIF ファイルを読 み込ませてもエラーが生じないように Alliance のテクノロジーファイルを記述します. 3.3 .vbe 拡張子 ハードウェア記述言語である VHDL($ man vhdl)の拡張子です($ man vbe).“SCMAP” の入力ファイルと して使用します.また,“Asimut” と言うプログラムでシミュレーションを行うことができます. .vst .vst フォーマットは,“VHDL structural subset” の略で,Alliance のネットリストです($ man vst).“Scmap” と 言うプログラムで出力されるファイルの拡張子であり,“SCR” というプログラムの入力ファイルになります.又,“Lynx” というプログラムで ap ファイル,cif ファイルを vst フォーマットに変換して出力することができます. 3.4. s2r 関連 13 .ap 仮想配置のファイルの拡張子です.scr と言うプログラムの出力ファイルであり,又,s2r と言うプログラムの入力 ファイルでもあります($ man ap).さらに,“Graal” と言うプログラムを使用することで,レイアウトをグラフィカル に表示できます. .cif “s2r” によって実配置に変換されたファイルの拡張子で,“Dreal” と言うプログラムでグラフィカルに表示するこ とができます.このフォーマットは,パターンレイアウトの最終段階であり,チップの試作に利用します.本研究では, このファイルを Magic に読み込ませます. .mag “Magic” での標準の出力フォーマットです.このフォーマットではチップの試作はできません. 3.4 s2r 関連 Alliance では,パターンレイアウトを生成する前に仮想配置という段階を踏みます.仮想配置では,レイヤの 領域を軸と線で表しますが,幅はこの段階では仮想的にしか決まっていません.この後 s2r と言うプログラムを使用し て,実配置に変換します.仮想配置は “MBK”,“Symbol” とも呼ばれています($ man mbk). 仮想配置 s2r で変換した後の状態で,拡張子は “.cif” となります.又,“RDS”,“Real” と呼ばれてることもあります ($ man rds).最終的にこの段階まで変換してから CIF ファイルを Magic に読み込ませます.実配置では,領域を長方 形で表します. 実配置 sxlib Alliance で使用されるセルライブラリです($ man sxlib).サブミクロンプロセス用に設計されています s2r で実配置に変換する際に各レイヤの最小幅などをテクノロジーファイル(拡張子は.rds)に記 述します.このテクノロジーファイルは s2r だけでなく,Graal,Dreal,Lynx,Druc でも使用されます($ man prol). テクノロジーファイル 15 第 4 章 Alliance Ver.4.0.6 の Download,Install この章では,Alliance の HP より,プログラムのダウンロード及びインストールの方法を説明します.又,HP はわかり にくい構成になっているので,関係ある箇所の解説もしていきます. 4.1 Alliance HP の解説 Alliance の HP は http://www-asim.lip6.fr/alliance/ です.Google1 で,“Alliance VLSI” とキーワードを入力してもトップに表示されます(“ウェブ全体から検索” にチェッ クを入れます). トップページに掲載されているヴァージョンは 5.0x 系ですが,チュートリアル,ドキュメントが最新のものではない ので,Ver.4 系を解説します.Ver.4 に慣れたら Ver.5 に移行してみて下さい.ドキュメントの後半で Ver.5.0 についても 少し解説しています. Ver.4 の HP は,トップページの下 “You can still acces Alliance 4.0 website and documentation here. ” から次のア ドレスに辿れます. http://asim.lip6.fr/alliance_old/alliance/ プログラムは,この HP の Latest: Official release: 4.0.6 2000/02/01 から辿れますが,その前に HP の構成を解説します. Ver.4 の HP トップの右上に “Documentation” という項目があります.Alliance に関する殆どの資料はそこから手に 入ります. http://asim.lip6.fr/alliance_old/alliance/doc/index.html よって,このページを Bookmark 等に登録しておくと良いかもしれません. Documentation ページの構成 • Alliance introduction : Quickview Overview Jumpstart • Man pages : Tools Libraries functions 1 http://www.google.co.jp/ このページで主に関係ある箇所は, 16 第4章 Alliance Ver.4.0.6 の Download,Install です.“Quickview” は,Alliance についての簡単な概要が掲載されています.“Overview” は,Alliance の各プログラ ムの解説など,少し詳しい内容になっています.Quickview,Overview は共に Alliance4.0.6 を DL すれば ps,pdf 形式 で入っています($Alliance Top/share/doc/overview.ps,overview.pdf).ただし,一部の画像は HP にのみ掲載されて いるようです.尚,現在 Ver.5.0 には入っていません. “Jumpstart” のページの中段にはいくつかの絵が掲載されています.この絵の左は論理回路の MIL 記号,中央は回路 図,右は Graal で表示した仮想配置レイアウトです. このページの下に Design Examples • 1-bit Full Adder (Combinational Example) というリンクがあります. http://asim.lip6.fr/alliance_old/alliance/doc/jumpstart/Examples/FullAdder.html このページは今回の研究において,最も重要なチュートリアルが掲載されています.テストに使用している半加算機も このページを参考にしました. Man pages:の “Tools”,“Libraries functions” は,Alliance のマニュアルが掲載されていますが,一部情報が古いもの もあるようです.また,今回頻繁に参照する prol というマニュアルも掲載されていません. このページは,Alliance をインストールした後に $man name を実行すれば,同じものが表示されます. 又,“Jumpstart” のページの下, Alliance 3.2b man pages • Programs and Environment variables • C programming functions からでも辿ることができます. 4.2 Alliance のダウンロード,インストール Alliance のダウンロードページは,Alliance Ver.4 の HP の Latest: Official release: 4.0.6 2000/02/01 から辿れます. ftp://asim.lip6.fr/pub/alliance/distribution/4.0/ インストールはこのページの “README” を参考にして下さい. Linux で使用する場合は “alliance-4.0.6-asim.i386.rpm” を選択すると良いと思います.“alliance-4.0.6-common.tar.gz” を使用した場合,実行ファイルは無いようなので,別途 “alliance-4.0.6-sources.tar.gz” をコンパイルする必要があります. 又,Windows で Cygwin を利用して使用する場合は “alliance-4.0.6-cygwin-b20.exe” を選択することが可能です.Win- dows で使用する場合には,同ページの “README.win32” を参照して下さい. 4.3 Alliance のディレクトリ構成 Alliance Ver.4.0.6 のディレクトリ構成は,図 4.1 のようになります. ここでは本研究に関係のあるディレクトリ,ファイルについて解説します.尚,Alliance のルートディレクトリを “$Alliance Top” とします. 4.3. Alliance のディレクトリ構成 17 Alliance_Top archi/ Linux/ (OS-Name/) bin/ include/ lib/ (cells/) (doc/) (etc/) (man/) (tutorials/) sources/ README.cells amg/ bsg/ dplib/ fplib/ grog/ padlib/ cells/ rage/ rfg/ rsa/ sc2sxlib/ sclib/ sxlib/ ~.ap doc/ overview/ overview.ps,pdf process_mapping.ps,pdf etc/ alc_env.sh,csh ~.rds cmos_7.graal share/ man/ man1/ man3/ man5/ whatis windex README.tutorials addaccu/ tutorials/ amd2901/ dlxm/ fitpath/ CHANGES COPYING-2.0 COPYING.LIB-2.0 FAQ LICENCE README 図 4.1: Alliance 4.0.6 のディレクトリ構成 18 第4章 Alliance Ver.4.0.6 の Download,Install archi/ “archi/” ディレクトリには,各 OS 用のバイナリプログラム($Alliance Top/archi/OS/bin/)が入っています. 又,図 4.1 での点線はシンボリックリンクです. sources/ “sources” ディレクトリは,ソースコードからコンパイルをした場合のみ作成されます. share/ “share” ディレクトリには,cells,doc,etc,man,tutorials の 5 つのディレクトリがあります.Ver.5 では大 部分のセルライブラリが削除されています. cells/ “cells” ディレクトリには,セルライブラリが入っています.この中でも標準の設定では “sxlib” を使用します. sxlib ディレクトリの中には,仮想配置である.ap ファイルなどがセルライブラリとして入っていて,仮想配置ではこの ディレクトリ内のセルライブラリを呼び出して使用します.その他のディレクトリに関しては,“README.cells” を参 照して下さい. doc/ “doc” ディレクトリには,Alliance のドキュメントが入っています.このうち,“overview.ps”,“overview.pdf” は,Alliance の概要が記述されています.このドキュメントは,HP の Documentation ページの Quickview,Overview をを PS,PDF 形式にしたものです. 又,“process mapping.ps”,“process mapping.pdf” は s2r で使用するテクノロジーファイルに関するドキュメントで す.このドキュメントは “Translation of symbolic objects into real rectangles” と言うタイトルで本研究では特に重要で あり,第 9 章で詳しく解説します.Ver.5 を使用する場合には,ドキュメントが入っていないため,Ver.4 に入っている ものを使用して下さい. etc/ “etc” ディレクトリには各種設定ファイルが入っています.このディレクトリ内で特に重要なファイルは,“alc env.sh”, “alc env.csh”,“∼.rds”,“cmos 7.graal” です.“alc env.sh”,“alc env.csh” は,環境変数を設定するためのシェルスク リプトです.Bash 使用時は “alc env.sh”,Cshell 使用時は “alc env.csh” を使用します.“∼.rds” は,s2r に読み込ませ るためのテクノロジーファイルです(.rds は拡張子).“cmos 7.graal” は,Graal で使用するテクノロジーファイルです. man/ Alliance のマニュアルです. $ man name でプログラム,環境変数など調べたい項目を name に指定します. tutorial/ チュートリアル用のファイルが入ったディレクトリです.本ドキュメントでは HP の全加算機のチュートリ アルのページを参考にしているのでこのディレクトリのファイルは使用していませんが,一度は試してみると良いでしょ う.詳しくは tutorials/README.tutorials を参照して下さい. $Alliance Top にあるその他のファイルについて まず最初には “README” を読むと良いでしょう.ただし,既にイ ンストールを済ませている場合には必要無いかも知れません. その次に “FAQ” をチェックして下さい.拡張子やマニュアルについて解説してあります. “CHANGES” は,更新履歴です.過去のヴァージョンとの違いが知りたい時に参照します.Alliance5.0 系を使用する 場合には,ドキュメントの内容と一部異なる可能性もあるので,一度参照してみて下さい. 19 第 5 章 Alliance4.0.6 のチュートリアル この章では,全加算機のチュートリアルページ http://asim.lip6.fr/alliance_old/alliance/doc/jumpstart/Examples/FullAdder.html を参考に,この後のテストデータとして,A = B という回路を作成する手順を解説します.ここで作成した回路は,こ の後の章でも使用します.できる限り小さい回路を作成することで,この後の解析をやりやすくしています.他の回路 も試したい場合は,Alliance に付属のチュートリアルで練習して下さい. 尚,Ver.5 では使用するツールのいくつかが異なります.詳しくは第 8 章で解説します. まず,全体の流れは次の図 5.1 のようになります.この他にも多くのツールがありますが,ここでは研究で使用するプ ログラムのみ掲載しました. VHDL Source (equal.vbe) SCMAP equal.vst SCR Lynx equal.ap S2R Graal equal.cif Dreal 図 5.1: このチュートリアルでのフローチャート.四角で囲んであるのがプログラムです.中央は変換プログラムの流れ. 右はレイアウト表示プログラム.左はネットリスト抽出プログラム.直接は関係ないので点線で示しています. 5.1 環境変数の設定 インストールが終わったところで,まずは環境変数を設定しなければなりません.環境変数は一から設定すると非常に判り づらいのですが,ここでは “alc env.sh”,“alc env.csh” と言うスクリプトファイルを使用します.現在使用しているシェル が Bash ならば “alc env.sh” を,Cshell ならば “alc env.csh” を使用して下さい.このファイルは $Alliance Top/share/etc/ にあります.コマンドは,Cshell の場合, $ source ./alc env.csh 20 第5章 Alliance4.0.6 のチュートリアル です.Bash では alc env.csh を alc env.sh に変更します.この例ではディレクトリを $Alliance Top/share/etc/ に移 動してからコマンドを実行しています. このスクリプトを vi 等のエディタで表示してみましょう.本研究でたびたび参照,変更する環境変数は “GRAAL TECHNO NAME” と “RDS TECHNO NAME” です.本研究の目的であるテクノロジーファイルは RDS TECHNO NAME に指定します.又,“MBK CATA LIB(仮想配置のカタログライブラリ)” の値が sxlib のディ レクトリを参照しています.その他に,“RDS IN”,“RDS OUT” の値が共に “cif” になっていることを確認してみて下 さい(s2r の man によると,デフォルトでは “gds” に設定されているようです). 再起動時などに,もしもプログラムが実行できない場合はコマンドを打ち直して下さい.又,環境変数を変更した際 にもコマンドを実行し直す必要があります. 5.2 VHDL のソースコードを記述 まず,VHDL のソースコードを記述します. -- External ports ENTITY equal IS PORT ( A : IN BIT; B: OUT BIT ); END equal; -- Internal Behaviour ARCHITECTURE equal_data_flow OF equal IS BEGIN B <= A; END equal_data_flow; 以上が VHDL で A = B を記述した場合のソースコードです.ファイル名は “equal.vbe” とします.尚,改行コード が正しくないとコンパイル時に失敗するので,自分の環境でソースコードを書き直した方が良いかもしれません.ちな みに,行の最初に “- -” がある場合はコメントとなります. 5.3 SCMAP “SCMAP” は,“MAPping Standard Cells” の略です.VHDL のソースコードを解析し,セルライブラリを割り当て て,ネットリストとして出力します($ man scmap). コマンドは, $ scmap in out です.in には,入力ファイル名を,out には,出力ファイル名を入力します.よって,次のようになります. $ scmap equal equal ここで,入力ファイルに拡張子である “.vbe” を入れると,ファイル名が見つからないというエラーになるので,拡張 子抜きの “equal” のみを入力します.又,出力ファイル名に inv(inverter の略)等よく使われそうな名前は予約語もし くはセルライブラリ名として使用されているようなので,その場合には HP のチュートリアルにあるように,inv1 のよ うにファイル名を少し変えたようが良いでしょう. このコマンドを実行すると,次のようなメッセージが出て,プログラムが終了します. 5.3. SCMAP 21 @@@@ @ @ @@ @@ @ @@@ @@@@ @@@@ @@@ @ @@ @@ @@ @@@ @ @ @@@@ @@@@ @ @@ @@ @@ @ @@ @ @@@ @@ @@@ @@@@ @@@ @@@ @@ @@@ @@ @@ @@ @ @@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@@ @@@ @@ @@@@ @@@@ @@@ @@@ @@@@ @@ @@ @@@ @@ @@@@ Mapping Standard Cells Alliance CAD System 4.0.6, scmap 4.0.9 [1999/11/09] Copyright (c) 1990-2003, ASIM/LIP6/UPMC E-mail support: [email protected] ================================ Environment ================================ MBK_WORK_LIB = . MBK_CATA_LIB = .:/usr/local/alliance/archi/Linux/cells/sxlib:/usr/local/ alliance/archi/Linux/cells/padlib MBK_TARGET_LIB = /usr/local/alliance/archi/Linux/cells/sxlib MBK_IN_LO = vst MBK_OUT_LO = vst ======================= Files, Options and Parameters ======================= VHDL file = equal.vbe output file = equal.vst Parameter file = default.lax Mode = Mapping standard cell Optimization mode = 50% area - 50% delay optimization Optimization level = 2 =============================================================================== Compiling ’equal’ ... Running Standard Cell Mapping ============================= INITIAL COST ================================== Total number of literals = 1 Number of reduced literals = 1 Number of latches = 0 Maximum logical depth = 0 Maximum delay = 0.000 =============================================================================== Compiling library ’/usr/local/alliance/archi/Linux/cells/sxlib’ Generating Expert System ... Cell ’fulladder_x2’ Unused Cell ’fulladder_x4’ Unused Cell ’halfadder_x2’ Unused Cell ’halfadder_x4’ Unused Cell ’mx2_x2’ Unused Cell ’mx2_x4’ Unused Cell ’mx3_x2’ Unused Cell ’(null)’ Unused Cell ’mx3_x4’ Unused Cell ’(null)’ Unused Cell ’nmx2_x1’ Unused Cell ’nmx2_x4’ Unused Cell ’nmx3_x1’ Unused Cell ’(null)’ Unused Cell ’nmx3_x4’ Unused Cell ’(null)’ Unused Cell ’noa2ao222_x1’ Unused Cell ’noa2ao222_x4’ Unused Cell ’noa3ao322_x1’ Unused Cell ’noa3ao322_x4’ Unused Cell ’oa2ao222_x2’ Unused Cell ’oa2ao222_x4’ Unused 22 第5章 Alliance4.0.6 のチュートリアル Cell ’oa3ao322_x2’ Unused Cell ’oa3ao322_x4’ Unused Cell ’rowend_x0’ Unused Cell ’tie_x0’ Unused 264 rules generated output b connected to input a : 2 inverters added ============================== FINAL COST =================================== Number of cells used = 1 Number of gates used = 2 Number of inverters = 2 Number of grids = 1500 Depth max. (gates) = 2 (eq. neg. gates) = 2 =============================================================================== MBK Driving ’./equal.vst’... そして,作成されたネットリスト “equal.vst” をエディタで表示すると, -- VHDL structural description generated from ‘equal‘ --date : Sun Jan 12 17:06:20 2003 -- Entity Declaration ENTITY equal IS PORT ( a : in BIT; -- a b : out BIT; -- b vdd : linkage BIT; -- vdd vss : linkage BIT -- vss ); END equal; -- Architecture Declaration ARCHITECTURE VST OF equal IS COMPONENT inv_x1 port ( i : in BIT; -- i nq : out BIT; -- nq vdd : in BIT; -- vdd vss : in BIT -- vss ); END COMPONENT; SIGNAL auxsc1 : BIT; -- auxsc1 BEGIN b : inv_x1 PORT MAP ( vss => vss, vdd => vdd, nq => b, i => auxsc1); auxsc1 : inv_x1 PORT MAP ( vss => vss, 5.4. SCR 23 vdd => vdd, nq => auxsc1, i => a); end VST; となります($ man vst1 ).COMPONENT と記述されている欄には,セルライブラリ名が入ります.ここでは,“inv x1” と言う名前のインバータ回路が指定されています. となり,auxsc1 など後ほど “Graal”,“Dreal” で表示されるラベルは SCMAP で作成されていることがわかります. 5.4 SCR “SCR” は,“Standard Cell Router” の略で,SCMAP により出力されたネットリスト(equal.vst)を仮想配置であ る.ap ファイルに変換し,配線します($ man scr). コマンドは,HP のチュートリアルに従って, $ scr -p -r -i 1000 equal とします. @@@@ @ @ @@ @@ @ @@@ @@@@ @@@@ @@@ @ @@ @@ @@ @@@ @ @ @@@@ @@@@ @ @@@@@@@ @@ @@ @@ @@ @@ @ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@@@@ @@ @@ @@ @@ @@ @@ @@ @ @@ @@ @@ @@ @@ @@ @@@@ @@@@@ @@@ Standard Cell router Alliance CAD System 4.0.6, scr 5.3 Copyright (c) 1991-2003, ASIM/LIP6/UPMC E-mail support: [email protected] Loading logical view : equal Placing logical view : equal Loading SCP data base ... Original width : 30 Generating initial placement ... 2 cells 5 nets in 1 rows Placement in process of treatment : 100% 0% saved in 0.1 s Saving placement 100% Checking consistency between logical and physical views Loading SCR data base ... Deleting MBK data base ... Global routing ... Channel routing ... |_____Routing Channel : scr_p2 |_____Routing Channel : scr_p4 Making vertical power and ground wires Saving layout : equal 以上で,“equal.ap” ファイルが作成されました.仮想配置及び ap フォーマットのトレース方法については第 6 章で詳 しく解説します. 1 内容は少し古いです. 24 5.5 第5章 Alliance4.0.6 のチュートリアル Graal “Graal” は “GRAphic LAyout editor” の略で,仮想配置である.ap ファイルをグラフィカルに表示することができる プログラムです($ man graal). この章では,画面に表示するまでの簡単な操作のみ紹介し,詳しくは次章で解説します. Graal で equal.ap ファイルを表示するには,プロンプト画面で $ graal -l equal と入力します.すると,図 5.2 のようなレイアウトが表示されます. 最初はまだセルライブラリのインバータ回路を表示していません.回路を表示したい時には,メニューバーから Tools→Flat を選択した後,表示したいサブセルをマウスで選択します.そうしてインバータ回路も全て表示した状態が図 5.3 です. 図 5.2: Graal で equal.ap ファイルを開いた状態 図 5.3: Graal でサブセルであるインバータ回路も含めて,全 て表示した状態 Graal で表示された画面を見た限りでは,既に領域の幅なども決定しているように思われますが,実際には s2r のテク ノロジーファイルを同時に読み込み,その計算結果を基に画面に表示しているのです.ap ファイルそのものには領域の 軸と長さのみが記述されています.詳しくは次章以降に解説します. 5.6 s2r “s2r” は,“Symbolic to Real layout converter” の略で,仮想配置である.ap フォーマットを実配置である.cif フォー マットに変換するプログラムです($ man s2r).このプログラムはレイヤの最小幅などのデザインルールを設定したテ クノロジーファイル(拡張子は.rds)を環境変数 RDS TECHNO NAME に指定します.このチュートリアルの最初で “alc env.sh”,“alc env.csh” を使用しました.このファイルには cmos 8.rds をテクノロジーファイルとして指定してあり ます.このチュートリアルも同ファイルを使用しています.最終的な目標は,このテクノロジーファイルを MOSIS のデ 5.7. Dreal 25 ザインルールに乗っ取って記述することです.ここでは,s2r を使用して cif ファイルを出力する方法を解説します.s2r のコマンドは $ s2r input (output) です.input は ap ファイルの名前です.拡張子まで入力するとエラーで実行されないので注意して下さい.output は, オプションです.cif ファイルの名前を入力ファイルの名前と変えたい場合は指定して下さい.ここでは, $ s2r equal と入力し,実行します.すると, @@@@ @ @@ @@ @@ @@@@@@ @@@ @@ @@@ @@@ @@ @ @ @@ @@@ @@ @@@ @ @@ @@ @@@@ @ @@ @@@@ @ @@ @ @@@ @ @ @@ @@ @@ @@@@@@ @@ @ @@@@@ @@@@@@@ @@@@ Symbolic to Real layout converter Alliance CAD System 4.0.6, s2r 3.7 Copyright (c) 1991-2003, ASIM/LIP6/UPMC E-mail support: [email protected] o o o o o loading technology file : /usr/local/alliance/archi/Linux/etc/cmos_8.rds loading all level of symbolic layout : equal removing symbolic data structure layout post-treating with connectors, with scotchs. saving equal.cif のように表示され,“equal.cif” ファイルが作成されます.s2r については第 8 章で解説します.又,CIF 形式について は第 7 章で詳しく解説します. 5.7 Dreal “Dreal” は “Design REAl Layout” の略で,s2r で作成された cif ファイルのレイアウトを画面に表示するプログラム です($ man dreal).見た目は Graal とよく似ていますが Graal が仮想配置である ap フォーマットを表示するプログ ラムであるのに対して,Dreal は実配置である cif フォーマットを表示します. Dreal で equal.cif ファイルを表示するには, $ dreal -l equal と入力します.すると,図 5.4 のように表示されます. ここでも最初はトップセルのみ表示され,インバータ回路は画面に現れません.サブセルであるインバータ回路を画 面に表示するには,Tools→Flatten を選択します(図 5.5). この Dreal で表示されたレイアウトは Graal のものと殆ど違いが無いように思われますが,ファイルフォーマットの 構成は全く異なります.詳しくは,第 7 章で詳しく解説します. 以上で,VHDL のソースコードからパターンレイアウト作成までの流れを解説しました. 17 ページの図 5.1 の左側に書いてあるプログラム “Lynx” は,仮想配置である.ap ファイル及び実配置である.cif ファ イルを入力ファイルとして,ネットリストである.vst ファイルを出力するプログラムです.テクノロジーファイルには Lynx に関するパラメータがあるので,ここに掲載しました.詳しくは($ man lynx)を参照して下さい. 26 第5章 図 5.4: Dreal で equal.cif ファイルを開いた状態 Alliance4.0.6 のチュートリアル 図 5.5: Dreal でサブセルであるインバータ回路も含めて全 て表示した状態 テクノロジーファイルを書き換えるためには,s2r の入力及び出力ファイルのフォーマットを理解しなくてはなりませ ん.第 6 章では仮想配置である ap フォーマットと Graal,第 7 章で実配置である cif フォーマットと Dreal,Magic,第 8 章で Alliance Ver.5 と変換プログラムである s2r,第 9 章でテクノロジーファイルについて解説していきます.第 10 章 では実際に Magic に合わせたテクノロジーファイルの修正をしていきます(図 5.6).そして,第 11 章では修正結果を 掲載しています. 5.7. Dreal 27 Technology File .rds Chapter 9,10,11 MBK RDS .ap Format Graal CIF Format, Dreal, Magic Chapter 6 s2r Chapter 8 Chapter 7 図 5.6: 本ドキュメントの構成 29 第 6 章 仮想配置 6.1 概要 仮想配置は “MBK”,“Symbolic” とも呼ばれ,領域の軸の位置と長さのみを決めた形式です.又,.ap フォーマットは, Alliance の仮想配置のフォーマットで,“Alliance Physical format” の略です.“Graal” で表示された領域は,ap ファイ ルと s2r,Dreal でも使用される Alliance のテクノロジーファイル(∼.rds)に依存します.よって,ap ファイルを変更 しなくても,テクノロジーファイルの値を変更することで,Graal で表示されるレイアウトが変化します. .ap ファイルはネットリストである .vst ファイルを “scr” でセルライブラリを配置配線し,仮想配置として出力する ことで得られます.又, .ap ファイルは “s2r” の入力ファイルとして使用され,実配置である .cif ファイルに変換され ます.図 6.1 より確認して下さい. .ap ファイルは ASCII フォーマットなので,エディタで編集することが可能です.本章では,まず,Graal の使用方法 について述べてから,第 5 章で作成した equal.ap ファイルを解析し,ap ファイルのトレースができるようになることを 目標とします.トレースができるようになると,GUI 上で気になる領域があった場合に直接ファイルを調べることが可 能になります.又,テクノロジーファイルを書く際にも各レイヤごとに見分けがつけば,作成も楽になります.一通り フォーマットについて解説したら,Graal を使用してレイアウトを描画する方法について解説します. 尚,Alliance Ver.4.0.6 を使用しているので,Ver.5 ではフォーマットの形式が多少異なります. .vst format scr Graal druc .ap format s2r .cif format Editor 図 6.1: .ap ファイルの流れ.本章では,色の付いている部分について解説します. 6.2 仮想配置の関連マニュアル $ man mbk 仮想配置の概要について記載されています. $ man prol $ man ap MBK レイヤについて記載されています.第 9 章で詳しく扱います. ap フォーマットについてのマニュアルなのですが,Alliance Ver.2 系統のものなので内容がかなり異なり, あまり参考にならないかもしれません. 30 第6章 $ man graal 6.3 仮想配置 Graal の使用方法について記載されています. Graal の使用方法 1 “Graal” は,仮想配置である .ap ファイルをグラフィカルに表示するためのプログラムです.ここでは,Graal の使 用方法を簡単に説明します.詳しくは,Graal のマニュアル($ man graal)を参照して下さい.また,本章の 53 ページ より,ap フォーマットを理解した上でもう少し詳しく解説しています. .ap ファイルそのものには領域の範囲を記述するのではなく,領域の軸と長さを記述しています.そのファイルを Graal で表示する際に,“s2r”,“Dreal” にも使用されている RDS TECHNO NAME に指定された.rds のテクノロジーファイル を使用しています.又,Graal で実際にレイアウトを作成する場合には GRAAL TECHNO NAME に指定された Graal のテクノロジーファイルを使用します.その情報は,Graal を実行後,メニューバーの Setup→Information で,確認 できます. ファイルを開く ファイルを開く場合には,メニューバーの File→Open を実行します. この時に表示されるウィンドウの右下にある Library を選択すると,セルライブラリのあるディレクトリの場所を確 認できます. 起動時にファイルを指定したい場合には, $ graal -l file のように,オプション [-l] を使用します.file に拡張子.ap は入力しません. サブセルを表示する ファイルを開いた時には,トップセルしか表示されません. サブセルを表示したい場合には,Tools→Flat を選択し,表示したいサブセルを選択します.又,表示したサブセル を非表示にしたい場合には,Tools→Unflat を選択し,非表示にしたいサブセルを選択します. サブセルのうち,指定した範囲のみ表示したい場合には,Tools→Peek を選択し,表示したい範囲をドラッグして囲 みます.Peek 設定を止めたい場合には Tools→Unpeek を選択します. 位置を確認する Graal のメインウィンドウの下には,カーソルの現在地が表示されます.左から, x: y: Dx: Dy: となっています.x,y はマウスの座標です.Dx,Dy は,始点を決めてクリックすると,その場所を (0, 0) として,距 離を測ります. Edit→Identify を選択し,領域をクリックすると,その領域の情報が表示されます.今の時点では情報の内容がわか らないと思いますので,本章を読み終わった後にもう一度試して見て下さい.尚,サブセルの情報は表示されません. レイヤを見やすくする機能 レイヤが重なっていて見づらい箇所には,レイヤウィンドウを表示し,レイアウトウィンドウの特定のレイヤのみ表 示させたり,アウトラインのみ表示させたりできます.レイヤウィンドウは,メニューバーの View→Layer を選択す ると表示されます(図 6.2). レイヤウィンドウの左上の “All visible” はレイヤを全て表示,右上の “All Invisible” は,レイヤを全て非表示にします. 一つのレイヤのみ表示させたい場合などは一度 “All Invisible” をクリックして,各レイヤ名を右側に表示した後,表 示させたいレイヤを左側に表示して “Apply” をクリックします. 左下の “Pattern” をクリックすると,“Outline”,“Fill”,と切り替わります.Pattern は全レイヤが半透明で表示され ている状態,Outline は全レイヤが Box 宣言の外枠のみ表示されている状態,Fill は,全レイヤに色を付け,真上から見 た状態です.Outline 表示にして,特定のレイヤのみ表示させることにより,トレースがやりやすくなるでしょう.又, Fill 表示にしてレイヤを上から順番に非表示にすることで,各レイヤの繋がりを確認することができます. 6.3. Graal の使用方法 1 31 図 6.2: レイヤウィンドウ 32 第6章 仮想配置 “No String Box” とは,ラベルの下を透過しますが,少し読みづらいかもしれません.ラベルのトレースをしたい場合 は一度クリックして “String Box” にすると,ラベルの下が黒くなり,文字が読みやすくなります.その代わり,領域の トレースは,やり辛いでしょう. “Scale” は,1 マス辺りのスケールを変更します.Dx,Dy を見ながら確認してみて下さい. 6.4 .ap ファイルのトレース ここでは第 5 章のチュートリアルで作成した equal.ap ファイルを用いて,各宣言の意味と,トレース方法について解 説します. 第 5 章で作成した a = b という回路は,内部的には not 回路を 2 度反転させることで実現しています(図 6.3).この 回路がおそらく,Alliance で VHDL から論理合成できる最小の回路だと考えられます.not 回路単体では,“scr” でレイ アウトを配置する際に電源電圧などの配線の片側のみに回路を生成しようとし,実行中にストップしてしまうようです. ちなみに Ver.5 では,scr は無くなりました(81 ページ). a b auxsc1 (inv_x1) b (inv_x1) 図 6.3: 回路 a = b の内部構成 この図 6.3 のように,入力は “a”,出力は “b”,not 回路は inv x1 という名前のセルライブラリを使用し,その名前 (ラベル)をそれぞれ “auxsc1”,“b” としています.このラベルは SCMAP で宣言されています.以下に,equal.ap 及 び,inv x1.ap ファイルを載せます.尚,各行の左の数字は,行数を示していますが,便宜上のもので実際には表示され ません. equal.ap ファイルは,この回路のトップセルとなり,a,b,及び,電源電圧,グランド電圧,配線が宣言されています. 又,inv x1.ap ファイルは,equal.ap ファイルに呼び出されるサブセルであり,環境変数 “MBK CATA LIB” に指定され たセルライブラリ “sxlib” というディレクトリ内にあります.トップセル以外は全てセルライブラリを使用します. equal.ap ファイル 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 V H A C C C C C C C C C C S S S S ALLIANCE : 4 equal,P,24/10/2002,100 0,0,5000,6100 2850,0,300,vss,0,SOUTH,ALU2 2150,0,300,vdd,0,SOUTH,ALU2 2850,6100,300,vss,3,NORTH,ALU2 2150,6100,300,vdd,3,NORTH,ALU2 5000,1100,600,vss,2,EAST,ALU1 5000,5500,600,vdd,2,EAST,ALU1 0,1100,600,vss,1,WEST,ALU1 0,5500,600,vdd,1,WEST,ALU1 500,0,200,a,0,SOUTH,ALU2 4500,0,200,b,0,SOUTH,ALU2 1000,400,4000,400,200,auxsc1,RIGHT,ALU1 500,0,500,3300,200,a,UP,ALU2 1000,400,1000,3300,200,auxsc1,UP,ALU2 4000,400,4000,3300,200,auxsc1,UP,ALU2 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 S S S S S S S S S S S S S I I V V 4500,0,4500,3300,200,b,UP,ALU2 2850,0,2850,6100,300,vss,UP,ALU2 2150,0,2150,6100,300,vdd,UP,ALU2 2800,1100,2900,1100,600,*,RIGHT,ALU2 2800,1100,2900,1100,600,*,RIGHT,ALU1 2850,900,2850,1300,300,*,UP,ALU2 2850,900,2850,1300,300,*,UP,ALU1 2100,5500,2200,5500,600,*,RIGHT,ALU2 2100,5500,2200,5500,600,*,RIGHT,ALU1 2150,5300,2150,5700,300,*,UP,ALU2 2150,5300,2150,5700,300,*,UP,ALU1 1500,5500,3500,5500,600,vdd,RIGHT,ALU1 1500,1100,3500,1100,600,vss,RIGHT,ALU1 0,800,inv_x1,auxsc1,NOSYM 3500,800,inv_x1,b,NOSYM 1000,400,CONT_VIA 4000,400,CONT_VIA 6.5. 宣言の種類 35 36 37 38 V V V V 4000,3300,CONT_VIA 4500,3300,CONT_VIA 500,3300,CONT_VIA 1000,3300,CONT_VIA 33 39 V 2850,1100,CONT_VIA 40 V 2150,5500,CONT_VIA 41 EOF inv x1.ap ファイル 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 V H A C C C C R R R R R R R R R R R R R R S ALLIANCE : 4 inv_x1,P,31/ 7/99,100 0,0,1500,5000 1500,4700,600,vdd,1,EAST,ALU1 1500,300,600,vss,1,EAST,ALU1 0,4700,600,vdd,0,WEST,ALU1 0,300,600,vss,0,WEST,ALU1 1000,4000,ref_con,nq_40 1000,3500,ref_con,nq_35 1000,3000,ref_con,nq_30 1000,2500,ref_con,nq_25 1000,2000,ref_con,nq_20 1000,1500,ref_con,nq_15 1000,1000,ref_con,nq_10 500,1000,ref_con,i_10 500,1500,ref_con,i_15 500,2000,ref_con,i_20 500,2500,ref_con,i_25 500,3000,ref_con,i_30 500,3500,ref_con,i_35 500,4000,ref_con,i_40 1000,1000,1000,4000,200,*,DOWN,ALU1 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 S 1000,2800,1000,3700,300,*,DOWN,PDIF S 700,2600,700,3900,100,*,UP,PTRANS S 1000,800,1000,1200,300,*,UP,NDIF S 700,600,700,1400,100,*,DOWN,NTRANS S 0,300,1500,300,600,*,RIGHT,ALU1 S 0,4700,1500,4700,600,*,RIGHT,ALU1 S 400,2000,700,2000,300,*,RIGHT,POLY S 700,1400,700,2600,100,*,UP,POLY S 500,1000,500,4000,100,*,DOWN,ALU1 S 0,3900,1500,3900,2400,*,RIGHT,NWELL S 350,400,350,1200,400,*,UP,NDIF S 350,2800,350,4600,400,*,DOWN,PDIF V 1000,3000,CONT_DIF_P V 400,4500,CONT_DIF_P V 1000,3500,CONT_DIF_P V 400,500,CONT_DIF_N V 1000,1000,CONT_DIF_N V 500,2000,CONT_POLY V 1000,4700,CONT_BODY_N V 1000,300,CONT_BODY_P EOF まず,“Graal” で equal.ap ファイルを開くと,図 6.4 のように表示されます. 次に,Tools→Flat を選択し,表示したいサブセルを選択します.すると,図 6.5 のように表示されます.全範囲表 示したい場合は,トップセルの全領域を囲むようにドラッグします. 尚,チュートリアルと同様に RDS TECHNO NAME には,cmos 8.rds を設定しています. Tools→Hierarchy を選択して階層ウィンドウを表示し,“Go Down” を選択してサブセルを選択すると,サブセル である inv x1.ap ファイルのみを表示させることができます. (図 6.6).このときにトップセルでサブセルを Flat 表示に していた場合はサブセルのみの表示はできません. 親セルに戻りたい場合には,“Go Up” を選択します. ここからは,実際にファイルをトレースしていきます. 6.5 宣言の種類 .ap フォーマットの宣言の種類は次の通りです. ($man mbk)も参照して下さい. V H A S C I R : : : : : : : Version,Via(Contact) Header Abutment Box Segment Connector Instance Reference 以下,各宣言についての説明と,実際に equal.ap,inv x1.ap ファイルでどのように使用されているかを解説します. 34 第6章 仮想配置 図 6.4: equal.ap ファイルを Graal で表示させた状態.トッ 図 6.5: equal.ap ファイルをサブセルまで全て表示した状態. プセル(equal.ap)のみ表示されます. 6.5.1 サブセル(inv x1.ap)も表示されます. V : Version 主に最初の行に宣言されています.equal.ap,inv x1.ap 共に 1 行目には V ALLIANCE : 4 と記述されています.これは,Alliance の Version が 4 であることを示していると思います.Ver.5 では,4 の代わりに 5 ではなく 6 と表示されています. 6.5.2 H : Header H はヘッダー情報であり,主に Version の次の行に宣言されています(equal.ap 2 行目,inv x1.ap 2 行目).equal.ap では, H equal,P,24/10/2002/100 と記述されていますが,これは,equal という名前のファイルを 2002 年 10 月 24 日に作成し,1 マス(1λ)の幅が 100 であることを示しています(P については不明).ファイル名を変更してテストしたい場合は,ヘッダ部分も変更する必 要があります.このファイル名は,そのままトップセルの名前となっています. 6.5.3 A : Abutment Box A は Abutment Box であり,各セルの外枠を指定しています.又,宣言 “I” でサブセルを呼び出す時にも使用します. 領域は枠からはみ出ていると,呼び出し元のセルと被るので気を付けて下さい. この宣言の一般的な型は 6.5. 宣言の種類 35 図 6.6: サブセルである inv x1.ap ファイルのみを直接表示した状態 36 第6章 仮想配置 A x1 , y1 , x2 , y2 となります(図 6.7). (x2,y2) (x1,y1) 図 6.7: Abutment Box の宣言 equal.ap の 3 行目 A 0,0,5000,6100 は,座標が (0, 0) から (50, 61) までであることを示しています.これを実際に表示させるために,次のように,必要部分 以外を削除したファイルを用意しました. V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 EOF このファイルは,equal.ap ファイルの 1,2,3,41 行目の V,H,A,EOF のみを抽出したものです.Graal で画面に 表示すると,図 6.8 のようになります.Abutment Box はサブセルのものであっても,常に画面に表示されます. 6.5. 宣言の種類 37 図 6.8: セルの枠である Abutment Box とセル名のみ画面に出力されます 38 第6章 6.5.4 仮想配置 S : Segment S は,Segment の略です.型は, S x1 , y1 , x2 , y2 , ws , N ame, Direction, Layer となります.これは,仮想配置が座標 (x1 , y1 ),(x2 , y2 ) を結ぶ軸であることを示しています.ws(Symbolic Width)は 仮想幅であり,実際の幅はテクノロジーファイルと変換公式を使用して値を求めます(詳しくは第 9 章で解説します). Name は,領域のラベルです.ラベルを付けない場合は “*” とします.Direction は方向であり,Segment では “UP”, “DOWN”,“LEFT”,“RIGHT”,で指定します(Connector の宣言では “NORTH”,“SOUTH”,“EAST”,“WEST” となります).Direction は,始点から終点への方向を示していて,それぞれ変換公式が異なります.必ず (x1 , y1 ) は左 下寄り,(x2 , y2 ) は右上寄りになります.よって,Direction が DOWN 又は LEFT の場合は (x2 , y2 ) が始点になるので 注意して下さい.最後の Layer はレイヤの種類を宣言します.宣言できるレイヤは, ($ man prol)の “Mbk layers” に意 味と共に掲載されています.そのうち実際に使用される可能性のあるレイヤは,“cmos 7.graal” 等(∼.graal)のテクノ ロジーファイル内の “Segment Panel Button Label, Foreground , Background Color” 及び,“Transistor Panel Button Label, Foreground, Background Color” に記述されています. # # # # # /*------------------------------------------------------------\ | | | Segment Panel Button Label, Foreground , Background Color | | | \------------------------------------------------------------*/ TABLE GRAAL_SEGMENT_NAME NWELL PWELL NDIF PDIF NTIE PTIE POLY ALU1 ALU2 ALU3 ALU4 ALU5 ALU6 TPOLY TALU1 TALU2 TALU3 TALU4 TALU5 TALU6 Nwell Pwell Ndif Pdif Ntie Ptie Poly Alu1 Alu2 Alu3 Alu4 Alu5 Alu6 Tpoly Talu1 Talu2 Talu3 Talu4 Talu5 Talu6 tan light_yellow lawn_green yellow spring_green light_goldenrod red royal_blue Cyan light_pink green yellow violet hot_pink royal_blue turquoise light_pink green yellow violet Black Black Black Black Black Black Black Black Black Black Black Black Black Black Black Black Black Black Black Black END # # # # # /*------------------------------------------------------------\ | | | Transistor Panel Button Label, Foreground, Background Color | | | \------------------------------------------------------------*/ TABLE GRAAL_TRANSISTOR_NAME NTRANS PTRANS Ntrans lawn_green Ptrans yellow Black Black 6.5. 宣言の種類 39 END このように,仮想配置の場合は,Transistor,Diffusion は単体で宣言されます(実配置時には Transistor は Polysillicon, Active,Implant,Well の 4 種類のレイヤ別々に宣言されます).ちなみに,Alliance では Metal1 を ALU1 と表します. ALU1 はアルミ 1 の略です.Ver.5 では CALU1∼6(おそらく Connector ALU)と POLY2 が追加されます.実際にど のようにしてレイアウトが決定されるかについては第 9 章で解説します. 例えば, S 200,300,200,500,100,*,UP,ALU1 は,図 6.9 のようになります.H 宣言で 1 マス(1λ)の幅が 100 になっているので,値は 100 の倍数になっているのが わかります. real Width Real Length (2 ,5) ls (2, 3) 図 6.9: 始点が (2, 3),終点が (2, 5),仮想幅 ws が 1,ラベルは未設定,方向は上(UP),レイヤは ALU1 となります. 矢印の根本が始点,先端が終点です.始点から終点までの距離は ls(Symbolic Length)と言います.ここでは ls = 2 で す.wr (Real Width),lr (Real Length)は S 宣言の値と.rds の値を元に変換公式で算出されます. ここで注意することは,仮想配置は軸の位置と長さ,仮想幅を設定しているに過ぎないということです.Graal では領 域が表示されていますが,これは環境変数 RDS TECHNO NAME に指定されたテクノロジーファイル(拡張子は.rds) に記述されているパラメータと変換公式で算出した値を表示しているのであって,.ap ファイルそのものには長方形の領 域情報は存在しません.よって,.ap ファイルの値を変えなくてもテクノロジーファイルのパラメータを変えると Graal でのレイアウトは変化します. ここに出てくる仮想幅は,テクノロジーファイルと変換公式に使用されるパラメータであり,各領域別々の値です. Graal で領域を表示する時や s2r を使用して実配置に変換する際に使用されます.詳しくは第 9 章で説明するので,まだ 意識する必要はありません.一般的に電源(vdd,vss)等は値が大きくなります. 次のファイルは equal.ap から V,H,A,S のみを抽出したものです.これを Graal で表示すると図 6.10 のようにな ります. V H A S S S S S S S S S S ALLIANCE : 4 equal,P,24/10/2002,100 0,0,5000,6100 1000,400,4000,400,200,auxsc1,RIGHT,ALU1 500,0,500,3300,200,a,UP,ALU2 1000,400,1000,3300,200,auxsc1,UP,ALU2 4000,400,4000,3300,200,auxsc1,UP,ALU2 4500,0,4500,3300,200,b,UP,ALU2 2850,0,2850,6100,300,vss,UP,ALU2 2150,0,2150,6100,300,vdd,UP,ALU2 2800,1100,2900,1100,600,*,RIGHT,ALU2 2800,1100,2900,1100,600,*,RIGHT,ALU1 2850,900,2850,1300,300,*,UP,ALU2 40 第6章 S 2850,900,2850,1300,300,*,UP,ALU1 S 2100,5500,2200,5500,600,*,RIGHT,ALU2 S 2100,5500,2200,5500,600,*,RIGHT,ALU1 S 2150,5300,2150,5700,300,*,UP,ALU2 S 2150,5300,2150,5700,300,*,UP,ALU1 S 1500,5500,3500,5500,600,vdd,RIGHT,ALU1 S 1500,1100,3500,1100,600,vss,RIGHT,ALU1 EOF 図 6.10: レイヤの種類は ALU1,ALU2 のみ.一部の領域にはラベルがついています. 同様に,次のファイルは inv x1.ap から抽出したものであり,図 6.11 のように表示されます. V H A S S S S S S S S S S S S ALLIANCE : 4 inv_x1,P,31/ 7/99,100 0,0,1500,5000 1000,1000,1000,4000,200,*,DOWN,ALU1 1000,2800,1000,3700,300,*,DOWN,PDIF 700,2600,700,3900,100,*,UP,PTRANS 1000,800,1000,1200,300,*,UP,NDIF 700,600,700,1400,100,*,DOWN,NTRANS 0,300,1500,300,600,*,RIGHT,ALU1 0,4700,1500,4700,600,*,RIGHT,ALU1 400,2000,700,2000,300,*,RIGHT,POLY 700,1400,700,2600,100,*,UP,POLY 500,1000,500,4000,100,*,DOWN,ALU1 0,3900,1500,3900,2400,*,RIGHT,NWELL 350,400,350,1200,400,*,UP,NDIF 仮想配置 6.5. 宣言の種類 41 S 350,2800,350,4600,400,*,DOWN,PDIF EOF 又,図 6.11 をアウトライン表示にすると,図 6.12 のようになります. 図 6.10 と equal.ap ファイルに宣言されているように,トップセルでは主に,各セルの配線をしています.ラベルと方 向を見れば,トレースしやすいでしょう.又,図 6.12 と inv x1.ap ファイルにあるように,Transistor は,Transistor 単 体で宣言されています.Transistor の構成はテクノロジーファイルに記述されています.このレイアウトは変換公式を使 用した値を画面に表示しているのであり,.ap ファイルに記述されている領域の軸は直接画面には表示されません. 図 6.11: equal.ap ファイルの A,S 宣言のみを表示した状態 図 6.12: 領域の軸は画面には表示されません. 42 第6章 6.5.5 仮想配置 C : Connector C は Connector の略です.ネットリストの終端を示していて,他のセルとの接続点に宣言します.型は, C x, y, ws , N ame, N umber, Orientation, Layer となります. (x, y) w Abutment Box 図 6.13: Connector 図 6.13 のように,Connector は,Segment のように座標を始点と終点の 2 つに分けるのではなく,領域の中心に宣言 します.Segment 宣言と同様 ws は,仮想幅であり実際の幅はテクノロジーファイルのパラメータと変換公式により決定 します.幅は (x, y) を中心に,Abutment Box の線に沿った方向に広がります.Name はラベルです.“0” から始まり, 同じラベル名の場合にはこの数字をインクリメントします.行の順番は関係ないと思います. Orientation は,Abutment Box を基準にした方向であり,“NORTH”,“SOUTH”,“EAST”,“WEST” で宣言され ます.例えば,Abutment Box の下に Connector を宣言する場合は Direction の値は SOUTH となります.Layer には ALU1 もしくは ALU2 が宣言されます. 次のファイルは equal.ap から V,H,A,C のみを抽出したものです.これを Graal で表示すると図 6.14 のようにな ります. V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 C 2850,0,300,vss,0,SOUTH,ALU2 C 2150,0,300,vdd,0,SOUTH,ALU2 C 2850,6100,300,vss,3,NORTH,ALU2 C 2150,6100,300,vdd,3,NORTH,ALU2 C 5000,1100,600,vss,2,EAST,ALU1 C 5000,5500,600,vdd,2,EAST,ALU1 C 0,1100,600,vss,1,WEST,ALU1 C 0,5500,600,vdd,1,WEST,ALU1 C 500,0,200,a,0,SOUTH,ALU2 C 4500,0,200,b,0,SOUTH,ALU2 EOF 同様に,次のファイルは inv x1.ap から抽出したものであり,図 6.15 のように表示されます. V ALLIANCE : 4 H inv_x1,P,31/ 7/99,100 A 0,0,1500,5000 C 1500,4700,600,vdd,1,EAST,ALU1 C 1500,300,600,vss,1,EAST,ALU1 C 0,4700,600,vdd,0,WEST,ALU1 C 0,300,600,vss,0,WEST,ALU1 EOF 6.5. 宣言の種類 図 6.14: SOUTH には,入出力端子もあります 43 図 6.15: EAST,WEST しかありません.これらは電源電圧 になります. 44 第6章 6.5.6 仮想配置 I : Instance I は Instance の略であり,サブセルを Instance(実体)として呼び出す際に宣言します.宣言の型は, I x, y, Cellname, Instance name, Sym となります.ここで,x, y は呼び出し元のセルの座標,Cellname は呼び出されるサブセルのファイル名(拡張子 .ap はいりません),Instance name は呼び出したサブセルにつけるラベル,Sym は向きです(図 6.16).サブセルは環境 変数 MBK CATAL NAME に指定されているかカレントディレクトリになければなりません. Abutment Box (x, y) 図 6.16: 外枠は呼び出し元,内枠は呼び出された側(サブセル)の Abutment Box です.呼び出し元のセルの座標 (x, y) にサブセルの Abutment Box の左下の座標(主に (0, 0))が重なります. Sym の変数は 8 種類あります(表 6.1).基本的には ROT P,M 及び SY RP,M は使用しません. 次のファイルは equal.ap から V,H,A,C のみを抽出したものです.これを Graal で表示すると図 6.17 のようにな ります. V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 I 0,800,inv_x1,auxsc1,NOSYM I 3500,800,inv_x1,b,NOSYM EOF 変数名 意味 図の番号 NOSYM 変更しない 6.18 左 SYM X X 軸反転 6.19 左 SYM Y Y 軸反転 6.19 右 SYMXY XY 軸反転 6.18 右 ROT P 左に 90 °回転 6.20 左 ROT M 右に 90 °回転 6.20 右 SY RP Y 軸反転後,左に 90 °回転 6.21 左 SY RM Y 軸反転後,右に 90 °回転 6.21 右 表 6.1: Sym の変数の種類 6.5. 宣言の種類 45 図 6.17: 左の枠には座標 (0, 8) 上に “auxsc1” と言うラベル名を付けたサブセル inv x1 の Abutment Box の左下 (0, 0) を重ね合わせるように配置しています.右の枠には,座標 (35, 8) 上に “b” と言うラベルを付けたサブセル inv x1 の Abutment Box の左下 (0, 0) を重ね合わせるように配置しています.Tools→Flat で,サブセルの内容を表示しなくて も,Connector,Abutment Box,Reference は最初から表示されます. 46 第6章 仮想配置 Sym を変更した場合 左のサブセルの Sym を NOSYM に,右を SYMXY にしてサブセルを表示すると,図 6.18 のようになります. V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 I 0,800,inv_x1,auxsc1,NOSYM I 3500,800,inv_x1,b,SYMXY EOF 左のサブセルの Sym を SYM X に,右を SYM Y にした場合(図 6.19). V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 I 0,800,inv_x1,auxsc1,SYM_X I 3500,800,inv_x1,b,SYM_Y EOF 左のサブセルの Sym を ROT P に,右を ROT M にした場合(図 6.20). V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 I 0,800,inv_x1,auxsc1,ROT_P I 3500,800,inv_x1,b,ROT_M EOF 左のサブセルの Sym を SY RP に,右を SY RM にした場合(図 6.21). V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 I 0,800,inv_x1,auxsc1,SY_RP I 3500,800,inv_x1,b,SY_RM EOF 6.5. 宣言の種類 図 6.18: サブセルの内容を表示した状態.左はそのまま.右 は X 軸 Y 軸反転 47 図 6.19: 左のサブセルは X 軸反転,右は Y 軸反転 48 第6章 仮想配置 図 6.20: 左のサブセルは左に 90◦ 回転,右のサブセルは右に 90◦ 回転.サブセルは親セルが指定した座標の右上に配置 されるので,右のサブセルは親セルの Abutment Box からはみ出ています. 図 6.21: 左のサブセルは Y 軸反転後に左に 90◦ 回転,右のサブセルは Y 軸反転後に右に 90◦ 回転 6.5. 宣言の種類 49 基本的にサブセル側の Abutment Box の左下の点は (0, 0) となります.この点の位置を変更すると,Graal で表示した 時にレイアウトが崩れるので注意して下さい. 例えば,inv x1.ap ファイルの 3 行目を A 0,0,1500,5000 から, A 300,500,1500,5000 に変更すると,Abutment Box の左下の座標の位置が (0, 0) から (3, 5) に代わり,図 6.22 のようになります. 図 6.22: 図 6.6 と比べ,Abutment Box が内側に寄っています このファイルを equal.ap が読み込むと,図 6.23,6.24 のようになります. 50 第6章 図 6.23: Connector がずれているのがわかります. 仮想配置 図 6.24: inv x1.ap ファイルの Abutment Box の左下の座標 (3, 5)(本来なら (0, 0))を Instance 宣言で指定した位置に配 置するので,サブセルが左下方向にずれています. 6.5. 宣言の種類 6.5.7 51 R : Reference “R” は Reference の略です.Reference はメタル 1 の上に配置され,Ref の上に VIA を設置し,メタル 2 を配線しま す.要は入出力のコネクタ宣言の一種だと思っていて下さい.詳しい解説は 84 ページで行います.R の宣言の型は, R x, y, Contact, Label です.x, y は,中心の座標 (x, y),Contact は “ref con” か “ref ref” を設定します.Ver.4 のセルライブラリには ref con, Ver.5 では ref ref が使用されています.Label にはコンタクトのラベルを宣言します.ラベルを宣言しないと描画できま せん. 次のファイルは inv x1.ap から V,H,A,R のみを抽出したものです.equal.ap ファイルでは使用されていませんが, equal.ap ファイルを Graal で表示すると,inv x1.ap の内容を表示しなくても R は画面に表示されます(32 ページ図 6.4, 43 ページ図 6.17).これを Graal で表示すると図 6.25 のようになります. V ALLIANCE : 4 H inv_x1,P,31/ 7/99,100 A 0,0,1500,5000 R 1000,4000,ref_con,nq_40 R 1000,3500,ref_con,nq_35 R 1000,3000,ref_con,nq_30 R 1000,2500,ref_con,nq_25 R 1000,2000,ref_con,nq_20 R 1000,1500,ref_con,nq_15 R 1000,1000,ref_con,nq_10 R 500,1000,ref_con,i_10 R 500,1500,ref_con,i_15 R 500,2000,ref_con,i_20 R 500,2500,ref_con,i_25 R 500,3000,ref_con,i_30 R 500,3500,ref_con,i_35 R 500,4000,ref_con,i_40 EOF 52 第6章 仮想配置 図 6.25: inv x1.ap において,A,R のみ表示した状態.この例でのラベルの右の数字は,Y 軸の高さを表しています. 6.5. 宣言の種類 6.5.8 53 V: V は 1 行目には Version の意味で使いますが,それ以外の行では Via の略として(多分)コンタクトの宣言に使用し ています. 宣言の型は, V x,y,CONT Name となります.x, y はコンタクトの中心の座標,CONT Name は CONT までは同じで,N ame の部分にはコンタクトの 種類を宣言します.コンタクトの種類は, ($ man prol)の “Mbk patterns” にありますが,実際に使用可能なレイヤは Graal のテクノロジーファイル(今回は cmos 7.graal)の “Via Panel Button Label, Foreground , Background Color” に掲載されています. # # # # # /*------------------------------------------------------------\ | | | Via Panel Button Label, Foreground , Background Color | | | \------------------------------------------------------------*/ TABLE GRAAL_VIA_NAME CONT_DIF_N CONT_DIF_P CONT_BODY_N CONT_BODY_P CONT_POLY CONT_VIA CONT_VIA2 CONT_VIA3 CONT_VIA4 CONT_VIA5 C_X_N C_X_P Cont_NDif Cont_PDif Cont_NTie Cont_PTie Cont_Poly Via_1-2 Via_2-3 Via_3-4 Via_4-5 Via_5-6 Cont_CxN Cont_CxP lawn_green yellow spring_green light_goldenrod red cyan light_pink green yellow violet orange orange Black Black Black Black Black Black Black Black Black Black Black Black END CONT BODY P は P-Well コンタクト,CONT BODY N は N-Well コンタクトを表しています(C X N,C X P の 使い方は不明). 次のファイルは equal.ap から V,H,A,V のみを抽出したものです.これを Graal で表示すると図 6.26 のようにな ります. V ALLIANCE : 4 H equal,P,24/10/2002,100 A 0,0,5000,6100 V 1000,400,CONT_VIA V 4000,400,CONT_VIA V 4000,3300,CONT_VIA V 4500,3300,CONT_VIA V 500,3300,CONT_VIA V 1000,3300,CONT_VIA V 2850,1100,CONT_VIA V 2150,5500,CONT_VIA EOF 同様に,次のファイルは inv x1.ap から抽出したものであり,図 6.27 のように表示されます. V ALLIANCE : 4 54 第6章 仮想配置 H inv_x1,P,31/ 7/99,100 A 0,0,1500,5000 V 1000,3000,CONT_DIF_P V 400,4500,CONT_DIF_P V 1000,3500,CONT_DIF_P V 400,500,CONT_DIF_N V 1000,1000,CONT_DIF_N V 500,2000,CONT_POLY V 1000,4700,CONT_BODY_N V 1000,300,CONT_BODY_P EOF 図 6.26: Segment が ALU1 と ALU2 のみなので,コンタク 図 6.27: 各レイヤと Alu1(Metal1)を繋ぐコンタクトが配 トの種類も VIA だけです. 置されています. 6.6. Graal の使用方法 2 6.6 55 Graal の使用方法 2 ここまでで ap フォーマットの記述がわかったところで,Graal の他の機能について解説します. 6.6.1 Graal を使用したレイアウト描画 Graal で領域を描画するには,メニューバーの Creat から,描画したいレイヤのウィンドウを表示させます. Instance サブセルを呼び出します.Instance を選択するとまず呼び出すサブセルの方向(Sym)を決定します.そ して,配置したい場所でカーソルをクリックすると,サブセルを選択する画面が表示されます.セルを決定すると,ク リックした場所の右上にセルが表示されます. Abutment Box Abutment Box はセルの範囲を表すので,各 ap ファイルに一つしか作成できません. Segment,Transistor Creat→Segment,Creat→Transistor を選択した場合には各ウィンドウに Width,Name,Simple という 3 つの項目があります(図 6.28). 図 6.28: Segment ウィンドウ Width は仮想幅です.設定しない場合には,Graal のテクノロジーファイルに記述されている値が使用されます.Name は,ラベルです.Simple ボタンはクリックすると Wire に変わります.普段は Simple 設定ですが,Wire にした場合は, 描画する際に終点を決めると,その点がそのまま始点となります.Wire 設定にすることで,軸をずらさずに描画するこ とができます.ポリシリコンを描画する際に使用すると良いかもしれません. 56 第6章 仮想配置 Segment と Transistor を選択した場合には,軸の始点と終点を選択するとその周囲に自動的に領域が描画されます.こ の領域の大きさを設定する方法は第 9 章で解説します. Via コンタクトを描画する際に使用します. Connector Connector は Abutment Box を作成していないと生成できません. Reference Reference は必ずラベルを設定しなければなりません. 6.6.2 レイアウトの修正 作成したレイアウトを修正するには,メニューバーの Edit と Window を使用します.それぞれの違いは,Edit は 領域単体を選択するのに対して,Window は領域の範囲を選択します.いくつかの領域を同時に操作したい場合には Window を選択すると良いでしょう.ただしそれぞれの操作において,Window の場合は少し癖があるので,注意し て下さい. Undo 一つ前の状態に戻します. Redo 一つ後の状態に進めます.一回以上 Undo を実行していなければいけません. Copy 領域をコピーします.Copy を選択してからコピーしたい領域を選択し,コピーしたい場所を指定します. Move 領域を移動します.Move を選択してから移動したい領域を選択し,移動先を指定します. Delete 領域を削除します.Delete を選択してから削除したい領域を指定します. Stretch 領域の長さを調節します.Stretch を選択してから伸ばしたい領域を選択して,長さを調節します.決定する まで表示しないのでやや使いづらいと思います.軸方向にしか伸びないので注意して下さい.Abutment Box の場合は 線上にカーソルを合わせます.軸は無いのでどの方向にも調節できます. Modify 指定した領域の内容を修正します.Modify を選択してから変更したい領域を指定します.すると,Modify ウィンドウが表示されるので,修正を加えて Apply をクリックします. 6.6.3 デザインルールチェック デザインルールをチェックするには “Druc”($ man druc)を使用します.Druc は ap フォーマットとテクノロジー ファイル(.rds)に記述されたデザインルールを照らし合わせてエラーを報告します.Druc は単独でも使用できますが, Graal のツールオプションから使用することもできます.この場合にはエラーチェックをしたい範囲を囲うことで Druc がエラーチェックをします. Druc を使用するためにはテクノロジーファイルにエラーチェックをするためのデザインルールを記述しなければなり ません.文法は,166 ページの 11.5 で簡単に解説します. 6.6.4 ショートカットコマンド 操作に慣れてきたら,ショートカットコマンドを使用すると効率が上がることでしょう.ショートカットコマンドは, メニューバーを開いた際に∼の右側に表示されます.ここで,Ctrl∼は Ctrl を押しながら∼ですが,Meta∼は Alt を押 しながら∼と言う意味になります. 57 第 7 章 実配置 7.1 概要 前章では s2r の入力ファイルで仮想配置と.ap フォーマットについて解説しました.本章では,s2r の出力ファイルと なる実配置と.cif フォーマットについて解説します.テクノロジーファイルは ap ファイルから cif ファイルに変換するた めのパラメータを記述するので前章の ap ファイル及び本章の cif ファイルがわかっていると修正も楽になります. 実配置は別名 “RDS(Real Data Structure)”,“Real” とも呼ばれます..ap フォーマットは “Alliance Physical format” と言うだけあって,Alliance 専用のフォーマットですが,CIF(Caltech Intermediate Format)は,マスクレベル レイアウトの変換に使用する標準的なレイアウト記述言語です. Alliance では,VHDL を論理合成した結果を最終的に CIF 形式で出力します.又,Magic1 では,記述したレイアウト を CIF に変換することができます.CIF ファイルは ASCII フォーマットなので,エディタで表示し,編集することもで きます. CIF 形式は Dreal,Magic で表示します(図 7.1).よって,CIF 形式について解説した後,Dreal,Magic の使用方法 を解説し,個別の拡張表記について解説します.本章の最後で実際に CIF ファイルをトレースします. CIF フォーマットについては,Carver Mead, Lynn Conway の “Introduction VLSI Systems” [2] の 115∼127 ページ に詳しく掲載されているので,そちらも参照して下さい. Dreal .ap Format s2r CIF Format Editor Magic 図 7.1: .cif ファイルの流れ.本章では,色の付いている部分について解説します. 7.2 Magic,Alliance 共通のフォーマット形式 7.2.1 記号の説明 DS:Definition Start DF:Definition Finish 9:セル名の宣言 C:Call(サブセルを呼び出し) L:Layer の宣言 1 http://vlsi.cornell.edu/magic/ 58 第 7 章 実配置 B:Box の宣言 T:Call した時にサブセルの位置を決める E, End:終了の宣言.最後の行に記述 ():Comment ;:宣言の終わりを示す 枠組み(DS, DF, E, ;) CIF はセルの内容を DS1; セルの内容; DF; C1; E のように,DS と DF で囲みます.2つのセルがある場合は DS1; セル 1 の内容; DF; DS2; セル 2 の内容; DF; C2; E となります. DS の次の数字はセルの番号です.実際にはセルの番号の次にスケールを宣言します(後述).又,最後の行には E(も しくは End)と宣言します.E 以外の行は終わりに “;” を付けます.“C” については “7.2.1 階層設計” で説明します.こ こでは • DS と DF で囲まず,End の前の行に書く. • 最初に読み込むセルを指定している. という二点がわかれば良いです. 各セルの記述方法((), 9, L, B, ) セルには各領域 (Segment) がどのように配置されているかを宣言します.次の例で説明します. 1 2 3 4 5 6 7 8 9 10 11 (N-Diffusion by Magic); DS 1 50 2; (セルの番号とスケール); 9 ndiff; (セル名); L CWP; (P-Well); B 52 52 6 6; L CAA; (Active); B 12 12 6 6; L CSN; (N_Implant); B 28 28 6 6; DF; 7.2. Magic,Alliance 共通のフォーマット形式 12 13 14 59 C 1; End このセルは,Magic で N-diffusion を最小構成で記述し,CIF 形式で保存したファイルを,エディタで表示したものです. ここでは読み方についてのみ述べます. まず,1 行目の () で囲った中の文はコメントなので無視されます.続いて 3 行目の DS 1 50 2; の “DS 1” は,このセルの番号が 1 であるということです.セルの番号が 2 の場合は “DS 2” となります.又,“50 2” に ついてですが,λ の調整に関係があると考えてください.左の値 50 を 2 倍の 100 にすると,各領域 (Segment) は λ × 2 の大きさとなります.右の値 2 を 1/2 倍の1としても,各領域 (Segment) は λ × 2 の大きさとなります.よって,左右 の値の比を変更しなければ変化は無いようです.Magic では初期設定のままだと “50 2” となります(現在調査中). DS の次の行には,セル名を記述します(4 行目).“9” は,セル名の宣言です. 9 ndiff; は,このセル名が ndiff であることを宣言しています. セル名の 9 を除くと,その次の単語を宣言と誤認してエラーになるようです.例えば, ndiff; とだけ書くと, n diff; と解釈し,n の部分を読み込む際にエラーを出力し,diff というセル名になるようです. 5∼10 行目までは,レイヤの種類と配置する場所,大きさを宣言していきます.まず,5 行目の L CWP; は,それ以下(ここでは 6 行目のみ)の宣言が P-Well についてであることを宣言しています.レイヤは,C で始まる 3 文字の略称で宣言されています. 各レイヤの名前と略称については表 7.1 の通りです2 .ただし,この略称は Magic の初期設定のままなので,略称が変 わることがあります(114 ページ参照). 配置と大きさの宣言には,B (Box),W (Wire),R (Roundflash),P (Polygon) がありますが,Magic,Alliance の 場合長方形を並べて記述しているので,B (Box) ルールのみを使用します3 . Box 宣言は以下のようになります. B length(dx) width(dy) x y; 最初の 2 つのパラメータには,領域(Segment)の長さ dx と幅 dy を,後の 2 つのパラメータには領域(Segment)の 中心点(軸)の位置 (x, y) を数値で記述します(図 7.2). この例の 5, 6 行目の L CWP; B 52 52 6 6; は,長さ 52,幅 52,中心点が (6, 6) となります.ここで注意するのは,この数字はグリッドを基準にしている点です. Magic での初期設定では,1λ = 4 グリッドなので,λ ベースとした場合は値を 4 で割り,中心点は (1.5λ, 1.5λ),長さ x = 13λ,幅 y = 13λ となります(図 7.3 ). 全てのレイヤを表示した状態は 63 ページの図 7.9 を参照して下さい. 同じレイヤを 2 箇所で宣言する際には, 2 MOSIS のデザインルールの HP には,Select として載っていますが,このドキュメントでは Implant に統一しました. R を使用する箇所もあるようです 3 状況によって 60 第 7 章 実配置 表 7.1: マスクレイヤと CIF 形式での略称 CIF 形式での略称 レイヤ名 P Well CWP N Well CWN Polysilicon CPG Polysilicon2 CEL Poly-Contact CCP Metal1 CMF Metal2 CMS VIA CVA N Implant(N+Select) CSN P Implant(P+Select) CSP Active CAA Active-Contact CCA Width:dy Length:dx (0, 0) (x, y) 図 7.2: Box Rule L CPG; B 16 8 8 -4; B 12 12 2 10; (レイヤの種類は適当です); のように,次の行に続けて宣言します.この結果は図 7.4 のように表示されます. ここでは各領域とも軸を書きましたが,実際には表示されません.正確には,ap ファイルのは 2 点の長さなので軸, cif ファイルの場合は 1 点なので重心と言えるでしょう. 又,領域が長方形ではなく,L 字形などの場合は,図 7.5,図 7.6 のように,2 つの Box を接触させるか,交差させる ことで表示させています. 階層設計について(C, T) 階層設計とはそれぞれのセルが他のセルを部品として使用することで,CIF でも階層設計は可能です.CIF では,セ ルの番号を DS の次の値で表すことは 56 ページの “7.2.1 各セルの記述方法” で解説しました.CIF では,まず E (End) の上の行に書いてある C (Call) によって,最上位のセルを呼び出します.セル (DS で始まり DF で終わる) は全て最初 に読み込む C より手前に書かなければならないようです.続けて,呼び出したセル内に書いてある C により,他のセル を呼び出します. 以下にセルが 3 つある場合の一例を示します. DS 1; 9 Cell1; .... DF; 7.2. Magic,Alliance 共通のフォーマット形式 61 (6.6) 6 (1.5 ) 52 (13 ) 6 (0.0)(1.5 ) 52 (13 ) 1 =4 図 7.3: Box Rule (P-Well のみ表示) DS 2; 9 Cell2; .... C1 T40 40; DF; DS 3; 9 Cell3; .... C2 T40 80; C2 T240 80; DF; (10, 10); (10, 20); (60, 20); C3; E ここで,.... はセルの中身です.この例ではまず E の上の行のの C3 を読み,セル 3 (DS 3) を Call します.最初に Call する層は最上位層です.最上位層では主にセルの配線をするようです.続いて,セル 3 (DS 3) の中にセル 2 を 2 つサブ セルとして Call します.各セル 2 はセル 1 を Call します.図 7.7 のようなイメージになります. T は,読み込んだサブセルを呼び出し元のセルのどの位置に配置するかの宣言です.注意する点は,各セルはそれぞ れセルの左下が (0, 0) になるように宣言されていることです.これは,各セルが独立して宣言されているためです.従っ て,そのまま配置したのではセルが被ってしまい,意図していない表示なります. そこで,“T” で呼び出されたサブセルの (0, 0) の点が呼び出し元のセルのどの位置に重なるかを宣言するのです. 例えば, DS 3; .... C2 T40 80; DF; 62 第 7 章 実配置 (2, 10) (0, 0) (8, -4) 図 7.4: 領域を 2 箇所に宣言した場合 (0, 0) L CMF; B 16 16 8 8; B 24 12 12 10; (0, 0) 図 7.5: 領域が重なっている場合の例 L CMF; B 16 16 8 8; B 8 12 20 10; 図 7.6: 領域が接している場合の例 は,セル 3 がセル 2 をサブセルとして呼び出し,セル 2 のセルの左下の座標 (0, 0) がセル 3 の座標 (10, 20) と重なるいう ことを表しています.ここでも数値を 4 で割っています. 又, DS 2; .... C1 T40 40; DF; は,セル 2 の左下の座標を (0, 0) とした時に,セル 1 の座標 (0, 0) がセル 2 の座標 (10, 10) と重なるということを表して います.ここで,セル 2 はセル 3 に呼び出されているので,セル 3 から見た場合のセル 1 はセル 3 の座標 (20, 30) と重 なることになります.図 7.7 とソースコードから,確認してみて下さい. 7.3 Magic を使用した場合の CIF の扱いについて 今回は Magic をデザインルールのチェック及びマスクレイヤの確認のために使用します.使用した Magic のヴァージョ ンは 7.1 です.ダウンロード,インストール方法ついては割愛しますが,インストール時のオプションで cif ファイルの 出力ができるようにチェックしておいて下さい. Magic を使用して領域を描き,Magic 標準フォーマットである .mag 形式で保存した場合と, .cif 形式で保存した場 合とでは,ファイルを開き直したときのレイアウトが違います.その理由は例えば .mag 形式の場合,Diffusion(拡散 層)は実際の領域のみを疑似レイヤとして宣言しますが,それに対して.cif 形式では,Active(活性層),Implant(不純 物層),Well の 3 種類のマスクレイヤに分解して個別に宣言するためです..mag 形式はこれらを疑似レイヤとして扱う ことで,本来ならばオーバーラップを考える必要があるデザインルール(コンタクト,Dffusion 等)も,最小サイズと 7.3. Magic を使用した場合の CIF の扱いについて Cell1 (20, 30) (10, 20) Cell2 63 Cell1 (70, 30) (60, 20) Cell2 Cell3 (0, 0) 図 7.7: 階層構造の概念 スペースルールのみに簡略化できます..mag 形式は Alliance の.ap 形式に相当していると思えば良いでしょう.詳しく は,“Magic Tutorial #2 Basic Painting and Selection” の “11. What the Layers Mean をご覧下さい. 表 7.2 に.mag 形式の疑似レイヤとマスクに分解した .cif 形式のレイヤを載せました..mag 形式の Diffusion は .cif 形 式では Active に相当し,CIF ファイルに変換するときに Implant と Well を自動生成します.こうすることで,設計者 は Implant,Well を意識することなく設計できます(開いたときにエラーが生じるかもしれませんが). これらのルールについては Magic のテクノロジーファイルに記述されています(“7.3.5 テクノロジーファイル” を参 照)ここでは,Magic での CIF ファイルの入出力方法及び, .mag ファイルとのレイアウトの違いについて説明してい きます. 7.3.1 Magic での CIF ファイルの入出力 CIF ファイルの出力 Magic で記述したレイアウトを CIF 形式で出力するときには,Magic 上でコマンド :cif write file を実行します.Backspace を押しても文字は消去できないようなので,途中で間違えた場合は enter ボタンを押した後再 び入力します.これで,file.cif という名前のファイルができます. :cif とだけ打ち込んだ場合は,Topcellname.cif (最上位セルの名前.cif)となります..mag 形式ではファイル名がトップ セルです. CIF ファイルの入力 Magic で CIF ファイルを読み込むには,Magic を起動した後,コマンド :cif read file を実行します.このときも Backspace は使えないようです.又,Magic を起動する際に CIF ファイルを引数に指定して も読み込めません. 64 第 7 章 実配置 .mag 形式 .cif 形式 短縮したレイヤ名 N-Well N-Well CWN P-Well P-Well CWP Metal1 Metal1 CMF Metal2 Metal2 CMS Polysillicon Polysillicon CPG Polysillicon2 Polysillicon2 CEL Polysilicon Contact Metal1 Poly Contact Polysillicon CMF CCP CPG Via Metal2 Via Metal1 CMS CVA CMF N-Diffusion Active N Implant P-Well CAA CSN CWP P-Diffusion Active P Implant N-Well CAA CSP CWN N-Diffusion Contact Metal1 Active Contact CMF CCA Active N Implant P-Well CAA CSN CWP P-Diffusion Contact Metal1 Active Contact Active P Implant N-Well CMF CCA CAA CSP CWN N-Well Contact Metal1 Active Contact Active CMF CCA CAA N Implant N-Well CSN CWN Metal1 CMF Active Contact Active CCA CAA P Implant P-Well CSP CWP P-Well Contact 表 7.2: .cif 形式ではマスクレイヤに分けて記述されます.レイヤ名は Magic 標準のテクノロジーファイルを使っている 場合です.変更の仕方は 97 ページで解説します. 7.3. Magic を使用した場合の CIF の扱いについて 7.3.2 65 Magic での CIF(マスクレイヤ)の出力 以下に,MOSIS ルールでデザインルール違反が起きないための最小幅で領域を描いた図と,それを .cif 形式で出力し た後,再度 Magic で読み直した図を載せました.それぞれについて解説していきます.尚,この値は Magic 標準のテク ノロジーファイル “scmos.tech27” というファイルを用いています.このファイルは 1 ミクロンプロセス用です.Alliance で実際に作成するテクノロジーファイルはサブミクロン用なので,デザインルールは多少異なります(97 ページ参照). N-Diffusion (P-Diffusion) Magic では Diffusion の最小幅は 3λ です..mag 形式では Diffusion は図 7.8 のように Diffusion 単体で表示されます. ちなみに,エディタでファイルを開いたら, magic tech scmos timestamp 1039954436 << ndiffusion >> rect 0 0 3 3 << end >> と表示されました.このファイルの意味は, • scmos というテクノロジーファイルを使用. • N-Diffusion についての宣言である. • 長方形(領域)が (0, 0) から (3, 3) までである. ということを意味しています..mag 形式では,λ ベースで数値が出力されるので,4 で割らなくても平気なようです. このファイルを.cif 形式で保存し,保存した.cif ファイルを Magic で開き直すと図 7.9 のようになります. 3 Active(CAA) (0.0) 3 overlap =2 (6.6) 12 overlap =3 (0.0) 図 7.8: Magic 標準形式 (.mag) の N-Diffusion 28 52 12 N_Implant(CSN) 28 P-Well(CWP) 52 1 =4 図 7.9: Cif 形式で読み込んだ N-Diffusion このファイルをエディタで表示させた時は,次のようになります. (セルの Box 宣言のみ載せました. ) CAA(Active) : B 12 12 6 6; CSN(N_Implant): B 28 28 6 6; 66 第 7 章 実配置 CWP(P-Well) : B 52 52 6 6; cif 形式では,マスクレイヤをそれぞれ重ね合わせることにより各領域を表現します.この例では,.mag 形式では Diffusion とだけ宣言されていましたが,実際には Diffusion は Active,Implant,Well の 3 つのレイヤで構成されていま す.よって,.cif ファイルの Box には 3 つのレイヤの領域が宣言されているのです.尚,.mag 形式の Diffusion は,.cif 形式の Active に相当します.エディタでこの 3 つのレイヤのうち Well か Implant を消すと,何も表示されなくなりま す(Active,Implant を消した場合でも Well は単独で表示できます). 図 7.9 では Implant を点線で表示していますが,Magic を使用しているときには表示されません(Alliance で Dreal を 使用した場合は表示されます). わかりやすくするために Diffusion 領域の左下を原点としました.初期設定では 1λ = 4 グリッドなので,長さ,幅の 値は 4 の倍数となります.又,中心点については 2 の倍数(この例では全てのレイヤで (6, 6))になります. Implant 領域は Active 領域から 2λ 分オーバラップします.Well も Implant 領域から 3λ 分オーバラップします.中心 部のレイヤは 3 層になります.このファイルで一番高いレイヤは Active,一番低いレイヤは P-Well になります.ここで 載せた Box 宣言の順序も上のものほど高いレイヤになっています(実際のファイルではレイヤを書く順番は決まってい ません). P-Diffusion にする場合は,N と P を入れ替えて下さい. Active 領域をこれよりも小さくした場合はデザインルール違反になります.デザインルールの変更については “7.3.5 設定の変更” を参照してください. N-Diffusion Contact (P-Diffusion Contact) 図 7.10 は,.mag 形式で Diffusion Contact を表示したものです.Diffusion Contact の最小幅は 4λ となっています. Diffusion Contact を.cif 形式に変換すると,図 7.11 のようになります. Active_ Cont(CCA) 4 (8.8) (0.0) 4 overlap =3 図 7.10: .mag 形式での N-Diffusion Contact overlap =2 (0.0) 16 32 56 Metal1(CMF), Active(CAA) 16 N_Implant(CSN) 32 P-Well(CWP) 56 1 =4 図 7.11: .cif 形式での N-Diffusion Contact 又,エディタで表示させると, CWF(Metal1) : B 16 16 8 8; CCA(Active_Cont): B 8 8 8 8; CAA(Active) : B 16 16 8 8; 7.3. Magic を使用した場合の CIF の扱いについて CSN(N_Implant) CWP(P-Well) 67 : B 32 32 8 8; : B 52 52 8 8; となります. Diffusion Contact とは,Diffusion と Metal1 のコンタクトです. .mag 形式では疑似レイヤとして表示されています が,マスクレイヤに展開すると,中心に 2λ の Active Contact を配置し,その下の層に Active,上の層に Metal1 を 1λ 分オーバラップさせます.それ以外は Diffusion と同じです.中心部のレイヤは 5 層になります.Diffusion Contact の最 上位層は Metal1,最下位層は Well となります. P-Well Contact (N-Well Contact) 図 7.12 は,.mag 形式で Well Contact を表示したものです.Well Contact の最小幅は 4λ となっています. Well Contact を.cif 形式に変換すると,図 7.13 のようになります. Active_ Cont(CCA) 4 (8.8) overlap =2 overlap =1 4 (0.0) 16 32 40 Metal1(CMF), Active(CAA) 図 7.12: .mag 形式での P-Well Contact (0.0) 16 P_Implant(CSP) 32 P-Well(CWP) 40 1 =4 図 7.13: .cif 形式での P-Well Contact 又,エディタで表示させると, CWF(Metal1) : CCA(Active_Cont): CAA(Active) : CSN(P_Implant) : CWP(P-Well) : B B B B B 16 8 16 32 40 16 8 16 32 40 8 8 8 8 8 8; 8; 8; 8; 8; となります. Well Contact は,Well と Metal1 とのコンタクトで,間に Diffusion がありません.中心部のレイヤは Diffusion Contact と同様に 5 層ですが,Implant と Well は同じ極性なので,オーバラップは 3 ではなく 1 となります.Well Contact の最 上位層は Metal1,最下位層は Well です. この他の領域に関しては,.cif 形式にした時に Well ができるような等はありませんが,内部構造を知るためにも,こ こで載せておきます. Via Via は Metal1 と Metal2 のコンタクトです(図 7.14).2λ の Via に,Metal1 と Metal2 を 1λ 分オーバラップさせます. 68 第 7 章 実配置 Metal1(CMF), Metal2(CMS) Via(CVA) 16 (0.0) 16 図 7.14: .cif 形式の Via CVA (Via) は,他のコンタクト同様,画面には現れないため点線にしてあります. エディタで表示させると, CMS(Metal2) : B 16 16 CVA(Via) : B 8 8 CMF(Metal1) : B 16 16 8 8 8 8; 8; 8; となります. ちなみに,CVA (Via) の宣言を削除すると Metal1,Metal2 が重なっただけの表示となります. Polysillicon Contact Polysillicon Contact は Polisillicon と Metal1 のコンタクトです(図 7.15). Metal1(CMF); Poly(CPG); Poly_Contact (CCP) 16 (0.0) 16 図 7.15: .cif 形式の Polysillicon Contact 2λ の Poly Contact に,Polysillicon と Metal1 を 1λ 分オーバラップさせます. CCP (Poly Contact) も他のコンタクト同様,画面には現れないため点線にしてあります. エディタで表示させると, CMS(Metal1) : B 16 16 CCP(Poly_Contact) : B 8 8 CPG(Polysillicon) : B 16 16 8 8 8 8; 8; 8; となります. この場合も,CCP (Poly Contact) の宣言を削除すると Polysillicon,Metal1,が重なっただけの表示となります. 7.3. Magic を使用した場合の CIF の扱いについて 69 以上より,Active Contact,Via,Poly Contact はいずれも 2λ となり,その下のレイヤに Metal1 と導通するレイヤ が配置されます(Via の場合は上のレイヤに Metal2 が配置されます).又,Diffusion の場合は .cif に変換した際,その 下に Implant,Well が自動生成されます. この他の Polysillicon,Metal1,Metal2 に関しては,そのまま表示されます. 7.3.3 Magic を使用した場合の CIF の階層のまとめ 7.3.2 の例で述べたことの纏めとして,もう一度 62 ページの表 7.2 をご覧下さい. • 左は Magic の標準である .mag 形式,右は .cif 形式です. • .mag 形式では,Diffsion 等は疑似レイヤとして Diffusion 単体で書かれていますが,.cif 形式ではそれぞれのレイ ヤを各マスクに分解して宣言しているために複数のレイヤを重ね合わせて一つの領域を表現しています. • Magic では,マスクレイヤの重ね合わせを判断して画面に領域を表示するため,一つでも欠けると違うレイヤが表 示されたり,レイヤが全く表示されなかったりします(63 ページの 7.3.2 を参照). • 表の各枠のうち,上に書かれているレイヤほど上位に位置します. • この項目は全て CIF の初期設定に基づいているので,テクノロジーファイルを変更すると内容が違って来ること もあります(“7.3.5 設定の変更” を参照). 7.3.4 ラベル Magic でのラベルの宣言は,以下のようになります. 94 label x y Layer ; このように,ラベルの宣言は “94” です(意味はわかりませんが).Magic ではラベルの範囲指定ができますが,.cif 形 式に変換すると範囲の重点にのみラベルが付きます. 又,ラベルに限らず.cif ファイルを開き直した際にエラーが表示されることがあります.これについて,次の例で解説 します. 図 7.16 は,Magic でラベルを付けた状態です. a (0, 0) b 図 7.16: Magic でラベルを付けた状態(.mag 形式) このファイルを CIF 形式で保存し,開き直すと Error at line 3 of CIF file: Input off lambda grid by 1/2; snapped to grid. のようなエラーが表示され,図 7.17 のようになります. このファイルをエディタで表示すると,次のようになります(一部省略). 70 第 7 章 実配置 a a (0, 0) b 図 7.17: .cif 形式に変換し,開き直した状態 1 2 3 4 5 6 7 DS 1 B 16 94 a 94 b DF C 1; End 50 16 10 12 (0, 0) b 図 7.18: ラベルは,間には表示できない 2; 8 4; 8 CPG; 0 CPG; このエラーは,本来ならばラベル a が図 7.18 のように.mag 形式で指定した範囲の中心に表示するはずが, 実際には λ の間に表示することができず,左にずれて表示されたことをエラーで示しています. ラベルに限らず,ファイルを変換して読み直した時にずれが生じてエラーが出力されることがあります(125 ページ 参照). 7.3.5 設定の変更 スタイル(Style)の変更 これまで実例で説明したデザインルールは全て初期設定のものです.設定(Style)を変更するには,Magic 上で, :cif istyle name :cif ostyle name を実行します. 詳しいことは,“Magic Tutorial #9: Format Conversion for CIF and Calma” をご覧下さい.このドキュメ ントには,CIF に変換する時の問題点も載せてありました.ちなみに今回は,テクノロジーファイルそのものを変更す るのでこのコマンドは使いません.各自試して見て下さい. テクノロジーファイル istyle, ostyle で設定を変更できますが,設定ファイルを直接読みたい(又は書き換えたい)場合は,Magic のディレク トリ$Cad Home$/lib/magic/sys/ 上にある,scmos.tech27 というテクノロジーファイルをご覧下さい(Magic Version 7.1 の場合).このテクノロジーファイルは, 7.3. Magic を使用した場合の CIF の扱いについて 71 tech style check_psubstr style check_nsubstr version wiring planes router types plowing contact plot styles compose connect cifoutput style style style style style style style style lambda=1.0(gen) lambda=1.0(nwell) lambda=1.0(pwell) lambda=0.8(gen) lambda=0.6(gen) lambda=0.6(nwell) lambda=0.6(pwell) plot cifinput style style style style style style style style style style style style style style style style lambda=1.0(gen) lambda=1.0(nwell) lambda=1.0(oldnwell) lambda=1.0(pwell) lambda=1.0(nowell) lambda=0.8(gen) lambda=0.8(nwell) lambda=0.8(oldnwell) lambda=0.8(pwell) lambda=0.8(nowell) lambda=0.6(gen) lambda=0.6(nwell) lambda=0.6(oldnwell) lambda=0.6(pwell) lambda=0.6(nowell) lambda=1.0(cmosn) mzrouter style irouter style garouter drc extract style style style style style style style style lambda=1.0(scna20_orb) lambdaSp=1.0(scpe20_orb) lambda=0.8(scna16_ami) lambda=0.6(orb_scne12) lambda=0.6(hp) lambda=0.5 check_nwell check_pwell 72 第 7 章 実配置 という構成になっていて,それぞれにパラメータが設定されています. このファイルの読み方,変更の仕方は “Magic Maintainer’s Manual #2: The Technology File” をご覧下さい. このうちの “cifoutput”,“cifinput”,の “style” 及び,“drc(Design Rule Check)” が cif,デザインルールに関 係のあるパラメータです.この章で利用した “scmos.tech27” は 1 ミクロンプロセス用ですが,Alliance のテクノロジー ファイル作成には,サブミクロン用のファイルを使用します.詳しくは 9.2.1 ページの 9.2.1 で解説します. 7.4 Alliance を使用した場合の CIF の扱いについて Alliance では,仮想配置である .ap 形式を “s2r” というプログラムで実配置である .cif 形式に変換します.変換した .cif ファイルは Alliance 付属の “Dreal” というプログラムで表示させることができます.Alliance で作成した .cif ファ イルは独自に拡張された宣言がいくつかあります.ここでは,その宣言を含め,Alliance で作成した .cif 形式について説 明します. 尚,Magic との対応を取りやすくするために “s2r” のテクノロジーファイル.rds の値を Physical Grid = 0.5, Lambda = 2 としてあります.こうすることで,DS1 50 2; のように,“50 2” の比率が守られ,1λ = 4 グリッドとなります. 7.4.1 Alliance での拡張された宣言 Alliance で作成した CIF ファイルの拡張宣言は 4A:Abutment Box の範囲を表示 4X:セルの配線の接続点を表示 4N:セルのラベルを表示 4l:他のセルを取り込み です.以下,それぞれについて解説します. 4A A は Abutment Box の略です(多分).4 の意味はわかりません.Abutment Box とは,各セルの範囲を指定したもの す.セルの外枠と考えることもできます.61 ページの図 7.7 も,Abutment Box を並べたものと言えます. 例えば, 4A 0 0 120 400; は,セルの範囲を座標 (0, 0) から (30, 100) であることを宣言しています. 4X 4X は他のセルとの配線の接続点を表示する際に使用します.これは,ap ファイルの C(Connector)宣言に相当しま す.4X の宣言は, 4X name number x y width name; となります.name には vdd,vss もしくは隣接するセルとの接続点の名前を記述します.これは,左右同じ名前にしま す.ここで,VDD は電源電圧,VSS はグランド電圧です. number は,そのセル内での通し番号です.この行の number に 1 が書かれた場合,次に 4X が書かれている行の number には 2 が入ります.番号は 1 からです. 7.4. Alliance を使用した場合の CIF の扱いについて 73 (x2,y2) (x1,y1) 図 7.19: 外枠が Abutment Box x ,y は端子の軸です.width は端子の幅です.x ,y ,width はそれぞれ値を 4 で割ります. 例えば, L CMF; 4X vss 1 0 24 56 vss; 4X vdd 2 0 376 56 vdd; 4X ....; では,上の行は通し番号が 1,vss の配線の接続点が (0, 6) を軸に幅 14 の大きさになります. vss 14 (0, 6) 図 7.20: 4X での宣言 ここで,幅の向きは,配線に依存するようです. 4N 4N は,セルにラベルを付ける時に使用します.N は “Name” の略だと思います.4N の宣言は, 4N name x y; となります.例えば, 4N auxsc1 320 148; B16 248 320 148; では,(80, 37) の点に auxsc1 という名前のラベルを付ける,という意味になります.又,ソースファイル内では,その 一行下に実際にラベルを付ける領域が書かれてるようです(この例では,4 × 62 の長方形の軸にラベルを付けています). 4l 4l は,他のセルを呼び出す時に使用します.4l の宣言は, 4l name;C number Tx, y; となります.例えば, 74 第 7 章 実配置 4l auxsc1;C1 T0, 64; は,(0, 16) の点にセル 1 を Call し,auxsc1 という名前を付ける,という意味です.真ん中の “;” の後は,58 ページの “7.2.1 階層設計について” と同じ宣言方法になります. Alliance で作成した.cif ファイルを Magic で読み込ませた場合 まず,Magic で.cif ファイルを読み込ませる時に,Alliance での拡張宣言は全て Error at line (x) of CIF file; unimplemented user extension; ignored. というエラー表示が表示され,無視されます.(x) には,行数が入ります.4l の場合は,最初の “;” まで無視されます が,その後の Call 宣言以降は読み込みます. このうち 4N はラベルなので “94” に変更することで Magic でも表示可能です.それ以外は Magic 側では扱っていない ので特に意識しなくても問題ありません. 7.4.2 実例 ここでは,実際に Alliance で合成したファイルを用いて解説します.次のファイルは,チュートリアル及び,前章の ap ファイル a = b を s2r で変換してできた .cif ファイルです.尚,ここで使用したテクノロジーファイルはこれまで使 用していた cmos 7.rds ファイルではなく,この後の章で作成するテクノロジーファイルを使用しています.本章を執筆 中にはテクノロジーファイルは完成していなかったので,レイアウト自体は途中のもので,領域の長さ,幅は異なりま すが,内容に変更はありません.又,Ver.4 で作成しているので,Ver.5 ではレイアウトの違いがあります. ファイル名は “equal.cif” としました. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 (rds to CIF driver version 1.03 technology /usr/local/alliance /archi/Linux/etc/mosis.rds Sat Dec 7 17:11:09 2002 eq Takeshi); DS1 50 2; (セル 1); 9 inv_x1; (AB : 0.00, 0.00 30.00, 100.00 in micron); 4A 0 0 120 400; LCWN; (N-Well); B136 216 60 312; B100 224 52 308; LCWP; (P-Well); B98 120 51 64; B100 88 52 80; B106 56 55 80; LCSN; (N_Implant); B32 32 80 376; B40 96 28 64; B88 64 52 80; LCSP; (P-Implant); B32 32 80 24; B40 176 28 296; B88 104 52 260; LCAA; (Active); B16 16 80 24; B16 16 80 376; B32 80 28 64; 7.4. Alliance を使用した場合の CIF の扱いについて 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 B32 160 28 296; B80 48 52 80; B80 88 52 260; LCPG; (Polysillicon); B8 264 56 180; B32 24 44 160; LCCA; (Active_Contact); B8 8 80 240; B8 8 32 360; B8 8 80 280; B8 8 32 40; B8 8 80 80; B8 8 80 376; B8 8 80 24; LCMF; (Metal1); 4X vss 1 0 24 56 vss; 4X vdd 2 0 376 56 vdd; 4X vss 3 120 24 56 vss; 4X vdd 4 120 376 56 vdd; B16 256 40 200; B24 256 80 200; B136 56 60 24; B136 56 60 376; LCCP; (Poly_Contact); B8 8 40 160; DF; DS2 50 2; (セル 2); 9 eq; (AB : 0.00, 0.00 100.00, 122.00 in micron); 4A 0 0 400 488; LCMF; (Metal1); 4X vss 1 0 88 56 vss; 4X vdd 2 0 440 56 vdd; 4X vss 3 400 88 56 vss; 4X vdd 4 400 440 56 vdd; 4N auxsc1 200 32; B16 16 40 264; B16 16 80 264; B16 16 320 264; B16 16 360 264; B256 24 200 32; B416 56 200 88; B416 56 200 440; LCVA; (Via); B8 8 40 264; B8 8 80 32; B8 8 80 264; B8 8 172 440; B8 8 228 88; B8 8 320 32; B8 8 320 264; B8 8 360 264; LCMS; (Metal2); 4X a 5 40 0 16 a; 4X vdd 6 172 0 24 vdd; 4X vdd 7 172 488 24 vdd; 4X vss 8 228 0 24 vss; 4X vss 9 228 488 24 vss; 75 76 第 7 章 実配置 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 4X b 10 360 0 16 b; 4N a 40 132; B16 280 40 132; 4N b 360 132; B16 280 360 132; 4N auxsc1 80 148; B16 248 80 148; 4N auxsc1 320 148; B16 248 320 148; 4N vdd 172 244; B24 504 172 244; 4N vss 228 244; B24 504 228 244; 4I auxsc1;C1 T0, 64; 4I b;C1 T280, 64; DF; C2; (AB : 0.00, 0.00 100.00, 122.00 in micron); E このファイルを “Dreal” で表示すると,図 7.21 のようになります(Dreal の使い方は “7.5.2” をご覧下さい). 図 7.21: セルを全て表示させた状態 a = b は,CMOS-Inverter 回路を直列に 2 つ繋げ,not を 2 度反転することで実現しています.a,b はそれぞれ図の 下に表示されています.Ver.5 では違う方法のようです.又,Ver.5 は現時点では入出力端子が外側に出ていません(方 法はあるのでしょうが,やり方がわかっていません). 以下,この CIF ファイルを解説していきます. 7.4. Alliance を使用した場合の CIF の扱いについて 77 まず,1∼6 行目はコメントです. 1 行目には,CIF ドライバのヴァージョンが書かれています. 2, 3 行目には,どのディレクトリのテクノロジーファイルを使用したかが書かれています.4 行目には作成日が,5 行 目にはファイル名,6 行目には作成者名が書かれています. 8∼56 行目までは,セル 1 についての宣言です.9 行目にセル 1 の名前が “inv x1” となっているように,このセルは CMOS-Inverter 回路です. ちなみに,このセルは Alliance のセルライブラリ “sxlib” の中の inv x1.ap ファイルを “s2r” で実配置の .cif ファイル に変換したものです. セル 2(58∼105 行目)を “();” で括り,107 行目の C2 を C1 に変更すれば,セル 1 のみを表示することができます (図 7.22).この図では,上側が P-MOS,下側が N-MOS となります. 図 7.22: セル 1 のみ表示させた状態 Dreal で equal.cif を表示させたときにはまず,107 行目の C2 を読み込み,セル 2(58∼105 行目)を Call します.こ のセル 2 は,セル 1 をつなぐ配線等の領域が宣言されています.セル 2 には,主に Metal1,Metal2,Via の領域の宣言 とラベルの名前が宣言されています. 最初に表示したときには,セル 2 のみ画面に現れます(図 7.23). (inv x1 上の vdd-vdd,vss-vss の配線(4X 宣言)は 最初に表示されるようです. ) 4X は,主に Abutment Box 上で,他のセルとのつなぎ目に表示されています(vdd,vss 及び,図の下の a,b). 最初に表示した際には,vdd,vss と書いてありますが,サブセルを表示させた状態では,図 7.21 のように,“auxsc1.vdd”, “b.vss” のように, サブセル名. 端子点 と名前が変わります. セル 2 は,103,104 行目でセル 1 をサブセルとして呼び出しています.その配置はセル 1 の (0, 0) の点がセル 2 の (0, 16),(70, 16) の点と重なります.図 7.22 では,セル名が inv x1 となりますが,ここでは呼び出し時にそれぞれ auxsc1, b とセル名を変えています. 大きな枠は Abutment Box です.Abutment Box は,11,61 行目で宣言されていますが,10,60 行目のコメントは, λ を基準にした場合の Abutment Box の範囲です.10 行目の場合,Abutment Box が (0, 0) から (30, 100) までであると 宣言されています.これは,11 行目の 4A の値を丁度 4 で割った値となります. 78 第 7 章 実配置 図 7.23: 最初は,セル 2 のみ表示される 91∼102 行目は 4N(ラベル名)と B(領域の範囲)が 2 行ずつセットになっています.領域の軸にラベルを書いてい ると考えて下さい. 7.5 Magic,Alliance でのトレース ここでは Magic,Dreal を使用した CIF ファイルのトレース方法を紹介します. 7.5.1 Magic でのトレース Magic で CIF ファイルを出力した場合,新たに生成された Implant,Well 間に最小間隔エラーが発生する可能性があ ります.その場合のデザインルールチェックのコマンドを簡単に載せます. エラーを探すには エラーを探すには,セルを選択して :drc find[nth] を実行します.選択したセル内で次のエラーを表示させるには,再度実行します.このとき,マクロ “.” を使用すると 楽です.何番目に表示されたエラーかを指定したい場合は [nth] に値を入れます. エラーの原因を知るには エラーが出ている箇所(白で表示)にボックスを合わせて :drc why [?] です([?] は,マクロ). 7.5. Magic,Alliance でのトレース エラーの数を知るには 79 エラーの数を知るには,範囲を指定して :drc count です. 詳しくは,“Magic Tutorial #6 Design-Rule Checking” を参照して下さい. その他,よく使用するコマンド :grid [g] グリッドの表示 :zoom [z] 2 倍ズーム :select [s] セルを選択 :expand [x] セルの中身を表示 :box [b] ボックスで指定した範囲の大きさなどの情報を出力 これらのコマンドの詳しい使いかたは,このドキュメントの最後に載せてある HP のマニュアル,Magic のチュート リアルを参照して下さい. 7.5.2 Alliance でのトレース CIF ファイルを表示するためのプログラムである “Dreal” は,アウトライン表示をすることで,領域の枠のみ描画で きる,マスクレイアウトをそのまま表示(Implant,コンタクトも表示される),など,トレースする際には Magic より もやりやすい部分があります. よって,ここでは簡単に Dreal の使用方法を説明します.ただし,環境変数の設定など実行の準備は済んでいるもの とします.一部 Graal と重複しています. ($ man dreal)も参照して下さい. まずは Dreal の実行です.シェルプロンプト上で $ dreal -l filename と入力し,実行します($はいりません).-l を入れなければ起動時にファイルを読み込みません. ファイルを開く File→Open から,ファイルを選びます.起動中に同ディレクトリにファイルが増えても選べないようなので,その場合は起動し 直します. 他のセルを表示する 最初は最上位のセルしか表示されません.他のセルを表示するには, Tools→Flatten を選びます. 位置を確認する Dreal のメインウィンドウの下には,カーソルの現在地が表示されます.左から, x: y: Dx: Dy: となっています.x,y はマウスの座標です.Dx,Dy は,始点を決めてクリックすると,その場所を (0, 0) として,距 離を測ります. レイヤーを見やすくする機能 View→Layer を選択すると,Layer と書かれたウィンドウが表示されます. 左上の “All visible” はレイヤを全て表示,右上の “All Invisible” は,レイヤを全て非表示にします. 一つのレイヤのみ表示させたい場合などは一度 “All Invisible” をクリックして,各レイヤ名を右側に表示した後,表 示させたいレイヤを左側に表示して “Apply” をクリックします. 80 第 7 章 実配置 図 7.24: レイヤーウィンドウ 左下の “Pattern” をクリックすると,“Outline”,“Fill”,と切り替わります.Pattern は全レイヤが半透明で表示され ている状態,Outline は全レイヤが Box 宣言の外枠のみ表示されている状態(図 7.25),Fill は,全レイヤに色を付け, 真上から見た状態です.Outline 表示にして,特定のレイヤのみ表示させることにより,トレースがやりやすくなるで しょう. “No String Box” とは,ラベルの下を透過しますが,少し読みづらいかもしれません.ラベルのトレースをしたい場合 は一度クリックして “String Box” にすると,ラベルの下が黒くなり,文字が読みやすくなります.その代わり,領域の トレースは,やり辛いかもしれません. 自分で領域を描画する場合 自分で領域を書いてテストしたい場合は,メニューバーで Create→Rectangle を選択します. 描画したいレイヤを選択して,メインウィンドウ上で範囲を指定して下さい.又,描画したレイヤを変更したい場合は, Window→Modify を選択します.領域を選択すると,紫色に変わり,Modify と書かれたウィンドウが表示されるので,ウィンドウ上で 変更したいレイヤを選択し(囲まないと駄目な場合もあるようです),Apply をクリックします.このときに “Name” を 選択するとラベル(cif ファイルでは “4N” で宣言)を付けることができます. Create→Abutment Box を選択すると,“Abutment Box” の範囲を指定することができます.ただし,1 セルに 1 つしか指定できません. 設定を保存したい場合 毎回起動時に View→Layer 7.5. Magic,Alliance でのトレース 81 図 7.25: アウトライン機能 と選択するような場合は,設定を保存しておくことにより,起動時に自動でウィンドウが表示されます.現在の設定を 保存するには,メニューバーの Setup→Save Config を選択します. 82 7.6 第 7 章 実配置 仮想配置と実配置のまとめ 仮想配置と実配置の用語について表 7.3 に纏めました. 最後に書いたレイヤの種類ですが,Graal では一般的に疑似レイヤを,Dreal ではマスクレイヤを描画するようにテク ノロジーファイルに設定します.この後の章で解説する s2r では疑似レイヤからマスクレイヤに変換する際に Implant, Well を生成しますが,その際に最小間隔エラーとなる箇所を併合処理をしてエラーを無くします.Graal は併合処理を 行う前なので,Implant,Well を表示してしまっては Druc でデザインルールチェックをしたときにエラーが表示されま す.よって,Graal では疑似レイヤ,Dreal ではマスクレイヤを扱います. 次の図 7.26 は本研究で完成したテクノロジーファイルを使用して Graal で疑似レイヤを表示した状態,図 7.27 が同じ く Dreal でマスクレイヤを表示した状態です. 図 7.26: Graal で疑似レイヤを表示 図 7.27: Dreal でマスクレイヤを表示 仮想配置 実配置 別の呼び方 MBK RDS 別の呼び方 Symbolic Object Real Rectangles レイヤの配置方法 軸と長さ 長方形 記号 ls ,ws lr ,wr dxr ,dyr 表示するツール Graal, Magic Dreal, Magic ファイルの形式 mag, ap cif レイヤの種類 疑似レイヤ マスクレイヤ 表 7.3: 仮想配置と実配置 83 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い 本章では既にテクノロジーファイルが完成しているものとして,実際に使用する上でヴァージョンが違うとどう違うの か,どの辺に注意すれば良いか解説します.テクノロジーファイルの話をまだしていないので,この位置に掲載するの はどうかと思いますが逆に,テクノロジーファイルの解説の時に Ver.5 についても触れているので,先に解説しておきま す.2 度目に読み返す時には良くわかると思います. 又,後半では s2r について解説しています.前章,前々章と入出力ファイルについて解説してきたので,内容はわかり やすいと思います.尚,s2r に使用するテクノロジーファイルについては,次章で解説します. 8.1 Version5 8.1.1 概要 これまでは Alliance Version4.0.9 について解説してきましたが,Version5.0 についてある程度分かってきたので,こ こで解説します.Ver.5 では,ツールの構成が一部変更されています.又,セルライブラリの内容も変更がありますが, それらについての詳しいドキュメントは man ページ位しかありません.Ver.5 は Ver.4 と比べて回路サイズにおいて優 れてます. 尚,検証した期間は短いので,ひょっとすると違っている箇所があるかもしれませんが,ご了承下さい. 8.1.2 ダウンロード,インストール,ファイル構成 ダウンロード ダウンロードは Alliance のトップページ http://www-asim.lip6.fr/alliance/ からダウンロードできます.HP の右上の “Download” のリンクを辿ると,いくつかのディストリビューション用にコ ンパイルされたプログラムをダウンロードできます.私は “alliance-5.0-20030224-rh8.i386.rpm” を使用しています.こ こで,プログラムをインストールすると,図 8.1 のようなディレクトリ構成になります. ここでまず困惑されるかと思われますが,ソースコードが入ったファイル以外には README,FAQ 等は付属してい ません.これらは,ダウンロードページにあるものを別々に DL して下さい. これまでは Ver.4 について解説していましたが,Ver.5 になってツールの一部が変更されています.詳しくは DL ペー ジにある CHANGES を参照して下さい. ここではこれまでに使用してきたツールの変更点を纏めました(表 8.1). Version4 Version5 SCMAP BOOG 配置ツール SCR OCP 配線ツール SCR NERO LYNX COUGAR セルマッピングツール ネットリスト抽出ツール 表 8.1: 変更されたツール 84 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い $Alliance_Top$ bin/ dp_sxlib padlib ramlib cells/ rflib romlib sxlib doc/ etc/ include/ lib/ man/ man1/ man3/ man5/ 図 8.1: Version5 の構成 8.1. Version5 85 Ver.4 までに使用されていた配置配線ツールである SCR(Standard Cell Router) は,OCP(配置ツール),OCR(配線 ツール)という 2 つのツールに分かれた後,OCR が NERO(Negotiating Router) というツールに変更されました.又, Lynx は同名のテキストブラウザが存在するため cougar という名前に変更されました. 8.1.3 チュートリアル チュートリアルの流れは第 5 章を参照して下さい.ツールの使用方法は違いますが,流れは同様です. 8.1.4 主なツールの解説 BOOG BOOG は Binding and Optimizing On Gates の略で,Ver.4 の SCMAP と同様の働きをします.詳しくは($ man boog)を参照して下さい. OCP OCP は Standard Cell Placer と言って,BOOG によって出力されたネットリストを元にセルライブラリを配置する ツールです($ man ocp).Ver.4 では配置及び配線は scr で纏めて行っていましたが,Ver.5 では OCP と NERO の 2 つ のツールに分かれました.OCP ではセルの配置をします.このツールのオプションで特に重要なのはマージンオプショ ンです.セルライブラリを配置するときには基本的に回路が正方形に近づくように配置します.その際にセルライブラ リの大きさが合わない場合にはその隙間を埋めるように機能を持たないセルを配置します(図 8.2,図 8.3,図 8.4)1 . 図 8.2: powmid x0.ap 図 8.3: rowend x0.ap 図 8.4: tie x0.ap これらのセルは,各セルライブラリの CATAL というファイルに属性 “F” で記述されています.それ以外の一般のセル は属性 “C” となります($ man catal).回路のマージンが少なすぎると配線が不可能になることがあるので,あらかじ めマージンの設定をしておきます.尚,デフォルトでは 20%で,最小 15%∼最大 300%まで設定できます(確か).実際 の設計ではまずマージン 50%ほどで試してみて,配線までうまく行った場合はマージンを減らせば良いと思います.尚, OCP での配置次第では同じマージンでもうまくいく場合といかない場合があるようです. 1 この機能は scr(Ver.4)でもあります 86 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い NERO NERO は,NEgotiating ROuter の略で,OCP によって配置されたセルライブラリを配線します($ man nero).こ のときにネットリストも必要になります.今回完成したテクノロジーファイルでは,配線は 4 層又は 5 層まで可能です. ここで,メタル 1 はセルライブラリに,メタル 2,4 は横配線に,メタル 3,5 は縦配線に使用されます. 配線時にはグローバル配線とローカル配線があります.回路が大きいものはグローバル配線を使用することでメタル 層を増やすことが可能です.ここで,メタルが 4 層までのテクノロジーファイルを使用している場合,メタル 4 まで使 用して配線をすると,最小間隔エラーになります.よって,メタルが 4 層までの場合には配線は 3 層に指定して,4 層目 は手動で配線する必要があります(∼ページ).尚,メタルが 5 層の場合には問題無く 5 層まで使用可能です. 回路サイズが大きい場合に配線を 3 層に指定した場合に 3 層で収まらなければ,自動で 4 層以上が使用されるようです. 配線プログラムは時間がかかります.オプション “-V”(V は大文字)を使用すれば内部動作がある程度わかると思い ます.層をわざと減らして配線しようとすると,全てのパターンをテストした後に不可能だったというエラーを出力し て終了することがあります.よって,プログラムが極端に時間がかかっていると感じた場合には失敗している可能性が あります. 配線時にはセルライブラリ上の Ref 宣言のラベルとネットリストの同様の名前をマッチングしています. 8.2 sxlib ここでは SXLIB について解説します.詳しくは($ man sxlib)を参照して下さい.sxlib は Ver.3 までの sclib に代わ り,Ver.4 から採用されたサブミクロンプロセス用のセルライブラリです.このセルライブラリは縦が 50λ,横が 5nλ に なっています.Ver.4 では SCMAP,Ver.5 では BOOG を使用して VHDL のソースコードをネットリストに変換します. ネットリストを元に Ver.4 では SCR で配置配線を,Ver.5 では OCP で配置及び NERO で配線を行います.配線時に 入出力端子は R(Reference)宣言された場所に Via を設置してその上に Metal2 を配線します.このときの方法が Ver.4 と Ver.5 では異なります.Ref は Metal1 の上に配置され,それぞれ 10,15,20,25,と 5λ 間隔で配置されています(図 8.5,8.6).Ref 宣言のうち Ver.4 で使用されるのはラベル名が “∼ 25” と書いてある箇所だけのようです(87 ページ図 8.9,88 ページ図 8.10).この 25 という値は各セルの丁度半分の高さです.ラベルの左の i,nq はネットリストと対応 していて,SCR,NERO を使用した時に参照されます. SXLIB は Ver.4 で採用されましたが,元々は Ver.5 で OCP,NERO を使用することを想定してセルライブラリだけ 先に採用されたようです.そのために Ver.4 では他の Ref 宣言はまだ使用されていないようです.Ver.5 ではその他の高 さの Ref 宣言にも配線される(オーバーセルルーティング)ため,配線の面積が減り,回路面積も小さくなります. 次の画像は Ver.4 の amd2901 のチュートリアルに付属してある amd.vbe を Ver.4,Ver.5 それぞれで合成したものです. このように,Ver.4(図 8.9)に比べて Ver.5(図 8.10)ではオーバーセルルーティングをするために全てのセルを密着 させて配線のみの領域を無くすことで,回路サイズを半分以下に減らしています. この時に,Ver.4 では図 8.9,8.10 のように,セルの中央(ラベル∼ 25)に配線しているのがわかります. 又,Ver.5 では図 8.11∼8.13 のように,セルの中央以外でも配線していることがわかります.このように,Ver.5 では オーバーセルルーティングを行うために∼ 25 に以外の Ref にも VIA を配置して配線を行っていることがわかります. 8.2. sxlib 87 図 8.5: メタル 1 上に配置されている四角が Ref です. 図 8.6: 5λ 間隔で配置され,ラベルが貼ってあります. 図 8.7: amd.vbe を Ver.4 で合成した場合(905 × 455λ) 88 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い 図 8.8: Ver.5 で合成した場合(425 × 400λ).横配線にメタル 2,縦配線にメタル 3 を使用しています 8.2. sxlib 89 図 8.9: Ver.4 で配線したときの拡大図 90 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い 図 8.10: 25 の Ref 上でのみ配線されています. 8.2. sxlib 91 図 8.11: Ver.5 での配線 92 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い 図 8.12: ラベルを表示した図 8.2. sxlib 93 図 8.13: ∼ 25 以外の Ref でも配線を行っています 94 8.3 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い Graal 上でデザインルールチェックをしたい場合 本来ならば Druc を使えばいいのですが,記述するための文法がわかっていないのと,s2r で変換した後の長さを Graal 上で把握することが可能なため,その方法を解説します. まず,今回作成したテクノロジーファイルには DEFINE LAMBDA 2.0 と記述されています(100 ページ). これは,Graal 上での 1 マス(1λ)が cif ファイル(Dreal 上)では 2λ 分である,ということです.Graal での sxlib (ap ファイル)は縦が 50λ,横が 5nλ なので,cif ファイルでは 2 倍して縦が 100λ,横が 10nλ となります.逆の言い方 をすれば,Dreal 上での 1λ は Graal 上では 0.5λ になります. 以上のことがわかると,Graal 上で s2r で変換した後の長さを把握することができます.図 8.14 のように,コンタク トの幅は 2λ なので Graal 上では 1 マス分になります.左側のメタル 1 は 4λ なので,Graal では 2 マス分です.尚,こ の比率は DEFINE LAMBDA の値を変更したら変わるので注意して下さい.ここでは,今回完成したテクノロジーファ イルを使用している場合について解説しています. 8.4 回路面積の計算 Dreal 上での回路サイズは Graal 上で表示されているサイズ ×2 ということがわかりました.これを基に回路サイズを 計算します.例えば,86 ページ図 8.8 の場合,縦の長さは 400λ なので, 400 × 2 × 0.35 × 10−6 = 0.28[mm] となります.又,横幅は 425λ なので, 425 × 2 × 0.35 × 10−6 = 0.30[mm] となります. 8.4. 回路面積の計算 95 図 8.14: Graal 上での 1λ は Dreal 上での 2λ 分になります.この図では,メタル 1 の間隔は 5λ になっているのがわかり ます.最小間隔は 4λ なので,エラーにはなりません. 96 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い 8.5 s2r ap フォーマット,cif フォーマットがわかったところで “s2r” について解説します.この章は s2r の man を補完する形 とするので,詳しいことは($ man s2r2 )を参照して下さい.尚,ここでは Ver.4 について解説します.Ver.5 の場合は 引数無しで s2r を起動した時に表示されるオプションを参考にして下さい. s2r は,仮想配置である ap ファイルを cif フォーマット又は gds フォーマットに変換します(図 8.15).どちらに変 換するかは,先に環境変数 RDS IN,RDS OUT に設定しておきます.cif フォーマットは教育用で ASCII コード,gds フォーマットは産業用でバイナリコードとなります(確か).cif,gds は相互変換が可能です. Technology File .rds MBK RDS (Symbolic) (Real) s2r .ap format .cif .gds format 図 8.15: s2r の入出力 8.5.1 環境変数の設定 s2r を使用するには,6 種類の環境変数を設定する必要があります.それぞれの変数については($ man 環境変数名) でマニュアルを参照できます.チュートリアルにもあったように,alc env.csh,alc env.sh を使用すれば設定に悩むこと は無いでしょう. MBK IN PH 入力ファイルのフォーマットを何にするか設定する変数です.“ap”,“cp” の 2 種類があり,標準で は cp になっているようですが,ap を指定します.alc∼のスクリプトには最初から ap が指定されています($ man MBK IN PH). MBK CATA LIB セルライブラリのあるディレクトリを宣言する変数です.alc∼の初期設定では, . $ALLIANCE\_TOP/cells/sxlib $ALLIANCE\_TOP/cells/padlib が指定されています($ man MBK CATA LIB). MBK CATAL NAME カタログの名前?を設定する変数のようです.alc∼の “CATAL” のままで問題ありません ($man MBK CATAL NAME). RDS IN RDS(実配置)の入力を決める変数らしいです.“cif” か “gds” のどちらかを選択します.alc∼では cif が設 定されているので変更する必要はありません.尚,RDS IN のマニュアル($man RDS IN)には cif フォーマットの拡 張宣言についての解説が掲載されているので,参考にして下さい. 2 man には see TECHNO(5) と書いてありますが,おそらく($ man prol)の間違えです. 8.5. s2r 97 RDS OUT RDS の出力を決める変数です.こちらも “cif” か “gds” のどちらかを選択します.alc∼では cif が設定さ れているので変更する必要はありません($ man RDS OUT). RDS TECHNO NAME s2r で使用するデザインルールを記述したテクノロジーファイルをフルパスで設定します.alc ∼では最初は($ALLIANCE TOP/etc/cmos8 .rds)と設定されています.その他の.rds ファイルも$ALLIANCE TOP/etc/ に入っています. ($ man RDS TECHNO NAME) 今回作成するテクノロジーファイルはこの変数に指定します.最初から入っている他の.rds ファイルは設定しても s2r 実行時にエラーで動作失敗するものもあります. 以上 6 つの環境変数のうち,後から値を変更する必要の出てくるものは RDS TECHNO NAME だけです.それ以外 の変数は alc∼のままで問題ありません. 8.5.2 実行時のオプション 正しく環境変数を設定できれば s2r を実行できます. $ s2r とだけ入力して実行すると, @@@@ @ @@ @@ @@ @@@@@@ @@@ @@ @@@ @@@ @@ @ @ @@ @@@ @@ @@@ @ @@ @@ @@@@ @ @@ @@@@ @ @@ @ @@@ @ @ @@ @@ @@ @@@@@@ @@ @ @@@@@ @@@@@@@ @@@@ Symbolic to Real layout converter Alliance CAD System 4.0.6, s2r 3.7 Copyright (c) 1991-2003, ASIM/LIP6/UPMC E-mail support: [email protected] Usage : s2r [-cs1trv] source [result] source result : filename of symbolic layout circuit to translate to real layout : result filename of real layout circuit source name is used, if result is absent optionnal -c : -s : -1 : -t : -r : -v : options (any order, any occurence) : deletes top-level (c)onnectors (s)cotchs are not created only (1) level is translated, all otherwise. layout is just (t)ranslated, not post-treated black boxes are not (r)eplaced (v)erbose mode armed と出力されます. Usage にコマンドが載っています.“[]” で囲まれた名前はオプションです.最も簡単な実行コマンドは,チュートリア ルでも実行したように $ s2r sourcename です.soucename には仮想配置である.ap ファイルの名前を入力します.ここで,拡張子の.ap まで入力するとエラーと なるので注意して下さい.ソースファイルと同名のファイルが既に存在する等の理由で出力名を変えたい場合には [result] 98 第 8 章 関連のあるツール及び,Ver.4 と Ver.5 の違い の欄にファイル名を入力します.ここでも.cif まで入力すると,出力されたファイル名は “result.cif.cif” となるので注意 して下さい.テストをする場合等に,自分の都合の良い名前を決めると良いでしょう. 続いて,オプションの項目についてです.オプションを設定するときには “-” の次に項目名を指定します.“[]” では括 りません. ここでは出力される cif ファイルのコードがどのように変化するかについて解説します.チュートリアルで作成した equal.ap ファイルを使用してテストしたので,違いが現れなかったオプションもあります.詳しくは($ man s2r)で確 認して下さい. -c :deletes top-level (c)onnectors トップセルのコネクタを生成しない ⇒4X 宣言を消去 -s :(s)cotchs are not created 変化無し ⇒ 不明 -1 :only (1) level is translated, all otherwise. トップセルは全て生成.サブセルは 4A(Abutment Box),4X(Connector)宣言のみ生成し,Box 宣言等は生成し ません. -t :layout is just (t)ranslated, not post-treated レイアウトはただ変換するのみで後処理をしません ⇒ Well,Implant,Active 等の併合をしません.併合については 第 9 章(テクノロジーファイル)で解説します. -r :black boxes are not (r)eplaced 変化無し ⇒ 不明. -v :(v)erbose mode armed 冗長モードにする ⇒ 変換途中のメッセージを全て表示. 尚,Ver.5 では,オプションが増えているため, ($ s2r)を実行して確認して下さい. 99 第 9 章 テクノロジーファイル いよいよ,テクノロジーファイルの作成をします.まず本章で MOSIS のデザインルールの最小幅のみを考慮したファイ ルを作成し,次章でエラーの修正をします. このテクノロジーファイルの拡張子は.rds です.テクノロジーファイルは,s2r の他に,Graal,Dreal,Druc,Lynx でも使用されます.このファイルは環境変数 “RDS TECHNO NAME” に設定します. 本章では Sub-Micron プロセスの SCN4ME SUBM を Ver.5 用に作成します.他のオプション及び Ver.4 用に作成する 場合については第 11 章で解説します. 9.1 関連マニュアル テクノロジーファイルの関連マニュアルは, • prol(5) • Translation of symbolic objects into real rectangles • etc ディレクトリに入っている他の.rds ファイル の 3 つです.“prol(5)” は,Alliance の man ディレクトリに入っていて, ($man prol)コマンドで表示できます.このド キュメントはテクノロジーファイルの各パラメータの意味について掲載しています.しかし,1997 年に作成されたドキュ メントなので(おそらく Ver.3 用),追加されたパラメータ,レイヤについては掲載されていません.2 つ目の “Translation of symbolic objects into real rectangles (以下,Symbolic to Real Translation)” は,Alliance の doc ディレクトリに “process mapping.ps”,“process mapping.pdf” というファイル名で入っています.このファイルはテクノロジーファイ ルのパラメータに入れる値の計算方法と s2r の変換公式が掲載されています.3 つめの他の.rds ファイルは,実際に記述 したテクノロジーファイルが上手く動作しないときに,記述の違いを確かめるのに参考にします.しかし,最初から入っ ていながら Ver. が古いままのものもあるので注意が必要です.Ver.5 には Symbolic to Real Translation は入っていない ので Ver.4 のファイルも必要になります.今回は Ver.5 用にテクノロジーファイルを作成するので,別途 Ver.4 を DL し てドキュメントを入手して下さい. 9.2 デザインルールの選択と Magic の設定 9.2.1 デザインルールの選択 まずは作成するデザインルールを選択しなければなりません.第 7 章では Magic 用に scmos.tech27 を使用していました が,このファイルは 1 ミクロンプロセス用なので,サブミクロン用のものを選択します.同梱されている scmos-sub.tech27 は,メタルが 3 層までなので使用しません. SXLIB は,Sub-Micron プロセス用に設計されていることに注意して下さい.1 ミクロンプロセスではデザインルール 違反になってしまう項目がありますが,Sub-Micron プロセスでは問題ありません(147 ページの 10.4). MOSIS のデザインルールの HP http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html の 2.2. SCMOS Options の Table 2b: MOSIS SCMOS SUBM-Compatible Mappings から目的のベンダ及びルールを 選びます.現在作成が可能と考えられるルールは TSMC の “SCN4ME SUBM”,“SCN4M SUBM”,“SCN5M SUBM” 100 第9章 テクノロジーファイル の三種類です.このオプションの意味については HP の “Table 1: SCMOS Technology Options” を確認して下さい.今 回は “SCN4ME SUBM” について解説します. Alliance Ver.5 では,セルライブラリに Metal1,横の配線に Metal2,縦の配線に Metal3 と最低 3 層使用します.よっ て,外部ピン接続用のコネクタ,VDD,VSS は最上位層に配線することなどを考え,配線が 3 層では苦しいと思います. Agilen/HP の “SCN3M SUBM”,“SCN3MLC SUBM” については Stacked Via(重ねられた Via)の使用が不可能なた め,Alliance の仕様上利用することができません. “SCN5M SUBM” については問題なく使用できると思います.“SCN6M SUBM” では VIA の最小幅が 3 × 3λ 固定で す.最小 λ が奇数だとレイアウトが崩れる場合があるので不可能では無いと思いますが,今回は使用しませんでした. 以上の理由から,今回は前述の 3 種類のルールのうちの SCN4ME SUBM を使用しました. この SCN4ME SUBM のリンクを辿り,Table 5: Technology-code Map の SCN4ME のリンクを辿ると, “MOSIS Layer Map for SCN4ME and SCN4ME SUBM” http://www.mosis.org/Technical/Layermaps/lm-scmos_scn4me.html にたどり着きます.後ほど “TABLE CIF LAYER” で Alliance のセルライブラリ及び合成時の配線とこのページのレイ ヤを対応させます(113 ページの 9.3.5). 9.2.2 Magic 側の設定 SCN4ME SUBM に対応したテクノロジーファイルを DL する いきなり MOSIS のデザインルールをチェックしながらテクノロジーファイルを記述するのは大変です.そこで,Magic に今回採用した SCN4ME SUBM 用のテクノロジーファイルを設定します. MOSIS の HP のサイトマップ http://www.mosis.org/site-map.html から,-M-の Magic Technology Files を選択します.すると,次のような HP に進むことができます. http://www.isi.edu/~sondeen/magic.html この HP の This is a chart of the Magic technical files のリンク ftp://ftp.isi.edu/pub/sondeen/magic/new/chart にどの Magic で使用するテクノロジーファイルの詳細が記載されています.又,その下の This directory contains these new techfiles ftp://ftp.isi.edu/pub/sondeen/magic/ new/beta/current からテクノロジーファイルが DL できます.今回は “SCN4ME SUBM.20.TSMC.*” を DL します. その他のリンクも確認してみて下さい.いくつか例があります.DL したファイルを Magic で使用するには,Magic を 起動するときに “-T” オプションを使用します.ここでは, $ magic -T SCN4ME_SUBM.20.TSMC.tech27 となります.起動ごとに毎回設定しなければならないので,alias などに記述しておくと良いでしょう. 9.2.3 Magic 標準のテクノロジーファイル(scmos.tech27)と SCN4ME SUBM.20.TSMC.tech27 の違い scmos.tech27 は 1.0∼3.0micron 用のデザインルールが使用されています.それに対して SCN4ME SUBM.20.TSMC.tech27 は 0.35 ミクロン(Sub-Micron)用のデザインルールです.第 7 章では scmos.tech27 を使用して cif ファイルを出力しまし たが,サブミクロンプロセスではデザインルールが異なるので注意して下さい.MOSIS の HP では,“2.4. SCMOS SUBM and SCMOS DEEP Rules” に違いが載せてあります. 9.2. デザインルールの選択と Magic の設定 101 http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html#subm サブミクロンでなければエラーになる箇所は MOSIS # 8.5 Via on flat です.又,Stacked Via(積み重ねられた Via) が許されるルールでなければ MOSIS # 8.4 でエラーになります.Stacked Via についてはデザインルールの HP の “6. Stack via support by process and technology codes” を参照して下さい SCN4ME SUBM では#8.4,5 は該当しません. ∼ページに scmos.tech27 で出力された cif の略称を載せましたが,SCN4ME SUBM.20.TSMC.tech27 では若干異なり ます.例えば,scmos.tech27 では Metal1 の略称が CMF となっていましたが,SCN4ME SUBM.20.TSMC.tech27 では CM1 となります.詳しくは∼で解説します. 読み込み時の注意 Alliance で出力した CIF ファイルを SCN4ME SUBM.20.TSMC.tech27 を使用した Magic で読み込 む際には,CIF ファイルの内の各セルの宣言 DSn 50 2; を DSn 10 2; に変更する必要があります.n にはセルの番号が入ります. scmos.tech27 を使用していた場合には Magic で CIF ファイルの出力を行った際に Alliance と同じ比率でしたが, SCN4ME SUBM.20.TSMC.tech27 を使用して CIF ファイルを出力すると上の様に 50→10 に変更されるためです.もう 少し修正を加えれば最初から上手く行くかもしれません. Magic でデザインルールチェックをする時にはセルの階層構造を 1 層に変換し,セルを 1 つのみにします. そうしないと,Magic が階層構造を正しく認識せずにエラーを出力する場所があります(142 ページ) セルを一つにするには,Graal のメニューバーから Tool→Real flat を選び,全てのセルを囲みます.そして別名で保 存すればセルは 1 層になりますが,ファイルサイズは大きくなります. この方法は Alliance で Druc を使う場合は関係ありません. 9.2.4 MOSIS HP の Table 4: SCMOS Layer Map について HP のレイヤマップ “Table 4: SCMOS Layer Map” のリンクを辿ると,各レイヤのデザインルールが掲載されてい ます. ここでは Via のページの例を解説します. http://www.mosis.org/Technical/Designrules/scmos/scmos-metal2.html Via のページの右の Lambda の下には 2 Metal Process と 3+ Metal Process がありますが,これはメタルが 2 層であ るか 3 層以上であるかと言う意味です.サブミクロンプロセスでは最低でも 3 層なので右 SUBM の欄が当てはまります. 左の 2 Metal Process の SUBM は使用しないので n/a(該当せず)となります. 又,ルール 8.4 は (SCNA, SCNE, SCN3M, SCN3MLC) に対して該当するので今回は関係ありません.逆にこのルー ルが適用されると SXLIB で回避不能なルール違反が生じます(). ルール 8.5 もサブミクロンプロセスでは HP 前画面の “Table 3a: SCMOS and SCMOS Sub-micron Differences Dif- ferences” で Unrestricted(制限されない)と書いてあるので関係ありません. 以上より,SCMOS.tech27 に比べて SCN4ME SUBM.20.TSMC.tech27 では Via の制限が少なくなっていることがわ かります. 102 第9章 9.3 テクノロジーファイル テクノロジーファイルの記述方法及び値の設定 9.3.1 書式 ($ man prol)を基に,テクノロジーファイル(.rds)の記述方法及び各パラメータについて説明します. # “#” はコメント行です. 空文字 半角スペースかタブを入れることで,宣言の区切りを示します.又,宣言は各行単位となります.改行するこ とで次の宣言と見なされます.尚,行の途中でコメント宣言 “#” を入れると,#宣言以降はコメントとなります. \ 行末に “\” を入れることで,次の行も同じ行と見なされます.行が長くなって見づらくなった時に \ を入れて改行し ます. DEFINE “DEFINE” は,PHYSICAL GRID と LAMBDA を宣言する際に使用します.行の左に DEFINE,その次 に半角スペースかタブを入れて PHYSICAL GRID か LAMBDA を宣言し,その後に値を設定します.例えば, DEFINE PHYSICAL_GRID X DEFINE LAMBDA Y のようになります(X,Y は数字) TABLE,END それ以外のパラメータは “TABLE” の後に宣言して,“END” で終了します.もし必要の無いパラメー タであれば,パラメータ名を宣言し,内部には何も記述せずに END で宣言を終了します. 例えば, TABLE LYNX_RESISTOR END のようになります. 全てのパラメータを宣言しないと s2r 実行時にパラメータ宣言の読み取りエラーでストップします.他の.rds ファイル には,Ver.3 系統のままのものもあり,Ver.4 で新たに増えたパラメータを宣言していないために起動時にエラーとなり ます. 9.3.2 LAMBDA,PHYSICAL GRID LAMBDA 全ての値は λ を基準に計算されます.よって,まず始めに λ の値を決定しなければなりません.今回は Magic で cif ファイルを出力したときの値の比率と同じになるように,λ = 2 とします.これは,1λ の値が 2 であるという ことです.又,Graal 上での 1λ が Dreal 上では何 λ になるか,という値です.Symbolic To Real Translation の “A.4.1” (11∼14 ページ)に λ の算出方法が詳しく掲載されていますが,結果的に今回は使用しませんでした. PHYSICAL GRID “PHYSICAL GRID” は,各パラメータの最小単位です.全ての値は PHYSICAL GRID の倍数 になります(使用していない Lynx∼等を除く).今回は PHYSICAL GRID = 0.5 とします.こうすることで図 9.1 の ように,1λ のグリッド数が 4 になり,Magic で cif ファイルを出力したときの値と同じ比率になります.例えば,ポリシ リコンの最小幅は 2λ です.この場合は図 9.2 のようになります. cif ファイルの Box 宣言が 4 の倍数になるのも,1λ が 4 グリッドであるからです.図 9.2 の左下を原点とした場合には Box 宣言は B 8 8 4 4; となります.つまり,cif ファイルの値はグリッド数を出力しているのです. テクノロジーファイルに記述する時には, 9.3. テクノロジーファイルの記述方法及び値の設定 103 Physical Grid = 0.5 Physical Grid = 0.5 1 lambda = 2 1 lambda = 2 2lambda 図 9.1: 1λ の正方形 図 9.2: ポリシリコンの最小幅 DEFINE PHYSICAL_GRID 0.5 DEFINE LAMBDA 2.0 となります. この値を適用したときには,Graal 上での 1λ が Dreal 上での 2λ となります. 9.3.3 MBK TO RDS SEGMENT,MBK TO RDS CONNECTOR MBK TO RDS SEGMENT “MBK TO RDS SEGMENT” は,ap フォーマットの S 宣言を cif フォーマットの B 宣 言に変換するためのパラメータです.このパラメータに関係のあるドキュメントは($ man prol)の,“Segment translation table” の項及び,Symbolic To Real Translation の “A.3.1 Segment Translation”(3∼8 ページ),“A.4.3 Segments”(14 ∼18 ページ)です.Segment translation table には,各パラメータの意味が掲載されています.A.3.1 には,パラメータ を設定したと仮定して,s2r でどのように変換がされるか掲載されています.又,A.4.3 には,パラメータの値の決定方 法が掲載されています.今回は A.4.3 の計算方法は使用しません.第 7 章で Magic から CIF ファイルを出力したように, SCN4ME SUBM.20.TSMC.tech27 を使用して各レイヤを CIF 形式で出力し,その λ の値を基に,A.3.1 の変換公式か ら目的の値を設定します. 以下のファイルは,実際に Magic(MOSIS)でサブミクロンプロセスの最小幅に合わせて設定したものです.各パラ メータについてはこれから解説します.尚,この例のままではセルライブラリを表示した際に最小間隔エラー等が生じ る箇所があるので,次章で値を修正していきます. 1 TABLE MBK_TO_RDS_SEGMENT 2 3 NWELL RDS_NWELL VW 4 PWELL RDS_PWELL VW 5 NDIF RDS_NDIF VW 6 RDS_ACTIV VW 7 RDS_NIMP VW 8 RDS_PWELL VW 9 PDIF RDS_PDIF VW 10 RDS_ACTIV VW 11 RDS_PIMP VW 12 RDS_NWELL VW 13 NTIE RDS_NTIE VW 14 RDS_ACTIV VW 2.00 2.00 -0.50 -0.50 1.50 5.50 -0.50 -0.50 1.50 5.50 -0.50 -0.50 4.00 4.00 -1.00 -1.00 3.00 11.00 -1.00 -1.00 3.00 11.00 -1.00 -1.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ALL ALL EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ 104 第9章 15 16 17 PTIE 18 19 20 21 NTRANS 22 23 24 25 26 27 28 PTRANS 29 30 31 32 33 34 35 POLY 36 ALU1 37 ALU2 38 ALU3 39 ALU4 40 TALU1 41 TALU2 42 TALU3 43 TALU4 44 CALU1 45 CALU2 46 CALU3 47 CALU4 48 END RDS_NIMP RDS_NWELL RDS_PTIE RDS_ACTIV RDS_PIMP RDS_PWELL RDS_GATE RDS_NDIF RDS_NDIF RDS_POLY RDS_ACTIV RDS_NIMP RDS_PWELL RDS_GATE RDS_PDIF RDS_PDIF RDS_POLY RDS_ACTIV RDS_PIMP RDS_NWELL RDS_POLY RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 VW VW VW VW VW VW VW LCW RCW VW VW VW VW VW LCW RCW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW 1.50 4.00 -0.50 -0.50 1.50 4.00 -0.50 -2.50 -2.50 -0.50 -2.50 -0.50 3.50 -0.50 -2.50 -2.50 -0.50 -2.50 -0.50 3.50 0.00 0.50 -1.00 -1.00 1.00 0.50 -1.00 -1.00 1.00 0.50 -1.00 -1.00 1.00 3.00 8.00 -1.00 -1.00 3.00 8.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 1.00 -0.50 -0.50 2.00 1.00 -0.50 -0.50 2.00 1.00 -0.50 -0.50 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 テクノロジーファイル DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL MBK TO RDS SEGMENT の各パラメータは次の通りです(asga 7.rds を参考にしています). TABLE MBK_TO_RDS_SEGMENT MBK_name RDS_name Type DLR (D)WR OFFSET MODE \ RDS_name Type DLR (D)WR OFFSET MODE \ ... RDS_name Type DLR (D)WR OFFSET MODE \ END MBK name MBK name には,仮想配置の Segment 名を指定します.指定する名前は($ man prol)の “LAYERS AND PATTERNS” の “Mbk layers” に書いてあるレイヤ名を設定します.その下に書いてある “Mbk patterns” のレイ ヤ名は MBK TO RDS VIA で選択するのでここでは使用しません.上の例では,NWELL,PWELL,NDIF,PDIF, 等一番左の名前が相当します.本来ならば各項目は一行に記述するのですが,長すぎるので “\” で区切って次の行に続 きを記述しています.途中にコメント “#” を入れた場合には,それ以降,次の MBK name までの複数行をコメントと 見なします. RDS name RDS name には,実配置の Segment 名を指定します.設定できるレイヤ名は($ man prol)の “LAYERS AND PATTERNS” の “Rds layers” に記載されています.一つの MBK name に対して RDS name は複数になることも あります.例えば,上の MBK name の NDIF はマスクレイヤでは Active,Implant,Well の 3 種類のレイヤを重ねて設 定するので,Rds name は RDS ACTIV,RDS NIMP,RDS PWELL の 3 種類になります.ここで,RDS NDIF も設 定されていますが,その理由は次項で解説します. 9.3. テクノロジーファイルの記述方法及び値の設定 105 レイヤ名は Ver.4,Ver.5 になって増えています.詳細はセルライブラリをエディタで開いて使用されているレイヤ名 をチェックするか,cmos graal ファイル,cmos.rds ファイルなどからチェックするしかありません.Ver.5 では cmos.rds を見ると CALU というレイヤが増えています.これはどうやらコネクタ ALU という意味のようです.設定方法は ALU と同様で RDS には RDS ALU を使用しています.テクノロジーファイルを Ver.4 で使用する場合には CALU は削除す るかコメントにして下さい. MODE Type,DLR,(D)WR,OFFSET の前に,“MODE” について解説します.このパラメータは設定した値を何 に使用するかを指定するものです.値には “DRC”,“EXT”,“ALL” の 3 種類から選択します. DRC は s2r で変換し,Dreal で表示するためのレイヤに設定します.DRC 宣言されたレイヤは Graal では表示され ません.例えば,RDS ACTIV,RDS PIMP,RDS NIMP には DRC を設定します. EXT は Graal で領域(セグメント)を表示する際に記述します.Graal の入出力フォーマットである.ap ファイルに は軸の座標と長さ,仮想幅しか記述されていませんが,テクノロジーファイルの MBK TO RDS SEGMENT で EXT, ALL 宣言されたレイヤに変換公式を適用して幅と長さを計算し,画面に表示します.例えば,RDS NDIF,RDS PDIF は疑似レイヤなので EXT を設定します.EXT 宣言された値は Graal では表示されますが,s2r での変換に使用されるこ とはありません.Graal,Dreal で表示されるレイアウトの比率は全く同じです. Diffusion,Transistor に関しては,仮想配置(擬似レイヤ)と実配置(マスクレイヤ)のレイアウトが違うので, RDS name の部分にはそれぞれのパラメータを別々に記述します. ALL は,EXT,DRC 両方を兼ね備えています.つまり,Graal でも表示され,s2r で変換して Dreal でも表示されま す.主に Well と Alu(Metal)等の配線に設定される値です. Type Type には,“VW”,“RCW”,“LCW” の 3 種類を設定できます(“Symbolic to Real Translation”(4∼8 ペー ジ)).しかし,Transistor の値を設定する時以外は全て VW を指定します. VW は,“Variable Width” の略で,幅が一定では無いことを宣言しています.殆どのレイヤに適用されます. LCW,RCW はそれぞれ “Left Constant Width”,“Right Constant Width” の略で,幅が一定であることを意味し ます.この値は Transistor の仮想配置(EXT 宣言)での Diffusion にのみ使用されます(22,23,29,30 行目). Transistor の実配置(マスクレイヤ)では Active と Polisillicon は交差させるように宣言しますが(図 9.4),仮想配 置(擬似レイヤ)では Lynx でネットリストを抽出する際に Source と Drain を繋げてはいけないため,Gate の左右の Diffusion を別々に宣言します(図 9.3). Gate(vw) Poly LCW RCW 4 2 Active Implant Well Diffusion 図 9.3: Graal で表示する Tr は 3 つの領域を組み合わせて構 図 9.4: Dreal で表示する Tr はポリシリコンとアクティブを 成されます. OFFSET 交差させます. “OFFSET” は,領域の軸がどれだけずれるかを設定するパラメータです.軸をずらすとレイアウトが崩れ るので,基本的に全て 0 に設定します. LCW,RCW 宣言された RDS NDIF,RDS PDIF の OFFSET の値は Gate からの距離になります.例えば,LCW の OFFSET を 2,RCW の OFFSET を 4 に設定すると,図 9.5 のようになります.ただし,これは Gate(Poly)の最 106 第9章 テクノロジーファイル 小幅を 2λ とした場合であり,最小幅を変更するとレイアウトが崩れます.よって,Gate(Poly)の最小幅は 2λ 固定の ようです.以上より,LCW,RCW 宣言された場合の OFFSET の値も 0 に設定します. Diffsion LCW 2 GATE Diffusion RCW 4 図 9.5: 縁からの距離であり,軸からの距離ではありません(Gate の最小幅が 2λ の場合). DLR,DWR “DLR”,“DWR” は MBK TO RDS SEGMENT の中でも最もわかりにくいパラメータです.この 2 つ の値は領域を仮想配置から実配置に変換する際に使用する変換公式の定数となります.Symbolic to Real Translation の 4 ページには lr = ls λ + 2DLR と記述されていますが,いまいち何のことかわかりません.そこで,順を追って解説し ていきます. まずは,Magic で SCN4ME SUBM 用の CIF ファイルを出力した時のレイアウト及び,MOSIS の HP より,各領域 の最小幅を決定します(図 9.6∼9.12,表 9.1).Magic で出力した時のレイアウトからはマスクレイヤの階層及びオーバ ラップを,MOSIS の HP からは各デザインルールが正しいかそれぞれ確認します. $ magic -T SCN4ME_SUBM.20.TSMC.tech27 SCN4ME_SUBM.20.TSMC.mag とすることで,このデザインルールのサンプルファイルを表示できるので,参考にして下さい. 12 6 3 2 3 2 6 図 9.6: Alu1∼3(Metal1∼3)図 9.7: Alu4(Metal4)の最小 図 9.8: Polysillicon の最小幅 の最小幅 12 図 9.9: Well の最小幅 幅 値は全て λ を基準にしています.図の中心の線は ap フォーマットの軸です.方向は全て UP です.この値よりも小さ くすると,デザインルール違反となります. 公式は,“Symboilc To Real Translation” の 6 ページ “VW” の UP の “dxr ”,“dyr ” を使用します.この式は p4 に 載っている公式と同じものですが,記号がわかりやすいので使用しました.dxr ,dyr の公式をそれぞれ DW R,DLR の 式に置き換えると DW R = dxr − ws λ dyr − ls λ 2 となります.ここで,dxr は Real X Distance の略?であり,表 9.1 の幅:Width の値になります.又,dyr は Real Y Distance の略?であり,長さ:Length の値になります.dxr ,dyr 共に最小幅を設定しているので,Transistor 以外は同 DLR = じ値になります(後で修正しますが).図と比較してみて下さい. 9.3. テクノロジーファイルの記述方法及び値の設定 107 well Diffusion active implant 4 3 2 3 7 15 3 3 7 15 図 9.10: Diffusion の最小幅. Well Tie Implant Active 3 1 2 3 3 7 12 3 7 12 図 9.11: Tie の最小幅.Tie は,Well-Contact から Metal1 と Contact を外した状態です.Implant に対して Well は同極 なのでオーバラップは+1 ですが,最小幅を考慮して 12λ にしました. 108 第9章 仮想配置 (MBK) 実配置 (RDS) 長さ:Length (dyr ) 幅:Width (dxr ) Metal1,2,3 Metal1,2,3 3 3 All Metal4 Metal4 6 6 All Poly Poly 2 2 All N-Well N-Well 12 12 All P-Well P-Well 12 12 All N-Diffusion N-Diffusion ACTIVE N-Implant P-Well 3 3 7 15 3 3 7 15 Graal Dreal P-Diffusion P-Diffusion 3 3 Graal ACTIVE P-Implant N-Well 3 7 15 3 7 15 Dreal N-Tie ACTIVE N-Implant 3 3 7 3 3 7 Graal Dreal N-Well 12 12 P-Tie P-Tie ACTIVE P-Implant P-Well 3 3 7 12 3 3 7 12 Graal Dreal N-Transistor Gate N-Diff (LCW) N-Diff (RCW) Polisillicon ACTIVE N-Implant P-Well 7 3 3 7 3 7 15 2 3 3 2 8 12 20 Graal Gate P-Diff (LCW) P-Diff (RCW) Polisillicon ACTIVE P-Implant 7 3 3 7 3 7 2 3 3 2 8 12 Graal 15 20 N-Tie P-Transistor N-Well テクノロジーファイル 表示するツール Dreal Dreal 表 9.1: SCN4ME SUBM での各レイヤの最小幅.Graal では疑似レイヤを,Dreal ではマスクレイヤを表示します. 9.3. テクノロジーファイルの記述方法及び値の設定 109 Gate(vw) 7 3 3 LCW RCW 12 3 3 4 3 2 3 2 2 2 2 Diffusion Graal 20 Dreal 図 9.12: Transistor の最小幅. 7 15 110 第9章 テクノロジーファイル 一方 ws ,ls は Symblic Width,Symbolic Length の略です. この ls は,Graal のメニューバーで Create→ Segment,Transistor を選択して描画した際の軸の長さです.ap ファイ ル上では 100 の倍数で表されています(32 ページの 6.5.2,37 ページ).ls は Graal のテクノロジーファイルに最小幅が 指定されています.その値よりも小さく描画しようとすると “This segment is too small!” と言うエラーが出力されて描 画できません.ws は Graal で描画する際に使用される仮想幅で,初期設定は Graal のテクノロジーファイルに記述され ています.Create→Segment ウィンドウ等の Width ボタンで,指定した領域の仮想幅を変更することができます.描画 されたレイヤは ap ファイルの仮想幅の部分に記述されます.VDD,VSS 等はこの値が大きいので幅が広くなります. ここでは最小幅を設定するので,Graal のテクノロジーファイルの値を使用します.この値は Graal で ap ファイルを 描画する際に使用され,合成した ap ファイルを読み込む時には使用されません. Alliance Ver.4.0.6 の場合,ALLIANCE TOP/share/etc ディレクトリの “cmos 7.graal” というファイルを開くと,144 ∼175 行目に # # # # # /*------------------------------------------------------------\ | | | Minimun Length and Width for a symbolic Segment | | | \------------------------------------------------------------*/ TABLE GRAAL_SEGMENT_VALUE NWELL PWELL NDIF PDIF NTIE PTIE NTRANS PTRANS POLY ALU1 ALU2 ALU3 ALU4 ALU5 ALU6 TPOLY TALU1 TALU2 TALU3 TALU4 TALU5 TALU6 4 4 2 2 2 2 1 1 1 1 2 2 2 4 4 1 1 2 2 2 2 2 4 4 2 2 2 2 4 4 1 1 2 2 2 4 4 1 1 2 2 2 2 2 END という記述があります.Minimun Length and Width for a symbolic Segment と書いてあるので最初のパラメータが Length,次のパラメータ(一番右)が Width と考えがちですが,実は逆です.つまり,Ntrans の ls は 4,ws は 1 とな ります. 又,Ver.5 では Alliance Top/etc/cmos.graal というファイルの 152∼190 行目に同様の記述があります.Ver.5 では CALU1∼6 及び ALU5 の値が違います1 .以下,Ver.5 の cmos.graal ファイルからの抜粋です. # # # # /*------------------------------------------------------------\ | | | Minimun Length and Width for a symbolic Segment | | | 1 今回は意識していませんが,後々影響があるかもしれません 9.3. テクノロジーファイルの記述方法及び値の設定 111 # \------------------------------------------------------------*/ TABLE GRAAL_SEGMENT_VALUE NWELL PWELL NDIF PDIF NTIE PTIE NTRANS PTRANS POLY POLY2 ALU1 ALU2 ALU3 ALU4 ALU5 ALU6 TPOLY TALU1 TALU2 TALU3 TALU4 TALU5 TALU6 CALU1 CALU2 CALU3 CALU4 CALU5 CALU6 4 4 2 2 2 2 1 1 1 1 1 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 4 4 2 2 2 2 4 4 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 0 0 0 0 0 0 END Ver.5 について今回関係のある部分を表にまとめました(表 9.2).ls はこの値よりも小さく描画しようとするとエラー になります. MBK Name ls ws N,PWELL 4 4 N,PDIF 2 2 N,PTIE 2 2 N,PTRANS 4 1 POLY 1 1 ALU1 1 1 ALU2∼5 2 2 TALU1 1 1 TALU2∼5 2 2 CALU1∼5 0 2 表 9.2: Graal でレイヤを描画する時の最小幅(ls , ws ).POLY2,TPOLY は使用しているライブラリが存在しなかった ため記載せず. 112 変換 第9章 テクノロジーファイル これで全ての値が決定したので,DLR,DWR の値を計算します.ここでは最小幅エラーがでないようにし,細 かい調整は次章で行います. 例えば,101 ページより,RDS NWELL の DLR の値は 2 です.この値を算出するには,表 9.1 より NWELL の dyr の値は 10,表 9.2 より ls の値は 4 ,λ = 2 となるので, DLR = dyr − ls λ 12 − 4 × 2 = =2 2 2 となります.又,DWR の値は 4 です.同様に DW R = dxr − ws λ = 12 − 4 × 2 = 4 となります.参考のために N-Transistor の DWR,DLR の算出過程を全て載せておきます. N-Transistor λ = 2,ls = 4,ws = 1 dyr − ls λ 7−4×2 = = −0.5 2 2 dyr − ls λ 3−4×2 = = −2.5 DLRactive = 2 2 dyr − ls λ 7−4×2 DLRN Imp = = = −0.5 2 2 dyr − ls λ 15 − 4 × 2 DLRP W ell = = = 3.5 2 2 DLRpoly = DLRgate = DW Rpoly = DW Rgate = dxr − ws λ = 2 − 1 × 2 = 0 DW Ractive = dxr − ws λ = 8 − 1 × 2 = 6 DW RN Imp = dxr − ws λ = 12 − 1 × 2 = 10 DW RP W ell = dxr − ws λ = 20 − 1 × 2 = 18 Transistor 内の Gate と Poly は同一の値になります.違いは,Gate は Graal で使用され,Poly は Dreal で使用される ということです.又,DLR の Active と Diffusion(LCW),Diffusion(RCW)の値も同じになります.しかし,DWR の Diffusion(LCW),Diffusion(RCW)の値は違います.この値は “Symbolic To Real Translation” の 7,8 ページに あるように,DWR ではなく WR となります.WR は一定幅であり,DWR のように計算して dxr の値が変わることは ありません.この値はそれぞれの Diffusion の幅なので,Diffusion(LCW),Diffusion(RCW)共に 3 となります(107 ページの図 9.12 左). 以上で DLR,DWR の導き方を解説しましたが,逆に DLR,DWR,ws ,ls ,λ によって dxr ,dyr を導くこともでき ます.詳しい公式は “Symbolic To Real Translation” の 6∼8 ページを参照して下さい.この時の DLR,DWR,λ はテ クノロジーファイルに記述した値,ws ,ls は各 ap ファイルに記述された値です.よって,読み込み時の ws ,ls は Graal のテクノロジーファイルを使用しません.各レイヤの DWR は同一なのに幅が違うのは,ws が異なっているからです. MBK TO RDS CONNECTOR “MBK TO RDS CONNECTOR” は,ap フォーマットの C 宣言を cif フォーマッ トの 4X 宣言に変換するためのパラメータです. Magic では使用しませんが,Alliance では Lynx(Ver.5 では Cougar)を使用する際等に利用します. TABLE MBK_TO_RDS_CONNECTOR POLY RDS_POLY 0.00 ALU1 RDS_ALU1 0.50 ALU2 RDS_ALU2 -1.00 ALU3 RDS_ALU3 -1.00 ALU4 RDS_ALU4 1.00 TALU1 RDS_TALU1 0.50 TALU2 RDS_TALU2 -1.00 0.00 1.00 -0.50 -0.50 2.00 1.00 -0.50 9.3. テクノロジーファイルの記述方法及び値の設定 TALU3 TALU4 CALU1 CALU2 CALU3 CALU4 RDS_TALU3 RDS_TALU4 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 -1.00 1.00 0.50 -1.00 -1.00 1.00 113 -0.50 2.00 1.00 -0.50 -0.50 2.00 END パラメータの宣言は, MBK_name RDS_name DER DWR となります. ($ man prol)には DWR,DER の順に書いてありますが,おそらく間違いです.DER は DLR と同じ計算 方法で良いので,結果として DER,DWR は MBK TO RDS SEGMENT の DLR,DWR と同じ値になります.このパ ラメータに設定するレイヤは配線に使用される POLY,ALU,TALU,CALU です.このうち TALU,CALU は実際に 使われているか検証していないので,とりあえず記述しました.Graal で描画する際の Connector 宣言には,ALU しか ないので,TALU,CALU は必要無いかもしれません. 9.3.4 Reference,Contact MBK TO RDS REFERENCE このパラメータは次のようになります. TABLE MBK_TO_RDS_REFERENCE REF_CON RDS_REF 2.00 REF_REF RDS_REF 2.00 END ($ man prol)には載っていません. ($ man ap)及び asga 7.rds に多少解説があります. Symbolic の値は REF CON,REF REF の 2 種類です.必ずラベルを付ける必要があります.Ver.4 のセルライブラ リには REF CON が,Ver.5 のセルライブラリには REF REF が使用されていました.REF CON は 4X,4N,B 宣言 に,REF REF は 4N,B 宣言にそれぞれ変換されます. Ref は縦に 5λ 置きに配置されます(85 ページの図 8.6).Ver.4 では高さが 25λ の位置(ラベルは “* 25”)にコンタ クトを配置し,その位置まで Metal2 を配線します.それ以外の高さの Ref は Ver.4 では使用されていないようです(87 ページの図 8.9,88 ページの図 8.10).これは Ver.5 で NERO を使用することを見込んで Ver.4 の時点で設計していた ようです. Ref 宣言は SXLIB から導入されたようで,SCLIB にはありません.Ver.5 ではその他の高さの Ref にも Via を配置し ます(89 ページの図 8.11,90 ページの図 8.12,91 ページの図 8.13).Ver.4 では Metal2 は縦に配線されていましたが, Ver.5 では横に配線されます.そのために必要に応じて全ての Ref が参照できるようです. MBK TO RDS VIA このパラメータには,マスクレイヤの幅の値をそのまま記述します.SCN4ME SUBM 用のデ ザインルールを使用して Magic で出力した値と MOSIS の HP より,次のようになります. TABLE MBK_TO_RDS_VIA CONT_BODY_N \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_NIMP 8.00 RDS_NWELL 12.00 CONT_BODY_P \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_PIMP 8.00 RDS_PWELL 12.00 ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ DRC 114 第9章 CONT_DIF_N \ RDS_ALU1 RDS_CONT RDS_ACTIV RDS_NIMP RDS_PWELL CONT_DIF_P \ RDS_ALU1 RDS_CONT RDS_ACTIV RDS_PIMP RDS_NWELL CONT_POLY \ RDS_ALU1 RDS_CONT RDS_POLY CONT_VIA \ RDS_ALU1 RDS_VIA1 RDS_ALU2 CONT_VIA2 \ RDS_ALU2 RDS_VIA2 RDS_ALU3 CONT_VIA3 \ RDS_ALU3 RDS_VIA3 RDS_ALU4 END 4.00 2.00 4.00 8.00 16.00 ALL\ ALL\ DRC\ DRC\ DRC 4.00 2.00 4.00 8.00 16.00 ALL\ ALL\ DRC\ DRC\ DRC 4.00 2.00 4.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL 1 2 2 4 8 2 4 8 12 図 9.13: CONT BODY(Well Contact) 12 テクノロジーファイル 9.3. テクノロジーファイルの記述方法及び値の設定 4 115 2 2 4 8 16 2 4 8 16 図 9.14: CONT DIF(Diffusion Contact) 2 4 2 4 図 9.15: CONT POLY,CONT VIA1,2(Polysillicon Contact,VIA1,2) Magic で出力すると Active Cont と Poly Cont はそれぞれ別の略称ですが,MOSIS HP の Table 4: SCMOS Layer Map の NOTE に “Can be replaced by CONTACT” と書いてあるので,全てコンタクトで代用します. この他に “C X N”,“C X P” があるのですが,は Ver.5 では使用されていません. Ver.4 では “fplib”,“grog”,“rsa”,“sclib” で使用されています.基本的に Ver.4 では SXLIB を使用しますが,これ らのライブラリを必要とする場合は($ man prol),他の.rds ファイルを調べて下さい. 9.3.5 CIF LAYER,GDS LAYER CIF LAYER TABLE “CIF LAYER” は,RDS と CIF の略称を対応付けます. CIF_LAYER RDS_PWELL RDS_NWELL RDS_POLY RDS_CONT RDS_ALU1 CWP CWN CPG CCC CM1 116 第9章 2 4 6 2 4 6 図 9.16: CONT VIA3(VIA3) レイヤ名 CIF 形式での略称 scmos.tech27 SCN4ME SUBM P WELL CWP CWP N WELL CWN CWN POLY CPG CPG POLY2 CEL CEL? POLY Cont CCP CCP,CCC Metal1 CMF CM1 Metal2 CMS CM2 Metal3 - CM3 Metal4 - CM4 VIA CVA CV1 VIA2 - CV2 VIA3 - CV3 CSN CSN N Implant(N+Select) P Implant(P+Select) CSP CSP Active CAA CAA Active Cont CCA CCA,CCC 表 9.3: マスクレイヤと CIF 形式での略称 テクノロジーファイル 9.3. テクノロジーファイルの記述方法及び値の設定 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_VIA1 RDS_VIA2 RDS_VIA3 RDS_ACTIV RDS_NIMP RDS_PIMP RDS_REF 117 CM2 CM3 CM4 CM1 CM2 CM3 CM4 CV1 CV2 CV3 CAA CSN CSP REF END 第 7 章では scmos.tech27 を使用して出力しましたが,本章では SCN4ME SUBM を使用しているので一部略称が異な ります.尚,MOSIS の HP には両方の略称が掲載されています. Alliance は P 型基盤なので,P-Well は必要無いように思われますが,Magic の標準設定では関係する全てのレイヤを 重ね合わせて初めて画面に表示されるので,Well は N,P 共に記述します. コンタクトは Magic で出力した場合はポリコンタクト(CCP)とアクティブコンタクト(CCA)で略称が違いますが, 共にコンタクト(CCC)に置き換えることができます.Alliance でコンタクトの設定を CCC にして Magic で CIF を読 み込ませても問題なく表示できます. TALU は ALU と同じ略称になります.CALU は “MBK TO RDS SEGMENT” で RDS ALU を設定しているのでこ こでは問題ありません. REF は Alliance の宣言なので Magic では拡張宣言エラーとなります. Dreal を使用して CIF ファイルを読み込む際には,CIF のレイヤ名をこのパラメータで,RDS のレイヤ名に変換して 表示しているようです.よって,CIF のレイヤ名と RDS のレイヤ名の対応が合っていない場合にはエラーで表示できま せん. GDS LAYER RDS レイヤに対応する GDS の名前を数字で指定します.数字は MOSIS の HP 等に載っていますが, 今回は CIF 形式で出力するので空欄にしました. TABLE END 9.3.6 GDS_LAYER S2R POST TREAT,S2R OVERSIZE DENOTCH S2R BLOC RING WIDTH,S2R MINIMUM LAYER WIDTH この 4 つのパラメータは,s2r で実配置に変換する時生成される Implant,Well 等を併合処理するかどうか,又併合処 理をする際の幅のルールなどを設定するものです. 実配置にした際に Implant,Well が生成されますが(図 9.17),その時に隣接するレイヤが近すぎて最小間隔エラーが 生じることがあります(図 9.18).その際に Alliance では,隣接するレイヤの距離を離すのではなく,併合(Merging) することによりエラーを無くそうとします(図 9.19).尚,この例での幅は scmos.tech27 標準の設定でサブミクロンで はないので注意して下さい. このパラメータの設定には, ($ man prol)及び Symbolic To Real Translation の 19 ページを参照しています. S2R POST TREAT “S2R POST TREAT” は,s2r で変換した後の処理,つまり併合を行うかどうかを設定するパ ラメータです. TABLE S2R_POST_TREAT RDS_NWELL TREAT NULL 118 第9章 Well 9 10 テクノロジーファイル Well 10 図 9.17: Well の最小間隔は 9λ です(サブミクロンでは 18λ) Well 7 10 Well 10 図 9.18: 9λ よりも狭くなると,デザインルール違反となります(内側の斜線部分) Well 27 図 9.19: 併合処理をすると,2 つの領域が繋がり,エラーが無くなります. 9.3. テクノロジーファイルの記述方法及び値の設定 RDS_PWELL RDS_POLY RDS_CONT RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_VIA1 RDS_VIA2 RDS_VIA3 RDS_ACTIV RDS_NIMP RDS_PIMP RDS_ABOX TREAT TREAT NOTREAT TREAT TREAT TREAT TREAT TREAT TREAT TREAT TREAT NOTREAT NOTREAT NOTREAT TREAT TREAT TREAT NOTREAT 119 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL RDS_PIMP RDS_NIMP NULL END 最初のパラメータには併合を行うかどうかを設定します.設定できる値は TREAT(扱う)と,NOTREAT(扱わな い)です.上の例のように,コンタクト,VIA と Abutment Box 以外は併合を行います. その次のパラメータには領域が斜めに配置された場合も扱うかどうかを設定する項目です.NULL の場合には扱いま せん.これについては次章 136 ページの 10.2.4 で説明します. S2R OVERSIZE DENOTCH このパラメータは,隣接するレイヤの最小間隔を設定します(図 9.20).この間隔 よりも小さい場合には併合します. Layer i D Layer i ii 図 9.20: レイヤの最小間隔 Drmin TABLE S2R_OVERSIZE_DENOTCH RDS_Layer OSV RDS_Layer OSV ... END となります.OSV は Over Size Value の略で,この値は Symbolic To Real Translation の 19 ページに公式が載ってい ます. OSV i = 1 ii D − P GS 2 rmin ii まず,各レイヤの最小間隔 Drmin は表 9.4 の通りです. また,P GS は “Physical Grid Size” の略なので,100 ページ 9.3.2 より 0.5 を代入します.以上より,S2R OVERSIZE DENOTCH は,次のようになります. TABLE S2R_OVERSIZE_DENOTCH RDS_NWELL 8.50 120 第9章 レイヤ名 テクノロジーファイル ii 最小間隔 Drmin N-Well 18 P-Well 18 Polysillicon 3 Metal1 3 Metal2 3 Metal3 3 Metal4 6 Active 3 N-Implant 2 P-Implant 2 表 9.4: 各レイヤの最小間隔(SCN4ME SUBM) RDS_PWELL RDS_POLY RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_ACTIV RDS_NIMP RDS_PIMP 8.50 1.00 1.00 1.00 1.00 2.50 1.00 1.00 1.00 2.50 1.00 0.50 0.50 END このパラメータは最小間隔を直接設定する訳ではないことに注意して下さい. S2R MINIMUM LAYER WIDTH “S2R MINIMUM LAYER WIDTH” は,併合処理を行う際に生成される領 域の最小幅を設定します(図 9.21).この幅よりも狭くなると,デザインルール違反になります. Layer i w Layer i i 図 9.21: Wrmin TABLE S2R_MINIMUM_LAYER_WIDTH RDS_LAYER MLWi RDS_LAYER MLWi ... RDS_LAYER MLWi END ここで,“M LW i (Minimum Layer Width)” は,公式にもあるように i M LW i = Wrmin 9.3. テクノロジーファイルの記述方法及び値の設定 121 となります.W は Width,i はレイヤ,r は実配置(real),min は最小幅,という意味です.106 ページの表 9.1,図 9.6 ∼9.12 より,次のようになります. TABLE S2R_MINIMUM_LAYER_WIDTH RDS_NWELL 12.00 RDS_PWELL 12.00 RDS_POLY 2.00 RDS_ALU1 3.00 RDS_ALU2 3.00 RDS_ALU3 3.00 RDS_ALU4 6.00 RDS_TALU1 3.00 RDS_TALU2 3.00 RDS_TALU3 3.00 RDS_TALU4 6.00 RDS_ACTIV 3.00 RDS_NIMP 7.00 RDS_PIMP 7.00 END S2R BLOC RING WIDTH S2R BLOC RING WIDTH は別の階層のセルとの併合を行うためのパラメータです. TABLE S2R_BLOC_RING_WIDTH RDS_Layer BWRi RDS_Layer BWRi ... RDS_Layer BWRi END となります.BRW i (Bloc Ring Width)の式は ii BRW i = Drmin ii です.つまり,118 ページの表 9.4 の Drmin の値をそのまま設定します. TABLE S2R_BLOC_RING_WIDTH RDS_NWELL 18.00 RDS_PWELL 18.00 RDS_POLY 3.00 RDS_ALU1 3.00 RDS_ALU2 3.00 RDS_ALU3 3.00 RDS_ALU4 6.00 RDS_TALU1 3.00 RDS_TALU2 3.00 RDS_TALU3 3.00 RDS_TALU4 6.00 RDS_ACTIV 3.00 RDS_NIMP 2.00 RDS_PIMP 2.00 END 9.3.7 LYNX GRAPH,LYNX CAPA,LYNX RESISTOR,LYNX TRANSISTOR, LYNX DIFFUSION,LYNX BULK IMPLICIT このパラメータは,Lynx を使用してネットリストを抽出する際に使用します.現在調査中の為,パラメータ名のみ記 述します. 122 第9章 TABLE END LYNX_GRAPH TABLE END LYNX_CAPA TABLE END LYNX_RESISTOR TABLE END LYNX_TRANSISTOR TABLE END LYNX_DIFFUSION TABLE END LYNX_BULK_IMPLICIT 9.3.8 テクノロジーファイル MBK TO RDS BIGVIA HOLE,MBK TO RDS BIGVIA METAL, MBK TO RDS TURNVIA(Ver.5 専用) この 3 つのパラメータは Ver.5 になって採用されたものですが,ドキュメントはありませんでした.よって,空欄に しています.Ver.5 の etc ディレクトリに入っている “cmos.rds” を参考にして下さい.尚,“padlib” ライブラリには TURNVIA を使用しているので padlib を使用する場合は値を設定する必要があるでしょう.Ver.4 で使用する場合には 必要ありません. TABLE MBK_TO_RDS_BIGVIA_HOLE END TABLE MBK_TO_RDS_BIGVIA_METAL END TABLE MBK_TO_RDS_TURNVIA END 以上のパラメータをエディタで記述し,拡張子を “.rds” にして保存します.そして,環境変数 RDS TECHNO NAME に設定することで,このテクノロジーファイルを使用することができます.この時,異なる OS(例えば Windows 等) 上で記述すると,改行コードの違いでエラーになる場合があるので,なるべく使用している OS 上で記述して下さい. 本章で作成したテクノロジーファイルは完成版ではありません.次章でエラーが出る部分について順を追って修正し て行きます. 123 第 10 章 エラーの修正 第 9 章で作成したテクノロジーファイルを使用して,第 5 章で作成した equal.ap ファイルを変換しました(図 10.1). このファイルを Magic で読み込ませると,図 10.2 のようになります.読み込ませる際には 99 ページ 9.2.3 の読み 込み時の注意を参照して下さい.尚,この図は scmos.tech27 を使用していたときのものなので,今回使用している SCN4ME SUBM.20.TSMC.tech27 では画面に Via が表示されません. 図 10.1: Dreal で表示した場合 図 10.2: Magic で表示した場合 以上より,equal.ap ファイルに関してはデザインルール違反は生じないようです.しかし,Alliance の HP に掲載さ れている半加算機を変換した場合にはエラーが生じます.よって,半加算機の ap ファイルを作成するまでの流れを掲載 し,エラーが出ている箇所の修正を行うので,参考にして下さい. 尚,前章では Ver.5 用の作成方法を解説しましたが,実際には Ver.4 用にテクノロジーファイルを作成して後から Ver.5 に対応したので本章では Ver.4 用の内容になっています.Ver.5 は Ver.4 に対してテクノロジーファイルの違いは CALU と 3 つのパラメータが追加されるだけです. 124 第 10 章 エラーの修正 10.1 テストデータの作成(半加算機) まずは,半加算機の VHDL のソースコードの作成です.これは,HP http://asim.lip6.fr/alliance_old/alliance/doc/jumpstart/Examples/FullAdder.html より, -- External ports ENTITY halfadder IS PORT ( A, B, Vdd, Vss: IN BIT; Sum, Carry: OUT BIT ); END halfadder; -- Internal Behaviour ARCHITECTURE halfadder_data_flow OF halfadder IS SIGNAL A_bar, B_bar: BIT; BEGIN A_bar <= NOT A; B_bar <= NOT B; Sum <= ( A_bar AND B ) OR ( A AND B_bar ); Carry <= A AND B; END halfadder_data_flow; となります.続いて SCMAP を使用してネットリストを作成します. $ scmap halfadder halfadder さらに,SCR で ap ファイルを作成します. $ scr -p -r -i 1000 halfadder 以上で,halfadder.ap ファイルが作成されました.とりあえず前章で作成したテクノロジーファイルを使用して CIF ファイルに変換してみます.尚,Ver.4 で使用するために CALU 及び 3 つのパラメータを削除してあります. $ s2r halfadder これで,halfadder.cif ファイルが作成されました. Dreal で出力すると,図 10.3 のようになります.Magic で出力した場合には図 10.4 のようになります. 次のセクションでは,今回作成した halfadder.ap を使用してデザインルール違反を修正します. 10.1. テストデータの作成(半加算機) 図 10.3: Dreal で出力した半加算機のレイアウト. (pdf では右側が欠けているかもしれません. ) 125 126 第 10 章 エラーの修正 図 10.4: Magic で出力した半加算機のレイアウト(scmos.tech27 を使用しています) 10.2. 修正 10.2 修正 10.2.1 読み込み時のエラー 127 前章で作成したファイルを Magic で読み込ませると,“Input off lambda grid by 1/2; snapped to grid.” と,“unim- plemented user extension; ignored.” という 2 種類のエラーが出力されます. Input off lambda grid by 1/2; snapped to grid. このエラーは,図 10.5 のように,領域の幅又は長さが奇数の 時に,軸がグリッド上に配置されると,左右に 1/2λ ずつはみ出て描画しようとすることが原因です(図 10.5 左).しか し,実際には 1/2λ だけ描画することはできないため,ファイルの読み取り時にエラーを出力し,図 10.5 右のように表 示されます. 24 16 12 8 (0, 0) B 12 24 8 16; 図 10.5: (B 12 24 8 16;)宣言をそのまま表示しようとすると左図のようになりますが,半マスだけの描画は不可能な ので,実際の表示では右図のようになり,エラーが出力されます. 解決方法 以上より,最小 λ 幅を奇数にしておくのがエラー原因とわかりました.よって,前章の 106 ページの表 9.1 に 載せている Length と Width のうち,奇数の値は 1 足して偶数にします.例えば,メタルの最小幅は 3λ ですが,1 足し て 4λ にします.以上より,表 10.1 のようになります. よって,この値を使用して DLR,DWR を求めると,127 ページのような値になります. 128 第 10 章 エラーの修正 仮想配置 (MBK) 実配置 (RDS) 長さ:Length (dyr ) 幅:Width (dxr ) Metal1,2,3 Metal1,2,3 4 4 All Metal4 Metal4 6 6 All Poly Poly 2 2 All N-Well N-Well 12 12 All P-Well P-Well 12 12 All N-Diffusion N-Diffusion ACTIVE 4 4 4 4 N-Implant P-Well 8 16 8 16 P-Diffusion ACTIVE 4 4 4 4 P-Implant N-Well 8 16 8 16 N-Tie N-Tie ACTIVE N-Implant N-Well 4 4 8 12 4 4 8 12 Graal Dreal P-Tie P-Tie ACTIVE P-Implant 4 4 8 4 4 8 Graal Dreal 12 12 Gate 8 2 Graal N-Diff (LCW) N-Diff (RCW) Polisillicon ACTIVE N-Implant 4 4 8 4 8 3 3 2 8 12 Dreal 16 20 8 4 4 2 3 3 Graal 8 4 8 16 2 8 12 20 Dreal P-Diffusion P-Well N-Transistor P-Well P-Transistor Gate P-Diff (LCW) P-Diff (RCW) Polisillicon ACTIVE P-Implant N-Well 表示するツール Graal Dreal Graal Dreal 表 10.1: 奇数幅に 1 足して偶数幅に変更しました(下線を引いた箇所).このうち,Diffusion の LCW,RCW は幅が 3λ のままです.これは,LCW,Gate,RCW を全て並べると 8λ と,元々偶数幅になるためです. 10.2. 修正 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 129 TABLE MBK_TO_RDS_SEGMENT NWELL PWELL NDIF PDIF NTIE PTIE NTRANS PTRANS POLY ALU1 ALU2 ALU3 ALU4 TALU1 TALU2 TALU3 TALU4 END RDS_NWELL RDS_PWELL RDS_NDIF RDS_ACTIV RDS_NIMP RDS_PWELL RDS_PDIF RDS_ACTIV RDS_PIMP RDS_NWELL RDS_NTIE RDS_ACTIV RDS_NIMP RDS_NWELL RDS_PTIE RDS_ACTIV RDS_PIMP RDS_PWELL RDS_GATE RDS_NDIF RDS_NDIF RDS_POLY RDS_ACTIV RDS_NIMP RDS_PWELL RDS_GATE RDS_PDIF RDS_PDIF RDS_POLY RDS_ACTIV RDS_PIMP RDS_NWELL RDS_POLY RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW LCW RCW VW VW VW VW VW LCW RCW VW VW VW VW VW VW VW VW VW VW VW VW VW 2.00 2.00 0.00 0.00 2.00 6.00 0.00 0.00 2.00 6.00 0.00 0.00 2.00 4.00 0.00 0.00 2.00 4.00 0.00 -2.00 -2.00 0.00 -2.00 0.00 4.00 0.00 -2.00 -2.00 0.00 -2.00 0.00 4.00 0.00 1.00 0.00 0.00 1.00 1.00 0.00 0.00 1.00 4.00 4.00 0.00 0.00 4.00 12.00 0.00 0.00 4.00 12.00 0.00 0.00 4.00 8.00 0.00 0.00 4.00 8.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 2.00 0.00 0.00 2.00 2.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ALL ALL EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC ALL ALL ALL ALL ALL ALL ALL ALL ALL TABLE MBK_TO_RDS_CONNECTOR POLY RDS_POLY 0.00 0.00 ALU1 RDS_ALU1 1.00 2.00 ALU2 RDS_ALU2 0.00 0.00 ALU3 RDS_ALU3 0.00 0.00 ALU4 RDS_ALU4 1.00 2.00 TALU1 RDS_TALU1 1.00 2.00 TALU2 RDS_TALU2 0.00 0.00 TALU3 RDS_TALU3 0.00 0.00 TALU4 RDS_TALU4 1.00 2.00 END 以上のように設定し直してから halfadder.ap ファイルを s2r で変換して Magic で出力した結果が図 10.6 です.この ファイルを読み込んだ際には “Input off lambda grid by 1/2; snapped to grid.” というエラーは発生しません. 130 第 10 章 エラーの修正 図 10.6: 最小幅を偶数 λ にしました.124 ページの図 10.4 と比較すると,Via が無くなっています. しかし,図 10.6,図 10.23 を見ると,以前(124 ページの図 10.4)には存在していた Via が無くなっているのがわか ります1 . unimplemented user extension; ignored. Alliance で作成した CIF ファイルを Magic で読み込ませると,Alliance 固有の拡張宣言(4A,4X,4N,4l)を無視します.このうち,4A,4X,4l については Magic で同様の概念が無いので そのままでかまいません. 4N はラベルなので,ファイル内の文字を “94” に置換することで,画面に表示することができます.ただ,Magic で CIF ファイルを出力した場合と若干異なるので,Perl 等を使用してテキストを修正する必要があります. 1 Via が無くなったのは scmos.tech27 の場合です.SCN4ME SUBM 用のテクノロジーファイルでは,元々Via が表示されないようです. 10.2. 修正 10.2.2 131 ポリシリコンが短すぎるてエラーが出る問題 次に,図 10.7 のようにポリシリコンが短すぎるために 図 10.7: 白い部分がデザインルール違反が生じている箇所です.Transistor の Poly が短すぎるために Poly Contact と繋 がっていません. Polysilicon width must be at least 2 (MOSIS rule #3.1) というエラーが出ている箇所があります.そこで,ポリコンタクトの大きさを 4 から 6 に変更します.つまり,現在 1λ オーバラップしているのを 2λ 分オーバラップします(図 10.8).この時 Metal1 は変更しません. よって,MBK TO RDS VIA の CONT_POLY \ RDS_ALU1 RDS_CONT RDS_POLY 4.00 2.00 4.00 ALL\ ALL\ ALL CONT_POLY \ RDS_ALU1 RDS_CONT RDS_POLY 4.00 2.00 6.00 ALL\ ALL\ ALL を 132 第 10 章 エラーの修正 2 4 2 2 2 4 4 6 4 6 図 10.8: ポリコンタクトを修正します にします.その結果は図 10.9 のようになり,エラーは修正されました.右側にまだエラーが表示されている箇所があり ますが,これについては 146 ページで解説します. 10.2. 修正 133 図 10.9: エラーが修正されました 134 第 10 章 エラーの修正 Tr の修正はこれで完了ですが,検証中はポリシリコンを 2λ 伸ばしていました.この場合,軸の反対側も同時に伸び るので,+2λ 伸ばしたい場合には,+4λ 分増やします(図 10.10). +2 2 4 2 4 12 (+4) 8 3 3 +2 図 10.10: 上下それぞれ +2λ 分伸ばします.わかりやすくするために,Implant,Well は除いています. よって,dyrpoly を 8 から 12 に変更すると,Transistor の RDS POLY,RDS GATE の DLR は 0 から 2 になります. 以上のように設定して,halfadder.ap ファイルを s2r で変換し,Magic で表示すると,図 10.11 のようになります. さて,ここで,図 10.10 のように,Poly が反対側にも +2 オーバラップしました.この場合は Ver.5 の場合上下に OCP (配置ツール)を使用して配置された他のセルの Poly との間に最小間隔エラーが生じます.よって,Tr に関しては左の 状態のままで,これ以上の修正は必要ありません. 10.2. 修正 135 図 10.11: エラーは修正されます(この画像は scmos.tech27 で描画しています)しかし,反対側にも Poly(Gate)が伸 びるので,この方法は用いません. 136 10.2.3 第 10 章 エラーの修正 Transistor の Active に合わせて Diffution の長さも調整する ここまでで,Transistor のエラーは無くなりました.Diffusion は現在最小幅に設定していますが,Transistor に合わせ て長さを調整します.現在は図 10.12 のようになっています.これは,Transistor に比べて,Diffusion の領域が 2λ 分内 側に凹んでいます.よって,Diffusion の凹んだ領域を Transistor の領域と同じ位置に来るように調節します(図 10.13). Implant,Well もオーバラップがそれぞれ 2,6(Implant からは+4)になるように調節します. 図 10.12: Diffusion 領域が Transistor に比べて凹んでいます. +2 4 8(+4) 4 +2 4 図 10.13: わかりやすくするために,Implant,Well は除いています. 以上より,図 10.14 のようになりました. 10.2. 修正 137 図 10.14: Transistor と同じ高さ?になりました. 138 10.2.4 第 10 章 エラーの修正 Well の併合エラー 現在 Well はテクノロジーファイルの “S2R POST TREAT” で後処理をするように設定をしていますが,図 10.15,図 10.16 のように,併合されない部分があります. 図 10.15: そのままでは斜めには併合されません. 10.2. 修正 139 図 10.16: Dreal で表示した場合. 140 第 10 章 エラーの修正 前章の 115 ページの 9.3.6 で,そのまま設定すると,斜めの併合を考慮せずに,今回のようなエラーが生じます.よっ て,115 ページの 9.3.6 にある設定を使用します.2 つ目のパラメータには NULL が設定されています. TABLE S2R_POST_TREAT RDS_NWELL TREAT RDS_PWELL TREAT NULL NULL ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ END この値を RDS NWELL もしくは RDS PWELL に変更すると,図 10.17,図 10.18 のように併合処理が斜めにも実行 され,デザインルール違反は修正されます. TABLE S2R_POST_TREAT RDS_NWELL TREAT RDS_PWELL TREAT RDS_PWELL RDS_NWELL ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ END 詳しくは($ man prol)の “Post treatment configuration table” を参照して下さい.ここで,N と P を反対にしても この例では上手く併合できますが,違うレイアウトでテストした場合には s2r を実行した際に “***s2r error***, scotch error” と表示されたので,RDS NWELL の場合には RDS PWELL を,RDS PWELL には RDS NWELL を設定する ようにして下さい.尚,ここで用いた画像は Poly Cont の修正前のものを使用しています. 図 10.17: 併合処理が実行され,エラーが修正されました. 10.2. 修正 141 図 10.18: Dreal で表示した場合. 142 10.2.5 第 10 章 エラーの修正 配線の Wire 設定での隙間がエラーになる問題(Polisilicon,Alu1,Alu2) 配線の dyr を最小幅に設定したままだと,Graal で描画する際の Wire 設定で向きを変えた時に隙間が生じてエラーに なる場合があります. 例えば,図 10.19 のように Graal で配線を描画します.この時に Wire 設定にすることで,終点と次の始点の軸ずれが 起こらないように続けて描くことができます.そのファイルを s2r で変換した後,Magic で表示すると,図 10.20 のよう になり,最小幅違反になります. 図 10.19: Graal で配線を Wire 設定で描画した状態.左か 図 10.20: Magic で表示すると,デザインルール違反が生じ ら,Alu2,Alu1,Poly. ていることがわかります. よって,この隙間の分だけ配線を長くする必要があります.図 10.20 より,Poly,Alu1 は+1,Alu2 は+2 にします. 実際には軸の両側に伸びるので,2 倍の長さを設定します(図 10.21)(Poly,Alu1 は+2,Alu2 は+4). 2 12 2 2 16(12+4) 図 10.21: 例として,Alu2 を扱っています.ルール違反を修正するために,最小長を+4 にします. よって,Poly,Alu1,Alu2 の DLR はそれぞれ,1,2,2 となります(計算は省略).以上より,図 10.22 のように, 10.2. 修正 143 エラーが修正されました. 図 10.22: Magic でエラーが修正できたことが確認できました. Alu3 は Alu2 と同様の値,Alu4 は 6λ から 10λ に変更となります. 144 第 10 章 エラーの修正 10.3 Magic でデザインルールをチェックする場合の注意点 10.3.1 Via が表示されない Alliance で生成した CIF ファイルを Magic で読み込ませた場合,Dreal では表示されていた Via が表示されなくなる 場合があります(図 10.23,図 10.24).CIF ファイルを読むと,確かに記述されています.これには Magic 側に 2 種類 の原因があります. 図 10.23: 拡大図.Via が無くなっています. テクノロジーファイルを SCN4ME SUBM.20.TSMC.tech27 にしている場合 テクノロジーファイルが SCN4ME SUBM.20.TSMC.tech27 の場合,Metal を 4 層,Via3 まで使用できますが,その 代わりにショートカット “F12” で VIA1 を表示することはできないようです.VIA1 を入力するには,範囲を指定して “paint v1” を入力します.v1 では VIA1,Metal1,Metal2 を一度に描画します.この場合,Metal1,2 が 1λ ずつオーバ ラップするので最小幅は 4λ になります.又,VIA1 のみを描画したい場合は “paint gv1” と入力します.こちらの場合 は v1 の最小幅は 2λ ですが,Metal1,2 は後から 1λ ずつオーバラップするように描画しなければなりません. この時に,テクノロジーファイルの記述が悪いのか,本来の群青色の VIA1 は表示されずに見た目は Metal1 と同様の レイアウトが描画されます.よって,この場合は表示されないのではなく,表示されているものの区別が付いていない 状態と言えます.このテクノロジーファイルを使用している状態で Via1 のエラーはおそらく無いと思うので,そのまま にしていても良いでしょう.気になる場合は Magic 側で同様のオプションの別のファイルを使用するか,テクノロジー ファイルを書き換えて下さい. 階層構造の場合 Via1 を階層的に配置した場合,Magic では上手く表示されないようです(図 10.25).同様に Diff もエラーが表示され ています.これは,s2r で合成時にトップセルに Active が生成されてしまっているのが原因のようです(図 10.26).こ 10.3. Magic でデザインルールをチェックする場合の注意点 145 図 10.24: Dreal では Via が表示されています. のエラーを回避するには Graal 上で Real flat を実行し,全セルを一つに纏めて階層化を止める方法があります.その場 合は全てエラー無く表示されます.もっとも,Magic でデザインルールチェックをしない場合には必要ありません. 146 第 10 章 エラーの修正 図 10.25: 白くなっている部分がデザインルール違反です下の配線には表示はされていませんが,VIA が設置されてい ます. 10.3. Magic でデザインルールをチェックする場合の注意点 図 10.26: トップセルに Active が生成されています 147 148 10.3.2 第 10 章 エラーの修正 コンタクトと VIA が接触している場合 SCN4ME SUBM では Stacked Via が適用されるのでコンタクトと VIA が接触していてもエラーにはなりません(MOSIS Rule # 8.4 が除外されます).しかし,131 ページの図 10.9 のように,画面にはエラーが表示されています(図 10.27). これは,Magic の仕様もしくは Magic 側のテクノロジーファイル記述ミスのようです. 図 10.27: エラーと出ていますが,実は違います Poly_Cont Via1 (a) Poly_Cont Via (8),+9: $<;= 1> Via1 ? 957 81. BC"@D E"AF 1Via1 4#GHJ .I Poly_Cont KLM 2*35 4 2 G1# + N.8 1I (c) "!#%$&'# (*),+.-/01 2354 .6 (b) Poly_Cont 図 10.28: エラーの出る仕組み 紛らわしいですが,Via と Contact が近づいていてエラーが出ている場合はほぼこの例のと同様の症状だと考えて下 さい.又,Via も画面に表示されないのでわかりづらいでしょう.よって,最終的には Alliance のテクノロジーファイ ル(∼.rds)に Druc 用のデザインルールを記述するのが良いかもしれません.Magic はマスクレイヤの最小幅を調べる 時には役立つと思います. 10.4. Sub-Micron ルールを適用しない場合はどうなるか 10.4 Sub-Micron ルールを適用しない場合はどうなるか 10.4.1 Via と Polysilicon が重なる 149 Via が表示できた場合でも,図 10.29 のように,デザインルール違反が生じます.これは, Via must be on a flat surface (MOSIS rule # 8.4,5) 言う内容で,つまり,Via の下の層は平らでなければいけないと言っています. 図 10.29: Via が表示できたとしても,デザインルール違反が生じます(scmos.tech27 を使用). このエラーはサブミクロンプロセスには適用されないので SCN4ME SUBM では問題ありません. 10.4.2 Stacked Via が適用されない scmos.tech27 等サブミクロンプロセスよりも 1λ が大きい場合には Stacked Via が適用されないことが多いです.よっ て,146 ページの図 10.27 などのケースではデザインルールエラーになります. 150 第 10 章 エラーの修正 これでテクノロジーファイルのうち,記述方法が分かっている部分については全て修正を終えたと思います.次章で は,現時点で完成している SCN4ME SUBM 及び,SCN5M SUBM 用のテクノロジーファイル及び使用上の注意につい て解説します.尚,それぞれ Ver.4,Ver.5 で使用可能です. 151 第 11 章 修正結果 11.1 修正結果 ここまでで各レイヤについて調整を行い,エラーを修正してきました.完成した SCN4ME SUBM の各領域の長さ,幅 を纏めると,図 11.1∼11.13,表 11.1 のようになります.この他に,Poly Cont も修正しています(129 ページ 10.2.2) 3 6 3 4 図 11.1: Metal1 の最小幅. 3 8 3 4 図 11.2: Metal2,3 の最小幅. 152 第 11 章 6 10 6 6 図 11.3: Metal4 の最小幅. 4 2 2 2 図 11.4: Polysilicon の最小幅. 12 12 図 11.5: Well の最小幅.Well は修正の必要ありませんでした. 修正結果 11.1. 修正結果 153 3 8 3 4 図 11.6: Diffusion(擬似レイヤ)の最小幅. RDS_ACTIV 3 7 3 RDS_IMP 7 RDS_WELL 15 図 11.7: Diffusion(マスクレイヤ)の最小幅(修正前). 15 154 第 11 章 4 2 8 12 20 RDS_ACTIV 4 RDS_IMP 8 RDS_WELL 16 図 11.8: Diffusion(マスクレイヤ)の最小幅(修正後). RDS_TIE 3 RDS_TIE 3 4 図 11.9: Tie(擬似レイヤ)の最小幅. 4 修正結果 11.1. 修正結果 155 RDS_WELL RDS_WELL RDS_IMP RDS_IMP RDS_ACTIV RDS_ACTIV 3 7 4 12 8 3 4 7 8 12 12 図 11.10: Tie(マスクレイヤ)の最小幅. RDS_GATE RDS_GATE 2 2 7 3 3 4 8 3 3 3 2 2 図 11.11: Transistor(擬似レイヤ)の最小幅. 12 156 第 11 章 12 2 15 7 3 3 3 2 20 図 11.12: Transistor(マスクレイヤ)の最小幅(修正前). RDS_POLY RDS_IMP 12 2 8 16 8 4 8 2 4 3 2 5 RDS_ACTIVE RDS_WELL 20 図 11.13: Transistor(マスクレイヤ)の最小幅(修正後). 修正結果 11.1. 修正結果 157 仮想配置 (MBK) 実配置 (RDS) 長さ:Length (dyr ) 幅:Width (dxr ) Metal1 Metal1 6 4 All 11.1 Metal2 Metal2 8 4 All 11.2 Metal3 Metal3 8 4 All 11.2 Metal4 Metal4 10 6 All 11.3 Poly Poly 4 2 All 11.4 N-Well N-Well 12 12 All 11.5 P-Well P-Well 12 12 All 11.5 N-Diffusion N-Diffusion ACTIVE N-Implant P-Well 8 8 12 20 4 4 8 16 Graal Dreal 11.6 11.7, 11.8 P-Diffusion P-Diffusion ACTIVE P-Implant 8 8 12 4 4 8 Graal Dreal 11.6 11.7, 11.8 N-Well 20 16 N-Tie 4 4 Graal 11.9 ACTIVE N-Implant N-Well 4 8 12 4 8 12 Dreal 11.10 P-Tie ACTIVE P-Implant 4 4 8 4 4 8 Graal Dreal 11.9 11.10 P-Well 12 12 Gate N-Diff (LCW) N-Diff (RCW) Polisillicon ACTIVE N-Implant P-Well 8 4 4 8 4 8 16 2 3 3 2 8 12 20 Graal 11.11 Dreal 11.12, 11.13 Gate P-Diff (LCW) P-Diff (RCW) Polisillicon ACTIVE 8 4 4 8 4 2 3 3 2 8 Graal 11.11 Dreal 11.12, 11.13 8 16 12 20 N-Tie P-Tie N-Transistor P-Transistor P-Implant N-Well 表 11.1: SCMOS4ME SUBM の修正結果 表示するツール 図 158 第 11 章 修正結果 以上よりテクノロジーファイルは次のようになります.中身が無いパラメータについては調査中です.作成したテクノ ロジーファイルは “mosis TSMC SCN4ME SUBM v5 beta1.rds” としました.v5 は Ver.5 用という意味です. DEFINE PHYSICAL_GRID 0.5 DEFINE LAMBDA 2.0 TABLE MBK_TO_RDS_SEGMENT NWELL PWELL NDIF PDIF NTIE PTIE NTRANS PTRANS POLY ALU1 ALU2 ALU3 ALU4 TALU1 TALU2 TALU3 TALU4 CALU1 CALU2 CALU3 CALU4 END RDS_NWELL RDS_PWELL RDS_NDIF RDS_ACTIV RDS_NIMP RDS_PWELL RDS_PDIF RDS_ACTIV RDS_PIMP RDS_NWELL RDS_NTIE RDS_ACTIV RDS_NIMP RDS_NWELL RDS_PTIE RDS_ACTIV RDS_PIMP RDS_PWELL RDS_GATE RDS_NDIF RDS_NDIF RDS_POLY RDS_ACTIV RDS_NIMP RDS_PWELL RDS_GATE RDS_PDIF RDS_PDIF RDS_POLY RDS_ACTIV RDS_PIMP RDS_NWELL RDS_POLY RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW LCW RCW VW VW VW VW VW LCW RCW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW 2.00 2.00 2.00 2.00 4.00 8.00 2.00 2.00 4.00 8.00 0.00 0.00 2.00 4.00 0.00 0.00 2.00 4.00 0.00 -2.00 -2.00 0.00 -2.00 0.00 4.00 0.00 -2.00 -2.00 0.00 -2.00 0.00 4.00 1.00 2.00 2.00 2.00 3.00 2.00 2.00 2.00 3.00 2.00 2.00 2.00 3.00 TABLE MBK_TO_RDS_CONNECTOR POLY RDS_POLY 1.00 4.00 4.00 0.00 0.00 4.00 12.00 0.00 0.00 4.00 12.00 0.00 0.00 4.00 8.00 0.00 0.00 4.00 8.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 2.00 0.00 0.00 2.00 2.00 0.00 0.00 2.00 2.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ALL ALL EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL ALL 11.1. 修正結果 ALU1 ALU2 ALU3 ALU4 TALU1 TALU2 TALU3 TALU4 CALU1 CALU2 CALU3 CALU4 159 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 2.00 2.00 2.00 3.00 2.00 2.00 2.00 3.00 2.00 2.00 2.00 3.00 END TABLE MBK_TO_RDS_REFERENCE REF_CON RDS_REF 2.00 REF_REF RDS_REF 2.00 END TABLE MBK_TO_RDS_VIA CONT_BODY_N \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_NIMP 8.00 RDS_NWELL 12.00 CONT_BODY_P \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_PIMP 8.00 RDS_PWELL 12.00 CONT_DIF_N \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_NIMP 8.00 RDS_PWELL 16.00 CONT_DIF_P \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_PIMP 8.00 RDS_NWELL 16.00 CONT_POLY \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_POLY 6.00 CONT_VIA \ RDS_ALU1 4.00 RDS_VIA1 2.00 RDS_ALU2 4.00 CONT_VIA2 \ RDS_ALU2 4.00 RDS_VIA2 2.00 RDS_ALU3 4.00 CONT_VIA3 \ RDS_ALU3 4.00 RDS_VIA3 2.00 ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ ALL ALL\ ALL\ ALL ALL\ ALL\ ALL ALL\ ALL\ 2.00 0.00 0.00 2.00 2.00 0.00 0.00 2.00 2.00 0.00 0.00 2.00 160 第 11 章 RDS_ALU4 6.00 ALL END TABLE CIF_LAYER RDS_PWELL RDS_NWELL RDS_POLY RDS_CONT RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_VIA1 RDS_VIA2 RDS_VIA3 RDS_ACTIV RDS_NIMP RDS_PIMP RDS_REF CWP CWN CPG CCC CM1 CM2 CM3 CM4 CM1 CM2 CM3 CM4 CV1 CV2 CV3 CAA CSN CSP REF END TABLE END GDS_LAYER TABLE S2R_POST_TREAT RDS_NWELL TREAT RDS_PWELL TREAT RDS_POLY TREAT RDS_CONT NOTREAT RDS_ALU1 TREAT RDS_ALU2 TREAT RDS_ALU3 TREAT RDS_ALU4 TREAT RDS_TALU1 TREAT RDS_TALU2 TREAT RDS_TALU3 TREAT RDS_TALU4 TREAT RDS_VIA1 NOTREAT RDS_VIA2 NOTREAT RDS_VIA3 NOTREAT RDS_ACTIV TREAT RDS_NIMP TREAT RDS_PIMP TREAT RDS_ABOX NOTREAT END TABLE S2R_OVERSIZE_DENOTCH RDS_NWELL 8.50 RDS_PWELL 8.50 RDS_POLY 1.00 RDS_ALU1 1.00 RDS_ALU2 1.00 RDS_ALU3 1.00 RDS_ALU4 2.50 RDS_TALU1 1.00 RDS_PWELL RDS_NWELL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL RDS_PIMP RDS_NIMP NULL 修正結果 11.1. 修正結果 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_ACTIV RDS_NIMP RDS_PIMP 161 1.00 1.00 2.50 1.00 0.50 0.50 END TABLE S2R_MINIMUM_LAYER_WIDTH RDS_NWELL 12.00 RDS_PWELL 12.00 RDS_POLY 2.00 RDS_ALU1 3.00 RDS_ALU2 3.00 RDS_ALU3 3.00 RDS_ALU4 6.00 RDS_TALU1 3.00 RDS_TALU2 3.00 RDS_TALU3 3.00 RDS_TALU4 6.00 RDS_ACTIV 3.00 RDS_NIMP 7.00 RDS_PIMP 7.00 END TABLE S2R_BLOC_RING_WIDTH RDS_NWELL 18.00 RDS_PWELL 18.00 RDS_POLY 3.00 RDS_ALU1 3.00 RDS_ALU2 3.00 RDS_ALU3 3.00 RDS_ALU4 6.00 RDS_TALU1 3.00 RDS_TALU2 3.00 RDS_TALU3 3.00 RDS_TALU4 6.00 RDS_ACTIV 3.00 RDS_NIMP 2.00 RDS_PIMP 2.00 END TABLE END LYNX_GRAPH TABLE END LYNX_CAPA TABLE END LYNX_RESISTOR TABLE END LYNX_TRANSISTOR TABLE END LYNX_DIFFUSION TABLE END LYNX_BULK_IMPLICIT 162 第 11 章 修正結果 TABLE MBK_TO_RDS_BIGVIA_HOLE END TABLE MBK_TO_RDS_BIGVIA_METAL END TABLE MBK_TO_RDS_TURNVIA END 11.2 5 層配線(SCN5M SUBM)にしたい場合 4 層配線の場合,Metal4 の最小幅,最小間隔が 6λ なので 4 層使用して合成した場合デザインルール違反になります (∼より).そこで,合成時には 3 層まで使用し,手動で 4 層目は電源,外部ピンとの接続用に使用すると良いと思います. 5 層配線の場合は Metal4 の最小幅,最小間隔は 3 のままになります. http://www.mosis.org/Technical/Designrules/scmos/scmos-metal4.html#22 さらに Metal5 の最小幅,最小間隔は 4 なので合成時にデザインルール違反にはなりません. http://www.mosis.org/Technical/Designrules/scmos/scmos-metal5.html#26 ここで,5 層配線のテクノロジーファイルを紹介します.方法は Metal4 の最小幅,最小間隔を設定しなおし,VIA4, Metal5 を追加することです.以下のコメントはファイル内の同じ番号と対応させて読んで下さい.尚,ファイル名は “mosis TSMC SCN5M SUBM v5 beta1.rds” としました. 11.2. 5 層配線(SCN5M SUBM)にしたい場合 163 #1. ALU4,TALU4,CALU4 を 6λ から 4λ に変更します.値は ALU2,ALU3 と同一になります.最小幅は 3λ です が,偶数にすることを考慮して 4λ にしました. #2. ALU5,TALU5,CALU5 を追加します.最小幅は 4λ なので,ALU2∼4 と同一の値になります. #3. ALU4 を修正します.値は MBK TO RDS SEGMENT と同一です. #4. ALU5 を追加します.同じく値は ALU2∼4 と同様です. #5. 最小幅の変更に合わせて VIA3 の ALU4 を 6→4 に変更します. #6. VIA4 を追加します. #7,8. VIA4,ALU5 を追加します. #9. ALU4 の最小間隔を 6→4 に変更します.又,ALU5 を追加します.ALU5 の最小間隔は 4λ です. #10. 同様に ALU3 の値を修正し,ALU4 を追加します. DEFINE PHYSICAL_GRID 0.5 DEFINE LAMBDA 2.0 TABLE MBK_TO_RDS_SEGMENT NWELL PWELL NDIF PDIF NTIE PTIE NTRANS PTRANS POLY ALU1 ALU2 ALU3 ALU4 ALU5 TALU1 RDS_NWELL RDS_PWELL RDS_NDIF RDS_ACTIV RDS_NIMP RDS_PWELL RDS_PDIF RDS_ACTIV RDS_PIMP RDS_NWELL RDS_NTIE RDS_ACTIV RDS_NIMP RDS_NWELL RDS_PTIE RDS_ACTIV RDS_PIMP RDS_PWELL RDS_GATE RDS_NDIF RDS_NDIF RDS_POLY RDS_ACTIV RDS_NIMP RDS_PWELL RDS_GATE RDS_PDIF RDS_PDIF RDS_POLY RDS_ACTIV RDS_PIMP RDS_NWELL RDS_POLY RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_ALU5 RDS_TALU1 VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW VW LCW RCW VW VW VW VW VW LCW RCW VW VW VW VW VW VW VW VW VW VW VW 2.00 2.00 2.00 2.00 4.00 8.00 2.00 2.00 4.00 8.00 0.00 0.00 2.00 4.00 0.00 0.00 2.00 4.00 0.00 -2.00 -2.00 0.00 -2.00 0.00 4.00 0.00 -2.00 -2.00 0.00 -2.00 0.00 4.00 1.00 2.00 2.00 2.00 2.00 2.00 2.00 4.00 4.00 0.00 0.00 4.00 12.00 0.00 0.00 4.00 12.00 0.00 0.00 4.00 8.00 0.00 0.00 4.00 8.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 3.00 3.00 0.00 6.00 10.00 18.00 0.00 2.00 0.00 0.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 ALL ALL EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC EXT\ EXT\ EXT\ DRC\ DRC\ DRC\ DRC ALL ALL ALL ALL ALL ALL ALL #1 #2 164 第 11 章 TALU2 TALU3 TALU4 TALU5 CALU1 CALU2 CALU3 CALU4 CALU5 END RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_TALU5 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_ALU4 VW VW VW VW VW VW VW VW VW 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 2.00 TABLE MBK_TO_RDS_CONNECTOR POLY RDS_POLY 1.00 ALU1 RDS_ALU1 2.00 ALU2 RDS_ALU2 2.00 ALU3 RDS_ALU3 2.00 ALU4 RDS_ALU4 2.00 ALU5 RDS_ALU5 2.00 TALU1 RDS_TALU1 2.00 TALU2 RDS_TALU2 2.00 TALU3 RDS_TALU3 2.00 TALU4 RDS_TALU4 2.00 TALU5 RDS_TALU5 2.00 CALU1 RDS_ALU1 2.00 CALU2 RDS_ALU2 2.00 CALU3 RDS_ALU3 2.00 CALU4 RDS_ALU4 2.00 CALU5 RDS_ALU5 2.00 END TABLE MBK_TO_RDS_REFERENCE REF_CON RDS_REF 2.00 REF_REF RDS_REF 2.00 END TABLE MBK_TO_RDS_VIA CONT_BODY_N \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_NIMP 8.00 RDS_NWELL 12.00 CONT_BODY_P \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_PIMP 8.00 RDS_PWELL 12.00 CONT_DIF_N \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_NIMP 8.00 RDS_PWELL 16.00 CONT_DIF_P \ RDS_ALU1 4.00 RDS_CONT 2.00 RDS_ACTIV 4.00 RDS_PIMP 8.00 ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ DRC ALL\ ALL\ DRC\ DRC\ 0.00 0.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 2.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 #3 #4 #3 #4 #3 #4 ALL ALL ALL ALL ALL ALL ALL ALL ALL #1 #2 #1 #2 修正結果 11.2. 5 層配線(SCN5M SUBM)にしたい場合 RDS_NWELL CONT_POLY \ RDS_ALU1 RDS_CONT RDS_POLY CONT_VIA \ RDS_ALU1 RDS_VIA1 RDS_ALU2 CONT_VIA2 \ RDS_ALU2 RDS_VIA2 RDS_ALU3 CONT_VIA3 \ RDS_ALU3 RDS_VIA3 RDS_ALU4 CONT_VIA4 \ RDS_ALU4 RDS_VIA4 RDS_ALU5 END TABLE CIF_LAYER RDS_PWELL RDS_NWELL RDS_POLY RDS_CONT RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_ALU5 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_TALU5 RDS_VIA1 RDS_VIA2 RDS_VIA3 RDS_VIA4 RDS_ACTIV RDS_NIMP RDS_PIMP RDS_REF 16.00 DRC 4.00 2.00 6.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL 4.00 2.00 4.00 ALL\ ALL\ ALL CWP CWN CPG CCC CM1 CM2 CM3 CM4 CM5 CM1 CM2 CM3 CM4 CM5 CV1 CV2 CV3 CV4 CAA CSN CSP REF #5 #6 #7 #7 #7 END TABLE END GDS_LAYER TABLE S2R_POST_TREAT RDS_NWELL TREAT RDS_PWELL TREAT RDS_POLY TREAT RDS_CONT NOTREAT RDS_ALU1 TREAT RDS_ALU2 TREAT RDS_ALU3 TREAT RDS_PWELL RDS_NWELL NULL NULL NULL NULL NULL 165 166 第 11 章 RDS_ALU4 RDS_ALU5 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_TALU5 RDS_VIA1 RDS_VIA2 RDS_VIA3 RDS_VIA4 RDS_ACTIV RDS_NIMP RDS_PIMP RDS_ABOX TREAT TREAT TREAT TREAT TREAT TREAT TREAT NOTREAT NOTREAT NOTREAT NOTREAT TREAT TREAT TREAT NOTREAT NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL RDS_PIMP RDS_NIMP NULL END TABLE S2R_OVERSIZE_DENOTCH RDS_NWELL 8.50 RDS_PWELL 8.50 RDS_POLY 1.00 RDS_ALU1 1.00 RDS_ALU2 1.00 RDS_ALU3 1.00 RDS_ALU4 1.00 RDS_ALU5 1.50 RDS_TALU1 1.00 RDS_TALU2 1.00 RDS_TALU3 1.00 RDS_TALU4 1.00 RDS_TALU5 1.50 RDS_ACTIV 1.00 RDS_NIMP 0.50 RDS_PIMP 0.50 #9 #9 #9 #9 END TABLE S2R_MINIMUM_LAYER_WIDTH RDS_NWELL 12.00 RDS_PWELL 12.00 RDS_POLY 2.00 RDS_ALU1 3.00 RDS_ALU2 3.00 RDS_ALU3 3.00 RDS_ALU4 3.00 RDS_ALU5 4.00 RDS_TALU1 3.00 RDS_TALU2 3.00 RDS_TALU3 3.00 RDS_TALU4 3.00 RDS_TALU5 4.00 RDS_ACTIV 3.00 RDS_NIMP 7.00 RDS_PIMP 7.00 END TABLE S2R_BLOC_RING_WIDTH RDS_NWELL 18.00 RDS_PWELL 18.00 RDS_POLY 3.00 #10 #10 #10 #10 #8 #8 #8 修正結果 11.3. Ver.4 用に変更したい場合 RDS_ALU1 RDS_ALU2 RDS_ALU3 RDS_ALU4 RDS_ALU5 RDS_TALU1 RDS_TALU2 RDS_TALU3 RDS_TALU4 RDS_TALU5 RDS_ACTIV RDS_NIMP RDS_PIMP 3.00 3.00 3.00 3.00 4.00 3.00 3.00 3.00 3.00 4.00 3.00 2.00 2.00 167 #9 #9 #9 #9 END TABLE END LYNX_GRAPH TABLE END LYNX_CAPA TABLE END LYNX_RESISTOR TABLE END LYNX_TRANSISTOR TABLE END LYNX_DIFFUSION TABLE END LYNX_BULK_IMPLICIT TABLE MBK_TO_RDS_BIGVIA_HOLE END TABLE MBK_TO_RDS_BIGVIA_METAL END TABLE MBK_TO_RDS_TURNVIA END 以上で SCN5ME SUBM が作成できました. 11.3 Ver.4 用に変更したい場合 Alliance Ver.4.0.6 では CALU というレイヤはありませんので MBK TO RDS SEGMENT と MBK TO RDS CONNECTOR の CALU を記述した行を削除します.そして, 最後に書いた 3 つのパラメータ TABLE MBK_TO_RDS_BIGVIA_HOLE END TABLE MBK_TO_RDS_BIGVIA_METAL END TABLE MBK_TO_RDS_TURNVIA 168 第 11 章 修正結果 END も Ver.5 で使用されるので削除します. 以上で Ver.4 でも使用できるはずです. 11.4 不明瞭な点及び,今後の課題など 以上でそれぞれのオプションでのデザインルールを使用してチップのコアレベルでの設計まではできると思います.こ こでは実際のチップ試作をするに当たっての注意点,残された疑問点,今後の課題について載せて置きます. 現時点ではまだテクノロジーファイルをエラー無く作成できた段階で,チップレベルでの設計は今後の課題とします. といっても,ツールの使用方法さえわかってしまえば,それほど難しくは無いでしょう. • 現在 SCN4ME SUBM において,THICK ACTIVE,POLY2,POLY2 CONTACT,GLASS,PADS,Comments については考慮していません. • Ver.5 用には今回設定していない BIGVIA,TURNVIA 等 3 つのパラメータの設定もした方が良いかもしれません. • Ver.4 では scr で 3 層以上の配線方法がわかっていません. • SCN4ME SUBM ではなく,SCN4M SUBM にも応用できると思います. • SCN4ME SUBM を使用する場合,SCR(Ver.4)もしくは NERO(Ver.5)で自動合成する際に Metal4 が最小間 隔エラーになります(167 ページの 11.6).よって,自動配線は Metal3 までとし,Metal4 は外部接続などに使用 する必要があるかもしれません. • SCN5ME SUBM を使用すれば Metal4 は 6λ から 3λ になるので最小間隔エラーにはなりません.又,Metal5 の最 小間隔も 4λ なので,エラーにはなりません. • Ver.5 はオーバーセルルーティングを採用しているので Ver.4 に比べて回路面積が約半分になりますが,マニュア ルが充実していないので分かりづらいです. • Ver.4 は電源及び入出力が Abutment Box まで配線されるので問題無いのですが,Ver.5 で Nero を使用した際には 入出力コネクタがコアに埋もれたままのようです.外部ピンとの配線用ツール RING を使用すればうまく行くかも しれません.RING については($ man ring)を参照して下さい.又,RING 時に使用する.rin ファイルは Ver.4 のチュートリアルに例題があるので参考にして下さい. • MOSIS ルールのメタルの最小間隔の問題で,片側が 10 ラムダ以上の場合,間隔を広げなければならない,とあり ますが,今回は考慮されていません.よって,エラーになる可能性があります. • 現時点でのお勧めは SCN5M SUBM を Ver.5 で使用することです.この場合も Metal5 は外部ピンとの配線に使用 するために自動配線は Metal4 までが良いかもしれません. • 現在はレイアウトの検証及び,Spice 等を使用した過渡解析を行っていません. • DRUC のデザインルールも作成した方が良いかもしれません.その前にテクノロジーファイルの文法を解析する 必要があります. 11.5 Druc の文法について Druc で表示するデザインルールは.rds ファイルに 11.6. SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について 169 DRC_RULES regles fin regles DRC_COMMENT END_DRC_COMMENT END_DRC_RULES という宣言を使用します.まず,DRC RULES と END DRC RULES を囲みます.その内部に regles と fin regles,DRC COMMENT と END DRC COMMENT を囲みます.regles と fin regles の内部には,デザインルールを,DRC COMMENT と END DRC COMMENT の内部にはデザインルールに対応させたエラー時のコメントを記述します.詳しくは cmos.rds を参考にして下さい.尚,デザインルールの宣言にはフランス語が使用されています.解読するには,Altavista の翻訳 ページが役に立ちます. http://babelfish.altavista.com/ 時間の都合上今回は Druc 用のテクノロジーファイルを作成していないので,各自作成してみて下さい.完成すれば,実 際に回路を設計した際のデザインルールチェックは Magic を使用せずに済みます. 11.6 SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について 84 ページより,Graal 上では Ref が 5λ 間隔になることは解説しました.これは,Dreal 上では 10λ 間隔になること を意味しています.Ver.5 では各 Ref 上に配線をしますが,このときに SCN4ME SUBM ではメタル 4 は図 11.14 のよ うになります.メタル 4 の最小幅,最小間隔は共に 6λ なので,図 11.15 のように,最小間隔エラーになります.よっ て,SCN4ME SUBM 用では自動配線は 3 層までとし,4 層目は手動で電源電圧,外部ピンとの接続に使用すれば良いで しょう. 図 11.14: 横配線がメタル 4,縦配線がメタル 3 SCN5M SUBM を使用する場合にはメタル 1∼5 まで全て幅が 4λ なので,図 11.16,図 11.17 のように,エラー無く 使用することが可能です. 170 第 11 章 6 3 4 Ref Metal4 10 3 6 Metal4 図 11.15: このように,最小間隔が足りません. 図 11.16: SCN5M SUBM の場合です. 修正結果 11.6. SCN4ME SUBM において Metal4 が最小間隔エラーになる問題について 4 2 6 Ref Metal4 10 2 4 Metal4 図 11.17: このように,配線時のエラーはありません. 171 172 第 11 章 11.7 修正結果 テクノロジーファイルの作成手順まとめ ここではこれまでの流れを簡単に纏めました.尚,Alliance と Magic は既にインストールされているものとします. 1. MOSIS の HP で使用するデザインルール(オプション)を選択する. 2. 選択したデザインルールに対応した Magic のテクノロジーファイルをダウンロードする. 3. MOSIS ルールを確認しながら Magic で各レイヤの最小幅の cif ファイルを出力する. 4. 出力した cif ファイルを再び Magic で開き,MOSIS ルールと照合する. 5. 適用すべき最小幅がわかったら,Alliance のテクノロジーファイル(.rds)ファイルに記述する. 6. 最小幅を設定したら sxlib を Graal,Dreal,Magic で表示させながらエラーが出ている箇所を確認し,修正する. 7. 不明瞭なレイヤ,パラメータもチェックする. 8. テクノロジーファイルが完成したら実際に VHDL ソースファイルからコンパイルを行い,最後まで合成してエラー が無いか確認する.又,過渡解析などを行い,実際に動作するか確認する. 11.7.1 MOSIS の HP で使用するデザインルール(オプション)を選択する. まずは目的のデザインルールを選択しなければなりません.SXLIB は Sub-Micron プロセス用に設計されていること に注意して下さい.MOSIS のデザインルールの HP http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html の 2.2. SCMOS Options の Table 2b: MOSIS SCMOS SUBM-Compatible Mappings から目的のベンダ及びルールを 選びます.今回は “SCN4ME SUBM” を使用しました. 11.7.2 選択したデザインルールに対応した Magic のテクノロジーファイルをダウンロードする. いきなり MOSIS のデザインルールをチェックしながらテクノロジーファイルを記述するのは大変です.まずは,Magic を使用して採用したデザインルールが記述されたテクノロジーファイルを設定します. DL したファイルを Magic で使用するには,Magic を起動するときに “-T” オプションを使用します.ここでは, $ magic -T filename.tech27 となります.起動ごとに毎回設定しなければならないので,alias などに記述しておくと良いでしょう. 11.7.3 MOSIS ルールを確認しながら Magic で各レイヤの最小幅の cif ファイルを出力する. 上記のコマンドで Magic を起動し,それぞれのレイヤについて最小幅で描画し,CIF 形式で出力します.出力した CIF ファイルをエディタで開き,実際に使用されている CIF レイヤ名を確認します.CIF の略称は一つのレイヤで 2 種類あ る場合もあります(例えば,Metal1 の場合 CM1 と CMF).それぞれについて Magic で出力した CIF ファイルでどち らが使われているか確認します.ここでは CM1 が使用されています. 11.7.4 出力した cif ファイルを再び Magic で開き,MOSIS ルールと照合する. ここで作成された CIF ファイルを再び Magic で読み込ませることで,Diffsion など擬似レイヤであったものが,マス クレイヤとして出力します.各レイヤの最小オーバラップなど,MOSIS のデザインルールのページと照らし合わせてエ ラー部分が無いか確認します.Via,コンタクトなどは擬似レイヤのままなのでエディタで開いた CIF ファイルと直接比 較して確認します.画面には表示されませんが,Implant が存在しています.又,Contact,Via は 2 × 2λ です. 11.7. テクノロジーファイルの作成手順まとめ 173 11.7.3,11.7.4 を繰り返し,全てのレイヤについて最小幅エラーが出ないサイズを確認します.特に Diffusion,Diff Cont, Well Cont,Transistor は Implant,Well が生成されるので注意して下さい. 11.7.5 適用すべき最小幅がわかったら,Alliance のテクノロジーファイル(.rds)ファイルに記 述する. これまでで Magic を使用して各レイヤの最小幅を確認しました.ここで第 9 章を参考に各レイヤの最小幅ルールをテ クノロジーファイルに記述していきます.Graal を使用して疑似レイヤが Magic で作成したレイアウトと同様の形を再 現できるようにします.s2r で変換すれば cif ファイルが作成されますが,基本的に Graal と Dreal は同様のレイアウト を表示することができるので,Graal でも確認することが可能です. 最小幅でのテクノロジーファイルが完成したら Graal で最小幅のレイヤを作成し,s2r で変換したファイルが Magic で 出力した CIF ファイルと同じであるか確認すると共に,Magic で読み込ませた時に正確に表示されるか確認します. 11.7.6 最小幅を設定したら sxlib を Graal,Dreal,Magic で表示させながらエラーが出ている 箇所を確認し,修正する. ここまでで単体ではエラーは発生しなくなったと思います.そこで,ここからは実際のセルライブラリを元にエラー を確認していきます.まず,sxlib は仮想配置(.ap)なので,s2r を使用して cif ファイルに変換します.そのファイルを Magic に読み込ませると最小幅エラーは無いものの,最小間隔エラーが発生しているかもしれません.その場合は第 10 章を参考に,間隔を調整してエラーを修正していきます.実際はエラーではなく Magic の仕様の場合もあるかもしれな いので,注意が必要です. テクノロジーファイルに DRUC 用のデザインルールを記述して,Graal 上でチェックする方が良いかもしれません. 11.7.7 不明瞭なレイヤ,パラメータもチェックし,調整を行う ($ man prol),alliance の etc ディレクトリに入っている cmos .graal 等に記述されている ap ファイルのレイヤにつ いてセルライブラリを grep 検索して実際に使用されているか確認します.Ver. の違いなどにより,使用されていないこ とがあるので,その場合は問題ありません. CALU,TURNVIA,BIGBIA 等いくつかのレイヤについては使用はされているものの,詳しい解説が無い場合があ るので,ap ファイルを解析するか,AllianceHP のメーリングリストなどで確認する必要があるでしょう. 11.7.8 テクノロジーファイルが完成したら実際に VHDL ソースファイルからコンパイルを行い, 最後まで合成してエラーが無いか確認する.又,過渡解析などを行い,実際に動作するか 確認する. まずは小さい回路を合成して Druc,Magic 等でエラーが無いか確認します.その後大きい回路を合成します.前節で まだ不明瞭な点を挙げたので,使用時には注意して下さい. 175 第 12 章 参考文献 LSI 一般 [1] 鈴木八十二, 「超 LSI 工学入門」(日刊工業新聞社 2000) [2] C. Mead and L. Conway, Introduction to VLSI Systems, Addison-Wesley, 1980 cif フォーマットについて CIF は,公式 HP のようなものは無いようなので,紹介してあるページを以下に掲載します. [3] Computer Aids for VLSI Design Steven M. Rubin Copyright c 1994 Appendix B: Caltech Intermediate Format (詳しく載っています.このドキュメントに載っていない宣言があれば,この HP を参照してください. ) http://www.rulabinsky.com/cavd/text/chapb.html [4] (CIF) CALTECH Intermediate Form for LSI Layout Description Author: The Multimedia Lab (この HP も参考になりました. ) http://www.ee.vt.edu/~ee5545jg/ee5545e/ Magic について [5] 公式 HP http://vlsi.cornell.edu/magic/ [6] IC Layout Using Magic(HP の最後では Tutorial の PDF を配布しています) http://www.ece.iit.edu/~jstine/ece429/handouts/magic_tut.html [7] The Magic Home Page(こちらも,Magic の Tutorial を配布しています(一部 html)) http://infopad.eecs.berkeley.edu/~icdesign/magic/ [8][Rupppau’s HandBook]Magic マニュアル日本語版 (翻訳) http://isweb7.infoseek.co.jp/computer/rupppau/ [9] ユーザーサイト[清水研究室]LSI レイアウトエディタ Magic チュートリアル抄訳 http://shimizu-lab.et.u-tokai.ac.jp/cad.html [10] Magic, CIF, and GDS Files,Magic Tech Files, MOSIS Tech Codes, (and things that go bump in the night) (Magic での CIF の利用方法について載っています. ) http://www-personal.ksu.edu/~wkuhn/eece696/fileform.pdf 176 第 12 章 MOSIS について [11] MOSIS 公式 HP http://www.mosis.org/ [12] MOSIS Scalable CMOS (SCMOS) Design Rules (Revision 8.0) http://www.mosis.org/Technical/Designrules/scmos/scmos-main.html Alliance について [13] 公式 HP http://www-asim.lip6.fr/alliance/ 参考文献 177 第 13 章 謝辞 本研究を完成させるにあたり,ご指導頂いた東海大学工学部通信工学科助教授の清水尚彦先生に感謝致します.又,本 研究を支えて頂いた清水研究室の友人に感謝致します.
© Copyright 2024 Paperzz